diff --git a/module/kanban/control.php b/module/kanban/control.php index c8d12f8c39..6ecee5ccd7 100644 --- a/module/kanban/control.php +++ b/module/kanban/control.php @@ -583,17 +583,17 @@ class kanban extends control */ public function viewArchivedColumn($regionID) { - $columns = $this->kanban->getColumnsByObject('region', $regionID, '', ''); + $columns = $this->kanban->getColumnsByObject('region', $regionID, ''); $columnsData = array(); foreach($columns as $column) { if($column->archived == 0) continue; - if($column->parent > 0) + if($column->parent > 0 and isset($columns[$column->parent])) { if(empty($columnsData[$column->parent])) $columnsData[$column->parent] = $columns[$column->parent]; $columnsData[$column->parent]->child[$column->id] = $column; } - else + elseif($column->parent <= 0) { if(empty($columnsData[$column->id])) $columnsData[$column->id] = $column; } diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 1dde6b6936..49ec25d957 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -132,7 +132,7 @@ function renderHeaderCol($column, column, $header, kanbanData) var groupID = $column.closest('.kanban-board').data('id'); var laneID = column.$kanbanData.lanes[0].id ? column.$kanbanData.lanes[0].id : 0; var columnID = $column.closest('.kanban-col').data('id'); - var printMoreBtn = (columnPrivs.includes('editColumn') || columnPrivs.includes('setWIP') || columnPrivs.includes('createColumn') || columnPrivs.includes('copyColumn') || columnPrivs.includes('archiveColumn') || columnPrivs.includes('deleteColumn') || columnPrivs.includes('splitColumn')); + var printMoreBtn = (columnPrivs.includes('setColumn') || columnPrivs.includes('setWIP') || columnPrivs.includes('createColumn') || columnPrivs.includes('copyColumn') || columnPrivs.includes('archiveColumn') || columnPrivs.includes('deleteColumn') || columnPrivs.includes('splitColumn')); /* Render more menu. */ if(columnPrivs.includes('createCard') || printMoreBtn) @@ -745,10 +745,9 @@ function createColumnMenu(options) if(!privs.length) return []; var items = []; - 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('setColumn')) 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, '', 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: 'col-add-left', url: createLink('kanban', 'createColumn', 'columnID=' + column.id + '&position=left'), className: 'iframe', attrs: {'data-toggle': 'modal'}}); diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php index 2738d33afb..6285c4fd03 100644 --- a/module/kanban/lang/en.php +++ b/module/kanban/lang/en.php @@ -288,6 +288,7 @@ $lang->kanbancard->deadlineAB = 'DL'; $lang->kanbancard->beginAB = 'Begin'; $lang->kanbancard->to = '~'; $lang->kanbancard->archived = 'Archived'; +$lang->kanbancard->empty = 'No Card'; $lang->kanbancard->confirmArchive = 'Are you sure to archive this card? After archiving the card, it will be hidden from the column and you can view it in the Region - Archived.'; $lang->kanbancard->confirmDelete = 'Are you sure to delete this card? After deleting the card, it will be deleted from the Kanban. You can only view it in the system recycle bin.'; diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php index e8e0b655e3..bc6ee4b541 100644 --- a/module/kanban/lang/zh-cn.php +++ b/module/kanban/lang/zh-cn.php @@ -288,6 +288,7 @@ $lang->kanbancard->deadlineAB = '截止'; $lang->kanbancard->beginAB = '开始'; $lang->kanbancard->to = '~'; $lang->kanbancard->archived = '已归档'; +$lang->kanbancard->empty = '暂时没有卡片'; $lang->kanbancard->confirmArchive = '您确认归档该卡片吗?归档卡片后,该卡片将从列中隐藏,您可以在区域-已归档中查看。'; $lang->kanbancard->confirmDelete = '您确认删除该卡片吗?删除卡片后,该卡片将从看板中删除,您只能通过系统回收站查看。'; diff --git a/module/kanban/model.php b/module/kanban/model.php index dea6f21a45..d8cfd7956f 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -106,7 +106,7 @@ class kanbanModel extends model /* Gets the groups, lanes and columns of the replication region. */ $copyGroups = $this->getGroupGroupByRegions($copyRegionID); $copyLaneGroup = $this->getLaneGroupByRegions($copyRegionID); - $copyColumnGroup = $this->getColumnGroupByRegions($copyRegionID); + $copyColumnGroup = $this->getColumnGroupByRegions($copyRegionID, 'id_asc'); /* Create groups, lanes, and columns. */ foreach($copyGroups[$copyRegionID] as $copyGroupID => $copyGroup) @@ -114,8 +114,9 @@ class kanbanModel extends model $newGroupID = $this->createGroup($kanban->id, $regionID); if(dao::isError()) return false; - $copyLanes = isset($copyLaneGroup[$copyGroupID]) ? $copyLaneGroup[$copyGroupID] : array(); - $copyColumns = isset($copyColumnGroup[$copyGroupID]) ? $copyColumnGroup[$copyGroupID] : array(); + $copyLanes = isset($copyLaneGroup[$copyGroupID]) ? $copyLaneGroup[$copyGroupID] : array(); + $copyColumns = isset($copyColumnGroup[$copyGroupID]) ? $copyColumnGroup[$copyGroupID] : array(); + $parentColumns = array(); foreach($copyLanes as $copyLane) { unset($copyLane->id); @@ -129,14 +130,23 @@ class kanbanModel extends model foreach($copyColumns as $copyColumn) { + $copyColumnID = $copyColumn->id; unset($copyColumn->id); unset($copyColumn->actions); unset($copyColumn->asParent); unset($copyColumn->parentType); - $copyColumn->region = $regionID; - $copyColumn->group = $newGroupID; - $this->createColumn($regionID, $copyColumn); + $copyColumn->region = $regionID; + $copyColumn->group = $newGroupID; + + if($copyColumn->parent > 0 and isset($parentColumns[$copyColumn->parent])) + { + $copyColumn->parent = $parentColumns[$copyColumn->parent]; + } + + $parentColumnID = $this->createColumn($regionID, $copyColumn); + + if($copyColumn->parent < 0) $parentColumns[$copyColumnID] = $parentColumnID; if(dao::isError()) return false; } } @@ -584,20 +594,21 @@ class kanbanModel extends model /** * Get column group by regions. * - * @param array $regions + * @param array $regions + * @param string $order order|id_asc * @access public * @return array */ - public function getColumnGroupByRegions($regions) + public function getColumnGroupByRegions($regions, $order = 'order') { $columnGroup = $this->dao->select("*")->from(TABLE_KANBANCOLUMN) ->where('deleted')->eq('0') ->andWhere('archived')->eq('0') ->andWhere('region')->in($regions) - ->orderBy('order') + ->orderBy($order) ->fetchGroup('group'); - $actions = array('createColumn', 'editColumn', 'setWIP', 'archiveColumn', 'restoreColumn', 'deleteColumn', 'createCard', 'splitColumn'); + $actions = array('createColumn', 'setColumn', 'setWIP', 'archiveColumn', 'restoreColumn', 'deleteColumn', 'createCard', 'splitColumn'); /* Group by parent. */ $parentColumnGroup = array(); @@ -2177,7 +2188,7 @@ class kanbanModel extends model * @access public * @return array */ - public function getColumnsByObject($objectType = '', $objectID = 0, $archived = 0, $deleted = 0) + public function getColumnsByObject($objectType = '', $objectID = 0, $archived = 0, $deleted = '0') { return $this->dao->select('*')->from(TABLE_KANBANCOLUMN) ->where(true) diff --git a/module/kanban/view/viewarchivedcard.html.php b/module/kanban/view/viewarchivedcard.html.php index 98eaa5b828..beb89af146 100644 --- a/module/kanban/view/viewarchivedcard.html.php +++ b/module/kanban/view/viewarchivedcard.html.php @@ -45,6 +45,11 @@
kanbancard->empty;?>
+