From b81e72b8b451dc5eab97edeef38bad4f6acf509b Mon Sep 17 00:00:00 2001 From: Owen Leonard Date: Thu, 10 Jun 2010 15:28:12 -0400 Subject: [PATCH] Fix for Bug 4885 - Only 1 ISBN shows in non-XSL detail view 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? --- 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() {