[Patches] [PATCH] Bug 6129 - [master] this adds an ISSN to serialssolutions URLs
koha-patchbot at kohaaloha.com
koha-patchbot at kohaaloha.com
Thu Dec 22 14:40:02 NZDT 2011
From: Srdjan Jankovic <srdjan at catalyst.net.nz>
Date: Thu, 22 Dec 2011 14:33:54 +1300
Subject: [PATCH] Bug 6129 - [master] this adds an ISSN to serialssolutions URLs
If a URL is a serialssolutions URLs that doesn't already have an ISSN
parameter, this adds one on the OPAC.
---
C4/Biblio.pm | 6 ++++--
basket/basket.pl | 4 ++--
catalogue/detail.pl | 11 +++++++++--
.../prog/en/xslt/MARC21slim2OPACDetail.xsl | 5 ++++-
opac/opac-basket.pl | 2 +-
opac/opac-detail.pl | 14 +++++++-------
6 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index ac78ae3..2f97710 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -1627,7 +1627,7 @@ sub GetMarcAuthors {
=head2 GetMarcUrls
- $marcurls = GetMarcUrls($record,$marcflavour);
+ $marcurls = GetMarcUrls($record,$marcflavour,$issn);
Returns arrayref of URLs from MARC data, suitable to pass to tmpl loop.
Assumes web resources (not uncommon in MARC21 to omit resource type ind)
@@ -1635,7 +1635,7 @@ Assumes web resources (not uncommon in MARC21 to omit resource type ind)
=cut
sub GetMarcUrls {
- my ( $record, $marcflavour ) = @_;
+ my ( $record, $marcflavour, $issn ) = @_;
my @marcurls;
for my $field ( $record->field('856') ) {
@@ -1645,6 +1645,8 @@ sub GetMarcUrls {
}
my @urls = $field->subfield('u');
foreach my $url (@urls) {
+ $url .= "?sid=&ISSN=$issn"
+ if $issn && ($url =~ m/\bserialssolutions\b/o) && ($url !~ m/\bISSN=/o);
my $marcurl;
if ( $marcflavour eq 'MARC21' ) {
my $s3 = $field->subfield('3');
diff --git a/basket/basket.pl b/basket/basket.pl
index 8fc15e4..90c4cf8 100755
--- a/basket/basket.pl
+++ b/basket/basket.pl
@@ -65,8 +65,8 @@ foreach my $biblionumber ( @bibs ) {
my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
my $marcseriesarray = GetMarcSeries ($record,$marcflavour);
- my $marcurlsarray = GetMarcUrls ($record,$marcflavour);
- my @items = GetItemsInfo( $biblionumber );
+ my $marcurlsarray = GetMarcUrls ($record,$marcflavour,$dat->{issn});
+ my @items = GetItemsInfo( $biblionumber, 'opac' );
my $hasauthors = 0;
if($dat->{'author'} || @$marcauthorsarray) {
diff --git a/catalogue/detail.pl b/catalogue/detail.pl
index 580949d..0af8727 100755
--- a/catalogue/detail.pl
+++ b/catalogue/detail.pl
@@ -102,13 +102,20 @@ $template->param(
normalized_isbn => $isbn,
);
+unless (defined($record)) {
+ print $query->redirect("/cgi-bin/koha/errors/404.pl");
+ exit;
+}
+
+my $dat = &GetBiblioData($biblionumber);
+
my $marcnotesarray = GetMarcNotes( $record, $marcflavour );
my $marcisbnsarray = GetMarcISBN( $record, $marcflavour );
my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
my $marcseriesarray = GetMarcSeries($record,$marcflavour);
-my $marcurlsarray = GetMarcUrls ($record,$marcflavour);
-my $marchostsarray = GetMarcHosts($record,$marcflavour);
+my $marcurlsarray = GetMarcUrls ($record,$marcflavour,$dat->{issn});
+my $marchostsarray = GetMarcHosts($record,$marcflavour);
my $subtitle = GetRecordValue('subtitle', $record, $fw);
# Get Branches, Itemtypes and Locations
diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl
index 2d88880..52a692d 100755
--- a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl
+++ b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl
@@ -436,6 +436,7 @@
</xsl:for-each>
</span>
</xsl:if>
+ <xsl:variable name="issn"><xsl:if test="marc:datafield[@tag=022]"><xsl:value-of select="marc:datafield[@tag=022]/marc:subfield[@code='a']"/></xsl:if></xsl:variable>
<!-- Other Title Statement: Alternate Graphic Representation (MARC 880) -->
<xsl:if test="$display880">
@@ -539,7 +540,9 @@
<span class="results_summary online_resources"><span class="label">Online Resources: </span>
<xsl:for-each select="marc:datafield[@tag=856]">
<xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
- <a><xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute>
+ <xsl:variable name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:variable>
+ <!-- <a><xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/><xsl:if test="$issn and matches(marc:subfield[@code='u'], 'serialssolutions') and not matches(marc:subfield[@code='u'], 'ISSN')">?ISSN=<xsl:value-of select="$issn"/></xsl:if></xsl:attribute> -->
+ <a><xsl:attribute name="href"><xsl:value-of select="$href"/><xsl:if test="$issn and contains($href, 'serialssolutions') and not(contains($href, 'ISSN'))">?sid=&ISSN=<xsl:value-of select="$issn"/></xsl:if></xsl:attribute>
<xsl:if test="$OPACURLOpenInNewWindow='1'">
<xsl:attribute name="target">_blank</xsl:attribute>
</xsl:if>
diff --git a/opac/opac-basket.pl b/opac/opac-basket.pl
index 5e92d15..e56509e 100755
--- a/opac/opac-basket.pl
+++ b/opac/opac-basket.pl
@@ -67,7 +67,7 @@ foreach my $biblionumber ( @bibs ) {
my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
my $marcseriesarray = GetMarcSeries ($record,$marcflavour);
- my $marcurlsarray = GetMarcUrls ($record,$marcflavour);
+ my $marcurlsarray = GetMarcUrls ($record,$marcflavour,$dat->{issn});
my @items = &GetItemsLocationInfo( $biblionumber );
my $subtitle = GetRecordValue('subtitle', $record, GetFrameworkCode($biblionumber));
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index f82dde2..1b71c13 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -400,12 +400,12 @@ my $hideitems = 1 if C4::Context->preference('hidelostitems') or scalar(@hiddeni
# Hide items
if ($hideitems) {
for my $itm (@all_items) {
- if ( C4::Context->preference('hidelostitems') ) {
- push @items, $itm unless $itm->{itemlost} or any { $itm->{'itemnumber'} eq $_ } @hiddenitems;
- } else {
- push @items, $itm unless any { $itm->{'itemnumber'} eq $_ } @hiddenitems;
+ if ( C4::Context->preference('hidelostitems') ) {
+ push @items, $itm unless $itm->{itemlost} or any { $itm->{'itemnumber'} eq $_ } @hiddenitems;
+ } else {
+ push @items, $itm unless any { $itm->{'itemnumber'} eq $_ } @hiddenitems;
+ }
}
-}
} else {
# Or not
@items = @all_items;
@@ -525,8 +525,8 @@ my $marcisbnsarray = GetMarcISBN ($record,$marcflavour);
my $marcauthorsarray = GetMarcAuthors ($record,$marcflavour);
my $marcsubjctsarray = GetMarcSubjects($record,$marcflavour);
my $marcseriesarray = GetMarcSeries ($record,$marcflavour);
-my $marcurlsarray = GetMarcUrls ($record,$marcflavour);
-my $marchostsarray = GetMarcHosts($record,$marcflavour);
+my $marcurlsarray = GetMarcUrls ($record,$marcflavour,$dat->{issn});
+my $marchostsarray = GetMarcHosts($record,$marcflavour);
my $subtitle = GetRecordValue('subtitle', $record, GetFrameworkCode($biblionumber));
$template->param(
--
1.6.5
More information about the Patches
mailing list