From: <gem...@li...> - 2012-05-31 13:36:59
|
Revision: 718 http://gemstracker.svn.sourceforge.net/gemstracker/?rev=718&view=rev Author: mennodekker Date: 2012-05-31 13:36:48 +0000 (Thu, 31 May 2012) Log Message: ----------- Removed session from DbLookup Prevented setting primary group when editing a user with a group we can not set (not superadmin downgrades superadmin while editing) Made staff browse-edit a little more compact Modified Paths: -------------- trunk/library/classes/Gems/Default/StaffAction.php trunk/library/classes/Gems/Util/DbLookup.php Modified: trunk/library/classes/Gems/Default/StaffAction.php =================================================================== --- trunk/library/classes/Gems/Default/StaffAction.php 2012-05-31 12:22:35 UTC (rev 717) +++ trunk/library/classes/Gems/Default/StaffAction.php 2012-05-31 13:36:48 UTC (rev 718) @@ -69,9 +69,41 @@ if ($menuItem = $this->findAllowedMenuItem('show')) { $bridge->addItemLink($menuItem->toActionLinkLower($this->getRequest(), $bridge)); } + + $br = MUtil_Html::create('br'); + $orgCount = count($model->get('gsf_id_organization', 'multiOptions')); foreach($model->getItemsOrdered() as $name) { if ($label = $model->get($name, 'label')) { - $bridge->addSortable($name, $label); + switch ($name) { + case 'name': + if ($orgCount > 1) { + $bridge->addMultiSort('name', $br, 'gsf_email'); + } else { + $bridge->addSortable($name, $label); + } + + break; + + case 'gsf_email': + if ($orgCount > 1) { + //Do nothing as it is already linked in the 'name' field + } else { + $bridge->addSortable($name, $label); + } + break; + + case 'gsf_id_organization': + if ($orgCount > 1) { + $bridge->addSortable($name, $label); + } else { + //Don't show as it is always the same + } + break; + + default: + $bridge->addSortable($name, $label); + break; + } } } // Add edit button if allowed, otherwise show, again if allowed @@ -102,9 +134,16 @@ $user = $this->loader->getUserLoader()->getUserByStaffId($data['gsf_id_user']); // MUtil_Echo::track($data['gsf_id_user'], $user->getLoginName()); } - $dbLookup = $this->util->getDbLookup(); - $model->set('gsf_id_primary_group', 'multiOptions', MUtil_Lazy::call($dbLookup->getAllowedStaffGroups)); + // Find out if this group is in the inheritance path of the current user + $allowedGroups = $this->util->getDbLookup()->getAllowedStaffGroups(); + if (!array_key_exists($data['gsf_id_primary_group'], $allowedGroups)) { + //Not allowed to update + $model->set('gsf_id_primary_group', 'elementClass', 'Exhibitor'); + } else { + //Allow only certain groups + $model->set('gsf_id_primary_group', 'multiOptions', $allowedGroups); + } if ($new) { $model->set('gsf_id_primary_group', 'default', $dbLookup->getDefaultGroup()); } @@ -150,7 +189,7 @@ $bridge->addFilter( 'gsf_last_name', $ucfirst); $bridge->addText( 'gsf_email', array('size' => 30))->addValidator('SimpleEmail'); - $bridge->addSelect('gsf_id_primary_group'); + $bridge->add('gsf_id_primary_group'); $bridge->addCheckbox('gul_can_login', 'description', $this->_('Users can only login when this box is checked.')); $bridge->addCheckbox('gsf_logout_on_survey', 'description', $this->_('If checked the user will logoff when answering a survey.')); Modified: trunk/library/classes/Gems/Util/DbLookup.php =================================================================== --- trunk/library/classes/Gems/Util/DbLookup.php 2012-05-31 12:22:35 UTC (rev 717) +++ trunk/library/classes/Gems/Util/DbLookup.php 2012-05-31 13:36:48 UTC (rev 718) @@ -70,12 +70,6 @@ protected $util; /** - * - * @var Zend_Session - */ - protected $session; - - /** * Retrieve a list of orgid/name pairs * * @staticvar array $organizations @@ -148,11 +142,12 @@ public function getAllowedStaffGroups() { $groups = $this->getActiveStaffGroups(); - if ($this->session->user_role === 'master') { + $user = GemsEscort::getInstance()->getLoader()->getCurrentUser(); + if ($user->getRole() === 'master') { return $groups; } else { - $rolesAllowed = $this->acl->getRoleAndParents($this->session->user_role); + $rolesAllowed = $user->getRoles(); $roles = $this->db->fetchPairs('SELECT ggp_id_group, ggp_role FROM gems__groups WHERE ggp_group_active=1 AND ggp_staff_members=1 ORDER BY ggp_name'); $result = array(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |