X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=catalogue%2Fdetail.pl;h=b06c90a8663a564dc9be5707c3c5c8f5b4bb8f57;hb=9d6d641d1f8b77271800f43bc027b651f9aea52b;hp=ec349d4d1d529f97ba67ebc448af8a4a8362217c;hpb=fbd727869f54897d923c6278b8e841c623029fae;p=srvgit diff --git a/catalogue/detail.pl b/catalogue/detail.pl index ec349d4d1d..b06c90a866 100755 --- a/catalogue/detail.pl +++ b/catalogue/detail.pl @@ -20,35 +20,41 @@ use Modern::Perl; use CGI qw ( -utf8 ); use HTML::Entities; -use Try::Tiny; -use C4::Auth; +use C4::Auth qw( get_template_and_user ); use C4::Context; -use C4::Koha; -use C4::Serials; #uses getsubscriptionfrom biblionumber -use C4::Output; -use C4::Biblio; -use C4::Items; -use C4::Circulation; +use C4::Koha qw( + GetAuthorisedValues + getitemtypeimagelocation + GetNormalizedEAN + GetNormalizedISBN + GetNormalizedOCLCNumber + GetNormalizedUPC +); +use C4::Serials qw( CountSubscriptionFromBiblionumber SearchSubscriptions GetLatestSerials ); +use C4::Output qw( output_html_with_http_headers ); +use C4::Biblio qw( GetBiblioData GetFrameworkCode GetMarcBiblio ); +use C4::Items qw( GetAnalyticsCount GetHostItemsInfo GetItemsInfo ); +use C4::Circulation qw( GetTransfers ); use C4::Reserves; -use C4::Serials; -use C4::XISBN qw(get_xisbns); -use C4::External::Amazon; -use C4::Search; # enabled_staff_search_views -use C4::Tags qw(get_tags); -use C4::XSLT; -use C4::Images; -use Koha::DateUtils; +use C4::Serials qw( CountSubscriptionFromBiblionumber SearchSubscriptions GetLatestSerials ); +use C4::XISBN qw( get_xisbns ); +use C4::External::Amazon qw( get_amazon_tld ); +use C4::Search qw( z3950_search_args enabled_staff_search_views ); +use C4::Tags qw( get_tags ); +use C4::XSLT qw( XSLTParse4Display ); +use Koha::DateUtils qw( format_sqldatetime ); use C4::HTML5Media; -use C4::CourseReserves qw(GetItemCourseReservesInfo); -use C4::Acquisition qw(GetOrdersByBiblionumber); +use C4::CourseReserves qw( GetItemCourseReservesInfo ); use Koha::AuthorisedValues; use Koha::Biblios; +use Koha::CoverImages; use Koha::Illrequests; use Koha::Items; use Koha::ItemTypes; use Koha::Patrons; use Koha::Virtualshelves; use Koha::Plugins; +use Koha::SearchEngine::Search; my $query = CGI->new(); @@ -59,7 +65,6 @@ my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user( template_name => 'catalogue/detail.tt', query => $query, type => "intranet", - authnotrequired => 0, flagsrequired => { catalogue => 1 }, } ); @@ -70,31 +75,8 @@ if ( C4::Context->config('enable_plugins') ) { my @plugins = Koha::Plugins->new()->GetPlugins({ method => 'intranet_catalog_biblio_enhancements_toolbar_button' }); - - my @tab_plugins = Koha::Plugins->new()->GetPlugins({ - method => 'intranet_catalog_biblio_tab', - }); - my @tabs; - foreach my $tab_plugin (@tab_plugins) { - my @biblio_tabs; - - try { - @biblio_tabs = $tab_plugin->intranet_catalog_biblio_tab(); - foreach my $tab (@biblio_tabs) { - my $tab_id = 'tab-' . $tab->title; - $tab_id =~ s/[^0-9A-Za-z]+/-/g; - $tab->id( $tab_id ); - push @tabs, $tab, - } - } - catch { - warn "Error calling 'intranet_catalog_biblio_tab' on the " . $tab_plugin->{class} . "plugin ($_)"; - }; - } - $template->param( plugins => \@plugins, - tabs => \@tabs, ); } @@ -115,15 +97,17 @@ if ( not defined $record ) { eval { $biblio->metadata->record }; $template->param( decoding_error => $@ ); -if($query->cookie("holdfor")){ +if($query->cookie("holdfor")){ my $holdfor_patron = Koha::Patrons->find( $query->cookie("holdfor") ); - $template->param( - # FIXME Should pass the patron object - holdfor => $query->cookie("holdfor"), - holdfor_surname => $holdfor_patron->surname, - holdfor_firstname => $holdfor_patron->firstname, - holdfor_cardnumber => $holdfor_patron->cardnumber, - ); + if ( $holdfor_patron ) { + $template->param( + # FIXME Should pass the patron object + holdfor => $query->cookie("holdfor"), + holdfor_surname => $holdfor_patron->surname, + holdfor_firstname => $holdfor_patron->firstname, + holdfor_cardnumber => $holdfor_patron->cardnumber, + ); + } } if($query->cookie("searchToOrder")){ @@ -144,12 +128,32 @@ my $lang = $xslfile ? C4::Languages::getlanguage() : undef; my $sysxml = $xslfile ? C4::XSLT::get_xslt_sysprefs() : undef; if ( $xslfile ) { + + my $searcher = Koha::SearchEngine::Search->new( + { index => $Koha::SearchEngine::BIBLIOS_INDEX } + ); + my $cleaned_title = $biblio->title; + $cleaned_title =~ tr|/||; + my $query = + ( C4::Context->preference('UseControlNumber') and $record->field('001') ) + ? 'rcn:'. $record->field('001')->data . ' AND (bib-level:a OR bib-level:b)' + : "Host-item:($cleaned_title)"; + my ( $err, $result, $count ) = $searcher->simple_search_compat( $query, 0, 0 ); + + warn "Warning from simple_search_compat: $err" + if $err; + + my $variables = { + show_analytics_link => $count > 0 ? 1 : 0 + }; + $template->param( XSLTDetailsDisplay => '1', - XSLTBloc => XSLTParse4Display( - $biblionumber, $record, "XSLTDetailsDisplay", - 1, undef, $sysxml, $xslfile, $lang - ) + XSLTBloc => XSLTParse4Display( + $biblionumber, $record, "XSLTDetailsDisplay", 1, + undef, $sysxml, $xslfile, $lang, + $variables + ) ); } @@ -175,7 +179,7 @@ $template->param( normalized_isbn => $isbn, ); -my $marcnotesarray = GetMarcNotes( $record, $marcflavour ); +my $marcnotesarray = $biblio->get_marc_notes({ marcflavour => $marcflavour }); my $itemtypes = { map { $_->{itemtype} => $_ } @{ Koha::ItemTypes->search->unblessed } }; @@ -270,7 +274,6 @@ my $collections = my $copynumbers = { map { $_->{authorised_value} => $_->{lib} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => $fw, kohafield => 'items.copynumber' } ) }; my (@itemloop, @otheritemloop, %itemfields); -my $norequests = 1; my $mss = Koha::MarcSubfieldStructures->search({ frameworkcode => $fw, kohafield => 'items.itemlost', authorised_value => [ -and => {'!=' => undef }, {'!=' => ''}] }); if ( $mss->count ) { @@ -303,12 +306,10 @@ if ($currentbranch and C4::Context->preference('SeparateHoldings')) { $template->param(SeparateHoldings => 1); } my $separatebranch = C4::Context->preference('SeparateHoldingsBranch') || 'homebranch'; +my ( $itemloop_has_images, $otheritemloop_has_images ); foreach my $item (@items) { my $itembranchcode = $item->{$separatebranch}; - # can place holds defaults to yes - $norequests = 0 unless ( ( $item->{'notforloan'} > 0 ) || ( $item->{'itemnotforloan'} > 0 ) ); - $item->{imageurl} = defined $item->{itype} ? getitemtypeimagelocation('intranet', $itemtypes->{ $item->{itype} }{imageurl}) : ''; @@ -390,17 +391,29 @@ foreach my $item (@items) { } } + if ( C4::Context->preference("LocalCoverImages") == 1 ) { + $item->{cover_images} = $item_object->cover_images; + } + if ($currentbranch and C4::Context->preference('SeparateHoldings')) { if ($itembranchcode and $itembranchcode eq $currentbranch) { push @itemloop, $item; + $itemloop_has_images++ if $item_object->cover_images->count; } else { push @otheritemloop, $item; + $otheritemloop_has_images++ if $item_object->cover_images->count; } } else { push @itemloop, $item; + $itemloop_has_images++ if $item_object->cover_images->count; } } +$template->param( + itemloop_has_images => $itemloop_has_images, + otheritemloop_has_images => $otheritemloop_has_images, +); + # Display only one tab if one items list is empty if (scalar(@itemloop) == 0 || scalar(@otheritemloop) == 0) { $template->param(SeparateHoldings => 0); @@ -409,7 +422,27 @@ if (scalar(@itemloop) == 0 || scalar(@otheritemloop) == 0) { } } -$template->param( norequests => $norequests ); +my $some_private_shelves = Koha::Virtualshelves->get_some_shelves( + { + borrowernumber => $borrowernumber, + add_allowed => 1, + category => 1, + } +); +my $some_public_shelves = Koha::Virtualshelves->get_some_shelves( + { + borrowernumber => $borrowernumber, + add_allowed => 1, + category => 2, + } +); + + +$template->param( + add_to_some_private_shelves => $some_private_shelves, + add_to_some_public_shelves => $some_public_shelves, +); + $template->param( MARCNOTES => $marcnotesarray, itemdata_ccode => $itemfields{ccode}, @@ -474,8 +507,6 @@ $template->param( searchid => scalar $query->param('searchid'), ); -# $debug and $template->param(debug_display => 1); - # Lists if (C4::Context->preference("virtualshelves") ) { @@ -502,8 +533,8 @@ if (C4::Context->preference("FRBRizeEditions")==1) { } if ( C4::Context->preference("LocalCoverImages") == 1 ) { - my @images = ListImagesForBiblio($biblionumber); - $template->{VARS}->{localimages} = \@images; + my $images = $biblio->cover_images; + $template->param( localimages => $biblio->cover_images ); } # HTML5 Media @@ -552,6 +583,22 @@ if ($StaffDetailItemSelection) { } } +# 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 ); + } +} + +if ( C4::Context->preference('UseCourseReserves') ) { + my $course_reserves = GetItemCourseReservesInfo( biblionumber => $biblionumber ); + $template->param( course_reserves => $course_reserves ); +} + $template->param(biblio => $biblio); output_html_with_http_headers $query, $cookie, $template->output;