LP#1406387 Fix for Holds Placement Advanced Options
authorAdam Bowling <abowling@emeralddata.net>
Mon, 19 Jan 2015 17:05:19 +0000 (12:05 -0500)
committerChris Sharp <csharp@georgialibraries.org>
Tue, 22 Sep 2015 01:04:38 +0000 (21:04 -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 fea6613..523bbda 100644 (file)
         %]
         <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">
                         <!-- Grab the bre_id so that we can restore it if user accidentally clicks advanced options -->
                            [% bre_id = hdata.target.id %]
                             <a  id='advanced_hold_link'
-<<<<<<< HEAD
                                 href="[% mkurl('', {hold_type => 'M', hold_target => hdata.record.metarecord.id, bre_id => bre_id}) %]">
-                                [% l('Advanced Hold Options') %]</a>
-=======
-                                href="[% mkurl('', {hold_type => 'M', hold_target => hdata.record.metarecord.id}) %]">
                                 <br/><b>[% l('Advanced Hold Options') %]</a></b>
->>>>>>> a25fe69... OPAC UI modifications as per OPAC Working Group suggestions.
                         [% END %]
                         [% IF CGI.param('hold_type') == 'M' AND CGI.param('bre_id') %]
                             <input type="hidden" name="bre_id" value="[% CGI.param('bre_id') %]" />
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]);