Bugzilla – Attachment 84388 Details for
Bug 17385
Add custom export formats for bibliographic records
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 17385: Add custom export XSLT
Bug-17385-Add-custom-export-XSLT.patch (text/plain), 26.15 KB, created by
Mikaël Olangcay Brisebois
on 2019-01-24 19:33:38 UTC
(
hide
)
Description:
Bug 17385: Add custom export XSLT
Filename:
MIME Type:
Creator:
Mikaël Olangcay Brisebois
Created:
2019-01-24 19:33:38 UTC
Size:
26.15 KB
patch
obsolete
>From e76960e549927f3dfc0860a02141d57194fe34ad Mon Sep 17 00:00:00 2001 >From: David Bourgault <david.bourgault@inlibro.com> >Date: Tue, 26 Sep 2017 10:17:06 -0400 >Subject: [PATCH] Bug 17385: Add custom export XSLT > >Patch was corrected and rebased after QA feedback. Previous patches where combined into this one. > >- Empty READMEs have been deleted >- Whitespaces changes to unrelated code have been undone >* CustomXSLTExportList now uses LibXML to figure out the title and output > * The custom export XSLT's title should be an attribute to the root node, otherwise it will default to filename >- Duplicate $xslFile param was removed from XSLTParse4Display >* Improvment to code structure in XSLTParse4Display >* Some fixes to calls to AddBiblio() > >Test case: > - Apply patch > - Visit an item's detail page in the OPAC or the staff interface > - Click save and you found Simple Export. > - Click Simple Export and you have a file.html, it contain informations returned by the xslt file. > - It work correctly in basket and lists. > >The patch comes with sample XSLT files > for Intranet the xsl file is : koha-tmpl/intranet-tmpl/prog/en/xslt/biblioexport/MARC21_simple_export.xsl > for opac the xsl file is : koha-tmpl/opac-tmpl/bootstrap/en/xslt/biblioexport/MARC21_simple_export.xsl > >Followed test plan, patch works as described. Also ran QA test tools and >modified files pass > >Signed-off-by: Alex Buckley <alexbuckley@catalyst.net.nz> >Signed-off-by: Cori Lynn Arnold <carnold@dgiinc.com> >https://bugs.koha-community.org/show_bug.cgi?id=17835 >--- > C4/XSLT.pm | 65 ++++++++++++++++++- > basket/basket.pl | 2 + > basket/downloadcart.pl | 7 +- > catalogue/detail.pl | 3 + > catalogue/export.pl | 15 +++++ > .../prog/en/includes/cat-toolbar.inc | 3 + > .../en/includes/virtualshelves-toolbar.inc | 3 + > .../prog/en/modules/basket/basket.tt | 3 + > .../prog/en/modules/catalogue/detail.tt | 5 +- > .../modules/virtualshelves/downloadshelf.tt | 3 + > .../biblioexport/MARC21_simple_export.xsl | 62 ++++++++++++++++++ > .../en/includes/opac-detail-sidebar.inc | 3 + > .../bootstrap/en/modules/opac-downloadcart.tt | 3 + > .../en/modules/opac-downloadshelf.tt | 3 + > .../biblioexport/MARC21_simple_export.xsl | 62 ++++++++++++++++++ > opac/opac-detail.pl | 3 + > opac/opac-downloadcart.pl | 6 ++ > opac/opac-export.pl | 10 +++ > virtualshelves/downloadshelf.pl | 6 +- > virtualshelves/shelves.pl | 1 + > 20 files changed, 263 insertions(+), 5 deletions(-) > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/xslt/biblioexport/MARC21_simple_export.xsl > create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/xslt/biblioexport/MARC21_simple_export.xsl > >diff --git a/C4/XSLT.pm b/C4/XSLT.pm >index bf2647ab74..6e078ab5e4 100644 >--- a/C4/XSLT.pm >+++ b/C4/XSLT.pm >@@ -34,6 +34,8 @@ use Koha::ItemTypes; > use Koha::XSLT_Handler; > use Koha::Libraries; > >+use XML::LibXML; >+ > use Encode; > > use vars qw(@ISA @EXPORT); >@@ -48,6 +50,7 @@ BEGIN { > @ISA = qw(Exporter); > @EXPORT = qw( > &XSLTParse4Display >+ &CustomXSLTExportList > ); > $engine=Koha::XSLT_Handler->new( { do_not_return_source => 1 } ); > } >@@ -188,13 +191,27 @@ sub get_xslt_sysprefs { > } > > sub XSLTParse4Display { >- my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items, $sysxml, $xslfilename, $lang ) = @_; >+ my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items, $sysxml, $xslfilename, $lang , $opac) = @_; > > $sysxml ||= C4::Context->preference($xslsyspref); > $xslfilename ||= C4::Context->preference($xslsyspref); > $lang ||= C4::Languages::getlanguage(); > >- if ( $xslfilename =~ /^\s*"?default"?\s*$/i ) { >+ 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'; >+ } >+ $xslfilename = $dir . "/" . $xslfilename; >+ } elsif( $xslfilename =~ /^\s*"?default"?\s*$/i ) { > my $htdocs; > my $theme; > my $xslfile; >@@ -352,6 +369,50 @@ sub engine { > return $engine; > } > >+=head2 CustomXSLTExportList >+ >+ Returns list of file for custom xslt conversion >+ >+=cut >+ >+sub CustomXSLTExportList { >+ my $opac = shift; # opac (1) vs intranet (0) >+ my @tabFiles; >+ >+ my $dir = C4::Context->config( $opac ? 'opachtdocs' : 'intrahtdocs') . >+ '/' . C4::Context->preference( $opac ? "opacthemes" : "template") . >+ '/' . C4::Languages::getlanguage() . >+ '/xslt/biblioexport'; >+ my @files = <$dir/*.xsl>; >+ foreach my $file (@files) { >+ if ( -f "$file" ) { >+ (my $text = $file) =~ s/.*\///g; >+ >+ ## Get title of the option >+ my $dom = XML::LibXML->load_xml( location => $file ); >+ my $node = $dom->documentElement(); >+ my $title = $node->{"title"}; >+ ($title = $text) =~ s/\.xsl// unless defined $title; >+ >+ # Get output format >+ # There should only be one xsl:output node, so taking the first one only is OK >+ $node = @{$node->findnodes("xsl:output")}[0]; >+ my $outputformat = $node->{"method"} if $node; >+ $outputformat = "txt" if ($outputformat eq "" || $outputformat eq "text"); >+ >+ my %row = ( >+ value => $text, >+ filename => $title, >+ format => $outputformat, >+ ); >+ >+ push @tabFiles, \%row; >+ } >+ } >+ return \@tabFiles; >+} >+ >+ > 1; > > __END__ >diff --git a/basket/basket.pl b/basket/basket.pl >index 4318a9560f..16ea746ab4 100755 >--- a/basket/basket.pl >+++ b/basket/basket.pl >@@ -23,6 +23,7 @@ use C4::Biblio; > use C4::Items; > use C4::Auth; > use C4::Output; >+use C4::XSLT; > > use Koha::AuthorisedValues; > use Koha::CsvProfiles; >@@ -124,6 +125,7 @@ my $resultsarray = \@results; > $template->param( > BIBLIO_RESULTS => $resultsarray, > csv_profiles => [ Koha::CsvProfiles->search({ type => 'marc', used_for => 'export_records' }) ], >+ xsl_exports => CustomXSLTExportList(), > bib_list => $bib_list, > ); > >diff --git a/basket/downloadcart.pl b/basket/downloadcart.pl >index 46534493d1..1e445ee843 100755 >--- a/basket/downloadcart.pl >+++ b/basket/downloadcart.pl >@@ -28,7 +28,7 @@ use C4::Items; > use C4::Output; > use C4::Record; > use C4::Ris; >- >+use C4::XSLT; > use Koha::CsvProfiles; > > use utf8; >@@ -79,11 +79,15 @@ if ($bib_list && $format) { > elsif ($format eq 'bibtex') { > $output .= marc2bibtex($record, $biblio); > } >+ elsif ($format =~ /^xsl\.(.*)$/) { >+ $output .= XSLTParse4Display($biblio, $record, 'XSLTCustomExport', 1, undef, , '', $1, ''); >+ } > } > } > > # If it was a CSV export we change the format after the export so the file extension is fine > $format = "csv" if ($format =~ m/^\d+$/); >+ $format = "html" if ($format =~ /^xsl\./); > > print $query->header( > -type => 'application/octet-stream', >@@ -93,6 +97,7 @@ if ($bib_list && $format) { > > } else { > $template->param(csv_profiles => [ Koha::CsvProfiles->search({ type => 'marc', used_for => 'export_records' }) ]); >+ $template->param(xsl_exports => CustomXSLTExportList()); > $template->param(bib_list => $bib_list); > output_html_with_http_headers $query, $cookie, $template->output; > } >diff --git a/catalogue/detail.pl b/catalogue/detail.pl >index 154d63260a..7bd0eaabfa 100755 >--- a/catalogue/detail.pl >+++ b/catalogue/detail.pl >@@ -74,6 +74,9 @@ if ( C4::Context->preference('UseKohaPlugins') && > ); > } > >+##### ADD CUSTOM XSLT >+$template->param(filesOptions => CustomXSLTExportList(0)); >+ > my $biblionumber = $query->param('biblionumber'); > $biblionumber = HTML::Entities::encode($biblionumber); > my $record = GetMarcBiblio({ biblionumber => $biblionumber }); >diff --git a/catalogue/export.pl b/catalogue/export.pl >index ac8a202dad..1711ab9211 100755 >--- a/catalogue/export.pl >+++ b/catalogue/export.pl >@@ -7,6 +7,7 @@ use C4::Output; > use C4::Biblio; > use CGI qw ( -utf8 ); > use C4::Ris; >+use C4::XSLT; > > > >@@ -78,4 +79,18 @@ if ($op eq "export") { > -attachment=>"bib-$biblionumber.$format"); > print $marc; > } >+}elsif ($op eq "exportxsl"){ >+ my $biblionumber = $query->param("bib"); >+ if ($biblionumber){ >+ my $xslFile = $query->param("file"); >+ my $marc = GetMarcBiblio( { biblionumber => $biblionumber, embed_items => 1 } ); >+ my $format=$query->param("format")||'txt'; >+ my @hiddenitems; >+ >+ $marc = XSLTParse4Display($biblionumber, $marc, 'XSLTCustomExport', 1, \@hiddenitems, '', $xslFile,''); >+ print $query->header( >+ -type => 'application/octet-stream', >+ -attachment=>"bib-$biblionumber.$format"); >+ print $marc; >+ } > } >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc >index b45984ccbe..a5981247ea 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc >@@ -96,6 +96,9 @@ CAN_user_serials_create_subscription ) %] > <li><a href="/cgi-bin/koha/catalogue/export.pl?format=marcstd&op=export&bib=[% biblionumber | uri %]">MARC (Unicode/UTF-8, Standard)</a></li> > <li><a href="/cgi-bin/koha/catalogue/export.pl?format=mods&op=export&bib=[% biblionumber | uri %]">MODS (XML)</a></li> > <li><a href="/cgi-bin/koha/catalogue/export.pl?format=ris&op=export&bib=[% biblionumber | uri %]">RIS</a></li> >+ [% FOREACH filesOption IN filesOptions %] >+ <li><a href="/cgi-bin/koha/catalogue/export.pl?format=[% filesOption.format %]&op=exportxsl&file=[% filesOption.value %]&bib=[% biblionumber | html %]">[% filesOption.filename %]</a></li> >+ [% END %] > </ul> > </div> > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/virtualshelves-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/virtualshelves-toolbar.inc >index 2409a58784..87c52ac711 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/virtualshelves-toolbar.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/virtualshelves-toolbar.inc >@@ -23,6 +23,9 @@ > [% FOREACH csv_profile IN csv_profiles %] > <li><a href="/cgi-bin/koha/virtualshelves/downloadshelf.pl?format=[% csv_profile.export_format_id | uri %]&shelfid=[% shelf.shelfnumber | uri %]">CSV - [% csv_profile.profile | html %]</a></li> > [% END %] >+ [% FOREACH xsl_export IN xsl_exports %] >+ <li><a href="/cgi-bin/koha/virtualshelves/downloadshelf.pl?format=xsl.[% xsl_export.value %]&shelfid=[% shelf.shelfnumber %]">XSL - [% xsl_export.filename %]</a></li> >+ [% END %] > </ul> > </div> > <div class="btn-group"><a class="btn btn-default btn-sm" href="#" id="sendlist"><i class="fa fa-envelope"></i> Send list</a></div> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt >index b861a0f455..5e0bce5562 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt >@@ -56,6 +56,9 @@ > [% FOREACH csv_profile IN csv_profiles %] > <li><a href="/cgi-bin/koha/basket/downloadcart.pl?format=[% csv_profile.export_format_id | uri %]&bib_list=[% bib_list | uri %]">CSV - [% csv_profile.profile | html %]</a></li> > [% END %] >+ [% FOREACH xsl_export IN xsl_exports %] >+ <li><a href="/cgi-bin/koha/basket/downloadcart.pl?format=xsl.[% xsl_export.value %]&bib_list=[% bib_list %]">XSL - [% xsl_export.filename %]</a></li> >+ [% END %] > </ul> > </div> > <a class="btn btn-default btn-sm" href="basket.pl" id="print_cart"><i class="fa fa-print"></i> Print</a> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >index bfab7727aa..9b86696bd1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >@@ -860,7 +860,10 @@ > <option data-toggle="modal" data-target="#exportModal_">Dublin Core</option> > <option value="marcxml">MARCXML</option> > <option value="marc8">MARC (non-Unicode/MARC-8)</option> >- <option value="utf8">MARC (Unicode/UTF-8)</option> </select> >+ <option value="utf8">MARC (Unicode/UTF-8)</option> >+ [% FOREACH filesOption IN filesOptions %] >+ <option value="[% filesOption.value %]">[% filesOption.filename %]</option> >+ [% END %]</select> > <input type="submit" name="save" value="Download Record" /></td> > </tr> > <tr><td> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/downloadshelf.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/downloadshelf.tt >index 577eafeef7..740fe5d1f0 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/downloadshelf.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/downloadshelf.tt >@@ -36,6 +36,9 @@ > [% FOREACH csv_profile IN csv_profiles %] > <option value="[% csv_profile.export_format_id | html %]">CSV - [% csv_profile.profile | html %]</option> > [% END %] >+ [% FOREACH xsl_export IN xsl_exports %] >+ <option value="xsl.[% xsl_export.value %]">XSL - [% xsl_export.filename %]</option> >+ [% END %] > </select> > </li></ol> > </fieldset> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/biblioexport/MARC21_simple_export.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/biblioexport/MARC21_simple_export.xsl >new file mode 100644 >index 0000000000..5e518d35a3 >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/biblioexport/MARC21_simple_export.xsl >@@ -0,0 +1,62 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<xsl:stylesheet version="1.0" >+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >+ xmlns:marc="http://www.loc.gov/MARC21/slim" >+ title="Simple Export"> >+<xsl:output method="html" encoding="UTF-8"/> >+ >+ <xsl:template match="/"> >+ <xsl:apply-templates/> >+ </xsl:template> >+ >+ <xsl:template match="marc:record"> >+ <p> >+ <xsl:if test="marc:datafield[@tag=245]"> >+ <xsl:for-each select="marc:datafield[@tag=245]"> >+ <xsl:value-of select="marc:subfield[@code='a']"/> >+ <xsl:if test="marc:subfield[@code='b']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='b']"></xsl:value-of> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='c']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='c']"></xsl:value-of> >+ </xsl:if> >+ </xsl:for-each> >+ </xsl:if> >+ <xsl:if test="marc:datafield[@tag=260]"> >+ <br/> >+ <xsl:for-each select="marc:datafield[@tag=260]"> >+ <xsl:if test="marc:subfield[@code='a']"> >+ <xsl:value-of select="marc:subfield[@code='a']"/> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='b']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='b']"></xsl:value-of> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='c']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='c']"></xsl:value-of> >+ </xsl:if> >+ </xsl:for-each> >+ </xsl:if> >+ <xsl:if test="marc:datafield[@tag=264]"> >+ <br/> >+ <xsl:for-each select="marc:datafield[@tag=264]"> >+ <xsl:if test="marc:subfield[@code='a']"> >+ <xsl:value-of select="marc:subfield[@code='a']"/> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='b']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='b']"></xsl:value-of> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='c']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='c']"></xsl:value-of> >+ </xsl:if> >+ </xsl:for-each> >+ </xsl:if> >+ </p> >+ </xsl:template> >+ >+</xsl:stylesheet> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc >index e1c645d687..0772c85cbd 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc >@@ -68,6 +68,9 @@ > </li> > [% END %] > [% END %] >+ [% FOREACH filesOption IN filesOptions %] >+ <li><a role="menuitem" href="/cgi-bin/koha/opac-export.pl?format=[% filesOption.format %]&op=exportxsl&file=[% filesOption.value %]&bib=[% biblionumber %]">[% filesOption.filename %]</a></li> >+ [% END %] > </ul> > </div> > </div> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-downloadcart.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-downloadcart.tt >index 89091e1e95..70c3beb1a3 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-downloadcart.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-downloadcart.tt >@@ -20,6 +20,9 @@ > [% FOREACH csv_profile IN csv_profiles %] > <option value="[% csv_profile.export_format_id | html %]">CSV - [% csv_profile.profile | html %]</option> > [% END %] >+ [% FOREACH xsl_export IN xsl_exports %] >+ <option value="xsl.[% xsl_export.value %]">XSL - [% xsl_export.filename %]</option> >+ [% END %] > </select> > <fieldset class="action"> > <input type="hidden" name="bib_list" value="[% bib_list | html %]" /> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-downloadshelf.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-downloadshelf.tt >index 02b2ae3be4..4881ea7aa9 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-downloadshelf.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-downloadshelf.tt >@@ -59,6 +59,9 @@ > [% FOREACH csv_profile IN csv_profiles %] > <option value="[% csv_profile.export_format_id | html %]">CSV - [% csv_profile.profile | html %]</option> > [% END %] >+ [% FOREACH xsl_export IN xsl_exports %] >+ <option value="xsl.[% xsl_export.value %]">XSL - [% xsl_export.filename %]</option> >+ [% END %] > </select> > <span class="required">Required</span> > </fieldset> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/biblioexport/MARC21_simple_export.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/biblioexport/MARC21_simple_export.xsl >new file mode 100644 >index 0000000000..5e518d35a3 >--- /dev/null >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/biblioexport/MARC21_simple_export.xsl >@@ -0,0 +1,62 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<xsl:stylesheet version="1.0" >+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >+ xmlns:marc="http://www.loc.gov/MARC21/slim" >+ title="Simple Export"> >+<xsl:output method="html" encoding="UTF-8"/> >+ >+ <xsl:template match="/"> >+ <xsl:apply-templates/> >+ </xsl:template> >+ >+ <xsl:template match="marc:record"> >+ <p> >+ <xsl:if test="marc:datafield[@tag=245]"> >+ <xsl:for-each select="marc:datafield[@tag=245]"> >+ <xsl:value-of select="marc:subfield[@code='a']"/> >+ <xsl:if test="marc:subfield[@code='b']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='b']"></xsl:value-of> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='c']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='c']"></xsl:value-of> >+ </xsl:if> >+ </xsl:for-each> >+ </xsl:if> >+ <xsl:if test="marc:datafield[@tag=260]"> >+ <br/> >+ <xsl:for-each select="marc:datafield[@tag=260]"> >+ <xsl:if test="marc:subfield[@code='a']"> >+ <xsl:value-of select="marc:subfield[@code='a']"/> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='b']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='b']"></xsl:value-of> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='c']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='c']"></xsl:value-of> >+ </xsl:if> >+ </xsl:for-each> >+ </xsl:if> >+ <xsl:if test="marc:datafield[@tag=264]"> >+ <br/> >+ <xsl:for-each select="marc:datafield[@tag=264]"> >+ <xsl:if test="marc:subfield[@code='a']"> >+ <xsl:value-of select="marc:subfield[@code='a']"/> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='b']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='b']"></xsl:value-of> >+ </xsl:if> >+ <xsl:if test="marc:subfield[@code='c']"> >+ <xsl:text> </xsl:text> >+ <xsl:value-of select="marc:subfield[@code='c']"></xsl:value-of> >+ </xsl:if> >+ </xsl:for-each> >+ </xsl:if> >+ </p> >+ </xsl:template> >+ >+</xsl:stylesheet> >diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl >index a7c24ef3d9..3b6dfba021 100755 >--- a/opac/opac-detail.pl >+++ b/opac/opac-detail.pl >@@ -82,6 +82,9 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( > } > ); > >+#### ADD CUSTOM XSLT >+$template->param(filesOptions => CustomXSLTExportList(1)); >+ > my @all_items = GetItemsInfo($biblionumber); > my @hiddenitems; > my $patron = Koha::Patrons->find( $borrowernumber ); >diff --git a/opac/opac-downloadcart.pl b/opac/opac-downloadcart.pl >index ec5e2c8e4a..e829561ec5 100755 >--- a/opac/opac-downloadcart.pl >+++ b/opac/opac-downloadcart.pl >@@ -28,6 +28,7 @@ use C4::Items; > use C4::Output; > use C4::Record; > use C4::Ris; >+use C4::XSLT; > use Koha::CsvProfiles; > use Koha::RecordProcessor; > >@@ -108,11 +109,15 @@ if ($bib_list && $format) { > $extension = "txt"; > $type = "text/plain"; > } >+ elsif ($format =~ /^xsl\.(.*)$/) { >+ $output .= XSLTParse4Display($biblio, $record, 'XSLTCustomExport', 1, undef, undef, $1, '', 1); >+ } > } > } > > # If it was a CSV export we change the format after the export so the file extension is fine > $format = "csv" if ($format =~ m/^\d+$/); >+ $format = "html" if ($format =~ /^xsl\./); > > print $query->header( > -type => ($type) ? $type : 'application/octet-stream', >@@ -123,6 +128,7 @@ if ($bib_list && $format) { > > } else { > $template->param(csv_profiles => [ Koha::CsvProfiles->search({ type => 'marc', used_for => 'export_records' }) ]); >+ $template->param(xsl_exports => CustomXSLTExportList()); > $template->param(bib_list => $bib_list); > output_html_with_http_headers $query, $cookie, $template->output; > } >diff --git a/opac/opac-export.pl b/opac/opac-export.pl >index a992d463ba..fd3b9daa51 100755 >--- a/opac/opac-export.pl >+++ b/opac/opac-export.pl >@@ -26,6 +26,7 @@ use C4::Biblio; > use CGI qw ( -utf8 ); > use C4::Auth; > use C4::Ris; >+use C4::XSLT; > use Koha::RecordProcessor; > > my $query = CGI->new; >@@ -120,6 +121,15 @@ elsif ( $format =~ /isbd/ ) { > }); > $format = 'isbd'; > } >+elsif ($format =~ /html/ ) { >+ if ($biblionumber){ >+ my $xslFile = $query->param("file"); >+ $marc = C4::Biblio::GetMarcBiblio({biblionumber => $biblionumber}); >+ my @hiddenitems; >+ >+ $marc = XSLTParse4Display($biblionumber, $marc, 'XSLTCustomExport', 1, \@hiddenitems, undef, $xslFile, undef, 1); >+ } >+} > else { > $error= "Format $format is not supported."; > } >diff --git a/virtualshelves/downloadshelf.pl b/virtualshelves/downloadshelf.pl >index b8b37fb4a2..80327c8c84 100755 >--- a/virtualshelves/downloadshelf.pl >+++ b/virtualshelves/downloadshelf.pl >@@ -28,6 +28,7 @@ use C4::Items; > use C4::Output; > use C4::Record; > use C4::Ris; >+use C4::XSLT; > > use Koha::CsvProfiles; > use Koha::Virtualshelves; >@@ -83,12 +84,15 @@ if ($shelfid && $format) { > elsif ($format eq 'bibtex') { > $output .= marc2bibtex($record, $biblionumber); > } >+ elsif ($format =~ /^xsl\.(.*)$/){ >+ $output .= XSLTParse4Display($biblionumber, $record, 'XSLTCustomExport', 1, undef, ,'',$1,''); >+ } > } > } > > # If it was a CSV export we change the format after the export so the file extension is fine > $format = "csv" if ($format =~ m/^\d+$/); >- >+ $format = "html" if ($format =~ /^xsl\./); > print $query->header( > -type => 'application/octet-stream', > -'Content-Transfer-Encoding' => 'binary', >diff --git a/virtualshelves/shelves.pl b/virtualshelves/shelves.pl >index bd1c0d4654..9371f08114 100755 >--- a/virtualshelves/shelves.pl >+++ b/virtualshelves/shelves.pl >@@ -351,6 +351,7 @@ $template->param( > category => $category, > print => scalar $query->param('print') || 0, > csv_profiles => [ Koha::CsvProfiles->search({ type => 'marc', used_for => 'export_records' }) ], >+ xsl_exports => CustomXSLTExportList() > ); > > output_html_with_http_headers $query, $cookie, $template->output; >-- >2.17.1
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 17385
:
55961
|
58308
|
64033
|
64034
|
67357
|
67579
|
74660
|
74661
|
79055
|
79056
|
80675
|
81385
|
81386
|
84388
|
84389
|
84390
|
86875
|
86876
|
86877
|
86878
|
86879
|
86880
|
97076
|
97101
|
97102
|
97103
|
97104
|
97105
|
100289
|
100290
|
100291
|
100292
|
100293
|
100663
|
100670
|
100671
|
100672
|
100673
|
100674
|
100675
|
112671
|
112672
|
112673
|
112674
|
112675
|
112676
|
112677
|
112678
|
112679
|
112680
|
112681
|
112682
|
112956
|
112957
|
112958
|
112959
|
130283
|
130284
|
130285
|
130286
|
130287
|
130691
|
130692
|
130693
|
130694
|
130695
|
131492
|
132488
|
132489
|
132490
|
132491
|
132492
|
132493
|
132581
|
133498
|
133499
|
133500
|
133501
|
133502
|
133503
|
133504
|
138031
|
138032
|
138033
|
138034
|
138035
|
138036
|
138037
|
138082
|
138083
|
138084
|
138085
|
138086
|
138087
|
138088
|
138132
|
139277
|
139278
|
139279
|
139280
|
139281
|
139282
|
139283
|
139284
|
141157
|
141158
|
141159
|
141160
|
141161
|
141162
|
141163
|
141164
|
144335
|
144336
|
144380
|
144384
|
151095
|
151096
|
151097
|
151098
|
151099
|
151102
|
151103
|
151104
|
151105
|
151106
|
151377
|
151378
|
151379
|
151380
|
151381
|
154379
|
154380
|
154381
|
154382
|
154383
|
156815
|
156816
|
156817
|
156818
|
156819
|
159142
|
159143
|
159144
|
159145
|
159146
|
159147
|
159148
|
163623
|
170014
|
170015
|
170016
|
170017
|
170018
|
170019
|
170026
|
170027
|
170028
|
170029
|
170030
|
170031
|
170983
|
170984
|
170985
|
170986
|
170987
|
170988