openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
actionClasses/GroupAction.class.php | 49+++++++++++++++++++++++++++++++++++++++++++------
actionClasses/GroupAction.ini.php | 11+++--------
actionClasses/MainmenuAction.class.php | 4+++-
actionClasses/UserAction.class.php | 7++-----
actionClasses/UserAction.ini.php | 9++-------
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