Merge branch 'kanban' into 'sgm_kanbanaction'

# Conflicts:
#   module/kanban/js/view.js
This commit is contained in:
李玉春
2021-12-10 07:18:22 +00:00
13 changed files with 50 additions and 36 deletions
+1
View File
@@ -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;
+1
View File
@@ -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';
+1
View File
@@ -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';
+6
View File
@@ -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;
}
+16 -18
View File
@@ -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();
+1 -1
View File
@@ -85,5 +85,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');
+8 -6
View File
@@ -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();
@@ -251,7 +251,7 @@ class kanban extends control
*
* @param int $columnID
* @param int $executionID
* @param string $from
* @param string $from kanban|execution
* @access public
* @return void
*/
@@ -275,6 +275,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();
@@ -285,7 +286,7 @@ class kanban extends control
*
* @param int $laneID
* @param int $executionID
* @param string $from
* @param string $from kanban|execution
* @access public
* @return void
*/
@@ -304,8 +305,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();
}
@@ -315,7 +317,7 @@ class kanban extends control
*
* @param int $columnID
* @param int $executionID
* @param string $from
* @param string $from kanban|execution
* @access public
* @return void
*/
+8 -7
View File
@@ -150,18 +150,18 @@ 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 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))
{
$([
'<div class="actions" title="' + lang.more + '">',
'<a data-contextmenu="lane" data-lane="' + lane.id + '" data-kanban="' + kanban.id + '">',
'<i class="icon icon-more-v"></i>',
'<i class="icon icon-ellipsis-v"></i>',
'</a>',
'</div>'
].join('')).appendTo($lane);
@@ -193,7 +193,7 @@ function renderKanbanItem(item, $item)
[
'<div class="actions" title="' + lang.more + '">',
'<button class="btn btn-link action" data-contextmenu="task" data-id="' + item.id + '" data-status="' + item.status + '">',
'<i class="icon icon-more-v"></i>',
'<i class="icon icon-ellipsis-v"></i>',
'</button>',
'</div>'
].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('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();
items.$options = {x: bounds.right, y: bounds.top};
@@ -627,6 +627,7 @@ 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('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: 'col-add-left', url: createLink('kanban', 'createColumn', 'columnID=' + column.id + '&position=left'), className: 'iframe', attrs: {'data-toggle': 'modal'}});
+1
View File
@@ -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';
+2 -1
View File
@@ -15,8 +15,9 @@ $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 = '创建看板列';
$lang->kanban->editColumn = '编辑看板列';
$lang->kanban->sortColumn = '看板列排序';
+2 -2
View File
@@ -416,7 +416,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)
@@ -835,7 +835,7 @@ class kanbanModel extends model
return $laneID;
}
/*
* Create a kanban.
*
+2
View File
@@ -27,12 +27,14 @@
</td>
<td></td>
</tr>
<?php if($from != 'kanban'):?>
<tr>
<th><?php echo $lang->kanban->WIPType;?></th>
<td colspan='2'>
<?php echo html::input('type', zget($lang->kanban->laneTypeList, $lane->type), "class='form-control' disabled");?>
</td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->kanban->laneColor;?></th>
<td colspan='3'>
+1 -1
View File
@@ -21,7 +21,7 @@
</div>
<form method='post' class="load-indicator main-form form-ajax" target='hiddenwin' onsubmit='return setWIPLimit();'>
<table align='center' class='table table-form'>
<?php if($column->parent != -1 and isset($status)):?>
<?php if($column->parent != -1 and $from !='kanban'):?>
<tr>
<th><?php echo $lang->kanban->WIPStatus;?></th>
<td colspan='2'>