diff --git a/module/program/config/form.php b/module/program/config/form.php index 6047d6894c..22a71b77f5 100644 --- a/module/program/config/form.php +++ b/module/program/config/form.php @@ -15,6 +15,7 @@ $config->program->form->create['end'] = array('type' => 'date', 'cont $config->program->form->create['desc'] = array('type' => 'string', 'control' => 'editor', 'required' => false, 'default' => ''); $config->program->form->create['status'] = array('type' => 'string', 'control' => 'text', 'required' => false, 'default' => 'wait'); $config->program->form->create['acl'] = array('type' => 'string', 'control' => 'radio', 'required' => false, 'default' => ''); +$config->program->form->create['groups'] = array('type' => 'array', 'control' => 'picker', 'required' => false, 'default' => '', 'filter' => 'join'); $config->program->form->create['whitelist'] = array('type' => 'array', 'control' => 'picker', 'required' => false, 'default' => '', 'filter' => 'join'); $config->program->form->edit['parent'] = array('type' => 'int', 'control' => 'picker', 'required' => false, 'default' => 0); @@ -25,6 +26,7 @@ $config->program->form->edit['begin'] = array('type' => 'date', 'control $config->program->form->edit['end'] = array('type' => 'date', 'control' => 'datepicker', 'required' => false, 'default' => ''); $config->program->form->edit['desc'] = array('type' => 'string', 'control' => 'editor', 'required' => false, 'default' => ''); $config->program->form->edit['acl'] = array('type' => 'string', 'control' => 'radio', 'required' => false, 'default' => ''); +$config->program->form->edit['groups'] = array('type' => 'array', 'control' => 'picker', 'required' => false, 'default' => '', 'filter' => 'join'); $config->program->form->edit['whitelist'] = array('type' => 'array', 'control' => 'picker', 'required' => false, 'default' => '', 'filter' => 'join'); $config->program->form->close['realEnd'] = array('type' => 'date', 'required' => true, 'default' => $now, 'filter' => 'trim'); diff --git a/module/program/control.php b/module/program/control.php index 4a78136035..7a8f1a7a14 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -176,6 +176,7 @@ class program extends control $this->view->programList = $this->program->getList(); $this->view->budgetUnitList = $this->project->getBudgetUnitList(); $this->view->budgetLeft = empty($parentProgram) ? 0 : $this->program->getBudgetLeft($parentProgram); + $this->view->groups = $this->loadModel('group')->getPairs(); $this->view->loadUrl = $this->createLink('program', 'create', "parentProgramID={parent}" . (empty($originExtra) ? '' : "&extra=$originExtra")); $this->display(); @@ -220,6 +221,7 @@ class program extends control $this->view->parents = $parents; $this->view->budgetUnitList = $this->loadModel('project')->getBudgetUnitList(); $this->view->parentProgram = $parentProgram; + $this->view->groups = $this->loadModel('group')->getPairs(); $this->view->loadUrl = $this->createLink('program', 'edit', "programID=$programID&parentProgramID={parent}"); $this->display(); diff --git a/module/program/js/create.ui.js b/module/program/js/create.ui.js index 5e6635e609..3c8fcd52c8 100644 --- a/module/program/js/create.ui.js +++ b/module/program/js/create.ui.js @@ -14,5 +14,5 @@ window.outOfDateTip = function() window.onAclChange = () => { - $('[data-name=whitelist]').toggleClass('hidden', $('#aclopen').prop('checked')); + $('.whitelistBox').toggleClass('hidden', $('#aclopen').prop('checked')); }; diff --git a/module/program/js/edit.ui.js b/module/program/js/edit.ui.js index 5e6635e609..3c8fcd52c8 100644 --- a/module/program/js/edit.ui.js +++ b/module/program/js/edit.ui.js @@ -14,5 +14,5 @@ window.outOfDateTip = function() window.onAclChange = () => { - $('[data-name=whitelist]').toggleClass('hidden', $('#aclopen').prop('checked')); + $('.whitelistBox').toggleClass('hidden', $('#aclopen').prop('checked')); }; diff --git a/module/program/lang/de.php b/module/program/lang/de.php index 129ee2b22b..56feb8be94 100644 --- a/module/program/lang/de.php +++ b/module/program/lang/de.php @@ -32,6 +32,8 @@ $lang->program->team = 'Team'; $lang->program->order = 'Rank'; $lang->program->days = 'Days'; $lang->program->acl = 'Access Control'; +$lang->program->groups = 'Groups'; +$lang->program->users = 'Users'; $lang->program->whitelist = 'WhiteList'; $lang->program->deleted = 'Deleted'; $lang->program->lifetime = 'Lifetime'; diff --git a/module/program/lang/en.php b/module/program/lang/en.php index a27175a786..9dbbb7d6d5 100644 --- a/module/program/lang/en.php +++ b/module/program/lang/en.php @@ -32,6 +32,8 @@ $lang->program->team = 'Team'; $lang->program->order = 'Rank'; $lang->program->days = 'Days'; $lang->program->acl = 'Access Control'; +$lang->program->groups = 'Groups'; +$lang->program->users = 'Users'; $lang->program->whitelist = 'WhiteList'; $lang->program->deleted = 'Deleted'; $lang->program->lifetime = 'Lifetime'; diff --git a/module/program/lang/fr.php b/module/program/lang/fr.php index 1c7010e8de..ea60d201d7 100644 --- a/module/program/lang/fr.php +++ b/module/program/lang/fr.php @@ -32,6 +32,8 @@ $lang->program->team = 'Team'; $lang->program->order = 'Rank'; $lang->program->days = 'Days'; $lang->program->acl = 'Access Control'; +$lang->program->groups = 'Groups'; +$lang->program->users = 'Users'; $lang->program->whitelist = 'WhiteList'; $lang->program->deleted = 'Deleted'; $lang->program->lifetime = 'Lifetime'; diff --git a/module/program/lang/zh-cn.php b/module/program/lang/zh-cn.php index 1ecf2846d1..a6f842e769 100644 --- a/module/program/lang/zh-cn.php +++ b/module/program/lang/zh-cn.php @@ -32,6 +32,8 @@ $lang->program->team = '团队'; $lang->program->order = '排序'; $lang->program->days = '可用工作日'; $lang->program->acl = '访问控制'; +$lang->program->groups = '权限组'; +$lang->program->users = '用户'; $lang->program->whitelist = '白名单'; $lang->program->deleted = '已删除'; $lang->program->lifetime = $lang->projectCommon . '周期'; diff --git a/module/program/ui/common.field.php b/module/program/ui/common.field.php index f54f6eb6fc..670cb4be30 100644 --- a/module/program/ui/common.field.php +++ b/module/program/ui/common.field.php @@ -53,10 +53,4 @@ $fields->field('desc') ->control('editor'); $fields->field('acl') - ->width('full') - ->control('radioList'); - -$fields->field('whitelist') - ->width('full') - ->control('whitelist') - ->items(data('users')); + ->width('full'); diff --git a/module/program/ui/create.field.php b/module/program/ui/create.field.php index 918ea12b15..2b5bd8e199 100644 --- a/module/program/ui/create.field.php +++ b/module/program/ui/create.field.php @@ -13,8 +13,4 @@ $fields->field('begin') ->itemBegin('end')->require()->type('datePicker')->placeholder($lang->project->end)->itemEnd(); $fields->field('acl') - ->items(data('parentProgram') ? $lang->program->subAclList : $lang->program->aclList) - ->value('open'); - -$fields->field('whitelist') - ->hidden(true); + ->control(array('control' => 'aclBox', 'aclItems' => data('parentProgram') ? $lang->program->subAclList : $lang->program->aclList, 'aclValue' => 'open', 'whitelistLabel' => $lang->program->whitelist, 'groupLabel' => $lang->program->groups, 'groupItems' => data('groups'), 'userLabel' => $lang->program->users)); diff --git a/module/program/ui/edit.field.php b/module/program/ui/edit.field.php index efa4fb5e03..0a2c1118f5 100644 --- a/module/program/ui/edit.field.php +++ b/module/program/ui/edit.field.php @@ -13,7 +13,4 @@ $fields->field('begin') ->itemBegin('end')->require()->type('datePicker')->value(data('program.end'))->placeholder($lang->project->end)->itemEnd(); $fields->field('acl') - ->items(data('program.parent') ? $lang->program->subAclList : $lang->program->aclList); - -$fields->field('whitelist') - ->hidden(data('program.acl') == 'open'); + ->control(array('control' => 'aclBox', 'aclItems' => data('program.parent') ? $lang->program->subAclList : $lang->program->aclList, 'aclValue' => data('program.acl'), 'whitelistLabel' => $lang->program->whitelist, 'groupLabel' => $lang->program->groups, 'groupItems' => data('groups'), 'groupValue' => data('program.groups'), 'userLabel' => $lang->program->users, 'userValue' => data('program.whitelist'))); diff --git a/module/program/zen.php b/module/program/zen.php index ca703f7ada..8e1c91b4ef 100644 --- a/module/program/zen.php +++ b/module/program/zen.php @@ -50,8 +50,9 @@ class programZen extends program ->setDefault('openedBy', $this->app->user->account) ->setDefault('openedDate', helper::now()) ->setDefault('code', '') - ->setIF($this->post->acl == 'open', 'whitelist', '') + ->setIF($this->post->acl == 'open', 'whitelist,groups', '') ->add('type', 'program') + ->join('whitelist,groups', ',') ->get(); return $this->loadModel('file')->processImgURL($program, $editorFields, $this->post->uid); @@ -87,7 +88,8 @@ class programZen extends program ->setIF($this->post->future, 'budget', 0) ->setIF(!isset($_POST['budgetUnit']), 'budgetUnit', $oldProgram->budgetUnit) ->setIF(!isset($_POST['whitelist']), 'whitelist', '') - ->join('whitelist', ',') + ->setIF(!isset($_POST['groups']), 'groups', '') + ->join('whitelist,groups', ',') ->get(); return $this->loadModel('file')->processImgURL($program, $editorFields, $this->post->uid);