On Sat, Mar 24, 2012 at 06:31:23PM +0100, Marc Balmer wrote: > Am 24.03.12 18:28, schrieb Dobrica Pavlinusic: > > 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. > > > Please, please, please, no more backquotes. Rewrite the patch. Put it > back. It is against the guidelines and it is really not very funny to > work on the PostgreSQL support when at the same time folks keep putting > MySQLisms in. > > Please correct that patch, it is easy enough to do.
Done. FWIW, I would really *love* to run Koha on PostgreSQL, but I was reluctant to touch patch which is not mine, so I'm to blame. > >> Am 24.03.2012 um 18:12 schrieb Dobrica Pavlinusic <dpav...@rot13.org>: > >> > >>> From: Stéphane Delaune <stephane.dela...@biblibre.com> > >>> > >>> Signed-off-by: Marijana Glavica <mglav...@ffzg.hr> > >>> > >>> 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 > >>> Koha-patches@lists.koha-community.org > >>> 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 Koha-patches@lists.koha-community.org 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/