* Finish task #48004.

This commit is contained in:
孙广明
2022-01-24 09:53:33 +08:00
parent a514a2bb07
commit b4d294c395
4 changed files with 74 additions and 22 deletions
+5 -2
View File
@@ -597,6 +597,9 @@ class kanban extends control
}
else
{
$column = $this->kanban->getColumnById($columnID);
if($column->parent) $this->kanban->processCards($column);
$this->kanban->archiveColumn($columnID);
if(dao::isError()) die(js::error(dao::getError()));
@@ -678,9 +681,9 @@ class kanban extends control
else
{
$column = $this->kanban->getColumnById($columnID);
$this->kanban->delete(TABLE_KANBANCOLUMN, $columnID);
if($column->parent) $this->kanban->processCards($column);
if($column->parent) $this->kanban->processParentColumn($column);
$this->dao->delete()->from(TABLE_KANBANCOLUMN)->where('id')->eq($columnID)->exec();
die(js::reload('parent'));
}
+3 -3
View File
@@ -819,8 +819,8 @@ function createColumnMenu(options)
items.push({label: kanbanLang.createColumnOnRight, icon: 'col-add-right', url: createLink('kanban', 'createColumn', 'columnID=' + column.id + '&position=right'), className: 'iframe', attrs: {'data-toggle': 'modal'}});
}
if(privs.includes('copyColumn')) items.push({label: kanbanLang.copyColumn, icon: 'copy', url: createLink('kanban', 'copyColumn', 'columnID=' + column.id), className: 'iframe', attrs: {'data-toggle': 'modal'}});
if(privs.includes('archiveColumn') && kanban.archived == '1' && column.$kanbanData.columns.length > 1) items.push({label: kanbanLang.archiveColumn, icon: 'card-archive', url: createLink('kanban', 'archiveColumn', 'columnID=' + column.id), attrs: {'target': 'hiddenwin'}});
if(privs.includes('deleteColumn') && column.$kanbanData.columns.length > 1) items.push({label: kanbanLang.deleteColumn, icon: 'trash', url: createLink('kanban', 'deleteColumn', 'columnID=' + column.id), attrs: {'target': 'hiddenwin'}});
if(privs.includes('archiveColumn') && kanban.archived == '1') items.push({label: kanbanLang.archiveColumn, icon: 'card-archive', url: createLink('kanban', 'archiveColumn', 'columnID=' + column.id), attrs: {'target': 'hiddenwin'}});
if(privs.includes('deleteColumn')) items.push({label: kanbanLang.deleteColumn, icon: 'trash', url: createLink('kanban', 'deleteColumn', 'columnID=' + column.id), attrs: {'target': 'hiddenwin'}});
var bounds = options.$trigger[0].getBoundingClientRect();
items.$options = {x: bounds.right, y: bounds.top};
@@ -844,7 +844,7 @@ function createColumnCreateMenu(options)
var laneID = col.$kanbanData.lanes[0].id ? col.$kanbanData.lanes[0].id : 0;
var columnID = col.id;
if(privs.includes('createCard')) items.push({label: kanbanLang.createCard, url: $.createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '&regionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(privs.includes('createCard')) items.push({label: kanbanLang.createCard, url: $.createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '&regionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(privs.includes('batchCreateCard')) items.push({label: kanbanLang.batchCreateCard, url: $.createLink('kanban', 'batchCreateCard', 'kanbanID=' + kanbanID + '&regionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID), attrs: {'data-width': '80%'}});
return items;
}
+3 -3
View File
@@ -260,9 +260,9 @@ $lang->kanbancolumn->childName = '子列名称';
$lang->kanbancolumn->childColor = '子状态颜色';
$lang->kanbancolumn->empty = '暂时没有看板列';
$lang->kanbancolumn->confirmArchive = '您确认归档该列吗?归档列后,该列和列中所有卡片将被隐藏,您可以在区域-已归档中查看已归档的列。';
$lang->kanbancolumn->confirmDelete = '您确认删除该列吗?删除列后,该列中所有卡片也会被删除。';
$lang->kanbancolumn->confirmRestore = '您确定要还原该看板列吗?还原看板列后,该看板列和看板列中所有的任务将同时还原到之前的位置。';
$lang->kanbancolumn->confirmArchive = '您确认归档该列吗?归档列后,该列将被隐藏,列中所有卡片移动到兄弟列或父列,您可以在区域-已归档中查看已归档的列。';
$lang->kanbancolumn->confirmDelete = '您确认删除该列吗?删除列后,该列中所有卡片会被移动到兄弟列或父列。';
$lang->kanbancolumn->confirmRestore = '您确定要还原该看板列吗?还原后,该看板列将回到之前的位置。';
$lang->kanbanlane = new stdclass();
$lang->kanbanlane->name = $lang->kanban->laneName;
+63 -14
View File
@@ -2789,6 +2789,39 @@ class kanbanModel extends model
*/
public function restoreColumn($columnID)
{
$column = $this->getColumnByID($columnID);
if($column->parent)
{
$parent = $this->getColumnByID($column->parent);
/* If the parent column is normal now, put its card into child column. */
if($parent->parent != -1)
{
$parentCells = $this->dao->select('*')->from(TABLE_KANBANCELL)
->where('`column`')->eq($column->parent)
->andWhere('type')->eq('common')
->fetchAll('id');
foreach($parentCells as $cell)
{
$this->dao->update(TABLE_KANBANCELL)->set('cards')->eq($cell->cards)
->where('lane')->eq($cell->lane)
->andWhere('`column`')->eq($columnID)
->andWhere('type')->eq('common')
->exec();
$this->dao->update(TABLE_KANBANCELL)->set('cards')->eq('')
->where('lane')->eq($cell->lane)
->andWhere('`column`')->eq($cell->column)
->andWhere('type')->eq('common')
->exec();
}
$this->dao->update(TABLE_KANBANCOLUMN)->set('parent')->eq(-1)->where('id')->eq($column->parent)->exec();
}
}
$this->dao->update(TABLE_KANBANCOLUMN)
->set('archived')->eq(0)
->where('id')->eq($columnID)
@@ -2841,22 +2874,50 @@ class kanbanModel extends model
if(!dao::isError()) return common::createChanges($oldCard, $card);
}
public function processParentColumn($column)
/**
* Process cards when delete a column.
*
* @param object $column
* @access public
* @return void
*/
public function processCards($column)
{
$firstColumnID = $this->dao->select('id')->from(TABLE_KANBANCOLUMN)
->where('parent')->eq($column->parent)
->andWhere('id')->ne($column->id)
->andWhere('deleted')->eq('0')
->andWhere('archived')->eq('0')
->orderBy('`order` asc')
->fetch('id');
$extendID = $firstColumnID ? $firstColumnID : $column->parent;
$extendID = $firstColumnID;
if(!$firstColumnID)
{
$extendID = $column->parent;
$this->dao->update(TABLE_KANBANCOLUMN)->set('parent')->eq(0)->where('id')->eq($column->parent)->exec();
}
$cells = $this->dao->select('*')->from(TABLE_KANBANCELL)
->where('`column`')->eq($column->id)
->andWhere('type')->eq('common')
->fetchAll('id');
foreach($cells as $cell)
{
$extendCards = $this->dao->select('cards')->from(TABLE_KANBANCELL)
->where('lane')->eq($cell->lane)
->andWhere('`column`')->eq($extendID)
->andWhere('type')->eq('common')
->fetch('cards');
$extendCards = $extendCards ? $extendCards . ltrim($cell->cards, ',') : $cell->cards;
$this->dao->update(TABLE_KANBANCELL)->set('cards')->eq($extendCards)
->where('lane')->eq($cell->lane)
->andWhere('`column`')->eq($extendID)
->andWhere('type')->eq('common')
->exec();
}
}
@@ -3165,18 +3226,6 @@ class kanbanModel extends model
case 'deletecolumn' :
if($object->deleted != '0') return false;
if($object->parent > 0)
{
$childrenCount = $this->dao->select('COUNT(id) AS count')->from(TABLE_KANBANCOLUMN)
->where('parent')->eq($object->parent)
->andWhere('deleted')->eq('0')
->andWhere('archived')->eq('0')
->fetch('count');
return $childrenCount > 2;
}
$count = $this->dao->select('COUNT(id) AS count')->from(TABLE_KANBANCOLUMN)
->where('region')->eq($object->region)
->andWhere('parent')->in('0,-1')