@@ -, +, @@ + Added tests for CustomXSLTExportList to C4::XSLT + Added an eval block in CustomXSLTExportList to handle invalid XML. + Added "Custom" option to OPACExportOptions preference. --- C4/XSLT.pm | 29 +++++++++--------- .../prog/en/modules/admin/preferences/opac.pref | 1 + .../bootstrap/en/includes/opac-detail-sidebar.inc | 9 +++--- opac/opac-downloadcart.pl | 2 +- opac/opac-export.pl | 2 +- t/XSLT.t | 34 ++++++++++++++++++++-- 6 files changed, 56 insertions(+), 21 deletions(-) --- a/C4/XSLT.pm +++ a/C4/XSLT.pm @@ -191,7 +191,7 @@ sub get_xslt_sysprefs { } sub XSLTParse4Display { - my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items, $sysxml, $xslfilename, $lang , $opac) = @_; + my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items, $sysxml, $xslfilename, $lang) = @_; $sysxml ||= C4::Context->preference($xslsyspref); $xslfilename ||= C4::Context->preference($xslsyspref); @@ -199,17 +199,17 @@ sub XSLTParse4Display { if ($xslsyspref eq "XSLTCustomExport") { my $dir; - if ($opac) { - $dir = C4::Context->config('opachtdocs') . - '/' . C4::Context->preference("opacthemes") . - '/' . C4::Languages::getlanguage() . - '/xslt/biblioexport'; - } else { - $dir = C4::Context->config('intrahtdocs') . - '/' . C4::Context->preference("template") . - '/' . C4::Languages::getlanguage() . - '/xslt/biblioexport'; - } + $dir = C4::Context->config('intrahtdocs') . + '/' . C4::Context->preference("template") . + '/' . C4::Languages::getlanguage() . + '/xslt/biblioexport'; + $xslfilename = $dir . "/" . $xslfilename; + } elsif ($xslsyspref eq "OPACXSLTCustomExport") { + my $dir; + $dir = C4::Context->config('opachtdocs') . + '/' . C4::Context->preference("opacthemes") . + '/' . C4::Languages::getlanguage() . + '/xslt/biblioexport'; $xslfilename = $dir . "/" . $xslfilename; } elsif( $xslfilename =~ /^\s*"?default"?\s*$/i ) { my $htdocs; @@ -389,7 +389,10 @@ sub CustomXSLTExportList { (my $text = $file) =~ s/.*\///g; ## Get title of the option - my $dom = XML::LibXML->load_xml( location => $file ); + my $dom; + eval { $dom = XML::LibXML->load_xml( location => $file ); }; + next unless $dom; + my $node = $dom->documentElement(); my $title = $node->{"title"}; ($title = $text) =~ s/\.xsl// unless defined $title; --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref @@ -298,6 +298,7 @@ OPAC: mods: MODS ris: RIS isbd: ISBD + custom: Custom - - pref: OpacSeparateHoldings choices: --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc +++ a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc @@ -50,7 +50,7 @@ [% FOREACH option IN export_options %] [% IF option == 'dc' %]