From ae996b8ae3413b031a7a7f9f061ab25c42702480 Mon Sep 17 00:00:00 2001 From: Janusz Kaczmarek Date: Mon, 22 Apr 2013 20:28:08 +0300 Subject: [PATCH] Bug 5262: make authority plugin copy indicators to bib record With this patch Koha should correctly copy indicators (and create $2 subfield in MARC 21 if need) from the chosen authority record to the edited bibliographic record (according to discussion in bugzilla). UNIMARC and MARC 21 flavors are covered. Signed-off-by: Bernardo Gonzalez Kriegel Comment: work as described, testing in comments 9 and 12. No errors. Signed-off-by: Katrin Fischer Passes QA script and tests. Tested functionality repeating some of the tests noted by Bernardo - checking mostly 1xx, 490, and 7xx. Signed-off-by: Galen Charlton (cherry picked from commit 129c974fdde0dc62e568f7aa01c4a0796ae150ae) Signed-off-by: Tomas Cohen Arazi (cherry picked from commit 2f4839c3ff22edab560b15e6bafa1a308a32c6a6) Signed-off-by: Bernardo Gonzalez Kriegel (cherry picked from commit 2f4839c3ff22edab560b15e6bafa1a308a32c6a6) --- authorities/blinddetail-biblio-search.pl | 43 +++++++++++++++++++ .../authorities/blinddetail-biblio-search.tt | 3 ++ 2 files changed, 46 insertions(+) diff --git a/authorities/blinddetail-biblio-search.pl b/authorities/blinddetail-biblio-search.pl index 6b3d122b87..7bfe09ee14 100755 --- a/authorities/blinddetail-biblio-search.pl +++ b/authorities/blinddetail-biblio-search.pl @@ -77,6 +77,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( # fill arrays my @subfield_loop; +my ($indicator1, $indicator2); if ($authid) { my @fields = $record->field( $auth_type->{auth_tag_to_report} ); my $repet = ($query->param('repet') || 1) - 1; @@ -99,6 +100,46 @@ if ($authid) { } push( @subfield_loop, { marc_subfield => 'w', marc_values => $relationship } ) if ( $relationship ); + if (C4::Context->preference('marcflavour') eq 'UNIMARC') { + $indicator1 = $field->indicator('1'); + $indicator2 = $field->indicator('2'); + } elsif (C4::Context->preference('marcflavour') eq 'MARC21') { + my $tag_from = $auth_type->{auth_tag_to_report}; + my $tag_to = $index; + $tag_to =~ s/^tag_(\d*)_.*$/$1/; + if ($tag_to =~ /^6/) { # subject heading + my %thes_mapping = qw / a 0 + b 1 + c 2 + d 3 + k 5 + n 4 + r 7 + s 7 + v 6 + z 7 + | 4 /; + my $thes_008_11 = ''; + $thes_008_11 = substr($record->field('008')->data(), 11, 1) if $record->field('008')->data(); + $indicator2 = defined $thes_mapping{$thes_008_11} ? $thes_mapping{$thes_008_11} : $thes_008_11; + if ($indicator2 eq '7') { + if ($thes_008_11 eq 'r') { + $subfields{'2'} = ['aat']; + } elsif ($thes_008_11 eq 's') { + $subfields{'2'} = ['sears']; + } + } + } + if ($tag_from eq '130') { # unified title -- the special case + if ($tag_to eq '830' || $tag_to eq '240') { + $indicator2 = $field->indicator('2'); + } else { + $indicator1 = $field->indicator('2'); + } + } else { + $indicator1 = $field->indicator('1'); + } + } } else { # authid is empty => the user want to empty the entry. @@ -113,6 +154,8 @@ $template->param( authid => $authid ? $authid : "", index => $index, tagid => $tagid, + indicator1 => $indicator1, + indicator2 => $indicator2, SUBFIELD_LOOP => \@subfield_loop, tag_number => $tag_number, ); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt index 4a3cb86497..c95a29b0d9 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt @@ -81,6 +81,9 @@ [% END %] ); [% END %] + var indicators = field_start.getElementsByClassName('indicator flat'); + indicators[0].value="[% indicator1 %]"; + indicators[1].value="[% indicator2 %]"; [% END %] // browse all its subfields (clear and $9) -- 2.39.5