On Sat, Mar 24, 2012 at 06:18:35PM +0100, Marc Balmer wrote: > Please don't use backquotes in SQL statements, they break PostgrSQL.
I would totally agree, but this is 4032 which is allready signed off with nasty backquotes which I sent to patches list (again) by mistake. > Am 24.03.2012 um 18:12 schrieb Dobrica Pavlinusic <[email protected]>: > > > From: Stéphane Delaune <[email protected]> > > > > Signed-off-by: Marijana Glavica <[email protected]> > > > > I am signing it off because it doesn't break anything and I will report > > another bug for language issues described in my previous comment. > > --- > > C4/Search.pm | 3 +- > > C4/VirtualShelves/Page.pm | 2 +- > > C4/XSLT.pm | 80 > > ++++++++++++++----- > > catalogue/detail.pl | 2 +- > > installer/data/mysql/sysprefs.sql | 8 +- > > installer/data/mysql/updatedatabase.pl | 30 +++++++ > > .../prog/en/modules/admin/preferences/opac.pref | 14 ++-- > > .../en/modules/admin/preferences/staff_client.pref | 14 ++-- > > opac/opac-detail.pl | 2 +- > > 9 files changed, 109 insertions(+), 46 deletions(-) > > > > diff --git a/C4/Search.pm b/C4/Search.pm > > index 9bc0af2..56468b5 100644 > > --- a/C4/Search.pm > > +++ b/C4/Search.pm > > @@ -1776,8 +1776,7 @@ sub searchResults { > > $debug && warn $marcrecord->as_formatted; > > my $interface = $search_context eq 'opac' ? 'OPAC' : ''; > > if (!$scan && C4::Context->preference($interface . > > "XSLTResultsDisplay")) { > > - $oldbiblio->{XSLTResultsRecord} = > > XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, 'Results', > > - > > $search_context, 1, \@hiddenitems); > > + $oldbiblio->{XSLTResultsRecord} = > > XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, > > $interface."XSLTResultsDisplay", 1, \@hiddenitems); > > # the last parameter tells Koha to clean up the problematic > > ampersand entities that Zebra outputs > > } > > > > diff --git a/C4/VirtualShelves/Page.pm b/C4/VirtualShelves/Page.pm > > index 125a1e6..d32afed 100644 > > --- a/C4/VirtualShelves/Page.pm > > +++ b/C4/VirtualShelves/Page.pm > > @@ -257,7 +257,7 @@ sub shelfpage { > > my $biblionumber = $this_item->{'biblionumber'}; > > my $record = GetMarcBiblio($biblionumber); > > $this_item->{XSLTBloc} = > > - XSLTParse4Display($biblionumber, $record, > > 'Results', 'opac') > > + XSLTParse4Display($biblionumber, $record, > > "OPACXSLTResultsDisplay") > > if > > C4::Context->preference("OPACXSLTResultsDisplay") && $type eq 'opac'; > > > > # the virtualshelfcontents table does not store these > > columns nor are they retrieved from the items > > diff --git a/C4/XSLT.pm b/C4/XSLT.pm > > index 7557efe..621f08f 100644 > > --- a/C4/XSLT.pm > > +++ b/C4/XSLT.pm > > @@ -3,6 +3,7 @@ package C4::XSLT; > > # <jmf at liblime dot com> > > # Parts Copyright Katrin Fischer 2011 > > # Parts Copyright ByWater Solutions 2011 > > +# Parts Copyright Biblibre 2012 > > # > > # This file is part of Koha. > > # > > @@ -32,6 +33,7 @@ use C4::Reserves; > > use Encode; > > use XML::LibXML; > > use XML::LibXSLT; > > +use LWP::Simple; > > > > use vars qw($VERSION @ISA @EXPORT); > > > > @@ -41,6 +43,7 @@ BEGIN { > > @ISA = qw(Exporter); > > @EXPORT = qw( > > &XSLTParse4Display > > + &GetURI > > ); > > } > > > > @@ -50,6 +53,19 @@ C4::XSLT - Functions for displaying XSLT-generated > > content > > > > =head1 FUNCTIONS > > > > +=head2 GetURI > > + > > +GetURI file and returns the xslt as a string > > + > > +=cut > > + > > +sub GetURI { > > + my ($uri) = @_; > > + my $string; > > + $string = get $uri ; > > + return $string; > > +} > > + > > =head2 transformMARCXML4XSLT > > > > Replaces codes with authorized values in a MARC::Record object > > @@ -121,8 +137,39 @@ sub getAuthorisedValues4MARCSubfields { > > my $stylesheet; > > > > sub XSLTParse4Display { > > - my ( $biblionumber, $orig_record, $xsl_suffix, $interface, $fixamps, > > $hidden_items ) = @_; > > - $interface = 'opac' unless $interface; > > + my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items > > ) = @_; > > + my $xslfilename = C4::Context->preference($xslsyspref); > > + if ( $xslfilename =~ /^\s*"?default"?\s*$/i ) { > > + if ($xslsyspref eq "XSLTDetailsDisplay") { > > + $xslfilename = C4::Context->config('intrahtdocs') . > > + '/' . C4::Context->preference("template") . > > + '/' . C4::Templates::_current_language() . > > + '/xslt/' . > > + C4::Context->preference('marcflavour') . > > + "slim2intranetDetail.xsl"; > > + } elsif ($xslsyspref eq "XSLTResultsDisplay") { > > + $xslfilename = C4::Context->config('intrahtdocs') . > > + '/' . C4::Context->preference("template") . > > + '/' . C4::Templates::_current_language() . > > + '/xslt/' . > > + C4::Context->preference('marcflavour') . > > + "slim2intranetResults.xsl"; > > + } elsif ($xslsyspref eq "OPACXSLTDetailsDisplay") { > > + $xslfilename = C4::Context->config('opachtdocs') . > > + '/' . C4::Context->preference("opacthemes") . > > + '/' . C4::Templates::_current_language() . > > + '/xslt/' . > > + C4::Context->preference('marcflavour') . > > + "slim2OPACDetail.xsl"; > > + } elsif ($xslsyspref eq "OPACXSLTResultsDisplay") { > > + $xslfilename = C4::Context->config('opachtdocs') . > > + '/' . C4::Context->preference("opacthemes") . > > + '/' . C4::Templates::_current_language() . > > + '/xslt/' . > > + C4::Context->preference('marcflavour') . > > + "slim2OPACResults.xsl"; > > + } > > + } > > # grab the XML, run it through our stylesheet, push it out to the > > browser > > my $record = transformMARCXML4XSLT($biblionumber, $orig_record); > > #return $record->as_formatted(); > > @@ -153,29 +200,20 @@ sub XSLTParse4Display { > > # don't die when you find &, >, etc > > $parser->recover_silently(0); > > my $source = $parser->parse_string($xmlrecord); > > - unless ( $stylesheet ) { > > + unless ( $stylesheet->{$xslfilename} ) { > > my $xslt = XML::LibXSLT->new(); > > - my $xslfile; > > - if ($interface eq 'intranet') { > > - $xslfile = C4::Context->config('intrahtdocs') . > > - '/' . C4::Context->preference("template") . > > - '/' . C4::Templates::_current_language() . > > - '/xslt/' . > > - C4::Context->preference('marcflavour') . > > - "slim2intranet$xsl_suffix.xsl"; > > + my $style_doc; > > + if ( $xslfilename =~ /^https?:\/\// ) { > > + my $xsltstring = GetURI($xslfilename); > > + $style_doc = $parser->parse_string($xsltstring); > > } else { > > - $xslfile = C4::Context->config('opachtdocs') . > > - '/' . C4::Context->preference("opacthemes") . > > - '/' . C4::Templates::_current_language() . > > - '/xslt/' . > > - C4::Context->preference('marcflavour') . > > - "slim2OPAC$xsl_suffix.xsl"; > > + use Cwd; > > + $style_doc = $parser->parse_file($xslfilename); > > } > > - my $style_doc = $parser->parse_file($xslfile); > > - $stylesheet = $xslt->parse_stylesheet($style_doc); > > + $stylesheet->{$xslfilename} = $xslt->parse_stylesheet($style_doc); > > } > > - my $results = $stylesheet->transform($source); > > - my $newxmlrecord = $stylesheet->output_string($results); > > + my $results = $stylesheet->{$xslfilename}->transform($source); > > + my $newxmlrecord = > > $stylesheet->{$xslfilename}->output_string($results); > > return $newxmlrecord; > > } > > > > diff --git a/catalogue/detail.pl b/catalogue/detail.pl > > index da62e07..de355fa 100755 > > --- a/catalogue/detail.pl > > +++ b/catalogue/detail.pl > > @@ -85,7 +85,7 @@ my $marcflavour = C4::Context->preference("marcflavour"); > > # XSLT processing of some stuff > > if (C4::Context->preference("XSLTDetailsDisplay") ) { > > $template->param('XSLTDetailsDisplay' =>'1', > > - 'XSLTBloc' => XSLTParse4Display($biblionumber, $record, > > 'Detail','intranet') ); > > + 'XSLTBloc' => XSLTParse4Display($biblionumber, $record, > > "XSLTDetailsDisplay") ); > > } > > > > $template->param( 'SpineLabelShowPrintOnBibDetails' => > > C4::Context->preference("SpineLabelShowPrintOnBibDetails") ); > > diff --git a/installer/data/mysql/sysprefs.sql > > b/installer/data/mysql/sysprefs.sql > > index 3e850b3..21212a0 100644 > > --- a/installer/data/mysql/sysprefs.sql > > +++ b/installer/data/mysql/sysprefs.sql > > @@ -219,10 +219,10 @@ INSERT INTO `systempreferences` > > (variable,value,options,explanation,type) VALUES > > > > INSERT INTO `systempreferences` (variable,value,options,explanation,type) > > VALUES('OPACShelfBrowser','1','','Enable/disable Shelf Browser on item > > details page. WARNING: this feature is very resource consuming on > > collections with large numbers of items.','YesNo'); > > INSERT INTO `systempreferences` (variable,value,options,explanation,type) > > VALUES > > -('OPACXSLTDetailsDisplay','0','','Enable XSL stylesheet control over > > details page display on OPAC','YesNo'), > > -('OPACXSLTResultsDisplay','0','','Enable XSL stylesheet control over > > results page display on OPAC','YesNo'), > > -('XSLTDetailsDisplay','0','','Enable XSL stylesheet control over details > > page display on intranet','YesNo'), > > -('XSLTResultsDisplay','0','','Enable XSL stylesheet control over results > > page display on intranet','YesNo'); > > +('OPACXSLTDetailsDisplay','','','Enable XSL stylesheet control over > > details page display on OPAC','Free'), > > +('OPACXSLTResultsDisplay','','','Enable XSL stylesheet control over > > results page display on OPAC','Free'), > > +('XSLTDetailsDisplay','','','Enable XSL stylesheet control over details > > page display on intranet','Free'), > > +('XSLTResultsDisplay','','','Enable XSL stylesheet control over results > > page display on intranet','Free'); > > INSERT INTO `systempreferences` (variable,value,options,explanation,type) > > VALUES('AdvancedSearchTypes','itemtypes','itemtypes|ccode','Select which > > set of fields comprise the Type limit in the advanced search','Choice'); > > INSERT INTO `systempreferences` (variable,value,options,explanation,type) > > VALUES('AllowOnShelfHolds', '0', '', 'Allow hold requests to be placed on > > items that are not on loan', 'YesNo'); > > INSERT INTO `systempreferences` (variable,value,options,explanation,type) > > VALUES('AllowHoldsOnDamagedItems', '1', '', 'Allow hold requests to be > > placed on damaged items', 'YesNo'); > > diff --git a/installer/data/mysql/updatedatabase.pl > > b/installer/data/mysql/updatedatabase.pl > > index 8259bf2..f43bfba 100755 > > --- a/installer/data/mysql/updatedatabase.pl > > +++ b/installer/data/mysql/updatedatabase.pl > > @@ -5036,6 +5036,36 @@ if ( C4::Context->preference("Version") < > > TransformToNum($DBversion) ) { > > SetVersion($DBversion); > > } > > > > +$DBversion = "XXX"; > > +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { > > + my $countXSLTDetailsDisplay = 0; > > + my $valueXSLTDetailsDisplay = ""; > > + my $valueXSLTResultsDisplay = ""; > > + my $valueOPACXSLTDetailsDisplay = ""; > > + my $valueOPACXSLTResultsDisplay = ""; > > + #the line below test if database comes from a BibLibre's branch > > + $countXSLTDetailsDisplay = $dbh->do('SELECT 1 FROM `systempreferences` > > WHERE `variable`="IntranetXSLTDetailsDisplay"'); > > + if ($countXSLTDetailsDisplay > 0) > > + { > > + #the two lines below will only be used to update the databases > > from the BibLibre's branch. They will not affect the others > > + $dbh->do(q|UPDATE `systempreferences` SET > > `variable`="XSLTDetailsDisplay" WHERE > > `variable`="IntranetXSLTDetailsDisplay"|); > > + $dbh->do(q|UPDATE `systempreferences` SET > > `variable`="XSLTResultsDisplay" WHERE > > `variable`="IntranetXSLTResultsDisplay"|); > > + } > > + else > > + { > > + $valueXSLTDetailsDisplay = "default" if > > (C4::Context->preference("XSLTDetailsDisplay")); > > + $valueXSLTResultsDisplay = "default" if > > (C4::Context->preference("XSLTResultsDisplay")); > > + $valueOPACXSLTDetailsDisplay = "default" if > > (C4::Context->preference("OPACXSLTDetailsDisplay")); > > + $valueOPACXSLTResultsDisplay = "default" if > > (C4::Context->preference("OPACXSLTResultsDisplay")); > > + $dbh->do("UPDATE systempreferences SET type='Free', > > value=\"$valueXSLTDetailsDisplay\" WHERE variable='XSLTDetailsDisplay'"); > > + $dbh->do("UPDATE systempreferences SET type='Free', > > value=\"$valueXSLTResultsDisplay\" WHERE variable='XSLTResultsDisplay'"); > > + $dbh->do("UPDATE systempreferences SET type='Free', > > value=\"$valueOPACXSLTDetailsDisplay\" WHERE > > variable='OPACXSLTDetailsDisplay'"); > > + $dbh->do("UPDATE systempreferences SET type='Free', > > value=\"$valueOPACXSLTResultsDisplay\" WHERE > > variable='OPACXSLTResultsDisplay'"); > > + } > > + print "XSLT systempreference takes a path to file rather than YesNo\n"; > > + SetVersion($DBversion); > > +} > > + > > =head1 FUNCTIONS > > > > =head2 DropAllForeignKeys($table) > > diff --git > > a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref > > b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref > > index ae6b620..b3bee94 100644 > > --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref > > +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref > > @@ -48,17 +48,15 @@ OPAC: > > no: Show > > - lost items on search and detail pages. > > - > > - - Show biblio records on OPAC result page > > + - 'Display OPAC results using XSLT stylesheet at: ' > > - pref: OPACXSLTResultsDisplay > > - choices: > > - yes: using XSLT stylesheets. > > - no: normally. > > + class: file > > + - '<br />Options:<br />- leave empty for "no xslt"<br />- > > enter "default" for the default one<br />- put a path to define a xslt > > file<br />- put an URL for an external specific stylesheet.' > > - > > - - Show item details pages on the OPAC > > + - 'Display OPAC details using XSLT stylesheet at: ' > > - pref: OPACXSLTDetailsDisplay > > - choices: > > - yes: using XSLT stylesheets. > > - no: normally. > > + class: file > > + - '<br />Options:<br />- leave empty for "no xslt"<br />- > > enter "default" for the default one<br />- put a path to define a xslt > > file<br />- put an URL for an external specific stylesheet.' > > - > > - On pages displayed with XSLT stylesheets on the OPAC, > > - pref: DisplayOPACiconsXSLT > > diff --git > > a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref > > > > b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref > > index efa33a8..edb9072 100644 > > --- > > a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref > > +++ > > b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref > > @@ -51,17 +51,15 @@ Staff Client: > > class: url > > - for the Staff Client's favicon. (This should be a complete > > URL, starting with <code>http://</code>.) > > - > > - - Show biblio records on result page in the staff client > > + - 'Display results in the staff client using XSLT stylesheet > > at: ' > > - pref: XSLTResultsDisplay > > - choices: > > - yes: using XSLT stylesheets. > > - no: normally. > > + class: file > > + - '<br />Options:<br />- leave empty for "no xslt"<br />- > > enter "default" for the default one<br />- put a path to define a xslt > > file<br />- put an URL for an external specific stylesheet.' > > - > > - - Show item details pages in the staff client > > + - 'Display details in the staff client using XSLT stylesheet > > at: ' > > - pref: XSLTDetailsDisplay > > - choices: > > - yes: using XSLT stylesheets. > > - no: normally. > > + class: file > > + - '<br />Options:<br />- leave empty for "no xslt"<br />- > > enter "default" for the default one<br />- put a path to define a xslt > > file<br />- put an URL for an external specific stylesheet.' > > - > > - Use the Yahoo UI libraries > > - pref: yuipath > > diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl > > index b45250d..f64c794 100755 > > --- a/opac/opac-detail.pl > > +++ b/opac/opac-detail.pl > > @@ -92,7 +92,7 @@ SetUTF8Flag($record); > > > > # XSLT processing of some stuff > > if (C4::Context->preference("OPACXSLTDetailsDisplay") ) { > > - $template->param( 'XSLTBloc' => XSLTParse4Display($biblionumber, > > $record, 'Detail', 'opac') ); > > + $template->param( 'XSLTBloc' => XSLTParse4Display($biblionumber, > > $record, "OPACXSLTDetailsDisplay" ) ); > > } > > > > > > -- > > 1.7.2.5 > > > > _______________________________________________ > > Koha-patches mailing list > > [email protected] > > http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches > > website : http://www.koha-community.org/ > > git : http://git.koha-community.org/ > > bugs : http://bugs.koha-community.org/ _______________________________________________ Koha-patches mailing list [email protected] http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
