Bugzilla – Attachment 8622 Details for
Bug 4032
XSLT systempreference should take a path to file rather than YesNo
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 4032 XSLT systempreference takes a path to file rather than YesNo
Bug-4032-XSLT-systempreference-takes-a-path-to-fil.patch (text/plain), 16.38 KB, created by
Dobrica Pavlinusic
on 2012-03-24 17:46:26 UTC
(
hide
)
Description:
Bug 4032 XSLT systempreference takes a path to file rather than YesNo
Filename:
MIME Type:
Creator:
Dobrica Pavlinusic
Created:
2012-03-24 17:46:26 UTC
Size:
16.38 KB
patch
obsolete
>From b6fb5c65112d550af7ab536e725aa9f375a0de0f Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?St=C3=A9phane=20Delaune?= <stephane.delaune@biblibre.com> >Date: Wed, 8 Feb 2012 12:12:16 +0100 >Subject: [PATCH] Bug 4032 XSLT systempreference takes a path to file rather than YesNo > >Signed-off-by: Marijana Glavica <mglavica@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. > >Removed MySQLism backquotes >--- > 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..4ea83b4 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
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 4032
:
1791
|
7451
|
7452
|
7499
|
7901
|
8421
| 8622