commit 93cd05ba35d8ba850d3269f363246eb4308145cc
parent 69b3bb546c4707baaf7190bc8d6de249711d3f37
Author: dankert <devnull@localhost>
Date: Wed, 11 Nov 2009 22:10:09 +0100
Funktionen für Benutzer/Gruppen überarbeitet: Aktionen sind editierbar, Mitgliedschaften einheitlich über Checkboxen pflegen.
Diffstat:
5 files changed, 53 insertions(+), 27 deletions(-)
diff --git a/actionClasses/GroupAction.class.php b/actionClasses/GroupAction.class.php
@@ -202,18 +202,56 @@ class GroupAction extends Action
* Liste aller Benutzer in dieser Gruppe.
*
*/
- function users()
+ function usersView()
{
// Mitgliedschaften ermitteln
//
$userliste = array();
- foreach( $this->group->getUsers() as $userid=>$name )
+ $allUsers = User::listAll();
+
+ $actualGroupUsers = $this->group->getUsers();
+
+ foreach( $allUsers as $id=>$name )
{
- $userliste[$userid] = array('name' => $name,
- 'delete_url' => Html::url('group','deluser',$this->getRequestId(),array('userid'=>$userid)));
+ $hasUser = array_key_exists($id,$actualGroupUsers);
+ $varName = 'user'.$id;
+ $userliste[$id] = array('name' => $name,
+ 'id' => $id,
+ 'var' => $varName,
+ 'member' => $hasUser
+ );
+ $this->setTemplateVar($varName,$hasUser);
}
$this->setTemplateVar('memberships',$userliste);
+
+ global $conf;
+ if ($conf['security']['authorize']['type']=='ldap')
+ $this->addNotice('user',$this->user->name,'GROUPS_MAY_CONFLICT_WITH_LDAP',OR_NOTICE_WARN);
+ }
+
+
+ function usersAction()
+ {
+ $allUsers = User::listAll();
+ $groupUsers = $this->group->getUsers();
+
+ foreach( $allUsers as $id=>$name )
+ {
+ $hasUser = array_key_exists($id,$groupUsers);
+
+ if ( !$hasUser && $this->hasRequestVar('user'.$id) )
+ {
+ $this->group->addUser($id);
+ $this->addNotice('user',$name,'ADDED');
+ }
+
+ if ( $hasUser && !$this->hasRequestVar('user'.$id) )
+ {
+ $this->group->delUser($id);
+ $this->addNotice('user',$name,'DELETED');
+ }
+ }
}
@@ -298,8 +336,7 @@ class GroupAction extends Action
return !readonly();
case 'users':
- // Benutzerliste nur anzeigen, wenn welche vorhanden.
- return !readonly() && count($this->group->getUsers()) > 0;
+ return true;
case 'adduser':
// Benutzer k�nnen nur hinzugef�gt werden, wenn noch nicht alle
// in der Gruppe sind.
diff --git a/actionClasses/GroupAction.ini.php b/actionClasses/GroupAction.ini.php
@@ -28,13 +28,8 @@ goto=users
[users]
menu=memberships
-
-[adduser]
-target=addusertogroup
-menu=memberships
-
-[addusertogroup]
-goto=users
+editable=true
+write=true
[rights]
menu=rights
@@ -43,5 +38,5 @@ menu=rights
listing=listing,add
users=users,adduser
edit=edit,remove
-memberships=users,adduser
+memberships=users
rights=rights
\ No newline at end of file
diff --git a/actionClasses/MainmenuAction.class.php b/actionClasses/MainmenuAction.class.php
@@ -263,8 +263,10 @@ class MainmenuAction extends Action
{
global $conf;
- //$this->addSubaction('listing');
$this->addSubaction('add' );
+
+ // Liste immer anzeigen, da es ja mind. 1 Benutzer gibt.
+ $this->addSubaction('listing');
if ( $this->getRequestId() != 0 )
{
diff --git a/actionClasses/UserAction.class.php b/actionClasses/UserAction.class.php
@@ -237,11 +237,8 @@ class UserAction extends Action
}
- function groups()
+ function groupsView()
{
- // Mitgliedschaften
-// $this->setTemplateVar('memberships',$this->user->getGroups());
-
$gruppenListe = array();
$allGroups = Group::getAll();
@@ -267,7 +264,7 @@ class UserAction extends Action
}
- function savegroups()
+ function groupsAction()
{
$allGroups = Group::getAll();
$userGroups = $this->user->getGroups();
diff --git a/actionClasses/UserAction.ini.php b/actionClasses/UserAction.ini.php
@@ -23,16 +23,11 @@ write=true
[memberships]
goto=groups
-; Anzeige der Gruppenzugehoerigkeiten
+; Gruppenzugehoerigkeiten
[groups]
menu=memberships
editable=true
-target=savegroups
-
-; Speichern der Gruppenzugehoerigkeiten
-[savegroups]
-menu=memberships
-goto=groups
+write=yes
[pw]
menu=pw