From cca740195f76ef89563ab5c00a76c492a462d752 Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Tue, 28 Mar 2017 15:11:57 +0200 Subject: [permission-manager] added role editor (new role and edit role) --- modules-available/permissionmanager/page.inc.php | 96 +++++++++++++++++++++--- 1 file changed, 84 insertions(+), 12 deletions(-) (limited to 'modules-available/permissionmanager/page.inc.php') diff --git a/modules-available/permissionmanager/page.inc.php b/modules-available/permissionmanager/page.inc.php index e68af462..053c099d 100644 --- a/modules-available/permissionmanager/page.inc.php +++ b/modules-available/permissionmanager/page.inc.php @@ -20,13 +20,20 @@ class Page_PermissionManager extends Page $users = Request::post('users', ''); $roles = Request::post('roles', ''); DbUpdate::addRoleToUser($users, $roles); - } else if ($action === 'removeRoleFromUser') { + } elseif ($action === 'removeRoleFromUser') { $users = Request::post('users', ''); $roles = Request::post('roles', ''); DbUpdate::removeRoleFromUser($users, $roles); - } else if ($action === 'deleteRole') { + } elseif ($action === 'deleteRole') { $id = Request::post('deleteId', false, 'string'); DbUpdate::deleteRole($id); + } elseif ($action === 'saveRole') { + $roleID = Request::post("roleid", false); + $roleName = Request::post("roleName"); + $locType = Request::post("include", "off") == "on" ? "include" : "exclude"; + $locations = Request::post("locations"); + $permissions = Request::post("permissions"); + DbUpdate::saveRole($roleName, $locType, $locations, $permissions, $roleID); } } @@ -35,14 +42,15 @@ class Page_PermissionManager extends Page */ protected function doRender() { - $show = Request::get("show", false); - // get menu button colors - $buttonColors = self::setButtonColors($show); - - $data = array(); + $show = Request::get("show", "roles"); // switch between tables, but always show menu to switch tables - if (!$show || $show === 'roles' || $show === 'users' || $show === 'locations') { + if ( $show === 'roles' || $show === 'users' || $show === 'locations' ) { + // get menu button colors + $buttonColors = self::setButtonColors($show); + + $data = array(); + Render::openTag('div', array('class' => 'row')); Render::addtemplate('_page', $buttonColors); Render::closeTag('div'); @@ -50,12 +58,49 @@ class Page_PermissionManager extends Page if ($show === "roles") { $data = array("roles" => GetData::getRoles()); Render::addTemplate('rolesTable', $data); - } else if ($show === "users") { + } elseif ($show === "users") { $data = array("user" => GetData::getUserData(), "roles" => GetData::getRoles()); Render::addTemplate('usersTable', $data); - } else if ($show === "locations") { + } elseif ($show === "locations") { Render::addTemplate('locationsTable', $data); } + } elseif ($show === "roleEditor") { + $data = array(); + + $roleID = Request::get("roleid", false); + $selectedLocations = array(); + if ($roleID) { + $roleData = GetData::getRoleData($roleID); + $selectedLocations = $roleData["locations"]; + $data["roleid"] = $roleID; + $data["roleName"] = $roleData["name"]; + $data["includeChecked"] = $roleData["locType"] == "include" ? "checked" : ""; + $data["selectedPermissions"] = implode(" ", $roleData["permissions"]); + } else { + $data["includeChecked"] = "checked"; + } + + $permissions = PermissionUtil::getPermissions(); + $permissionHTML = ""; + foreach ($permissions as $k => $v) { + $permissionHTML .= " + "; + } + + $data["locations"] = GetData::getLocations($selectedLocations); + $data["moduleNames"] = array_keys($permissions); + $data["permissionHTML"] = $permissionHTML; + Render::addTemplate('roleEditor', $data); } } @@ -65,11 +110,11 @@ class Page_PermissionManager extends Page $buttonColors['rolesButtonClass'] = 'btn-primary'; $buttonColors['usersButtonClass'] = 'btn-default'; $buttonColors['locationsButtonClass'] = 'btn-default'; - } else if ($show === 'users') { + } elseif ($show === 'users') { $buttonColors['rolesButtonClass'] = 'btn-default'; $buttonColors['usersButtonClass'] = 'btn-primary'; $buttonColors['locationsButtonClass'] = 'btn-default'; - } else if ($show === 'locations') { + } elseif ($show === 'locations') { $buttonColors['rolesButtonClass'] = 'btn-default'; $buttonColors['usersButtonClass'] = 'btn-default'; $buttonColors['locationsButtonClass'] = 'btn-primary'; @@ -82,4 +127,31 @@ class Page_PermissionManager extends Page return $buttonColors; } + private static function generateSubPermissionHTML($subPermissions, $permissionString) + { + $html = ""; + return $html; + } + } -- cgit v1.2.3-55-g7522