Admin: Push for categories

This commit is contained in:
nathan 2022-10-27 11:13:04 -06:00
parent ce5e30dc4c
commit 166168b5bf
4 changed files with 58 additions and 10 deletions

View File

@ -74,9 +74,16 @@ class admin_cmd_customfield extends admin_cmd
if(array_keys($this->set) == array('id','name')) if(array_keys($this->set) == array('id','name'))
{ {
// Delete // Delete
$so = new Api\Storage\Base('phpgwapi','egw_customfields',null,'',true); $so = new Api\Storage\Base('phpgwapi', 'egw_customfields', null, '', true);
$so->delete($this->set['id']); $so->delete($this->set['id']);
$deleted = true; $deleted = true;
$push = new Api\Json\Push(Api\Json\Push::ALL);
$push->apply("egw.push", [[
'app' => Api\Storage\Customfields::PUSH_APP,
'id' => $this->set['id'],
'type' => 'delete'
]]);
} }
else else
{ {

View File

@ -205,14 +205,15 @@ class admin_customfields
{ {
// Initialize nextmatch // Initialize nextmatch
$content['nm'] = array( $content['nm'] = array(
'get_rows' => 'admin.admin_customfields.get_rows', 'get_rows' => 'admin.admin_customfields.get_rows',
'no_cat' => 'true', 'no_cat' => 'true',
'no_filter' => 'true', 'no_filter' => 'true',
'no_filter2' => 'true', 'no_filter2' => 'true',
'row_id' => 'cf_id', 'row_id' => 'cf_id',
'order' => 'cf_order',// IO name of the column to sort 'order' => 'cf_order',// IO name of the column to sort
'sort' => 'ASC',// IO direction of the sort: 'ASC' or 'DESC' 'sort' => 'ASC',// IO direction of the sort: 'ASC' or 'DESC'
'actions' => $this->get_actions() 'actions' => $this->get_actions(),
'dataStorePrefix' => 'customfield'
); );
} }
$content['nm']['appname'] = $this->appname; $content['nm']['appname'] = $this->appname;

View File

@ -326,12 +326,13 @@ class AdminApp extends EgwApp
push(pushData : PushData) push(pushData : PushData)
{ {
// Filter out what we're not interested in // Filter out what we're not interested in
if([this.appname, "api-cats"].indexOf(pushData.app) == -1) if([this.appname, "api-cats", "api-cf"].indexOf(pushData.app) == -1)
{ {
return; return;
} }
const cat_template = "admin.categories.index"; const cat_template = "admin.categories.index";
const cf_template = "admin.customfields";
if(this.appname.indexOf(pushData.app) != -1 && pushData.id > 0) if(this.appname.indexOf(pushData.app) != -1 && pushData.id > 0)
{ {
@ -349,6 +350,10 @@ class AdminApp extends EgwApp
{ {
(<et2_nextmatch>etemplate2.getByTemplate(cat_template)[0].widgetContainer.getWidgetById("nm")).refresh(pushData.id, pushData.type); (<et2_nextmatch>etemplate2.getByTemplate(cat_template)[0].widgetContainer.getWidgetById("nm")).refresh(pushData.id, pushData.type);
} }
else if(pushData.app == "api-cf" && etemplate2.getByTemplate(cf_template).length == 1)
{
(<et2_nextmatch>etemplate2.getByTemplate(cf_template)[0].widgetContainer.getWidgetById("nm")).refresh(pushData.id, pushData.type);
}
} }
/** /**

View File

@ -13,6 +13,7 @@
namespace EGroupware\Api\Storage; namespace EGroupware\Api\Storage;
use EGroupware\Api; use EGroupware\Api;
use EGroupware\Api\Json\Push;
/** /**
* Managing custom-field definitions * Managing custom-field definitions
@ -51,6 +52,11 @@ class Customfields implements \IteratorAggregate
*/ */
protected $iterator; protected $iterator;
/**
* App name used to push custom field changes
*/
const PUSH_APP = 'api-cf';
/** /**
* Constructor * Constructor
* *
@ -441,6 +447,35 @@ class Customfields implements \IteratorAggregate
} }
self::invalidate_cache($cf['app']); self::invalidate_cache($cf['app']);
// push category change
$type = 'update';
if(!$cf['id'])
{
$cfs = self::get($cf['app'], true);
$cf = $cfs[$cf['name']];
$type = 'add';
}
$accounts = Push::ALL;
if(count($cf['private']) > 0)
{
$accounts = [];
foreach($cf['private'] as $account_id)
{
$accounts = array_merge(
$account_id > 0 ? [$account_id] :
$GLOBALS['egw']->accounts->members($account_id, true)
);
}
}
$push = new Push($accounts);
$push->apply("egw.push", [[
'app' => self::PUSH_APP,
'id' => $cf['id'],
'type' => $type,
'acl' => ['private' => $cf['private']],
'account_id' => $GLOBALS['egw_info']['user']['account_id']
]]);
} }
/** /**