From f48ef1527a0c900ef151da9702967621f602b186 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 c4821ba..9b61d27 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -88,6 +88,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; @@ -1396,6 +1397,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 87b9067..a8e7725 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 83dbb0d..9e66444 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl @@ -1315,12 +1315,11 @@ - - + - + @@ -1347,8 +1346,6 @@ - ? - diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl index 9f749c5..2e0eced 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl @@ -447,12 +447,11 @@ - - + - + @@ -479,8 +478,6 @@ - ? - diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl index 6fc39b4..2e327a0 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl @@ -446,12 +446,11 @@ - - + - + @@ -478,8 +477,6 @@ - ? - diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl index 409dd8b..b016bb7 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl @@ -87,12 +87,11 @@ - - + - + @@ -119,8 +118,6 @@ - ? - -- 2.1.4