@@ -, +, @@ option for MARC details displayed. displayed. --- C4/XSLT.pm | 8 ++++++-- opac/opac-showmarc.pl | 29 +++++++++-------------------- 2 files changed, 15 insertions(+), 22 deletions(-) --- a/C4/XSLT.pm +++ a/C4/XSLT.pm @@ -139,12 +139,16 @@ The helper function _get_best_default_xslt_filename is used in a unit test. sub _get_best_default_xslt_filename { my ($htdocs, $theme, $lang, $base_xslfile) = @_; + # Try to find the xsl file in various directory, in the following order. + # Depending on the interface the fallback theme is boostrap (opac) or prog + # (pro). my @candidates = ( "$htdocs/$theme/$lang/xslt/${base_xslfile}", # exact match "$htdocs/$theme/en/xslt/${base_xslfile}", # if not, preferred theme in English + "$htdocs/bootstrap/$lang/xslt/${base_xslfile}", # if not, 'bootstrap' theme in preferred language + "$htdocs/bootstrap/en/xslt/${base_xslfile}", # otherwise, bootstrap theme in English "$htdocs/prog/$lang/xslt/${base_xslfile}", # if not, 'prog' theme in preferred language - "$htdocs/prog/en/xslt/${base_xslfile}", # otherwise, prog theme in English; should always - # exist + "$htdocs/prog/en/xslt/${base_xslfile}", # otherwise, prog theme in English ); my $xslfilename; foreach my $filename (@candidates) { --- a/opac/opac-showmarc.pl +++ a/opac/opac-showmarc.pl @@ -52,26 +52,15 @@ if(!ref $record) { } if ($view eq 'card' || $view eq 'html') { - my $xmlrecord= $importid? $record->as_xml(): GetXmlBiblio($biblionumber); - my $xslfile; - my $xslfilename; - my $htdocs = C4::Context->config('opachtdocs'); - my $theme = C4::Context->preference("opacthemes"); - my $lang = C4::Languages::getlanguage($input); - - if ($view eq 'card'){ - $xslfile = "compact.xsl"; - } - else { # must be html - $xslfile = 'plainMARC.xsl'; - } - $xslfilename = "$htdocs/$theme/$lang/xslt/$xslfile"; - $xslfilename = "$htdocs/$theme/en/xslt/$xslfile" unless ( $lang ne 'en' && -f $xslfilename ); - $xslfilename = "$htdocs/prog/$lang/xslt/$xslfile" unless ( -f $xslfile ); - $xslfilename = "$htdocs/prog/en/xslt/$xslfile" unless ( $lang ne 'en' && -f $xslfilename ); - - my $newxmlrecord = C4::XSLT::engine->transform($xmlrecord, $xslfilename); - print $input->header(-charset => 'UTF-8'), Encode::encode_utf8($newxmlrecord); + my $xml = $importid ? $record->as_xml(): GetXmlBiblio($biblionumber); + my $xsl = C4::XSLT::_get_best_default_xslt_filename( + C4::Context->config('opachtdocs'), + C4::Context->preference('opacthemes'), + C4::Languages::getlanguage($input), + $view eq 'card' ? 'compact.xsl' : 'plainMARC.xsl' + ); + print $input->header(-charset => 'UTF-8'), + Encode::encode_utf8(C4::XSLT::engine->transform($xml, $xsl)); } else { #view eq marc my ( $template, $loggedinuser, $cookie ) = get_template_and_user({ --