'eg.staffcat.exclude_electronic',
'eg.catalog.search.form.open',
'eg.staff.catalog.results.show_more',
- 'circ.staff_placed_holds_fallback_to_ws_ou'
+ 'circ.staff_placed_holds_fallback_to_ws_ou',
+ 'circ.staff_placed_holds_default_to_ws_ou'
]).then(settings => {
this.staffCat.defaultSearchOrg =
this.org.get(settings['eg.search.search_lib']);
my $rand_setting = $U->ou_ancestor_setting_value($org, 'holds.subscription.randomize');
$randomize = $rand_setting if (defined $rand_setting);
+ my $default_to_workstation = $U->is_true(
+ $U->ou_ancestor_setting_value($org, 'circ.staff_placed_holds_default_to_ws_ou')
+ );
+ my $fallback_to_workstation = $U->is_true(
+ $U->ou_ancestor_setting_value($org, 'circ.staff_placed_holds_fallback_to_ws_ou')
+ );
+
my $target_field;
if ($$params{'hold_type'} eq 'T') { $target_field = 'titleid'; }
elsif ($$params{'hold_type'} eq 'C') { $target_field = 'copy_id'; }
@{ $usr->settings }
};
- $$params{pickup_lib} = $$user_setting_map{'opac.default_pickup_location'} || $usr->home_ou;
+ if ($default_to_workstation) {
+ $params->{pickup_lib} = $org;
+ } elsif ($user_setting_map->{'opac.default_pickup_location'}) {
+ $params->{pickup_lib} = $user_setting_map->{'opac.default_pickup_location'};
+ } elsif ($fallback_to_workstation) {
+ $params->{pickup_lib} = $org;
+ } else {
+ $params->{pickup_lib} = $usr->home_ou;
+ }
if ($user_setting_map->{'opac.hold_notify'} =~ /email/) {
$$params{email_notify} = 1;
)
);
+INSERT INTO config.org_unit_setting_type (
+ name, grp, label, description, datatype
+) VALUES (
+ 'circ.staff_placed_holds_default_to_ws_ou',
+ 'circ',
+ oils_i18n_gettext(
+ 'circ.staff_placed_holds_default_to_ws_ou',
+ 'Workstation OU is the default for staff-placed holds',
+ 'coust',
+ 'label'
+ ),
+ oils_i18n_gettext(
+ 'circ.staff_placed_holds_default_to_ws_ou',
+ 'For staff-placed holds, regardless of the patron preferred pickup location, the staff workstation OU is the default pickup location',
+ 'coust',
+ 'description'
+ ),
+ 'bool'
+);
--- /dev/null
+BEGIN;
+
+SELECT evergreen.upgrade_deps_block_check('xxxx', :eg_version);
+
+INSERT INTO config.org_unit_setting_type (
+ name, grp, label, description, datatype
+) VALUES (
+ 'circ.staff_placed_holds_default_to_ws_ou',
+ 'circ',
+ oils_i18n_gettext(
+ 'circ.staff_placed_holds_default_to_ws_ou',
+ 'Workstation OU is the default for staff-placed holds',
+ 'coust',
+ 'label'
+ ),
+ oils_i18n_gettext(
+ 'circ.staff_placed_holds_default_to_ws_ou',
+ 'For staff-placed holds, regardless of the patron preferred pickup location, the staff workstation OU is the default pickup location',
+ 'coust',
+ 'description'
+ ),
+ 'bool'
+);
+
+COMMIT;
// Patron preferred pickup loc always overrides the default pickup lib
document.getElementById('pickup_lib').value =
+ !load_info.settings['circ.staff_placed_holds_default_to_ws_ou'] &&
load_info.settings['opac.default_pickup_location'] ?
load_info.settings['opac.default_pickup_location'] : load_info.pickup_lib;
}
return null;
}
- egCore.org.settings(['circ.staff_placed_holds_fallback_to_ws_ou'])
- .then(function(auth_usr_aous){
+ egCore.org.settings([
+ 'circ.staff_placed_holds_fallback_to_ws_ou',
+ 'circ.staff_placed_holds_default_to_ws_ou'
+ ]).then(function(auth_usr_aous) {
// copied more or less directly from XUL menu.js
var settings = {};
settings[user.settings()[i].name()] =
JSON2js(user.settings()[i].value());
}
+ settings['circ.staff_placed_holds_default_to_ws_ou'] =
+ auth_usr_aous['circ.staff_placed_holds_default_to_ws_ou'];
// find applicable YAOUSes for staff-placed holds
var requestor = egCore.auth.user();
var pickup_lib = user.home_ou(); // default to home ou
if (requestor.id() !== user.id()){
// this is a staff-placed hold, optionally default to ws ou
- if (auth_usr_aous['circ.staff_placed_holds_fallback_to_ws_ou']){
+ if (auth_usr_aous['circ.staff_placed_holds_fallback_to_ws_ou']
+ || auth_usr_aous['circ.staff_placed_holds_default_to_ws_ou']) {
pickup_lib = requestor.ws_ou();
}
}