use C4::Branch; # XXX subfield_is_koha_internal_p
use C4::ClassSource;
use C4::ImportBatch;
+use C4::Charset;
use Date::Calc qw(Today);
use MARC::File::USMARC;
}
}
- if ( ref($record) eq undef ) {
+ if ( !defined(ref($record)) ) {
return -1;
}
else {
if ( C4::Context->preference("z3950NormalizeAuthor")
and C4::Context->preference("z3950AuthorAuthFields") )
{
- my ( $tag, $subfield ) = GetMarcFromKohaField("biblio.author");
+ my ( $tag, $subfield ) = GetMarcFromKohaField("biblio.author",'');
# my $summary = C4::Context->preference("z3950authortemplate");
my $auth_fields =
$value =~ s/YYYY/$year/g;
$value =~ s/MM/$month/g;
$value =~ s/DD/$day/g;
+ my $username=(C4::Context->userenv?C4::Context->userenv->{'surname'}:"superlibrarian");
+ $value=~s/user/$username/g;
+
}
my $dbh = C4::Context->dbh;
# it's a thesaurus / authority field
}
elsif ( $tagslib->{$tag}->{$subfield}->{authtypecode} ) {
- if (C4::Context->preference("BiblioAddsAuthorities")) {
+ my $readonly=(C4::Context->preference("BiblioAddsAuthorities")?"":qq(readonly="readonly"));
$subfield_data{marc_value} =
"<input type=\"text\"
id=\"".$subfield_data{id}."\"
tabindex=\"1\"
size=\"67\"
maxlength=\"$max_length\"
- \/>
- <a href=\"#\" class=\"buttonDot\"
- onclick=\"Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=".$tagslib->{$tag}->{$subfield}->{authtypecode}."&index=$subfield_data{id}','$subfield_data{id}'); return false;\" title=\"Tag Editor\">...</a>
+ $readonly\/><a href=\"#\" class=\"buttonDot\"
+ onclick=\"openAuth(this.parentNode.getElementsByTagName('input')[1].id,'".$tagslib->{$tag}->{$subfield}->{authtypecode}."'); return false;\" tabindex=\"1\" title=\"Tag Editor\">...</a>
";
- } else {
- $subfield_data{marc_value} =
- "<input type=\"text\"
- id=\"".$subfield_data{id}."\"
- name=\"".$subfield_data{id}."\"
- value=\"$value\"
- class=\"input_marceditor\"
- tabindex=\"1\"
- size=\"67\"
- maxlength=\"$max_length\"
- readonly=\"readonly\"
- \/>
- <a href=\"#\" class=\"buttonDot\"
- onclick=\"Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=".$tagslib->{$tag}->{$subfield}->{authtypecode}."&index=$subfield_data{id}','$subfield_data{id}'); return false;\" title=\"Tag Editor\">...</a>
- ";
- }
- # it's a plugin field
}
elsif ( $tagslib->{$tag}->{$subfield}->{'value_builder'} ) {
+ # it's a plugin field
# opening plugin. Just check wether we are on a developper computer on a production one
# (the cgidir differs)
size=\"67\"
maxlength=\"$max_length\"
onblur=\"Blur$function_name($index_tag); \" \/>
- <a href=\"#\" class=\"buttonDot\" onclick=\"Clic$function_name('$subfield_data{id}'); return false;\" title=\"Tag Editor\">...</a>
+ <a href=\"#\" class=\"buttonDot\" onclick=\"Clic$function_name('$subfield_data{id}'); return false;\" tabindex=\"1\" title=\"Tag Editor\">...</a>
$javascript";
} else {
warn "Plugin Failed: $plugin";
index => $index_tag,
tag_lib => $tagslib->{$tag}->{lib},
repeatable => $tagslib->{$tag}->{repeatable},
+ mandatory => $tagslib->{$tag}->{mandatory},
subfield_loop => \@subfields_data,
fixedfield => $tag < 10?1:0,
random => CreateKey,
index => $index_tag,
tag_lib => $tagslib->{$tag}->{lib},
repeatable => $tagslib->{$tag}->{repeatable},
+ mandatory => $tagslib->{$tag}->{mandatory},
indicator1 => $indicator1,
indicator2 => $indicator2,
subfield_loop => \@subfields_data,
my $authtypedata=GetAuthType($data->{authtypecode});
next unless $authtypedata;
my $marcrecordauth=MARC::Record->new();
+ if (C4::Context->preference('marcflavour') eq 'MARC21') {
+ $marcrecordauth->leader(' nz a22 o 4500');
+ SetMarcUnicodeFlag($marcrecordauth, 'MARC21');
+ }
my $authfield=MARC::Field->new($authtypedata->{auth_tag_to_report},'','',"a"=>"".$field->subfield('a'));
map { $authfield->add_subfields($_->[0]=>$_->[1]) if ($_->[0]=~/[A-z]/ && $_->[0] ne "a" )} $field->subfields();
$marcrecordauth->insert_fields_ordered($authfield);
+
+ # bug 2317: ensure new authority knows it's using UTF-8; currently
+ # only need to do this for MARC21, as MARC::Record->as_xml_record() handles
+ # automatically for UNIMARC (by not transcoding)
+ # FIXME: AddAuthority() instead should simply explicitly require that the MARC::Record
+ # use UTF-8, but as of 2008-08-05, did not want to introduce that kind
+ # of change to a core API just before the 3.0 release.
+
+ if (C4::Context->preference('marcflavour') eq 'MARC21') {
+ $marcrecordauth->insert_fields_ordered(MARC::Field->new('667','','','a'=>"Machine generated authority record."));
+ my $cite = $record->author() . ", " . $record->title_proper() . ", " . $record->publication_date() . " ";
+ $cite =~ s/^[\s\,]*//;
+ $cite =~ s/[\s\,]*$//;
+ $cite = "Work cat.: (" . C4::Context->preference('MARCOrgCode') . ")". $record->subfield('999','c') . ": " . $cite;
+ $marcrecordauth->insert_fields_ordered(MARC::Field->new('670','','','a'=>$cite));
+ }
+
+ if (C4::Context->preference('marcflavour') eq 'MARC21') {
+ $marcrecordauth->insert_fields_ordered(MARC::Field->new('667','','','a'=>"Machine generated authority record."));
+ my $cite = $record->author() . ", " . $record->title_proper() . ", " . $record->publication_date() . " ";
+ $cite =~ s/^[\s\,]*//;
+ $cite =~ s/[\s\,]*$//;
+ $cite = "Work cat.: (" . C4::Context->preference('MARCOrgCode') . ")". $record->subfield('999','c') . ": " . $cite;
+ $marcrecordauth->insert_fields_ordered(MARC::Field->new('670','','','a'=>$cite));
+ }
+
# warn "AUTH RECORD ADDED : ".$marcrecordauth->as_formatted;
+
my $authid=AddAuthority($marcrecordauth,'',$data->{authtypecode});
$countcreated++;
$field->add_subfields('9'=>$authid);