summaryrefslogtreecommitdiff
path: root/app/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'app/Controller')
-rw-r--r--app/Controller/Base.php1
-rw-r--r--app/Controller/Subtask.php185
-rw-r--r--app/Controller/Task.php1
3 files changed, 187 insertions, 0 deletions
diff --git a/app/Controller/Base.php b/app/Controller/Base.php
index b21d9b8f..5829fc36 100644
--- a/app/Controller/Base.php
+++ b/app/Controller/Base.php
@@ -23,6 +23,7 @@ use Model\LastLogin;
* @property \Model\Ldap $ldap
* @property \Model\Project $project
* @property \Model\RememberMe $rememberMe
+ * @property \Model\SubTask $subTask
* @property \Model\Task $task
* @property \Model\User $user
*/
diff --git a/app/Controller/Subtask.php b/app/Controller/Subtask.php
new file mode 100644
index 00000000..5ef193c8
--- /dev/null
+++ b/app/Controller/Subtask.php
@@ -0,0 +1,185 @@
+<?php
+
+namespace Controller;
+
+/**
+ * SubTask controller
+ *
+ * @package controller
+ * @author Frederic Guillot
+ */
+class Subtask extends Base
+{
+ /**
+ * Get the current subtask
+ *
+ * @access private
+ * @return array
+ */
+ private function getSubtask()
+ {
+ $subtask = $this->subTask->getById($this->request->getIntegerParam('subtask_id'));
+
+ if (! $subtask) {
+ $this->notfound();
+ }
+
+ return $subtask;
+ }
+
+ /**
+ * Creation form
+ *
+ * @access public
+ */
+ public function create()
+ {
+ $task = $this->getTask();
+
+ $this->response->html($this->taskLayout('subtask_create', array(
+ 'values' => array(
+ 'task_id' => $task['id'],
+ ),
+ 'errors' => array(),
+ 'users_list' => $this->project->getUsersList($task['project_id']),
+ 'task' => $task,
+ 'menu' => 'tasks',
+ 'title' => t('Add a sub-task')
+ )));
+ }
+
+ /**
+ * Validation and creation
+ *
+ * @access public
+ */
+ public function save()
+ {
+ $task = $this->getTask();
+ $values = $this->request->getValues();
+
+ list($valid, $errors) = $this->subTask->validate($values);
+
+ if ($valid) {
+
+ if ($this->subTask->create($values)) {
+ $this->session->flash(t('Sub-task added successfully.'));
+ }
+ else {
+ $this->session->flashError(t('Unable to create your sub-task.'));
+ }
+
+ if (isset($values['another_subtask']) && $values['another_subtask'] == 1) {
+ $this->response->redirect('?controller=subtask&action=create&task_id='.$task['id']);
+ }
+
+ $this->response->redirect('?controller=task&action=show&task_id='.$task['id'].'#subtasks');
+ }
+
+ $this->response->html($this->taskLayout('subtask_create', array(
+ 'values' => $values,
+ 'errors' => $errors,
+ 'users_list' => $this->project->getUsersList($task['project_id']),
+ 'task' => $task,
+ 'menu' => 'tasks',
+ 'title' => t('Add a sub-task')
+ )));
+ }
+
+ /**
+ * Edit form
+ *
+ * @access public
+ */
+ public function edit()
+ {
+ $task = $this->getTask();
+ $subtask = $this->getSubTask();
+
+ $this->response->html($this->taskLayout('subtask_edit', array(
+ 'values' => $subtask,
+ 'errors' => array(),
+ 'users_list' => $this->project->getUsersList($task['project_id']),
+ 'status_list' => $this->subTask->getStatusList(),
+ 'subtask' => $subtask,
+ 'task' => $task,
+ 'menu' => 'tasks',
+ 'title' => t('Edit a sub-task')
+ )));
+ }
+
+ /**
+ * Update and validate a subtask
+ *
+ * @access public
+ */
+ public function update()
+ {
+ $task = $this->getTask();
+ $subtask = $this->getSubtask();
+
+ $values = $this->request->getValues();
+ list($valid, $errors) = $this->subTask->validate($values);
+
+ if ($valid) {
+
+ if ($this->subTask->update($values)) {
+ $this->session->flash(t('Sub-task updated successfully.'));
+ }
+ else {
+ $this->session->flashError(t('Unable to update your sub-task.'));
+ }
+
+ $this->response->redirect('?controller=task&action=show&task_id='.$task['id'].'#subtasks');
+ }
+
+ $this->response->html($this->taskLayout('subtask_edit', array(
+ 'values' => $values,
+ 'errors' => $errors,
+ 'users_list' => $this->project->getUsersList($task['project_id']),
+ 'status_list' => $this->subTask->getStatusList(),
+ 'subtask' => $subtask,
+ 'task' => $task,
+ 'menu' => 'tasks',
+ 'title' => t('Edit a sub-task')
+ )));
+ }
+
+ /**
+ * Confirmation dialog before removing a subtask
+ *
+ * @access public
+ */
+ public function confirm()
+ {
+ $task = $this->getTask();
+ $subtask = $this->getSubtask();
+
+ $this->response->html($this->taskLayout('subtask_remove', array(
+ 'subtask' => $subtask,
+ 'task' => $task,
+ 'menu' => 'tasks',
+ 'title' => t('Remove a sub-task')
+ )));
+ }
+
+ /**
+ * Remove a subtask
+ *
+ * @access public
+ */
+ public function remove()
+ {
+ $task = $this->getTask();
+ $subtask = $this->getSubtask();
+
+ if ($this->subTask->remove($subtask['id'])) {
+ $this->session->flash(t('Sub-task removed successfully.'));
+ }
+ else {
+ $this->session->flashError(t('Unable to remove this sub-task.'));
+ }
+
+ $this->response->redirect('?controller=task&action=show&task_id='.$task['id'].'#subtasks');
+ }
+}
diff --git a/app/Controller/Task.php b/app/Controller/Task.php
index 8230eef3..68e3728a 100644
--- a/app/Controller/Task.php
+++ b/app/Controller/Task.php
@@ -62,6 +62,7 @@ class Task extends Base
$this->response->html($this->taskLayout('task_show', array(
'files' => $this->file->getAll($task['id']),
'comments' => $this->comment->getAll($task['id']),
+ 'subtasks' => $this->subTask->getAll($task['id']),
'task' => $task,
'columns_list' => $this->board->getColumnsList($task['project_id']),
'colors_list' => $this->task->getColors(),