From 9b399951f430b26379a2bf8b13ace99290227e61 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sun, 14 Jun 2015 11:50:31 -0400 Subject: Improve activity stream/notification for task update events and add new notification for swimlane change --- app/Helper/Task.php | 5 ++ app/Model/Notification.php | 11 ++-- app/Model/ProjectActivity.php | 5 ++ app/Model/TaskFinder.php | 2 + app/Subscriber/NotificationSubscriber.php | 1 + app/Subscriber/ProjectActivitySubscriber.php | 2 + app/Template/event/events.php | 2 + app/Template/event/task_move_swimlane.php | 19 ++++++ app/Template/event/task_update.php | 5 ++ app/Template/notification/task_move_swimlane.php | 19 ++++++ app/Template/notification/task_update.php | 63 +------------------ app/Template/task/changes.php | 78 ++++++++++++++++++++++++ 12 files changed, 146 insertions(+), 66 deletions(-) create mode 100644 app/Template/event/task_move_swimlane.php create mode 100644 app/Template/notification/task_move_swimlane.php create mode 100644 app/Template/task/changes.php (limited to 'app') diff --git a/app/Helper/Task.php b/app/Helper/Task.php index b3931cdb..13bdb07a 100644 --- a/app/Helper/Task.php +++ b/app/Helper/Task.php @@ -37,6 +37,11 @@ class Task extends \Core\Base return t('%dd', ($now - $timestamp) / 86400); } + public function getColors() + { + return $this->color->getList(); + } + public function recurrenceTriggers() { return $this->task->getRecurrenceTriggerList(); diff --git a/app/Model/Notification.php b/app/Model/Notification.php index 1ef6a88f..d18e7642 100644 --- a/app/Model/Notification.php +++ b/app/Model/Notification.php @@ -268,7 +268,7 @@ class Notification extends Base { return $this->template->render( 'notification/'.str_replace('.', '_', $event_name), - $event_data + array('application_url' => $this->config->get('application_url'), 'colors_list' => $this->color->getList()) + $event_data + array('application_url' => $this->config->get('application_url')) ); } @@ -311,13 +311,16 @@ class Notification extends Base $subject = $this->getStandardMailSubject(e('Task opened'), $event_data); break; case Task::EVENT_MOVE_COLUMN: - $subject = $this->getStandardMailSubject(e('Column Change'), $event_data); + $subject = $this->getStandardMailSubject(e('Column change'), $event_data); break; case Task::EVENT_MOVE_POSITION: - $subject = $this->getStandardMailSubject(e('Position Change'), $event_data); + $subject = $this->getStandardMailSubject(e('Position change'), $event_data); + break; + case Task::EVENT_MOVE_SWIMLANE: + $subject = $this->getStandardMailSubject(e('Swimlane change'), $event_data); break; case Task::EVENT_ASSIGNEE_CHANGE: - $subject = $this->getStandardMailSubject(e('Assignee Change'), $event_data); + $subject = $this->getStandardMailSubject(e('Assignee change'), $event_data); break; case Task::EVENT_OVERDUE: $subject = e('[%s] Overdue tasks', $event_data['project_name']); diff --git a/app/Model/ProjectActivity.php b/app/Model/ProjectActivity.php index 27f1cfcd..a9222fcc 100644 --- a/app/Model/ProjectActivity.php +++ b/app/Model/ProjectActivity.php @@ -227,6 +227,11 @@ class ProjectActivity extends Base return t('%s moved the task #%d to the column "%s"', $event['author'], $event['task']['id'], $event['task']['column_title']); case Task::EVENT_MOVE_POSITION: return t('%s moved the task #%d to the position %d in the column "%s"', $event['author'], $event['task']['id'], $event['task']['position'], $event['task']['column_title']); + case Task::EVENT_MOVE_SWIMLANE: + if ($event['task']['swimlane_id'] == 0) { + return t('%s moved the task #%d to the first swimlane', $event['author'], $event['task']['id']); + } + return t('%s moved the task #%d to the swimlane "%s"', $event['author'], $event['task']['id'], $event['task']['swimlane_name']); case Subtask::EVENT_UPDATE: return t('%s updated a subtask for the task #%d', $event['author'], $event['task']['id']); case Subtask::EVENT_CREATE: diff --git a/app/Model/TaskFinder.php b/app/Model/TaskFinder.php index 5a1d33c6..327b480f 100644 --- a/app/Model/TaskFinder.php +++ b/app/Model/TaskFinder.php @@ -263,6 +263,7 @@ class TaskFinder extends Base tasks.recurrence_parent, tasks.recurrence_child, project_has_categories.name AS category_name, + swimlanes.name AS swimlane_name, projects.name AS project_name, columns.title AS column_title, users.username AS assignee_username, @@ -275,6 +276,7 @@ class TaskFinder extends Base LEFT JOIN project_has_categories ON project_has_categories.id = tasks.category_id LEFT JOIN projects ON projects.id = tasks.project_id LEFT JOIN columns ON columns.id = tasks.column_id + LEFT JOIN swimlanes ON swimlanes.id = tasks.swimlane_id WHERE tasks.id = ? '; diff --git a/app/Subscriber/NotificationSubscriber.php b/app/Subscriber/NotificationSubscriber.php index d605c9f3..b99c2945 100644 --- a/app/Subscriber/NotificationSubscriber.php +++ b/app/Subscriber/NotificationSubscriber.php @@ -20,6 +20,7 @@ class NotificationSubscriber extends \Core\Base implements EventSubscriberInterf Task::EVENT_OPEN => array('execute', 0), Task::EVENT_MOVE_COLUMN => array('execute', 0), Task::EVENT_MOVE_POSITION => array('execute', 0), + Task::EVENT_MOVE_SWIMLANE => array('execute', 0), Task::EVENT_ASSIGNEE_CHANGE => array('execute', 0), Subtask::EVENT_CREATE => array('execute', 0), Subtask::EVENT_UPDATE => array('execute', 0), diff --git a/app/Subscriber/ProjectActivitySubscriber.php b/app/Subscriber/ProjectActivitySubscriber.php index 31f771f8..82b13d8e 100644 --- a/app/Subscriber/ProjectActivitySubscriber.php +++ b/app/Subscriber/ProjectActivitySubscriber.php @@ -20,6 +20,7 @@ class ProjectActivitySubscriber extends \Core\Base implements EventSubscriberInt Task::EVENT_OPEN => array('execute', 0), Task::EVENT_MOVE_COLUMN => array('execute', 0), Task::EVENT_MOVE_POSITION => array('execute', 0), + Task::EVENT_MOVE_SWIMLANE => array('execute', 0), Comment::EVENT_UPDATE => array('execute', 0), Comment::EVENT_CREATE => array('execute', 0), Subtask::EVENT_UPDATE => array('execute', 0), @@ -58,6 +59,7 @@ class ProjectActivitySubscriber extends \Core\Base implements EventSubscriberInt { $values = array(); $values['task'] = $this->taskFinder->getDetails($event['task_id']); + $values['changes'] = isset($event['changes']) ? $event['changes'] : array(); switch (get_class($event)) { case 'Event\SubtaskEvent': diff --git a/app/Template/event/events.php b/app/Template/event/events.php index 2dc79871..971f6587 100644 --- a/app/Template/event/events.php +++ b/app/Template/event/events.php @@ -7,6 +7,8 @@

text->contains($event['event_name'], 'subtask')): ?> + text->contains($event['event_name'], 'task.move')): ?> + text->contains($event['event_name'], 'task')): ?> text->contains($event['event_name'], 'comment')): ?> diff --git a/app/Template/event/task_move_swimlane.php b/app/Template/event/task_move_swimlane.php new file mode 100644 index 00000000..ca440dbf --- /dev/null +++ b/app/Template/event/task_move_swimlane.php @@ -0,0 +1,19 @@ +user->avatar($email, $author) ?> + +

+ + e($author), + $this->url->link(t('#%d', $task['id']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) + ) ?> + + e($author), + $this->url->link(t('#%d', $task['id']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])), + $this->e($task['swimlane_name']) + ) ?> + +

+

+ e($task['title']) ?> +

\ No newline at end of file diff --git a/app/Template/event/task_update.php b/app/Template/event/task_update.php index 7d036d43..e8254bcb 100644 --- a/app/Template/event/task_update.php +++ b/app/Template/event/task_update.php @@ -8,4 +8,9 @@

e($task['title']) ?> + +

+ render('task/changes', array('changes' => $changes, 'task' => $task)) ?> +
+

\ No newline at end of file diff --git a/app/Template/notification/task_move_swimlane.php b/app/Template/notification/task_move_swimlane.php new file mode 100644 index 00000000..04de7cc6 --- /dev/null +++ b/app/Template/notification/task_move_swimlane.php @@ -0,0 +1,19 @@ +

e($task['title']) ?> (#)

+ + + +render('notification/footer', array('task' => $task, 'application_url' => $application_url)) ?> \ No newline at end of file diff --git a/app/Template/notification/task_update.php b/app/Template/notification/task_update.php index 0352788b..54f5c6d1 100644 --- a/app/Template/notification/task_update.php +++ b/app/Template/notification/task_update.php @@ -1,65 +1,4 @@

e($task['title']) ?> (#)

- - - -

- - - -

- text->markdown($task['description']) ?> - - - +render('task/changes', array('changes' => $changes, 'task' => $task)) ?> render('notification/footer', array('task' => $task, 'application_url' => $application_url)) ?> \ No newline at end of file diff --git a/app/Template/task/changes.php b/app/Template/task/changes.php new file mode 100644 index 00000000..c7fc0d52 --- /dev/null +++ b/app/Template/task/changes.php @@ -0,0 +1,78 @@ + + + + +

+
text->markdown($task['description']) ?>
+ + \ No newline at end of file -- cgit v1.2.3