From f8447c98250eaa64071e6f88427b32bf625737bc Mon Sep 17 00:00:00 2001 From: tianshujie Date: Tue, 26 Oct 2021 11:46:33 +0800 Subject: [PATCH 1/3] * Correct Kanban data. --- module/common/lang/common.php | 1 - module/kanban/config.php | 31 ++++++++++++++++++++++ module/kanban/model.php | 48 +++++++++++++++++++---------------- 3 files changed, 57 insertions(+), 23 deletions(-) diff --git a/module/common/lang/common.php b/module/common/lang/common.php index 137b14fb8e..57a3c16b1c 100644 --- a/module/common/lang/common.php +++ b/module/common/lang/common.php @@ -75,7 +75,6 @@ $lang->file = new stdclass(); $lang->misc = new stdclass(); $lang->acl = new stdclass(); $lang->curd = new stdclass(); -$lang->kanban = new stdclass(); $lang->projectbuild = new stdclass(); $lang->projectrelease = new stdclass(); diff --git a/module/kanban/config.php b/module/kanban/config.php index 7928dd1b39..e5b8241338 100644 --- a/module/kanban/config.php +++ b/module/kanban/config.php @@ -17,3 +17,34 @@ $config->kanban->default->task = new stdclass(); $config->kanban->default->task->name = $lang->task->common; $config->kanban->default->task->color = '#4169e1'; $config->kanban->default->task->order = '15'; + +$config->kanban->column = new stdclass(); +$config->kanban->column->status['story']['backlog'] = 'active'; +$config->kanban->column->status['story']['developing'] = 'active'; +$config->kanban->column->status['story']['developed'] = 'active'; +$config->kanban->column->status['story']['testing'] = 'active'; +$config->kanban->column->status['story']['tested'] = 'active'; +$config->kanban->column->status['story']['verified'] = 'active'; +$config->kanban->column->status['story']['released'] = 'active'; +$config->kanban->column->status['story']['closed'] = 'closed'; + +$config->kanban->column->status['bug']['unconfirmed'] = 'active'; +$config->kanban->column->status['bug']['confirmed'] = 'active'; +$config->kanban->column->status['bug']['fixed'] = 'resolved'; +$config->kanban->column->status['bug']['closed'] = 'closed'; + +$config->kanban->column->status['task']['developing'] = 'doing'; +$config->kanban->column->status['task']['developed'] = 'done'; +$config->kanban->column->status['task']['wait'] = 'wait'; +$config->kanban->column->status['task']['pause'] = 'pause'; +$config->kanban->column->status['task']['canceled'] = 'canceled'; +$config->kanban->column->status['task']['closed'] = 'closed'; + +$config->kanban->column->stage['story']['backlog'] = 'active'; +$config->kanban->column->stage['story']['developing'] = 'developing'; +$config->kanban->column->stage['story']['developed'] = 'developed'; +$config->kanban->column->stage['story']['testing'] = 'testing'; +$config->kanban->column->stage['story']['tested'] = 'tested'; +$config->kanban->column->stage['story']['verified'] = 'verified'; +$config->kanban->column->stage['story']['released'] = 'released'; +$config->kanban->column->stage['story']['closed'] = 'closed'; diff --git a/module/kanban/model.php b/module/kanban/model.php index 5b021797fa..0d5907c673 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -97,17 +97,16 @@ class kanbanModel extends model $data->name = $name; $data->type = $colType; $data->cards = ''; + if(strpos(',developing,developed,', $colType) !== false) $data->parent = $devColumnID; if(strpos(',testing,tested,', $colType) !== false) $data->parent = $testColumnID; if(strpos(',ready,develop,test,', $colType) === false) { + $storyStatus = $this->config->kanban->column->status['story'][$colType]; + $storyStage = $this->config->kanban->column->stage['story'][$colType]; foreach($objects as $storyID => $story) { - if($colType == 'backlog' and $story->status == 'active' and $story->stage == 'projected') $data->cards .= $storyID . ','; - - if($colType == 'closed' and $story->status == 'closed' and $story->stage == 'closed') $data->cards .= $storyID . ','; - - if($story->stage == $colType and strpos(',backlog,closed,', $colType) === false and $story->status == 'active') $data->cards .= $storyID . ','; + if($story->status == $storyStatus and $story->stage == $storyStage) $data->cards .= $storyID . ','; } if(!empty($data->cards)) $data->cards = ',' . $data->cards; } @@ -130,20 +129,27 @@ class kanbanModel extends model if(strpos(',testing,tested,', $colType) !== false) $data->parent = $testColumnID; if(strpos(',resolving,fixing,test,testing,tested,', $colType) === false) { + $bugStatus = $this->config->kanban->column->status['bug'][$colType]; foreach($objects as $bugID => $bug) { - if($colType == 'unconfirmed' and $bug->status == 'active' and $bug->confirmed == 0) $data->cards .= $bugID . ','; - - if($colType == 'confirmed' and $bug->status == 'active' and $bug->confirmed == 1) $data->cards .= $bugID . ','; - - if($colType == 'fixed' and $bug->status == 'resolved') $data->cards .= $bugID . ','; - - if($colType == 'closed' and $bug->status == 'closed') $data->cards .= $bugID . ','; + if($colType == 'unconfirmed' and $bug->status == $bugStatus and $bug->confirmed == 0) + { + $data->cards .= $bugID . ','; + } + elseif($colType == 'confirmed' and $bug->status == $bugStatus and $bug->confirmed == 1) + { + $data->cards .= $bugID . ','; + } + elseif($bug->status == $bugStatus) + { + $data->cards .= $bugID . ','; + } } - $this->dao->insert(TABLE_KANBANCOLUMN)->data($data)->exec(); - if($colType == 'resolving') $resolvingColumnID = $this->dao->lastInsertId(); - if($colType == 'test') $testColumnID = $this->dao->lastInsertId(); + if(!empty($data->cards)) $data->cards = ',' . $data->cards; } + $this->dao->insert(TABLE_KANBANCOLUMN)->data($data)->exec(); + if($colType == 'resolving') $resolvingColumnID = $this->dao->lastInsertId(); + if($colType == 'test') $testColumnID = $this->dao->lastInsertId(); } } elseif($type == 'task') @@ -158,18 +164,16 @@ class kanbanModel extends model if(strpos(',developing,developed,', $colType) !== false) $data->parent = $devColumnID; if(strpos(',develop,', $colType) === false) { + $taskStatus = $this->config->kanban->column->status['task'][$colType]; foreach($objects as $taskID => $task) { - if($colType == 'developing' and $task->status == 'doing') $data->cards .= $taskID . ','; + if($task->status == $taskStatus) $data->cards .= $taskID . ','; - if($colType == 'developed' and $task->status == 'done') $data->cards .= $taskID . ','; - - if(strpos(',wait,pause,canceled,closed,', $colType) !== false and $task->status == $colType) $data->cards .= $taskID . ','; } - - $this->dao->insert(TABLE_KANBANCOLUMN)->data($data)->exec(); - if($colType == 'develop') $devColumnID = $this->dao->lastInsertId(); + if(!empty($data->cards)) $data->cards = ',' . $data->cards; } + $this->dao->insert(TABLE_KANBANCOLUMN)->data($data)->exec(); + if($colType == 'develop') $devColumnID = $this->dao->lastInsertId(); } } } From 83a1e66eabe6422933a2f2e3a2eec2bc377a39aa Mon Sep 17 00:00:00 2001 From: tianshujie Date: Tue, 26 Oct 2021 13:35:02 +0800 Subject: [PATCH 2/3] * Adjust code. --- module/kanban/config.php | 31 ------------------------------- module/kanban/model.php | 8 ++++---- 2 files changed, 4 insertions(+), 35 deletions(-) diff --git a/module/kanban/config.php b/module/kanban/config.php index e5b8241338..7928dd1b39 100644 --- a/module/kanban/config.php +++ b/module/kanban/config.php @@ -17,34 +17,3 @@ $config->kanban->default->task = new stdclass(); $config->kanban->default->task->name = $lang->task->common; $config->kanban->default->task->color = '#4169e1'; $config->kanban->default->task->order = '15'; - -$config->kanban->column = new stdclass(); -$config->kanban->column->status['story']['backlog'] = 'active'; -$config->kanban->column->status['story']['developing'] = 'active'; -$config->kanban->column->status['story']['developed'] = 'active'; -$config->kanban->column->status['story']['testing'] = 'active'; -$config->kanban->column->status['story']['tested'] = 'active'; -$config->kanban->column->status['story']['verified'] = 'active'; -$config->kanban->column->status['story']['released'] = 'active'; -$config->kanban->column->status['story']['closed'] = 'closed'; - -$config->kanban->column->status['bug']['unconfirmed'] = 'active'; -$config->kanban->column->status['bug']['confirmed'] = 'active'; -$config->kanban->column->status['bug']['fixed'] = 'resolved'; -$config->kanban->column->status['bug']['closed'] = 'closed'; - -$config->kanban->column->status['task']['developing'] = 'doing'; -$config->kanban->column->status['task']['developed'] = 'done'; -$config->kanban->column->status['task']['wait'] = 'wait'; -$config->kanban->column->status['task']['pause'] = 'pause'; -$config->kanban->column->status['task']['canceled'] = 'canceled'; -$config->kanban->column->status['task']['closed'] = 'closed'; - -$config->kanban->column->stage['story']['backlog'] = 'active'; -$config->kanban->column->stage['story']['developing'] = 'developing'; -$config->kanban->column->stage['story']['developed'] = 'developed'; -$config->kanban->column->stage['story']['testing'] = 'testing'; -$config->kanban->column->stage['story']['tested'] = 'tested'; -$config->kanban->column->stage['story']['verified'] = 'verified'; -$config->kanban->column->stage['story']['released'] = 'released'; -$config->kanban->column->stage['story']['closed'] = 'closed'; diff --git a/module/kanban/model.php b/module/kanban/model.php index 0d5907c673..b6955b7b68 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -102,8 +102,8 @@ class kanbanModel extends model if(strpos(',testing,tested,', $colType) !== false) $data->parent = $testColumnID; if(strpos(',ready,develop,test,', $colType) === false) { - $storyStatus = $this->config->kanban->column->status['story'][$colType]; - $storyStage = $this->config->kanban->column->stage['story'][$colType]; + $storyStatus = $this->config->kanban->storyColumnStatusList[$colType]; + $storyStage = $this->config->kanban->storyColumnStageList[$colType]; foreach($objects as $storyID => $story) { if($story->status == $storyStatus and $story->stage == $storyStage) $data->cards .= $storyID . ','; @@ -129,7 +129,7 @@ class kanbanModel extends model if(strpos(',testing,tested,', $colType) !== false) $data->parent = $testColumnID; if(strpos(',resolving,fixing,test,testing,tested,', $colType) === false) { - $bugStatus = $this->config->kanban->column->status['bug'][$colType]; + $bugStatus = $this->config->kanban->bugColumnStatusList[$colType]; foreach($objects as $bugID => $bug) { if($colType == 'unconfirmed' and $bug->status == $bugStatus and $bug->confirmed == 0) @@ -164,7 +164,7 @@ class kanbanModel extends model if(strpos(',developing,developed,', $colType) !== false) $data->parent = $devColumnID; if(strpos(',develop,', $colType) === false) { - $taskStatus = $this->config->kanban->column->status['task'][$colType]; + $taskStatus = $this->config->kanban->taskColumnStatusList[$colType]; foreach($objects as $taskID => $task) { if($task->status == $taskStatus) $data->cards .= $taskID . ','; From 4d09ade9cb0fe6b9a99c47dd9013b6a60d66283f Mon Sep 17 00:00:00 2001 From: tianshujie Date: Tue, 26 Oct 2021 14:37:39 +0800 Subject: [PATCH 3/3] * Get card data of kanban column. --- module/execution/control.php | 6 +++++- module/kanban/lang/en.php | 35 +++++++++++++++++++++++++++++++++++ module/kanban/model.php | 12 ++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 module/kanban/lang/en.php diff --git a/module/execution/control.php b/module/execution/control.php index 11c7079776..1d33689ac7 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -1841,7 +1841,11 @@ class execution extends control if(strpos($this->server->http_user_agent, 'MSIE 8.0') !== false) header("X-UA-Compatible: IE=EmulateIE7"); $kanban = $this->loadModel('kanban')->getExecutionKanban($executionID); - if(empty($kanban)) $this->kanban->createLanes($executionID); + if(empty($kanban)) + { + $this->kanban->createLanes($executionID); + $kanban = $this->kanban->getExecutionKanban($executionID); + } $this->execution->setMenu($executionID); $execution = $this->loadModel('execution')->getById($executionID); diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php new file mode 100644 index 0000000000..091db93088 --- /dev/null +++ b/module/kanban/lang/en.php @@ -0,0 +1,35 @@ +kanban = new stdClass(); + +$lang->kanban->storyColumn = array(); +$lang->kanban->storyColumn['backlog'] = 'Backlog'; +$lang->kanban->storyColumn['ready'] = 'Ready'; +$lang->kanban->storyColumn['develop'] = 'Development'; +$lang->kanban->storyColumn['developing'] = 'Doing'; +$lang->kanban->storyColumn['developed'] = 'Done'; +$lang->kanban->storyColumn['test'] = 'Testing'; +$lang->kanban->storyColumn['testing'] = 'Doing'; +$lang->kanban->storyColumn['tested'] = 'Done'; +$lang->kanban->storyColumn['verified'] = 'Verified'; +$lang->kanban->storyColumn['released'] = 'Released'; +$lang->kanban->storyColumn['closed'] = 'Closed'; + +$lang->kanban->bugColumn = array(); +$lang->kanban->bugColumn['unconfirmed'] = 'Unconfirmed'; +$lang->kanban->bugColumn['confirmed'] = 'Confirmed'; +$lang->kanban->bugColumn['resolving'] = 'Resolving'; +$lang->kanban->bugColumn['fixing'] = 'Doing'; +$lang->kanban->bugColumn['fixed'] = 'Done'; +$lang->kanban->bugColumn['test'] = 'Test'; +$lang->kanban->bugColumn['testing'] = 'Doing'; +$lang->kanban->bugColumn['tested'] = 'Done'; +$lang->kanban->bugColumn['closed'] = 'Closed'; + +$lang->kanban->taskColumn = array(); +$lang->kanban->taskColumn['wait'] = 'Wait'; +$lang->kanban->taskColumn['develop'] = 'Develop'; +$lang->kanban->taskColumn['developing'] = 'Developing'; +$lang->kanban->taskColumn['developed'] = 'Developed'; +$lang->kanban->taskColumn['pause'] = 'Pause'; +$lang->kanban->taskColumn['canceled'] = 'Canceled'; +$lang->kanban->taskColumn['closed'] = 'Closed'; diff --git a/module/kanban/model.php b/module/kanban/model.php index b6955b7b68..97844906f5 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -35,10 +35,22 @@ class kanbanModel extends model ->andWhere('lane')->in(array_keys($lanes)) ->fetchGroup('lane', 'id'); + if($objectType == 'story' or $objectType == 'all') $stories = $this->loadModel('story')->getExecutionStories($executionID); + if($objectType == 'bug' or $objectType == 'all') $bugs = $this->loadModel('bug')->getExecutionBugs($executionID); + if($objectType == 'task' or $objectType == 'all') $tasks = $this->loadModel('execution')->getKanbanTasks($executionID, "id"); foreach($columns as $laneID => $cols) { + $laneType = $lanes[$laneID]->type; foreach($cols as $colID => $col) { + $cardIdList = array_filter(explode(',', $col->cards)); + $col->cards = array(); + foreach($cardIdList as $objectID) + { + if($laneType == 'story') $col->cards[$objectID] = zget($stories, $objectID, ''); + if($laneType == 'bug') $col->cards[$objectID] = zget($bugs, $objectID, ''); + if($laneType == 'task') $col->cards[$objectID] = zget($tasks, $objectID, ''); + } if($col->parent > 0) { $cols[$col->parent]->childs[$colID] = $col;