Bugzilla – Attachment 89012 Details for
Bug 8995
Show OpenURL links in OPAC search results
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 8995: Show OpenURL links in OPAC search results
Bug-8995-Show-OpenURL-links-in-OPAC-search-results.patch (text/plain), 29.13 KB, created by
Josef Moravec
on 2019-04-29 14:31:23 UTC
(
hide
)
Description:
Bug 8995: Show OpenURL links in OPAC search results
Filename:
MIME Type:
Creator:
Josef Moravec
Created:
2019-04-29 14:31:23 UTC
Size:
29.13 KB
patch
obsolete
>From 65d09ec217ffa97cf231daf16ef69bb038b573d3 Mon Sep 17 00:00:00 2001 >From: Julian Maurice <julian.maurice@biblibre.com> >Date: Wed, 6 Nov 2013 16:04:42 +0100 >Subject: [PATCH] Bug 8995: Show OpenURL links in OPAC search results > >This patch use GetCOinS sub to provide an OpenURL link in OPAC search >results. It uses 4 new system preferences: > - OpenURLinOPACResults: enable or disable this feature > - OpenURLResolverURL: url of the openURL resolver > - OpenURLText: text of the link > - OpenURLImageLocation: image of the link > >Link is displayed as an image if OpenURLImageLocation is defined, and as >text otherwise. >It works both with and without XSLT enabled. > >Changes made to GetCOinSBiblio: > >For 'journal': >- Title should be in rft.jtitle instead of rft.title >- rft.date, rft.aulast, rft.aufirst, rft.au, rft.pub and rft.pages have > no meaning for a subscription, so they are simply removed from URL > >This patch refactors GetCOinSBiblio, so the construction of URL is done >only at the end. This way we do not have ugly > $var .= "&$value" >in the function body. > >Also use URI::Escape instead of custom regexps. > >This development consider the value of syspref OPACURLOpenInNewWindow >when building the link. > >Test plan: >1/ Enable syspref OPACShowOpenURL and put your OpenURL resolver URL in >OpenURLResolverURL syspref (if you don't have one, just fill it with >some fake URL, you'll have to check if OpenURL links are correct) >2/ If you want, set the other sysprefs OpenURLImageLocation and >OpenURLText >3/ Fill syspref OPACOpenURLItemTypes with some (not all) of your >item types. >4/ Empty sysprefs OPACXSLTDetailsDisplay and OPACXSLTResultsDisplay >5/ Go to OPAC and launch a search. >6/ Check you have in the results (near the title) the OpenURL link (only >for itemtypes that are in OPACOpenURLItemTypes). >Toggle OPACURLOpenInNewWindow syspref and check that the behaviour of >the link is correct. >7/ Go to the detail page of one of those and check you have the OpenURL >link too. (Above tags) >Toggle OPACURLOpenInNewWindow syspref and check that the behaviour of >the link is correct. >8/ Set sysprefs OPACXSLTDetailsDisplay and OPACXSLTResultsDisplay to >"default" and repeat steps 5 to 7 > >Signed-off-by: Paola Rossi <paola.rossi@cineca.it> > >Signed-off-by: Magnus Enger <magnus@libriotech.no> >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> >--- > C4/Biblio.pm | 150 +++++++++++++-------- > C4/XSLT.pm | 25 +++- > .../mysql/atomicupdate/8995_OpenURL_sysprefs.sql | 6 + > installer/data/mysql/sysprefs.sql | 5 + > .../prog/en/modules/admin/preferences/opac.pref | 29 ++++ > koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss | 4 + > .../bootstrap/en/xslt/MARC21slim2OPACDetail.xsl | 49 +++++++ > .../bootstrap/en/xslt/MARC21slim2OPACResults.xsl | 51 ++++++- > .../bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl | 50 +++++++ > .../bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl | 49 +++++++ > opac/opac-search.pl | 12 ++ > 11 files changed, 369 insertions(+), 61 deletions(-) > create mode 100644 installer/data/mysql/atomicupdate/8995_OpenURL_sysprefs.sql > >diff --git a/C4/Biblio.pm b/C4/Biblio.pm >index d7c749144b..fa0d4c6dc1 100644 >--- a/C4/Biblio.pm >+++ b/C4/Biblio.pm >@@ -88,6 +88,8 @@ use MARC::File::USMARC; > use MARC::File::XML; > use POSIX qw(strftime); > use Module::Load::Conditional qw(can_load); >+use URI; >+use URI::Escape; # GetCOinSBiblio > > use C4::Koha; > use C4::Log; # logaction >@@ -1246,45 +1248,44 @@ sub GetCOinSBiblio { > carp 'GetCOinSBiblio called with undefined record'; > return; > } >+ > my $pos7 = substr $record->leader(), 7, 1; > my $pos6 = substr $record->leader(), 6, 1; > my $mtx; > my $genre; > my ( $aulast, $aufirst ) = ( '', '' ); >- my $oauthors = ''; >- my $title = ''; >- my $subtitle = ''; >+ my @authors; >+ my $title; >+ my $hosttitle; > my $pubyear = ''; > my $isbn = ''; > my $issn = ''; > my $publisher = ''; > my $pages = ''; >- my $titletype = 'b'; >+ my $titletype = ''; > > # For the purposes of generating COinS metadata, LDR/06-07 can be > # considered the same for UNIMARC and MARC21 >- my $fmts6; >- my $fmts7; >- %$fmts6 = ( >- 'a' => 'book', >- 'b' => 'manuscript', >- 'c' => 'book', >- 'd' => 'manuscript', >- 'e' => 'map', >- 'f' => 'map', >- 'g' => 'film', >- 'i' => 'audioRecording', >- 'j' => 'audioRecording', >- 'k' => 'artwork', >- 'l' => 'document', >- 'm' => 'computerProgram', >- 'o' => 'document', >- 'r' => 'document', >- ); >- %$fmts7 = ( >- 'a' => 'journalArticle', >- 's' => 'journal', >- ); >+ my $fmts6 = { >+ 'a' => 'book', >+ 'b' => 'manuscript', >+ 'c' => 'book', >+ 'd' => 'manuscript', >+ 'e' => 'map', >+ 'f' => 'map', >+ 'g' => 'film', >+ 'i' => 'audioRecording', >+ 'j' => 'audioRecording', >+ 'k' => 'artwork', >+ 'l' => 'document', >+ 'm' => 'computerProgram', >+ 'o' => 'document', >+ 'r' => 'document', >+ }; >+ my $fmts7 = { >+ 'a' => 'journalArticle', >+ 's' => 'journal', >+ }; > > $genre = $fmts6->{$pos6} ? $fmts6->{$pos6} : 'book'; > >@@ -1295,6 +1296,7 @@ sub GetCOinSBiblio { > ##### We must transform mtx to a valable mtx and document type #### > if ( $genre eq 'book' ) { > $mtx = 'book'; >+ $titletype = 'b'; > } elsif ( $genre eq 'journal' ) { > $mtx = 'journal'; > $titletype = 'j'; >@@ -1306,26 +1308,25 @@ sub GetCOinSBiblio { > $mtx = 'dc'; > } > >- $genre = ( $mtx eq 'dc' ) ? "&rft.type=$genre" : "&rft.genre=$genre"; >- > if ( C4::Context->preference("marcflavour") eq "UNIMARC" ) { > > # Setting datas > $aulast = $record->subfield( '700', 'a' ) || ''; > $aufirst = $record->subfield( '700', 'b' ) || ''; >- $oauthors = "&rft.au=$aufirst $aulast"; >+ push @authors, "$aufirst $aulast" if ($aufirst or $aulast); > > # others authors > if ( $record->field('200') ) { > for my $au ( $record->field('200')->subfield('g') ) { >- $oauthors .= "&rft.au=$au"; >+ push @authors, $au; > } > } >- $title = >- ( $mtx eq 'dc' ) >- ? "&rft.title=" . $record->subfield( '200', 'a' ) >- : "&rft.title=" . $record->subfield( '200', 'a' ) . "&rft.btitle=" . $record->subfield( '200', 'a' ); >- $pubyear = $record->subfield( '210', 'd' ) || ''; >+ >+ $title = $record->subfield( '200', 'a' ); >+ my $subfield_210d = $record->subfield('210', 'd'); >+ if ($subfield_210d and $subfield_210d =~ /(\d{4})/) { >+ $pubyear = $1; >+ } > $publisher = $record->subfield( '210', 'c' ) || ''; > $isbn = $record->subfield( '010', 'a' ) || ''; > $issn = $record->subfield( '011', 'a' ) || ''; >@@ -1335,34 +1336,24 @@ sub GetCOinSBiblio { > > # Setting datas > if ( $record->field('100') ) { >- $oauthors .= "&rft.au=" . $record->subfield( '100', 'a' ); >+ push @authors, $record->subfield( '100', 'a' ); > } > > # others authors > if ( $record->field('700') ) { > for my $au ( $record->field('700')->subfield('a') ) { >- $oauthors .= "&rft.au=$au"; >+ push @authors, $au; > } > } >- $title = "&rft." . $titletype . "title=" . $record->subfield( '245', 'a' ); >- $subtitle = $record->subfield( '245', 'b' ) || ''; >- $title .= $subtitle; >+ $title = $record->subfield( '245', 'a' ) . $record->subfield( '245', 'b' ); > if ($titletype eq 'a') { > $pubyear = $record->field('008') || ''; > $pubyear = substr($pubyear->data(), 7, 4) if $pubyear; > $isbn = $record->subfield( '773', 'z' ) || ''; > $issn = $record->subfield( '773', 'x' ) || ''; >- if ($mtx eq 'journal') { >- $title .= "&rft.title=" . ( $record->subfield( '773', 't' ) || $record->subfield( '773', 'a') || q{} ); >- } else { >- $title .= "&rft.btitle=" . ( $record->subfield( '773', 't' ) || $record->subfield( '773', 'a') || q{} ); >- } >- foreach my $rel ($record->subfield( '773', 'g' )) { >- if ($pages) { >- $pages .= ', '; >- } >- $pages .= $rel; >- } >+ $hosttitle = $record->subfield( '773', 't' ) || $record->subfield( '773', 'a') || q{}; >+ my @rels = $record->subfield( '773', 'g' ); >+ $pages = join(', ', @rels); > } else { > $pubyear = $record->subfield( '260', 'c' ) || ''; > $publisher = $record->subfield( '260', 'b' ) || ''; >@@ -1371,16 +1362,63 @@ sub GetCOinSBiblio { > } > > } >- my $coins_value = >-"ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3A$mtx$genre$title&rft.isbn=$isbn&rft.issn=$issn&rft.aulast=$aulast&rft.aufirst=$aufirst$oauthors&rft.pub=$publisher&rft.date=$pubyear&rft.pages=$pages"; >- $coins_value =~ s/(\ |&[^a])/\+/g; >- $coins_value =~ s/\"/\"\;/g; > >-#<!-- TMPL_VAR NAME="ocoins_format" -->&rft.au=<!-- TMPL_VAR NAME="author" -->&rft.btitle=<!-- TMPL_VAR NAME="title" -->&rft.date=<!-- TMPL_VAR NAME="publicationyear" -->&rft.pages=<!-- TMPL_VAR NAME="pages" -->&rft.isbn=<!-- TMPL_VAR NAME=amazonisbn -->&rft.aucorp=&rft.place=<!-- TMPL_VAR NAME="place" -->&rft.pub=<!-- TMPL_VAR NAME="publishercode" -->&rft.edition=<!-- TMPL_VAR NAME="edition" -->&rft.series=<!-- TMPL_VAR NAME="series" -->&rft.genre=" >+ my @params = ( >+ [ 'ctx_ver', 'Z39.88-2004' ], >+ [ 'rft_val_fmt', "info:ofi/fmt:kev:mtx:$mtx" ], >+ [ ($mtx eq 'dc' ? 'rft.type' : 'rft.genre'), $genre ], >+ [ "rft.${titletype}title", $title ], >+ ); >+ >+ # rft.title is authorized only once, so by checking $titletype >+ # we ensure that rft.title is not already in the list. >+ if ($hosttitle and $titletype) { >+ push @params, [ 'rft.title', $hosttitle ]; >+ } >+ >+ push @params, ( >+ [ 'rft.isbn', $isbn ], >+ [ 'rft.issn', $issn ], >+ ); >+ >+ # If it's a subscription, these informations have no meaning. >+ if ($genre ne 'journal') { >+ push @params, ( >+ [ 'rft.aulast', $aulast ], >+ [ 'rft.aufirst', $aufirst ], >+ (map { [ 'rft.au', $_ ] } @authors), >+ [ 'rft.pub', $publisher ], >+ [ 'rft.date', $pubyear ], >+ [ 'rft.pages', $pages ], >+ ); >+ } >+ >+ my $coins_value = join( '&', >+ map { $$_[1] ? $$_[0] . '=' . uri_escape_utf8( $$_[1] ) : () } @params ); > > return $coins_value; > } > >+sub GetOpenURLResolverURL { >+ my ($record) = @_; >+ >+ my $coins = GetCOinSBiblio($record); >+ my $OpenURLResolverURL = C4::Context->preference('OpenURLResolverURL'); >+ >+ if ($OpenURLResolverURL) { >+ my $uri = URI->new($OpenURLResolverURL); >+ >+ if (not defined $uri->query) { >+ $OpenURLResolverURL .= '?'; >+ } else { >+ $OpenURLResolverURL .= '&'; >+ } >+ $OpenURLResolverURL .= $coins; >+ } >+ >+ return $OpenURLResolverURL; >+} >+ > > =head2 GetMarcPrice > >diff --git a/C4/XSLT.pm b/C4/XSLT.pm >index 2d499cbc9c..0b0e041476 100644 >--- a/C4/XSLT.pm >+++ b/C4/XSLT.pm >@@ -171,7 +171,9 @@ sub get_xslt_sysprefs { > OPACItemLocation DisplayIconsXSLT > AlternateHoldingsField AlternateHoldingsSeparator > TrackClicks opacthemes IdRef OpacSuppression >- OPACResultsLibrary / ) >+ OPACResultsLibrary OPACShowOpenURL >+ OpenURLResolverURL OpenURLImageLocation >+ OpenURLText / ) > { > my $sp = C4::Context->preference( $syspref ); > next unless defined($sp); >@@ -188,7 +190,7 @@ 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, $variables ) = @_; > > $sysxml ||= C4::Context->preference($xslsyspref); > $xslfilename ||= C4::Context->preference($xslsyspref); >@@ -243,8 +245,23 @@ sub XSLTParse4Display { > my $itemsxml = buildKohaItemsNamespace($biblionumber, $hidden_items); > my $xmlrecord = $record->as_xml(C4::Context->preference('marcflavour')); > >- $xmlrecord =~ s/\<\/record\>/$itemsxml$sysxml\<\/record\>/; >- if ($fixamps) { # We need to correct the HTML entities that Zebra outputs >+ $variables ||= {}; >+ if (C4::Context->preference('OPACShowOpenURL')) { >+ my ($biblio) = GetBiblioItemByBiblioNumber($biblionumber); >+ my @itypes = split( /\s/, C4::Context->preference('OPACOpenURLItemTypes') ); >+ if (grep /^$biblio->{itemtype}$/, @itypes) { >+ $variables->{OpenURLResolverURL} = >+ C4::Biblio::GetOpenURLResolverURL($orig_record); >+ } >+ } >+ my $varxml = "<variables>\n"; >+ while (my ($key, $value) = each %$variables) { >+ $varxml .= "<variable name=\"$key\">$value</variable>\n"; >+ } >+ $varxml .= "</variables>\n"; >+ >+ $xmlrecord =~ s/\<\/record\>/$itemsxml$sysxml$varxml\<\/record\>/; >+ if ($fixamps) { # We need to correct the ampersand entities that Zebra outputs > $xmlrecord =~ s/\&amp;/\&/g; > $xmlrecord =~ s/\&\;lt\;/\<\;/g; > $xmlrecord =~ s/\&\;gt\;/\>\;/g; >diff --git a/installer/data/mysql/atomicupdate/8995_OpenURL_sysprefs.sql b/installer/data/mysql/atomicupdate/8995_OpenURL_sysprefs.sql >new file mode 100644 >index 0000000000..262347256f >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/8995_OpenURL_sysprefs.sql >@@ -0,0 +1,6 @@ >+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES >+ ('OpenURLResolverURL', '', 'URL of OpenURL Resolver', NULL, 'Free'), >+ ('OpenURLText', '', 'Text of OpenURL links (or image title if OpenURLImageLocation is defined)', NULL, 'Free'), >+ ('OpenURLImageLocation', '', 'Location of image for OpenURL links', NULL, 'Free'), >+ ('OPACShowOpenURL', '', 'Enable display of OpenURL links in OPAC search results and detail page', NULL, 'YesNo'), >+ ('OPACOpenURLItemTypes', '', 'Show the OpenURL link only for these item types', NULL, 'Free'); >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index 97ec088ba0..f0b4318e0e 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -437,6 +437,11 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('OPACXSLTResultsDisplay','default','','Enable XSL stylesheet control over results page display on OPAC','Free'), > ('OpenLibraryCovers','0',NULL,'If ON Openlibrary book covers will be show','YesNo'), > ('OpenLibrarySearch','0',NULL,'If Yes Open Library search results will show in OPAC','YesNo'), >+('OpenURLResolverURL', '', NULL, 'URL of OpenURL Resolver', 'Free'), >+('OpenURLText', '', NULL, 'Text of OpenURL links (or image title if OpenURLImageLocation is defined)', 'Free'), >+('OpenURLImageLocation', '', NULL, 'Location of image for OpenURL links', 'Free'), >+('OPACShowOpenURL', '', NULL, 'Enable display of OpenURL links in OPAC search results and detail page', 'YesNo'), >+('OPACOpenURLItemTypes', '', NULL, 'Show the OpenURL link only for these item types', 'Free'), > ('OrderPdfFormat','pdfformat::layout3pages','Controls what script is used for printing (basketgroups)','','free'), > ('OrderPriceRounding','','|nearest_cent','Local preference for rounding orders before calculations to ensure correct calculations','Choice'), > ('OverDriveCirculation','0','Enable client to see their OverDrive account','','YesNo'), >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 a8c383b045..8300553aee 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 >@@ -120,6 +120,8 @@ OPAC: > yes: Include > no: "Don't include" > - "COinS / OpenURL / Z39.88 in OPAC search results. <br/>Warning: Enabling this feature will slow OPAC search response times." >+ - "<br/>If you want to display a link to an OpenURL resolver, look at the following system preferences:" >+ - "<br/><code>OpenURLResolverURL</code>, <code>OPACShowOpenURL</code>, <code>OPACOpenURLItemTypes</code>, <code>OpenURLText<code>, <code>OpenURLImageLocation</code>" > - > - pref: OPACShowUnusedAuthorities > choices: >@@ -533,6 +535,33 @@ OPAC: > type: textarea > syntax: text/html > class: code >+ OpenURL: >+ - >+ - 'Complete URL of OpenURL resolver (starting with <code>http://</code> or <code>https://</code>):' >+ - pref: OpenURLResolverURL >+ class: url >+ - >+ - 'Text of OpenURL links (or image title if OpenURLImageLocation is defined):' >+ - pref: OpenURLText >+ - >+ - 'Location of image for OpenURL links:' >+ - pref: OpenURLImageLocation >+ class: url >+ - '<br />Can be an absolute URL starting with <code>http://</code> or' >+ - '<code>https://</code> or a relative URL' >+ - '<br />Examples:' >+ - '<br />- <code>http://www.example.com/img/openurl.png</code>' >+ - '<br />- <code>/opac-tmpl/bootstrap/images/OpenURL.png</code>' >+ - >+ - pref: OPACShowOpenURL >+ choices: >+ yes: Enable >+ no: Disable >+ - 'display of OpenURL link in OPAC search results and detail page.' >+ - >+ - 'List of item type codes (separated by spaces) for those you want to show the OpenURL link:' >+ - pref: OPACOpenURLItemTypes >+ - '<br />' > Policy: > - > - pref: SearchMyLibraryFirst >diff --git a/koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss b/koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss >index 8d6b967829..e2c7ecd24c 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss >+++ b/koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss >@@ -110,6 +110,10 @@ a { > text-decoration: none; > } > >+ &.OpenURL img { >+ vertical-align: middle; >+ } >+ > &.addtocart { > @extend %initial_icon; > background-position: -5px -262px; /* Cart */ >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl >index 26a307a9dd..13d7174740 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl >@@ -1355,6 +1355,55 @@ > </xsl:for-each> > </xsl:if> > >+ <!-- OpenURL --> >+ <xsl:variable name="OPACShowOpenURL" select="marc:sysprefs/marc:syspref[@name='OPACShowOpenURL']" /> >+ <xsl:variable name="OpenURLImageLocation" select="marc:sysprefs/marc:syspref[@name='OpenURLImageLocation']" /> >+ <xsl:variable name="OpenURLText" select="marc:sysprefs/marc:syspref[@name='OpenURLText']" /> >+ <xsl:variable name="OpenURLResolverURL" select="marc:variables/marc:variable[@name='OpenURLResolverURL']" /> >+ >+ <xsl:if test="$OPACShowOpenURL = 1 and $OpenURLResolverURL != ''"> >+ <xsl:variable name="openurltext"> >+ <xsl:choose> >+ <xsl:when test="$OpenURLText != ''"> >+ <xsl:value-of select="$OpenURLText" /> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:otherwise> >+ </xsl:choose> >+ </xsl:variable> >+ >+ <span class="results_summary"><a> >+ <xsl:attribute name="href"> >+ <xsl:value-of select="$OpenURLResolverURL" /> >+ </xsl:attribute> >+ <xsl:attribute name="title"> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:attribute> >+ <xsl:attribute name="class"> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:attribute> >+ <xsl:if test="$OPACURLOpenInNewWindow='1'"> >+ <xsl:attribute name="target"> >+ <xsl:text>_blank</xsl:text> >+ </xsl:attribute> >+ </xsl:if> >+ <xsl:choose> >+ <xsl:when test="$OpenURLImageLocation != ''"> >+ <img> >+ <xsl:attribute name="src"> >+ <xsl:value-of select="$OpenURLImageLocation" /> >+ </xsl:attribute> >+ </img> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:otherwise> >+ </xsl:choose> >+ </a></span> >+ </xsl:if> >+ <!-- End of OpenURL --> >+ > </xsl:element> > </xsl:template> > >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl >index 7635c0767c..71e53c843e 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl >@@ -444,8 +444,57 @@ > </xsl:for-each> > </xsl:if> > </a> >- <p> > >+ <!-- OpenURL --> >+ <xsl:variable name="OPACShowOpenURL" select="marc:sysprefs/marc:syspref[@name='OPACShowOpenURL']" /> >+ <xsl:variable name="OpenURLImageLocation" select="marc:sysprefs/marc:syspref[@name='OpenURLImageLocation']" /> >+ <xsl:variable name="OpenURLText" select="marc:sysprefs/marc:syspref[@name='OpenURLText']" /> >+ <xsl:variable name="OpenURLResolverURL" select="marc:variables/marc:variable[@name='OpenURLResolverURL']" /> >+ >+ <xsl:if test="$OPACShowOpenURL = 1 and $OpenURLResolverURL != ''"> >+ <xsl:variable name="openurltext"> >+ <xsl:choose> >+ <xsl:when test="$OpenURLText != ''"> >+ <xsl:value-of select="$OpenURLText" /> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:otherwise> >+ </xsl:choose> >+ </xsl:variable> >+ >+ <span class="results_summary"><a> >+ <xsl:attribute name="href"> >+ <xsl:value-of select="$OpenURLResolverURL" /> >+ </xsl:attribute> >+ <xsl:attribute name="title"> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:attribute> >+ <xsl:attribute name="class"> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:attribute> >+ <xsl:if test="$OPACURLOpenInNewWindow='1'"> >+ <xsl:attribute name="target"> >+ <xsl:text>_blank</xsl:text> >+ </xsl:attribute> >+ </xsl:if> >+ <xsl:choose> >+ <xsl:when test="$OpenURLImageLocation != ''"> >+ <img> >+ <xsl:attribute name="src"> >+ <xsl:value-of select="$OpenURLImageLocation" /> >+ </xsl:attribute> >+ </img> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:otherwise> >+ </xsl:choose> >+ </a></span> >+ </xsl:if> >+ <!-- End of OpenURL --> >+ >+ <p> > <!-- Author Statement: Alternate Graphic Representation (MARC 880) --> > <xsl:if test="$display880"> > <xsl:call-template name="m880Select"> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl >index a9779b615b..0487d69521 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl >@@ -443,6 +443,56 @@ > </xsl:for-each> > </span> > </xsl:if> >+ >+ <!-- OpenURL --> >+ <xsl:variable name="OPACShowOpenURL" select="marc:sysprefs/marc:syspref[@name='OPACShowOpenURL']" /> >+ <xsl:variable name="OpenURLImageLocation" select="marc:sysprefs/marc:syspref[@name='OpenURLImageLocation']" /> >+ <xsl:variable name="OpenURLText" select="marc:sysprefs/marc:syspref[@name='OpenURLText']" /> >+ <xsl:variable name="OpenURLResolverURL" select="marc:variables/marc:variable[@name='OpenURLResolverURL']" /> >+ >+ <xsl:if test="$OPACShowOpenURL = 1 and $OpenURLResolverURL != ''"> >+ <xsl:variable name="openurltext"> >+ <xsl:choose> >+ <xsl:when test="$OpenURLText != ''"> >+ <xsl:value-of select="$OpenURLText" /> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:otherwise> >+ </xsl:choose> >+ </xsl:variable> >+ >+ <span class="results_summary"><a> >+ <xsl:attribute name="href"> >+ <xsl:value-of select="$OpenURLResolverURL" /> >+ </xsl:attribute> >+ <xsl:attribute name="title"> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:attribute> >+ <xsl:attribute name="class"> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:attribute> >+ <xsl:if test="$OPACURLOpenInNewWindow='1'"> >+ <xsl:attribute name="target"> >+ <xsl:text>_blank</xsl:text> >+ </xsl:attribute> >+ </xsl:if> >+ <xsl:choose> >+ <xsl:when test="$OpenURLImageLocation != ''"> >+ <img> >+ <xsl:attribute name="src"> >+ <xsl:value-of select="$OpenURLImageLocation" /> >+ </xsl:attribute> >+ </img> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:otherwise> >+ </xsl:choose> >+ </a></span> >+ </xsl:if> >+ <!-- End of OpenURL --> >+ > </xsl:template> > > <xsl:template name="nameABCDQ"> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl >index 9d599f7752..2174d5d935 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl >@@ -85,6 +85,55 @@ > </xsl:for-each> > </xsl:if> > >+ <!-- OpenURL --> >+ <xsl:variable name="OPACShowOpenURL" select="marc:sysprefs/marc:syspref[@name='OPACShowOpenURL']" /> >+ <xsl:variable name="OpenURLImageLocation" select="marc:sysprefs/marc:syspref[@name='OpenURLImageLocation']" /> >+ <xsl:variable name="OpenURLText" select="marc:sysprefs/marc:syspref[@name='OpenURLText']" /> >+ <xsl:variable name="OpenURLResolverURL" select="marc:variables/marc:variable[@name='OpenURLResolverURL']" /> >+ >+ <xsl:if test="$OPACShowOpenURL = 1 and $OpenURLResolverURL != ''"> >+ <xsl:variable name="openurltext"> >+ <xsl:choose> >+ <xsl:when test="$OpenURLText != ''"> >+ <xsl:value-of select="$OpenURLText" /> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:otherwise> >+ </xsl:choose> >+ </xsl:variable> >+ >+ <span class="results_summary"><a> >+ <xsl:attribute name="href"> >+ <xsl:value-of select="$OpenURLResolverURL" /> >+ </xsl:attribute> >+ <xsl:attribute name="title"> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:attribute> >+ <xsl:attribute name="class"> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:attribute> >+ <xsl:if test="$OPACURLOpenInNewWindow='1'"> >+ <xsl:attribute name="target"> >+ <xsl:text>_blank</xsl:text> >+ </xsl:attribute> >+ </xsl:if> >+ <xsl:choose> >+ <xsl:when test="$OpenURLImageLocation != ''"> >+ <img> >+ <xsl:attribute name="src"> >+ <xsl:value-of select="$OpenURLImageLocation" /> >+ </xsl:attribute> >+ </img> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:otherwise> >+ </xsl:choose> >+ </a></span> >+ </xsl:if> >+ <!-- End of OpenURL --> >+ > <xsl:call-template name="tag_title"> > <xsl:with-param name="tag">454</xsl:with-param> > <xsl:with-param name="label">Translation of</xsl:with-param> >diff --git a/opac/opac-search.pl b/opac/opac-search.pl >index e0d3dd6229..eb2728ec9e 100755 >--- a/opac/opac-search.pl >+++ b/opac/opac-search.pl >@@ -581,6 +581,18 @@ $template->param ( QUERY_INPUTS => \@query_inputs ); > ## parse the limit_cgi string and put it into a form suitable for <input>s > my @limit_inputs = $limit_cgi ? _input_cgi_parse($limit_cgi) : (); > >+# OpenURL >+my @OpenURL_itypes; >+if (C4::Context->preference('OPACShowOpenURL')) { >+ @OpenURL_itypes = split( /\s/, C4::Context->preference('OPACOpenURLItemTypes') ); >+ $template->param( >+ OPACShowOpenURL => 1, >+ OpenURLResolverURL => C4::Context->preference('OpenURLResolverURL'), >+ OpenURLText => C4::Context->preference('OpenURLText'), >+ OpenURLImageLocation => C4::Context->preference('OpenURLImageLocation') >+ ); >+} >+ > $template->param ( LIMIT_INPUTS => \@limit_inputs ); > $template->param ( OPACResultsSidebar => C4::Context->preference('OPACResultsSidebar')); > >-- >2.11.0
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 8995
:
13141
|
22753
|
23625
|
23626
|
23627
|
24087
|
24088
|
24089
|
26899
|
26900
|
26901
|
29357
|
29358
|
29359
|
30385
|
30386
|
30387
|
30388
|
30389
|
30390
|
35747
|
35916
|
40647
|
44639
|
48371
|
48372
|
55131
|
55132
|
55133
|
55134
|
55135
|
55136
|
55882
|
64513
|
64514
|
64515
|
64516
|
64517
|
64518
|
64519
|
64532
|
64533
|
64534
|
64535
|
64536
|
64537
|
64538
|
86483
|
86484
|
86485
|
86486
|
86487
|
86488
|
86489
|
86490
|
86491
|
86492
|
86541
|
86542
|
86557
|
86558
|
86559
|
86601
|
86602
|
86603
|
86604
|
86605
|
86606
|
86607
|
86608
|
86609
|
86610
|
88665
|
88666
|
88667
|
88668
|
88669
|
88670
|
88671
|
88672
|
88673
|
88735
|
88736
|
88737
|
88738
|
88739
|
88740
|
88741
|
88742
|
88743
|
88744
| 89012 |
89013
|
89014
|
89015
|
89120