Bug 766: remove CGI::scrolling_list from request.pl
[koha.git] / reserve / request.pl
index c34a614..aea1ff8 100755 (executable)
@@ -47,7 +47,7 @@ use Koha::DateUtils;
 my $dbh = C4::Context->dbh;
 my $sth;
 my $input = new CGI;
-my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
+my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user(
     {
         template_name   => "reserve/request.tmpl",
         query           => $input,
@@ -65,30 +65,17 @@ my $showallitems = $input->param('showallitems');
 my $branches = GetBranches();
 my $itemtypes = GetItemTypes();
 
-my $default = C4::Context->userenv->{branch};
-my @values;
-my %label_of;
-
-foreach my $branchcode ( sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %$branches ) {
-    push @values, $branchcode;
-    $label_of{$branchcode} = $branches->{$branchcode}->{branchname};
+my $userbranch = '';
+if (C4::Context->userenv && C4::Context->userenv->{'branch'}) {
+    $userbranch = C4::Context->userenv->{'branch'};
 }
-my $CGIbranch = CGI::scrolling_list(
-                                    -name     => 'pickup',
-                                    -id          => 'pickup',
-                                    -values   => \@values,
-                                    -default  => $default,
-                                    -labels   => \%label_of,
-                                    -size     => 1,
-                                    -multiple => 0,
-                                   );
+
 
 # Select borrowers infos
 my $findborrower = $input->param('findborrower');
 $findborrower = '' unless defined $findborrower;
 $findborrower =~ s|,| |g;
 my $borrowernumber_hold = $input->param('borrowernumber') || '';
-my $borrowerslist;
 my $messageborrower;
 my $warnings;
 my $messages;
@@ -125,7 +112,7 @@ if ($findborrower) {
             $borrowernumber_hold = $borrowers->[0]->{'borrowernumber'};
         }
         else {
-            $borrowerslist = $borrowers;
+            $template->param( borrower_list => sort_borrowerlist($borrowers));
         }
     } else {
         $messageborrower = "'$findborrower'";
@@ -191,38 +178,6 @@ if ($borrowernumber_hold && !$action) {
 
 $template->param( messageborrower => $messageborrower );
 
-my $CGIselectborrower;
-if ($borrowerslist) {
-    my @values;
-    my %labels;
-
-    foreach my $borrower (
-        sort {
-                uc($a->{surname}
-              . $a->{firstname}) cmp uc($b->{surname}
-              . $b->{firstname})
-        } @{$borrowerslist}
-      )
-    {
-        push @values, $borrower->{borrowernumber};
-
-        $labels{ $borrower->{borrowernumber} } = sprintf(
-            '%s, %s ... (%s - %s) ... %s',
-            $borrower->{surname} ||'',    $borrower->{firstname} || '',
-            $borrower->{cardnumber} || '', $borrower->{categorycode} || '',
-            $borrower->{address} || '',
-        );
-    }
-
-    $CGIselectborrower = CGI::scrolling_list(
-        -name     => 'borrowernumber',
-        -values   => \@values,
-        -labels   => \%labels,
-        -size     => 7,
-        -multiple => 0,
-    );
-}
-
 # FIXME launch another time GetMember perhaps until
 my $borrowerinfo = GetMember( borrowernumber => $borrowernumber_hold );
 
@@ -244,9 +199,16 @@ foreach my $biblionumber (@biblionumbers) {
     my $dat          = GetBiblioData($biblionumber);
 
     unless ( CanBookBeReserved($borrowerinfo->{borrowernumber}, $biblionumber) ) {
-               $warnings = 1;
+               $warnings = 1;
         $maxreserves = 1;
     }
+
+    my $alreadypossession;
+    if (not C4::Context->preference('AllowHoldsOnPatronsPossessions') and CheckIfIssuedToPatron($borrowerinfo->{borrowernumber},$biblionumber)) {
+        $warnings = 1;
+        $alreadypossession = 1;
+    }
+
     # get existing reserves .....
     my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1);
     my $totalcount = $count;
@@ -268,7 +230,8 @@ foreach my $biblionumber (@biblionumbers) {
     $template->param( alreadyreserved => $alreadyreserved,
                       messages => $messages,
                       warnings => $warnings,
-                                         maxreserves=>$maxreserves
+                 maxreserves=>$maxreserves,
+                     alreadypossession => $alreadypossession,
                                          );
 
 
@@ -430,7 +393,7 @@ foreach my $biblionumber (@biblionumbers) {
 
             # if independent branches is on we need to check if the person can reserve
             # for branches they arent logged in to
-            if ( C4::Context->preference("IndependantBranches") ) {
+            if ( C4::Context->preference("IndependentBranches") ) {
                 if (! C4::Context->preference("canreservefromotherbranches")){
                     # cant reserve items so need to check if item homebranch and userenv branch match if not we cant reserve
                     my $userenv = C4::Context->userenv;
@@ -571,10 +534,16 @@ foreach my $biblionumber (@biblionumbers) {
         $reserve{'barcode'}         = $res->{'barcode'};
         $reserve{'priority'}    = $res->{'priority'};
         $reserve{'lowestPriority'}    = $res->{'lowestPriority'};
-        $reserve{'branchloop'} = GetBranchesLoop($res->{'branchcode'});
         $reserve{'optionloop'} = \@optionloop;
         $reserve{'suspend'} = $res->{'suspend'};
         $reserve{'suspend_until'} = $res->{'suspend_until'};
+
+        if ( C4::Context->preference('IndependentBranches') && $flags->{'superlibrarian'} != 1 ) {
+              $reserve{'branchloop'} = [ GetBranchDetail($res->{'branchcode'}) ];
+        } else {
+              $reserve{'branchloop'} = GetBranchesLoop($res->{'branchcode'});
+        }
+
         push( @reserveloop, \%reserve );
     }
 
@@ -582,8 +551,7 @@ foreach my $biblionumber (@biblionumbers) {
     my $time = time();
 
     $template->param(
-                     CGIbranch   => $CGIbranch,
-
+                     branchloop  => GetBranchesLoop($userbranch),
                      time        => $time,
                      fixedRank   => $fixedRank,
                     );
@@ -607,7 +575,6 @@ foreach my $biblionumber (@biblionumbers) {
                      borrower_branchcode => $borrowerinfo->{'branchcode'},
         );
     }
-    $template->param(CGIselectborrower => $CGIselectborrower) if defined $CGIselectborrower;
 
     $biblioloopiter{biblionumber} = $biblionumber;
     $biblioloopiter{title} = $dat->{title};
@@ -623,7 +590,6 @@ foreach my $biblionumber (@biblionumbers) {
 
 $template->param( biblioloop => \@biblioloop );
 $template->param( biblionumbers => $biblionumbers );
-$template->param( DHTMLcalendar_dateformat  => C4::Dates->DHTMLcalendar() );
 
 if ($multihold) {
     $template->param( multi_hold => 1 );
@@ -640,3 +606,13 @@ $template->param(
 
 # printout the page
 output_html_with_http_headers $input, $cookie, $template->output;
+
+sub sort_borrowerlist {
+    my $borrowerslist = shift;
+    my $ref           = [];
+    push @{$ref}, sort {
+        uc( $a->{surname} . $a->{firstname} ) cmp
+          uc( $b->{surname} . $b->{firstname} )
+    } @{$borrowerslist};
+    return $ref;
+}