Am 24.03.12 18:48, schrieb Dobrica Pavlinusic: > 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.
Many thanks! I owe you a favour. > > 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. I am really doing all my best so that we can run on PostgreSQL as soon as possible. It is a bit of work, and I really appreciate that you changed the diff to not add yet another MySQLism. Thanks, Marc > >>>> 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/
