From dff18e6cb09c5ffe26ca6b33b9396fe4714c2dc7 Mon Sep 17 00:00:00 2001 From: phasefx Date: Mon, 22 Sep 2008 20:52:22 +0000 Subject: [PATCH] staff function for editing expiration date for arbitrary holds in various hold interfaces git-svn-id: svn://svn.open-ils.org/ILS/trunk@10687 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/opac/locale/en-US/lang.dtd | 2 + Open-ILS/xul/staff_client/server/circ/util.js | 9 ++++ .../server/locale/en-US/circ.properties | 5 +++ .../server/locale/en-US/common.properties | 1 + Open-ILS/xul/staff_client/server/patron/holds.js | 52 ++++++++++++++++++++++ Open-ILS/xul/staff_client/server/patron/holds.xul | 1 + .../staff_client/server/patron/holds_overlay.xul | 6 ++- 7 files changed, 74 insertions(+), 2 deletions(-) diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index d7eb188364..a8884aeede 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -1723,6 +1723,8 @@ + + diff --git a/Open-ILS/xul/staff_client/server/circ/util.js b/Open-ILS/xul/staff_client/server/circ/util.js index 1fc236c609..0ed540888a 100644 --- a/Open-ILS/xul/staff_client/server/circ/util.js +++ b/Open-ILS/xul/staff_client/server/circ/util.js @@ -1521,6 +1521,15 @@ circ.util.hold_columns = function(modify,params) { }, { 'persist' : 'hidden width ordinal', + 'id' : 'expire_date', + 'label' : document.getElementById('commonStrings').getString('staff.ahr_expire_date_label'), + 'flex' : 1, + 'primary' : false, + 'hidden' : true, + 'render' : function(my) { return my.ahr.expire_time() ? my.ahr.expire_time().toString().substr(0,10) : ''; } + }, + { + 'persist' : 'hidden width ordinal', 'id' : 'fulfillment_time', 'label' : document.getElementById('commonStrings').getString('staff.ahr_fulfillment_time_label'), 'flex' : 1, diff --git a/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties b/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties index ebea81de75..744ff9bad4 100644 --- a/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties +++ b/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties @@ -322,6 +322,11 @@ staff.circ.holds.activation_date.prompt=Please enter an Activation Date (or leav staff.circ.holds.activation_date.prompt.plural=Please enter an Activation Date (or leave blank to unset) for holds %1$s. This will also Suspend the holds. staff.circ.holds.activation_date.too_early.error=Activation Date needs to be either unset or set to fall on a future date. staff.circ.holds.activation_date.invalid_date=Invalid Date +staff.circ.holds.expire_time.prompt=Please enter an Expiration Date (or leave blank to unset) for hold %1$s. +staff.circ.holds.expire_time.prompt.plural=Please enter an Expiration Date (or leave blank to unset) for holds %1$s. +staff.circ.holds.expire_time.too_early.error=Expiration Date needs to be either unset or set to fall on a future date. +staff.circ.holds.expire_time.invalid_date=Invalid Date + staff.circ.holds.modifying_holds=Modifying Holds staff.circ.holds.modifying_holds.yes=Yes staff.circ.holds.modifying_holds.no=No diff --git a/Open-ILS/xul/staff_client/server/locale/en-US/common.properties b/Open-ILS/xul/staff_client/server/locale/en-US/common.properties index d7e189106f..963fcc9c78 100644 --- a/Open-ILS/xul/staff_client/server/locale/en-US/common.properties +++ b/Open-ILS/xul/staff_client/server/locale/en-US/common.properties @@ -43,6 +43,7 @@ staff.ahr_current_copy_label=Current Copy staff.ahr_current_copy_location_label=Current Copy Location staff.ahr_email_notify_label=Email Notify staff.ahr_expire_time_label=Expire Time +staff.ahr_expire_date_label=Expire Date staff.ahr_fulfillment_time_label=Fulfillment Time staff.ahr_hold_type_label=Type staff.ahr_holdable_formats_label=Holdable Formats diff --git a/Open-ILS/xul/staff_client/server/patron/holds.js b/Open-ILS/xul/staff_client/server/patron/holds.js index 19677ebe76..5964bd3119 100644 --- a/Open-ILS/xul/staff_client/server/patron/holds.js +++ b/Open-ILS/xul/staff_client/server/patron/holds.js @@ -128,6 +128,7 @@ patron.holds.prototype = { obj.controller.view.cmd_holds_edit_phone_notify.setAttribute('disabled','false'); obj.controller.view.cmd_holds_edit_email_notify.setAttribute('disabled','false'); obj.controller.view.cmd_holds_edit_selection_depth.setAttribute('disabled','false'); + obj.controller.view.cmd_holds_edit_expire_time.setAttribute('disabled','false'); obj.controller.view.cmd_holds_edit_thaw_date.setAttribute('disabled','false'); obj.controller.view.cmd_holds_activate.setAttribute('disabled','false'); obj.controller.view.cmd_holds_suspend.setAttribute('disabled','false'); @@ -145,6 +146,7 @@ patron.holds.prototype = { obj.controller.view.cmd_holds_edit_phone_notify.setAttribute('disabled','true'); obj.controller.view.cmd_holds_edit_email_notify.setAttribute('disabled','true'); obj.controller.view.cmd_holds_edit_selection_depth.setAttribute('disabled','true'); + obj.controller.view.cmd_holds_edit_expire_time.setAttribute('disabled','true'); obj.controller.view.cmd_holds_edit_thaw_date.setAttribute('disabled','true'); obj.controller.view.cmd_holds_activate.setAttribute('disabled','true'); obj.controller.view.cmd_holds_suspend.setAttribute('disabled','true'); @@ -662,6 +664,56 @@ patron.holds.prototype = { } } ], + 'cmd_holds_edit_expire_time' : [ + ['command'], + function() { + try { + JSAN.use('util.date'); + function check_date(value) { + try { + if (! util.date.check('YYYY-MM-DD',value) ) { throw(document.getElementById('circStrings').getString('staff.circ.holds.expire_time.invalid_date')); } + if (util.date.check_past('YYYY-MM-DD',value) || util.date.formatted_date(new Date(),'%F') == value ) { + throw(document.getElementById('circStrings').getString('staff.circ.holds.expire_time.too_early.error')); + } + return true; + } catch(E) { + alert(E); + return false; + } + } + + var hold_ids = util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', '); + var msg_singular = document.getElementById('circStrings').getFormattedString('staff.circ.holds.expire_time.prompt',[hold_ids]); + var msg_plural = document.getElementById('circStrings').getFormattedString('staff.circ.holds.expire_time.prompt',[hold_ids]); + var msg = obj.retrieve_ids.length > 1 ? msg_plural : msg_singular; + var value = 'YYYY-MM-DD'; + var title = document.getElementById('circStrings').getString('staff.circ.holds.modifying_holds'); + var expire_time; var invalid = true; + while(invalid) { + expire_time = window.prompt(msg,value,title); + if (expire_time) { + invalid = ! check_date(expire_time); + } else { + invalid = false; + } + } + if (expire_time || expire_time == '') { + for (var i = 0; i < obj.retrieve_ids.length; i++) { + var hold = obj.holds_map[ obj.retrieve_ids[i].id ]; + hold.expire_time( expire_time == '' ? null : util.date.formatted_date(expire_time + ' 00:00:00','%{iso8601}') ); hold.ischanged('1'); + hold = obj.flatten_copy(hold); + var robj = obj.network.simple_request('FM_AHR_UPDATE',[ ses(), hold ]); + if (typeof robj.ilsevent != 'undefined') throw(robj); + } + obj.clear_and_retrieve(true); + } + } catch(E) { + obj.error.standard_unexpected_error_alert(document.getElementById('circStrings').getString('staff.circ.holds.unexpected_error.not_likely_modified'),E); + } + } + ], + + 'cmd_holds_retarget' : [ ['command'], diff --git a/Open-ILS/xul/staff_client/server/patron/holds.xul b/Open-ILS/xul/staff_client/server/patron/holds.xul index 7ec7c4e441..f64a58a932 100644 --- a/Open-ILS/xul/staff_client/server/patron/holds.xul +++ b/Open-ILS/xul/staff_client/server/patron/holds.xul @@ -90,6 +90,7 @@ + diff --git a/Open-ILS/xul/staff_client/server/patron/holds_overlay.xul b/Open-ILS/xul/staff_client/server/patron/holds_overlay.xul index 321262bd77..52698d80f4 100644 --- a/Open-ILS/xul/staff_client/server/patron/holds_overlay.xul +++ b/Open-ILS/xul/staff_client/server/patron/holds_overlay.xul @@ -22,7 +22,8 @@ - + + @@ -84,7 +85,8 @@ - + + -- 2.11.0