From a9995c6fe018db8d190162bb13f9624f21a94107 Mon Sep 17 00:00:00 2001 From: zhouxin Date: Tue, 22 Feb 2022 09:00:47 +0000 Subject: [PATCH] Finish task #49692. --- module/kanban/control.php | 27 +++++++++++++++++++++++---- module/kanban/js/editspace.js | 11 +++++++++++ module/kanban/lang/en.php | 4 ++++ module/kanban/lang/zh-cn.php | 4 ++++ module/kanban/model.php | 19 ++++++++++++++++++- module/kanban/view/editspace.html.php | 11 ++++++++--- 6 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 module/kanban/js/editspace.js diff --git a/module/kanban/control.php b/module/kanban/control.php index 2d38f69ff4..b5d71d7d0c 100644 --- a/module/kanban/control.php +++ b/module/kanban/control.php @@ -74,12 +74,12 @@ class kanban extends control * @access public * @return void */ - public function editSpace($spaceID) + public function editSpace($spaceID, $type = '') { $this->loadModel('action'); if(!empty($_POST)) { - $changes = $this->kanban->updateSpace($spaceID); + $changes = $this->kanban->updateSpace($spaceID, $type); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); @@ -89,8 +89,27 @@ class kanban extends control return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent')); } - $this->view->space = $this->kanban->getSpaceById($spaceID); - $this->view->users = $this->loadModel('user')->getPairs('noclosed'); + $space = $this->kanban->getSpaceById($spaceID); + + $typeList = $this->lang->kanbanspace->typeList; + if($space->type == 'cooperation' or $space->type == 'public') unset($typeList['private']); + + if($space->type == 'private' and ($type == 'cooperation' or $type == 'public')) + { + $team = $space->whitelist; + } + else + { + $team = $space->team; + } + + $this->view->spaceID = $spaceID; + $this->view->space = $space; + $this->view->users = $this->loadModel('user')->getPairs('noclosed'); + $this->view->typeList = $typeList; + $this->view->type = $type; + $this->view->team = $team; + $this->view->defaultType = $type == '' ? $space->type : $type; $this->display(); } diff --git a/module/kanban/js/editspace.js b/module/kanban/js/editspace.js new file mode 100644 index 0000000000..f6b1c9bbda --- /dev/null +++ b/module/kanban/js/editspace.js @@ -0,0 +1,11 @@ +/** + * When type change. + * + * @param string type + * @access public + * @return void + */ +function changeType(spaceID, type) +{ + location.href = createLink('kanban', 'editSpace', 'spaceID=' + spaceID + '&type=' + type); +} diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php index 3a82c67fe1..3f78e41151 100644 --- a/module/kanban/lang/en.php +++ b/module/kanban/lang/en.php @@ -271,6 +271,10 @@ $lang->kanbanspace->featureBar['cooperation'] = 'Cooperation Space'; $lang->kanbanspace->featureBar['public'] = 'Public Space'; $lang->kanbanspace->featureBar['involved'] = 'Involved'; +$lang->kanbanspace->typeList['private'] = 'Private Space'; +$lang->kanbanspace->typeList['cooperation'] = 'Cooperation Space'; +$lang->kanbanspace->typeList['public'] = 'Public Space'; + $lang->kanbancolumn = new stdclass(); $lang->kanbancolumn->name = $lang->kanban->columnName; $lang->kanbancolumn->limit = $lang->kanban->WIPCount; diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php index ca8580188c..7ce89896c9 100644 --- a/module/kanban/lang/zh-cn.php +++ b/module/kanban/lang/zh-cn.php @@ -271,6 +271,10 @@ $lang->kanbanspace->featureBar['cooperation'] = '协作空间'; $lang->kanbanspace->featureBar['public'] = '公共空间'; $lang->kanbanspace->featureBar['involved'] = '我参与的'; +$lang->kanbanspace->typeList['private'] = '私人空间'; +$lang->kanbanspace->typeList['cooperation'] = '协作空间'; +$lang->kanbanspace->typeList['public'] = '公共空间'; + $lang->kanbancolumn = new stdclass(); $lang->kanbancolumn->name = $lang->kanban->columnName; $lang->kanbancolumn->limit = $lang->kanban->WIPCount; diff --git a/module/kanban/model.php b/module/kanban/model.php index 32c0db56eb..6c275a7a15 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -1754,7 +1754,7 @@ class kanbanModel extends model * @access public * @return array */ - public function updateSpace($spaceID) + public function updateSpace($spaceID, $type = '') { $spaceID = (int)$spaceID; $oldSpace = $this->getSpaceById($spaceID); @@ -1767,6 +1767,8 @@ class kanbanModel extends model ->remove('uid,contactListMenu') ->get(); + if($type == 'cooperation' or $type == 'public') $space->whitelist = ''; + $space = $this->loadModel('file')->processImgURL($space, $this->config->kanban->editor->editspace['id'], $this->post->uid); $this->dao->update(TABLE_KANBANSPACE)->data($space) @@ -1775,6 +1777,15 @@ class kanbanModel extends model ->where('id')->eq($spaceID) ->exec(); + if($oldSpace->type == 'private' and ($type == 'cooperation' or $type == 'public')) + { + $kanbanList = $this->dao->select('id,team,whitelist')->from(TABLE_KANBAN)->where('space')->eq($spaceID)->andWhere('deleted')->eq('0')->fetchAll('id'); + foreach($kanbanList as $id => $kanbanData) + { + $this->dao->update(TABLE_KANBAN)->set('team')->eq($kanbanData->whitelist)->set('whitelist')->eq('')->where('id')->eq($id)->andWhere('deleted')->eq('0')->exec(); + } + } + if(!dao::isError()) { $this->file->saveUpload('kanbanspace', $spaceID); @@ -1783,6 +1794,12 @@ class kanbanModel extends model } } + public function updateKanbanBySpace($spaceID, $type) + { + $spaceType = $this->dao->select('type')->from(TABLE_KANBANSPACE)->where('id')->eq($spaceID)->fetch(); + + } + /** * Close a space. * diff --git a/module/kanban/view/editspace.html.php b/module/kanban/view/editspace.html.php index a354ae3447..59d7f58eec 100644 --- a/module/kanban/view/editspace.html.php +++ b/module/kanban/view/editspace.html.php @@ -18,12 +18,17 @@
+ + + + + - type != 'private'):?> + type != 'private' or $type == 'cooperation' or $type == 'public'):?> @@ -32,7 +37,7 @@ @@ -45,7 +50,7 @@ desc, "rows='10' class='form-control'");?> - type == 'private'):?> + type == 'private' and $type != 'cooperation' and $type != 'public'):?>
kanbanspace->type;?>
kanbanspace->name;?> name, "class='form-control'");?>
kanbanspace->owner;?> owner, "class='form-control chosen'");?>kanbanspace->team;?>
- team, "class='form-control chosen' multiple data-drop_direction='down'");?> + fetch('my', 'buildContactLists');?>
whitelist;?> whitelist, 'class="form-control chosen" multiple');?>