* Finish task #47973.
This commit is contained in:
@@ -466,7 +466,7 @@ class kanban extends control
|
||||
* @param int $regionID
|
||||
* @param string $lanes
|
||||
* @access public
|
||||
* @return void
|
||||
* @return array
|
||||
*/
|
||||
public function sortLane($regionID, $lanes = '')
|
||||
{
|
||||
@@ -483,6 +483,29 @@ class kanban extends control
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort columns.
|
||||
*
|
||||
* @param int $regionID
|
||||
* @param int $kanbanID
|
||||
* @param string $columns
|
||||
* @access public
|
||||
* @return array|string
|
||||
*/
|
||||
public function sortColumn($regionID, $kanbanID, $columns = '')
|
||||
{
|
||||
if(empty($columns)) return;
|
||||
$columns = explode(',', trim($columns, ','));
|
||||
|
||||
$order = 1;
|
||||
foreach($columns as $columnID) $this->dao->update(TABLE_KANBANCOLUMN)->set('`order`')->eq($order++)->where('id')->eq($columnID)->andWhere('region')->eq($regionID)->exec();
|
||||
|
||||
$kanbanGroup = $this->kanban->getKanbanData($kanbanID);
|
||||
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return print(json_encode($kanbanGroup));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set lane height.
|
||||
*
|
||||
|
||||
@@ -111,7 +111,7 @@ function renderHeaderCol($column, column, $header, kanbanData)
|
||||
{
|
||||
/* Render group header. */
|
||||
var privs = kanbanData.actions;
|
||||
var columnPrivs = kanbanData.columns[0].actions;
|
||||
var columnPrivs = $column.data().col.actions;
|
||||
|
||||
if(privs.includes('sortGroup'))
|
||||
{
|
||||
@@ -151,6 +151,16 @@ function renderHeaderCol($column, column, $header, kanbanData)
|
||||
$actions.html(addItemBtn + moreAction);
|
||||
|
||||
}
|
||||
if(columnPrivs.includes('sortColumn')){
|
||||
if($column.hasClass('kanban-header-parent-col'))
|
||||
{
|
||||
$column.children('.kanban-header-col').addClass('sort');
|
||||
}
|
||||
else
|
||||
{
|
||||
$column.addClass('sort');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1017,8 +1027,8 @@ $(function()
|
||||
var $cards = null;
|
||||
$('#kanban').sortable(
|
||||
{
|
||||
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',
|
||||
selector: '.region, .kanban-board, .kanban-lane, .kanban-item.sort, .kanban-col',
|
||||
trigger: '.region.sort > .region-header, .kanban-board.sort > .kanban-header > .kanban-group-header, .kanban-lane.sort > .kanban-lane-name, .kanban-item.sort, .kanban-col.sort',
|
||||
container: function($ele)
|
||||
{
|
||||
return $ele.parent();
|
||||
@@ -1048,6 +1058,13 @@ $(function()
|
||||
return $ele.parent().children('.kanban-lane');
|
||||
}
|
||||
|
||||
/* Sort columns. */
|
||||
if($ele.hasClass('kanban-col'))
|
||||
{
|
||||
sortType = 'column';
|
||||
return $ele.parent().children('.kanban-col');
|
||||
}
|
||||
|
||||
/* Sort cards. */
|
||||
if($ele.hasClass('kanban-item'))
|
||||
{
|
||||
@@ -1078,8 +1095,9 @@ $(function()
|
||||
},
|
||||
finish: function(e)
|
||||
{
|
||||
var url = '';
|
||||
var orders = [];
|
||||
var url = '';
|
||||
var orders = [];
|
||||
var regionID = '';
|
||||
e.list.each(function(index, data)
|
||||
{
|
||||
orders.push(data.item.data('id'));
|
||||
@@ -1100,13 +1118,18 @@ $(function()
|
||||
}
|
||||
if(sortType == 'board')
|
||||
{
|
||||
var region = e.element.parent().data('id');
|
||||
url = createLink('kanban', 'sortGroup', 'region=' + region + '&groups=' + orders.join(','));
|
||||
regionID = e.element.closest('.region').data('id');
|
||||
url = createLink('kanban', 'sortGroup', 'region=' + regionID + '&groups=' + orders.join(','));
|
||||
}
|
||||
if(sortType == 'lane')
|
||||
{
|
||||
var region = e.element.parent().parent().data('id');
|
||||
url = createLink('kanban', 'sortLane', 'region=' + region + '&lanes=' + orders.join(','));
|
||||
regionID = e.element.closest('.region').data('id');
|
||||
url = createLink('kanban', 'sortLane', 'region=' + regionID + '&lanes=' + orders.join(','));
|
||||
}
|
||||
if(sortType == 'column')
|
||||
{
|
||||
regionID = e.element.closest('.region').data('id');
|
||||
url = createLink('kanban', 'sortColumn', 'region=' + regionID + '&kanbanID=' + kanban.id + '&columns=' + orders.join(','));
|
||||
}
|
||||
if(sortType == 'card')
|
||||
{
|
||||
@@ -1123,6 +1146,10 @@ $(function()
|
||||
bootbox.alert(response.message);
|
||||
setTimeout(function(){return location.reload()}, 3000);
|
||||
}
|
||||
else if (sortType == 'column')
|
||||
{
|
||||
updateRegion(regionID, response[regionID]);
|
||||
}
|
||||
});
|
||||
},
|
||||
always: function(e)
|
||||
|
||||
@@ -879,7 +879,7 @@ class kanbanModel extends model
|
||||
->orderBy($order)
|
||||
->fetchGroup('group');
|
||||
|
||||
$actions = array('createColumn', 'setColumn', 'setWIP', 'archiveColumn', 'restoreColumn', 'deleteColumn', 'createCard', 'batchCreateCard', 'splitColumn');
|
||||
$actions = array('createColumn', 'setColumn', 'setWIP', 'archiveColumn', 'restoreColumn', 'deleteColumn', 'createCard', 'batchCreateCard', 'splitColumn', 'sortColumn');
|
||||
|
||||
/* Group by parent. */
|
||||
$parentColumnGroup = array();
|
||||
@@ -3168,6 +3168,8 @@ class kanbanModel extends model
|
||||
->fetch('count');
|
||||
|
||||
return $count > 1;
|
||||
case 'sortColumn' :
|
||||
if($object->deleted != '0') return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user