<!ENTITY staff.circ.holds.retrieve_patron.accesskey "P">
<!ENTITY staff.circ.holds.edit_pickup_library "Edit Pickup Library">
<!ENTITY staff.circ.holds.edit_pickup_library.accesskey "L">
-<!ENTITY staff.circ.holds.edit_phone_notification "Edit Phone Notification">
+<!ENTITY staff.circ.holds.edit_phone_notification "Edit Phone Number">
<!ENTITY staff.circ.holds.edit_phone_notification.accesskey "P">
+<!ENTITY staff.circ.holds.edit_sms_notification "Edit Mobile/Text Number">
+<!ENTITY staff.circ.holds.edit_sms_notification.accesskey "T">
+<!ENTITY staff.circ.holds.edit_sms_carrier_notification "Edit Mobile/Text Carrier">
+<!ENTITY staff.circ.holds.edit_sms_carrier_notification.accesskey "C">
<!ENTITY staff.circ.holds.set_email_notification "Set Email Notification">
<!ENTITY staff.circ.holds.set_email_notification.accesskey "E">
<!ENTITY staff.circ.holds.edit_activation_date "Edit Activation Date">
},
'hold_slip' : {
'type' : 'holds',
- 'header' : 'This item needs to be routed to <b>%route_to%</b>:<br/>\r\nBarcode: %item_barcode%<br/>\r\nTitle: %item_title%<br/>\r\n<br/>\r\n%hold_for_msg%<br/>\r\nBarcode: %PATRON_BARCODE%<br/>\r\nNotify by phone: %notify_by_phone%<br/>\r\nNotify by email: %notify_by_email%<br/>\r\n',
+ 'header' : 'This item needs to be routed to <b>%route_to%</b>:<br/>\r\nBarcode: %item_barcode%<br/>\r\nTitle: %item_title%<br/>\r\n<br/>\r\n%hold_for_msg%<br/>\r\nBarcode: %PATRON_BARCODE%<br/>\r\nNotify by phone: %notify_by_phone%<br/>\r\nNotified by text: %notify_by_text%<br/>\r\nNotified by email: %notify_by_email%<br/>\r\n',
'line_item' : '%formatted_note%<br/>\r\n',
'footer' : '<br/>\r\nRequest date: %request_date%<br/>\r\nSlip Date: %TODAY_TRIM%<br/>\r\nPrinted by %STAFF_FIRSTNAME% at %SHORTNAME%<br/>\r\n<br/>\r\n'
},
},
'hold_transit_slip' : {
'type' : 'transits',
- 'header' : 'This item needs to be routed to <b>%route_to%</b>:<br/>\r\n%route_to_org_fullname%<br/>\r\n%street1%<br/>\r\n%street2%<br/>\r\n%city_state_zip%<br/>\r\n<br/>\r\nBarcode: %item_barcode%<br/>\r\nTitle: %item_title%<br/>\r\nAuthor: %item_author%<br>\r\n<br/>\r\n%hold_for_msg%<br/>\r\nBarcode: %PATRON_BARCODE%<br/>\r\nNotify by phone: %notify_by_phone%<br/>\r\nNotify by email: %notify_by_email%<br/>\r\n',
+ 'header' : 'This item needs to be routed to <b>%route_to%</b>:<br/>\r\n%route_to_org_fullname%<br/>\r\n%street1%<br/>\r\n%street2%<br/>\r\n%city_state_zip%<br/>\r\n<br/>\r\nBarcode: %item_barcode%<br/>\r\nTitle: %item_title%<br/>\r\nAuthor: %item_author%<br>\r\n<br/>\r\n%hold_for_msg%<br/>\r\nBarcode: %PATRON_BARCODE%<br/>\r\nNotify by phone: %notify_by_phone%<br/>\r\nNotified by text: %notify_by_text%<br/>\r\nNotified by email: %notify_by_email%<br/>\r\n',
'line_item' : '%formatted_note%<br/>\r\n',
'footer' : '<br/>\r\nRequest date: %request_date%<br/>\r\nSlip Date: %TODAY_TRIM%<br/>\r\nPrinted by %STAFF_FIRSTNAME% at %SHORTNAME%<br/>\r\n<br/>\r\n'
},
this.chain.push(
function() {
var f = gen_fm_retrieval_func(
+ 'csc',
+ [
+ api.FM_CSC_RETRIEVE_VIA_PCRUD.app,
+ api.FM_CSC_RETRIEVE_VIA_PCRUD.method,
+ [ obj.session.key, {"id":{"!=":null}}, {"order_by":{"csc":"name"}} ],
+ false
+ ]
+ );
+ try {
+ f();
+ } catch(E) {
+ var error = 'Error: ' + js2JSON(E);
+ obj.error.sdump('D_ERROR',error);
+ throw(E);
+ }
+ }
+ );
+
+ this.chain.push(
+ function() {
+ var f = gen_fm_retrieval_func(
'acnp',
[
api.FM_ACNP_RETRIEVE_VIA_PCRUD.app,
'FM_CNAL_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.net_access_level.retrieve.all', 'secure' : false },
'FM_CNCT_RETRIEVE' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.non_cat_types.retrieve.all', 'secure' : false },
'FM_CRAHP_RETRIEVE' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.config.rules.age_hold_protect.retrieve.all', 'secure' : false },
+ 'FM_CSC_RETRIEVE_VIA_PCRUD' : { 'app' : 'open-ils.pcrud', 'method' : 'open-ils.pcrud.search.csc.atomic' },
'FM_CSP_PCRUD_SEARCH' : { 'app' : 'open-ils.pcrud', 'method' : 'open-ils.pcrud.search.csp.atomic', 'secure' : false },
'FM_CST_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.standings.retrieve', 'secure' : false },
'FM_MB_CREATE' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.money.billing.create' },
},
{
'persist' : 'hidden width ordinal',
+ 'id' : 'sms_notify',
+ 'label' : document.getElementById('commonStrings').getString('staff.ahr_sms_notify_label'),
+ 'flex' : 1,
+ 'primary' : false,
+ 'hidden' : true,
+ 'editable' : false, 'render' : function(my) { return my.ahr.sms_notify(); }
+ },
+ {
+ 'persist' : 'hidden width ordinal',
+ 'id' : 'sms_carrier',
+ 'label' : document.getElementById('commonStrings').getString('staff.ahr_sms_carrier_label'),
+ 'flex' : 1,
+ 'primary' : false,
+ 'hidden' : true,
+ 'editable' : false, 'render' : function(my) { return data.hash.csc[ my.ahr.sms_carrier() ].name(); }
+ },
+ {
+ 'persist' : 'hidden width ordinal',
'id' : 'prev_check_time',
'label' : document.getElementById('commonStrings').getString('staff.ahr_prev_check_time_label'),
'flex' : 1,
msg += print_data.notify_by_phone_msg;
msg += '\n';
}
+ if (check.payload.hold.sms_notify()) {
+ print_data.notify_by_text_msg = document.getElementById('circStrings').getFormattedString('staff.circ.utils.payload.hold.sms_notify', [check.payload.hold.sms_notify()]);
+ print_data.notify_by_text = check.payload.hold.sms_notify();
+ msg += print_data.notify_by_text_msg;
+ msg += '\n';
+ }
if (get_bool(check.payload.hold.email_notify())) {
var payload_email = au_obj.email() ? au_obj.email() : '';
print_data.notify_by_email_msg = document.getElementById('circStrings').getFormattedString('staff.circ.utils.payload.hold.email_notify', [payload_email]);
msg += print_data.notify_by_phone_msg;
msg += '\n';
}
+ if (check.payload.hold.sms_notify()) {
+ print_data.notify_by_text_msg = document.getElementById('circStrings').getFormattedString('staff.circ.utils.payload.hold.sms_notify', [check.payload.hold.sms_notify()]);
+ print_data.notify_by_text = check.payload.hold.sms_notify();
+ msg += print_data.notify_by_text_msg;
+ msg += '\n';
+ }
if (get_bool(check.payload.hold.email_notify())) {
var payload_email = au_obj.email() ? au_obj.email() : '';
print_data.notify_by_email_msg = document.getElementById('circStrings').getFormattedString('staff.circ.utils.payload.hold.email_notify', [payload_email]);
staff.circ.utils.payload.hold.patron=Hold for patron %1$s, %2$s %3$s
staff.circ.utils.payload.hold.patron_alias=Hold for patron %1$s
staff.circ.utils.payload.hold.phone_notify=Notify by phone: %1$s
+staff.circ.utils.payload.hold.sms_notify=Notify by text: %1$s
staff.circ.utils.payload.hold.email_notify=Notify by email: %1$s
staff.circ.utils.payload.hold.request_date=Request Date: %1$s
staff.circ.utils.payload.hold.slip_date=Slip Date: %1$s
staff.ahr_issuance_label_label=Issuance Label
staff.ahr_id_label=Hold ID
staff.ahr_phone_notify_label=Phone Notify
+staff.ahr_sms_notify_label=Text Notify
+staff.ahr_sms_carrier_label=Text Carrier
staff.ahr_pickup_lib_label=Pickup Library
staff.ahr_prev_check_time_label=Previous Check Time
staff.ahr_requestor_label=Requestor
staff.patron.holds.holds_edit_phone_notify.confirm_phone_number_change.singular=Are you sure you would like to change the Notification Phone Number for hold %1$s to "%2$s"?
staff.patron.holds.holds_edit_phone_notify.confirm_phone_number_change.plural=Are you sure you would like to change the Notification Phone Number for holds %1$s to "%2$s"?
staff.patron.holds.holds_edit_phone_notify.modifying_holds_title=Modifying Holds
+staff.patron.holds.holds_edit_sms_notify.new_phone_number=Please enter a new mobile number for hold notification via text (leave the field empty to disable):
+staff.patron.holds.holds_edit_sms_notify.btn_done.label=Done
+staff.patron.holds.holds_edit_sms_notify.btn_done.accesskey=D
+staff.patron.holds.holds_edit_sms_notify.btn_cancel.label=Cancel
+staff.patron.holds.holds_edit_sms_notify.btn_cancel.accesskey=C
+staff.patron.holds.holds_edit_sms_notify.choose_phone_number=Choose a Hold Notification Mobile Text Number
+staff.patron.holds.holds_edit_sms_notify.confirm_phone_number_change.singular=Are you sure you would like to change the Notification Mobile/Text Number for hold %1$s to "%2$s"?
+staff.patron.holds.holds_edit_sms_notify.confirm_phone_number_change.plural=Are you sure you would like to change the Notification Mobile/Text Number for holds %1$s to "%2$s"?
+staff.patron.holds.holds_edit_sms_notify.modifying_holds_title=Modifying Holds
+staff.patron.holds.holds_edit_sms_carrier.new_carrier=Please select a new mobile carrier for hold notification via text:
+staff.patron.holds.holds_edit_sms_carrier.btn_done.label=Done
+staff.patron.holds.holds_edit_sms_carrier.btn_done.accesskey=D
+staff.patron.holds.holds_edit_sms_carrier.btn_cancel.label=Cancel
+staff.patron.holds.holds_edit_sms_carrier.btn_cancel.accesskey=C
+staff.patron.holds.holds_edit_sms_carrier.choose_carrier=Select a Hold Notification Mobile Text Carrier
+staff.patron.holds.holds_edit_sms_carrier.confirm_carrier_change.singular=Are you sure you would like to change the Notification Mobile/Text Carrier for hold %1$s to "%2$s"?
+staff.patron.holds.holds_edit_sms_carrier.confirm_carrier_change.plural=Are you sure you would like to change the Notification Mobile/Text Carrier for holds %1$s to "%2$s"?
+staff.patron.holds.holds_edit_sms_carrier.modifying_holds_title=Modifying Holds
staff.patron.holds.holds_edit_email_notify.description=Send email notifications (when appropriate)? The email address used is found in the hold recipient account.
staff.patron.holds.holds_edit_email_notify.btn_email.label=Email
staff.patron.holds.holds_edit_email_notify.btn_email.accesskey=E
}
}
],
+
+ 'cmd_holds_edit_sms_notify' : [
+ ['command'],
+ function() {
+ try {
+ var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
+ xml += '<description>'+$("patronStrings").getString('staff.patron.holds.holds_edit_sms_notify.new_phone_number')+'</description>';
+ xml += '<textbox id="phone" name="fancy_data" context="clipboard"/>';
+ xml += '</vbox>';
+ var bot_xml = '<hbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
+ bot_xml += '<spacer flex="1"/><button label="'+$("patronStrings").getString('staff.patron.holds.holds_edit_sms_notify.btn_done.label')+'"';
+ bot_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_sms_notify.btn_done.accesskey')+'" name="fancy_submit"/>';
+ bot_xml += '<button label="'+$("patronStrings").getString('staff.patron.holds.holds_edit_sms_notify.btn_cancel.label')+'"';
+ bot_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_sms_notify.btn_cancel.accesskey')+'" name="fancy_cancel"/></hbox>';
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
+ //obj.data.temp_mid = xml; obj.data.stash('temp_mid');
+ //obj.data.temp_bot = bot_xml; obj.data.stash('temp_bot');
+ JSAN.use('util.window'); var win = new util.window();
+ var fancy_prompt_data = win.open(
+ urls.XUL_FANCY_PROMPT,
+ //+ '?xml_in_stash=temp_mid'
+ //+ '&bottom_xml_in_stash=temp_bot'
+ //+ '&title=' + window.escape('Choose a Hold Notification Phone Number')
+ //+ '&focus=phone',
+ 'fancy_prompt', 'chrome,resizable,modal',
+ { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : $("patronStrings").getString('staff.patron.holds.holds_edit_sms_notify.choose_phone_number'), 'focus' : 'phone' }
+ );
+ if (fancy_prompt_data.fancy_status == 'incomplete') { return; }
+ var phone = fancy_prompt_data.phone;
+
+ var hold_list = util.functional.map_list(obj.retrieve_ids, function(o){return o.id;});
+ var msg = '';
+ if(obj.retrieve_ids.length > 1) {
+ msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_sms_notify.confirm_phone_number_change.plural',[hold_list.join(', '), phone]);
+ } else {
+ msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_sms_notify.confirm_phone_number_change.singular',[hold_list.join(', '), phone]);
+ }
+ var r = obj.error.yns_alert(msg,
+ $("patronStrings").getString('staff.patron.holds.holds_edit_sms_notify.modifying_holds_title'),
+ $("commonStrings").getString('common.yes'),
+ $("commonStrings").getString('common.no'),
+ null,
+ $("commonStrings").getString('common.check_to_confirm')
+ );
+ if (r == 0) {
+ var hparams = {
+ 'sms_notify' : phone == '' ? null : phone
+ }
+ if (phone == '') {
+ hparams.sms_carrier = null;
+ }
+ circ.util.batch_hold_update(hold_list, hparams, { 'progressmeter' : progressmeter, 'oncomplete' : function() { obj.clear_and_retrieve(true); } });
+ }
+ } catch(E) {
+ obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.holds_not_modified'),E);
+ }
+ }
+ ],
+
+ 'cmd_holds_edit_sms_carrier' : [
+ ['command'],
+ function() {
+ try {
+ JSAN.use('util.widgets'); JSAN.use('util.functional');
+
+ var list = util.functional.map_list(
+ obj.data.list.csc,
+ function(o) {
+ return [
+ o.name() + ' (' + o.region() + ')',
+ o.id(),
+ ( !isTrue(o.active()) ),
+ 0
+ ];
+ }
+ );
+ ml = util.widgets.make_menulist( list, obj.data.list.au[0].ws_ou() );
+ ml.setAttribute('id','carrier');
+ ml.setAttribute('name','fancy_data');
+ var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
+ xml += '<description>'+$("patronStrings").getString('staff.patron.holds.holds_edit_sms_carrier.new_carrier')+'</description>';
+ xml += util.widgets.serialize_node(ml);
+ xml += '</vbox>';
+ var bot_xml = '<hbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
+ bot_xml += '<spacer flex="1"/><button label="'+ $("patronStrings").getString('staff.patron.holds.holds_edit_sms_carrier.btn_done.label') +'"';
+ bot_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_sms_carrier.btn_done.accesskey')+'" name="fancy_submit"/>';
+ bot_xml += '<button label="'+$("patronStrings").getString('staff.patron.holds.holds_edit_sms_carrier.btn_cancel.label')+'"';
+ bot_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_sms_carrier.btn_cancel.accesskey')+'" name="fancy_cancel"/></hbox>';
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
+ //obj.data.temp_mid = xml; obj.data.stash('temp_mid');
+ //obj.data.temp_bot = bot_xml; obj.data.stash('temp_bot');
+ JSAN.use('util.window'); var win = new util.window();
+ var fancy_prompt_data = win.open(
+ urls.XUL_FANCY_PROMPT,
+ //+ '?xml_in_stash=temp_mid'
+ //+ '&bottom_xml_in_stash=temp_bot'
+ //+ '&title=' + window.escape('Choose a Pick Up Library'),
+ 'fancy_prompt', 'chrome,resizable,modal',
+ { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : $("patronStrings").getString('staff.patron.holds.holds_edit_sms_carrier.choose_carrier') }
+ );
+ if (fancy_prompt_data.fancy_status == 'incomplete') { return; }
+ var sms_carrier = fancy_prompt_data.carrier;
+
+ var hold_list = util.functional.map_list(obj.retrieve_ids, function(o){return o.id;});
+ var msg = '';
+
+ if(obj.retrieve_ids.length > 1) {
+ msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_sms_carrier.confirm_carrier_change.plural',[hold_list.join(', '), obj.data.hash.csc[sms_carrier].name()]);
+ } else {
+ msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_sms_carrier.confirm_carrier_change.singular',[hold_list.join(', '), obj.data.hash.csc[sms_carrier].name()]);
+ }
+ var r = obj.error.yns_alert(msg,
+ $("patronStrings").getString('staff.patron.holds.holds_edit_sms_carrier.modifying_holds_title'),
+ $("commonStrings").getString('common.yes'),
+ $("commonStrings").getString('common.no'),
+ null,
+ $("commonStrings").getString('common.check_to_confirm')
+ );
+ if (r == 0) {
+ circ.util.batch_hold_update(hold_list, { 'sms_carrier' : sms_carrier }, { 'progressmeter' : progressmeter, 'oncomplete' : function() { obj.clear_and_retrieve(true); } });
+ }
+ } catch(E) {
+ obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.holds_not_modified'),E);
+ }
+ }
+ ],
+
'cmd_holds_edit_email_notify' : [
['command'],
function() {
<command id="cmd_holds_edit_desire_mint_condition" />
<command id="cmd_holds_edit_pickup_lib" />
<command id="cmd_holds_edit_phone_notify" />
+ <command id="cmd_holds_edit_sms_notify"
+ label="&staff.circ.holds.edit_sms_notification;"
+ accesskey="&staff.circ.holds.edit_sms_notification.accesskey;"/>
+ <command id="cmd_holds_edit_sms_carrier"
+ label="&staff.circ.holds.edit_sms_carrier_notification;"
+ accesskey="&staff.circ.holds.edit_sms_carrier_notification.accesskey;"/>
<command id="cmd_holds_edit_email_notify" />
<command id="cmd_holds_edit_thaw_date" />
<command id="cmd_holds_edit_request_date" />
<menuitem label="&staff.circ.holds.edit_desire_mint_condition;" command="cmd_holds_edit_desire_mint_condition" accesskey="&staff.circ.holds.edit_desire_mint_condition.accesskey;"/>
<menuitem label="&staff.circ.holds.edit_pickup_library;" command="cmd_holds_edit_pickup_lib" accesskey="&staff.circ.holds.edit_pickup_library.accesskey;"/>
<menuitem label="&staff.circ.holds.edit_phone_notification;" command="cmd_holds_edit_phone_notify" accesskey="&staff.circ.holds.edit_phone_notification.accesskey;"/>
+ <menuitem command="cmd_holds_edit_sms_carrier" />
+ <menuitem command="cmd_holds_edit_sms_notify" />
<menuitem label="&staff.circ.holds.set_email_notification;" command="cmd_holds_edit_email_notify" accesskey="&staff.circ.holds.set_email_notification.accesskey;"/>
<menuitem label="&staff.circ.holds.edit_expire_time;" command="cmd_holds_edit_expire_time" accesskey="&staff.circ.holds.edit_expire_time.accesskey;"/>
<menuitem label="&staff.circ.holds.edit_shelf_expire_time;" command="cmd_holds_edit_shelf_expire_time" accesskey="&staff.circ.holds.edit_shelf_expire_time.accesskey;"/>
<menuitem label="&staff.circ.holds.edit_desire_mint_condition;" command="cmd_holds_edit_desire_mint_condition" accesskey="&staff.circ.holds.edit_desire_mint_condition.accesskey;"/>
<menuitem label="&staff.circ.holds.edit_pickup_library;" command="cmd_holds_edit_pickup_lib" accesskey="&staff.circ.holds.edit_pickup_library.accesskey;"/>
<menuitem label="&staff.circ.holds.edit_phone_notification;" command="cmd_holds_edit_phone_notify" accesskey="&staff.circ.holds.edit_phone_notification.accesskey;"/>
+ <menuitem command="cmd_holds_edit_sms_carrier" />
+ <menuitem command="cmd_holds_edit_sms_notify" />
<menuitem label="&staff.circ.holds.set_email_notification;" command="cmd_holds_edit_email_notify" accesskey="&staff.circ.holds.set_email_notification.accesskey;"/>
<menuitem label="&staff.circ.holds.edit_expire_time;" command="cmd_holds_edit_expire_time" accesskey="&staff.circ.holds.edit_expire_time.accesskey;"/>
<menuitem label="&staff.circ.holds.edit_shelf_expire_time;" command="cmd_holds_edit_shelf_expire_time" accesskey="&staff.circ.holds.edit_shelf_expire_time.accesskey;"/>