mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 06:30:59 +01:00
* 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
|
* Call context / open app specific preferences function
|
||||||
*
|
*
|
||||||
|
@ -66,7 +66,7 @@ egw.extend('user', egw.MODULE_GLOBAL, function()
|
|||||||
* Get data about current user
|
* Get data about current user
|
||||||
*
|
*
|
||||||
* @param {string} _field
|
* @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'
|
* - 'account_firstname','account_lastname','account_email','account_fullname','account_phone'
|
||||||
* - 'apps': object with app => data pairs the user has run-rights for
|
* - 'apps': object with app => data pairs the user has run-rights for
|
||||||
* @return {string|array|null}
|
* @return {string|array|null}
|
||||||
|
@ -411,7 +411,7 @@ class Accounts
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an account as json, returns only whitelisted fields:
|
* 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'
|
* - 'account_firstname','account_lastname','account_email','account_fullname','account_phone'
|
||||||
*
|
*
|
||||||
* @param int|string $id
|
* @param int|string $id
|
||||||
@ -420,11 +420,12 @@ class Accounts
|
|||||||
function json($id)
|
function json($id)
|
||||||
{
|
{
|
||||||
static $keys = array(
|
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',
|
'account_firstname','account_lastname','account_email','account_fullname','account_phone',
|
||||||
);
|
);
|
||||||
if (($account = $this->read($id)))
|
if (($account = $this->read($id)))
|
||||||
{
|
{
|
||||||
|
if (isset($account['memberships'])) $account['memberships'] = array_keys($account['memberships']);
|
||||||
$account = array_intersect_key($account, array_flip($keys));
|
$account = array_intersect_key($account, array_flip($keys));
|
||||||
}
|
}
|
||||||
// for current user, add the apps available to him
|
// 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);
|
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')))
|
if (in_array($button, array('save','cancel')))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user