Bug 10704: make OPAC highlighting work across previous/next travel
[koha.git] / opac / opac-detail.pl
index 883ea7c..d1f5d91 100755 (executable)
@@ -50,6 +50,7 @@ use List::MoreUtils qw/any none/;
 use C4::Images;
 use Koha::DateUtils;
 use C4::HTML5Media;
+use C4::CourseReserves qw(GetItemCourseReservesInfo);
 
 BEGIN {
        if (C4::Context->preference('BakerTaylorEnabled')) {
@@ -364,13 +365,13 @@ if ($session->param('busc')) {
     my ($previous, $next, $dataBiblioPaging);
     # Previous biblio
     if ($paging{'previous'}->{biblionumber}) {
-        $previous = 'opac-detail.pl?biblionumber=' . $paging{'previous'}->{biblionumber};
+        $previous = 'opac-detail.pl?biblionumber=' . $paging{'previous'}->{biblionumber}  . '&query_desc=' . $query->param('query_desc');
         $dataBiblioPaging = GetBiblioData($paging{'previous'}->{biblionumber});
         $template->param('previousTitle' => $dataBiblioPaging->{'title'}) if ($dataBiblioPaging);
     }
     # Next biblio
     if ($paging{'next'}->{biblionumber}) {
-        $next = 'opac-detail.pl?biblionumber=' . $paging{'next'}->{biblionumber};
+        $next = 'opac-detail.pl?biblionumber=' . $paging{'next'}->{biblionumber} . '&query_desc=' . $query->param('query_desc');
         $dataBiblioPaging = GetBiblioData($paging{'next'}->{biblionumber});
         $template->param('nextTitle' => $dataBiblioPaging->{'title'}) if ($dataBiblioPaging);
     }
@@ -441,6 +442,41 @@ if ($hideitems) {
     @items = @all_items;
 }
 
+my $branches = GetBranches();
+my $branch = '';
+if (C4::Context->userenv){
+    $branch = C4::Context->userenv->{branch};
+}
+if ( C4::Context->preference('HighlightOwnItemsOnOPAC') ) {
+    if (
+        ( ( C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'PatronBranch' ) && $branch )
+        ||
+        C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'OpacURLBranch'
+    ) {
+        my $branchname;
+        if ( C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'PatronBranch' ) {
+            $branchname = $branches->{$branch}->{'branchname'};
+        }
+        elsif (  C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'OpacURLBranch' ) {
+            $branchname = $branches->{ $ENV{'BRANCHCODE'} }->{'branchname'};
+        }
+
+        my @our_items;
+        my @other_items;
+
+        foreach my $item ( @items ) {
+           if ( $item->{'branchname'} eq $branchname ) {
+               $item->{'this_branch'} = 1;
+               push( @our_items, $item );
+           } else {
+               push( @other_items, $item );
+           }
+        }
+
+        @items = ( @our_items, @other_items );
+    }
+}
+
 my $dat = &GetBiblioData($biblionumber);
 
 my $itemtypes = GetItemTypes();
@@ -511,7 +547,6 @@ if ( $show_holds_count || $show_priority) {
 $template->param( show_priority => $has_hold ) ;
 
 my $norequests = 1;
-my $branches = GetBranches();
 my %itemfields;
 my (@itemloop, @otheritemloop);
 my $currentbranch = C4::Context->userenv ? C4::Context->userenv->{branch} : undef;
@@ -576,6 +611,14 @@ for my $itm (@items) {
     }
 }
 
+# Display only one tab if one items list is empty
+if (scalar(@itemloop) == 0 || scalar(@otheritemloop) == 0) {
+    $template->param(SeparateHoldings => 0);
+    if (scalar(@itemloop) == 0) {
+        @itemloop = @otheritemloop;
+    }
+}
+
 # If there is a lot of items, and the user has not decided
 # to view them all yet, we first warn him
 # TODO: The limit of 50 could be a syspref
@@ -1013,4 +1056,10 @@ if (C4::Context->preference('OpacHighlightedWords')) {
 }
 $template->{VARS}->{'trackclicks'} = C4::Context->preference('TrackClicks');
 
+if ( C4::Context->preference('UseCourseReserves') ) {
+    foreach my $i ( @items ) {
+        $i->{'course_reserves'} = GetItemCourseReservesInfo( itemnumber => $i->{'itemnumber'} );
+    }
+}
+
 output_html_with_http_headers $query, $cookie, $template->output;