forked from extern/egroupware
* Preferences: use push to ask every affected client to reload preferences, if affected
This commit is contained in:
parent
a562cdf502
commit
33e88d25ae
@ -121,6 +121,24 @@ egw.extend('preferences', egw.MODULE_GLOBAL, function()
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Endpoint for push to request reload of preference, if loaded and affected
|
||||
*
|
||||
* @param _app app-name of prefs to reload
|
||||
* @param _account_id _account_id 0: allways reload (default or forced prefs), <0: reload if member of group
|
||||
*/
|
||||
reload_preferences: function(_app, _account_id)
|
||||
{
|
||||
if (typeof _account_id !== 'number') _account_id = parseInt(_account_id);
|
||||
if (typeof prefs[_app] === 'undefined' || // prefs not loaded
|
||||
_account_id < 0 && this.user('memberships').indexOf(_account_id) < 0) // no member of this group
|
||||
{
|
||||
return;
|
||||
}
|
||||
var request = this.json('EGroupware\\Api\\Framework::ajax_get_preference', [_app]);
|
||||
request.sendRequest();
|
||||
},
|
||||
|
||||
/**
|
||||
* Call context / open app specific preferences function
|
||||
*
|
||||
|
@ -66,7 +66,7 @@ egw.extend('user', egw.MODULE_GLOBAL, function()
|
||||
* Get data about current user
|
||||
*
|
||||
* @param {string} _field
|
||||
* - 'account_id','account_lid','person_id','account_status',
|
||||
* - 'account_id','account_lid','person_id','account_status','memberships'
|
||||
* - 'account_firstname','account_lastname','account_email','account_fullname','account_phone'
|
||||
* - 'apps': object with app => data pairs the user has run-rights for
|
||||
* @return {string|array|null}
|
||||
|
@ -411,7 +411,7 @@ class Accounts
|
||||
|
||||
/**
|
||||
* Get an account as json, returns only whitelisted fields:
|
||||
* - 'account_id','account_lid','person_id','account_status',
|
||||
* - 'account_id','account_lid','person_id','account_status','memberships'
|
||||
* - 'account_firstname','account_lastname','account_email','account_fullname','account_phone'
|
||||
*
|
||||
* @param int|string $id
|
||||
@ -420,11 +420,12 @@ class Accounts
|
||||
function json($id)
|
||||
{
|
||||
static $keys = array(
|
||||
'account_id','account_lid','person_id','account_status',
|
||||
'account_id','account_lid','person_id','account_status','memberships',
|
||||
'account_firstname','account_lastname','account_email','account_fullname','account_phone',
|
||||
);
|
||||
if (($account = $this->read($id)))
|
||||
{
|
||||
if (isset($account['memberships'])) $account['memberships'] = array_keys($account['memberships']);
|
||||
$account = array_intersect_key($account, array_flip($keys));
|
||||
}
|
||||
// for current user, add the apps available to him
|
||||
|
@ -122,9 +122,13 @@ class preferences_settings
|
||||
Framework::refresh_opener($msg, null, null, null, null, null, null, $msg_type);
|
||||
}
|
||||
}
|
||||
// update client-side Api\Preferences in response (only current user/session)
|
||||
Framework::ajax_get_preference($appname);
|
||||
|
||||
// ask every affected client to reload preferences, if affected ($appname prefs loaded and member of group for group prefs)
|
||||
$push = new Api\Json\Push($account_id > 0 ? (int)$account_id : Api\Json\Push::ALL);
|
||||
$push->call('egw.reload_preferences', $appname, $account_id ? (int)$account_id : 0);
|
||||
}
|
||||
// update client-side Api\Preferences in response
|
||||
Framework::ajax_get_preference($appname);
|
||||
}
|
||||
if (in_array($button, array('save','cancel')))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user