various authorities fixes
* improve generation of summaries for MARC21 authorities * fix search syntax for link to display bibs linked to a given authority * in addbiblio.pl's BiblioAddAuthorities, check all headings, not just the first of each tag Signed-off-by: Chris Cormack <crc@liblime.com> Signed-off-by: Joshua Ferraro <jmf@liblime.com>
This commit is contained in:
parent
388c60bff7
commit
fa480ea4f3
|
|
@ -791,7 +791,12 @@ sub BuildSummary{
|
|||
my @fields = $record->fields();
|
||||
my $reported_tag;
|
||||
# if the library has a summary defined, use it. Otherwise, build a standard one
|
||||
if ($summary) {
|
||||
# FIXME - it appears that the summary field in the authority frameworks
|
||||
# can work as a display template. However, this doesn't
|
||||
# suit the MARC21 version, so for now the "templating"
|
||||
# feature will be enabled only for UNIMARC for backwards
|
||||
# compatibility.
|
||||
if ($summary and C4::Context->preference('marcflavour') eq 'UNIMARC') {
|
||||
my @fields = $record->fields();
|
||||
# $reported_tag = '$9'.$result[$counter];
|
||||
foreach my $field (@fields) {
|
||||
|
|
@ -868,7 +873,12 @@ sub BuildSummary{
|
|||
$summary.= '<p><div class="label">'.$seeheading.'</div></p>' if ($seeheading);
|
||||
} else {
|
||||
# construct MARC21 summary
|
||||
# FIXME - looping over 1XX is questionable
|
||||
# since MARC21 authority should have only one 1XX
|
||||
foreach my $field ($record->field('1..')) {
|
||||
next if "152" eq $field->tag(); # FIXME - 152 is not a good tag to use
|
||||
# in MARC21 -- purely local tags really ought to be
|
||||
# 9XX
|
||||
if ($record->field('100')) {
|
||||
$heading.= $field->as_string('abcdefghjklmnopqrstvxyz68');
|
||||
} elsif ($record->field('110')) {
|
||||
|
|
@ -902,14 +912,12 @@ sub BuildSummary{
|
|||
}
|
||||
} #See From
|
||||
foreach my $field ($record->field('4..')) {
|
||||
$seeheading.= " ".$field->as_string()."<br />";
|
||||
$seeheading.= " <i>see:</i> ".$seeheading."<br />";
|
||||
$seeheading.= "<br /> <i>used for/see from:</i> ".$field->as_string();
|
||||
} #See Also
|
||||
foreach my $field ($record->field('5..')) {
|
||||
$altheading.= " <i>see also:</i> ".$field->as_string()."<br />";
|
||||
$altheading.= " ".$field->as_string()."<br />";
|
||||
$altheading.= " <i>see also:</i> ".$altheading."<br />";
|
||||
$altheading.= "<br /> <i>see also:</i> ".$field->as_string();
|
||||
}
|
||||
$summary .= ": ";
|
||||
$summary.=$heading.$seeheading.$altheading;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -662,18 +662,18 @@ AND (authtypecode IS NOT NULL AND authtypecode<>\"\")|);
|
|||
$query->execute($frameworkcode);
|
||||
my ($countcreated,$countlinked);
|
||||
while (my $data=$query->fetchrow_hashref){
|
||||
if ($record->field($data->{tagfield})){
|
||||
next if ($record->subfield($data->{tagfield},'3')||$record->subfield($data->{tagfield},'9'));
|
||||
foreach my $field ($record->field($data->{tagfield})){
|
||||
next if ($field->subfield('3')||$field->subfield('9'));
|
||||
# No authorities id in the tag.
|
||||
# Search if there is any authorities to link to.
|
||||
my $query='at='.$data->{authtypecode}.' ';
|
||||
map {$query.= " and he,ext=".$_->[1] if ($_->[0]=~/[A-z]/)} $record->field($data->{tagfield})->subfields();
|
||||
map {$query.= " and he,ext=".$_->[1] if ($_->[0]=~/[A-z]/)} $field->subfields();
|
||||
warn $query;
|
||||
my ($error,$results)=SimpleSearch($query,"authorityserver");
|
||||
# there is only 1 result
|
||||
if (scalar(@$results)==1) {
|
||||
my $marcrecord = MARC::File::USMARC::decode($results->[0]);
|
||||
$record->field($data->{tagfield})->add_subfields('9'=>$marcrecord->field('001')->data);
|
||||
$field->add_subfields('9'=>$marcrecord->field('001')->data);
|
||||
$countlinked++;
|
||||
}elsif (scalar(@$results)>1) {
|
||||
#More than One result
|
||||
|
|
@ -687,12 +687,12 @@ AND (authtypecode IS NOT NULL AND authtypecode<>\"\")|);
|
|||
###NOTICE : This can be a problem. We should also look into other types and rejected forms.
|
||||
my $authtypedata=GetAuthType($data->{authtypecode});
|
||||
my $marcrecordauth=MARC::Record->new();
|
||||
my $field=MARC::Field->new($authtypedata->{auth_tag_to_report},'','',"a"=>"".$record->subfield($data->{tagfield},'a'));
|
||||
map { $field->add_subfields($_->[0]=>$_->[1]) if ($_->[0]=~/[A-z]/ && $_->[0] ne "a" )} $record->field($data->{tagfield})->subfields();
|
||||
$marcrecordauth->insert_fields_ordered($field);
|
||||
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);
|
||||
my $authid=AddAuthority($marcrecordauth,'',$data->{authtypecode});
|
||||
$countcreated++;
|
||||
$record->field($data->{tagfield})->add_subfields('9'=>$authid);
|
||||
$field->add_subfields('9'=>$authid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ function searchauthority() {
|
|||
<td><a href="detail.pl?authid=<!-- TMPL_VAR NAME="authid" -->"><!-- TMPL_VAR NAME="summary" --></a></td>
|
||||
<!-- TMPL_UNLESS name="isEDITORS" -->
|
||||
<td>
|
||||
<a href="../catalogue/search.pl?type=intranet&op=do_search&q=an=<!--TMPL_VAR Name="authid" -->" class="button"><!-- TMPL_VAR NAME="used" --> biblio(s)</a>
|
||||
<a href="../catalogue/search.pl?type=intranet&op=do_search&idx=an&q=<!--TMPL_VAR Name="authid" -->" class="button"><!-- TMPL_VAR NAME="used" --> biblio(s)</a>
|
||||
</td>
|
||||
<!-- /TMPL_UNLESS -->
|
||||
<td>
|
||||
|
|
|
|||
Loading…
Reference in New Issue