diff options
-rw-r--r-- | controllers/task.php | 85 | ||||
-rw-r--r-- | locales/fr_FR/translations.php | 4 | ||||
-rw-r--r-- | locales/pl_PL/translations.php | 3 | ||||
-rw-r--r-- | models/acl.php | 2 | ||||
-rw-r--r-- | models/task.php | 14 | ||||
-rw-r--r-- | templates/task_show.php | 19 |
6 files changed, 105 insertions, 22 deletions
diff --git a/controllers/task.php b/controllers/task.php index a895d6b2..89e1ee6c 100644 --- a/controllers/task.php +++ b/controllers/task.php @@ -39,18 +39,34 @@ class Task extends Base $this->response->text('FAILED'); } - // Show a task - public function show() + // Display the template show task, common between different task view + private function showTask(array $task, array $comment_form = array(), array $description_form = array()) { - $task = $this->task->getById($this->request->getIntegerParam('task_id'), true); + if (empty($comment_form)) { + + $comment_form = array( + 'values' => array( + 'task_id' => $task['id'], + 'user_id' => $this->acl->getUserId() + ), + 'errors' => array() + ); + } - if (! $task) $this->notfound(); - $this->checkProjectPermissions($task['project_id']); + if (empty($description_form)) { + + $description_form = array( + 'values' => array( + 'id' => $task['id'], + ), + 'errors' => array() + ); + } $this->response->html($this->template->layout('task_show', array( + 'comment_form' => $comment_form, + 'description_form' => $description_form, 'comments' => $this->comment->getAll($task['id']), - 'comment_errors' => array(), - 'comment_values' => array('task_id' => $task['id'], 'user_id' => $this->acl->getUserId()), 'task' => $task, 'columns_list' => $this->board->getColumnsList($task['project_id']), 'colors_list' => $this->task->getColors(), @@ -59,6 +75,17 @@ class Task extends Base ))); } + // Show a task + public function show() + { + $task = $this->task->getById($this->request->getIntegerParam('task_id'), true); + + if (! $task) $this->notfound(); + $this->checkProjectPermissions($task['project_id']); + + $this->showTask($task); + } + // Add a comment public function comment() { @@ -82,16 +109,40 @@ class Task extends Base $this->response->redirect('?controller=task&action=show&task_id='.$task['id']); } - $this->response->html($this->template->layout('task_show', array( - 'comments' => $this->comment->getAll($task['id']), - 'comment_errors' => $errors, - 'comment_values' => $values, - 'task' => $task, - 'columns_list' => $this->board->getColumnsList($task['project_id']), - 'colors_list' => $this->task->getColors(), - 'menu' => 'tasks', - 'title' => $task['title'], - ))); + $this->showTask( + $task, + array('values' => $values, 'errors' => $errors) + ); + } + + // Add a description from the show task page + public function description() + { + $task = $this->task->getById($this->request->getIntegerParam('task_id'), true); + $values = $this->request->getValues(); + + if (! $task) $this->notfound(); + $this->checkProjectPermissions($task['project_id']); + + list($valid, $errors) = $this->task->validateDescriptionCreation($values); + + if ($valid) { + + if ($this->task->update($values)) { + $this->session->flash(t('Task updated successfully.')); + } + else { + $this->session->flashError(t('Unable to update your task.')); + } + + $this->response->redirect('?controller=task&action=show&task_id='.$task['id']); + } + + $this->showTask( + $task, + array(), + array('values' => $values, 'errors' => $errors) + ); } // Display a form to create a new task diff --git a/locales/fr_FR/translations.php b/locales/fr_FR/translations.php index 7cf8bfe1..2429e067 100644 --- a/locales/fr_FR/translations.php +++ b/locales/fr_FR/translations.php @@ -207,4 +207,8 @@ return array( 'Write your text in Markdown' => 'Écrivez votre texte en Markdown', 'Leave a comment' => 'Laissez un commentaire', 'Comment is required' => 'Le commentaire est obligatoire', + 'Leave a description' => 'Laissez une description', + 'Comment added successfully.' => 'Commentaire ajouté avec succès.', + 'Unable to create your comment.' => 'Impossible de sauvegarder votre commentaire.', + 'The description is required' => 'La description est obligatoire', ); diff --git a/locales/pl_PL/translations.php b/locales/pl_PL/translations.php index a076ee9e..b7adfc45 100644 --- a/locales/pl_PL/translations.php +++ b/locales/pl_PL/translations.php @@ -211,4 +211,7 @@ return array( //'Write your text in Markdown' => '', //'Leave a comment' => '', //'Comment is required' => '', + //'Comment added successfully.' => '', + //'Unable to create your comment.' => '', + //'The description is required' => '', ); diff --git a/models/acl.php b/models/acl.php index 468022cb..767d62f8 100644 --- a/models/acl.php +++ b/models/acl.php @@ -16,7 +16,7 @@ class Acl extends Base 'app' => array('index'), 'board' => array('index', 'show', 'assign', 'assigntask', 'save'), 'project' => array('tasks', 'index', 'forbidden'), - 'task' => array('show', 'create', 'save', 'edit', 'update', 'close', 'confirmclose', 'open', 'confirmopen', 'comment'), + 'task' => array('show', 'create', 'save', 'edit', 'update', 'close', 'confirmclose', 'open', 'confirmopen', 'comment', 'description'), 'user' => array('index', 'edit', 'update', 'forbidden', 'logout', 'index'), 'config' => array('index'), ); diff --git a/models/task.php b/models/task.php index e542e8e0..77c620c8 100644 --- a/models/task.php +++ b/models/task.php @@ -192,6 +192,20 @@ class Task extends Base ); } + public function validateDescriptionCreation(array $values) + { + $v = new Validator($values, array( + new Validators\Required('id', t('The id is required')), + new Validators\Integer('id', t('This value must be an integer')), + new Validators\Required('description', t('The description is required')), + )); + + return array( + $v->execute(), + $v->getErrors() + ); + } + public function validateModification(array $values) { $v = new Validator($values, array( diff --git a/templates/task_show.php b/templates/task_show.php index 3e38d765..1c5cffaa 100644 --- a/templates/task_show.php +++ b/templates/task_show.php @@ -53,11 +53,22 @@ </ul> </article> + <h3><?= t('Description') ?></h3> <?php if ($task['description']): ?> - <h3><?= t('Description') ?></h3> <article id="description" class="markdown"> <?= Helper\markdown($task['description']) ?: t('There is no description.') ?> </article> + <?php else: ?> + <form method="post" action="?controller=task&action=description&task_id=<?= $task['id'] ?>" autocomplete="off"> + + <?= Helper\form_hidden('id', $description_form['values']) ?> + <?= Helper\form_textarea('description', $description_form['values'], $description_form['errors'], array('required', 'placeholder="'.t('Leave a description').'"')) ?><br/> + <div class="form-help"><a href="http://en.wikipedia.org/wiki/Markdown#Example" target="_blank"><?= t('Write your text in Markdown') ?></a></div> + + <div class="form-actions"> + <input type="submit" value="<?= t('Save') ?>" class="btn btn-blue"/> + </div> + </form> <?php endif ?> <h3><?= t('Comments') ?></h3> @@ -74,9 +85,9 @@ <form method="post" action="?controller=task&action=comment&task_id=<?= $task['id'] ?>" autocomplete="off"> - <?= Helper\form_hidden('task_id', $comment_values) ?> - <?= Helper\form_hidden('user_id', $comment_values) ?> - <?= Helper\form_textarea('comment', $comment_values, $comment_errors, array('required', 'placeholder="'.t('Leave a comment').'"'), 'comment-textarea') ?><br/> + <?= Helper\form_hidden('task_id', $comment_form['values']) ?> + <?= Helper\form_hidden('user_id', $comment_form['values']) ?> + <?= Helper\form_textarea('comment', $comment_form['values'], $comment_form['errors'], array('required', 'placeholder="'.t('Leave a comment').'"'), 'comment-textarea') ?><br/> <div class="form-help"><a href="http://en.wikipedia.org/wiki/Markdown#Example" target="_blank"><?= t('Write your text in Markdown') ?></a></div> <div class="form-actions"> |