Bug 8692: Authorities search form does not correspond to current search query
[koha.git] / authorities / detail.pl
index 18d6c6a..4c96434 100755 (executable)
@@ -23,6 +23,7 @@ detail.pl : script to show an authority in MARC format
 
 =head1 SYNOPSIS
 
+=cut
 
 =head1 DESCRIPTION
 
@@ -33,8 +34,6 @@ parameters tables.
 
 =head1 FUNCTIONS
 
-=over 2
-
 =cut
 
 
@@ -51,7 +50,7 @@ use C4::Koha;
 
 our ($tagslib);
 
-sub build_tabs ($$$$$) {
+sub build_tabs {
     my ( $template, $record, $dbh, $encoding,$input ) = @_;
 
     # fill arrays
@@ -107,7 +106,7 @@ sub build_tabs ($$$$$) {
                       my @subf=$field->subfields;
                   # loop through each subfield
                       for my $i (0..$#subf) {
-                        $subf[$i][0] = "@" unless $subf[$i][0];
+                        $subf[$i][0] = "@" unless defined $subf[$i][0];
                         next
                         if (
                             $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{tab}
@@ -173,12 +172,32 @@ 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 $authtypecode = &GetAuthTypeCode($authid);
-$tagslib = &GetTagsLabels(1,$authtypecode);
+my $record=GetAuthority($authid);
+
+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 ;
@@ -201,9 +220,8 @@ if (C4::Context->preference("AuthDisplayHierarchy")){
     'displayhierarchy' =>C4::Context->preference("AuthDisplayHierarchy"),
     'loophierarchies' =>\@loophierarchies,
   );
-} else {
-  $record=GetAuthority($authid);
 }
+
 my $count = CountUsage($authid);
 
 # find the marc field/subfield used in biblio by this authority
@@ -215,24 +233,7 @@ 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
-  build_tabs ($template, $record, $dbh,"",$query);
-
-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;
-}
+build_tabs ($template, $record, $dbh,"",$query);
 
 $template->param(authid => $authid,
                count => $count,
@@ -240,5 +241,7 @@ $template->param(authid => $authid,
                authtypetext => $authtypes->{$authtypecode}{'authtypetext'},
                authtypesloop => \@authtypesloop,
                );
+
+$template->{VARS}->{marcflavour} = C4::Context->preference("marcflavour");
 output_html_with_http_headers $query, $cookie, $template->output;