X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=catalogue%2Fdetail.pl;h=da62e07e506bd91da9af09977346a1820cccc346;hb=e012957186426b9577bfc8498c5971990b258024;hp=03271b47d7f020f4c5e9eb79de8152cefd0bc64c;hpb=30dc7ed25b14775819320106d1c0479f990a6a8c;p=koha.git diff --git a/catalogue/detail.pl b/catalogue/detail.pl index 03271b47d7..da62e07e50 100755 --- a/catalogue/detail.pl +++ b/catalogue/detail.pl @@ -35,15 +35,21 @@ use C4::Serials; use C4::XISBN qw(get_xisbns get_biblionumber_from_isbn); use C4::External::Amazon; use C4::Search; # enabled_staff_search_views +use C4::Tags qw(get_tags); use C4::VirtualShelves; use C4::XSLT; +use C4::Images; +use Koha::DateUtils; # use Smart::Comments; my $query = CGI->new(); + +my $analyze = $query->param('analyze'); + my ( $template, $borrowernumber, $cookie ) = get_template_and_user( { - template_name => "catalogue/detail.tmpl", + template_name => 'catalogue/detail.tmpl', query => $query, type => "intranet", authnotrequired => 0, @@ -83,6 +89,7 @@ if (C4::Context->preference("XSLTDetailsDisplay") ) { } $template->param( 'SpineLabelShowPrintOnBibDetails' => C4::Context->preference("SpineLabelShowPrintOnBibDetails") ); +$template->param( ocoins => GetCOinSBiblio($record) ); # some useful variables for enhanced content; # in each case, we're grabbing the first value we find in @@ -105,6 +112,7 @@ my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour ); my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour ); my $marcseriesarray = GetMarcSeries($record,$marcflavour); my $marcurlsarray = GetMarcUrls ($record,$marcflavour); +my $marchostsarray = GetMarcHosts($record,$marcflavour); my $subtitle = GetRecordValue('subtitle', $record, $fw); # Get Branches, Itemtypes and Locations @@ -112,12 +120,21 @@ my $branches = GetBranches(); my $itemtypes = GetItemTypes(); my $dbh = C4::Context->dbh; -# 'intra' param included, even though it's not respected in GetItemsInfo currently -my @all_items= GetItemsInfo($biblionumber, 'intra'); +my @all_items = GetItemsInfo( $biblionumber ); my @items; for my $itm (@all_items) { push @items, $itm unless ( $itm->{itemlost} && GetHideLostItemsPreference($borrowernumber) && !$showallitems); } + +# flag indicating existence of at least one item linked via a host record +my $hostrecords; +# adding items linked via host biblios +my @hostitems = GetHostItemsInfo($record); +if (@hostitems){ + $hostrecords =1; + push (@items,@hostitems); +} + my $dat = &GetBiblioData($biblionumber); # get count of holds @@ -149,9 +166,9 @@ if ( defined $dat->{'itemtype'} ) { $dat->{imageurl} = getitemtypeimagelocation( 'intranet', $itemtypes->{ $dat->{itemtype} }{imageurl} ); } -$dat->{'count'} = scalar @all_items; -$dat->{'showncount'} = scalar @items; -$dat->{'hiddencount'} = scalar @all_items - scalar @items; +$dat->{'count'} = scalar @all_items + @hostitems; +$dat->{'showncount'} = scalar @items + @hostitems; +$dat->{'hiddencount'} = scalar @all_items + @hostitems - scalar @items; my $shelflocations = GetKohaAuthorisedValues('items.location', $fw); my $collections = GetKohaAuthorisedValues('items.ccode' , $fw); @@ -159,6 +176,9 @@ my (@itemloop, %itemfields); my $norequests = 1; my $authvalcode_items_itemlost = GetAuthValCode('items.itemlost',$fw); my $authvalcode_items_damaged = GetAuthValCode('items.damaged', $fw); + +my $analytics_flag; +my $materials_flag; # set this if the items have anything in the materials field foreach my $item (@items) { $item->{homebranch} = GetBranchName($item->{homebranch}); @@ -173,9 +193,10 @@ foreach my $item (@items) { $item->{imageurl} = defined $item->{itype} ? getitemtypeimagelocation('intranet', $itemtypes->{ $item->{itype} }{imageurl}) : ''; - foreach (qw(datedue datelastseen onloan)) { + foreach (qw(datelastseen onloan)) { $item->{$_} = format_date($item->{$_}); - } + } + $item->{datedue} = format_sqldatetime($item->{datedue}); # item damaged, lost, withdrawn loops $item->{itemlostloop} = GetAuthorisedValues($authvalcode_items_itemlost, $item->{itemlost}) if $authvalcode_items_itemlost; if ($item->{damaged}) { @@ -224,6 +245,21 @@ foreach my $item (@items) { $item->{waitingdate} = format_date($wait_hashref->{waitingdate}); } + # item has a host number if its biblio number does not match the current bib + if ($item->{biblionumber} ne $biblionumber){ + $item->{hostbiblionumber} = $item->{biblionumber}; + $item->{hosttitle} = GetBiblioData($item->{biblionumber})->{title}; + } + + #count if item is used in analytical bibliorecords + my $countanalytics= GetAnalyticsCount($item->{itemnumber}); + if ($countanalytics > 0){ + $analytics_flag=1; + $item->{countanalytics} = $countanalytics; + } + if ($item->{'materials'} ne ''){ + $materials_flag = 1; + } push @itemloop, $item; } @@ -235,6 +271,7 @@ $template->param( MARCSERIES => $marcseriesarray, MARCURLS => $marcurlsarray, MARCISBNS => $marcisbnsarray, + MARCHOSTS => $marchostsarray, subtitle => $subtitle, itemdata_ccode => $itemfields{ccode}, itemdata_enumchron => $itemfields{enumchron}, @@ -244,7 +281,10 @@ $template->param( itemdata_itemnotes => $itemfields{itemnotes}, z3950_search_params => C4::Search::z3950_search_args($dat), holdcount => $holdcount, + hostrecords => $hostrecords, + analytics_flag => $analytics_flag, C4::Search::enabled_staff_search_views, + materials => $materials_flag, ); if (C4::Context->preference("AlternateHoldingsField") && scalar @items == 0) { @@ -285,7 +325,7 @@ foreach ( keys %{$dat} ) { $template->param( itemloop => \@itemloop, biblionumber => $biblionumber, - detailview => 1, + ($analyze? 'analyze':'detailview') =>1, subscriptions => \@subs, subscriptionsnumber => $subscriptionsnumber, subscriptiontitle => $dat->{title}, @@ -348,9 +388,26 @@ if ( C4::Context->preference("AmazonEnabled") == 1 ) { } } +if ( C4::Context->preference("LocalCoverImages") == 1 ) { + my @images = ListImagesForBiblio($biblionumber); + $template->{VARS}->{localimages} = \@images; +} + # Get OPAC URL if (C4::Context->preference('OPACBaseURL')){ $template->param( OpacUrl => C4::Context->preference('OPACBaseURL') ); } +# Displaying tags + +my $tag_quantity; +if (C4::Context->preference('TagsEnabled') and $tag_quantity = C4::Context->preference('TagsShowOnDetail')) { + $template->param( + TagsEnabled => 1, + TagsShowOnDetail => $tag_quantity + ); + $template->param(TagLoop => get_tags({biblionumber=>$biblionumber, approved=>1, + 'sort'=>'-weight', limit=>$tag_quantity})); +} + output_html_with_http_headers $query, $cookie, $template->output;