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 <bgkriegel@gmail.com> Comment: work as described, testing in comments 9 and 12. No errors. Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> 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 <gmc@esilibrary.com>
This commit is contained in:
parent
a36b3ad43a
commit
129c974fdd
|
|
@ -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,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue