--- /dev/null
+BEGIN;
+
+-- SELECT evergreen.upgrade_deps_block_check('xxxx', :eg_version);
+
+INSERT into config.org_unit_setting_type (name, label, grp, description, datatype)
+values ('circ.staff_placed_holds_honor_patron_prefs_first','Honor the patron-preferred Pickup Library as default for staff-placed holds.',
+ 'circ', 'Honor the patron-preferred Pickup Library as the default for staff-placed holds.', 'bool');
+
+INSERT into config.org_unit_setting_type (name, label, grp, description, datatype)
+values ('circ.staff_placed_holds_staff_ws_ou_override','During Staff-placed holds, use the patron-preferred location or their home OU instead of the Staff User Workstation Org. unit as default pickup location.',
+ 'circ', 'During staff-placed holds, use the patron-preferred location or their home OU instead of the Staff User Workstation Org. unit as default pickup location.', 'bool');
+
+COMMIT;
+
return;
}
cur_hold_barcode = load_info.barcode;
- if(!only_settings || (isload && isload !== true)) document.getElementById('hold_usr_input').value = load_info.barcode; // Safe at this point as we already set cur_hold_barcode
- if(!only_settings || (isload && isload !== true) && load_info.pickup_lib) document.getElementById('pickup_lib').value = load_info.pickup_lib; // Safe at this point as we already set cur_hold_barcode
- if(load_info.settings['opac.default_pickup_location'])
- document.getElementById('pickup_lib').value = load_info.settings['opac.default_pickup_location'];
- if(!load_info.settings['opac.default_phone']) load_info.settings['opac.default_phone'] = '';
- if(!load_info.settings['opac.default_sms_notify']) load_info.settings['opac.default_sms_notify'] = '';
- if(!load_info.settings['opac.default_sms_carrier']) load_info.settings['opac.default_sms_carrier'] = '';
- if(load_info.settings['opac.hold_notify'] || load_info.settings['opac.hold_notify'] === '') {
+ if (!only_settings || (isload && isload !== true)) {
+ document.getElementById('hold_usr_input').value = load_info.barcode;
+ // Safe at this point as we already set cur_hold_barcode
+ }
+
+ var patronDefaultPickupOU;
+ if (!only_settings || (isload && isload !== true) && load_info.pickup_lib) {
+
+ // Patron default is either their preferred pickup loc or their home OU
+ patronDefaultPickupOU = load_info.settings['opac.default_pickup_location']
+ ? load_info.settings['opac.default_pickup_location'] : load_info.pickup_lib;
+
+ document.getElementById('pickup_lib').value = patronDefaultPickupOU;
+ // Safe at this point as we already set cur_hold_barcode
+ }
+
+ if (load_info.settings['staff_WS_OU']){ // this is staff-placed hold!
+
+ // check wether we want to default to staff's WS OU or just the patron's Home OU
+ document.getElementById('pickup_lib').value = load_info.settings['overrideStaff_WS_OU']
+ ? patronDefaultPickupOU : load_info.settings['staff_WS_OU'];
+
+ // use staff WS OU as default pickup_lib unless YAOUS says otherwise
+ document.getElementById('pickup_lib').value = load_info.settings['honorPatronPrefPickupOU']
+ ? patronDefaultPickupOU : load_info.settings['staff_WS_OU'];
+
+ }
+
+ if (!load_info.settings['opac.default_sms_notify']){
+ load_info.settings['opac.default_sms_notify'] = '';
+ }
+
+ if (!load_info.settings['opac.default_sms_carrier']){
+ load_info.settings['opac.default_sms_carrier'] = '';
+ }
+
+ if (load_info.settings['opac.hold_notify'] || load_info.settings['opac.hold_notify'] === '') {
var email = load_info.settings['opac.hold_notify'].indexOf('email') > -1;
var phone = load_info.settings['opac.hold_notify'].indexOf('phone') > -1;
var sms = load_info.settings['opac.hold_notify'].indexOf('sms') > -1;
update_elements = document.getElementsByName('sms_notify_checkbox');
for(var i in update_elements) update_elements[i].checked = (sms ? 'checked' : '');
}
+
update_elements = document.getElementsByName('phone_notify');
- for(var i in update_elements) update_elements[i].value = load_info.settings['opac.default_phone'];
+ for(var i in update_elements) update_elements[i].value = load_info.settings['opac.default_phone']
+ ? load_info.settings['opac.default_phone'] : '';
update_elements = document.getElementsByName('sms_notify');
for(var i in update_elements) update_elements[i].value = load_info.settings['opac.default_sms_notify'];
update_elements = document.getElementsByName('sms_carrier');
return null;
}
- // copied more or less directly from XUL menu.js
- var settings = {};
- for(var i = 0; i < user.settings().length; i++) {
- settings[user.settings()[i].name()] =
- JSON2js(user.settings()[i].value());
- }
-
- if(!settings['opac.default_phone'] && user.day_phone())
- settings['opac.default_phone'] = user.day_phone();
- if(!settings['opac.hold_notify'] && settings['opac.hold_notify'] !== '')
- settings['opac.hold_notify'] = 'email:phone';
-
- // Taken from patron/util.js format_name
- // FIXME: I18n
- var patron_name =
- ( user.prefix() ? user.prefix() + ' ' : '') +
- user.family_name() + ', ' +
- user.first_given_name() + ' ' +
- ( user.second_given_name() ? user.second_given_name() + ' ' : '' ) +
- ( user.suffix() ? user.suffix() : '');
-
- deferred.resolve({
- "barcode": barcode,
- "pickup_lib": user.home_ou(),
- "settings" : settings,
- "user_email" : user.email(),
- "patron_name" : patron_name
- });
+ egCore.org.settings(['circ.staff_placed_holds_honor_patron_prefs_first',
+ 'circ.staff_placed_holds_staff_ws_ou_override'])
+ .then(function(auth_usr_aous){
+
+ // copied more or less directly from XUL menu.js
+ var settings = {};
+ for(var i = 0; i < user.settings().length; i++) {
+ settings[user.settings()[i].name()] =
+ JSON2js(user.settings()[i].value());
+ }
+
+ // find applicable YAOUSes for staff-placed holds
+ var honorPatronPrefPickupOU;
+ var overrideStaff_WS_OU;
+ var requestor = egCore.auth.user();
+ if (requestor.id() !== user.id()){
+ // this is a staff-placed hold
+
+ settings["staff_WS_OU"] = requestor.ws_ou();
+ if (auth_usr_aous['circ.staff_placed_holds_honor_patron_prefs_first']){
+ settings['honorPatronPrefPickupOU'] = true;
+ }
+
+ if (auth_usr_aous['circ.staff_placed_holds_staff_ws_ou_override']){
+ settings['overrideStaff_WS_OU'] = true;
+ }
+ }
+
+ if(!settings['opac.default_phone'] && user.day_phone())
+ settings['opac.default_phone'] = user.day_phone();
+ if(!settings['opac.hold_notify'] && settings['opac.hold_notify'] !== '')
+ settings['opac.hold_notify'] = 'email:phone';
+
+ // Taken from patron/util.js format_name
+ // FIXME: I18n
+ var patron_name =
+ ( user.prefix() ? user.prefix() + ' ' : '') +
+ user.family_name() + ', ' +
+ user.first_given_name() + ' ' +
+ ( user.second_given_name() ? user.second_given_name() + ' ' : '' ) +
+ ( user.suffix() ? user.suffix() : '');
+
+ deferred.resolve({
+ "barcode": barcode,
+ "pickup_lib": user.home_ou(),
+ "settings" : settings,
+ "user_email" : user.email(),
+ "patron_name" : patron_name
+ });
+ });
});
return deferred.promise;