summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--controllers/task.php85
-rw-r--r--locales/fr_FR/translations.php4
-rw-r--r--locales/pl_PL/translations.php3
-rw-r--r--models/acl.php2
-rw-r--r--models/task.php14
-rw-r--r--templates/task_show.php19
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&amp;action=description&amp;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&amp;action=comment&amp;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">