From 08bdb708e7698c21b0e6fc9f21d19996fc3d593d Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sun, 28 Aug 2016 22:30:48 -0400 Subject: Add the possibility to move tasks without drag and drop --- app/Controller/TaskMovePositionController.php | 43 +++++++++++++++++++++++++++ app/Formatter/BoardColumnFormatter.php | 1 + app/Formatter/BoardSwimlaneFormatter.php | 1 + app/Template/task/sidebar.php | 16 ++++++---- app/Template/task_move_position/show.php | 43 +++++++++++++++++++++++++++ 5 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 app/Controller/TaskMovePositionController.php create mode 100644 app/Template/task_move_position/show.php (limited to 'app') diff --git a/app/Controller/TaskMovePositionController.php b/app/Controller/TaskMovePositionController.php new file mode 100644 index 00000000..0db742c3 --- /dev/null +++ b/app/Controller/TaskMovePositionController.php @@ -0,0 +1,43 @@ +getTask(); + + $this->response->html($this->template->render('task_move_position/show', array( + 'task' => $task, + 'board' => BoardFormatter::getInstance($this->container) + ->withProjectId($task['project_id']) + ->withQuery($this->taskFinderModel->getExtendedQuery()) + ->format() + ))); + } + + public function save() + { + $task = $this->getTask(); + $values = $this->request->getJson(); + + $result = $this->taskPositionModel->movePosition( + $task['project_id'], + $task['id'], + $values['column_id'], + $values['position'], + $values['swimlane_id'] + ); + + $this->response->json(array('result' => $result)); + } +} diff --git a/app/Formatter/BoardColumnFormatter.php b/app/Formatter/BoardColumnFormatter.php index d49a577a..85d31b5c 100644 --- a/app/Formatter/BoardColumnFormatter.php +++ b/app/Formatter/BoardColumnFormatter.php @@ -78,6 +78,7 @@ class BoardColumnFormatter extends BaseFormatter implements FormatterInterface public function format() { foreach ($this->columns as &$column) { + $column['id'] = (int) $column['id']; $column['tasks'] = BoardTaskFormatter::getInstance($this->container) ->withTasks($this->tasks) ->withTags($this->tags) diff --git a/app/Formatter/BoardSwimlaneFormatter.php b/app/Formatter/BoardSwimlaneFormatter.php index c2abb444..9b2ad935 100644 --- a/app/Formatter/BoardSwimlaneFormatter.php +++ b/app/Formatter/BoardSwimlaneFormatter.php @@ -81,6 +81,7 @@ class BoardSwimlaneFormatter extends BaseFormatter implements FormatterInterface $nb_columns = count($this->columns); foreach ($this->swimlanes as &$swimlane) { + $swimlane['id'] = (int) $swimlane['id']; $swimlane['columns'] = BoardColumnFormatter::getInstance($this->container) ->withSwimlaneId($swimlane['id']) ->withColumns($this->columns) diff --git a/app/Template/task/sidebar.php b/app/Template/task/sidebar.php index 728741ba..de0750ff 100644 --- a/app/Template/task/sidebar.php +++ b/app/Template/task/sidebar.php @@ -78,15 +78,21 @@ url->link(t('Move to another project'), 'TaskDuplicationController', 'move', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> -
  • - + +
  • + + url->link(t('Move position'), 'TaskMovePositionController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> +
  • +
  • url->link(t('Close this task'), 'TaskStatusController', 'close', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> - +
  • + +
  • url->link(t('Open this task'), 'TaskStatusController', 'open', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?> - -
  • + + user->canRemoveTask($task)): ?>
  • diff --git a/app/Template/task_move_position/show.php b/app/Template/task_move_position/show.php new file mode 100644 index 00000000..29e1bcb1 --- /dev/null +++ b/app/Template/task_move_position/show.php @@ -0,0 +1,43 @@ + + + + + -- cgit v1.2.3