From f4bd9506c07f5d122883daf9d33aa66234389a70 Mon Sep 17 00:00:00 2001 From: phasefx Date: Tue, 7 Dec 2010 20:01:09 +0000 Subject: [PATCH] add unsaved data warning to offline interface. tweak oils_lock_page/oils_unlock_page to support multiple locks. Hide Cancel buttons in offline interfaces, which weren't consistently implemented and had no warnings. TODO: fix it so that closing the login window won't kill offline UI with unsaved data git-svn-id: svn://svn.open-ils.org/ILS/trunk@18930 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../chrome/content/OpenILS/global_util.js | 18 +++--- .../chrome/content/circ/offline.js | 64 +++++++++++++++++-- .../chrome/content/circ/offline_checkin.js | 18 ++++++ .../chrome/content/circ/offline_checkin.xul | 2 +- .../chrome/content/circ/offline_checkout.js | 20 ++++++ .../chrome/content/circ/offline_checkout.xul | 2 +- .../content/circ/offline_in_house_use.js | 18 ++++++ .../content/circ/offline_in_house_use.xul | 2 +- .../chrome/content/circ/offline_register.js | 48 ++++++++++++++ .../chrome/content/circ/offline_register.xul | 2 +- .../chrome/content/circ/offline_renew.js | 23 ++++++- .../chrome/content/circ/offline_renew.xul | 2 +- 12 files changed, 199 insertions(+), 20 deletions(-) diff --git a/Open-ILS/xul/staff_client/chrome/content/OpenILS/global_util.js b/Open-ILS/xul/staff_client/chrome/content/OpenILS/global_util.js index c207eb9a9f..aa6b966e80 100644 --- a/Open-ILS/xul/staff_client/chrome/content/OpenILS/global_util.js +++ b/Open-ILS/xul/staff_client/chrome/content/OpenILS/global_util.js @@ -3,37 +3,39 @@ function oils_lock_page(params) { dump('oils_lock_page\n'); if (!params) { params = {}; } - if (window.oils_lock) { + if (window.oils_lock > 0) { if (!params.allow_multiple_locks) { - return 'already locked'; + return window.oils_lock; } } - window.oils_lock = true; + window.oils_lock++; if (typeof xulG != 'undefined') { if (typeof xulG.unlock_tab == 'function') { xulG.lock_tab(); } } - return 'locked'; + return window.oils_lock; } function oils_unlock_page(params) { dump('oils_unlock_page\n'); - window.oils_lock = false; + window.oils_lock--; + if (window.oils_lock < 0) { window.oils_lock = 0; } if (typeof xulG != 'undefined') { if (typeof xulG.unlock_tab == 'function') { xulG.unlock_tab(); } } - return 'unlocked'; + return window.oils_lock; } + window.oils_lock = 0; window.addEventListener( 'close', function(ev) { try { dump('oils_lock_page/oils_unlock_page onclose handler\n'); - if (window.oils_lock) { + if (window.oils_lock > 0) { var confirmation = window.confirm($('offlineStrings').getString('menu.close_window.unsaved_data_warning')); if (!confirmation) { ev.preventDefault(); @@ -41,7 +43,7 @@ } } - window.oils_lock = false; + window.oils_lock = 0; if (typeof xulG != 'undefined') { if (typeof xulG.unlock_tab == 'function') { xulG.unlock_tab(); diff --git a/Open-ILS/xul/staff_client/chrome/content/circ/offline.js b/Open-ILS/xul/staff_client/chrome/content/circ/offline.js index 12fe1b7ac7..d3cc499d93 100644 --- a/Open-ILS/xul/staff_client/chrome/content/circ/offline.js +++ b/Open-ILS/xul/staff_client/chrome/content/circ/offline.js @@ -31,23 +31,68 @@ circ.offline.prototype = { ], 'cmd_checkout' : [ ['command'], - function() { obj.deck.set_iframe('offline_checkout.xul',{},{}); } + function() { + obj.deck.set_iframe( + 'offline_checkout.xul', + {}, + { + 'lock' : function() { oils_lock_page({'allow_multiple_locks':true}); }, + 'unlock' : oils_unlock_page + } + ); + } ], 'cmd_renew' : [ ['command'], - function() { obj.deck.set_iframe('offline_renew.xul',{},{}); } + function() { + obj.deck.set_iframe( + 'offline_renew.xul', + {}, + { + 'lock' : function() { oils_lock_page({'allow_multiple_locks':true}); }, + 'unlock' : oils_unlock_page + } + ); + } ], 'cmd_in_house_use' : [ ['command'], - function() { obj.deck.set_iframe('offline_in_house_use.xul',{},{}); } + function() { + obj.deck.set_iframe( + 'offline_in_house_use.xul', + {}, + { + 'lock' : function() { oils_lock_page({'allow_multiple_locks':true}); }, + 'unlock' : oils_unlock_page + } + ); + } ], 'cmd_checkin' : [ ['command'], - function() { obj.deck.set_iframe('offline_checkin.xul',{},{}); } + function() { + obj.deck.set_iframe( + 'offline_checkin.xul', + {}, + { + 'lock' : function() { oils_lock_page({'allow_multiple_locks':true}); }, + 'unlock' : oils_unlock_page + } + ); + } ], 'cmd_register_patron' : [ ['command'], - function() { obj.deck.set_iframe('offline_register.xul',{},{}); } + function() { + obj.deck.set_iframe( + 'offline_register.xul', + {}, + { + 'lock' : function() { oils_lock_page({'allow_multiple_locks':true}); }, + 'unlock' : oils_unlock_page + } + ); + } ], 'cmd_print_last_receipt' : [ ['command'], @@ -58,7 +103,14 @@ circ.offline.prototype = { ], 'cmd_exit' : [ ['command'], - function() { try { xulG.close_tab(); } catch(E) { window.close(); } } + function() { + try { + xulG.close_tab(); + } catch(E) { + JSAN.use('util.widgets'); + util.widgets.dispatch('close',window); + } + } ], } } diff --git a/Open-ILS/xul/staff_client/chrome/content/circ/offline_checkin.js b/Open-ILS/xul/staff_client/chrome/content/circ/offline_checkin.js index fd6b69f48c..5fb625c729 100644 --- a/Open-ILS/xul/staff_client/chrome/content/circ/offline_checkin.js +++ b/Open-ILS/xul/staff_client/chrome/content/circ/offline_checkin.js @@ -1,4 +1,5 @@ var offlineStrings; +var local_lock = false; function my_init() { try { @@ -26,6 +27,13 @@ function my_init() { JSAN.use('util.date'); + function handle_lock(ev) { + if (!local_lock) { + local_lock = true; + xulG.lock(); + } + } + $('i_barcode').addEventListener('change',handle_lock,false); $('i_barcode').addEventListener('keypress',handle_keypress,false); $('i_barcode').focus(); @@ -92,6 +100,11 @@ function append_to_list() { var x = $('i_barcode'); x.value = ''; x.focus(); + if (!local_lock) { + local_lock = true; + xulG.lock(); + } + } catch(E) { dump(E+'\n'); alert(E); @@ -109,6 +122,11 @@ function next_patron() { } file.close(); + if (local_lock) { + local_lock = false; + xulG.unlock(); + } + if ($('print_receipt').checked) { try { var params = { diff --git a/Open-ILS/xul/staff_client/chrome/content/circ/offline_checkin.xul b/Open-ILS/xul/staff_client/chrome/content/circ/offline_checkin.xul index c6a824217a..8c43929150 100644 --- a/Open-ILS/xul/staff_client/chrome/content/circ/offline_checkin.xul +++ b/Open-ILS/xul/staff_client/chrome/content/circ/offline_checkin.xul @@ -67,7 +67,7 @@ -