|
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.
|