From 996997a12d1b435956a96640eb6cf39045f6ef46 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Tue, 17 May 2016 22:08:57 -0400 Subject: Added the possibility to convert a subtask to a task --- app/Controller/SubtaskConverterController.php | 39 +++++++++++++++++++++++++++ app/Model/Subtask.php | 27 +++++++++++++++++++ app/Template/subtask/menu.php | 6 +++++ app/Template/subtask/remove.php | 13 +++++---- app/Template/subtask_converter/show.php | 20 ++++++++++++++ 5 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 app/Controller/SubtaskConverterController.php create mode 100644 app/Template/subtask_converter/show.php (limited to 'app') diff --git a/app/Controller/SubtaskConverterController.php b/app/Controller/SubtaskConverterController.php new file mode 100644 index 00000000..829b937a --- /dev/null +++ b/app/Controller/SubtaskConverterController.php @@ -0,0 +1,39 @@ +getTask(); + $subtask = $this->getSubtask(); + + $this->response->html($this->template->render('subtask_converter/show', array( + 'subtask' => $subtask, + 'task' => $task, + ))); + } + + public function save() + { + $project = $this->getProject(); + $subtask = $this->getSubtask(); + + $task_id = $this->subtask->convertToTask($project['id'], $subtask['id']); + + if ($task_id !== false) { + $this->flash->success(t('Subtask converted to task successfully.')); + } else { + $this->flash->failure(t('Unable to convert the subtask.')); + } + + $this->response->redirect($this->helper->url->to('task', 'show', array('project_id' => $project['id'], 'task_id' => $task_id)), true); + } +} diff --git a/app/Model/Subtask.php b/app/Model/Subtask.php index 3f5cfe83..e56796a0 100644 --- a/app/Model/Subtask.php +++ b/app/Model/Subtask.php @@ -397,4 +397,31 @@ class Subtask extends Base } }); } + + /** + * Convert a subtask to a task + * + * @access public + * @param integer $project_id + * @param integer $subtask_id + * @return integer + */ + public function convertToTask($project_id, $subtask_id) + { + $subtask = $this->getById($subtask_id); + + $task_id = $this->taskCreation->create(array( + 'project_id' => $project_id, + 'title' => $subtask['title'], + 'time_estimated' => $subtask['time_estimated'], + 'time_spent' => $subtask['time_spent'], + 'owner_id' => $subtask['user_id'], + )); + + if ($task_id !== false) { + $this->remove($subtask_id); + } + + return $task_id; + } } diff --git a/app/Template/subtask/menu.php b/app/Template/subtask/menu.php index 6c98b951..aa7b9a53 100644 --- a/app/Template/subtask/menu.php +++ b/app/Template/subtask/menu.php @@ -2,10 +2,16 @@ diff --git a/app/Template/subtask/remove.php b/app/Template/subtask/remove.php index 374256fd..7ea43555 100644 --- a/app/Template/subtask/remove.php +++ b/app/Template/subtask/remove.php @@ -3,15 +3,18 @@
-

+

-

- -

text->e($subtask['title']) ?>

+
    +
  • + text->e($subtask['title']) ?> +
  • +
+
url->link(t('Yes'), 'subtask', 'remove', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'subtask_id' => $subtask['id']), true, 'btn btn-red') ?> url->link(t('cancel'), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'close-popover') ?>
-
\ No newline at end of file + diff --git a/app/Template/subtask_converter/show.php b/app/Template/subtask_converter/show.php new file mode 100644 index 00000000..af8af49e --- /dev/null +++ b/app/Template/subtask_converter/show.php @@ -0,0 +1,20 @@ + + +
+
+ +
    +
  • + text->e($subtask['title']) ?> +
  • +
+
+ +
+ url->link(t('Yes'), 'SubtaskConverterController', 'save', array('task_id' => $task['id'], 'project_id' => $task['project_id'], 'subtask_id' => $subtask['id']), true, 'btn btn-red') ?> + + url->link(t('cancel'), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'close-popover') ?> +
+
-- cgit v1.2.3