diff --git a/module/group/control.php b/module/group/control.php index 8a980790ff..c60d8fc190 100644 --- a/module/group/control.php +++ b/module/group/control.php @@ -126,11 +126,14 @@ class group extends control public function managePriv($type = 'byGroup', $param = 0) { if($type == 'byGroup') $groupID = $param; + $this->view->type = $type; + foreach($this->lang->resource as $moduleName => $action) $this->app->loadLang($moduleName); if(!empty($_POST)) { - $this->group->updatePriv($groupID); - echo js::alert($this->lang->group->successSaved); + if($type == 'byGroup') $result = $this->group->updatePrivByGroup($groupID); + if($type == 'byModule') $result = $this->group->updatePrivByModule(); + print(js::alert($result ? $this->lang->group->successSaved : $this->lang->group->errorNotSaved)); die(js::execute('parent.document.body.click();')); } @@ -145,8 +148,23 @@ class group extends control $this->view->group = $group; $this->view->groupPrivs = $groupPrivs; - /* Load lang files of every module. */ - foreach($this->lang->resource as $moduleName => $action) $this->app->loadLang($moduleName); + } + elseif($type == 'byModule') + { + $this->view->header->title = $this->lang->company->common . $this->lang->colon . $this->lang->group->managePriv; + $this->view->position[] = $this->lang->group->managePriv; + + foreach($this->lang->resource as $module => $moduleActions) + { + $modules[$module] = $this->lang->$module->common; + foreach($moduleActions as $action) + { + $actions[$module][$action] = $this->lang->$module->$action; + } + } + $this->view->groups = $this->group->getPairs(); + $this->view->modules = $modules; + $this->view->actions = $actions; } $this->display(); } diff --git a/module/group/css/managepriv.css b/module/group/css/managepriv.css new file mode 100644 index 0000000000..14fa3f341c --- /dev/null +++ b/module/group/css/managepriv.css @@ -0,0 +1 @@ +.table-6 select{width:200px; height:200px} diff --git a/module/group/js/managepriv.js b/module/group/js/managepriv.js index c9af0f67a8..d688ee4b5e 100644 --- a/module/group/js/managepriv.js +++ b/module/group/js/managepriv.js @@ -13,3 +13,17 @@ function checkall(checker) $(this).attr("checked", checker.checked) }); } + +/** + * Control the actions select control for a module. + * + * @param string $module + * @access public + * @return void + */ +function setModuleActions(module) +{ + $('#actionBox select').addClass('hidden'); // Hide all select first. + $('#actionBox select').val(''); // Unselect all select. + $('.' + module + 'Actions').removeClass('hidden'); // Show the action control for current module. +} diff --git a/module/group/lang/en.php b/module/group/lang/en.php index ed22fd18fa..46c1d7e827 100644 --- a/module/group/lang/en.php +++ b/module/group/lang/en.php @@ -9,18 +9,21 @@ * @version $Id$ * @link http://www.zentao.net */ -$lang->group->common = 'Group'; -$lang->group->browse = 'Browse'; -$lang->group->create = 'Create'; -$lang->group->edit = 'Edit'; -$lang->group->copy = 'Copy'; -$lang->group->delete = 'Delete'; -$lang->group->managePriv = 'Privilege'; -$lang->group->manageMember = 'Members'; -$lang->group->linkMember = 'Add members'; -$lang->group->unlinkMember = 'Remove member'; -$lang->group->confirmDelete= 'Are you sure to delete this group?'; -$lang->group->successSaved = 'Success saved.'; +$lang->group->common = 'Group'; +$lang->group->browse = 'Browse'; +$lang->group->create = 'Create'; +$lang->group->edit = 'Edit'; +$lang->group->copy = 'Copy'; +$lang->group->delete = 'Delete'; +$lang->group->managePriv = 'Privilege'; +$lang->group->managePrivByGroup = 'Privilege'; +$lang->group->managePrivByModule = 'Manage privilege by module'; +$lang->group->manageMember = 'Members'; +$lang->group->linkMember = 'Add members'; +$lang->group->unlinkMember = 'Remove member'; +$lang->group->confirmDelete = 'Are you sure to delete this group?'; +$lang->group->successSaved = 'Success saved.'; +$lang->group->errorNotSaved = 'Not saved, please make sure you have selected some actions and groups.'; $lang->group->id = 'Id'; $lang->group->name = 'Name'; diff --git a/module/group/lang/zh-cn.php b/module/group/lang/zh-cn.php index 199f88c571..9c757b960a 100644 --- a/module/group/lang/zh-cn.php +++ b/module/group/lang/zh-cn.php @@ -9,18 +9,21 @@ * @version $Id$ * @link http://www.zentao.net */ -$lang->group->common = '权限分组'; -$lang->group->browse = '浏览分组'; -$lang->group->create = '新增分组'; -$lang->group->edit = '编辑分组'; -$lang->group->copy = '复制分组'; -$lang->group->delete = '删除分组'; -$lang->group->managePriv = '权限维护'; -$lang->group->manageMember = '成员维护'; -$lang->group->linkMember = '关联用户'; -$lang->group->unlinkMember = '移除用户'; -$lang->group->confirmDelete= '您确定删除该用户分组吗?'; -$lang->group->successSaved = '成功保存'; +$lang->group->common = '权限分组'; +$lang->group->browse = '浏览分组'; +$lang->group->create = '新增分组'; +$lang->group->edit = '编辑分组'; +$lang->group->copy = '复制分组'; +$lang->group->delete = '删除分组'; +$lang->group->managePriv = '权限维护'; +$lang->group->managePrivByGroup = '权限维护'; +$lang->group->managePrivByModule = '按模块分配权限'; +$lang->group->manageMember = '成员维护'; +$lang->group->linkMember = '关联用户'; +$lang->group->unlinkMember = '移除用户'; +$lang->group->confirmDelete = '您确定删除该用户分组吗?'; +$lang->group->successSaved = '成功保存'; +$lang->group->errorNotSaved = '没有保存,请确认选择了权限数据。'; $lang->group->id = '编号'; $lang->group->name = '分组名称'; diff --git a/module/group/model.php b/module/group/model.php index 03236919a3..ca30405eef 100644 --- a/module/group/model.php +++ b/module/group/model.php @@ -183,15 +183,14 @@ class groupModel extends model * * @param int $groupID * @access public - * @return void + * @return bool */ - public function updatePriv($groupID) + public function updatePrivByGroup($groupID) { /* Delete old. */ $this->dao->delete()->from(TABLE_GROUPPRIV)->where('`group`')->eq($groupID)->exec(); /* Insert new. */ - if($this->post->actions == false) return; foreach($this->post->actions as $moduleName => $moduleActions) { foreach($moduleActions as $actionName) @@ -202,6 +201,30 @@ class groupModel extends model $this->dao->insert(TABLE_GROUPPRIV)->data($data)->exec(); } } + return true; + } + + /** + * Update privilege by module. + * + * @access public + * @return void + */ + public function updatePrivByModule() + { + if($this->post->module == false or $this->post->actions == false or $this->post->groups == false) return false; + + foreach($this->post->actions as $action) + { + foreach($this->post->groups as $group) + { + $data->group = $group; + $data->module = $this->post->module; + $data->method = $action; + $this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec(); + } + } + return true; } /** diff --git a/module/group/view/browse.html.php b/module/group/view/browse.html.php index ee432e5caa..29b9bddc35 100644 --- a/module/group/view/browse.html.php +++ b/module/group/view/browse.html.php @@ -24,24 +24,27 @@