summaryrefslogtreecommitdiff
path: root/app/Controller
diff options
context:
space:
mode:
authorFrédéric Guillot <fred@kanboard.net>2018-06-01 15:58:17 -0700
committerFrédéric Guillot <fred@kanboard.net>2018-06-01 15:58:17 -0700
commit912cf378d730b3df8d285ba765711d9c456bdea0 (patch)
treecc26710f2e1e4e9eb958b873a2fb537cf3a389cb /app/Controller
parentcd6da138973f6bfe7c71846ff6cc1d6fb97c4813 (diff)
Add checkboxes in list view to move tasks to another column at once
Diffstat (limited to 'app/Controller')
-rw-r--r--app/Controller/TaskBulkMoveColumnController.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/app/Controller/TaskBulkMoveColumnController.php b/app/Controller/TaskBulkMoveColumnController.php
new file mode 100644
index 00000000..f3607df6
--- /dev/null
+++ b/app/Controller/TaskBulkMoveColumnController.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Kanboard\Controller;
+
+use Kanboard\Core\Controller\AccessForbiddenException;
+
+class TaskBulkMoveColumnController extends BaseController
+{
+ public function show(array $values = [], array $errors = [])
+ {
+ $project = $this->getProject();
+
+ if (empty($values)) {
+ $values['task_ids'] = $this->request->getStringParam('task_ids');
+ }
+
+ $this->response->html($this->template->render('task_bulk_move_column/show', [
+ 'project' => $project,
+ 'values' => $values,
+ 'errors' => $errors,
+ 'columns' => $this->columnModel->getList($project['id']),
+ 'swimlanes' => $this->swimlaneModel->getList($project['id'], false, true),
+ ]));
+ }
+
+ public function save()
+ {
+ $project = $this->getProject();
+ $values = $this->request->getValues();
+ $taskIDs = explode(',', $values['task_ids']);
+
+ foreach ($taskIDs as $taskID) {
+ $task = $this->taskFinderModel->getById($taskID);
+
+ if (! $this->helper->projectRole->canMoveTask($task['project_id'], $task['column_id'], $values['column_id'])) {
+ throw new AccessForbiddenException(e('You are not allowed to move this task.'));
+ }
+
+ $this->taskPositionModel->moveBottom($project['id'], $taskID, $values['swimlane_id'], $values['column_id']);
+ }
+
+ $this->response->redirect($this->helper->url->to('TaskListController', 'show', ['project_id' => $project['id']]), true);
+ }
+}