This change system preferences for XSLT management bumps kohaversion to 3.01.00.111 If you are using Koha in a non devel mode AND use XSLT, then you HAVE TO adapt the system preference to point to your htdocs
WARNINGS : - tested with UNIMARC XSL - donot test the presence of the file, if file absent, then BOOM - XSL CANNOT be different for intranet and OPAC for result lists. - Adds a new system preference XSLTIntranetDetailsDisplay --- C4/Search.pm | 6 +- C4/XSLT.pm | 47 ++++++++++++-------- catalogue/detail.pl | 2 +- installer/data/mysql/en/mandatory/sysprefs.sql | 13 ++++-- .../1-Obligatoire/unimarc_standard_systemprefs.sql | 10 +++-- installer/data/mysql/updatedatabase.pl | 8 +++ opac/opac-detail.pl | 4 +- 7 files changed, 57 insertions(+), 33 deletions(-) diff --git a/C4/Search.pm b/C4/Search.pm index 14e85ce..8b4e0cd 100644 --- a/C4/Search.pm +++ b/C4/Search.pm @@ -1349,10 +1349,9 @@ Format results in a form suitable for passing to the template # IMO this subroutine is pretty messy still -- it's responsible for # building the HTML output for the template sub searchResults { - my ( $searchdesc, $hits, $results_per_page, $offset, $scan, @marcresults, $hidelostitems ) = @_; + my ( $searchdesc, $hits, $results_per_page, $offset, $scan, @marcresults ) = @_; my $dbh = C4::Context->dbh; my @newresults; - #Build branchnames hash #find branchname #get branch information..... @@ -1652,9 +1651,10 @@ sub searchResults { use C4::Charset; SetUTF8Flag($marcrecord); $debug && warn $marcrecord->as_formatted; + # FIXME : This needs some work in order to be more flexible : Can not use a result list for intranet different from OPAC if (C4::Context->preference("XSLTResultsDisplay") && !$scan) { $oldbiblio->{XSLTResultsRecord} = XSLTParse4Display( - $oldbiblio->{biblionumber}, $marcrecord, 'Results' ); + $oldbiblio->{biblionumber}, $marcrecord, C4::Context->preference("XSLTResultsDisplay") ); } # last check for norequest : if itemtype is notforloan, it can't be reserved either, whatever the items diff --git a/C4/XSLT.pm b/C4/XSLT.pm index a5cf211..22ce07d 100644 --- a/C4/XSLT.pm +++ b/C4/XSLT.pm @@ -29,6 +29,7 @@ use C4::Circulation; use Encode; use XML::LibXML; use XML::LibXSLT; +use LWP::Simple; use vars qw($VERSION @ISA @EXPORT); @@ -38,6 +39,7 @@ BEGIN { @ISA = qw(Exporter); @EXPORT = qw( &XSLTParse4Display + &GetURI ); } @@ -47,6 +49,19 @@ C4::XSLT - Functions for displaying XSLT-generated content =head1 FUNCTIONS +=head1 GetURI + +=head2 GetURI file and returns the xslt as a string + +=cut + +sub GetURI { + my ($uri) = @_; + my $string; + $string = get $uri ; + return $string; +} + =head1 transformMARCXML4XSLT =head2 replaces codes with authorized values in a MARC::Record object @@ -118,15 +133,13 @@ sub getAuthorisedValues4MARCSubfields { my $stylesheet; sub XSLTParse4Display { - my ( $biblionumber, $orig_record, $xsl_suffix, $interface ) = @_; - $interface = 'opac' unless $interface; + my ( $biblionumber, $orig_record, $xslfilename ) = @_; # grab the XML, run it through our stylesheet, push it out to the browser my $record = transformMARCXML4XSLT($biblionumber, $orig_record); #return $record->as_formatted(); my $itemsxml = buildKohaItemsNamespace($biblionumber); my $xmlrecord = $record->as_xml(C4::Context->preference('marcflavour')); my $sysxml = "<sysprefs>\n"; -# warn $xmlrecord; foreach my $syspref ( qw/OPACURLOpenInNewWindow DisplayOPACiconsXSLT URLLinkText/ ) { $sysxml .= "<syspref name=\"$syspref\">" . C4::Context->preference( $syspref ) . @@ -140,25 +153,21 @@ 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') . - "/prog/en/xslt/" . - C4::Context->preference('marcflavour') . - "slim2intranet$xsl_suffix.xsl"; - } else { - $xslfile = C4::Context->config('opachtdocs') . - "/prog/en/xslt/" . - C4::Context->preference('marcflavour') . - "slim2OPAC$xsl_suffix.xsl"; + my $style_doc; + if ($xslfilename=~/http:/){ + my $xsltstring=GetURI($xslfilename); + $style_doc = $parser->parse_string($xsltstring); + } + else { + 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 0c3a764..90c32ff 100755 --- a/catalogue/detail.pl +++ b/catalogue/detail.pl @@ -61,7 +61,7 @@ my $record = GetMarcBiblio($biblionumber); # XSLT processing of some stuff if (C4::Context->preference("XSLTDetailsDisplay") ) { $template->param('XSLTDetailsDisplay' =>'1', - 'XSLTBloc' => XSLTParse4Display($biblionumber, $record, 'Detail','intranet') ); + 'XSLTBloc' => XSLTParse4Display($biblionumber, $record, C4::Context->preference('IntranetXSLTDetailsDisplay')) ); } $template->param( 'SpineLabelShowPrintOnBibDetails' => C4::Context->preference("SpineLabelShowPrintOnBibDetails") ); diff --git a/installer/data/mysql/en/mandatory/sysprefs.sql b/installer/data/mysql/en/mandatory/sysprefs.sql index 3647715..1441c65 100644 --- a/installer/data/mysql/en/mandatory/sysprefs.sql +++ b/installer/data/mysql/en/mandatory/sysprefs.sql @@ -212,10 +212,11 @@ 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 exemple : ../koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl','Free'), +('IntranetXSLTDetailsDisplay','','','Enable XSL stylesheet control over details page display on Intranet exemple : ../koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl','Free'), +('IntranetXSLTResultsDisplay','','','Enable XSL stylesheet control over results page display both on Intranet and OPAC exemple : ../koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl','Free'), +('XSLTDetailsDisplay','','','Enable XSL stylesheet control over details page display','YesNo'), +('XSLTResultsDisplay','','','Enable XSL stylesheet control over results page display','YesNo'); 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'); @@ -278,7 +279,11 @@ INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('RoutingListAddReserves','1','If ON the patrons on routing lists are automatically added to holds on the issue.','','YesNo'); INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ( 'OpacAddMastheadLibraryPulldown', '0', '', 'Adds a pulldown menu to select the library to search on the opac masthead.', 'YesNo' ); INSERT INTO systempreferences VALUES ('ImageLimit',5,'','Limit images stored in the database by the Patron Card image manager to this number.','Integer'); +<<<<<<< HEAD:installer/data/mysql/en/mandatory/sysprefs.sql INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('SpineLabelShowPrintOnBibDetails', '0', '', 'If turned on, a "Print Label" link will appear for each item on the bib details page in the staff interface.', 'YesNo'); INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('AutoSelfCheckAllowed', '0', 'For corporate and special libraries which want web-based self-check available from any PC without the need for a manual staff login. Most libraries will want to leave this turned off. If on, requires self-check ID and password to be entered in AutoSelfCheckID and AutoSelfCheckPass sysprefs.', '', 'YesNo'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AutoSelfCheckID','','Staff ID with circulation rights to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','','free'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AutoSelfCheckPass','','Password to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','','free'); +======= +INSERT INTO systempreferences set value='../koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2IntranetDetails.xsl',type='Free', variable='IntranetXSLTResultsDisplay'; +>>>>>>> (bug #3042) Changing XSLT sysprefs to take filename:installer/data/mysql/en/mandatory/sysprefs.sql diff --git a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql index 1738d8d..c5cdd55 100644 --- a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql +++ b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql @@ -214,10 +214,12 @@ INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('TagsShowOnList', '6','','Nombre de tags à afficher sur la page de résultat, 0 désactivant l\'affichage.','Integer'); INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('OPACShelfBrowser','1','','Active le parcours des rayonnages sur la page de détail','YesNo'); -INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('OPACXSLTDetailsDisplay','0','','Activer la feuille XSL pour l''affichage à l''OPAC des notices détaillées','YesNo'); -INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('OPACXSLTResultsDisplay','0','','Activer la feuille XSL pour l''affichage à l''OPAC des listes de résultat','YesNo'); -INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('XSLTDetailsDisplay','0','','Activer la feuille XSL pour l''affichage des notices détaillées dans la partie pro','YesNo'); -INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('XSLTResultsDisplay','0','','Activer la feuille XSL pour l''affichage des listes de résultat dans la partie pro','YesNo'); +INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('XSLTDetailsDisplay','0','','Permet l''utilisation de feuilles de style XSLT pour l''affichage détaillé de notice','YesNo'); +INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('XSLTResultsDisplay','0','','Permet l''utilisation de Feuilles de style XSLT pour l''affichage des listes de résultat','YesNo'); +INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('IntranetXSLTDetailsDisplay','','','Activer la feuille XSL pour l''affichage des notices détaillées (Interface professionnelle) Insérer le chemin vers la feuille xslt exemple','Free'); +INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('OPACXSLTDetailsDisplay','','','Activer la feuille XSL pour l''affichage des notices détaillées (Interface OPAC) Insérer le chemin vers la feuille xslt exemple','Free'); +INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('IntranetXSLTResultsDisplay','','','Activer la feuille XSL pour l''affichage des listes de résultat Insérer le chemin vers la feuille xslt exemple :../koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2IntranetDetail.xsl','Free'); +INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('IntranetXSLTResultsDisplay','','','Activer la feuille XSL pour l''affichage des listes de résultat (Interfaces pro et OPAC) Insérer le chemin vers la feuille xslt exemple :../koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl','Free'); INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('AdvancedSearchTypes','itemtypes','itemtypes|ccode','Définit quel champ est utilisé pour la limitation par type de document dans la recherche avancée','Choice'); INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('AllowOnShelfHolds', '0', '', 'Autorise les réservations de documents en rayon.', 'YesNo'); INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('AllowHoldsOnDamagedItems', '1', '', 'Autorise les réservations de documents déclarés endommagés', 'YesNo'); diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 32ad48b..360bcb3 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -3390,6 +3390,14 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { print "Upgrade done (mark DBrev for 3.2-alpha release)\n"; SetVersion ($DBversion); } +$DBversion = "3.01.00.112"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("UPDATE systempreferences set value='../koha-tmpl/opac-tmpl/prog/en/xslt/".C4::Context->preference('marcflavour')."slim2OPACDetail.xsl',type='Free' where variable='XSLTDetailsDisplay' AND value=1;"); + $dbh->do("UPDATE systempreferences set value='../koha-tmpl/opac-tmpl/prog/en/xslt/".C4::Context->preference('marcflavour')."slim2OPACResults.xsl',type='Free' where variable='XSLTResultsDisplay' AND value=1;"); + $dbh->do("INSERT INTO systempreferences set value='../koha-tmpl/intranet-tmpl/prog/en/xslt/".C4::Context->preference('marcflavour')."slim2IntranetDetails.xsl',type='Free', variable='IntranetXSLTResultsDisplay';"); + print "Upgrade to $DBversion done (Improve XSLT)\n"; + SetVersion ($DBversion); +} $DBversion = '3.01.00.112'; if (C4::Context->preference("Version") < TransformToNum($DBversion)) { diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index cf5cf1b..d806057 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -72,9 +72,9 @@ if ( ! $record ) { } $template->param( biblionumber => $biblionumber ); # XSLT processing of some stuff -if (C4::Context->preference("OPACXSLTDetailsDisplay") ) { +if (C4::Context->preference("XSLTDetailsDisplay") ) { $template->param( - 'XSLTBloc' => XSLTParse4Display($biblionumber, $record, 'Detail'),'opac' ); + 'XSLTBloc' => XSLTParse4Display($biblionumber, $record, C4::Context->preference("OPACXSLTDetailsDisplay")) ); } $template->param('OPACShowCheckoutName' => C4::Context->preference("OPACShowCheckoutName") ); -- 1.6.3.3
_______________________________________________ Koha-patches mailing list Koha-patches@lists.koha.org http://lists.koha.org/mailman/listinfo/koha-patches