Add the possibility to add a description directly from the task show view

This commit is contained in:
Frédéric Guillot 2014-03-04 22:45:58 -05:00
parent 19409360ca
commit 141616b48c
6 changed files with 108 additions and 25 deletions

View File

@ -39,6 +39,42 @@ class Task extends Base
$this->response->text('FAILED');
}
// Display the template show task, common between different task view
private function showTask(array $task, array $comment_form = array(), array $description_form = array())
{
if (empty($comment_form)) {
$comment_form = array(
'values' => array(
'task_id' => $task['id'],
'user_id' => $this->acl->getUserId()
),
'errors' => array()
);
}
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']),
'task' => $task,
'columns_list' => $this->board->getColumnsList($task['project_id']),
'colors_list' => $this->task->getColors(),
'menu' => 'tasks',
'title' => $task['title'],
)));
}
// Show a task
public function show()
{
@ -47,16 +83,7 @@ class Task extends Base
if (! $task) $this->notfound();
$this->checkProjectPermissions($task['project_id']);
$this->response->html($this->template->layout('task_show', array(
'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(),
'menu' => 'tasks',
'title' => $task['title'],
)));
$this->showTask($task);
}
// Add a 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

View File

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

View File

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

View File

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

View File

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

View File

@ -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">