Merge branch 'sprint/183_tianshujie_48005' into 'master'
* Finish task #48005. See merge request easycorp/zentaopms!1501
This commit is contained in:
@@ -670,7 +670,6 @@ $lang->resource->kanban->deleteCard = 'deleteCard';
|
||||
$lang->resource->kanban->moveCard = 'moveCard';
|
||||
$lang->resource->kanban->setCardColor = 'setCardColor';
|
||||
$lang->resource->kanban->laneMove = 'laneMove';
|
||||
$lang->resource->kanban->cardsSort = 'cardsSort';
|
||||
$lang->resource->kanban->viewArchivedColumn = 'viewArchivedColumn';
|
||||
$lang->resource->kanban->viewArchivedCard = 'viewArchivedCard';
|
||||
$lang->resource->kanban->restoreCard = 'restoreCard';
|
||||
@@ -714,12 +713,11 @@ $lang->kanban->methodOrder[170] = 'assigntoCard';
|
||||
$lang->kanban->methodOrder[175] = 'moveCard';
|
||||
$lang->kanban->methodOrder[180] = 'setCardColor';
|
||||
$lang->kanban->methodOrder[185] = 'laneMove';
|
||||
$lang->kanban->methodorder[190] = 'cardsSort';
|
||||
$lang->kanban->methodOrder[195] = 'viewArchivedColumn';
|
||||
$lang->kanban->methodorder[200] = 'viewArchivedCard';
|
||||
$lang->kanban->methodorder[205] = 'archiveColumn';
|
||||
$lang->kanban->methodorder[210] = 'restoreCard';
|
||||
$lang->kanban->methodorder[215] = 'setLaneHeight';
|
||||
$lang->kanban->methodOrder[190] = 'viewArchivedColumn';
|
||||
$lang->kanban->methodorder[195] = 'viewArchivedCard';
|
||||
$lang->kanban->methodorder[200] = 'archiveColumn';
|
||||
$lang->kanban->methodorder[205] = 'restoreCard';
|
||||
$lang->kanban->methodorder[210] = 'setLaneHeight';
|
||||
|
||||
/* Execution. */
|
||||
$lang->resource->execution = new stdclass();
|
||||
|
||||
@@ -669,12 +669,11 @@ class kanban extends control
|
||||
* @param int $kanbanID
|
||||
* @param int $regionID
|
||||
* @param int $groupID
|
||||
* @param int $laneID
|
||||
* @param int $columnID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createCard($kanbanID = 0, $regionID = 0, $groupID = 0, $laneID = 0, $columnID = 0)
|
||||
public function createCard($kanbanID = 0, $regionID = 0, $groupID = 0, $columnID = 0)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
@@ -782,6 +781,26 @@ class kanban extends control
|
||||
die(json_encode($kanbanGroup));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort cards.
|
||||
*
|
||||
* @param int $kanbanID
|
||||
* @param int $laneID
|
||||
* @param int $columnID
|
||||
* @param string $cards
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function sortCard($kanbanID, $laneID, $columnID, $cards = '')
|
||||
{
|
||||
if(empty($cards)) return;
|
||||
|
||||
$this->dao->update(TABLE_KANBANCELL)->set('cards')->eq(",$cards,")->where('kanban')->eq($kanbanID)->andWhere('lane')->eq($laneID)->andWhere('`column`')->eq($columnID)->exec();
|
||||
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess));
|
||||
}
|
||||
|
||||
/**
|
||||
* Archive a card.
|
||||
*
|
||||
|
||||
+15
-11
@@ -145,7 +145,7 @@ function renderHeaderCol($column, column, $header, kanbanData)
|
||||
|
||||
if(columnPrivs.includes('createCard') && column.parent != -1)
|
||||
{
|
||||
var cardUrl = createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID);
|
||||
var cardUrl = createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID);
|
||||
addItemBtn = ['<a data-contextmenu="columnCreate" data-toggle="modal" data-action="addItem" data-column="' + column.id + '" data-lane="' + laneID + '" href="' + cardUrl + '" class="text-primary iframe">', '<i class="icon icon-expand-alt"></i>', '</a>'].join('');
|
||||
}
|
||||
|
||||
@@ -258,6 +258,8 @@ function renderKanbanItem(item, $item)
|
||||
var $title = $item.children('.title');
|
||||
var privs = item.actions;
|
||||
var printMoreBtn = (privs.includes('editCard') || privs.includes('archiveCard') || privs.includes('copyCard') || privs.includes('deleteCard') || privs.includes('moveCard') || privs.includes('setCardColor'));
|
||||
|
||||
if(privs.includes('sortCard')) $item.parent().addClass('sort');
|
||||
if(!$title.length)
|
||||
{
|
||||
if(privs.includes('viewCard')) $title = $('<a class="title iframe" data-toggle="modal" data-width="80%"></a>').appendTo($item).attr('href', createLink('kanban', 'viewCard', 'cardID=' + item.id, '', true));
|
||||
@@ -489,7 +491,7 @@ function openAddTaskForm($element)
|
||||
var laneID = $element.closest('.kanban-lane').data('id');
|
||||
var columnID = $element.closest('.kanban-col').data('id');
|
||||
var status = $element.closest('.kanban-col').data('type');
|
||||
var modalUrl = createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID);
|
||||
var modalUrl = createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID);
|
||||
$.zui.modalTrigger.show(
|
||||
{
|
||||
url: modalUrl,
|
||||
@@ -930,29 +932,29 @@ $(function()
|
||||
var $cards = null;
|
||||
$('#kanban').sortable(
|
||||
{
|
||||
selector: '.region, .kanban-board, .kanban-lane',
|
||||
trigger: '.region.sort > .region-header, .kanban-board.sort > .kanban-header > .kanban-group-header, .kanban-lane.sort > .kanban-lane-name',
|
||||
selector: '.region, .kanban-board, .kanban-lane, .kanban-item.sort',
|
||||
trigger: '.region.sort > .region-header, .kanban-board.sort > .kanban-header > .kanban-group-header, .kanban-lane.sort > .kanban-lane-name, .kanban-item.sort',
|
||||
container: function($ele)
|
||||
{
|
||||
return $ele.parent();
|
||||
},
|
||||
targetSelector: function($ele)
|
||||
{
|
||||
/* Sort regions */
|
||||
/* Sort regions. */
|
||||
if($ele.hasClass('region'))
|
||||
{
|
||||
sortType = 'region';
|
||||
return $ele.parent().children('.region');
|
||||
}
|
||||
|
||||
/* Sort boards */
|
||||
/* Sort boards. */
|
||||
if($ele.hasClass('kanban-board'))
|
||||
{
|
||||
sortType = 'board';
|
||||
return $ele.parent().children('.kanban-board');
|
||||
}
|
||||
|
||||
/* Sort lanes */
|
||||
/* Sort lanes. */
|
||||
if($ele.hasClass('kanban-lane'))
|
||||
{
|
||||
sortType = 'lane';
|
||||
@@ -961,10 +963,10 @@ $(function()
|
||||
return $ele.parent().children('.kanban-lane');
|
||||
}
|
||||
|
||||
/* Sort lanes */
|
||||
/* Sort cards. */
|
||||
if($ele.hasClass('kanban-item'))
|
||||
{
|
||||
sortType = 'item';
|
||||
sortType = 'card';
|
||||
return $ele.parent().children('.kanban-item');
|
||||
}
|
||||
},
|
||||
@@ -1015,9 +1017,11 @@ $(function()
|
||||
var region = e.element.parent().parent().data('id');
|
||||
url = createLink('kanban', 'sortLane', 'region=' + region + '&lanes=' + orders.join(','));
|
||||
}
|
||||
if(sortType == 'item')
|
||||
if(sortType == 'card')
|
||||
{
|
||||
url = createLink('task', 'sort', 'kanbanID=' + kanbanID + '&tasks=' + orders.join(','));
|
||||
var laneID = e.element.closest('.kanban-lane').data('id');
|
||||
var columnID = e.element.closest('.kanban-col').data('id');
|
||||
url = createLink('kanban', 'sortCard', 'kanbanID=' + kanbanID + '&laneID=' + laneID + '&columnID=' + columnID + '&cards=' + orders.join(','));
|
||||
}
|
||||
if(!url) return true;
|
||||
|
||||
|
||||
+28
-17
@@ -460,7 +460,7 @@ class kanbanModel extends model
|
||||
$cardID = $this->dao->lastInsertID();
|
||||
$this->file->saveUpload('kanbancard', $cardID);
|
||||
$this->file->updateObjectID($this->post->uid, $cardID, 'kanbancard');
|
||||
$this->addKanbanCell($kanbanID, $this->post->lane, $columnID, 'common', $cardID);
|
||||
$this->addKanbanCell($kanbanID, (int)$this->post->lane, $columnID, 'common', $cardID);
|
||||
|
||||
return $cardID;
|
||||
}
|
||||
@@ -858,27 +858,38 @@ class kanbanModel extends model
|
||||
*/
|
||||
public function getCardGroupByKanban($kanbanID)
|
||||
{
|
||||
$cards = $this->dao->select('t1.*,t2.kanban,t2.lane,t2.column')->from(TABLE_KANBANCARD)->alias('t1')
|
||||
->leftJoin(TABLE_KANBANCELL)->alias('t2')->on('t1.kanban=t2.kanban')
|
||||
/* Get card data.*/
|
||||
$cards = $this->dao->select('*')->from(TABLE_KANBANCARD)->alias('t1')
|
||||
->where('deleted')->eq(0)
|
||||
->andWhere("INSTR(t2.cards, CONCAT(',',t1.id,','))")->gt(0)
|
||||
->andWhere('kanban')->eq($kanbanID)
|
||||
->andWhere('archived')->eq(0)
|
||||
->andWhere('t2.kanban')->eq($kanbanID)
|
||||
->andWhere('t2.type')->eq('common')
|
||||
//->orderBy('`order` asc')
|
||||
->fetchAll('id');
|
||||
|
||||
$actions = array('editCard', 'archiveCard', 'deleteCard', 'moveCard', 'setCardColor', 'viewCard');
|
||||
$cardGroup = array();
|
||||
foreach($cards as $card)
|
||||
{
|
||||
$card->actions = array();
|
||||
foreach($actions as $action)
|
||||
{
|
||||
if(common::hasPriv('kanban', $action)) $card->actions[] = $action;
|
||||
}
|
||||
$cellList = $this->dao->select('*')->from(TABLE_KANBANCELL)
|
||||
->where('kanban')->eq($kanbanID)
|
||||
->andWhere('type')->eq('common')
|
||||
->fetchAll();
|
||||
|
||||
$cardGroup[$card->lane]['column' . $card->column][] = $card;
|
||||
$actions = array('editCard', 'archiveCard', 'deleteCard', 'moveCard', 'setCardColor', 'viewCard', 'sortCard');
|
||||
$cardGroup = array();
|
||||
foreach($cellList as $cell)
|
||||
{
|
||||
$cardIdList = array_filter(explode(',', $cell->cards));
|
||||
|
||||
if(empty($cardIdList)) continue;
|
||||
foreach($cardIdList as $cardID)
|
||||
{
|
||||
if(!isset($cards[$cardID])) continue;
|
||||
|
||||
$card = zget($cards, $cardID);
|
||||
$card->actions = array();
|
||||
foreach($actions as $action)
|
||||
{
|
||||
if(common::hasPriv('kanban', $action)) $card->actions[] = $action;
|
||||
}
|
||||
|
||||
$cardGroup[$cell->lane]['column' . $cell->column][] = $card;
|
||||
}
|
||||
}
|
||||
|
||||
return $cardGroup;
|
||||
|
||||
Reference in New Issue
Block a user