summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois Ferrand <thetypz@gmail.com>2014-06-26 15:52:39 +0200
committerFrancois Ferrand <thetypz@gmail.com>2014-07-01 11:16:19 +0200
commit6d65cfd88343aadc68e4963e66dcdc0688b4346c (patch)
tree1615e89e40f1068166d2f59d910681813e451c67
parent06d0b7048ebcdfdf6e24eec3ac7dc8fb0327dd6f (diff)
Use popover to edit task and description directly from board.
- Click on 'description' icon opens the 'edit-description' page. - Edit task and edit description now open in popover, like the assign dialog.
-rw-r--r--app/Controller/Task.php65
-rw-r--r--app/Templates/board_task.php10
-rw-r--r--app/Templates/task_edit.php11
-rw-r--r--app/Templates/task_edit_description.php7
-rw-r--r--assets/js/board.js6
5 files changed, 68 insertions, 31 deletions
diff --git a/app/Controller/Task.php b/app/Controller/Task.php
index d44ba268..15482afc 100644
--- a/app/Controller/Task.php
+++ b/app/Controller/Task.php
@@ -162,17 +162,24 @@ class Task extends Base
$task['score'] = $task['score'] ?: '';
- $this->response->html($this->template->layout('task_edit', array(
- 'values' => $task,
- 'errors' => array(),
- 'task' => $task,
- 'columns_list' => $this->board->getColumnsList($task['project_id']),
- 'users_list' => $this->project->getUsersList($task['project_id']),
- 'colors_list' => $this->task->getColors(),
- 'categories_list' => $this->category->getList($task['project_id']),
- 'menu' => 'tasks',
- 'title' => t('Edit a task')
- )));
+ $params = array(
+ 'values' => $task,
+ 'errors' => array(),
+ 'task' => $task,
+ 'columns_list' => $this->board->getColumnsList($task['project_id']),
+ 'users_list' => $this->project->getUsersList($task['project_id']),
+ 'colors_list' => $this->task->getColors(),
+ 'categories_list' => $this->category->getList($task['project_id']),
+ 'ajax' => $this->request->isAjax(),
+ 'menu' => 'tasks',
+ 'title' => t('Edit a task')
+ );
+ if ($this->request->isAjax()) {
+ $this->response->html($this->template->load('task_edit', $params));
+ }
+ else {
+ $this->response->html($this->template->layout('task_edit', $params));
+ }
}
/**
@@ -191,7 +198,13 @@ class Task extends Base
if ($this->task->update($values)) {
$this->session->flash(t('Task updated successfully.'));
- $this->response->redirect('?controller=task&action=show&task_id='.$values['id']);
+
+ if ($this->request->getIntegerParam('ajax')) {
+ $this->response->redirect('?controller=board&action=show&project_id='.$task['project_id']);
+ }
+ else {
+ $this->response->redirect('?controller=task&action=show&task_id='.$values['id']);
+ }
}
else {
$this->session->flashError(t('Unable to update your task.'));
@@ -357,13 +370,20 @@ class Task extends Base
{
$task = $this->getTask();
- $this->response->html($this->taskLayout('task_edit_description', array(
- 'values' => $task,
- 'errors' => array(),
- 'task' => $task,
- 'menu' => 'tasks',
- 'title' => t('Edit the description')
- )));
+ $params = array(
+ 'values' => $task,
+ 'errors' => array(),
+ 'task' => $task,
+ 'ajax' => $this->request->isAjax(),
+ 'menu' => 'tasks',
+ 'title' => t('Edit the description')
+ );
+ if ($this->request->isAjax()) {
+ $this->response->html($this->template->load('task_edit_description', $params));
+ }
+ else {
+ $this->response->html($this->taskLayout('task_edit_description', $params));
+ }
}
/**
@@ -387,7 +407,12 @@ class Task extends Base
$this->session->flashError(t('Unable to update your task.'));
}
- $this->response->redirect('?controller=task&action=show&task_id='.$task['id']);
+ if ($this->request->getIntegerParam('ajax')) {
+ $this->response->redirect('?controller=board&action=show&project_id='.$task['project_id']);
+ }
+ else {
+ $this->response->redirect('?controller=task&action=show&task_id='.$task['id']);
+ }
}
$this->response->html($this->taskLayout('task_edit_description', array(
diff --git a/app/Templates/board_task.php b/app/Templates/board_task.php
index fa745ac1..89f768e0 100644
--- a/app/Templates/board_task.php
+++ b/app/Templates/board_task.php
@@ -20,13 +20,13 @@
<?php else: ?>
- <a href="?controller=task&amp;action=edit&amp;task_id=<?= $task['id'] ?>" title="<?= t('Edit this task') ?>">#<?= $task['id'] ?></a> -
+ <a class="task-board-popover" href="?controller=task&amp;action=edit&amp;task_id=<?= $task['id'] ?>" title="<?= t('Edit this task') ?>">#<?= $task['id'] ?></a> -
<span class="task-board-user">
<?php if (! empty($task['owner_id'])): ?>
- <a href="?controller=board&amp;action=assign&amp;task_id=<?= $task['id'] ?>" title="<?= t('Change assignee') ?>"><?= t('Assigned to %s', $task['username']) ?></a>
+ <a class="task-board-popover" href="?controller=board&amp;action=assign&amp;task_id=<?= $task['id'] ?>" title="<?= t('Change assignee') ?>"><?= t('Assigned to %s', $task['username']) ?></a>
<?php else: ?>
- <a href="?controller=board&amp;action=assign&amp;task_id=<?= $task['id'] ?>" title="<?= t('Change assignee') ?>" class="task-board-nobody"><?= t('Nobody assigned') ?></a>
+ <a class="task-board-popover" href="?controller=board&amp;action=assign&amp;task_id=<?= $task['id'] ?>" title="<?= t('Change assignee') ?>" class="task-board-nobody"><?= t('Nobody assigned') ?></a>
<?php endif ?>
</span>
@@ -69,8 +69,8 @@
<?php endif ?>
<?php if (! empty($task['description'])): ?>
- <i class="fa fa-file-text-o" title="<?= t('Description') ?>"></i>
+ <a class="task-board-popover" href='?controller=task&amp;action=editDescription&amp;task_id=<?= $task['id'] ?>'><i class="fa fa-file-text-o" title="<?= t('Description') ?>"></i></a>
<?php endif ?>
</div>
</div>
-<?php endif ?> \ No newline at end of file
+<?php endif ?>
diff --git a/app/Templates/task_edit.php b/app/Templates/task_edit.php
index 015f746d..07c3539b 100644
--- a/app/Templates/task_edit.php
+++ b/app/Templates/task_edit.php
@@ -1,12 +1,14 @@
<section id="main">
<div class="page-header">
<h2><?= t('Edit a task') ?></h2>
+<?php if (!$ajax): ?>
<ul>
<li><a href="?controller=board&amp;action=show&amp;project_id=<?= $task['project_id'] ?>"><?= t('Back to the board') ?></a></li>
</ul>
+<?php endif ?>
</div>
<section>
- <form method="post" action="?controller=task&amp;action=update&amp;task_id=<?= $task['id'] ?>" autocomplete="off">
+ <form method="post" action="?controller=task&amp;action=update&amp;task_id=<?= $task['id'] ?>&amp;ajax=<?= $ajax ?>" autocomplete="off">
<?= Helper\form_csrf() ?>
@@ -47,7 +49,12 @@
<div class="form-actions">
<input type="submit" value="<?= t('Save') ?>" class="btn btn-blue"/>
- <?= t('or') ?> <a href="?controller=task&amp;action=show&amp;task_id=<?= $task['id'] ?>"><?= t('cancel') ?></a>
+ <?= t('or') ?>
+<?php if ($ajax): ?>
+ <a href="?controller=board&amp;action=show&amp;project_id=<?= $task['project_id'] ?>"><?= t('cancel') ?></a>
+<?php else: ?>
+ <a href="?controller=task&amp;action=show&amp;task_id=<?= $task['id'] ?>"><?= t('cancel') ?></a>
+<?php endif ?>
</div>
</form>
</section>
diff --git a/app/Templates/task_edit_description.php b/app/Templates/task_edit_description.php
index 550dac73..ba0d3887 100644
--- a/app/Templates/task_edit_description.php
+++ b/app/Templates/task_edit_description.php
@@ -2,7 +2,7 @@
<h2><?= t('Edit the description') ?></h2>
</div>
-<form method="post" action="?controller=task&amp;action=saveDescription&amp;task_id=<?= $task['id'] ?>" autocomplete="off">
+<form method="post" action="?controller=task&amp;action=saveDescription&amp;task_id=<?= $task['id'] ?>&amp;ajax=<?= $ajax ?>" autocomplete="off">
<?= Helper\form_csrf() ?>
@@ -13,6 +13,11 @@
<div class="form-actions">
<input type="submit" value="<?= t('Save') ?>" class="btn btn-blue"/>
<?= t('or') ?>
+<?php if ($ajax): ?>
+ <a href="?controller=board&amp;action=show&amp;project_id=<?= $task['project_id'] ?>"><?= t('cancel') ?></a>
+<?php else: ?>
<a href="?controller=task&amp;action=show&amp;task_id=<?= $task['id'] ?>"><?= t('cancel') ?></a>
+<?php endif ?>
</div>
</form>
+
diff --git a/assets/js/board.js b/assets/js/board.js
index f43f3f57..0487005d 100644
--- a/assets/js/board.js
+++ b/assets/js/board.js
@@ -15,14 +15,14 @@
});
// Open assignee popover
- $(".task-board-user a").click(function(e) {
+ $(".task-board-popover").click(function(e) {
e.preventDefault();
e.stopPropagation();
- var taskId = $(this).parent().parent().attr("data-task-id");
+ var href = $(this).attr('href');
- $.get("?controller=board&action=assign&task_id=" + taskId, function(data) {
+ $.get(href, function(data) {
popover_show(data);
});
});