* Finish task #46157.

This commit is contained in:
tianshujie
2021-12-20 14:42:06 +08:00
parent 84fae4bc7d
commit 442fbdad44
7 changed files with 63 additions and 75 deletions
+5 -12
View File
@@ -8,6 +8,7 @@ CREATE TABLE `zt_kanbanspace` (
`acl` char(30) NOT NULL DEFAULT 'open',
`whitelist` text NOT NULL,
`status` enum('active','closed') NOT NULL default 'active',
`order` smallint(6) NOT NULL DEFAULT '0',
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
`lastEditedBy` char(30) NOT NULL,
@@ -30,6 +31,7 @@ CREATE TABLE `zt_kanban` (
`whitelist` text NOT NULL,
`archived` enum('0', '1') NOT NULL DEFAULT '0',
`status` enum('active','closed') NOT NULL default 'active',
`order` smallint(6) NOT NULL DEFAULT '0',
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
`lastEditedBy` char(30) NOT NULL,
@@ -46,6 +48,7 @@ CREATE TABLE `zt_kanbanregion` (
`space` mediumint(8) unsigned NOT NULL,
`kanban` mediumint(8) unsigned NOT NULL,
`name` varchar(255) NOT NULL,
`order` smallint(6) NOT NULL DEFAULT '0',
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
`lastEditedBy` char(30) NOT NULL,
@@ -72,6 +75,7 @@ CREATE TABLE `zt_kanbancard` (
`color` char(7) NOT NULL,
`acl` char(30) NOT NULL DEFAULT 'open',
`whitelist` text NOT NULL,
`order` smallint(6) NOT NULL DEFAULT '0',
`archived` enum('0', '1') NOT NULL DEFAULT '0',
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
@@ -90,18 +94,7 @@ CREATE TABLE `zt_kanbangroup` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`kanban` mediumint(8) unsigned NOT NULL,
`region` mediumint(8) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_kanbanorder`;
CREATE TABLE `zt_kanbanorder` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`parentID` mediumint(8) unsigned NOT NULL,
`parentType` varchar(20) NOT NULL,
`objectID` mediumint(8) unsigned NOT NULL,
`objectType` varchar(20) NOT NULL,
`account` varchar(30) NOT NULL,
`order` int NOT NULL,
`order` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+5 -11
View File
@@ -654,6 +654,7 @@ CREATE TABLE `zt_kanbanspace` (
`acl` char(30) NOT NULL DEFAULT 'open',
`whitelist` text NOT NULL,
`status` enum('active','closed') NOT NULL default 'active',
`order` mediumint(8) NOT NULL DEFAULT '0',
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
`lastEditedBy` char(30) NOT NULL,
@@ -675,6 +676,7 @@ CREATE TABLE `zt_kanban` (
`whitelist` text NOT NULL,
`archived` enum('0', '1') NOT NULL DEFAULT '0',
`status` enum('active','closed') NOT NULL default 'active',
`order` mediumint(8) NOT NULL DEFAULT '0',
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
`lastEditedBy` char(30) NOT NULL,
@@ -690,6 +692,7 @@ CREATE TABLE `zt_kanbanregion` (
`space` mediumint(8) unsigned NOT NULL,
`kanban` mediumint(8) unsigned NOT NULL,
`name` varchar(255) NOT NULL,
`order` mediumint(8) NOT NULL DEFAULT '0',
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
`lastEditedBy` char(30) NOT NULL,
@@ -715,6 +718,7 @@ CREATE TABLE `zt_kanbancard` (
`color` char(7) NOT NULL,
`acl` char(30) NOT NULL DEFAULT 'open',
`whitelist` text NOT NULL,
`order` mediumint(8) NOT NULL DEFAULT '0',
`archived` enum('0', '1') NOT NULL DEFAULT '0',
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
@@ -732,17 +736,7 @@ CREATE TABLE `zt_kanbangroup` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`kanban` mediumint(8) unsigned NOT NULL,
`region` mediumint(8) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_kanbanorder`;
CREATE TABLE `zt_kanbanorder` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`parentID` mediumint(8) unsigned NOT NULL,
`parentType` varchar(20) NOT NULL,
`objectID` mediumint(8) NOT NULL,
`objectType` varchar(20) NOT NULL,
`account` varchar(30) NOT NULL,
`order` int NOT NULL,
`order` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_kanbanlane`;
+3 -1
View File
@@ -654,6 +654,7 @@ $lang->resource->kanban->moveCard = 'moveCard';
$lang->resource->kanban->setCardColor = 'setCardColor';
$lang->resource->kanban->laneMove = 'laneMove';
$lang->resource->kanban->cardsSort = 'cardsSort';
$lang->resource->kanban->splitColumn = 'splitColumn';
$lang->kanban->methodOrder[5] = 'space';
$lang->kanban->methodOrder[10] = 'createSpace';
@@ -690,7 +691,8 @@ $lang->kanban->methodOrder[160] = 'assigntoCard';
$lang->kanban->methodOrder[165] = 'moveCard';
$lang->kanban->methodOrder[170] = 'setCardColor';
$lang->kanban->methodOrder[175] = 'laneMove';
$lang->kanban->methodOrder[180] = 'cardsSort';
$lang->kanban->methodorder[180] = 'cardsSort';
$lang->kanban->methodorder[185] = 'splitColumn';
/* Execution. */
$lang->resource->execution = new stdclass();
+23
View File
@@ -348,6 +348,29 @@ class kanban extends control
$this->display();
}
/**
* Sort regions.
*
* @param string $regions
* @access public
* @return void
*/
public function sortRegion($regions = '')
{
if(empty($regions)) return;
$regionIdList = explode(',', trim($regions, ','));
$order = 1;
foreach($regionIdList as $regionID)
{
$this->dao->update(TABLE_KANBANREGION)->set('`order`')->eq($order)->where('id')->eq($regionID)->exec();
$order++;
}
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess));
}
/**
* Delete a region
*
+2 -1
View File
@@ -883,6 +883,7 @@ $(function()
{
$('.icon-double-angle-down').attr('class', 'icon-double-angle-up');
$('.region').find('.kanban').show();
url = createLink('kanban', 'sortRegion', 'regions=' + orders.join(','));
}
if(sortType == 'board')
{
@@ -911,7 +912,7 @@ $(function()
},
always: function(e)
{
$cards.show();
if(sortType == 'lane') $cards.show();
}
});
});
+21 -50
View File
@@ -23,11 +23,8 @@ class kanbanModel extends model
*/
public function createGroup($kanbanID, $regionID)
{
$maxOrder = $this->dao->select('MAX(`order`) AS maxOrder')->from(TABLE_KANBANORDER)
->where('objectType')->eq('group')
->andWhere('parentID')->eq($regionID)
->andWhere('parentType')->eq('region')
->andWhere('account')->eq('')
$maxOrder = $this->dao->select('MAX(`order`) AS maxOrder')->from(TABLE_KANBANGROUP)
->where('region')->eq($regionID)
->fetch('maxOrder');
$order = $maxOrder ? $maxOrder + 1 : 1;
@@ -35,14 +32,12 @@ class kanbanModel extends model
$group = new stdclass();
$group->kanban = $kanbanID;
$group->region = $regionID;
$group->order = $order;
$this->dao->insert(TABLE_KANBANGROUP)->data($group)->autoCheck()->exec();
if(dao::isError()) return false;
$groupID = $this->dao->lastInsertID();
$this->saveOrder($regionID, 'region', $groupID, 'group', '', $order);
return $groupID;
return $this->dao->lastInsertID();
}
/**
@@ -80,15 +75,11 @@ class kanbanModel extends model
if(!$region)
{
$maxOrder = $this->dao->select('MAX(`order`) AS maxOrder')->from(TABLE_KANBANORDER)
->where('objectType')->eq('region')
->andWhere('parentID')->eq($kanban->id)
->andWhere('parentType')->eq('kanban')
->andWhere('account')->eq('')
$maxOrder = $this->dao->select('MAX(`order`) AS maxOrder')->from(TABLE_KANBANREGION)
->where('kanban')->eq($kanban->id)
->fetch('maxOrder');
$order = $maxOrder + 1;
$order = $maxOrder + 1;
$region = fixer::input('post')
->add('kanban', $kanban->id)
->add('space', $kanban->space)
@@ -98,6 +89,7 @@ class kanbanModel extends model
->get();
}
$region->order = $order;
$this->dao->insert(TABLE_KANBANREGION)->data($region)
->batchCheck($this->config->kanban->require->createregion, 'notempty')
->check('name', 'unique', "kanban = {$kanban->id} AND deleted = '0'")
@@ -108,7 +100,6 @@ class kanbanModel extends model
if(dao::isError()) return false;
$this->loadModel('action')->create('kanbanRegion', $regionID, 'Created');
$this->saveOrder($kanban->id, 'kanban', $regionID, 'region', $account, $order);
if($copyRegionID)
{
@@ -181,11 +172,11 @@ class kanbanModel extends model
$lane->type = 'common';
$lane->lastEditedTime = helper::now();
$lane->color = '#7ec5ff';
$lane->order = 1;
$this->dao->insert(TABLE_KANBANLANE)->data($lane)->exec();
$laneID = $this->dao->lastInsertId();
$this->saveOrder($regionID, 'region', $laneID, 'lane', '', 1);
return $laneID;
}
@@ -213,7 +204,6 @@ class kanbanModel extends model
$this->createColumn($regionID, $column);
$order ++;
//$this->saveOrder($regionID, 'region', $this->dao->lastInsertID(), 'column', '', $index);
}
return !dao::isError();
@@ -376,6 +366,7 @@ class kanbanModel extends model
if(!dao::isError())
{
$childColumnID = $this->dao->lastInsertID();
if($i == 1) $this->dao->update(TABLE_KANBANCARD)->set('`column`')->eq($childColumnID)->where('`column`')->eq($columnID)->exec();
$this->dao->update(TABLE_KANBANCOLUMN)->set('type')->eq("column{$childColumnID}")->where('id')->eq($childColumnID)->exec();
$this->action->create('kanbanColumn', $childColumnID, 'created');
}
@@ -445,33 +436,6 @@ class kanbanModel extends model
return false;
}
/**
* Save kanban object order.
*
* @param int $parentID
* @param string $parentType
* @param int $objectID
* @param string $objectType
* @param string $account
* @param int $order
* @access public
* @return void
*/
public function saveOrder($parentID, $parentType, $objectID, $objectType, $account, $order)
{
$kanbanOrder = new stdclass();
$kanbanOrder->parentID = $parentID;
$kanbanOrder->parentType = $parentType;
$kanbanOrder->objectID = $objectID;
$kanbanOrder->objectType = $objectType;
$kanbanOrder->account = $account;
$kanbanOrder->order = $order;
$this->dao->insert(TABLE_KANBANORDER)->data($kanbanOrder)->exec();
return !dao::isError();
}
/**
* Get kanban by id.
*
@@ -562,7 +526,7 @@ class kanbanModel extends model
return $this->dao->select('id,name')->from(TABLE_KANBANREGION)
->where('kanban')->eq($kanbanID)
->andWhere('deleted')->eq('0')
->orderBy('id_asc')
->orderBy('order_asc')
->fetchPairs();
}
@@ -950,7 +914,7 @@ class kanbanModel extends model
if(!dao::isError())
{
$spaceID = $this->dao->lastInsertID();
$this->saveOrder(0, '', $spaceID, 'space', '', $spaceID);
$this->dao->update(TABLE_KANBANSPACE)->set('`order`')->eq($spaceID)->where('id')->eq($spaceID)->exec();
$this->file->saveUpload('kanbanspace', $spaceID);
$this->file->updateObjectID($this->post->uid, $spaceID, 'kanbanspace');
@@ -1114,6 +1078,14 @@ class kanbanModel extends model
$kanban = $this->loadModel('file')->processImgURL($kanban, $this->config->kanban->editor->create['id'], $this->post->uid);
if(!empty($kanban->space))
{
$maxOrder = $this->dao->select('MAX(`order`) AS maxOrder')->from(TABLE_KANBAN)
->where('space')->eq($kanban->space)
->fetch('maxOrder');
$kanban->order = $maxOrder + 1;
}
$this->dao->insert(TABLE_KANBAN)->data($kanban)
->autoCheck()
->batchCheck($this->config->kanban->create->requiredFields, 'notempty')
@@ -1124,7 +1096,6 @@ class kanbanModel extends model
$kanbanID = $this->dao->lastInsertID();
$kanban = $this->getByID($kanbanID);
$this->saveOrder(0, '', $kanbanID, 'kanban', '', $kanbanID);
$this->createDefaultRegion($kanban);
$this->file->saveUpload('kanban', $kanbanID);
$this->file->updateObjectID($this->post->uid, $kanbanID, 'kanban');
@@ -1728,7 +1699,7 @@ class kanbanModel extends model
}
$cardID = (int)$cardID;
$oldCard = $this->getCardById($cardID);
$oldCard = $this->getCardByID($cardID);
$now = helper::now();
$card = fixer::input('post')
+4
View File
@@ -58,6 +58,10 @@
<th><?php echo $lang->kanbancard->end;?></th>
<td><?php echo html::input('end', helper::isZeroDate($card->end) ? '' : $card->end, "class='form-control form-date'");?></td>
</tr>
<tr>
<th><?php echo $lang->kanbancard->estimate;?></th>
<td><?php echo html::input('estimate', $card->estimate, "class='form-control' placeholder='{$lang->kanbancard->lblHour}'");?></td>
</tr>
<tr>
<th><?php echo $lang->kanbancard->pri;?></th>
<td><?php echo html::select('pri', $lang->kanbancard->priList, $card->pri, "class='form-control'");?></td>