Add subtasks

This commit is contained in:
Frédéric Guillot
2014-05-25 15:02:27 -04:00
parent 9ddeb5d978
commit f9753e91d2
22 changed files with 708 additions and 19 deletions

View File

@@ -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
*/

185
app/Controller/Subtask.php Normal file
View File

@@ -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');
}
}

View File

@@ -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(),