Merge remote branch 'kc/new/enh/bug_5560' into kcmaster
[koha.git] / C4 / VirtualShelves / Page.pm
index 1ce360e..66c614d 100644 (file)
@@ -31,6 +31,7 @@ use C4::Auth qw/get_session/;
 use C4::Members;
 use C4::Output;
 use C4::Dates qw/format_date/;
+use C4::Tags qw(get_tags);
 use Exporter;
 use Data::Dumper;
 use C4::Csv;
@@ -61,6 +62,7 @@ sub shelfpage ($$$$$) {
     my $itemoff     = ( $query->param('itemoff')  ? $query->param('itemoff')  : 1 );
     my $displaymode = ( $query->param('display')  ? $query->param('display')  : 'publicshelves' );
     my ( $shelflimit, $shelfoffset, $shelveslimit, $shelvesoffset );
+    my $marcflavour = C4::Context->preference("marcflavour");
 
     $shelflimit = ( $type eq 'opac' ? C4::Context->preference('OPACnumSearchResults') : C4::Context->preference('numSearchResults') );
     $shelflimit = $shelflimit || 20;
@@ -177,19 +179,20 @@ sub shelfpage ($$$$$) {
             # explicitly fetch this shelf
             my ($shelfnumber2,$shelfname,$owner,$category,$sorton) = GetShelf($shelfnumber);
 
+            $template->param( 'AllowOnShelfHolds' => C4::Context->preference('AllowOnShelfHolds') );
+            if (C4::Context->preference('TagsEnabled')) {
+                $template->param(TagsEnabled => 1);
+                    foreach (qw(TagsShowOnList TagsInputOnList)) {
+                    C4::Context->preference($_) and $template->param($_ => 1);
+                }
+            }
             #check that the user can view the shelf
             if ( ShelfPossibleAction( $loggedinuser, $shelfnumber, 'view' ) ) {
                 my $items;
                 my $authorsort;
                 my $yearsort;
-                my $sortfield;
-                if ( $query->param('sortfield')) {
-                   $sortfield = $query->param('sortfield');
-                } elsif ($sorton) {
-                   $sortfield = $sorton;
-                } else {
-                   $sortfield = 'title';
-                }
+                my $tag_quantity;
+                my $sortfield = ( $query->param('sortfield') ? $query->param('sortfield') : 'title' );
                 if ( $sortfield eq 'author' ) {
                     $authorsort = 'author';
                 }
@@ -208,11 +211,22 @@ sub shelfpage ($$$$$) {
                     $this_item->{'imageurl'}  = getitemtypeinfo( $this_item->{'itemtype'} )->{'imageurl'};
                     $this_item->{'coins'}     = GetCOinSBiblio( $this_item->{'biblionumber'} );
                     $this_item->{'subtitle'} = GetRecordValue('subtitle', $record, GetFrameworkCode($this_item->{'biblionumber'}));
-
+                    $this_item->{'normalized_upc'}  = GetNormalizedUPC(       $record,$marcflavour);
+                    $this_item->{'normalized_ean'}  = GetNormalizedEAN(       $record,$marcflavour);
+                    $this_item->{'normalized_oclc'} = GetNormalizedOCLCNumber($record,$marcflavour);
+                    $this_item->{'normalized_isbn'} = GetNormalizedISBN(undef,$record,$marcflavour);
                     # Getting items infos for location display
                     my @items_infos = &GetItemsInfo( $this_item->{'biblionumber'}, $type );
+                    $this_item->{'itemsissued'} = CountItemsIssued( $this_item->{'biblionumber'} );
                     $this_item->{'ITEM_RESULTS'} = \@items_infos;
 
+                    if (C4::Context->preference('TagsEnabled') and $tag_quantity = C4::Context->preference('TagsShowOnList')) {
+                        $this_item->{'TagLoop'} = get_tags({
+                            biblionumber=>$this_item->{'biblionumber'}, approved=>1, 'sort'=>'-weight',
+                            limit=>$tag_quantity
+                            });
+                    }
+
                 }
                 push @paramsloop, { display => 'privateshelves' } if $category == 1;
                 $showadd = 1;
@@ -265,7 +279,7 @@ sub shelfpage ($$$$$) {
                 if ( my $count = scalar @$contents ) {
                     unless ( scalar grep { /^CONFIRM-$number$/ } $query->param() ) {
                         if ( defined $shelflist->{$number} ) {
-                            push( @paramsloop, { need_confirm => $shelflist->{$number}->{shelfname}, count => $count } );
+                            push( @paramsloop, { need_confirm => $shelflist->{$number}->{shelfname}, count => $count, single => ($count eq 1 ? 1:0) } );
                             $shelflist->{$number}->{confirm} = $number;
                         } else {
                             push( @paramsloop, { need_confirm => $privshelflist->{$number}->{shelfname}, count => $count } );