Add new actions to reorder tasks by column
This commit is contained in:
parent
ba5878e786
commit
0295388461
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
namespace Kanboard\Controller;
|
||||
|
||||
use Kanboard\Core\Controller\AccessForbiddenException;
|
||||
|
||||
class TaskReorderController extends BaseController
|
||||
{
|
||||
public function reorderColumn()
|
||||
{
|
||||
$project = $this->getProject();
|
||||
|
||||
if (! $this->helper->user->hasProjectAccess('TaskModificationController', 'update', $project['id'])) {
|
||||
throw new AccessForbiddenException();
|
||||
}
|
||||
|
||||
$swimlaneID = $this->request->getIntegerParam('swimlane_id');
|
||||
$columnID = $this->request->getIntegerParam('column_id');
|
||||
$direction = $this->request->getStringParam('direction');
|
||||
$sort = $this->request->getStringParam('sort');
|
||||
|
||||
switch ($sort) {
|
||||
case 'priority':
|
||||
$this->taskReorderModel->reorderByPriority($project['id'], $swimlaneID, $columnID, $direction);
|
||||
break;
|
||||
case 'assignee-priority':
|
||||
$this->taskReorderModel->reorderByAssigneeAndPriority($project['id'], $swimlaneID, $columnID, $direction);
|
||||
break;
|
||||
case 'assignee':
|
||||
$this->taskReorderModel->reorderByAssignee($project['id'], $swimlaneID, $columnID, $direction);
|
||||
break;
|
||||
}
|
||||
|
||||
$this->response->redirect($this->helper->url->to('BoardViewController', 'show', ['project_id' => $project['id']]));
|
||||
}
|
||||
}
|
||||
|
|
@ -142,6 +142,7 @@ use Pimple\Container;
|
|||
* @property \Kanboard\Model\TaskLinkModel $taskLinkModel
|
||||
* @property \Kanboard\Model\TaskModificationModel $taskModificationModel
|
||||
* @property \Kanboard\Model\TaskPositionModel $taskPositionModel
|
||||
* @property \Kanboard\Model\TaskReorderModel $taskReorderModel
|
||||
* @property \Kanboard\Model\TaskStatusModel $taskStatusModel
|
||||
* @property \Kanboard\Model\TaskTagModel $taskTagModel
|
||||
* @property \Kanboard\Model\TaskMetadataModel $taskMetadataModel
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
'Destination swimlane' => 'Mål spor',
|
||||
'Assign a category when the task is moved to a specific swimlane' => 'Tildele kategori når opgave flyttes til anført spor',
|
||||
'Move the task to another swimlane when the category is changed' => 'Flytte opgave til andet spor når kategori ændres',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
'Destination swimlane' => 'Swimlane de destination',
|
||||
'Assign a category when the task is moved to a specific swimlane' => 'Assigner une catégorie lorsque la tâche est déplaçée dans une swimlane spécifique',
|
||||
'Move the task to another swimlane when the category is changed' => 'Déplaçer la tâche dans une autre swimlane lorsque la catégorie est modifiée',
|
||||
'Reorder this column by priority (ASC)' => 'Réorganiser cette colonne par priorité (ASC)',
|
||||
'Reorder this column by priority (DESC)' => 'Réorganiser cette colonne par priorité (DESC)',
|
||||
'Reorder this column by assignee and priority (ASC)' => 'Réorganiser cette colonne par assigné et par priorité (ASC)',
|
||||
'Reorder this column by assignee and priority (DESC)' => 'Réorganiser cette colonne par assigné et par priorité (DESC)',
|
||||
'Reorder this column by assignee (A-Z)' => 'Réorganiser cette colonne par assigné (A-Z)',
|
||||
'Reorder this column by assignee (Z-A)' => 'Réorganiser cette colonne par assigné (Z-A)',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
'Destination swimlane' => 'Raia de destino',
|
||||
'Assign a category when the task is moved to a specific swimlane' => 'Atribuir uma categoria quando a tarefa for movida para uma raia específica',
|
||||
'Move the task to another swimlane when the category is changed' => 'Mover a tarefa para outra raia quando a categoria é alterada',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
'Destination swimlane' => '目标泳道',
|
||||
'Assign a category when the task is moved to a specific swimlane' => '将移动到指定泳道的任务设定分类',
|
||||
'Move the task to another swimlane when the category is changed' => '当分类改变时将任务移动到另一个泳道',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1392,4 +1392,10 @@ return array(
|
|||
// 'Destination swimlane' => '',
|
||||
// 'Assign a category when the task is moved to a specific swimlane' => '',
|
||||
// 'Move the task to another swimlane when the category is changed' => '',
|
||||
// 'Reorder this column by priority (ASC)' => '',
|
||||
// 'Reorder this column by priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee and priority (ASC)' => '',
|
||||
// 'Reorder this column by assignee and priority (DESC)' => '',
|
||||
// 'Reorder this column by assignee (A-Z)' => '',
|
||||
// 'Reorder this column by assignee (Z-A)' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
|
||||
namespace Kanboard\Model;
|
||||
|
||||
use Kanboard\Core\Base;
|
||||
|
||||
class TaskReorderModel extends Base
|
||||
{
|
||||
public function reorderByPriority($projectID, $swimlaneID, $columnID, $direction)
|
||||
{
|
||||
$this->db->startTransaction();
|
||||
|
||||
$taskIDs = $this->db->table(TaskModel::TABLE)
|
||||
->eq('project_id', $projectID)
|
||||
->eq('swimlane_id', $swimlaneID)
|
||||
->eq('column_id', $columnID)
|
||||
->orderBy('priority', $direction)
|
||||
->asc('id')
|
||||
->findAllByColumn('id');
|
||||
|
||||
$this->reorderTasks($taskIDs);
|
||||
|
||||
$this->db->closeTransaction();
|
||||
}
|
||||
|
||||
public function reorderByAssigneeAndPriority($projectID, $swimlaneID, $columnID, $direction)
|
||||
{
|
||||
$this->db->startTransaction();
|
||||
|
||||
$taskIDs = $this->db->table(TaskModel::TABLE)
|
||||
->eq('tasks.project_id', $projectID)
|
||||
->eq('tasks.swimlane_id', $swimlaneID)
|
||||
->eq('tasks.column_id', $columnID)
|
||||
->asc('u.name')
|
||||
->asc('u.username')
|
||||
->orderBy('tasks.priority', $direction)
|
||||
->left(UserModel::TABLE, 'u', 'id', TaskModel::TABLE, 'owner_id')
|
||||
->findAllByColumn('tasks.id');
|
||||
|
||||
$this->reorderTasks($taskIDs);
|
||||
|
||||
$this->db->closeTransaction();
|
||||
}
|
||||
|
||||
public function reorderByAssignee($projectID, $swimlaneID, $columnID, $direction)
|
||||
{
|
||||
$this->db->startTransaction();
|
||||
|
||||
$taskIDs = $this->db->table(TaskModel::TABLE)
|
||||
->eq('tasks.project_id', $projectID)
|
||||
->eq('tasks.swimlane_id', $swimlaneID)
|
||||
->eq('tasks.column_id', $columnID)
|
||||
->orderBy('u.name', $direction)
|
||||
->orderBy('u.username', $direction)
|
||||
->orderBy('u.id', $direction)
|
||||
->left(UserModel::TABLE, 'u', 'id', TaskModel::TABLE, 'owner_id')
|
||||
->findAllByColumn('tasks.id');
|
||||
|
||||
$this->reorderTasks($taskIDs);
|
||||
|
||||
$this->db->closeTransaction();
|
||||
}
|
||||
|
||||
protected function reorderTasks(array $taskIDs)
|
||||
{
|
||||
$i = 1;
|
||||
foreach ($taskIDs as $taskID) {
|
||||
$this->db->table(TaskModel::TABLE)
|
||||
->eq('id', $taskID)
|
||||
->update(['position' => $i]);
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -85,6 +85,7 @@ class ClassProvider implements ServiceProviderInterface
|
|||
'TaskLinkModel',
|
||||
'TaskModificationModel',
|
||||
'TaskPositionModel',
|
||||
'TaskReorderModel',
|
||||
'TaskStatusModel',
|
||||
'TaskTagModel',
|
||||
'TaskMetadataModel',
|
||||
|
|
|
|||
|
|
@ -48,6 +48,27 @@
|
|||
</li>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if ($column['nb_tasks'] > 0 && $this->user->hasProjectAccess('TaskModificationController', 'update', $column['project_id'])): ?>
|
||||
<li>
|
||||
<?= $this->url->icon('sort-numeric-asc', t('Reorder this column by priority (ASC)'), 'TaskReorderController', 'reorderColumn', ['sort' => 'priority', 'direction' => 'asc', 'project_id' => $column['project_id'], 'column_id' => $column['id'], 'swimlane_id' => $swimlane['id']]) ?>
|
||||
</li>
|
||||
<li>
|
||||
<?= $this->url->icon('sort-numeric-desc', t('Reorder this column by priority (DESC)'), 'TaskReorderController', 'reorderColumn', ['sort' => 'priority', 'direction' => 'desc', 'project_id' => $column['project_id'], 'column_id' => $column['id'], 'swimlane_id' => $swimlane['id']]) ?>
|
||||
</li>
|
||||
<li>
|
||||
<?= $this->url->icon('sort-amount-asc', t('Reorder this column by assignee and priority (ASC)'), 'TaskReorderController', 'reorderColumn', ['sort' => 'assignee-priority', 'direction' => 'asc', 'project_id' => $column['project_id'], 'column_id' => $column['id'], 'swimlane_id' => $swimlane['id']]) ?>
|
||||
</li>
|
||||
<li>
|
||||
<?= $this->url->icon('sort-amount-desc', t('Reorder this column by assignee and priority (DESC)'), 'TaskReorderController', 'reorderColumn', ['sort' => 'assignee-priority', 'direction' => 'desc', 'project_id' => $column['project_id'], 'column_id' => $column['id'], 'swimlane_id' => $swimlane['id']]) ?>
|
||||
</li>
|
||||
<li>
|
||||
<?= $this->url->icon('sort-alpha-asc', t('Reorder this column by assignee (A-Z)'), 'TaskReorderController', 'reorderColumn', ['sort' => 'assignee', 'direction' => 'asc', 'project_id' => $column['project_id'], 'column_id' => $column['id'], 'swimlane_id' => $swimlane['id']]) ?>
|
||||
</li>
|
||||
<li>
|
||||
<?= $this->url->icon('sort-alpha-desc', t('Reorder this column by assignee (Z-A)'), 'TaskReorderController', 'reorderColumn', ['sort' => 'assignee', 'direction' => 'desc', 'project_id' => $column['project_id'], 'column_id' => $column['id'], 'swimlane_id' => $swimlane['id']]) ?>
|
||||
</li>
|
||||
<?php endif ?>
|
||||
|
||||
<?= $this->hook->render('template:board:column:dropdown', array('swimlane' => $swimlane, 'column' => $column)) ?>
|
||||
</ul>
|
||||
</span>
|
||||
|
|
@ -81,7 +102,7 @@
|
|||
<?php endif ?>
|
||||
</span>
|
||||
<?php endif ?>
|
||||
<?= $this->hook->render('template:board:column:header', array('swimlane' => $swimlane, 'column' => $column)) ?>
|
||||
<?= $this->hook->render('template:board:column:header', array('swimlane' => $swimlane, 'column' => $column)) ?>
|
||||
</div>
|
||||
|
||||
</th>
|
||||
|
|
|
|||
Loading…
Reference in New Issue