From b055fe4a99b58d2ac1634398a1bc85d8581a8316 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 25 Feb 2014 14:58:06 -0500 Subject: [PATCH] LP#1284864 propagate patron barcode to advanced hold options 1. Staff searches the catalog within the staff client, not focused on a patron. 2. Staff types a barcode into the patron barcode input 3. Staff clicks "Advanced Holds Options" and the typed barcode now propagates to the metarecord hold page. -- Minor HTML cleanup to avoid 350+-wide character columns. Signed-off-by: Bill Erickson Signed-off-by: Mike Rylander --- .../src/templates/opac/parts/place_hold.tt2 | 16 +++++++++-- Open-ILS/web/js/ui/default/opac/staff.js | 28 +++++++++++++++++-- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/Open-ILS/src/templates/opac/parts/place_hold.tt2 b/Open-ILS/src/templates/opac/parts/place_hold.tt2 index 390b9ea297..5383753a7e 100644 --- a/Open-ILS/src/templates/opac/parts/place_hold.tt2 +++ b/Open-ILS/src/templates/opac/parts/place_hold.tt2 @@ -23,8 +23,17 @@ -
- + + +
+ + [% l('Advanced Hold Options') %] [% END %] [% IF hdata.metarecord_filters.formats.size OR # should this be size > 1 diff --git a/Open-ILS/web/js/ui/default/opac/staff.js b/Open-ILS/web/js/ui/default/opac/staff.js index 2be839f36b..8bae62f732 100644 --- a/Open-ILS/web/js/ui/default/opac/staff.js +++ b/Open-ILS/web/js/ui/default/opac/staff.js @@ -27,13 +27,23 @@ function no_hold_submit(event) { return true; } function staff_hold_usr_barcode_changed(isload) { + + if (!document.getElementById('place_hold_submit')) { + // in some cases, the submit button is not present. + // exit early to avoid needless JS errors + return; + } + if(typeof xulG != 'undefined' && xulG.get_barcode_and_settings) { var cur_hold_barcode = undefined; var barcode = isload; if(!barcode || barcode === true) barcode = document.getElementById('staff_barcode').value; var only_settings = true; + var bc_from_cgi = false; // user_barcode passed via cgi if(!document.getElementById('hold_usr_is_requestor').checked) { - if(!isload) { + if (isload && document.getElementById('hold_usr_input').value) + bc_from_cgi = true; + if(!isload || bc_from_cgi) { barcode = document.getElementById('hold_usr_input').value; only_settings = false; } @@ -94,8 +104,20 @@ function staff_hold_usr_barcode_changed(isload) { document.getElementById('patron_name').innerHTML = load_info.patron_name; document.getElementById("patron_usr_barcode_not_found").style.display = 'none'; } - // Ok, now we can allow submitting again, unless this is a "true" load, in which case we likely have a blank barcode box active - if (isload !== true) + + // update the advanced hold options link to propagate the patron + // barcode if clicked. This is needed when the patron barcode + // is manually entered (i.e. the staff client does not provide one). + var adv_link = document.getElementById('advanced_hold_link'); + if (adv_link) { // not present on MR hold pages + var href = adv_link.getAttribute('href').replace( + /;usr_barcode=[^;\&]+|$/, + ';usr_barcode=' + encodeURIComponent(cur_hold_barcode)); + adv_link.setAttribute('href', href); + } + + // if we're here, we have a valid barcode. activate the sumbmit option + if(!isload || bc_from_cgi) document.getElementById('place_hold_submit').disabled = false; } } -- 2.43.2