X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=catalogue%2FMARCdetail.pl;h=04900764029f3c7ad7d503592d3da8756ed8422e;hb=b93e6df3a1b7051bc92220cf6bd829c2229bfa70;hp=de2735d0e47eb6672b04043d1a462eb02ba268a1;hpb=624be1b1a9584f53925a40afb70e7a05014984a4;p=koha_fer diff --git a/catalogue/MARCdetail.pl b/catalogue/MARCdetail.pl index de2735d0e4..0490076402 100755 --- a/catalogue/MARCdetail.pl +++ b/catalogue/MARCdetail.pl @@ -1,6 +1,7 @@ #!/usr/bin/perl # Copyright 2000-2002 Katipo Communications +# Copyright 2010 BibLibre # # This file is part of Koha. # @@ -13,9 +14,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 +24,7 @@ MARCdetail.pl : script to show a biblio in MARC format =head1 SYNOPSIS +=cut =head1 DESCRIPTION @@ -39,12 +41,11 @@ the items attached to the biblio =head1 FUNCTIONS -=over 2 - =cut use strict; -require Exporter; +#use warnings; FIXME - Bug 2505 + use C4::Auth; use C4::Context; use C4::Output; @@ -52,44 +53,12 @@ use CGI; use C4::Koha; 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 -#---- Internal function --- -sub get_authorised_value_desc ($$$$$$) { - my ( $tagslib, $tag, $subfield, $value, $framework, $dbh ) = @_; - - #---- branch - if ( $tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) { - - # return GetBranchDetail($value)->{branchname}; - } - - #---- itemtypes - if ( $tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "itemtypes" ) { - - # my $itemtypedef = getitemtypeinfo($itemtype); - # return $itemtypedef->{description}; - } - - #---- "true" authorized value - my $category = $tagslib->{$tag}->{$subfield}->{'authorised_value'}; - - if ( $category ne "" ) { - my $sth = - $dbh->prepare( -"select lib from authorised_values where category = ? and authorised_value = ?" - ); - $sth->execute( $category, $value ); - my $data = $sth->fetchrow_hashref; - return $data->{'lib'}; - } - else { - return $value; # if nothing is found return the original value - } -} - -#--------- my $query = new CGI; my $dbh = C4::Context->dbh; @@ -101,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); - # open template my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { @@ -117,34 +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); - -#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; +$template->param( count => $itemcount, + bibliotitle => $biblio->{title}, ); + +# 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; @@ -159,7 +141,7 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { # deal with leader unless ( $tagslib->{'000'}->{'@'}->{tab} ne $tabloop ) - { # or ($tagslib->{'000'}->{'@'}->{hidden}==(-7|-4|-3|-2|2|3|5|8))) { + { # or ($tagslib->{'000'}->{'@'}->{hidden} =~ /-7|-4|-3|-2|2|3|5|8/ )) { my %subfield_data; $subfield_data{marc_lib} = $tagslib->{'000'}->{'@'}->{lib}; $subfield_data{marc_value} = $record->leader(); @@ -181,7 +163,7 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { next if ( $tagslib->{ $fields[$x_i]->tag() }->{'@'}->{tab} ne $tabloop ); - next if ( $tagslib->{ $fields[$x_i]->tag() }->{'@'}->{hidden} ); + next if ( $tagslib->{ $fields[$x_i]->tag() }->{'@'}->{hidden} =~ /-7|-4|-3|-2|2|3|5|8/); my %subfield_data; $subfield_data{marc_lib} = $tagslib->{ $fields[$x_i]->tag() }->{'@'}->{lib}; @@ -202,12 +184,9 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { ne $tabloop ); next if ( $tagslib->{ $fields[$x_i]->tag() }->{ $subf[$i][0] } - ->{hidden} ); + ->{hidden} =~ /-7|-4|-3|-2|2|3|5|8/); my %subfield_data; - $subfield_data{short_desc} = substr( - $tagslib->{ $fields[$x_i]->tag() }->{ $subf[$i][0] }->{lib}, - 0, 20 - ); + $subfield_data{short_desc} = $tagslib->{ $fields[$x_i]->tag() }->{ $subf[$i][0] }->{lib}; $subfield_data{long_desc} = $tagslib->{ $fields[$x_i]->tag() }->{ $subf[$i][0] }->{lib}; $subfield_data{link} = @@ -217,15 +196,15 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { if ( $tagslib->{ $fields[$x_i]->tag() }->{ $subf[$i][0] } ->{isurl} ) { - $subfield_data{marc_value} = - "$subf[$i][1]"; + $subfield_data{marc_value} = $subf[$i][1]; + $subfield_data{is_url} = 1; } elsif ( $tagslib->{ $fields[$x_i]->tag() }->{ $subf[$i][0] } ->{kohafield} eq "biblioitems.isbn" ) { # warn " tag : ".$tagslib->{$fields[$x_i]->tag()}." subfield :".$tagslib->{$fields[$x_i]->tag()}->{$subf[$i][0]}. "ISBN : ".$subf[$i][1]."PosttraitementISBN :".DisplayISBN($subf[$i][1]); - $subfield_data{marc_value} = DisplayISBN( $subf[$i][1] ); + $subfield_data{marc_value} = $subf[$i][1]; } else { if ( $tagslib->{ $fields[$x_i]->tag() }->{ $subf[$i][0] } @@ -234,8 +213,9 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { $subfield_data{authority} = $fields[$x_i]->subfield(9); } $subfield_data{marc_value} = - get_authorised_value_desc( $tagslib, $fields[$x_i]->tag(), - $subf[$i][0], $subf[$i][1], '', $dbh ); + GetAuthorisedValueDesc( $fields[$x_i]->tag(), + $subf[$i][0], $subf[$i][1], '', $tagslib) || $subf[$i][1]; + } $subfield_data{marc_subfield} = $subf[$i][0]; $subfield_data{marc_tag} = $fields[$x_i]->tag(); @@ -244,11 +224,11 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { } if ( $#subfields_data == 0 ) { $subfields_data[0]->{marc_lib} = ''; - $subfields_data[0]->{marc_subfield} = ''; +# $subfields_data[0]->{marc_subfield} = ''; } - if ( $#subfields_data >= 0 ) { + if ( $#subfields_data >= 0) { my %tag_data; - if ( $fields[$x_i]->tag() eq $fields[ $x_i - 1 ]->tag() ) { + if ( $fields[$x_i]->tag() eq $fields[ $x_i - 1 ]->tag() && (C4::Context->preference('LabelMARCView') eq 'economical')) { $tag_data{tag} = ""; } else { @@ -257,7 +237,10 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { } else { $tag_data{tag} = - $fields[$x_i]->tag() . ' -' + $fields[$x_i]->tag() + . ' ' + . C4::Koha::display_marc_indicators($fields[$x_i]) + . ' - ' . $tagslib->{ $fields[$x_i]->tag() }->{lib}; } } @@ -267,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 ! @@ -279,6 +262,7 @@ my @fields = $record->fields(); my %witness ; #---- stores the list of subfields used at least once, with the "meaning" of the code my @big_array; +my $norequests = 1; foreach my $field (@fields) { next if ( $field->tag() < 10 ); my @subf = $field->subfields; @@ -287,15 +271,18 @@ foreach my $field (@fields) { # loop through each subfield for my $i ( 0 .. $#subf ) { next if ( $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{tab} ne 10 ); - next if ( $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{hidden} ); + next if ( $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{hidden} =~ /-7|-4|-3|-2|2|3|5|8/); $witness{ $subf[$i][0] } = - $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{lib}; - $this_row{ $subf[$i][0] } = $subf[$i][1]; + $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{lib}; + $this_row{ $subf[$i][0] } = GetAuthorisedValueDesc( $field->tag(), + $subf[$i][0], $subf[$i][1], '', $tagslib) || $subf[$i][1]; + $norequests = 0 if $subf[$i][1] ==0 and $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{kohafield} eq 'items.notforloan'; } if (%this_row) { push( @big_array, \%this_row ); } } + my ($holdingbrtagf,$holdingbrtagsubf) = &GetMarcFromKohaField("items.holdingbranch",$frameworkcode); @big_array = sort {$a->{$holdingbrtagsubf} cmp $b->{$holdingbrtagsubf}} @big_array; @@ -325,28 +312,27 @@ foreach my $subfield_code ( keys(%witness) ) { push( @header_value_loop, \%header_value ); } -my $subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber); +my $subscriptionscount = CountSubscriptionFromBiblionumber($biblionumber); -if ($subscriptionsnumber) { +if ($subscriptionscount) { my $subscriptions = GetSubscriptionsFromBiblionumber($biblionumber); my $subscriptiontitle = $subscriptions->[0]{'bibliotitle'}; $template->param( subscriptiontitle => $subscriptiontitle, - subscriptionsnumber => $subscriptionsnumber, + subscriptionsnumber => $subscriptionscount, ); } $template->param ( + norequests => $norequests, item_loop => \@item_value_loop, item_header_loop => \@header_value_loop, biblionumber => $biblionumber, popup => $popup, hide_marc => C4::Context->preference('hide_marc'), - intranetcolorstylesheet => - C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), - + marcview => 1, + z3950_search_params => C4::Search::z3950_search_args($biblio), + C4::Search::enabled_staff_search_views, ); output_html_with_http_headers $query, $cookie, $template->output;