Bug 14306: Show URL from MARC21 field 555$u under Title Notes/Descriptions
This patch includes: [1] Add some logic to GetMarcNotes to embed the contents of MARC21 field 555$u in a html anchor tag. [2] Add a unit test for GetMarcNotes in Biblio.t [3] Remove calls to GetMarcNotes from sendbasket.pl (opac and staff). A closer look revealed that the data was not used; the notes in the mail of sendbasket are taken from GetBiblioData. Test plan: [1] Edit a record. Add one or two URLS in 555$u. Add something in 500$a too. [2] Check if you can click the URLs in opac and staff detail tab Notes or Descriptions. [3] Run the unit test t/db../Biblio.t [4] Add something in the cart. Click More Details and send the cart. Verify that you have something in Notes (from 500$a). Signed-off-by: Marc Veron <veron@veron.ch> Followed test plan. Works as expected. QA tools OK. Tested with all patches together, works as expected Signed-off-by: Marc Véron <veron@veron.ch> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Brendan A Gallagher <brendan@bywatersolutions.com>
This commit is contained in:
parent
6f25627519
commit
caae161a4e
4 changed files with 24 additions and 22 deletions
24
C4/Biblio.pm
24
C4/Biblio.pm
|
@ -1816,22 +1816,18 @@ sub GetMarcNotes {
|
|||
my %blacklist = map { $_ => 1 } split(/,/,C4::Context->preference('NotesBlacklist'));
|
||||
foreach my $field ( $record->field($scope) ) {
|
||||
my $tag = $field->tag();
|
||||
if (!$blacklist{$tag}) {
|
||||
my $value = $field->as_string();
|
||||
if ( $note ne "" ) {
|
||||
$marcnote = { marcnote => $note, };
|
||||
push @marcnotes, $marcnote;
|
||||
$note = $value;
|
||||
}
|
||||
if ( $note ne $value ) {
|
||||
$note = $note . " " . $value;
|
||||
next if $blacklist{$tag};
|
||||
|
||||
my $value = $field->as_string();
|
||||
if( $marcflavour ne 'UNIMARC' && $tag =~ /555/ ) {
|
||||
my @sub= $field->subfield('u');
|
||||
foreach my $s (@sub) {
|
||||
next if $s !~ /^http/;
|
||||
my $i= index( $value, $s);
|
||||
$value= substr( $value,0, $i) . "<a href=\"$s\" target=\"_blank\">$s</a>" . substr( $value, $i + length($s) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($note) {
|
||||
$marcnote = { marcnote => $note };
|
||||
push @marcnotes, $marcnote; #load last tag into array
|
||||
push @marcnotes, { marcnote => $value };
|
||||
}
|
||||
return \@marcnotes;
|
||||
} # end GetMarcNotes
|
||||
|
|
|
@ -73,7 +73,6 @@ if ( $email_add ) {
|
|||
my $dat = GetBiblioData($biblionumber);
|
||||
next unless $dat;
|
||||
my $record = GetMarcBiblio($biblionumber, 1);
|
||||
my $marcnotesarray = GetMarcNotes( $record, $marcflavour );
|
||||
my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
|
||||
my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
|
||||
|
||||
|
@ -85,7 +84,6 @@ if ( $email_add ) {
|
|||
}
|
||||
|
||||
|
||||
$dat->{MARCNOTES} = $marcnotesarray;
|
||||
$dat->{MARCSUBJCTS} = $marcsubjctsarray;
|
||||
$dat->{MARCAUTHORS} = $marcauthorsarray;
|
||||
$dat->{HASAUTHORS} = $hasauthors;
|
||||
|
|
|
@ -86,7 +86,6 @@ if ( $email_add ) {
|
|||
my $dat = GetBiblioData($biblionumber);
|
||||
next unless $dat;
|
||||
my $record = GetMarcBiblio($biblionumber, 1);
|
||||
my $marcnotesarray = GetMarcNotes( $record, $marcflavour );
|
||||
my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
|
||||
my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
|
||||
|
||||
|
@ -98,7 +97,6 @@ if ( $email_add ) {
|
|||
}
|
||||
|
||||
|
||||
$dat->{MARCNOTES} = $marcnotesarray;
|
||||
$dat->{MARCSUBJCTS} = $marcsubjctsarray;
|
||||
$dat->{MARCAUTHORS} = $marcauthorsarray;
|
||||
$dat->{HASAUTHORS} = $hasauthors;
|
||||
|
|
|
@ -200,7 +200,6 @@ sub run_tests {
|
|||
"(GetMarcISBN) Corretly retrieves ISBN #". ($i + 1));
|
||||
}
|
||||
|
||||
|
||||
is( GetMarcPrice( $record_for_isbn, $marcflavour ), 100,
|
||||
"GetMarcPrice returns the correct value");
|
||||
my $newincbiblioitemnumber=$biblioitemnumber+1;
|
||||
|
@ -216,6 +215,17 @@ sub run_tests {
|
|||
$biblioitemnumbertotest = $updatedrecord->field($biblioitem_tag)->subfield($biblioitem_subfield);
|
||||
}
|
||||
is ($newincbiblioitemnumber, $biblioitemnumbertotest);
|
||||
|
||||
# test for GetMarcNotes
|
||||
my $a1= GetMarcNotes( $marc_record, $marcflavour );
|
||||
my $field2 = MARC::Field->new( $marcflavour eq 'UNIMARC'? 300: 555, 0, '', a=> 'Some text', u=> 'http://url-1.com', u=> 'nohttp://something_else' );
|
||||
$marc_record->append_fields( $field2 );
|
||||
my $a2= GetMarcNotes( $marc_record, $marcflavour );
|
||||
my $last= @$a2? $a2->[@$a2-1]->{marcnote}: '';
|
||||
is( @$a2 == @$a1 + 1 && (
|
||||
( $marcflavour eq 'UNIMARC' && $last eq $field2->as_string() ) ||
|
||||
( $marcflavour ne 'UNIMARC' && $last =~ /\<a href=/ )),
|
||||
1, 'Test for GetMarcNotes' );
|
||||
}
|
||||
|
||||
sub mock_marcfromkohafield {
|
||||
|
@ -282,19 +292,19 @@ sub create_issn_field {
|
|||
}
|
||||
|
||||
subtest 'MARC21' => sub {
|
||||
plan tests => 28;
|
||||
plan tests => 29;
|
||||
run_tests('MARC21');
|
||||
$dbh->rollback;
|
||||
};
|
||||
|
||||
subtest 'UNIMARC' => sub {
|
||||
plan tests => 28;
|
||||
plan tests => 29;
|
||||
run_tests('UNIMARC');
|
||||
$dbh->rollback;
|
||||
};
|
||||
|
||||
subtest 'NORMARC' => sub {
|
||||
plan tests => 28;
|
||||
plan tests => 29;
|
||||
run_tests('NORMARC');
|
||||
$dbh->rollback;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue