From 85d7093879575b4e82f7dd51646ca3852fa46f09 Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 30 Sep 2009 14:26:50 +0000 Subject: [PATCH] added support for editing staff-managed user settings in the user editor, starting with holds behind shelf. the form entry for this setting is hidded unless the org unit supports behind-the-desk hold pickup git-svn-id: svn://svn.open-ils.org/ILS/trunk@14219 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/js/ui/default/actor/user/register.js | 51 ++++++++++++++++++++-- .../web/templates/default/actor/user/register.tt2 | 7 +++ 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/Open-ILS/web/js/ui/default/actor/user/register.js b/Open-ILS/web/js/ui/default/actor/user/register.js index e76f20a388..b431619710 100644 --- a/Open-ILS/web/js/ui/default/actor/user/register.js +++ b/Open-ILS/web/js/ui/default/actor/user/register.js @@ -30,6 +30,8 @@ var widgetPile = []; var uEditCardVirtId = -1; var uEditAddrVirtId = -1; var orgSettings = {}; +var userSettings = {}; +var userSettingsToUpdate = {}; var tbody; var addrTemplateRows; var cgi; @@ -65,12 +67,14 @@ function load() { orgSettings = fieldmapper.aou.fetchOrgSettingBatch(staff.ws_ou(), [ 'global.juvenile_age_threshold', 'patron.password.use_phone', - 'ui.patron.default_inet_access_level' + 'ui.patron.default_inet_access_level', + 'circ.holds.behind_desk_pickup_supported' ]); for(k in orgSettings) if(orgSettings[k]) orgSettings[k] = orgSettings[k].value; + uEditFetchUserSettings(userId); uEditLoadUser(userId); var list = pcrud.search('fdoc', {fm_class:fmClasses}); @@ -98,6 +102,13 @@ function load() { checkClaimsReturnCountPerm(); } +function uEditFetchUserSettings(userId) { + userSettings = fieldmapper.standardRequest( + ['open-ils.actor', 'open-ils.actor.patron.settings.retrieve'], + {params : [openils.User.authtoken, userId, ['circ.holds_behind_desk']]}); +} + + function uEditLoadUser(userId) { if(!userId) return uEditNewPatron(); patron = fieldmapper.standardRequest( @@ -111,11 +122,40 @@ function loadStaticFields() { var row = tbody.childNodes[idx]; if(row.nodeType != row.ELEMENT_NODE) continue; var fmcls = row.getAttribute('fmclass'); - if(!fmcls) continue; - fleshFMRow(row, fmcls); + if(fmcls) { + fleshFMRow(row, fmcls); + } else { + if(row.getAttribute('user_setting')) + fleshUserSettingRow(row, row.getAttribute('user_setting')) + } } } +function fleshUserSettingRow(row, userSetting) { + switch(userSetting) { + case 'circ.holds_behind_desk': + if(orgSettings['circ.holds.behind_desk_pickup_supported']) { + openils.Util.show('uedit-settings-divider', 'table-row'); + openils.Util.show(row, 'table-row'); + if(userSettings[userSetting]) + holdsBehindShelfBox.attr('checked', true); + + // if the setting changes, add it to the list of settings that need updating + dojo.connect( + holdsBehindShelfBox, + 'onChange', + function(newVal) { userSettingsToUpdate['circ.holds_behind_desk'] = newVal; } + ); + } + } +} + +function uEditUpdateUserSettings(userId) { + return fieldmapper.standardRequest( + ['open-ils.actor', 'open-ils.actor.patron.settings.update'], + {params : [openils.User.authtoken, userId, userSettingsToUpdate]}); +} + function loadAllAddrs() { dojo.forEach(patron.addresses(), function(addr) { @@ -646,7 +686,10 @@ function _uEditSave(doClone) { params: [openils.User.authtoken, patron], oncomplete: function(r) { newPatron = openils.Util.readResponse(r); - if(newPatron) uEditFinishSave(newPatron, doClone); + if(newPatron) { + uEditUpdateUserSettings(newPatron.id()); + uEditFinishSave(newPatron, doClone); + } } } ); diff --git a/Open-ILS/web/templates/default/actor/user/register.tt2 b/Open-ILS/web/templates/default/actor/user/register.tt2 index 0a357c4733..433f307648 100644 --- a/Open-ILS/web/templates/default/actor/user/register.tt2 +++ b/Open-ILS/web/templates/default/actor/user/register.tt2 @@ -115,6 +115,13 @@ + User Settings + + + Holds Behind Shelf +
+ + Address -- 2.11.0