Bug 12478: allow more granular sorting configuration
[koha.git] / authorities / detail.pl
index 59273c1..1ba280d 100755 (executable)
@@ -4,18 +4,18 @@
 #
 # This file is part of Koha.
 #
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 #
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY 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.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 =head1 NAME
 
@@ -44,13 +44,16 @@ use C4::AuthoritiesMarc;
 use C4::Auth;
 use C4::Context;
 use C4::Output;
-use CGI;
+use CGI qw ( -utf8 );
 use MARC::Record;
 use C4::Koha;
+use Koha::Authorities;
+
+use Koha::Authority::Types;
 
 our ($tagslib);
 
-sub build_tabs ($$$$$) {
+sub build_tabs {
     my ( $template, $record, $dbh, $encoding,$input ) = @_;
 
     # fill arrays
@@ -106,7 +109,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}
@@ -161,49 +164,41 @@ my $query=new CGI;
 my $dbh=C4::Context->dbh;
 
 # open template
-my ($template, $loggedinuser, $cookie)
-               = get_template_and_user({template_name => "authorities/detail.tmpl",
-                            query => $query,
-                            type => "intranet",
-                            authnotrequired => 0,
-                            flagsrequired => {catalogue => 1},
-                            debug => 1,
-                            });
+my ($template, $loggedinuser, $cookie) = get_template_and_user(
+    {
+        template_name   => "authorities/detail.tt",
+        query           => $query,
+        type            => "intranet",
+        authnotrequired => 0,
+        flagsrequired   => { catalogue => 1 },
+        debug           => 1,
+    }
+);
 
 my $authid = $query->param('authid');
 
+my $authtypecode = Koha::Authorities->find($authid)->authtypecode;
+$tagslib = &GetTagsLabels(1,$authtypecode);
 
+# Build list of authtypes for showing them
+my $authority_types = Koha::Authority::Types->search({}, { order_by => ['authtypecode']});
 
-# Using default authtypecode, so all fields are seen
-my $authtypecode = '';
-$tagslib = &GetTagsLabels(1,$authtypecode);
+my $record=GetAuthority($authid);
+
+if (not defined $record) {
+    # authid invalid
+    $template->param ( errauthid => $authid,
+                       unknownauthid => 1,
+                       authority_types => $authority_types, );
+    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 $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
@@ -215,30 +210,17 @@ while (my ($tagfield) = $sth->fetchrow) {
 }
 chop $biblio_fields;
 
+build_tabs ($template, $record, $dbh,"",$query);
 
-# 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;
-}
+$template->param(
+    authid          => $authid,
+    count           => $count,
+    biblio_fields   => $biblio_fields,
+    authtypetext    => $authority_types->find($authtypecode)->authtypetext,
+    authtypecode    => $authtypecode,
+    authority_types => $authority_types,
+);
 
-$template->param(authid => $authid,
-               count => $count,
-               biblio_fields => $biblio_fields,
-               authtypetext => $authtypes->{$authtypecode}{'authtypetext'},
-               authtypesloop => \@authtypesloop,
-               );
+$template->{VARS}->{marcflavour} = C4::Context->preference("marcflavour");
 output_html_with_http_headers $query, $cookie, $template->output;