LP#1406387 Fix for Holds Placement Advanced Options
authorAdam Bowling <abowling@emeralddata.net>
Mon, 19 Jan 2015 17:05:19 +0000 (12:05 -0500)
committerKathy Lussier <klussier@masslnc.org>
Tue, 9 Jun 2015 20:34:48 +0000 (16:34 -0400)
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.net>
Conflicts:

Open-ILS/src/templates/opac/parts/place_hold.tt2

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

index 467e02b..512c4c9 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_requetor = '0';
+           END;
+
+           IF is_requestor == '0' && usr_barcode == ctx.staff_recipient.card.barcode;
+               usr_barcode = '';
+           END;
+        %]
 
         [% IF ctx.is_staff %]
         <p class="staff-hold">
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]);