Bug 8709: Subfield 0 does not show in MARC detail in intranet
[koha.git] / catalogue / MARCdetail.pl
index a7a81b8..72e6709 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/perl
 
 # Copyright 2000-2002 Katipo Communications
+# Copyright 2010 BibLibre
 #
 # This file is part of Koha.
 #
@@ -23,6 +24,7 @@ MARCdetail.pl : script to show a biblio in MARC format
 
 =head1 SYNOPSIS
 
+=cut
 
 =head1 DESCRIPTION
 
@@ -39,11 +41,10 @@ the items attached to the biblio
 
 =head1 FUNCTIONS
 
-=over 2
-
 =cut
 
 use strict;
+#use warnings; FIXME - Bug 2505
 
 use C4::Auth;
 use C4::Context;
@@ -54,6 +55,7 @@ use MARC::Record;
 use C4::Biblio;
 use C4::Items;
 use C4::Acquisition;
+use C4::Members; # to use GetMember
 use C4::Serials;    #uses getsubscriptionsfrombiblionumber GetSubscriptionsFromBiblionumber
 use C4::Search;                # enabled_staff_search_views
 
@@ -68,10 +70,6 @@ my $popup        =
   ;    # if set to 1, then don't insert links, it's just to show the biblio
 my $subscriptionid = $query->param('subscriptionid');
 
-my $tagslib = &GetMarcStructure(1,$frameworkcode);
-
-my $record = GetMarcBiblio($biblionumber);
-my $biblio = GetBiblioData($biblionumber);
 # open template
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {
@@ -84,35 +82,51 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     }
 );
 
+my $record = GetMarcBiblio($biblionumber);
+$template->param( ocoins => GetCOinSBiblio($record) );
+
+if ( not defined $record ) {
+    # biblionumber invalid -> report and exit
+    $template->param( unknownbiblionumber => 1,
+                biblionumber => $biblionumber
+    );
+    output_html_with_http_headers $query, $cookie, $template->output;
+    exit;
+}
+
+my $tagslib = &GetMarcStructure(1,$frameworkcode);
+my $biblio = GetBiblioData($biblionumber);
+
+if($query->cookie("holdfor")){ 
+    my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor"));
+    $template->param(
+        holdfor => $query->cookie("holdfor"),
+        holdfor_surname => $holdfor_patron->{'surname'},
+        holdfor_firstname => $holdfor_patron->{'firstname'},
+        holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+    );
+}
+
 #count of item linked
 my $itemcount = GetItemsCount($biblionumber);
 $template->param( count => $itemcount,
                                        bibliotitle => $biblio->{title}, );
 
-#Getting the list of all frameworks
-my $queryfwk =
-  $dbh->prepare("select frameworktext, frameworkcode from biblio_framework");
-$queryfwk->execute;
-my %select_fwk;
-my @select_fwk;
-my $curfwk;
-push @select_fwk, "Default";
-$select_fwk{"Default"} = "Default";
-
-while ( my ( $description, $fwk ) = $queryfwk->fetchrow ) {
-    push @select_fwk, $fwk;
-    $select_fwk{$fwk} = $description;
+# Getting the list of all frameworks
+# get framework list
+my $frameworks = getframeworks;
+my @frameworkcodeloop;
+foreach my $thisframeworkcode ( keys %$frameworks ) {
+    my %row = (
+        value         => $thisframeworkcode,
+        frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'},
+    );
+    if ($frameworkcode eq $thisframeworkcode){
+        $row{'selected'}= 1;
+        }
+    push @frameworkcodeloop, \%row;
 }
-$curfwk=$frameworkcode;
-my $framework=CGI::scrolling_list( -name     => 'Frameworks',
-            -id => 'Frameworks',
-            -default => $curfwk,
-            -OnChange => 'Changefwk(this);',
-            -values   => \@select_fwk,
-            -labels   => \%select_fwk,
-            -size     => 1,
-            -multiple => 0 );
-$template->param(framework => $framework);
+$template->param( frameworkcodeloop => \@frameworkcodeloop, );
 # fill arrays
 my @loop_data = ();
 my $tag;
@@ -163,7 +177,7 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) {
 
             # 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->{ $fields[$x_i]->tag() }->{ $subf[$i][0] }->{tab}
@@ -236,7 +250,7 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) {
             undef @subfields_data;
         }
     }
-    $template->param( $tabloop . "XX" => \@loop_data );
+    $template->param( "tab" . $tabloop . "XX" => \@loop_data );
 }
 
 # now, build item tab !