}
);
+# Extract the tag number from the index
+my $tag_number = $index;
+$tag_number =~ s/^tag_(\d*)_.*$/$1/;
+
# fill arrays
my @subfield_loop;
my ($indicator1, $indicator2);
if ($authid) {
- my $authtypecode = Koha::Authorities->find($authid)->authtypecode;
+ my $auth = Koha::Authorities->find( $authid );
+ my $authtypecode = $auth ? $auth->authtypecode : q{};
my $auth_type = Koha::Authority::Types->find($authtypecode);
my $record = GetAuthority($authid);
my @fields = $record->field( $auth_type->auth_tag_to_report );
}
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') {
- push @subfield_loop, { marc_subfield => '2', marc_values => [ 'aat' ] };
- } elsif ($thes_008_11 eq 's') {
- push @subfield_loop, { marc_subfield => '2', marc_values => [ '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');
- }
+
+ my $controlled_ind = $auth->controlled_indicators({ record => $record, biblio_tag => $tag_number });
+ $indicator1 = $controlled_ind->{ind1};
+ $indicator2 = $controlled_ind->{ind2};
+ if( defined $controlled_ind->{sub2} ) {
+ my $v = $controlled_ind->{sub2};
+ push @subfield_loop, { marc_subfield => '2', marc_values => [ $v ] };
}
-}
-else {
+} else {
# authid is empty => the user want to empty the entry.
$template->param( "clear" => 1 );
}
-# Extract the tag number from the index
-my $tag_number = $index;
-$tag_number =~ s/^tag_(\d*)_.*$/$1/;
-
-# Remove spaces in indicators
-$indicator1 =~ s/\s//g;
-$indicator2 =~ s/\s//g;
-
$template->param(
authid => $authid ? $authid : "",
index => $index,
tagid => $tagid,
+ update_ind1 => defined($indicator1),
indicator1 => $indicator1,
+ update_ind2 => defined($indicator2),
indicator2 => $indicator2,
SUBFIELD_LOOP => \@subfield_loop,
tag_number => $tag_number,
);
output_html_with_http_headers $query, $cookie, $template->output;
-