diff --git a/config/zentaopms.php b/config/zentaopms.php index 654b2ba32c..1a77b84d0f 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -237,6 +237,7 @@ define('TABLE_RELATION', '`' . $config->db->prefix . 'relation`'); define('TABLE_REPOHISTORY', '`' . $config->db->prefix . 'repohistory`'); define('TABLE_REPOFILES', '`' . $config->db->prefix . 'repofiles`'); define('TABLE_REPOBRANCH', '`' . $config->db->prefix . 'repobranch`'); +define('TABLE_KANBANSPACE', '`' . $config->db->prefix . 'kanbanspace`'); define('TABLE_KANBANLANE', '`' . $config->db->prefix . 'kanbanlane`'); define('TABLE_KANBANCOLUMN', '`' . $config->db->prefix . 'kanbancolumn`'); if(!defined('TABLE_LANG')) define('TABLE_LANG', '`' . $config->db->prefix . 'lang`'); @@ -277,6 +278,7 @@ $config->objectTables['job'] = TABLE_JOB; $config->objectTables['team'] = TABLE_TEAM; $config->objectTables['pipeline'] = TABLE_PIPELINE; $config->objectTables['mr'] = TABLE_MR; +$config->objectTables['kanbanspace'] = TABLE_KANBANSPACE; $config->objectTables['kanbancolumn'] = TABLE_KANBANCOLUMN; $config->objectTables['kanbanlane'] = TABLE_KANBANLANE; diff --git a/module/action/config.php b/module/action/config.php index 81c7f5e250..69fa5a1e9a 100755 --- a/module/action/config.php +++ b/module/action/config.php @@ -35,6 +35,7 @@ $config->action->objectNameFields['pipeline'] = 'name'; $config->action->objectNameFields['mr'] = 'title'; $config->action->objectNameFields['kanbancolumn'] = 'name'; $config->action->objectNameFields['kanbanlane'] = 'name'; +$config->action->objectNameFields['kanbanspace'] = 'name'; $config->action->commonImgSize = 870; diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index c43e723f00..2b7b8023bf 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -541,6 +541,7 @@ $lang->action->label->issue = '问题|issue|view|issueID=%s'; $lang->action->label->design = '设计|design|view|designID=%s'; $lang->action->label->stakeholder = '干系人|stakeholder|view|userID=%s'; $lang->action->label->api = '接口|api|index|libID=%s&moduleID=%s&apiID=%s'; +$lang->action->label->kanbanspace = '看板空间|kanban|space|browseType=all'; $lang->action->label->kanbancolumn = '看板列|execution|kanban|execution=%s'; $lang->action->label->kanbanlane = '看板泳道|execution|kanban|execution=%s&type=all'; $lang->action->label->mr = '合并请求|mr|view|id=%s'; diff --git a/module/kanban/config.php b/module/kanban/config.php index f077fab4ef..b451283183 100644 --- a/module/kanban/config.php +++ b/module/kanban/config.php @@ -5,9 +5,15 @@ $config->kanban = new stdclass(); $config->kanban->setwip = new stdclass(); $config->kanban->setlane = new stdclass(); $config->kanban->setlaneColumn = new stdclass(); +$config->kanban->createspace = new stdclass(); + $config->kanban->setwip->requiredFields = 'limit'; $config->kanban->setlane->requiredFields = 'name,type'; $config->kanban->setlaneColumn->requiredFields = 'name'; +$config->kanban->createspace->requiredFields = 'name,owner'; + +$config->kanban->editor = new stdclass(); +$config->kanban->editor->createspace = array('id' => 'desc', 'tools' => 'simpleTools'); $config->kanban->default = new stdclass(); $config->kanban->default->story = new stdclass(); diff --git a/module/kanban/control.php b/module/kanban/control.php index efff29b102..b802806f32 100644 --- a/module/kanban/control.php +++ b/module/kanban/control.php @@ -34,6 +34,29 @@ class kanban extends control $this->display(); } + /** + * Create a space. + * + * @access public + * @return void + */ + public function createSpace() + { + if(!empty($_POST)) + { + $spaceID = $this->kanban->createSpace(); + + if(dao::isError()) die(js::error(dao::getError())); + + $this->loadModel('action')->create('kanbanSpace', $spaceID, 'created'); + die(js::closeModal('parent.parent', 'this', "function(){parent.parent.location.reload();}")); + } + + $this->view->users = $this->loadModel('user')->getPairs('noletter|noclosed'); + + $this->display(); + } + /** * Set WIP. * diff --git a/module/kanban/js/common.js b/module/kanban/js/common.js new file mode 100644 index 0000000000..6af7a5e8ea --- /dev/null +++ b/module/kanban/js/common.js @@ -0,0 +1,4 @@ +function setWhite(acl) +{ + acl != 'open' ? $('#whitelistBox').removeClass('hidden') : $('#whitelistBox').addClass('hidden'); +} diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php index f2251352ce..c23a130c0f 100644 --- a/module/kanban/lang/en.php +++ b/module/kanban/lang/en.php @@ -3,6 +3,21 @@ $lang->kanban->space = 'Kanban Space'; $lang->kanban->create = 'Create Kanban'; $lang->kanban->createSpace = 'Create Space'; +/* Field. */ +$lang->kanban->spaceName = 'Space Name'; +$lang->kanban->spaceDesc = 'Space Description'; +$lang->kanban->owner = 'Owner'; +$lang->kanban->team = 'Team'; +$lang->kanban->acl = 'ACL'; + +$lang->kanbanspace = new stdclass(); +$lang->kanbanspace->name = 'Name'; +$lang->kanbanspace->owner = 'Owner'; + +$lang->kanban->spaceAclList[] = array(); +$lang->kanban->spaceAclList['open'] = 'Open (Accessible with kanban view permissions)'; +$lang->kanban->spaceAclList['private'] = 'Private (For the kanban owner and team members only)'; + $lang->kanban->featureBar['all'] = 'All'; $lang->kanban->featureBar['my'] = 'My'; $lang->kanban->featureBar['other'] = 'Other'; diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php index b139b210df..cd61f277f7 100644 --- a/module/kanban/lang/zh-cn.php +++ b/module/kanban/lang/zh-cn.php @@ -1,7 +1,21 @@ kanban->space = '看板空间'; -$lang->kanban->create = '添加看板'; -$lang->kanban->createSpace = '添加空间'; +$lang->kanban->create = '创建看板'; +$lang->kanban->createSpace = '创建空间'; + +/* Field. */ +$lang->kanban->spaceName = '空间名称'; +$lang->kanban->spaceDesc = '空间描述'; +$lang->kanban->owner = '负责人'; +$lang->kanban->team = '团队'; +$lang->kanban->acl = '访问控制'; + +$lang->kanbanspace = new stdclass(); +$lang->kanbanspace->name = '空间名称'; +$lang->kanbanspace->owner = '负责人'; + +$lang->kanban->spaceAclList['open'] = '公开(有看板空间视图权限即可访问)'; +$lang->kanban->spaceAclList['private'] = '私有(只有看板空间负责人、团队成员可访问)'; $lang->kanban->featureBar['all'] = '所有'; $lang->kanban->featureBar['my'] = '我的空间'; diff --git a/module/kanban/model.php b/module/kanban/model.php index b9df8bd351..f7a62050e3 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -139,6 +139,37 @@ class kanbanModel extends model return $kanbanGroup; } + /** + * Create a space. + * + * @access public + * @return int + */ + public function createSpace() + { + $space = fixer::input('post') + ->setDefault('createdBy', $this->app->user->account) + ->setDefault('createdDate', helper::now()) + ->add('team', $this->post->mailto) + ->join('whitelist', ',') + ->join('team', ',') + ->remove('uid,mailto,contactListMenu') + ->get(); + + $this->dao->insert(TABLE_KANBANSPACE)->data($space) + ->autoCheck() + ->batchCheck($this->config->kanban->createspace->requiredFields, 'notempty') + ->exec(); + + if(!dao::isError()) + { + $spaceID = $this->dao->lastInsertID(); + $spaceFiles = array(); + + return $spaceID; + } + } + /** * Add execution Kanban lanes and columns. * diff --git a/module/kanban/view/createspace.html.php b/module/kanban/view/createspace.html.php new file mode 100644 index 0000000000..9034572aef --- /dev/null +++ b/module/kanban/view/createspace.html.php @@ -0,0 +1,60 @@ + + * @package kanban + * @version $Id: createspace.html.php 935 2021-12-08 14:04:24Z $ + * @link https://www.zentao.net + */ +?> + + +