From 3a7ad7dad9bf5229ed33ab488f6e252f9ec19592 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Fri, 10 Dec 2021 13:43:23 +0800 Subject: [PATCH 1/6] * Finish task #45830. --- module/kanban/config.php | 2 +- module/kanban/control.php | 4 +++- module/kanban/js/view.js | 14 +++++++------- module/kanban/lang/en.php | 1 + module/kanban/lang/zh-cn.php | 3 ++- module/kanban/view/setlane.html.php | 2 ++ module/kanban/view/setwip.html.php | 2 +- 7 files changed, 17 insertions(+), 11 deletions(-) diff --git a/module/kanban/config.php b/module/kanban/config.php index 2e69265696..23834cb854 100644 --- a/module/kanban/config.php +++ b/module/kanban/config.php @@ -84,5 +84,5 @@ $config->kanban->taskColumnStatusList['pause'] = 'pause'; $config->kanban->taskColumnStatusList['canceled'] = 'cancel'; $config->kanban->taskColumnStatusList['closed'] = 'closed'; -$config->kanban->laneColorList = array('#7ec5ff', '#333', '#2b529c', '#e48600', '#d2323d', '#229f24', '#777', '#d2691e', '#008b8b', '#2e8b57', '#4169e1', '#4b0082', '#fa8072', '#ba55d3', '#2e8b57', '#6b8e23'); +$config->kanban->laneColorList = array('#7ec5ff', '#333', '#2b529c', '#e48600', '#d2323d', '#229f24', '#777', '#d2691e', '#008b8b', '#2e8b57', '#4169e1', '#4b0082', '#fa8072', '#ba55d3', '#6b8e23'); $config->kanban->columnColorList = array('#333', '#2b519c', '#e48610', '#d2313d', '#2a9f23', '#777', '#d2691e', '#2e8b8b', '#2f8b58', '#4168e0', '#4b0082', '#f58072', '#ba55d3', '#6a8e22'); diff --git a/module/kanban/control.php b/module/kanban/control.php index 750b4a9b9b..306b9ac140 100644 --- a/module/kanban/control.php +++ b/module/kanban/control.php @@ -248,6 +248,7 @@ class kanban extends control $this->view->title = $title . $this->lang->colon . $this->lang->kanban->setWIP . '(' . $this->lang->kanban->WIP . ')'; $this->view->column = $column; + $this->view->from = $from; if($from != 'kanban') $this->view->status = zget($this->config->kanban->{$column->laneType . 'ColumnStatusList'}, $column->type); $this->display(); @@ -277,8 +278,9 @@ class kanban extends control $lane = $this->kanban->getLaneById($laneID); if(!$lane) die(js::error($this->lang->notFound) . js::locate($this->createLink('execution', 'kanban', "executionID=$executionID"))); - $this->view->title = zget($this->lang->kanban->laneTypeList, $lane->type) . $this->lang->colon . $this->lang->kanban->setLane; + $this->view->title = $from == 'kanban' ? $this->lang->edit . '“' . $lane->name . '”' . $this->lang->kanbanlane->common : zget($this->lang->kanban->laneTypeList, $lane->type) . $this->lang->colon . $this->lang->kanban->setLane; $this->view->lane = $lane; + $this->view->from = $from; $this->display(); } diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index d5f8ac52a5..298cd1ade2 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -112,7 +112,7 @@ function renderHeaderCol($column, column, $header, kanbanData) if(!$column.children('.actions').length) $column.append('
'); var $actions = $column.children('.actions'); $actions.attr('title', lang.more); - $actions.html(''); + $actions.html(''); } /** @@ -150,8 +150,8 @@ function renderCount($count, count, column) function renderLaneName($lane, lane, $kanban, columns, kanban) { - var canEdit = lane.actions.includes('editLane'); - var canSort = lane.actions.includes('sortLane') && kanban.lanes.length > 1; + var canEdit = lane.actions.includes('editLane'); + var canSort = lane.actions.includes('sortLane') && kanban.lanes.length > 1; var canDelete = lane.actions.includes('deleteLane'); $lane.parent().toggleClass('sort', canSort); @@ -161,7 +161,7 @@ function renderLaneName($lane, lane, $kanban, columns, kanban) $([ '
', '', - '', + '', '', '
' ].join('')).appendTo($lane); @@ -193,7 +193,7 @@ function renderKanbanItem(item, $item) [ '
', '', '
' ].join('')).appendTo($item); @@ -578,8 +578,8 @@ function createLaneMenu(options) if(!privs.length) return []; var items = []; - if(privs.includes('editLane')) items.push({label: kanbanLang.editLane, icon: '', url: createLink('kanban', 'editLane', 'lane=' + lane.id), attrs: {'data-toggle': 'modal'}}); - if(privs.includes('deleteLane')) items.push({label: kanbanLang.deleteLane, icon: '', url: createLink('kanban', 'deleteLane', 'lane=' + lane.id), className: 'confirmer', attrs: {'data-confirmTitle': kanbanlaneLang.confirmDelete, 'data-confirmDetail': kanbanlaneLang.confirmDeleteDetail}}); + if(privs.includes('editLane')) items.push({label: kanbanLang.editLane, icon: 'edit', url: createLink('kanban', 'setLane', 'laneID=' + lane.id + '&executionID=0&from=kanban'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); + if(privs.includes('deleteLane')) items.push({label: kanbanLang.deleteLane, icon: 'trash', url: createLink('kanban', 'deleteLane', 'lane=' + lane.id), className: 'confirmer', attrs: {'data-confirmTitle': kanbanlaneLang.confirmDelete, 'data-confirmDetail': kanbanlaneLang.confirmDeleteDetail}}); var bounds = options.$trigger[0].getBoundingClientRect(); items.$options = {x: bounds.right, y: bounds.top}; diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php index aa55f97950..7dd8d23bef 100644 --- a/module/kanban/lang/en.php +++ b/module/kanban/lang/en.php @@ -17,6 +17,7 @@ $lang->kanban->deleteRegion = 'Delete Region'; $lang->kanban->createLane = 'Create Lane'; $lang->kanban->editLane = 'Edit Lane'; $lang->kanban->sortLane = 'Sort Lane'; +$lang->kanban->deleteLane = 'Delete Lane'; $lang->kanban->createColumn = 'Create Column'; $lang->kanban->editColumn = 'Edit Column'; $lang->kanban->sortColumn = 'Sort Column'; diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php index e724fe2365..7344514d2c 100644 --- a/module/kanban/lang/zh-cn.php +++ b/module/kanban/lang/zh-cn.php @@ -15,7 +15,8 @@ $lang->kanban->editRegion = '编辑区域'; $lang->kanban->sortRegion = '区域排序'; $lang->kanban->deleteRegion = '删除区域'; $lang->kanban->createLane = '创建泳道'; -$lang->kanban->editLane = '删除泳道'; +$lang->kanban->editLane = '编辑泳道'; +$lang->kanban->deleteLane = '删除泳道'; $lang->kanban->sortLane = '泳道排序'; $lang->kanban->createColumn = '创建看板列'; $lang->kanban->editColumn = '编辑看板列'; diff --git a/module/kanban/view/setlane.html.php b/module/kanban/view/setlane.html.php index 980c88f6f3..ae9d5be1fb 100644 --- a/module/kanban/view/setlane.html.php +++ b/module/kanban/view/setlane.html.php @@ -27,12 +27,14 @@ + kanban->WIPType;?> kanban->laneTypeList, $lane->type), "class='form-control' disabled");?> + kanban->laneColor;?> diff --git a/module/kanban/view/setwip.html.php b/module/kanban/view/setwip.html.php index 895513d4a9..e15e957229 100644 --- a/module/kanban/view/setwip.html.php +++ b/module/kanban/view/setwip.html.php @@ -21,7 +21,7 @@
- parent != -1 and isset($status)):?> + parent != -1 and $from !='kanban'):?>
kanban->WIPStatus;?> From 34d84b678cf19d3e7ed7989a2acd8800518bace4 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Fri, 10 Dec 2021 14:20:50 +0800 Subject: [PATCH 2/6] * Finish task #45830. --- module/kanban/js/view.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 298cd1ade2..baaa465cd0 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -150,13 +150,13 @@ function renderCount($count, count, column) function renderLaneName($lane, lane, $kanban, columns, kanban) { - var canEdit = lane.actions.includes('editLane'); + var canSet = lane.actions.includes('setLane'); var canSort = lane.actions.includes('sortLane') && kanban.lanes.length > 1; var canDelete = lane.actions.includes('deleteLane'); $lane.parent().toggleClass('sort', canSort); - if(!$lane.children('.actions').length && (canEdit || canDelete)) + if(!$lane.children('.actions').length && (canSet || canDelete)) { $([ '
', @@ -578,7 +578,7 @@ function createLaneMenu(options) if(!privs.length) return []; var items = []; - if(privs.includes('editLane')) items.push({label: kanbanLang.editLane, icon: 'edit', url: createLink('kanban', 'setLane', 'laneID=' + lane.id + '&executionID=0&from=kanban'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); + if(privs.includes('setLane')) items.push({label: kanbanLang.editLane, icon: 'edit', url: createLink('kanban', 'setLane', 'laneID=' + lane.id + '&executionID=0&from=kanban'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); if(privs.includes('deleteLane')) items.push({label: kanbanLang.deleteLane, icon: 'trash', url: createLink('kanban', 'deleteLane', 'lane=' + lane.id), className: 'confirmer', attrs: {'data-confirmTitle': kanbanlaneLang.confirmDelete, 'data-confirmDetail': kanbanlaneLang.confirmDeleteDetail}}); var bounds = options.$trigger[0].getBoundingClientRect(); @@ -625,7 +625,7 @@ function createColumnMenu(options) var items = []; if(privs.includes('setWIP')) items.push({label: kanbanLang.setWIP, icon: '', url: createLink('kanban', 'setWIP', 'columnID=' + column.id + '&executionID=0&from=kanban'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '500px'}}); - if(privs.includes('editColumn')) items.push({label: kanbanLang.editColumn, icon: '', url: createLink('kanban', 'setColumn', 'columnID=' + column.id + '&executionID=0&from=kanban', '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); + if(privs.includes('setColumn')) items.push({label: kanbanLang.editColumn, icon: '', url: createLink('kanban', 'setColumn', 'columnID=' + column.id + '&executionID=0&from=kanban', '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); if(privs.includes('createColumn')) { items.push({label: kanbanLang.createColumnOnLeft, icon: '', url: createLink('kanban', 'createColumn', 'columnID=' + column.id + '&position=left'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); From 6f8133482d9d3a1c80f1198152f552deac635229 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Fri, 10 Dec 2021 14:21:13 +0800 Subject: [PATCH 3/6] * Finish task #45830. --- module/group/lang/resource.php | 34 ++++++++++++++++------------------ module/kanban/control.php | 6 +++--- module/kanban/model.php | 4 ++-- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 200c124cf0..3d1bdf3a4c 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -634,10 +634,11 @@ $lang->resource->kanban->editRegion = 'editRegion'; $lang->resource->kanban->sortRegion = 'sortRegion'; $lang->resource->kanban->deleteRegion = 'deleteRegion'; $lang->resource->kanban->createLane = 'createLane'; -$lang->resource->kanban->editLane = 'editLane'; +$lang->resource->kanban->setLane = 'setLane'; $lang->resource->kanban->sortLane = 'sortLane'; +$lang->resource->kanban->deleteLane = 'deleteLane'; $lang->resource->kanban->createColumn = 'createColumn'; -$lang->resource->kanban->editColumn = 'editColumn'; +$lang->resource->kanban->setColumn = 'setColumn'; $lang->resource->kanban->setWIP = 'setWIP'; $lang->resource->kanban->sortColumn = 'sortColumn'; $lang->resource->kanban->deleteColumn = 'deleteColumn'; @@ -645,8 +646,6 @@ $lang->resource->kanban->createCard = 'createCard'; $lang->resource->kanban->editCard = 'editCard'; $lang->resource->kanban->viewCard = 'viewCard'; $lang->resource->kanban->sortCard = 'sortCard'; -$lang->resource->kanban->setLane = 'setLane'; -$lang->resource->kanban->setColumn = 'setColumn'; $lang->resource->kanban->laneMove = 'laneMove'; $lang->resource->kanban->cardsSort = 'cardsSort'; @@ -666,21 +665,20 @@ $lang->kanban->methodOrder[65] = 'editRegion'; $lang->kanban->methodOrder[70] = 'sortRegion'; $lang->kanban->methodOrder[75] = 'deleteRegion'; $lang->kanban->methodOrder[80] = 'createLane'; -$lang->kanban->methodOrder[85] = 'editLane'; +$lang->kanban->methodOrder[85] = 'setLane'; $lang->kanban->methodOrder[90] = 'sortLane'; -$lang->kanban->methodOrder[95] = 'createColumn'; -$lang->kanban->methodOrder[100] = 'editColumn'; -$lang->kanban->methodOrder[105] = 'setWIP'; -$lang->kanban->methodOrder[110] = 'sortColumn'; -$lang->kanban->methodOrder[115] = 'deleteColumn'; -$lang->kanban->methodOrder[120] = 'createCard'; -$lang->kanban->methodOrder[125] = 'editCard'; -$lang->kanban->methodOrder[130] = 'viewCard'; -$lang->kanban->methodOrder[135] = 'sortCard'; -$lang->kanban->methodOrder[140] = 'setLane'; -$lang->kanban->methodOrder[145] = 'setColumn'; -$lang->kanban->methodOrder[150] = 'laneMove'; -$lang->kanban->methodOrder[155] = 'cardsSort'; +$lang->kanban->methodOrder[95] = 'deleteLane'; +$lang->kanban->methodOrder[100] = 'createColumn'; +$lang->kanban->methodOrder[105] = 'setColumn'; +$lang->kanban->methodOrder[110] = 'setWIP'; +$lang->kanban->methodOrder[115] = 'sortColumn'; +$lang->kanban->methodOrder[120] = 'deleteColumn'; +$lang->kanban->methodOrder[125] = 'createCard'; +$lang->kanban->methodOrder[130] = 'editCard'; +$lang->kanban->methodOrder[135] = 'viewCard'; +$lang->kanban->methodOrder[140] = 'sortCard'; +$lang->kanban->methodOrder[145] = 'laneMove'; +$lang->kanban->methodOrder[150] = 'cardsSort'; /* Execution. */ $lang->resource->execution = new stdclass(); diff --git a/module/kanban/control.php b/module/kanban/control.php index 306b9ac140..5d1f2df092 100644 --- a/module/kanban/control.php +++ b/module/kanban/control.php @@ -224,7 +224,7 @@ class kanban extends control * * @param int $columnID * @param int $executionID - * @param string $from + * @param string $from kanban|execution * @access public * @return void */ @@ -259,7 +259,7 @@ class kanban extends control * * @param int $laneID * @param int $executionID - * @param string $from + * @param string $from kanban|execution * @access public * @return void */ @@ -290,7 +290,7 @@ class kanban extends control * * @param int $columnID * @param int $executionID - * @param string $from + * @param string $from kanban|execution * @access public * @return void */ diff --git a/module/kanban/model.php b/module/kanban/model.php index d486125944..3f5b73dc07 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -327,7 +327,7 @@ class kanbanModel extends model ->orderBy('order') ->fetchGroup('group'); - $actions = array('editLane', 'sortLane', 'deleteLane'); + $actions = array('setLane', 'sortLane', 'deleteLane'); foreach($laneGroup as $lanes) { foreach($lanes as $lane) @@ -738,7 +738,7 @@ class kanbanModel extends model return $laneID; } - + /* * Create a kanban. * From 5d7a3c9215bb0e2a40ad8290f9a63d0e68abec9f Mon Sep 17 00:00:00 2001 From: tianshujie Date: Fri, 10 Dec 2021 14:24:16 +0800 Subject: [PATCH 4/6] * Add dynamic link. --- module/action/config.php | 1 + module/action/lang/en.php | 1 + module/action/lang/zh-cn.php | 1 + module/action/model.php | 6 ++++++ module/kanban/control.php | 4 ++-- 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/module/action/config.php b/module/action/config.php index 66a92f5a14..f0a6e2ec47 100755 --- a/module/action/config.php +++ b/module/action/config.php @@ -36,6 +36,7 @@ $config->action->objectNameFields['mr'] = 'title'; $config->action->objectNameFields['kanbancolumn'] = 'name'; $config->action->objectNameFields['kanbanlane'] = 'name'; $config->action->objectNameFields['kanbanspace'] = 'name'; +$config->action->objectNameFields['kanbanregion'] = 'name'; $config->action->objectNameFields['kanban'] = 'name'; $config->action->commonImgSize = 870; diff --git a/module/action/lang/en.php b/module/action/lang/en.php index 868c91e2fb..43ef3cb36d 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -542,6 +542,7 @@ $lang->action->label->design = 'Design|design|view|designID=%s'; $lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s'; $lang->action->label->api = 'Interface|api|index|libID=%s&moduleID=%s&apiID=%s'; $lang->action->label->kanbanspace = 'Kanban Space|kanban|space|browseType=all'; +$lang->action->label->kanbanregion = 'Kanban Region|kanban|view|kanbanID=%s'; $lang->action->label->kanban = 'Kanban|kanban|view|kanbanID=%s'; $lang->action->label->kanbancolumn = 'Kanban Column|execution|kanban|execution=%s'; $lang->action->label->kanbanlane = 'Kanban Lane|execution|kanban|execution=%s&type=all'; diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index c6fd0cc076..bd4d2972be 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -542,6 +542,7 @@ $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->kanbanregion = '看板区域|kanban|view|kanbanID=%s'; $lang->action->label->kanban = '看板|kanban|view|kanbanID=%s'; $lang->action->label->kanbancolumn = '看板列|execution|kanban|execution=%s'; $lang->action->label->kanbanlane = '看板泳道|execution|kanban|execution=%s&type=all'; diff --git a/module/action/model.php b/module/action/model.php index d153117996..ef845917a0 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -1233,6 +1233,12 @@ class actionModel extends model $action->objectLink = helper::createLink('assetlib', 'storyView', "storyID=$action->objectID"); } + if($action->objectType == 'kanbanregion') + { + $kanbanID = $this->dao->select('kanban')->from(TABLE_KANBANREGION)->where('id')->eq($action->objectID)->fetch('kanban'); + $action->objectLink = helper::createLink('kanban', 'view', "kanbanID=$kanbanID"); + } + return $action; } diff --git a/module/kanban/control.php b/module/kanban/control.php index 750b4a9b9b..551aa5f1ca 100644 --- a/module/kanban/control.php +++ b/module/kanban/control.php @@ -110,7 +110,7 @@ class kanban extends control $this->view->users = $this->loadModel('user')->getPairs('noletter|noclosed'); $this->view->spaceID = $spaceID; - $this->view->spacePairs = array('' => '') + $this->kanban->getSpacePairs(); + $this->view->spacePairs = array(0 => '') + $this->kanban->getSpacePairs(); $this->display(); } @@ -138,7 +138,7 @@ class kanban extends control } $this->view->users = $this->loadModel('user')->getPairs('noletter|noclosed'); - $this->view->spacePairs = array('' => '') + $this->kanban->getSpacePairs(); + $this->view->spacePairs = array(0 => '') + $this->kanban->getSpacePairs(); $this->view->kanban = $this->kanban->getByID($kanbanID); $this->display(); From 7dfe24dd116f6c5bdebbb957dfacefc7820acc33 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Fri, 10 Dec 2021 14:44:13 +0800 Subject: [PATCH 5/6] * Remove redundant drop-down menu. --- module/kanban/js/view.js | 1 - 1 file changed, 1 deletion(-) diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 38e4ccd628..194fb488e1 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -627,7 +627,6 @@ function createColumnMenu(options) if(privs.includes('editColumn')) items.push({label: kanbanLang.editColumn, icon: 'edit', url: createLink('kanban', 'setColumn', 'columnID=' + column.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); if(privs.includes('setWIP')) items.push({label: kanbanLang.setWIP, icon: 'alert', url: createLink('kanban', 'setWIP', 'columnID=' + column.id), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width' : '500px'}}); if(privs.includes('splitColumn')) items.push({label: kanbanLang.splitColumn, icon: 'col-split', url: createLink('kanban', 'splitColumn', 'columnID=' + column.id), className: 'iframe', attrs: {'data-toggle': 'modal'}}); - if(privs.includes('setWIP')) items.push({label: kanbanLang.setWIP, icon: '', url: createLink('kanban', 'setWIP', 'columnID=' + column.id + '&executionID=0&from=kanban'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '500px'}}); if(privs.includes('setColumn')) items.push({label: kanbanLang.editColumn, icon: '', url: createLink('kanban', 'setColumn', 'columnID=' + column.id + '&executionID=0&from=kanban', '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); if(privs.includes('createColumn')) { From bd15849fe5b86b0c927522fb67b9383bb59b2db9 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Fri, 10 Dec 2021 14:45:13 +0800 Subject: [PATCH 6/6] * Modify chinese language file. --- module/kanban/lang/zh-cn.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php index 6dc3b9c202..9ae0588e97 100644 --- a/module/kanban/lang/zh-cn.php +++ b/module/kanban/lang/zh-cn.php @@ -15,7 +15,7 @@ $lang->kanban->editRegion = '编辑区域'; $lang->kanban->sortRegion = '区域排序'; $lang->kanban->deleteRegion = '删除区域'; $lang->kanban->createLane = '创建泳道'; -$lang->kanban->editLane = '删除泳道'; +$lang->kanban->editLane = '编辑泳道'; $lang->kanban->sortLane = '泳道排序'; $lang->kanban->deleteLane = '删除泳道'; $lang->kanban->createColumn = '创建看板列';