[Koha-patches] [PATCH] Fix for Bug 4885 - Only 1 ISBN shows in non-XSL detail view
Katrin Fischer
Katrin.Fischer.83 at web.de
Thu Jan 13 22:31:09 CET 2011
From: Owen Leonard <oleonard at myacpl.org>
Fixed by doing a pretty dumb copy of GetMarcNotes. Functional,
but it could be there is a more efficient way to do it given
we want one repeating tag rather than a range of tags?
Signed-off-by: Katrin Fischer <Katrin.Fischer.83 at web.de>
- fixed small typo in opac-detail
- corrected isbd punctuation in opac-detail
- tested with 0, 1, 2, 3 isbns in 020, MARC21
---
C4/Biblio.pm | 41 ++++++++++++++++++++
catalogue/detail.pl | 2 +
.../prog/en/modules/catalogue/detail.tmpl | 8 +++-
.../opac-tmpl/prog/en/modules/opac-detail.tmpl | 8 +++-
opac/opac-detail.pl | 2 +
5 files changed, 57 insertions(+), 4 deletions(-)
diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index 879dd0a..232ffb3 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -69,6 +69,7 @@ BEGIN {
&GetMarcControlnumber
&GetMarcNotes
+ &GetMarcISBN
&GetMarcSubjects
&GetMarcBiblio
&GetMarcAuthors
@@ -1277,6 +1278,46 @@ sub GetMarcControlnumber {
return $controlnumber;
}
+=head2 GetMarcISBN
+
+ $marcisbnsarray = GetMarcISBN( $record, $marcflavour );
+
+Get all ISBNs from the MARC record and returns them in an array.
+ISBNs stored in differents places depending on MARC flavour
+
+=cut
+
+sub GetMarcISBN {
+ my ( $record, $marcflavour ) = @_;
+ my $scope;
+ if ( $marcflavour eq "MARC21" ) {
+ $scope = '020';
+ } else { # assume unimarc if not marc21
+ $scope = '010';
+ }
+ my @marcisbns;
+ my $isbn = "";
+ my $tag = "";
+ my $marcisbn;
+ foreach my $field ( $record->field($scope) ) {
+ my $value = $field->as_string();
+ if ( $isbn ne "" ) {
+ $marcisbn = { marcisbn => $isbn, };
+ push @marcisbns, $marcisbn;
+ $isbn = $value;
+ }
+ if ( $isbn ne $value ) {
+ $isbn = $isbn . " " . $value;
+ }
+ }
+
+ if ($isbn) {
+ $marcisbn = { marcisbn => $isbn };
+ push @marcisbns, $marcisbn; #load last tag into array
+ }
+ return \@marcisbns;
+} # end GetMarcISBN
+
=head2 GetMarcNotes
$marcnotesarray = GetMarcNotes( $record, $marcflavour );
diff --git a/catalogue/detail.pl b/catalogue/detail.pl
index e32170c..6ee79e6 100755
--- a/catalogue/detail.pl
+++ b/catalogue/detail.pl
@@ -87,6 +87,7 @@ unless (defined($record)) {
}
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);
@@ -212,6 +213,7 @@ $template->param(
MARCAUTHORS => $marcauthorsarray,
MARCSERIES => $marcseriesarray,
MARCURLS => $marcurlsarray,
+ MARCISBNS => $marcisbnsarray,
subtitle => $subtitle,
itemdata_ccode => $itemfields{ccode},
itemdata_enumchron => $itemfields{enumchron},
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl
index d64227a..6d878b3 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl
@@ -148,8 +148,12 @@ function verify_images() {
<div class="yui-u" style="margin-top: 1em;">
<ul>
- <!-- TMPL_IF name="normalized_isbn" -->
- <li><strong>ISBN:</strong> <!-- TMPL_VAR NAME="normalized_isbn" --></li>
+ <!-- TMPL_IF NAME="MARCISBNS" -->
+ <li><strong>ISBN:</strong><ul><!-- TMPL_LOOP NAME="MARCISBNS" --><li><!-- TMPL_VAR NAME="marcisbn" --></li><!-- /TMPL_LOOP --></ul></li>
+ <!-- TMPL_ELSE -->
+ <!-- TMPL_IF name="normalized_isbn" -->
+ <li><strong>ISBN:</strong> <!-- TMPL_VAR NAME="normalized_isbn" --></li>
+ <!-- /TMPL_IF -->
<!-- /TMPL_IF -->
<!-- TMPL_IF name="issn" -->
<li><strong>ISSN:</strong><!-- TMPL_VAR NAME="issn" --></li>
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
index 25f3a37..2af9584 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
@@ -132,8 +132,12 @@ YAHOO.util.Event.onContentReady("furtherm", function () {
<!-- TMPL_IF NAME="pages" --><span class="results_summary"><span class="label">Physical details:</span> <!-- TMPL_VAR NAME="pages" --> <!-- TMPL_VAR NAME="illus" --> <!-- TMPL_VAR NAME="size" --></span><!-- /TMPL_IF -->
- <!-- TMPL_IF name="normalized_isbn" -->
- <span class="results_summary"><span class="label">ISBN: </span><!-- TMPL_VAR NAME="normalized_isbn" --></span>
+ <!-- TMPL_IF NAME="MARCISBNS" -->
+ <span class="results_summary"><span class="label">ISBN:</span><!-- TMPL_LOOP NAME="MARCISBNS" --><!-- TMPL_VAR NAME="marcisbn" --><!-- TMPL_IF NAME="__LAST__" -->.<!-- TMPL_ELSE -->; <!-- /TMPL_IF --><!-- /TMPL_LOOP --></span>
+ <!-- TMPL_ELSE -->
+ <!-- TMPL_IF name="normalized_isbn" -->
+ <span class="results_summary"><span class="label">ISBN: </span><!-- TMPL_VAR NAME="normalized_isbn" --></span>
+ <!-- /TMPL_IF -->
<!-- /TMPL_IF -->
<!-- TMPL_IF name="issn" -->
<span class="results_summary"><span class="label">ISSN:</span><!-- TMPL_VAR NAME="issn" --></span>
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index 309f01d..9110cca 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -197,6 +197,7 @@ for my $itm (@items) {
my $dbh = C4::Context->dbh;
my $marcflavour = C4::Context->preference("marcflavour");
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);
@@ -209,6 +210,7 @@ my $subtitle = GetRecordValue('subtitle', $record, GetFrameworkCode($bib
MARCAUTHORS => $marcauthorsarray,
MARCSERIES => $marcseriesarray,
MARCURLS => $marcurlsarray,
+ MARCISBNS => $marcisbnsarray,
norequests => $norequests,
RequestOnOpac => C4::Context->preference("RequestOnOpac"),
itemdata_ccode => $itemfields{ccode},
--
1.7.1
More information about the Koha-patches
mailing list