mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-11 16:38:52 +01:00
admin ACL more or less finished (pending eT2 auto-repeat bug requiring to use old eTemplate for acl popup)
This commit is contained in:
parent
ee843a5f02
commit
b48e6b2531
@ -14,6 +14,8 @@ require_once EGW_INCLUDE_ROOT.'/etemplate/inc/class.etemplate.inc.php';
|
||||
|
||||
/**
|
||||
* UI for admin
|
||||
*
|
||||
* @todo acl needs to use etemplate_old, as auto-repeat does not work for acl & label
|
||||
*/
|
||||
class admin_acl
|
||||
{
|
||||
@ -52,7 +54,8 @@ class admin_acl
|
||||
}
|
||||
else
|
||||
{
|
||||
$app = $state['acl_appname'];
|
||||
$app = !empty($_GET['app']) && isset($GLOBALS['egw_info']['apps'][$_GET['app']]) ?
|
||||
$_GET['app'] : $state['acl_appname'];
|
||||
$location = $state['filter'] == 'run' ? 'run' : $state['account_id'];
|
||||
$account = $state['filter'] == 'run' ? $state['account_id'] : $state['acl_account'];
|
||||
$rights = 1;
|
||||
@ -63,6 +66,15 @@ class admin_acl
|
||||
'acl_location' => $location,
|
||||
'acl_account' => $account,
|
||||
);
|
||||
if ($location == 'run')
|
||||
{
|
||||
if (!isset($acl))
|
||||
{
|
||||
$acl = (int)$account == (int)$GLOBALS['egw_info']['user']['account_id'] ?
|
||||
$GLOBALS['egw']->acl : new acl($account);
|
||||
}
|
||||
$content['apps'] = array_keys($acl->get_user_applications($account, false, false)); // false: only direct rights, no memberships
|
||||
}
|
||||
}
|
||||
$acl_rights = $GLOBALS['egw']->hooks->process(array(
|
||||
'location' => 'acl_rights',
|
||||
@ -71,62 +83,50 @@ class admin_acl
|
||||
if ($content['save'])
|
||||
{
|
||||
self::check_access($content['acl_location']);
|
||||
$acl = new acl($content['acl_account']);
|
||||
|
||||
// assable rights again
|
||||
$rights = 0;
|
||||
foreach($content['acl'] as $right)
|
||||
if ($content['acl_location'] == 'run')
|
||||
{
|
||||
$rights |= $right;
|
||||
}
|
||||
$id = !empty($content['id']) ? $content['id'] :
|
||||
$content['acl_appname'].':'.$content['acl_account'].':'.$content['acl_location'];
|
||||
//error_log(__METHOD__."() id=$id, acl=".array2string($content['acl'])." --> rights=$rights");
|
||||
|
||||
if ($acl->get_specific_rights($content['acl_location'], $content['acl_appname']) == $rights)
|
||||
{
|
||||
// nothing changed --> nothing to do
|
||||
}
|
||||
elseif (!$rights) // all rights removed --> delete it
|
||||
{
|
||||
$acl->delete_repository($content['acl_appname'], $content['acl_location'], $content['acl_account']);
|
||||
egw_framework::refresh_opener(lang('ACL deleted.'), 'admin', $id, 'delete');
|
||||
self::save_run_rights($content);
|
||||
}
|
||||
else
|
||||
{
|
||||
$acl->add_repository($content['acl_appname'], $content['acl_location'], $content['acl_account'], $rights);
|
||||
if ($content['id'])
|
||||
{
|
||||
egw_framework::refresh_opener(lang('ACL updated.'), 'admin', $id, 'edit');
|
||||
}
|
||||
else
|
||||
{
|
||||
egw_framework::refresh_opener(lang('ACL added.'), 'admin', $id, 'add');
|
||||
}
|
||||
self::save_rights($content);
|
||||
}
|
||||
egw_framework::window_close();
|
||||
}
|
||||
$content['acl'] = $content['label'] = array();
|
||||
foreach($state['filter'] == 'run' ? array(1 => 'run') : $acl_rights[$content['acl_appname']] as $right => $label)
|
||||
{
|
||||
$content['acl'][] = $rights & $right;
|
||||
$content['right'][] = $right;
|
||||
$content['label'][] = lang($label);
|
||||
}
|
||||
foreach($state['filter'] == 'run' ? $GLOBALS['egw_info']['apps'] : $acl_rights as $app => $data)
|
||||
{
|
||||
$sel_options['acl_appname'][$app] = lang($app);
|
||||
}
|
||||
natcasesort($sel_options['acl_appname']);
|
||||
|
||||
if (!empty($content['id']))
|
||||
{
|
||||
$readonlys['acl_appname'] = $readonlys['acl_account'] = $readonlys['acl_location'] = true;
|
||||
}
|
||||
if ($state['filter'] == 'run')
|
||||
if ($content['location'] == 'run')
|
||||
{
|
||||
$readonlys['acl_account'] = true;
|
||||
$tpl->setElementAttribute('acl_appname', 'onchange', '');
|
||||
}
|
||||
else
|
||||
{
|
||||
$content['acl'] = $content['label'] = array();
|
||||
foreach($state['filter'] == 'run' ? array(1 => 'run') : $acl_rights[$content['acl_appname']] as $right => $label)
|
||||
{
|
||||
$content['acl'][] = $rights & $right;
|
||||
$content['right'][] = $right;
|
||||
$content['label'][] = lang($label);
|
||||
}
|
||||
foreach($state['filter'] == 'run' ? $GLOBALS['egw_info']['apps'] : $acl_rights as $app => $data)
|
||||
{
|
||||
$sel_options['acl_appname'][$app] = lang($app);
|
||||
}
|
||||
natcasesort($sel_options['acl_appname']);
|
||||
|
||||
if (!empty($content['id']))
|
||||
{
|
||||
$readonlys['acl_appname'] = $readonlys['acl_account'] = $readonlys['acl_location'] = true;
|
||||
}
|
||||
// only user himself is allowed to grant private rights!
|
||||
if ($content['acl_location'] != $GLOBALS['egw_info']['user']['account_id'])
|
||||
{
|
||||
$readonlys['acl[5]'] = true;
|
||||
$content['preserve_rights'] = $rights & acl::PRIVAT;
|
||||
}
|
||||
else
|
||||
{
|
||||
unset($content['preserve_rights']);
|
||||
}
|
||||
}
|
||||
// view only, if no rights
|
||||
if (!self::check_access($content['acl_location'], false))
|
||||
@ -135,10 +135,95 @@ class admin_acl
|
||||
$readonlys['cancel'] = false;
|
||||
}
|
||||
|
||||
error_log(__METHOD__."() _GET[id]=".array2string($_GET['id'])." --> content=".array2string($content));
|
||||
//error_log(__METHOD__."() _GET[id]=".array2string($_GET['id'])." --> content=".array2string($content));
|
||||
$tpl->exec('admin.admin_acl.acl', $content, $sel_options, $readonlys, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save run rights and refresh opener
|
||||
*
|
||||
* @param array $content
|
||||
*/
|
||||
private static function save_run_rights(array $content)
|
||||
{
|
||||
$acl = new acl($content['acl_account']);
|
||||
$old_apps = array_keys($acl->get_user_applications($content['acl_account'], false, false));
|
||||
$ids = array();
|
||||
// add new apps
|
||||
$added_apps = array_diff($content['apps'], $old_apps);
|
||||
foreach($added_apps as $app)
|
||||
{
|
||||
$acl->add_repository($app, 'run', $content['acl_account'], 1);
|
||||
}
|
||||
// remove no longer checked apps
|
||||
$removed_apps = array_diff($old_apps, $content['apps']);
|
||||
$deleted_ids = array();
|
||||
foreach($removed_apps as $app)
|
||||
{
|
||||
$acl->delete_repository($app, 'run', $content['acl_account']);
|
||||
$deleted_ids[] = $app.':'.$content['acl_account'].':run';
|
||||
}
|
||||
//error_log(__METHOD__."() apps=".array2string($content['apps']).", old_apps=".array2string($old_apps).", added_apps=".array2string($added_apps).", removed_apps=".array2string($removed_apps));
|
||||
|
||||
if (!$added_apps && !$removed_apps)
|
||||
{
|
||||
// nothing changed --> nothing to do/notify
|
||||
}
|
||||
elseif (!$old_apps)
|
||||
{
|
||||
egw_framework::refresh_opener(lang('ACL added.'), 'admin', null, 'add');
|
||||
}
|
||||
elseif (!$added_apps)
|
||||
{
|
||||
egw_framework::refresh_opener(lang('ACL deleted.'), 'admin', $deleted_ids, 'delete');
|
||||
}
|
||||
else
|
||||
{
|
||||
egw_framework::refresh_opener(lang('ACL updated.'), 'admin', null, 'edit');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save rights and refresh opener
|
||||
*
|
||||
* @param array $content
|
||||
*/
|
||||
private static function save_rights(array $content)
|
||||
{
|
||||
$acl = new acl($content['acl_account']);
|
||||
// assamble rights again
|
||||
$rights = (int)$content['preserve_rights'];
|
||||
foreach($content['acl'] as $right)
|
||||
{
|
||||
$rights |= $right;
|
||||
}
|
||||
$id = !empty($content['id']) ? $content['id'] :
|
||||
$content['acl_appname'].':'.$content['acl_account'].':'.$content['acl_location'];
|
||||
//error_log(__METHOD__."() id=$id, acl=".array2string($content['acl'])." --> rights=$rights");
|
||||
|
||||
if ($acl->get_specific_rights($content['acl_location'], $content['acl_appname']) == $rights)
|
||||
{
|
||||
// nothing changed --> nothing to do
|
||||
}
|
||||
elseif (!$rights) // all rights removed --> delete it
|
||||
{
|
||||
$acl->delete_repository($content['acl_appname'], $content['acl_location'], $content['acl_account']);
|
||||
egw_framework::refresh_opener(lang('ACL deleted.'), 'admin', $id, 'delete');
|
||||
}
|
||||
else
|
||||
{
|
||||
$acl->add_repository($content['acl_appname'], $content['acl_location'], $content['acl_account'], $rights);
|
||||
if ($content['id'])
|
||||
{
|
||||
egw_framework::refresh_opener(lang('ACL updated.'), 'admin', $id, 'edit');
|
||||
}
|
||||
else
|
||||
{
|
||||
egw_framework::refresh_opener(lang('ACL added.'), 'admin', $id, 'add');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for nextmatch to fetch acl
|
||||
*
|
||||
@ -223,7 +308,7 @@ class admin_acl
|
||||
// generate a row-id
|
||||
$row['id'] = $row['acl_appname'].':'.$row['acl_account'].':'.$row['acl_location'];
|
||||
|
||||
if ($query['filter'] == 'run')
|
||||
if ($row['acl_location'] == 'run')
|
||||
{
|
||||
$row['acl1'] = lang('run');
|
||||
}
|
||||
|
@ -183,7 +183,7 @@ app.admin = AppJS.extend(
|
||||
* Modify an ACL entry
|
||||
*
|
||||
* @param Object _action egwAction
|
||||
* @param Object _senders egwActionObject _senders[0].iface.id holds the id
|
||||
* @param Object _senders egwActionObject _senders[0].id holds the id "admin::app:account:location"
|
||||
*/
|
||||
acl: function(_action, _senders)
|
||||
{
|
||||
@ -201,15 +201,19 @@ app.admin = AppJS.extend(
|
||||
break;
|
||||
|
||||
case 'edit':
|
||||
egw().open_link(egw.link('/index.php', {
|
||||
// need to specify window to get correct opener, as admin has multiple windows open!
|
||||
egw('admin', window).open_link(egw.link('/index.php', {
|
||||
menuaction: 'admin.admin_acl.acl',
|
||||
id: ids[0],
|
||||
}), 'acl', '300x300');
|
||||
break;
|
||||
|
||||
case 'add':
|
||||
egw().open_link(egw.link('/index.php', {
|
||||
var current = ids[0].split(':');
|
||||
egw('admin', window).open_link(egw.link('/index.php', {
|
||||
menuaction: 'admin.admin_acl.acl',
|
||||
app: current[0],
|
||||
account: current[1]
|
||||
}), 'acl', '250x250');
|
||||
break;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
/**
|
||||
* EGroupware - eTemplates for Application admin
|
||||
* http://www.egroupware.org
|
||||
* generated by soetemplate::dump4setup() 2013-08-27 19:21
|
||||
* generated by soetemplate::dump4setup() 2013-08-28 14:49
|
||||
*
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @package admin
|
||||
@ -28,9 +28,9 @@ $templ_data[] = array('name' => 'admin.accesslog.rows','template' => '','lang' =
|
||||
|
||||
$templ_data[] = array('name' => 'admin.acl','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:8:{s:4:"type";s:4:"vbox";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:8:",message";s:4:"name";s:3:"msg";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:1:"3";i:1;a:3:{s:4:"type";s:5:"label";s:4:"span";s:8:",message";s:4:"name";s:3:"msg";}i:2;a:3:{s:4:"type";s:9:"nextmatch";s:4:"name";s:2:"nm";s:4:"size";s:14:"admin.acl.rows";}i:3;a:1:{s:4:"type";s:5:"label";}}}','size' => '','style' => '','modified' => '1376413827',);
|
||||
|
||||
$templ_data[] = array('name' => 'admin.acl.edit','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:2:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:4:{s:2:"h2";s:25:",@acl_location=run,header";s:2:"h3";s:8:",,header";s:2:"h1";s:8:",,header";s:2:"c4";s:4:",top";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:11:"Application";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"size";s:10:"Select one";s:4:"name";s:11:"acl_appname";s:6:"needed";s:1:"1";s:8:"onchange";i:1;}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"From";s:4:"size";s:15:",,,acl_location";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:12:"acl_location";s:8:"readonly";s:1:"1";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:2:"To";s:4:"size";s:14:",,,acl_account";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:11:"acl_account";s:6:"needed";s:1:"1";}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"Rights";}s:1:"B";a:5:{s:4:"type";s:4:"grid";s:7:"options";a:0:{}s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:5:{s:4:"type";s:8:"checkbox";s:5:"label";s:12:"@label[$row]";s:4:"name";s:9:"acl[$row]";s:4:"span";s:3:"all";s:4:"size";s:22:"{$cont[right][$row]},0";}}}s:4:"rows";i:1;s:4:"cols";i:1;}}}s:4:"rows";i:4;s:4:"cols";i:2;}i:1;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:4:"save";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:6:"cancel";s:5:"label";s:6:"Cancel";s:7:"onclick";s:15:"window.close();";}}}','size' => '','style' => '','modified' => '1377602915',);
|
||||
$templ_data[] = array('name' => 'admin.acl.edit','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:2:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:6:{s:2:"h2";s:25:",@acl_location=run,header";s:2:"h3";s:8:",,header";s:2:"h1";s:25:",@acl_location=run,header";s:2:"c4";s:4:",top";s:2:"h4";s:18:",@acl_location=run";s:2:"h5";s:19:",!@acl_location=run";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:11:"Application";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"size";s:10:"Select one";s:4:"name";s:11:"acl_appname";s:6:"needed";s:1:"1";s:8:"onchange";i:1;}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"From";s:4:"size";s:15:",,,acl_location";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:12:"acl_location";s:8:"readonly";s:1:"1";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:2:"To";s:4:"size";s:14:",,,acl_account";}s:1:"B";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:11:"acl_account";s:6:"needed";s:1:"1";}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"Rights";}s:1:"B";a:5:{s:4:"type";s:4:"grid";s:7:"options";a:0:{}s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:5:{s:4:"type";s:8:"checkbox";s:5:"label";s:12:"@label[$row]";s:4:"name";s:9:"acl[$row]";s:4:"span";s:3:"all";s:4:"size";s:22:"{$cont[right][$row]},0";}}}s:4:"rows";i:1;s:4:"cols";i:1;}}i:5;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:12:"Applications";s:4:"size";s:7:",,,apps";}s:1:"B";a:3:{s:4:"type";s:10:"select-app";s:4:"size";s:16:"8,,enabled,,,,,0";s:4:"name";s:4:"apps";}}}s:4:"rows";i:5;s:4:"cols";i:2;}i:1;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:4:"save";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:6:"cancel";s:5:"label";s:6:"Cancel";s:7:"onclick";s:15:"window.close();";}}}','size' => '','style' => '','modified' => '1377602915',);
|
||||
|
||||
$templ_data[] = array('name' => 'admin.acl.rows','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:1:{s:1:"A";s:2:"24";}i:1;a:12:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:22:"nextmatch-customfilter";s:4:"name";s:11:"acl_appname";s:4:"size";s:27:"select-app,All applications";}s:1:"C";a:4:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:17:"All accounts,both";s:4:"name";s:12:"acl_location";s:5:"label";s:4:"From";}s:1:"D";a:4:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:17:"All accounts,both";s:4:"name";s:11:"acl_account";s:5:"label";s:2:"To";}s:1:"E";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:6:"Rights";s:4:"span";s:3:"all";}s:1:"F";a:1:{s:4:"type";s:5:"label";}s:1:"G";a:1:{s:4:"type";s:5:"label";}s:1:"H";a:1:{s:4:"type";s:5:"label";}s:1:"I";a:1:{s:4:"type";s:5:"label";}s:1:"J";a:1:{s:4:"type";s:5:"label";}s:1:"K";a:1:{s:4:"type";s:5:"label";}s:1:"L";a:1:{s:4:"type";s:5:"label";}}i:2;a:12:{s:1:"A";a:4:{s:4:"type";s:5:"image";s:4:"span";s:13:",admin_aclApp";s:4:"name";s:29:"$row_cont[acl_appname]/navbar";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:10:"select-app";s:4:"name";s:19:"${row}[acl_appname]";s:8:"readonly";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:20:"${row}[acl_location]";s:8:"readonly";s:1:"1";}s:1:"D";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:19:"${row}[acl_account]";s:8:"readonly";s:1:"1";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[acl1]";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[acl2]";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[acl4]";}s:1:"H";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[acl8]";}s:1:"I";a:2:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[acl16]";}s:1:"J";a:2:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[acl64]";}s:1:"K";a:2:{s:4:"type";s:5:"label";s:4:"name";s:14:"${row}[acl128]";}s:1:"L";a:2:{s:4:"type";s:5:"label";s:4:"name";s:14:"${row}[acl256]";}}}s:4:"rows";i:2;s:4:"cols";i:12;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1376413969',);
|
||||
$templ_data[] = array('name' => 'admin.acl.rows','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:1:{s:1:"A";s:2:"24";}i:1;a:12:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:22:"nextmatch-customfilter";s:4:"name";s:11:"acl_appname";s:4:"size";s:27:"select-app,All applications";}s:1:"C";a:4:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:17:"All accounts,both";s:4:"name";s:12:"acl_location";s:5:"label";s:4:"From";}s:1:"D";a:4:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:17:"All accounts,both";s:4:"name";s:11:"acl_account";s:5:"label";s:2:"To";}s:1:"E";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:4:"Read";s:4:"name";s:4:"read";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:3:"Add";s:4:"name";s:3:"add";}s:1:"G";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:4:"Edit";s:4:"name";s:4:"edit";}s:1:"H";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:6:"Delete";s:4:"name";s:6:"delete";}s:1:"I";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:7:"Private";s:4:"name";s:7:"private";}s:1:"J";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Custom 1";s:4:"name";s:7:"custom1";}s:1:"K";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Custom 2";s:4:"name";s:7:"custom2";}s:1:"L";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Custom 3";s:4:"name";s:7:"custom3";}}i:2;a:12:{s:1:"A";a:4:{s:4:"type";s:5:"image";s:4:"span";s:13:",admin_aclApp";s:4:"name";s:29:"$row_cont[acl_appname]/navbar";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:10:"select-app";s:4:"name";s:19:"${row}[acl_appname]";s:8:"readonly";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:20:"${row}[acl_location]";s:8:"readonly";s:1:"1";}s:1:"D";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:19:"${row}[acl_account]";s:8:"readonly";s:1:"1";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[acl1]";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[acl2]";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[acl4]";}s:1:"H";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[acl8]";}s:1:"I";a:2:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[acl16]";}s:1:"J";a:2:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[acl64]";}s:1:"K";a:2:{s:4:"type";s:5:"label";s:4:"name";s:14:"${row}[acl128]";}s:1:"L";a:2:{s:4:"type";s:5:"label";s:4:"name";s:14:"${row}[acl256]";}}}s:4:"rows";i:2;s:4:"cols";i:12;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1376413969',);
|
||||
|
||||
$templ_data[] = array('name' => 'admin.applications','template' => '','lang' => '','group' => '0','version' => '1.7.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:9:"nextmatch";s:4:"size";s:4:"rows";s:4:"span";s:3:"all";s:4:"name";s:2:"nm";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:6:"button";s:5:"label";s:28:"Number applications serially";s:4:"name";s:6:"number";}i:2;a:2:{s:4:"type";s:5:"label";s:5:"label";s:157:"Number the applications serially. If they are not numbered serially, sorting the applications could work wrong. This will not change the application\'s order.";}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:7:"100%,,0";s:7:"options";a:2:{i:0;s:4:"100%";i:2;s:1:"0";}}}','size' => '100%,,0','style' => '','modified' => '1276610727',);
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
<column/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row part="header">
|
||||
<row disabled="@acl_location=run" part="header">
|
||||
<description value="Application"/>
|
||||
<menulist>
|
||||
<menupopup id="acl_appname" needed="1" onchange="1" options="Select one"/>
|
||||
@ -26,7 +26,7 @@
|
||||
<menupopup type="select-account" id="acl_account" needed="1"/>
|
||||
</menulist>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<row valign="top" disabled="@acl_location=run">
|
||||
<description value="Rights"/>
|
||||
<grid>
|
||||
<columns>
|
||||
@ -39,6 +39,10 @@
|
||||
</rows>
|
||||
</grid>
|
||||
</row>
|
||||
<row disabled="!@acl_location=run">
|
||||
<description value="Applications" for="apps"/>
|
||||
<listbox type="select-app" id="apps" rows="8" options=",enabled,,,,,0"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<hbox>
|
||||
|
@ -23,7 +23,14 @@
|
||||
<nextmatch-customfilter id="acl_appname" options="select-app,All applications"/>
|
||||
<nextmatch-accountfilter label="From" id="acl_location" options="All accounts,both"/>
|
||||
<nextmatch-accountfilter label="To" id="acl_account" options="All accounts,both"/>
|
||||
<nextmatch-header label="Rights" span="all"/>
|
||||
<nextmatch-header label="Read" id="read"/>
|
||||
<nextmatch-header label="Add" id="add"/>
|
||||
<nextmatch-header label="Edit" id="edit"/>
|
||||
<nextmatch-header label="Delete" id="delete"/>
|
||||
<nextmatch-header label="Private" id="private"/>
|
||||
<nextmatch-header label="Custom 1" id="custom1"/>
|
||||
<nextmatch-header label="Custom 2" id="custom2"/>
|
||||
<nextmatch-header label="Custom 3" id="custom3"/>
|
||||
</row>
|
||||
<row>
|
||||
<image align="center" src="$row_cont[acl_appname]/navbar" class="admin_aclApp"/>
|
||||
|
Loading…
Reference in New Issue
Block a user