X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FXSLT.pm;h=39071d5576b7194d219f98b3bfdddf1b9069a753;hb=fcee8417770edf453b421527c1e0287cd100a2e9;hp=ddc907759f3404053898618422316341814b5d4a;hpb=5145eb59b786bd2010eb324197034dd210504543;p=koha.git diff --git a/C4/XSLT.pm b/C4/XSLT.pm old mode 100644 new mode 100755 index ddc907759f..39071d5576 --- a/C4/XSLT.pm +++ b/C4/XSLT.pm @@ -1,6 +1,8 @@ package C4::XSLT; # Copyright (C) 2006 LibLime # +# Parts Copyright Katrin Fischer 2011 +# Parts Copyright ByWater Solutions 2011 # # This file is part of Koha. # @@ -27,7 +29,6 @@ use C4::Koha; use C4::Biblio; use C4::Circulation; use C4::Reserves; -use C4::Output qw//; use Encode; use XML::LibXML; use XML::LibXSLT; @@ -120,7 +121,7 @@ sub getAuthorisedValues4MARCSubfields { my $stylesheet; sub XSLTParse4Display { - my ( $biblionumber, $orig_record, $xsl_suffix, $interface ) = @_; + my ( $biblionumber, $orig_record, $xsl_suffix, $interface, $fixamps ) = @_; $interface = 'opac' unless $interface; # grab the XML, run it through our stylesheet, push it out to the browser my $record = transformMARCXML4XSLT($biblionumber, $orig_record); @@ -128,15 +129,25 @@ sub XSLTParse4Display { my $itemsxml = buildKohaItemsNamespace($biblionumber); my $xmlrecord = $record->as_xml(C4::Context->preference('marcflavour')); my $sysxml = "\n"; - foreach my $syspref ( qw/OPACURLOpenInNewWindow DisplayOPACiconsXSLT URLLinkText viewISBD OPACBaseURL/ ) { - $sysxml .= "" . - C4::Context->preference( $syspref ) . - "\n"; + foreach my $syspref ( qw/ hidelostitems OPACURLOpenInNewWindow + DisplayOPACiconsXSLT URLLinkText viewISBD + OPACBaseURL TraceCompleteSubfields + UseAuthoritiesForTracings TraceSubjectSubdivisions + Display856uAsImage OPACDisplay856uAsImage + UseControlNumber + AlternateHoldingsField AlternateHoldingsSeparator / ) + { + my $sp = C4::Context->preference( $syspref ); + next unless defined($sp); + $sysxml .= "$sp\n"; } $sysxml .= "\n"; $xmlrecord =~ s/\<\/record\>/$itemsxml$sysxml\<\/record\>/; + if ($fixamps) { # We need to correct the ampersand entities that Zebra outputs + $xmlrecord =~ s/\&amp;/\&/g; + } $xmlrecord =~ s/\& /\&\; /; - $xmlrecord=~ s/\&\;amp\; /\&\; /; + $xmlrecord =~ s/\&\;amp\; /\&\; /; my $parser = XML::LibXML->new(); # don't die when you find &, >, etc @@ -148,14 +159,14 @@ sub XSLTParse4Display { if ($interface eq 'intranet') { $xslfile = C4::Context->config('intrahtdocs') . '/' . C4::Context->preference("template") . - '/' . C4::Output::_current_language() . + '/' . C4::Templates::_current_language() . '/xslt/' . C4::Context->preference('marcflavour') . "slim2intranet$xsl_suffix.xsl"; } else { $xslfile = C4::Context->config('opachtdocs') . '/' . C4::Context->preference("opacthemes") . - '/' . C4::Output::_current_language() . + '/' . C4::Templates::_current_language() . '/xslt/' . C4::Context->preference('marcflavour') . "slim2OPAC$xsl_suffix.xsl"; @@ -179,7 +190,7 @@ sub buildKohaItemsNamespace { my ( $transfertwhen, $transfertfrom, $transfertto ) = C4::Circulation::GetTransfers($item->{itemnumber}); - my ( $reservestatus, $reserveitem ) = C4::Reserves::CheckReserves($item->{itemnumber}); + my ( $reservestatus, $reserveitem, undef ) = C4::Reserves::CheckReserves($item->{itemnumber}); if ( $itemtypes->{ $item->{itype} }->{notforloan} || $item->{notforloan} || $item->{onloan} || $item->{wthdrawn} || $item->{itemlost} || $item->{damaged} || (defined $transfertwhen && $transfertwhen ne '') || $item->{itemnotforloan} || (defined $reservestatus && $reservestatus eq "Waiting") ){ @@ -210,7 +221,7 @@ sub buildKohaItemsNamespace { } else { $status = "available"; } - my $homebranch = xml_escape($branches->{$item->{homebranch}}->{'branchname'}); + my $homebranch = $item->{homebranch}? xml_escape($branches->{$item->{homebranch}}->{'branchname'}):''; my $itemcallnumber = xml_escape($item->{itemcallnumber}); $xml.= "$homebranch". "$status". @@ -218,7 +229,7 @@ sub buildKohaItemsNamespace { . ""; } - $xml = "".$xml.""; + $xml = "".$xml.""; return $xml; }