LP#1406387 Fix for Holds Placement Advanced Options
authorAdam Bowling <abowling@emeralddata.net>
Mon, 19 Jan 2015 17:05:19 +0000 (12:05 -0500)
committerBen Shum <bshum@biblio.org>
Thu, 5 Nov 2015 15:02:03 +0000 (10:02 -0500)
In the staff client, when placing a hold and clicking
Advanced Hold Options, the barcode input will populate
with the staff member's barcode if it was previously
empty, regardless of whether the radio input for the
hold was specified for a patron or the staff member.

This patch corrects that behavior, and also populates
the input radio on load after clicking Advanced Hold
Options.

Signed-off-by: Adam Bowling <abowling@emeralddata>
Signed-off-by: Michael Peters <mpeters@emeralddata.net>
Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
Signed-off-by: Ben Shum <bshum@biblio.org>

Open-ILS/src/templates/opac/parts/place_hold.tt2
Open-ILS/web/js/ui/default/opac/staff.js

index 467e02b..e9fc008 100644 (file)
             redirect = redirect.replace('^http:', 'https:') 
         %]
         <input type="hidden" name="redirect_to" value="[% redirect | html %]" />
-        <input type="hidden" name="hold_source_page" value="[% CGI.param('hold_source_page') | html %]" />
+        [%
+            usr_barcode = CGI.param('usr_barcode') | html;
+            is_requestor = CGI.param('is_requestor');
+
+           IF is_requestor == '';
+               is_requestor = '0';
+           END;
+
+           IF is_requestor == '0' && usr_barcode == ctx.staff_recipient.card.barcode;
+               usr_barcode = '';
+           END;
+        %]
 
         [% IF ctx.is_staff %]
         <p class="staff-hold">
@@ -28,7 +39,7 @@
                 [% l("Place hold for patron by barcode:") %]
             </label>
             <input type="text" name="hold_usr" id="hold_usr_input" 
-              value="[% CGI.param('usr_barcode') | html %]"
+              value="[% usr_barcode | html %]" 
               onchange="staff_hold_usr_barcode_changed();" 
               onpaste="setTimeout(staff_hold_usr_barcode_changed,1);" 
               onkeypress="return no_hold_submit(event)" autofocus /> 
index d281ca2..fff3aea 100644 (file)
@@ -42,6 +42,13 @@ function staff_hold_usr_barcode_changed(isload) {
     }
 
     if (!window.xulG) return;
+    var adv_link = document.getElementById('advanced_hold_link');
+    if (adv_link) {
+        adv_link.setAttribute('href', adv_link.getAttribute('href').replace(/&?is_requestor=[01]/,''));
+        var is_requestor = document.getElementById('hold_usr_is_requestor').checked ? 1 : 0;
+        adv_link.setAttribute('href', adv_link.getAttribute('href') + '&is_requestor=' + is_requestor.toString());
+    }
 
     var cur_hold_barcode = undefined;
     var barcode = isload;
@@ -156,6 +163,21 @@ window.onload = function() {
     // record details page events
 
     setTimeout(function() {
+
+        if (location.href.match(/is_requestor=[01]/)) {
+            var loc = location.href;
+            var is_req_match = new RegExp("is_requestor=[01]");
+            var is_req = is_req_match.exec(loc).toString();
+            is_req = is_req.replace(/is_requestor=/, '');
+            if (is_req == "1") {
+                document.getElementById('hold_usr_is_requestor').checked = 'checked';
+                document.getElementById('hold_usr_input').disabled = true;
+            } else {
+                document.getElementById('hold_usr_is_requestor_not').checked = 'checked';
+                document.getElementById('hold_usr_input').disabled = false;
+            }
+        }
+
         var rec = location.href.match(/\/opac\/record\/(\d+)/);
         if(rec && rec[1]) { 
             runEvt('rdetail', 'recordRetrieved', rec[1]);