From 2dd1aa2f2d5e29acfaa6eecb1a7d375b70d70ec3 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Mon, 7 Jan 2013 08:39:27 +0000 Subject: [PATCH] * finish task #1059. --- module/group/control.php | 15 ++++++-- module/group/css/managepriv.css | 2 +- module/group/js/managepriv.js | 16 ++++----- module/group/lang/en.php | 37 +++++++++---------- module/group/lang/zh-cn.php | 37 +++++++++---------- module/group/model.php | 49 ++++++++++++++++++++++---- module/group/view/privbygroup.html.php | 39 +++++++++++++------- 7 files changed, 126 insertions(+), 69 deletions(-) diff --git a/module/group/control.php b/module/group/control.php index 1d97e82bcc..1a60b0ace9 100644 --- a/module/group/control.php +++ b/module/group/control.php @@ -120,7 +120,7 @@ class group extends control * @access public * @return void */ - public function managePriv($type = 'byGroup', $param = 0, $menu = 'my') + public function managePriv($type = 'byGroup', $param = 0, $menu = 'my', $version = '') { if($type == 'byGroup') $groupID = $param; $this->view->type = $type; @@ -131,7 +131,7 @@ class group extends control if(!empty($_POST)) { - if($type == 'byGroup') $result = $this->group->updatePrivByGroup($groupID, $menu); + if($type == 'byGroup') $result = $this->group->updatePrivByGroup($groupID, $menu, $version); if($type == 'byModule') $result = $this->group->updatePrivByModule(); print(js::alert($result ? $this->lang->group->successSaved : $this->lang->group->errorNotSaved)); exit; @@ -146,11 +146,20 @@ class group extends control $this->view->header->title = $this->lang->company->common . $this->lang->colon . $group->name . $this->lang->colon . $this->lang->group->managePriv; $this->view->position[] = $group->name . $this->lang->colon . $this->lang->group->managePriv; + /* Join changelog when be equal or greater than this version.*/ + $realVersion = str_replace('_', '.', $version); + $changelog = array(); + foreach($this->lang->changelog as $currentVersion => $currentChangeLog) + { + if(version_compare($currentVersion, $realVersion, '>=')) $changelog[] = join($currentChangeLog, ','); + } + $this->view->group = $group; - $this->view->changelogs = $this->lang->changelog; + $this->view->changelogs = ',' . join($changelog, ',') . ','; $this->view->groupPrivs = $groupPrivs; $this->view->groupID = $groupID; $this->view->menu = $menu; + $this->view->version = $version; } elseif($type == 'byModule') { diff --git a/module/group/css/managepriv.css b/module/group/css/managepriv.css index 9e708e4256..ed2b7f6059 100644 --- a/module/group/css/managepriv.css +++ b/module/group/css/managepriv.css @@ -1,2 +1,2 @@ .table-6 select{width:200px; height:200px} -#version {border:2px solid red; margin-left:10px;} +#version {margin-left:10px;} diff --git a/module/group/js/managepriv.js b/module/group/js/managepriv.js index 475d4a927b..251881e8aa 100644 --- a/module/group/js/managepriv.js +++ b/module/group/js/managepriv.js @@ -1,11 +1,6 @@ function showPriv(value) { - $('.priv').removeClass('red'); - privs = newPriv[value]; - for(var item in privs) - { - $('#' + privs[item]).addClass('red'); - } + location.href = createLink('group', 'managePriv', "type=byGroup¶m="+ groupID + "&menu=" + menu + "&version=" + value); } /* Override the setHelpLink(). */ @@ -25,8 +20,11 @@ function setModuleActions(module) $('.' + module + 'Actions').removeClass('hidden'); // Show the action control for current module. } -$(function() +function setNoChecked() { - showPriv(version); + var noCheckValue = ''; + $(':checkbox').each(function(){ + if(!$(this).attr('checked') && $(this).next('span').attr('id') != undefined) noCheckValue = noCheckValue + ',' + $(this).next('span').attr('id'); + }) + $('#noChecked').val(noCheckValue); } -); diff --git a/module/group/lang/en.php b/module/group/lang/en.php index 8953159a33..9fec4ffaac 100644 --- a/module/group/lang/en.php +++ b/module/group/lang/en.php @@ -41,23 +41,24 @@ $lang->group->all = 'All priv'; $lang->group->copyOptions['copyPriv'] = 'Copy priviledge'; $lang->group->copyOptions['copyUser'] = 'Copy user'; -$lang->group->versions[''] = 'Show methods added in every release'; -$lang->group->versions['3.3'] = '3.3'; -$lang->group->versions['3.2.1'] = '3.2.1'; -$lang->group->versions['3.2'] = '3.2'; -$lang->group->versions['3.1'] = '3.1'; -$lang->group->versions['3.0.beta2'] = '3.0.beta2'; -$lang->group->versions['3.0.beta1'] = '3.0.beta1'; -$lang->group->versions['2.4'] = '2.4'; -$lang->group->versions['2.3'] = '2.3'; -$lang->group->versions['2.2'] = '2.2'; -$lang->group->versions['2.1'] = '2.1'; -$lang->group->versions['2.0'] = '2.0'; -$lang->group->versions['1.5'] = '1.5'; -$lang->group->versions['1.4'] = '1.4'; -$lang->group->versions['1.3'] = '1.3'; -$lang->group->versions['1.2'] = '1.2'; -$lang->group->versions['1.1'] = '1.1'; -$lang->group->versions['1.0.1'] = '1.0.1'; +$lang->group->versions[''] = 'Since version of power'; +$lang->group->versions['4_0_beta2'] = 'Zentao 4.0.beta2'; +$lang->group->versions['3_3'] = 'Zentao 3.3'; +$lang->group->versions['3_2_1'] = 'Zentao 3.2.1'; +$lang->group->versions['3_2'] = 'Zentao 3.2'; +$lang->group->versions['3_1'] = 'Zentao 3.1'; +$lang->group->versions['3_0_beta2'] = 'Zentao 3.0.beta2'; +$lang->group->versions['3_0_beta1'] = 'Zentao 3.0.beta1'; +$lang->group->versions['2_4'] = 'Zentao 2.4'; +$lang->group->versions['2_3'] = 'Zentao 2.3'; +$lang->group->versions['2_2'] = 'Zentao 2.2'; +$lang->group->versions['2_1'] = 'Zentao 2.1'; +$lang->group->versions['2_0'] = 'Zentao 2.0'; +$lang->group->versions['1_5'] = 'Zentao 1.5'; +$lang->group->versions['1_4'] = 'Zentao 1.4'; +$lang->group->versions['1_3'] = 'Zentao 1.3'; +$lang->group->versions['1_2'] = 'Zentao 1.2'; +$lang->group->versions['1_1'] = 'Zentao 1.1'; +$lang->group->versions['1_0_1'] = 'Zentao 1.0.1'; include (dirname(__FILE__) . '/resource.php'); diff --git a/module/group/lang/zh-cn.php b/module/group/lang/zh-cn.php index 5b19c7628a..b06fcc77b1 100644 --- a/module/group/lang/zh-cn.php +++ b/module/group/lang/zh-cn.php @@ -41,23 +41,24 @@ $lang->group->all = '所有权限'; $lang->group->copyOptions['copyPriv'] = '复制权限'; $lang->group->copyOptions['copyUser'] = '复制用户'; -$lang->group->versions[''] = '显示各版本新增权限'; -$lang->group->versions['3.3'] = '禅道3.3'; -$lang->group->versions['3.2.1'] = '禅道3.2.1'; -$lang->group->versions['3.2'] = '禅道3.2'; -$lang->group->versions['3.1'] = '禅道3.1'; -$lang->group->versions['3.0.beta2'] = '禅道3.0.beta2'; -$lang->group->versions['3.0.beta1'] = '禅道3.0.beta1'; -$lang->group->versions['2.4'] = '禅道2.4'; -$lang->group->versions['2.3'] = '禅道2.3'; -$lang->group->versions['2.2'] = '禅道2.2'; -$lang->group->versions['2.1'] = '禅道2.1'; -$lang->group->versions['2.0'] = '禅道2.0'; -$lang->group->versions['1.5'] = '禅道1.5'; -$lang->group->versions['1.4'] = '禅道1.4'; -$lang->group->versions['1.3'] = '禅道1.3'; -$lang->group->versions['1.2'] = '禅道1.2'; -$lang->group->versions['1.1'] = '禅道1.1'; -$lang->group->versions['1.0.1'] = '禅道1.0.1'; +$lang->group->versions[''] = '版本至今的权限'; +$lang->group->versions['4_0_beta2'] = '禅道4.0.beta2'; +$lang->group->versions['3_3'] = '禅道3.3'; +$lang->group->versions['3_2_1'] = '禅道3.2.1'; +$lang->group->versions['3_2'] = '禅道3.2'; +$lang->group->versions['3_1'] = '禅道3.1'; +$lang->group->versions['3_0_beta2'] = '禅道3.0.beta2'; +$lang->group->versions['3_0_beta1'] = '禅道3.0.beta1'; +$lang->group->versions['2_4'] = '禅道2.4'; +$lang->group->versions['2_3'] = '禅道2.3'; +$lang->group->versions['2_2'] = '禅道2.2'; +$lang->group->versions['2_1'] = '禅道2.1'; +$lang->group->versions['2_0'] = '禅道2.0'; +$lang->group->versions['1_5'] = '禅道1.5'; +$lang->group->versions['1_4'] = '禅道1.4'; +$lang->group->versions['1_3'] = '禅道1.3'; +$lang->group->versions['1_2'] = '禅道1.2'; +$lang->group->versions['1_1'] = '禅道1.1'; +$lang->group->versions['1_0_1'] = '禅道1.0.1'; include (dirname(__FILE__) . '/resource.php'); diff --git a/module/group/model.php b/module/group/model.php index 281460f61c..de685746b5 100644 --- a/module/group/model.php +++ b/module/group/model.php @@ -185,20 +185,55 @@ class groupModel extends model * @access public * @return bool */ - public function updatePrivByGroup($groupID, $menu) + public function updatePrivByGroup($groupID, $menu, $version) { + /* Set priv when have version. */ + if($version) + { + $noCheckeds = trim($this->post->noChecked, ','); + if($noCheckeds) + { + $noCheckeds = explode(',', $noCheckeds); + foreach($noCheckeds as $noChecked) + { + /* Delete no checked priv*/ + list($module, $method) = explode('-', $noChecked); + $this->dao->delete()->from(TABLE_GROUPPRIV)->where('`group`')->eq($groupID)->andWhere('module')->eq($module)->andWhere('method')->eq($method)->exec(); + } + } + + /* Replace new. */ + if($this->post->actions) + { + foreach($this->post->actions as $moduleName => $moduleActions) + { + foreach($moduleActions as $actionName) + { + $data->group = $groupID; + $data->module = $moduleName; + $data->method = $actionName; + $this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec(); + } + } + } + return true; + } + /* Delete old. */ $this->dao->delete()->from(TABLE_GROUPPRIV)->where('`group`')->eq($groupID)->andWhere('module')->in($this->getMenuModules($menu))->exec(); /* Insert new. */ - foreach($this->post->actions as $moduleName => $moduleActions) + if($this->post->actions) { - foreach($moduleActions as $actionName) + foreach($this->post->actions as $moduleName => $moduleActions) { - $data->group = $groupID; - $data->module = $moduleName; - $data->method = $actionName; - $this->dao->insert(TABLE_GROUPPRIV)->data($data)->exec(); + foreach($moduleActions as $actionName) + { + $data->group = $groupID; + $data->module = $moduleName; + $data->method = $actionName; + $this->dao->insert(TABLE_GROUPPRIV)->data($data)->exec(); + } } } return true; diff --git a/module/group/view/privbygroup.html.php b/module/group/view/privbygroup.html.php index 3d7a82b0ff..878f4a9e6d 100644 --- a/module/group/view/privbygroup.html.php +++ b/module/group/view/privbygroup.html.php @@ -14,33 +14,45 @@
menu as $module => $title):?> > - + - >group->other)?> - >group->all)?> + >group->other)?> + >group->all)?> + lang->group->versions, $version, "onchange=showPriv(this.value)");?>
- resource as $moduleName => $moduleActions):?> group->checkMenuModule($menu, $moduleName)) continue;?> + $actionLabel) + { + if(strpos($changelogs, ",$moduleName-$actionLabel,") !== false) + { + $hasMethod = true; + break; + } + } + if(!$hasMethod) continue; + } + ?> '>
- name . $lang->colon . $lang->group->managePriv; - echo html::select('version', $this->lang->group->versions, '', "onchange=showPriv(this.value)"); - ?> -
group->module;?> group->method;?>
lang->$moduleName->common;?> $actionLabel):?> +
/> - >$moduleName->$actionLabel;?> + $moduleName->$actionLabel;?>
"; $i ++;?> @@ -51,15 +63,16 @@
selectAll . html::selectAll('', 'checkbox')?> save); + echo html::submitButton($lang->save, "onclick='setNoChecked()'"); echo html::linkButton($lang->goback, $this->createLink('group', 'browse')); echo html::hidden('foo'); // Just a hidden var, to make sure $_POST is not empty. + echo html::hidden('noChecked'); // Save the value of no checked. ?>