From 3a14f95add735adb0a86656b20ce1b1a70368613 Mon Sep 17 00:00:00 2001 From: tipaul Date: Mon, 8 Nov 2004 19:46:11 +0000 Subject: [PATCH] adding links to jump to biblio using an authority --- authorities/detail.pl | 129 +++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 82 deletions(-) diff --git a/authorities/detail.pl b/authorities/detail.pl index 4e7d0e23c1..f797d7c173 100755 --- a/authorities/detail.pl +++ b/authorities/detail.pl @@ -62,6 +62,17 @@ my $authtypecode = &AUTHfind_authtypecode($dbh,$authid); my $tagslib = &AUTHgettagslib($dbh,1,$authtypecode); my $record =AUTHgetauthority($dbh,$authid); +my $count = AUTHcount_usage($authid); + +# find the marc field/subfield used in biblio by this authority +my $sth = $dbh->prepare("select distinct tagfield from marc_subfield_structure where authtypecode=?"); +$sth->execute($authtypecode); +my $biblio_fields; +while (my ($tagfield) = $sth->fetchrow) { + $biblio_fields.= $tagfield."9,"; +} +chop $biblio_fields; + # open template my ($template, $loggedinuser, $cookie) = get_template_and_user({template_name => "authorities/detail.tmpl", @@ -78,93 +89,45 @@ my $tag; # loop through each tab 0 through 9 # for (my $tabloop = 0; $tabloop<=10;$tabloop++) { # loop through each tag - my @fields = $record->fields(); - my @loop_data =(); - foreach my $field (@fields) { - my @subfields_data; - # if tag <10, there's no subfield, use the "@" trick - if ($field->tag()<10) { -# next if ($tagslib->{$field->tag()}->{'@'}->{tab} ne $tabloop); - next if ($tagslib->{$field->tag()}->{'@'}->{hidden}); +my @fields = $record->fields(); +my @loop_data =(); +foreach my $field (@fields) { + my @subfields_data; + # if tag <10, there's no subfield, use the "@" trick + if ($field->tag()<10) { + next if ($tagslib->{$field->tag()}->{'@'}->{hidden}); + my %subfield_data; + $subfield_data{marc_lib}=$tagslib->{$field->tag()}->{'@'}->{lib}; + $subfield_data{marc_value}=$field->data(); + $subfield_data{marc_subfield}='@'; + $subfield_data{marc_tag}=$field->tag(); + push(@subfields_data, \%subfield_data); + } else { + my @subf=$field->subfields; +# loop through each subfield + for my $i (0..$#subf) { + $subf[$i][0] = "@" unless $subf[$i][0]; + next if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{hidden}); my %subfield_data; - $subfield_data{marc_lib}=$tagslib->{$field->tag()}->{'@'}->{lib}; - $subfield_data{marc_value}=$field->data(); - $subfield_data{marc_subfield}='@'; + $subfield_data{marc_lib}=$tagslib->{$field->tag()}->{$subf[$i][0]}->{lib}; + if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{isurl}) { + $subfield_data{marc_value}="$subf[$i][1]"; + } else { + $subfield_data{marc_value}=$subf[$i][1]; + } + $subfield_data{marc_subfield}=$subf[$i][0]; $subfield_data{marc_tag}=$field->tag(); push(@subfields_data, \%subfield_data); - } else { - my @subf=$field->subfields; - # loop through each subfield - for my $i (0..$#subf) { - $subf[$i][0] = "@" unless $subf[$i][0]; -# next if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{tab} ne $tabloop); - next if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{hidden}); - my %subfield_data; - $subfield_data{marc_lib}=$tagslib->{$field->tag()}->{$subf[$i][0]}->{lib}; - if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{isurl}) { - $subfield_data{marc_value}="$subf[$i][1]"; - } else { - $subfield_data{marc_value}=$subf[$i][1]; - } - $subfield_data{marc_subfield}=$subf[$i][0]; - $subfield_data{marc_tag}=$field->tag(); - push(@subfields_data, \%subfield_data); - } - } - if ($#subfields_data>=0) { - my %tag_data; - $tag_data{tag}=$field->tag().' -'. $tagslib->{$field->tag()}->{lib}; - $tag_data{subfield} = \@subfields_data; - push (@loop_data, \%tag_data); } } - $template->param("0XX" =>\@loop_data); -# } -# now, build item tab ! -# the main difference is that datas are in lines and not in columns : thus, we build the first, then the values... -# loop through each tag -# warning : we may have differents number of columns in each row. Thus, we first build a hash, complete it if necessary -# then construct template. -# my @fields = $record->fields(); -# my %witness; #---- stores the list of subfields used at least once, with the "meaning" of the code -# my @big_array; -# foreach my $field (@fields) { -# next if ($field->tag()<10); -# my @subf=$field->subfields; -# my %this_row; -# # loop through each subfield -# for my $i (0..$#subf) { -# next if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{tab} ne 10); -# $witness{$subf[$i][0]} = $tagslib->{$field->tag()}->{$subf[$i][0]}->{lib}; -# $this_row{$subf[$i][0]} =$subf[$i][1]; -# } -# if (%this_row) { -# push(@big_array, \%this_row); -# } -# } -# #fill big_row with missing datas -# foreach my $subfield_code (keys(%witness)) { -# for (my $i=0;$i<=$#big_array;$i++) { -# $big_array[$i]{$subfield_code}=" " unless ($big_array[$i]{$subfield_code}); -# } -# } -# # now, construct template ! -# my @item_value_loop; -# my @header_value_loop; -# for (my $i=0;$i<=$#big_array; $i++) { -# my $items_data; -# foreach my $subfield_code (keys(%witness)) { -# $items_data .="".$big_array[$i]{$subfield_code}.""; -# } -# my %row_data; -# $row_data{item_value} = $items_data; -# push(@item_value_loop,\%row_data); -# } -# foreach my $subfield_code (keys(%witness)) { -# my %header_value; -# $header_value{header_value} = $witness{$subfield_code}; -# push(@header_value_loop, \%header_value); -# } + if ($#subfields_data>=0) { + my %tag_data; + $tag_data{tag}=$field->tag().' -'. $tagslib->{$field->tag()}->{lib}; + $tag_data{subfield} = \@subfields_data; + push (@loop_data, \%tag_data); + } +} +$template->param("0XX" =>\@loop_data); my $authtypes = getauthtypes; my @authtypesloop; @@ -178,6 +141,8 @@ foreach my $thisauthtype (keys %$authtypes) { } $template->param(authid => $authid, + count => $count, + biblio_fields => $biblio_fields, authtypesloop => \@authtypesloop); output_html_with_http_headers $query, $cookie, $template->output; -- 2.39.5