Refresh the board only when it's necessary and add a link on the task title

This commit is contained in:
Frédéric Guillot 2014-03-12 22:09:17 -04:00
parent 9722cf6152
commit 64ac705c1e
6 changed files with 34 additions and 6 deletions

View File

@ -523,6 +523,10 @@ div.task a:hover {
text-decoration: underline;
}
div.task-title a {
font-weight: normal;
}
#infos,
div.task {
position: relative;

View File

@ -147,9 +147,10 @@
try {
var response = JSON.parse(this.responseText);
if (response.result == true) {
// TODO: don't refresh the whole page!
if (response.result == false) {
window.alert('Unable to update the board');
}
else if (response.refresh == true) {
window.location = "?controller=board&action=show&project_id=" + projectId;
}
}

View File

@ -14,6 +14,7 @@ abstract class Base
$this->task = $registry->task;
$this->user = $registry->user;
$this->comment = $registry->comment;
$this->event = $registry->shared('event');
}
public function beforeAction($controller, $action)

View File

@ -276,7 +276,8 @@ class Board extends Base
}
$this->response->json(array(
'result' => $this->board->saveTasksPosition($this->request->getValues())
'result' => $this->board->saveTasksPosition($this->request->getValues()),
'refresh' => $this->event->getLastListenerExecuted() !== ''
));
}
}

View File

@ -28,6 +28,14 @@ class Event
*/
private $listeners = array();
/**
* The last listener executed
*
* @access private
* @var string
*/
private $lastListener = '';
/**
* The last triggered event
*
@ -74,11 +82,24 @@ class Event
if (isset($this->listeners[$eventName])) {
foreach ($this->listeners[$eventName] as $listener) {
$listener->execute($data); // TODO: keep an history of executed actions for unit test
if ($listener->execute($data)) {
$this->lastListener = get_class($listener);
}
}
}
}
/**
* Get the last listener executed
*
* @access public
* @return string Event name
*/
public function getLastListenerExecuted()
{
return $this->lastListener;
}
/**
* Get the last fired event
*

View File

@ -71,7 +71,7 @@
<?php endif ?>
<div class="task-title">
<?= Helper\escape($task['title']) ?>
<a href="?controller=task&amp;action=show&amp;task_id=<?= $task['id'] ?>" title="<?= t('Show this task') ?>"><?= Helper\escape($task['title']) ?></a>
</div>
<div class="task-footer">