Bug 16547: Remove more multi_holds inconsistencies
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 8 Apr 2020 13:44:55 +0000 (15:44 +0200)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 11 May 2020 13:00:32 +0000 (14:00 +0100)
There was a bug, on the biblio's hold list view, if the pickup library
was changed, the next screen was "place a hold for no title"

http://pro.kohadev.org/cgi-bin/koha/reserve/request.pl?multi_hold=1&biblionumbers=

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
reserve/modrequest.pl
reserve/placerequest.pl

index acb9bd9..2f5f0eb 100644 (file)
@@ -96,7 +96,7 @@
                             <li><a href="#holds_clubsearch_pane">Clubs</a></li>
                         </ul>
                         <div id="holds_patronsearch_pane">
-                            <form id="holds_patronsearch" action="request.pl?biblionumber=[% biblionumber | html %]" method="post">
+                            <form id="holds_patronsearch" action="request.pl?biblionumbers=[% biblionumbers | html %]" method="post">
                                 <div class="hint">Enter patron card number or partial name:</div>
                                 <input type="text" size="40" id="patron" class="focus" name="findborrower" autocomplete="off" />
                                 <input type="submit" value="Search" />
                 [% IF ( reserveloop ) %]
                     <form name="T[% time | html %]" action="modrequest.pl" method="post">
                         [% IF ( multi_hold ) %]
-                            <input type = "hidden" name="multi_hold" value="1"/>
                             <input type = "hidden" name="biblionumbers" value="[% biblionumbers | html %]"/>
                         [% END %]
 
                         .then(function(result) {
                             let url = 'request.pl?biblionumber='+biblionumber;
                             if(biblionumbers_text) {
-                                url = 'request.pl?biblionumbers='+biblionumbers_text+'&multi_hold=1';
+                                url = 'request.pl?biblionumbers='+biblionumbers_text;
                             }
                             document.location = url;
                         })
index a1f9733..6c134ef 100755 (executable)
@@ -24,6 +24,7 @@
 
 use Modern::Perl;
 use CGI qw ( -utf8 );
+use List::MoreUtils qw( uniq );
 use C4::Output;
 use C4::Reserves;
 use C4::Auth;
@@ -43,15 +44,16 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
 
 my @reserve_id = $query->multi_param('reserve_id');
 my @rank = $query->multi_param('rank-request');
-my @biblionumber = $query->multi_param('biblionumber');
 my @borrower = $query->multi_param('borrowernumber');
 my @reservedates = $query->multi_param('reservedate');
 my @expirationdates = $query->multi_param('expirationdate');
 my @branch = $query->multi_param('pickup');
 my @itemnumber = $query->multi_param('itemnumber');
-my $biblionumbers = $query->param('biblionumbers');
+my @biblionumber = $query->multi_param('biblionumber');
 my $count=@rank;
 
+@biblionumber = uniq @biblionumber;
+
 my $CancelBiblioNumber = $query->param('CancelBiblioNumber');
 my $CancelBorrowerNumber = $query->param('CancelBorrowerNumber');
 my $CancelItemnumber = $query->param('CancelItemnumber');
@@ -93,10 +95,6 @@ if ( $from eq 'borrower'){
     print $query->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrower[0]");
 } else {
      my $url = "/cgi-bin/koha/reserve/request.pl?";
-     if (@biblionumber > 1) {
-         $url .= "multi_hold=1&biblionumbers=$biblionumbers";
-     } else {
-         $url .= "biblionumber=$biblionumber[0]";
-     }
+     $url .= "biblionumbers=" . join('/', @biblionumber);
      print $query->redirect($url);
 }
index 88fa593..0b4a12c 100755 (executable)
@@ -165,7 +165,7 @@ if ( $type eq 'str8' && $borrower ) {
     if ($bad_bibs) {
         $biblionumbers .= $bad_bibs;
     }
-    print $input->redirect("request.pl?biblionumber=$biblionumber");
+    print $input->redirect("request.pl?biblionumbers=$biblionumbers");
 }
 elsif ( $borrowernumber eq '' ) {
     print $input->header();