X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=catalogue%2FISBDdetail.pl;h=d7431e8bc8dac9316c654a21ac13c1996b2ddbdb;hb=445223623378e16c76870acb53d027ac1d41b851;hp=de24490ce0b04637c0bd010f083a06d7d60d1100;hpb=324615e396be7fadc8ba3cfa1a9f6025e900df3a;p=koha-ffzg.git diff --git a/catalogue/ISBDdetail.pl b/catalogue/ISBDdetail.pl index de24490ce0..d7431e8bc8 100755 --- a/catalogue/ISBDdetail.pl +++ b/catalogue/ISBDdetail.pl @@ -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 . =head1 NAME @@ -33,62 +33,94 @@ This script needs a biblionumber as parameter =cut -use strict; -#use warnings; FIXME - Bug 2505 +use Modern::Perl; -use C4::Auth; +use HTML::Entities; +use C4::Auth qw( get_template_and_user ); use C4::Context; -use C4::Output; -use CGI; -use C4::Koha; -use C4::Biblio; -use C4::Items; -use C4::Members; # to use GetMember -use C4::Branch; # GetBranchDetail -use C4::Serials; # CountSubscriptionFromBiblionumber -use C4::Search; # enabled_staff_search_views +use C4::Output qw( output_html_with_http_headers ); +use CGI qw ( -utf8 ); +use C4::Biblio qw( GetBiblioData GetISBDView ); +use C4::Serials qw( CountSubscriptionFromBiblionumber GetSubscription GetSubscriptionsFromBiblionumber ); +use C4::Search qw( z3950_search_args enabled_staff_search_views ); -#---- Internal function +use Koha::Biblios; +use Koha::Patrons; +use Koha::RecordProcessor; +use Koha::Virtualshelves; -my $query = new CGI; +my $query = CGI->new; my $dbh = C4::Context->dbh; my $biblionumber = $query->param('biblionumber'); +$biblionumber = HTML::Entities::encode($biblionumber); # open template my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { - template_name => "catalogue/ISBDdetail.tmpl", + template_name => "catalogue/ISBDdetail.tt", query => $query, type => "intranet", - authnotrequired => 0, flagsrequired => { catalogue => 1 }, } ); -my $res = GetISBDView($biblionumber, "intranet"); -if ( not defined $res ) { +my $biblio = Koha::Biblios->find( $biblionumber ); +unless ( $biblionumber && $biblio ) { + # biblionumber invalid -> report and exit + $template->param( unknownbiblionumber => 1, + biblionumber => $biblionumber + ); + output_html_with_http_headers $query, $cookie, $template->output; + exit; +} + +my $record = $biblio->metadata->record({ embed_items => 1 }); + +if ( not defined $record ) { # biblionumber invalid -> report and exit $template->param( unknownbiblionumber => 1, - biblionumber => $biblionumber + biblionumber => $biblionumber ); output_html_with_http_headers $query, $cookie, $template->output; exit; } +my $framework = $biblio->frameworkcode; +my $record_processor = Koha::RecordProcessor->new({ + filters => 'ViewPolicy', + options => { + interface => 'intranet', + frameworkcode => $framework + }, +}); +$record_processor->process($record); + +my $res = GetISBDView({ + 'record' => $record, + 'template' => 'intranet', + 'framework' => $framework, +}); + if($query->cookie("holdfor")){ - my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor")); + my $holdfor_patron = Koha::Patrons->find( $query->cookie("holdfor") ); + $template->param( + holdfor => $query->cookie("holdfor"), + holdfor_patron => $holdfor_patron, + ); +} + +if( $query->cookie("searchToOrder") ){ + my ( $basketno, $vendorid ) = split( /\//, $query->cookie("searchToOrder") ); $template->param( - holdfor => $query->cookie("holdfor"), - holdfor_surname => $holdfor_patron->{'surname'}, - holdfor_firstname => $holdfor_patron->{'firstname'}, - holdfor_cardnumber => $holdfor_patron->{'cardnumber'}, + searchtoorder_basketno => $basketno, + searchtoorder_vendorid => $vendorid ); } # count of item linked with biblio -my $itemcount = GetItemsCount($biblionumber); +my $itemcount = $biblio->items->count; $template->param( count => $itemcount); my $subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber); @@ -100,16 +132,52 @@ if ($subscriptionsnumber) { subscriptiontitle => $subscriptiontitle, ); } -my $record = GetMarcBiblio($biblionumber); + +# get biblionumbers stored in the cart +my @cart_list; + +if($query->cookie("intranet_bib_list")){ + my $cart_list = $query->cookie("intranet_bib_list"); + @cart_list = split(/\//, $cart_list); + if ( grep {$_ eq $biblionumber} @cart_list) { + $template->param( incart => 1 ); + } +} + +my $some_private_shelves = Koha::Virtualshelves->get_some_shelves( + { + borrowernumber => $loggedinuser, + add_allowed => 1, + public => 0, + } +); +my $some_public_shelves = Koha::Virtualshelves->get_some_shelves( + { + borrowernumber => $loggedinuser, + add_allowed => 1, + public => 1, + } +); + + +$template->param( + add_to_some_private_shelves => $some_private_shelves, + add_to_some_public_shelves => $some_public_shelves, +); $template->param ( ISBD => $res, biblionumber => $biblionumber, isbdview => 1, z3950_search_params => C4::Search::z3950_search_args(GetBiblioData($biblionumber)), - ocoins => GetCOinSBiblio($record), + ocoins => $biblio->get_coins, C4::Search::enabled_staff_search_views, + searchid => scalar $query->param('searchid'), + biblio => $biblio, ); +my $holds = $biblio->holds; +$template->param( holdcount => $holds->count ); + output_html_with_http_headers $query, $cookie, $template->output;