From 1b51bb9ff471dbe1bccedcfaefc56256d8c8d8cc Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Fri, 2 Sep 2016 15:55:11 +0200 Subject: [PATCH] Bug 8995: Fix URL generation when the URL in syspref has a query part Signed-off-by: Magnus Enger --- C4/Biblio.pm | 21 +++++++++++++++++++++ C4/XSLT.pm | 3 ++- .../bootstrap/en/xslt/MARC21slim2OPACDetail.xsl | 7 ++----- .../bootstrap/en/xslt/MARC21slim2OPACResults.xsl | 7 ++----- .../bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl | 7 ++----- .../bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl | 7 ++----- 6 files changed, 31 insertions(+), 21 deletions(-) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 8ac5096..522bae5 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -28,6 +28,7 @@ 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; @@ -1470,6 +1471,26 @@ sub GetCOinSBiblio { 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 791d7f3..d0ea0ab 100644 --- a/C4/XSLT.pm +++ b/C4/XSLT.pm @@ -250,7 +250,8 @@ sub XSLTParse4Display { my ($biblio) = GetBiblioItemByBiblioNumber($biblionumber); my @itypes = split( /\s/, C4::Context->preference('OPACOpenURLItemTypes') ); if (grep /^$biblio->{itemtype}$/, @itypes) { - $variables->{COinS} = C4::Biblio::GetCOinSBiblio($orig_record); + $variables->{OpenURLResolverURL} = + C4::Biblio::GetOpenURLResolverURL($orig_record); } } my $varxml = "\n"; diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl index 10a78fb..3f3ac3b 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl @@ -1249,12 +1249,11 @@ - - + - + @@ -1281,8 +1280,6 @@ - ? - diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl index 168e497..53f9f54 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl @@ -446,12 +446,11 @@ - - + - + @@ -478,8 +477,6 @@ - ? - diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl index b24a459..9cf3554 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl @@ -445,12 +445,11 @@ - - + - + @@ -477,8 +476,6 @@ - ? - diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl index cdf56df..2cebcd0 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl @@ -86,12 +86,11 @@ - - + - + @@ -118,8 +117,6 @@ - ? - -- 2.1.4