diff --git a/module/group/control.php b/module/group/control.php index b239f127de..afec51771f 100644 --- a/module/group/control.php +++ b/module/group/control.php @@ -265,6 +265,27 @@ class group extends control if(!isset($selectPrivs[$priv->parentCode][$priv->parent])) $selectPrivs[$priv->parentCode][$priv->parent] = 0; if(!empty($groupPrivs[$priv->module][$priv->method])) $selectPrivs[$priv->parentCode][$priv->parent] ++; } + $unassignedModule = array_diff(array_keys(get_object_vars($this->lang->resource)), array_keys($privList)); + + foreach($unassignedModule as $index => $module) + { + if(!$this->group->checkMenuModule($menu, $module)) continue;; + + $selectPrivs[$module] = array(); + $selectPrivs[$module][0] = 0; + + foreach($this->lang->resource->{$module} as $method => $methodLabel) + { + if(isset($privMethods[$module][$method])) continue; + $privMethods[$module][$method] = $method; + + $privList[$module][0]["{$module}-$method"] = new stdclass(); + $privList[$module][0]["{$module}-$method"]->module = $module; + $privList[$module][0]["{$module}-$method"]->method = $method; + $privList[$module][0]["{$module}-$method"]->name = $this->lang->{$module}->{$methodLabel}; + if(!empty($groupPrivs[$module][$method])) $selectPrivs[$module][0] ++; + } + } $this->view->privList = $privList; $this->view->privMethods = $privMethods; diff --git a/module/group/css/managepriv.css b/module/group/css/managepriv.css index 5b60d42734..d1d1fd0078 100644 --- a/module/group/css/managepriv.css +++ b/module/group/css/managepriv.css @@ -17,6 +17,7 @@ td.menus + td {border-left: 0;} #privList th.package {width: 142px; background-color: #EDEEF2; font-weight: 600;} #privList th.method {min-width: 685px;} #privList th.module > .check-all, #privList th.package > .check-all {font-weight: 600;} +#privList th .checkbox-inline input {margin-left: 0px;} #privList .check-all {display: inline-block;} #privList .check-all > label {padding-left: 0;} #privList .text-middle.text-left {padding-left: 24px;} diff --git a/module/group/js/managepriv.js b/module/group/js/managepriv.js index e3cd655c85..27377e3e01 100644 --- a/module/group/js/managepriv.js +++ b/module/group/js/managepriv.js @@ -74,18 +74,18 @@ function changeParentChecked($item, moduleName, packageID) var $moduleItem = $item.closest('tbody').find('.module[data-module=' + moduleName +']'); if(moduleSelectPrivs == 0) { - $moduleItem.find('input[type=checkbox]').removeAttr('checked'); - $moduleItem.find('label').removeClass('checkbox-indeterminate-block'); + $moduleItem.find('input[type=checkbox]').removeAttr('checked'); + $moduleItem.find('label').removeClass('checkbox-indeterminate-block'); } else if(moduleAllPrivs == moduleSelectPrivs) { - $moduleItem.find('input[type=checkbox]').attr('checked', 'checked'); - $moduleItem.find('label').removeClass('checkbox-indeterminate-block'); + $moduleItem.find('input[type=checkbox]').attr('checked', 'checked'); + $moduleItem.find('label').removeClass('checkbox-indeterminate-block'); } else { - $moduleItem.find('input[type=checkbox]').removeAttr('checked'); - $moduleItem.find('label').addClass('checkbox-indeterminate-block'); + $moduleItem.find('input[type=checkbox]').removeAttr('checked'); + $moduleItem.find('label').addClass('checkbox-indeterminate-block'); } if(packageID == '') return; @@ -95,18 +95,18 @@ function changeParentChecked($item, moduleName, packageID) var $packageItem = $item.closest('tbody').find('.package[data-module=' + moduleName +'][data-package=' + packageID +']'); if(packageSelectPrivs == 0) { - $packageItem.find('input[type=checkbox]').removeAttr('checked'); - $packageItem.find('label').removeClass('checkbox-indeterminate-block'); + $packageItem.find('input[type=checkbox]').removeAttr('checked'); + $packageItem.find('label').removeClass('checkbox-indeterminate-block'); } else if(packageAllPrivs == packageSelectPrivs) { - $packageItem.find('input[type=checkbox]').attr('checked', 'checked'); - $packageItem.find('label').removeClass('checkbox-indeterminate-block'); + $packageItem.find('input[type=checkbox]').attr('checked', 'checked'); + $packageItem.find('label').removeClass('checkbox-indeterminate-block'); } else { - $packageItem.find('input[type=checkbox]').removeAttr('checked'); - $packageItem.find('label').addClass('checkbox-indeterminate-block'); + $packageItem.find('input[type=checkbox]').removeAttr('checked'); + $packageItem.find('label').addClass('checkbox-indeterminate-block'); } } diff --git a/module/group/view/privbygroup.html.php b/module/group/view/privbygroup.html.php index ac1b5153ea..8f232dfe5d 100644 --- a/module/group/view/privbygroup.html.php +++ b/module/group/view/privbygroup.html.php @@ -112,7 +112,7 @@ $i = 1; - $unassigned = (!empty($moduleActions) and !empty($privMethods[$moduleName])) ? array_diff(array_keys(json_decode(json_encode($moduleActions), true)), $privMethods[$moduleName]) : array(); + $unassigned = (!empty($moduleActions) and !empty($privMethods[$moduleName])) ? array_diff(array_keys(get_object_vars($moduleActions)), $privMethods[$moduleName]) : array(); $modulePrivs = count($privList[$moduleName], 1) - count($selectPrivs[$moduleName], 1) + count($unassigned); $moduleSelect = array_sum($selectPrivs[$moduleName]); ?> @@ -147,9 +147,7 @@ $priv):?>
- method;?> - name) ? $privLang[$privID]->name : $privLang[$privID]->name->title;?> - $privName), isset($groupPrivs[$priv->module][$action]) ? $action : '', "title='{$privName}' id='actions[$moduleName]$action' data-id='$privID'");?> + module]", array($priv->method => $priv->name), isset($groupPrivs[$priv->module][$priv->method]) ? $priv->method : '', "title='{$priv->name}' id='actions[$priv->module]$priv->method' data-id='$privID'");?>