1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-19 12:51:52 +02:00

Hides empty admin-navigation menu categories when access has not been granted to these areas.

This commit is contained in:
Cameron
2015-06-06 02:33:23 -07:00
parent 34ac81c019
commit 143784974d
5 changed files with 93 additions and 31 deletions

View File

@@ -1472,6 +1472,12 @@ class e_admin_dispatcher
$selected = false;
foreach($this->adminMenu as $key => $val)
{
if(!empty($val['perm']) && !getperms($val['perm']))
{
continue;
}
$tmp = explode('/', trim($key, '/'), 3);
// sync with mode/route access
@@ -1544,7 +1550,8 @@ class e_admin_dispatcher
$var[$key]['link'] = (vartrue($val['url']) ? $tp->replaceConstants($val['url'], 'abs') : e_SELF).'?mode='.$tmp[0].'&action='.$tmp[1];
$var[$key]['perm'] = $val['perm']; */
}
if(empty($var)) return '';
$request = $this->getRequest();
@@ -2927,6 +2934,28 @@ class e_admin_controller_ui extends e_admin_controller
return $this;
}
/**
* @param $val
*/
public function setBatchDelete($val)
{
$this->batchDelete = $val;
return $this;
}
/**
* @param $val
*/
public function setBatchCopy($val)
{
$this->batchCopy = $val;
return $this;
}
/**
* User defined config setter
* @return e_admin_controller_ui
@@ -5682,6 +5711,41 @@ class e_admin_form_ui extends e_form
$this->listTotal = $tree[$id]->getTotal();
$fields = $controller->getFields();
// checks dispatcher perms for edit/delete access in list mode.
$mode = $controller->getMode();
$deleteRoute = $mode."/delete";
$editRoute = $mode."/edit";
$createRoute = $mode."/create";
$perm = $controller->getDispatcher()->getPerm();
if(isset($perm[$createRoute]) && !getperms($perm[$createRoute])) // disable the batchCopy option.
{
$controller->setBatchCopy(false);
}
if(isset($perm[$deleteRoute]) && !getperms($perm[$deleteRoute])) // disable the delete button and batch delete.
{
$fields['options']['readParms']['deleteClass'] = e_UC_NOBODY;
$controller->setBatchDelete(false);
}
if(isset($perm[$editRoute]) && !getperms($perm[$editRoute]))
{
$fields['options']['readParms']['editClass'] = e_UC_NOBODY; // display the edit button.
foreach($options[$id]['fields'] as $k=>$v) // disable inline editing.
{
$fields[$k]['inline'] = false;
}
}
// ------------------------------------------
$options[$id] = array(
'id' => $this->getElementId(), // unique string used for building element ids, REQUIRED
'pid' => $controller->getPrimaryName(), // primary field name, REQUIRED
@@ -5693,7 +5757,7 @@ class e_admin_form_ui extends e_form
'legend' => $controller->getPluginTitle(), // hidden by default
'form_pre' => !$ajax ? $this->renderFilter($tp->post_toForm(array($controller->getQuery('searchquery'), $controller->getQuery('filter_options'))), $controller->getMode().'/'.$controller->getAction()) : '', // needs to be visible when a search returns nothing
'form_post' => '', // markup to be added after closing form element
'fields' => $controller->getFields(), // see e_admin_ui::$fields
'fields' => $fields, // see e_admin_ui::$fields
'fieldpref' => $controller->getFieldPref(), // see e_admin_ui::$fieldpref
'table_pre' => '', // markup to be added before opening table element
// 'table_post' => !$tree[$id]->isEmpty() ? $this->renderBatch($controller->getBatchDelete(),$controller->getBatchCopy(),$controller->getBatchLink(),$controller->getBatchFeaturebox()) : '',
@@ -5708,25 +5772,7 @@ class e_admin_form_ui extends e_form
);
// checks dispatcher perms for edit/delete access in list mode.
$deleteRoute = $this->getController()->getMode()."/delete";
$editRoute = $this->getController()->getMode()."/edit";
$perm = $this->getController()->getDispatcher()->getPerm();
if(isset($perm[$deleteRoute]) && !getperms($perm[$deleteRoute])) // disable the delete button.
{
$options[$id]['fields']['options']['readParms']['deleteClass'] = e_UC_NOBODY;
}
if(isset($perm[$editRoute]) && !getperms($perm[$editRoute]))
{
$options[$id]['fields']['options']['readParms']['editClass'] = e_UC_NOBODY; // display the edit button.
foreach($options[$id]['fields'] as $k=>$v) // disable inline editing.
{
$options[$id]['fields'][$k]['inline'] = false;
}
}
return $this->renderListForm($options, $tree, $ajax);
}