From 166ddc9f383e2b01ff35a5e30ca2a40a1265dace Mon Sep 17 00:00:00 2001 From: phasefx Date: Wed, 18 Feb 2009 19:08:41 +0000 Subject: [PATCH] backport of checkin fix for audibles that were getting delayed by dialogs. Thanks to MLC for testing the patch! Still need to port this to 1.4 git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_2@12219 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/xul/staff_client/server/circ/checkin.js | 8 +++- Open-ILS/xul/staff_client/server/circ/util.js | 56 ++++++++++++++---------- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/Open-ILS/xul/staff_client/server/circ/checkin.js b/Open-ILS/xul/staff_client/server/circ/checkin.js index 1809617282..98882672a7 100644 --- a/Open-ILS/xul/staff_client/server/circ/checkin.js +++ b/Open-ILS/xul/staff_client/server/circ/checkin.js @@ -306,7 +306,9 @@ circ.checkin.prototype = { if (auto_print) auto_print = auto_print.checked; JSAN.use('circ.util'); circ.util.checkin_via_barcode( - ses(), { 'barcode' : barcode }, backdate, auto_print, { + ses(), + { + 'barcode' : barcode, 'disable_textbox' : function() { obj.controller.view.checkin_barcode_entry_textbox.disabled = true; obj.controller.view.cmd_checkin_submit_barcode.setAttribute('disabled', 'true'); @@ -320,7 +322,9 @@ circ.checkin.prototype = { obj.controller.view.cmd_checkin_submit_barcode.setAttribute('disabled', 'false'); obj.checkin2(checkin,backdate); } - } + }, + backdate, + auto_print ); } catch(E) { obj.error.standard_unexpected_error_alert('Something went wrong in circ.util.checkin: ',E); diff --git a/Open-ILS/xul/staff_client/server/circ/util.js b/Open-ILS/xul/staff_client/server/circ/util.js index 4010834a99..551e8e35f8 100644 --- a/Open-ILS/xul/staff_client/server/circ/util.js +++ b/Open-ILS/xul/staff_client/server/circ/util.js @@ -1020,36 +1020,44 @@ circ.util.checkin_via_barcode = function(session,params,backdate,auto_print,asyn JSAN.use('util.error'); var error = new util.error(); JSAN.use('util.network'); var network = new util.network(); JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'}); - JSAN.use('util.date'); + JSAN.use('util.date'); JSAN.use('util.functional'); if (backdate && (backdate == util.date.formatted_date(new Date(),'%Y-%m-%d')) ) backdate = null; //var params = { 'barcode' : barcode }; if (backdate) params.backdate = util.date.formatted_date(backdate + ' 00:00:00','%{iso8601}'); - if (typeof async == 'object') { - try { async.disable_textbox(); } catch(E) { error.sdump('D_ERROR','async.disable_textbox() = ' + E); }; + if (typeof params.disable_textbox == 'function') { + try { params.disable_textbox(); } + catch(E) { error.sdump('D_ERROR','params.disable_textbox() = ' + E); }; } + + function checkin_callback(req) { + try { + var check = req.getResultObject(); + var r = circ.util.checkin_via_barcode2(session,params,backdate,auto_print,check); + if (typeof params.checkin_result == 'function') { + try { params.checkin_result(r); } + catch(E) { error.sdump('D_ERROR','params.checkin_result() = ' + E); }; + } + if (typeof async == 'function') async(check); + return check; + } catch(E) { + JSAN.use('util.error'); var error = new util.error(); + error.standard_unexpected_error_alert(document.getElementById('circStrings').getFormattedString('staff.circ.checkin.error', ['1']), E); + if (typeof params.enable_textbox == 'function') { + try { params.enable_textbox(); } + catch(E) { error.sdump('D_ERROR','params.disable_textbox() = ' + E); }; + } + return null; + } + } + var check = network.request( api.CHECKIN_VIA_BARCODE.app, api.CHECKIN_VIA_BARCODE.method, - [ session, params ], - async ? function(req) { - try { - var check = req.getResultObject(); - var r = circ.util.checkin_via_barcode2(session,params,backdate,auto_print,check); - if (typeof async == 'object') { - try { async.checkin_result(r); } catch(E) { error.sdump('D_ERROR','async.checkin_result() = ' + E); }; - } - } catch(E) { - JSAN.use('util.error'); var error = new util.error(); - error.standard_unexpected_error_alert('Check In Failed (in circ.util.checkin): ',E); - if (typeof async == 'object') { - try { async.enable_textbox(); } catch(E) { error.sdump('D_ERROR','async.disable_textbox() = ' + E); }; - } - return null; - } - } : null, + [ session, util.functional.filter_object( params, function(i,o) { return typeof o != 'function'; } ) ], + async ? checkin_callback : null, { 'title' : 'Override Checkin Failure?', 'overridable_events' : [ @@ -1078,16 +1086,16 @@ circ.util.checkin_via_barcode = function(session,params,backdate,auto_print,asyn } } ); - if (!async) { - return circ.util.checkin_via_barcode2(session,params,backdate,auto_print,check); + if (! async ) { + return checkin_callback( { 'getResultObject' : function() { return check; } } ); } } catch(E) { JSAN.use('util.error'); var error = new util.error(); error.standard_unexpected_error_alert('Check In Failed (in circ.util.checkin): ',E); - if (typeof async == 'object') { - try { async.enable_textbox(); } catch(E) { error.sdump('D_ERROR','async.disable_textbox() = ' + E); }; + if (typeof params.enable_textbox == 'function') { + try { params.enable_textbox(); } catch(E) { error.sdump('D_ERROR','params.disable_textbox() = ' + E); }; } return null; } -- 2.11.0