forked from extern/egroupware
simplyfied UI and taking into account that not all apps use group acl in same way
This commit is contained in:
parent
74ec0f6651
commit
ed0abde9ae
@ -28,6 +28,21 @@ class admin_acl
|
|||||||
'acl' => true,
|
'acl' => true,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to global acl class (instanciated for current user)
|
||||||
|
*
|
||||||
|
* @var acl
|
||||||
|
*/
|
||||||
|
protected $acl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->acl = $GLOBALS['egw']->acl;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Edit or add an ACL entry
|
* Edit or add an ACL entry
|
||||||
*
|
*
|
||||||
@ -44,10 +59,8 @@ class admin_acl
|
|||||||
if (isset($_GET['id']))
|
if (isset($_GET['id']))
|
||||||
{
|
{
|
||||||
list($app, $account, $location) = explode(':', $_GET['id'], 3);
|
list($app, $account, $location) = explode(':', $_GET['id'], 3);
|
||||||
$acl = (int)$account == (int)$GLOBALS['egw_info']['user']['account_id'] ?
|
|
||||||
$GLOBALS['egw']->acl : new acl($account);
|
|
||||||
|
|
||||||
if (!($rights = $acl->get_rights($location, $app)))
|
if (!($rights = $this->acl->get_specific_rights_for_account($account, $location, $app)))
|
||||||
{
|
{
|
||||||
egw_framework::window_close(lang('ACL entry not found!'));
|
egw_framework::window_close(lang('ACL entry not found!'));
|
||||||
}
|
}
|
||||||
@ -68,12 +81,7 @@ class admin_acl
|
|||||||
);
|
);
|
||||||
if ($location == 'run')
|
if ($location == 'run')
|
||||||
{
|
{
|
||||||
if (!isset($acl))
|
$content['apps'] = array_keys($this->acl->get_user_applications($account, false, false)); // false: only direct rights, no memberships
|
||||||
{
|
|
||||||
$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(
|
$acl_rights = $GLOBALS['egw']->hooks->process(array(
|
||||||
@ -86,11 +94,11 @@ class admin_acl
|
|||||||
|
|
||||||
if ($content['acl_location'] == 'run')
|
if ($content['acl_location'] == 'run')
|
||||||
{
|
{
|
||||||
self::save_run_rights($content);
|
$this->save_run_rights($content);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self::save_rights($content);
|
$this->save_rights($content);
|
||||||
}
|
}
|
||||||
egw_framework::window_close();
|
egw_framework::window_close();
|
||||||
}
|
}
|
||||||
@ -148,23 +156,22 @@ class admin_acl
|
|||||||
*
|
*
|
||||||
* @param array $content
|
* @param array $content
|
||||||
*/
|
*/
|
||||||
private static function save_run_rights(array $content)
|
protected function save_run_rights(array $content)
|
||||||
{
|
{
|
||||||
$acl = new acl($content['acl_account']);
|
$old_apps = array_keys($this->acl->get_user_applications($content['acl_account'], false, false));
|
||||||
$old_apps = array_keys($acl->get_user_applications($content['acl_account'], false, false));
|
|
||||||
$ids = array();
|
$ids = array();
|
||||||
// add new apps
|
// add new apps
|
||||||
$added_apps = array_diff($content['apps'], $old_apps);
|
$added_apps = array_diff($content['apps'], $old_apps);
|
||||||
foreach($added_apps as $app)
|
foreach($added_apps as $app)
|
||||||
{
|
{
|
||||||
$acl->add_repository($app, 'run', $content['acl_account'], 1);
|
$this->acl->add_repository($app, 'run', $content['acl_account'], 1);
|
||||||
}
|
}
|
||||||
// remove no longer checked apps
|
// remove no longer checked apps
|
||||||
$removed_apps = array_diff($old_apps, $content['apps']);
|
$removed_apps = array_diff($old_apps, $content['apps']);
|
||||||
$deleted_ids = array();
|
$deleted_ids = array();
|
||||||
foreach($removed_apps as $app)
|
foreach($removed_apps as $app)
|
||||||
{
|
{
|
||||||
$acl->delete_repository($app, 'run', $content['acl_account']);
|
$this->acl->delete_repository($app, 'run', $content['acl_account']);
|
||||||
$deleted_ids[] = $app.':'.$content['acl_account'].':run';
|
$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));
|
//error_log(__METHOD__."() apps=".array2string($content['apps']).", old_apps=".array2string($old_apps).", added_apps=".array2string($added_apps).", removed_apps=".array2string($removed_apps));
|
||||||
@ -192,9 +199,8 @@ class admin_acl
|
|||||||
*
|
*
|
||||||
* @param array $content
|
* @param array $content
|
||||||
*/
|
*/
|
||||||
private static function save_rights(array $content)
|
protected function save_rights(array $content)
|
||||||
{
|
{
|
||||||
$acl = new acl($content['acl_account']);
|
|
||||||
// assamble rights again
|
// assamble rights again
|
||||||
$rights = (int)$content['preserve_rights'];
|
$rights = (int)$content['preserve_rights'];
|
||||||
foreach($content['acl'] as $right)
|
foreach($content['acl'] as $right)
|
||||||
@ -205,18 +211,18 @@ class admin_acl
|
|||||||
$content['acl_appname'].':'.$content['acl_account'].':'.$content['acl_location'];
|
$content['acl_appname'].':'.$content['acl_account'].':'.$content['acl_location'];
|
||||||
//error_log(__METHOD__."() id=$id, acl=".array2string($content['acl'])." --> rights=$rights");
|
//error_log(__METHOD__."() id=$id, acl=".array2string($content['acl'])." --> rights=$rights");
|
||||||
|
|
||||||
if ($acl->get_specific_rights($content['acl_location'], $content['acl_appname']) == $rights)
|
if ($this->acl->get_specific_rights_for_account($content['acl_account'], $content['acl_location'], $content['acl_appname']) == $rights)
|
||||||
{
|
{
|
||||||
// nothing changed --> nothing to do
|
// nothing changed --> nothing to do
|
||||||
}
|
}
|
||||||
elseif (!$rights) // all rights removed --> delete it
|
elseif (!$rights) // all rights removed --> delete it
|
||||||
{
|
{
|
||||||
$acl->delete_repository($content['acl_appname'], $content['acl_location'], $content['acl_account']);
|
$this->acl->delete_repository($content['acl_appname'], $content['acl_location'], $content['acl_account']);
|
||||||
egw_framework::refresh_opener(lang('ACL deleted.'), 'admin', $id, 'delete');
|
egw_framework::refresh_opener(lang('ACL deleted.'), 'admin', $id, 'delete');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$acl->add_repository($content['acl_appname'], $content['acl_location'], $content['acl_account'], $rights);
|
$this->acl->add_repository($content['acl_appname'], $content['acl_location'], $content['acl_account'], $rights);
|
||||||
if ($content['id'])
|
if ($content['id'])
|
||||||
{
|
{
|
||||||
egw_framework::refresh_opener(lang('ACL updated.'), 'admin', $id, 'edit');
|
egw_framework::refresh_opener(lang('ACL updated.'), 'admin', $id, 'edit');
|
||||||
@ -235,7 +241,7 @@ class admin_acl
|
|||||||
* @param array &$rows=null
|
* @param array &$rows=null
|
||||||
* @return int total number of rows available
|
* @return int total number of rows available
|
||||||
*/
|
*/
|
||||||
public static function get_rows(array $query, array &$rows=null)
|
public static function get_rows(array $query, array &$rows=null, array &$sel_options=null)
|
||||||
{
|
{
|
||||||
$so_sql = new so_sql('phpgwapi', acl::TABLE, null, '', true);
|
$so_sql = new so_sql('phpgwapi', acl::TABLE, null, '', true);
|
||||||
|
|
||||||
@ -254,9 +260,7 @@ class admin_acl
|
|||||||
egw_cache::setSession(__CLASS__, 'state', array(
|
egw_cache::setSession(__CLASS__, 'state', array(
|
||||||
'account_id' => $query['account_id'],
|
'account_id' => $query['account_id'],
|
||||||
'filter' => $query['filter'],
|
'filter' => $query['filter'],
|
||||||
'acl_appname' => $query['col_filter']['acl_appname'],
|
'acl_appname' => $query['filter2'],
|
||||||
'acl_location' => $query['col_filter']['acl_location'],
|
|
||||||
'acl_account' => $query['col_filter']['acl_account'],
|
|
||||||
));
|
));
|
||||||
|
|
||||||
if ($GLOBALS['egw_info']['user']['preferences']['admin']['acl_filter'] != $query['filter'])
|
if ($GLOBALS['egw_info']['user']['preferences']['admin']['acl_filter'] != $query['filter'])
|
||||||
@ -266,14 +270,11 @@ class admin_acl
|
|||||||
}
|
}
|
||||||
switch($query['filter'])
|
switch($query['filter'])
|
||||||
{
|
{
|
||||||
default:
|
|
||||||
case 'run':
|
case 'run':
|
||||||
$query['col_filter']['acl_location'] = 'run';
|
$query['col_filter']['acl_location'] = 'run';
|
||||||
if (empty($query['col_filter']['acl_account']))
|
|
||||||
{
|
|
||||||
$query['col_filter']['acl_account'] = $memberships;
|
$query['col_filter']['acl_account'] = $memberships;
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
case 'other':
|
case 'other':
|
||||||
//$query['col_filter'][] = "acl_location!='run'";
|
//$query['col_filter'][] = "acl_location!='run'";
|
||||||
// remove everything not an account-id in location, like category based acl
|
// remove everything not an account-id in location, like category based acl
|
||||||
@ -285,20 +286,33 @@ class admin_acl
|
|||||||
{
|
{
|
||||||
$query['col_filter'][] = "acl_location SIMILAR TO '-?[0-9]+'";
|
$query['col_filter'][] = "acl_location SIMILAR TO '-?[0-9]+'";
|
||||||
}
|
}
|
||||||
if (empty($query['col_filter']['acl_account']))
|
// get apps not using group-acl (eg. Addressbook) or using it only partialy (eg. InfoLog)
|
||||||
|
$not_enum_group_acls = $GLOBALS['egw']->hooks->process('not_enum_group_acls', array(), true);
|
||||||
|
//error_log(__METHOD__."(filter=$query[filter]) not_enum_group_acl=".array2string($not_enum_group_acls));
|
||||||
|
if ($not_enum_group_acls)
|
||||||
{
|
{
|
||||||
$query['col_filter']['acl_account'] = $memberships;
|
$sql = '(CASE acl_appname';
|
||||||
|
foreach($not_enum_group_acls as $app => $groups)
|
||||||
|
{
|
||||||
|
$sql .= ' WHEN '.$GLOBALS['egw']->db->quote($app).' THEN '.$GLOBALS['egw']->db->expression(acl::TABLE, array(
|
||||||
|
'acl_account' => $groups === true ? $query['account_id'] : array_diff($memberships, $groups),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
$sql .= ' ELSE ';
|
||||||
|
}
|
||||||
|
$sql .= $GLOBALS['egw']->db->expression(acl::TABLE, array(
|
||||||
|
'acl_account' => $memberships,
|
||||||
|
));
|
||||||
|
if ($not_enum_group_acls) $sql .= ' END)';
|
||||||
|
$query['col_filter'][] = $sql;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'own':
|
case 'own':
|
||||||
if (empty($query['col_filter']['acl_location']))
|
$query['col_filter']['acl_location'] = $memberships;
|
||||||
{
|
|
||||||
$query['col_filter']['acl_location'] = $memberships;//$query['account_id'];
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// do NOT list group-memberships and other non-ACL stuff here
|
// do NOT list group-memberships and other non-ACL stuff here
|
||||||
|
$query['col_filter']['acl_appname'] = $query['filter2'];
|
||||||
if (empty($query['col_filter']['acl_appname']) && $query['filter'] != 'run')
|
if (empty($query['col_filter']['acl_appname']) && $query['filter'] != 'run')
|
||||||
{
|
{
|
||||||
//$query['col_filter'][] = "NOT acl_appname IN ('phpgw_group','sqlfs')";
|
//$query['col_filter'][] = "NOT acl_appname IN ('phpgw_group','sqlfs')";
|
||||||
@ -382,14 +396,7 @@ class admin_acl
|
|||||||
|
|
||||||
self::check_access($account_id, $location); // throws exception, if no rights
|
self::check_access($account_id, $location); // throws exception, if no rights
|
||||||
|
|
||||||
if ((int)$account_id == (int)$GLOBALS['egw_info']['user']['account_id'])
|
|
||||||
{
|
|
||||||
$acl = $GLOBALS['egw']->acl;
|
$acl = $GLOBALS['egw']->acl;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$acl = new acl($account_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(int)$rights) // this also handles taking away all rights as delete
|
if (!(int)$rights) // this also handles taking away all rights as delete
|
||||||
{
|
{
|
||||||
@ -436,30 +443,31 @@ class admin_acl
|
|||||||
$content['nm'] = array(
|
$content['nm'] = array(
|
||||||
'get_rows' => 'admin_acl::get_rows',
|
'get_rows' => 'admin_acl::get_rows',
|
||||||
'no_cat' => true,
|
'no_cat' => true,
|
||||||
'filter' => $GLOBALS['egw_info']['user']['preferences']['admin']['acl_filter'],
|
'filter' => !empty($_GET['acl_filter']) ? $_GET['acl_filter'] :
|
||||||
'no_filter2' => true,
|
$GLOBALS['egw_info']['user']['preferences']['admin']['acl_filter'],
|
||||||
|
'filter2' => !empty($_GET['acl_app']) ? $_GET['acl_app'] : '',
|
||||||
'lettersearch' => false,
|
'lettersearch' => false,
|
||||||
//'order' => 'account_lid',
|
'order' => 'acl_appname',
|
||||||
'sort' => 'ASC',
|
'sort' => 'ASC',
|
||||||
'row_id' => 'id',
|
'row_id' => 'id',
|
||||||
//'default_cols' => '!account_id,account_created',
|
'account_id' => isset($_GET['account_id']) && (int)$_GET['account_id'] ? (int)(int)$_GET['account_id'] :
|
||||||
|
$GLOBALS['egw_info']['user']['acount_id'],
|
||||||
'actions' => self::get_actions(),
|
'actions' => self::get_actions(),
|
||||||
'acl_rights' => $GLOBALS['egw']->hooks->process(array(
|
'acl_rights' => $GLOBALS['egw']->hooks->process(array(
|
||||||
'location' => 'acl_rights',
|
'location' => 'acl_rights',
|
||||||
'owner' => $query['account_id'],
|
'owner' => $query['account_id'],
|
||||||
), array(), true),
|
), array(), true),
|
||||||
);
|
);
|
||||||
if (isset($_GET['account_id']) && (int)$_GET['account_id'])
|
$user = common::grab_owner_name($content['nm']['account_id']);
|
||||||
{
|
|
||||||
$content['nm']['account_id'] = (int)$_GET['account_id'];
|
|
||||||
$content['nm']['order'] = 'acl_appname';
|
|
||||||
}
|
|
||||||
$sel_options = array(
|
$sel_options = array(
|
||||||
'filter' => array(
|
'filter' => array(
|
||||||
'other' => 'Access to my data by others',
|
'other' => lang('Access to %1 data by others', $user),
|
||||||
'own' => 'My access to other data',
|
'own' => lang('%1 access to other data', $user),
|
||||||
'run' => 'Run rights for applications',
|
'run' => lang('%1 run rights for applications', $user),
|
||||||
),
|
),
|
||||||
|
'filter2' => array(
|
||||||
|
'' => lang('All applications'),
|
||||||
|
)+etemplate_widget_menupopup::app_options('enabled'),
|
||||||
);
|
);
|
||||||
|
|
||||||
$tpl->exec('admin.admin_acl.index', $content, $sel_options);
|
$tpl->exec('admin.admin_acl.index', $content, $sel_options);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
%1 - %2 of %3 user accounts admin de %1 - %2 von %3 Benutzerkonten
|
%1 - %2 of %3 user accounts admin de %1 - %2 von %3 Benutzerkonten
|
||||||
%1 - %2 of %3 user groups admin de %1 - %2 von %3 Benutzergruppen
|
%1 - %2 of %3 user groups admin de %1 - %2 von %3 Benutzergruppen
|
||||||
|
%1 access to other data admin de Zugriff von %1 auf Daten von anderen
|
||||||
%1 acl records of not (longer) existing accounts deleted. admin de %1 ACL Einträge von nicht (mehr) existierenden Accounts gelöscht.
|
%1 acl records of not (longer) existing accounts deleted. admin de %1 ACL Einträge von nicht (mehr) existierenden Accounts gelöscht.
|
||||||
%1 categories of not (longer) existing accounts deleted. admin de %1 Kategorien von nicht (mehr) existierenden Accounts gelöscht.
|
%1 categories of not (longer) existing accounts deleted. admin de %1 Kategorien von nicht (mehr) existierenden Accounts gelöscht.
|
||||||
%1 category(s) %2 admin de %1 Kategorie(n) %2
|
%1 category(s) %2 admin de %1 Kategorie(n) %2
|
||||||
@ -11,12 +12,16 @@
|
|||||||
%1 not found or not executable !!! admin de %1 nicht gefunden oder nicht ausführbar !!!
|
%1 not found or not executable !!! admin de %1 nicht gefunden oder nicht ausführbar !!!
|
||||||
%1 phrases saved. admin de %1 Phrasen gespeichert.
|
%1 phrases saved. admin de %1 Phrasen gespeichert.
|
||||||
%1 rights for %2 and applications %3 admin de %1 Rechte für %2 und Anwendung(en) %3
|
%1 rights for %2 and applications %3 admin de %1 Rechte für %2 und Anwendung(en) %3
|
||||||
|
%1 run rights for applications admin de Ausführungsrechte für Anwendungen von %1
|
||||||
%1 sessions killed admin de %1 Sitzungen beendet
|
%1 sessions killed admin de %1 Sitzungen beendet
|
||||||
%1 user %2 admin de %1 Benutzer %2
|
%1 user %2 admin de %1 Benutzer %2
|
||||||
(default no, leave it off if you dont use it) admin de (Vorgabe Nein, ausgeschaltet lassen, wenn nicht benutzt)
|
(default no, leave it off if you dont use it) admin de (Vorgabe Nein, ausgeschaltet lassen, wenn nicht benutzt)
|
||||||
(stored password will not be shown here) admin de (Gespeichertes Passwort wird hier nicht angezeigt)
|
(stored password will not be shown here) admin de (Gespeichertes Passwort wird hier nicht angezeigt)
|
||||||
(to install new applications use<br><a href="setup/" target="setup">setup</a> [manage applications] !!!) admin de (Zur Installation neuer Anwendungen verwenden Sie bitte<br><a href="setup/" target="setup">Setup</a> [Anwendungen Verwalten] !!!)
|
(to install new applications use<br><a href="setup/" target="setup">setup</a> [manage applications] !!!) admin de (Zur Installation neuer Anwendungen verwenden Sie bitte<br><a href="setup/" target="setup">Setup</a> [Anwendungen Verwalten] !!!)
|
||||||
- type admin de -Typ
|
- type admin de -Typ
|
||||||
|
access by admin de Zugriff durch
|
||||||
|
access control admin de Zugriffskontrolle
|
||||||
|
access to %1 data by others admin de Zugriff auf Daten von %1 durch andere
|
||||||
accesslog and bruteforce defense admin de Zugangsprotokoll und Abwehr von Brute-Force-Angriffen
|
accesslog and bruteforce defense admin de Zugangsprotokoll und Abwehr von Brute-Force-Angriffen
|
||||||
account "%1" has no email address --> not notified! admin de Benutzer "%1" hat keine EMail Adresse --> nicht benachrichtigt!
|
account "%1" has no email address --> not notified! admin de Benutzer "%1" hat keine EMail Adresse --> nicht benachrichtigt!
|
||||||
account "%1" has no plaintext password! admin de Benutzer "%1" hat kein Klartext Passwort!
|
account "%1" has no plaintext password! admin de Benutzer "%1" hat kein Klartext Passwort!
|
||||||
@ -158,6 +163,7 @@ custom fields admin de Benutzerdefinierte Felder
|
|||||||
custom translation admin de Eigene Übersetzung
|
custom translation admin de Eigene Übersetzung
|
||||||
cyrus imap server admin de Cyrus IMAP Server
|
cyrus imap server admin de Cyrus IMAP Server
|
||||||
data admin de Daten
|
data admin de Daten
|
||||||
|
data from admin de Daten von
|
||||||
day admin de Tag
|
day admin de Tag
|
||||||
day of week<br>(0-6, 0=sun) admin de Wochentag<br>(0-6, 0=Sonntag)
|
day of week<br>(0-6, 0=sun) admin de Wochentag<br>(0-6, 0=Sonntag)
|
||||||
db backup and restore admin de DB Datensicherung und Wiederherstellung
|
db backup and restore admin de DB Datensicherung und Wiederherstellung
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
%1 - %2 of %3 user accounts admin en %1 - %2 of %3 user accounts
|
%1 - %2 of %3 user accounts admin en %1 - %2 of %3 user accounts
|
||||||
%1 - %2 of %3 user groups admin en %1 - %2 of %3 user groups
|
%1 - %2 of %3 user groups admin en %1 - %2 of %3 user groups
|
||||||
|
%1 access to other data admin en %1 access to other data
|
||||||
%1 acl records of not (longer) existing accounts deleted. admin en %1 ACL records of not longer existing accounts deleted.
|
%1 acl records of not (longer) existing accounts deleted. admin en %1 ACL records of not longer existing accounts deleted.
|
||||||
%1 categories of not (longer) existing accounts deleted. admin en %1 categories of not (longer) existing accounts deleted.
|
%1 categories of not (longer) existing accounts deleted. admin en %1 categories of not (longer) existing accounts deleted.
|
||||||
%1 category(s) %2 admin en %1 category(s) %2
|
%1 category(s) %2 admin en %1 category(s) %2
|
||||||
@ -11,12 +12,16 @@
|
|||||||
%1 not found or not executable !!! admin en %1 not found or not executable!
|
%1 not found or not executable !!! admin en %1 not found or not executable!
|
||||||
%1 phrases saved. admin en %1 phrases saved.
|
%1 phrases saved. admin en %1 phrases saved.
|
||||||
%1 rights for %2 and applications %3 admin en %1 rights for %2 and applications %3 .
|
%1 rights for %2 and applications %3 admin en %1 rights for %2 and applications %3 .
|
||||||
|
%1 run rights for applications admin en %1 run rights for applications
|
||||||
%1 sessions killed admin en %1 sessions killed.
|
%1 sessions killed admin en %1 sessions killed.
|
||||||
%1 user %2 admin en %1 user %2
|
%1 user %2 admin en %1 user %2
|
||||||
(default no, leave it off if you dont use it) admin en Default = No, leave it off if you dont use it
|
(default no, leave it off if you dont use it) admin en Default = No, leave it off if you dont use it
|
||||||
(stored password will not be shown here) admin en Stored password will not be shown here!
|
(stored password will not be shown here) admin en Stored password will not be shown here!
|
||||||
(to install new applications use<br><a href="setup/" target="setup">setup</a> [manage applications] !!!) admin en To install new applications use<br><a href="setup/" target="setup">Setup</a> [Manage Applications]!
|
(to install new applications use<br><a href="setup/" target="setup">setup</a> [manage applications] !!!) admin en To install new applications use<br><a href="setup/" target="setup">Setup</a> [Manage Applications]!
|
||||||
- type admin en - type
|
- type admin en - type
|
||||||
|
access by admin en Access by
|
||||||
|
access control admin en Access control
|
||||||
|
access to %1 data by others admin en Access to %1 data by others
|
||||||
accesslog and bruteforce defense admin en AccessLog and BruteForce defense
|
accesslog and bruteforce defense admin en AccessLog and BruteForce defense
|
||||||
account "%1" has no email address --> not notified! admin en Account "%1" has no email address --> not notified!
|
account "%1" has no email address --> not notified! admin en Account "%1" has no email address --> not notified!
|
||||||
account "%1" has no plaintext password! admin en Account "%1" has NO plaintext password!
|
account "%1" has no plaintext password! admin en Account "%1" has NO plaintext password!
|
||||||
@ -158,6 +163,7 @@ custom fields admin en Custom fields
|
|||||||
custom translation admin en Custom translation
|
custom translation admin en Custom translation
|
||||||
cyrus imap server admin en Cyrus IMAP Server
|
cyrus imap server admin en Cyrus IMAP Server
|
||||||
data admin en Data
|
data admin en Data
|
||||||
|
data from admin en Data from
|
||||||
day admin en Day
|
day admin en Day
|
||||||
day of week<br>(0-6, 0=sun) admin en Day of week<br>(0-6, 0=Sun)
|
day of week<br>(0-6, 0=sun) admin en Day of week<br>(0-6, 0=Sun)
|
||||||
db backup and restore admin en DB backup and restore
|
db backup and restore admin en DB backup and restore
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/**
|
/**
|
||||||
* EGroupware - eTemplates for Application admin
|
* EGroupware - eTemplates for Application admin
|
||||||
* http://www.egroupware.org
|
* http://www.egroupware.org
|
||||||
* generated by soetemplate::dump4setup() 2013-09-02 11:13
|
* generated by soetemplate::dump4setup() 2013-09-02 18:55
|
||||||
*
|
*
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @package admin
|
* @package admin
|
||||||
@ -30,7 +30,7 @@ $templ_data[] = array('name' => 'admin.acl','template' => '','lang' => '','group
|
|||||||
|
|
||||||
$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:8:",,header";s:2:"h3";s:25:",@acl_location=run,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:9:"Data from";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:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:9:"Access by";s:4:"size";s:15:",,,acl_location";}s:1:"B";a:2:{s:4:"type";s:14:"select-account";s:4:"name";s:12:"acl_location";}}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.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:8:",,header";s:2:"h3";s:25:",@acl_location=run,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:9:"Data from";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:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:9:"Access by";s:4:"size";s:15:",,,acl_location";}s:1:"B";a:2:{s:4:"type";s:14:"select-account";s:4:"name";s:12:"acl_location";}}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:11:"acl_account";s:5:"label";s:9:"Data 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:12:"acl_location";s:5:"label";s:9:"Access by";}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:19:"${row}[acl_account]";s:8:"readonly";s:1:"1";}s:1:"D";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:"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:20:"nextmatch-sortheader";s:4:"name";s:11:"acl_appname";s:5:"label";s:11:"Application";}s:1:"C";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:11:"acl_account";s:5:"label";s:9:"Data from";}s:1:"D";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:12:"acl_location";s:5:"label";s:9:"Access by";}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:19:"${row}[acl_account]";s:8:"readonly";s:1:"1";}s:1:"D";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:"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',);
|
$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',);
|
||||||
|
|
||||||
|
@ -20,9 +20,9 @@
|
|||||||
<rows>
|
<rows>
|
||||||
<row>
|
<row>
|
||||||
<description/>
|
<description/>
|
||||||
<nextmatch-customfilter id="acl_appname" options="select-app,All applications"/>
|
<nextmatch-sortheader label="Application" id="acl_appname"/>
|
||||||
<nextmatch-accountfilter label="Data from" id="acl_account" options="All accounts,both"/>
|
<nextmatch-sortheader label="Data from" id="acl_account"/>
|
||||||
<nextmatch-accountfilter label="Access by" id="acl_location" options="All accounts,both"/>
|
<nextmatch-sortheader label="Access by" id="acl_location"/>
|
||||||
<nextmatch-header label="Read" id="read"/>
|
<nextmatch-header label="Read" id="read"/>
|
||||||
<nextmatch-header label="Add" id="add"/>
|
<nextmatch-header label="Add" id="add"/>
|
||||||
<nextmatch-header label="Edit" id="edit"/>
|
<nextmatch-header label="Edit" id="edit"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user