X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=authorities%2Fdetail.pl;h=64029615b51eaffd616530cbb8339fc401e47b2a;hb=0f9ec8f589e0afee79923570b71078d8c94b8986;hp=8e96b6cc3b27d5b9467ba2f88131a847b892f4a9;hpb=b767f50c8f4d9216db2be82ed8c0b92e170d1db0;p=koha_fer
diff --git a/authorities/detail.pl b/authorities/detail.pl
index 8e96b6cc3b..64029615b5 100755
--- a/authorities/detail.pl
+++ b/authorities/detail.pl
@@ -13,9 +13,9 @@
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
=head1 NAME
@@ -23,6 +23,7 @@ detail.pl : script to show an authority in MARC format
=head1 SYNOPSIS
+=cut
=head1 DESCRIPTION
@@ -33,25 +34,128 @@ parameters tables.
=head1 FUNCTIONS
-=over 2
-
=cut
use strict;
-require Exporter;
+use warnings;
+
use C4::AuthoritiesMarc;
use C4::Auth;
use C4::Context;
use C4::Output;
-use C4::Interface::CGI::Output;
use CGI;
use MARC::Record;
use C4::Koha;
-# use C4::Biblio;
-# use C4::Catalogue;
+our ($tagslib);
+
+sub build_tabs {
+ my ( $template, $record, $dbh, $encoding,$input ) = @_;
+ # fill arrays
+ my @loop_data = ();
+ my $tag;
+
+ # in this array, we will push all the 10 tabs
+ # to avoid having 10 tabs in the template : they will all be in the same BIG_LOOP
+ my @BIG_LOOP;
+ my %seen;
+ my @tab_data; # all tags to display
+
+ foreach my $used ( keys %$tagslib ){
+ push @tab_data,$used if not $seen{$used};
+ $seen{$used}++;
+ }
+
+ my $max_num_tab=9;
+ # loop through each tab 0 through 9
+ for ( my $tabloop = 0 ; $tabloop <= $max_num_tab ; $tabloop++ ) {
+ my @loop_data = (); #innerloop in the template.
+ my $i = 0;
+ foreach my $tag (sort @tab_data) {
+ $i++;
+ next if ! $tag;
+
+ # if MARC::Record is not empty =>use it as master loop, then add missing subfields that should be in the tab.
+ # if MARC::Record is empty => use tab as master loop.
+ if ( $record != -1 && ( $record->field($tag) || $tag eq '000' ) ) {
+ my @fields;
+ if ( $tag ne '000' ) {
+ @fields = $record->field($tag);
+ }
+ else {
+ push @fields, MARC::Field->new('000', $record->leader()); # if tag == 000
+ }
+ # loop through each field
+ foreach my $field (@fields) {
+ my @subfields_data;
+ if ($field->tag()<10) {
+ next
+ if (
+ $tagslib->{ $field->tag() }->{ '@' }->{tab}
+ ne $tabloop );
+ 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 defined $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{short_desc} = substr(
+ $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{lib},
+ 0, 20
+ );
+ $subfield_data{long_desc} =
+ $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{lib};
+ $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(). ' '
+ . C4::Koha::display_marc_indicators($field)
+ . ' - '
+ . $tagslib->{$field->tag()}->{lib};
+ $tag_data{subfield} = \@subfields_data;
+ push (@loop_data, \%tag_data);
+ }
+ }
+ }
+ }
+ if ( $#loop_data >= 0 ) {
+ push @BIG_LOOP, {
+ number => $tabloop,
+ innerloop => \@loop_data,
+ };
+ }
+ }
+ $template->param( singletab => (scalar(@BIG_LOOP)==1), BIG_LOOP => \@BIG_LOOP );
+}
+
+
+#
my $query=new CGI;
my $dbh=C4::Context->dbh;
@@ -68,38 +172,37 @@ my ($template, $loggedinuser, $cookie)
my $authid = $query->param('authid');
+my $authtypecode = GetAuthTypeCode($authid);
+$tagslib = &GetTagsLabels(1,$authtypecode);
+
+# Build list of authtypes for showing them
+my $authtypes = getauthtypes;
+my @authtypesloop;
+
+foreach my $thisauthtype (sort { $authtypes->{$b} cmp $authtypes->{$a} } keys %$authtypes) {
+ my %row =(value => $thisauthtype,
+ selected => $thisauthtype eq $authtypecode,
+ authtypetext => $authtypes->{$thisauthtype}{'authtypetext'},
+ );
+ push @authtypesloop, \%row;
+}
+my $record=GetAuthority($authid);
-my $authtypecode = &GetAuthTypeCode($authid);
-my $tagslib = &GetTagsLabels(1,$authtypecode);
+if (not defined $record) {
+ # authid invalid
+ $template->param ( errauthid => $authid,
+ unknownauthid => 1,
+ authtypesloop => \@authtypesloop );
+ output_html_with_http_headers $query, $cookie, $template->output;
+ exit;
+}
-my $record;
if (C4::Context->preference("AuthDisplayHierarchy")){
- my $trees=BuildUnimarcHierarchies($authid);
- my @trees = split /;/,$trees ;
- push @trees,$trees unless (@trees);
- my @loophierarchies;
- foreach my $tree (@trees){
- my @tree=split /,/,$tree;
- push @tree,$tree unless (@tree);
- my $cnt=0;
- my @loophierarchy;
- foreach my $element (@tree){
- my $cell;
- my $elementdata = GetAuthority($element);
- $record= $elementdata if ($authid==$element);
- push @loophierarchy, BuildUnimarcHierarchy($elementdata,"child".$cnt, $authid);
- $cnt++;
- }
- push @loophierarchies, { 'loopelement' =>\@loophierarchy};
- }
- $template->param(
- 'displayhierarchy' =>C4::Context->preference("AuthDisplayHierarchy"),
- 'loophierarchies' =>\@loophierarchies,
- );
-} else {
- $record=GetAuthority($authid);
+ $template->{VARS}->{'displayhierarchy'} = C4::Context->preference("AuthDisplayHierarchy");
+ $template->{VARS}->{'loophierarchies'} = GenerateHierarchy($authid);
}
+
my $count = CountUsage($authid);
# find the marc field/subfield used in biblio by this authority
@@ -111,78 +214,15 @@ while (my ($tagfield) = $sth->fetchrow) {
}
chop $biblio_fields;
-
-# fill arrays
-my @loop_data =();
-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()}->{'@'}->{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()}->{$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{short_desc} = substr(
- $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{lib},
- 0, 20
- );
- $subfield_data{long_desc} =
- $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{lib};
- $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);
-
-my $authtypes = getauthtypes;
-my @authtypesloop;
-foreach my $thisauthtype (keys %$authtypes) {
- my $selected = 1 if $thisauthtype eq $authtypecode;
- my %row =(value => $thisauthtype,
- selected => $selected,
- authtypetext => $authtypes->{$thisauthtype}{'authtypetext'},
- );
- push @authtypesloop, \%row;
-}
+build_tabs ($template, $record, $dbh,"",$query);
$template->param(authid => $authid,
count => $count,
biblio_fields => $biblio_fields,
authtypetext => $authtypes->{$authtypecode}{'authtypetext'},
authtypesloop => \@authtypesloop,
- intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"),
- intranetstylesheet => C4::Context->preference("intranetstylesheet"),
- IntranetNav => C4::Context->preference("IntranetNav"),
);
+
+$template->{VARS}->{marcflavour} = C4::Context->preference("marcflavour");
output_html_with_http_headers $query, $cookie, $template->output;