Merge "Add recent events templates for worklist notifications"
This commit is contained in:
commit
a2a88798cb
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright (c) 2016 Codethink Limited
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License. You may obtain
|
||||
* a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A controller for Worklist event notifications.
|
||||
*/
|
||||
angular.module('sb.dashboard').controller('WorklistEventController',
|
||||
function ($scope, Worklist) {
|
||||
'use strict';
|
||||
|
||||
$scope.worklist = Worklist.get({
|
||||
id: $scope.evt.event_info.worklist_id
|
||||
});
|
||||
}
|
||||
);
|
|
@ -0,0 +1,32 @@
|
|||
<div class="discussion-comment"
|
||||
ng-controller="WorklistEventController">
|
||||
<p class="discussion-comment-author">
|
||||
<p>
|
||||
<span time-moment eventdate="evt.created_at" class="pull-right"></span>
|
||||
<span>
|
||||
{{author.full_name}}
|
||||
<span ng-show="!!evt.event_info.added">
|
||||
added the card "{{ evt.event_info.added.item_title }}" to
|
||||
</span>
|
||||
<span ng-show="!!evt.event_info.removed">
|
||||
removed the card "{{ evt.event_info.removed.item_title }}" from
|
||||
</span>
|
||||
<span ng-show="!!evt.event_info.updated">
|
||||
updated the card "{{ evt.event_info.updated.old.item_title }}" in
|
||||
</span>
|
||||
<a href="#!/worklist/{{evt.event_info.worklist_id}}">
|
||||
{{ worklist.title }}
|
||||
</a>
|
||||
<span ng-show="!!evt.event_info.added">
|
||||
in position {{ evt.event_info.added.position + 1 }}
|
||||
</span>.
|
||||
</span>
|
||||
</p>
|
||||
<div ng-show="!!evt.event_info.updated">
|
||||
<p>
|
||||
Moved from position {{ evt.event_info.updated.old.position + 1 }}
|
||||
to {{ evt.event_info.updated.new.position + 1 }}.
|
||||
</p>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
|
@ -0,0 +1,28 @@
|
|||
<div class="discussion-comment"
|
||||
ng-controller="WorklistEventController">
|
||||
<p class="discussion-comment-author">
|
||||
<p>
|
||||
<span time-moment eventdate="evt.created_at" class="pull-right"></span>
|
||||
<span>
|
||||
{{author.full_name}} created the worklist
|
||||
<a href="#!/worklist/{{evt.event_info.worklist_id}}">
|
||||
{{ worklist.title }}
|
||||
</a>.
|
||||
</span>
|
||||
</p>
|
||||
<table class="table table-supercondensed table-striped">
|
||||
<tr>
|
||||
<td>Title</td>
|
||||
<td>{{ worklist.title }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Automatic</td>
|
||||
<td>{{ 'Yes' ? worklist.automatic : 'No' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Private</td>
|
||||
<td>{{ 'Yes' ? worklist.private : 'No' }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
</div>
|
|
@ -0,0 +1,19 @@
|
|||
<div class="discussion-comment"
|
||||
ng-controller="WorklistEventController">
|
||||
<p class="discussion-comment-author">
|
||||
<p>
|
||||
<span time-moment eventdate="evt.created_at" class="pull-right"></span>
|
||||
<span>
|
||||
{{author.full_name}} updated the worklist
|
||||
<a href="#!/worklist/{{evt.event_info.worklist_id}}">
|
||||
{{ worklist.title }}
|
||||
</a>.
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
{{ evt.event_info.field | capitalize }} was updated
|
||||
from <span class="label label-default">{{ evt.event_info.old_value }}</span>
|
||||
to <span class="label label-default">{{ evt.event_info.new_value }}</span>.
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
|
@ -0,0 +1,69 @@
|
|||
<div class="discussion-comment"
|
||||
ng-controller="WorklistEventController">
|
||||
<p class="discussion-comment-author">
|
||||
<p>
|
||||
<span time-moment eventdate="evt.created_at" class="pull-right"></span>
|
||||
<span>
|
||||
{{author.full_name}} updated the filters of
|
||||
<a href="#!/worklist/{{evt.event_info.worklist_id}}">
|
||||
{{ worklist.title }}
|
||||
</a>.
|
||||
</span>
|
||||
</p>
|
||||
<p ng-show="!!evt.event_info.added">
|
||||
<strong>Added:</strong>
|
||||
{{ evt.event_info.added.type == 'Story' ? 'Stories' : 'Tasks' }}
|
||||
where
|
||||
<span ng-repeat="criterion in evt.event_info.added.criteria">
|
||||
{{ criterion.field | capitalize }}
|
||||
{{ criterion.negative ? 'is not' : 'is' }}
|
||||
{{ criterion.title }}
|
||||
<span ng-hide="evt.event_info.added.criteria.indexOf(criterion)
|
||||
== evt.event_info.added.criteria.length - 1">
|
||||
and
|
||||
</span>
|
||||
</span>
|
||||
</p>
|
||||
<p ng-show="!!evt.event_info.removed">
|
||||
<strong>Removed:</strong>
|
||||
{{ evt.event_info.removed.type == 'Story' ? 'Stories' : 'Tasks' }}
|
||||
where
|
||||
<span ng-repeat="criterion in evt.event_info.removed.criteria">
|
||||
{{ criterion.field | capitalize }}
|
||||
{{ criterion.negative ? 'is not' : 'is' }}
|
||||
{{ criterion.title }}
|
||||
<span ng-hide="evt.event_info.removed.criteria.indexOf(criterion)
|
||||
== evt.event_info.removed.criteria.length - 1">
|
||||
and
|
||||
</span>
|
||||
</span>
|
||||
</p>
|
||||
<p ng-show="!!evt.event_info.updated">
|
||||
<strong>Updated:</strong>
|
||||
<br>
|
||||
From: {{ evt.event_info.updated.old.type == 'Story' ? 'Stories' : 'Tasks' }}
|
||||
where
|
||||
<span ng-repeat="criterion in evt.event_info.updated.old.criteria">
|
||||
{{ criterion.field | capitalize }}
|
||||
{{ criterion.negative ? 'is not' : 'is' }}
|
||||
{{ criterion.title }}
|
||||
<span ng-hide="evt.event_info.updated.old.criteria.indexOf(criterion)
|
||||
== evt.event_info.updated.old.criteria.length - 1">
|
||||
and
|
||||
</span>
|
||||
</span>
|
||||
<br>
|
||||
To: {{ evt.event_info.updated.new.type == 'Story' ? 'Stories' : 'Tasks' }}
|
||||
where
|
||||
<span ng-repeat="criterion in evt.event_info.updated.new.criteria">
|
||||
{{ criterion.field | capitalize }}
|
||||
{{ criterion.negative ? 'is not' : 'is' }}
|
||||
{{ criterion.title }}
|
||||
<span ng-hide="evt.event_info.updated.new.criteria.indexOf(criterion)
|
||||
== evt.event_info.updated.new.criteria.length - 1">
|
||||
and
|
||||
</span>
|
||||
</span>
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
|
@ -0,0 +1,34 @@
|
|||
<div class="discussion-comment"
|
||||
ng-controller="WorklistEventController">
|
||||
<p class="discussion-comment-author">
|
||||
<p>
|
||||
<span time-moment eventdate="evt.created_at" class="pull-right"></span>
|
||||
<span>
|
||||
{{author.full_name}} created a permission for
|
||||
<a href="#!/worklist/{{evt.event_info.worklist_id}}">
|
||||
{{ worklist.title }}
|
||||
</a>.
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<strong ng-show="evt.event_info.codename == 'move_items' ||
|
||||
evt.event_info.codename == 'edit_worklist'">
|
||||
{{ evt.event_info.codename == 'move_items' ? 'Users' : 'Owners' }}
|
||||
</strong>
|
||||
<strong ng-hide="evt.event_info.codename == 'move_items' ||
|
||||
evt.event_info.codename == 'edit_worklist'">
|
||||
{{ evt.event_info.codename }}
|
||||
</strong>
|
||||
<div ng-if="evt.event_info.users.length > 0">
|
||||
<ul>
|
||||
<li ng-repeat="user in evt.event_info.users">
|
||||
<span ng-repeat="key in user">
|
||||
{{ key }}
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</p>
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
|
@ -0,0 +1,44 @@
|
|||
<div class="discussion-comment"
|
||||
ng-controller="WorklistEventController">
|
||||
<p class="discussion-comment-author">
|
||||
<p>
|
||||
<span time-moment eventdate="evt.created_at" class="pull-right"></span>
|
||||
<span>
|
||||
{{author.full_name}} updated the permissions of
|
||||
<a href="#!/worklist/{{evt.event_info.worklist_id}}">
|
||||
{{ worklist.title }}
|
||||
</a>.
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<strong ng-show="evt.event_info.codename == 'move_items' ||
|
||||
evt.event_info.codename == 'edit_worklist'">
|
||||
{{ evt.event_info.codename == 'move_items' ? 'Users' : 'Owners' }}
|
||||
</strong>
|
||||
<strong ng-hide="evt.event_info.codename == 'move_items' ||
|
||||
evt.event_info.codename == 'edit_worklist'">
|
||||
{{ evt.event_info.codename }}
|
||||
</strong>
|
||||
<div ng-if="evt.event_info.added.length > 0">
|
||||
Added:
|
||||
<ul>
|
||||
<li ng-repeat="user in evt.event_info.added">
|
||||
<span ng-repeat="key in user">
|
||||
{{ key }}
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div ng-if="evt.event_info.removed.length > 0">
|
||||
Removed:
|
||||
<ul>
|
||||
<li ng-repeat="user in evt.event_info.removed">
|
||||
<span ng-repeat="key in user">
|
||||
{{ key }}
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
|
@ -32,4 +32,22 @@
|
|||
<div ng-switch-when="user_comment">
|
||||
<div ng-include src="'app/dashboard/template/event/user_comment.html'"></div>
|
||||
</div>
|
||||
<div ng-switch-when="worklist_created">
|
||||
<div ng-include src="'app/dashboard/template/event/worklist_created.html'"></div>
|
||||
</div>
|
||||
<div ng-switch-when="worklist_details_changed">
|
||||
<div ng-include src="'app/dashboard/template/event/worklist_details_changed.html'"></div>
|
||||
</div>
|
||||
<div ng-switch-when="worklist_contents_changed">
|
||||
<div ng-include src="'app/dashboard/template/event/worklist_contents_changed.html'"></div>
|
||||
</div>
|
||||
<div ng-switch-when="worklist_filters_changed">
|
||||
<div ng-include src="'app/dashboard/template/event/worklist_filters_changed.html'"></div>
|
||||
</div>
|
||||
<div ng-switch-when="worklist_permission_created">
|
||||
<div ng-include src="'app/dashboard/template/event/worklist_permission_created.html'"></div>
|
||||
</div>
|
||||
<div ng-switch-when="worklist_permissions_changed">
|
||||
<div ng-include src="'app/dashboard/template/event/worklist_permissions_changed.html'"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -173,6 +173,20 @@
|
|||
ng-model="preferences.plugin_email_enable">
|
||||
<label for="enableEmails">Enable notification emails</label>
|
||||
</div>
|
||||
|
||||
<p class="help-block">
|
||||
Would you like to receive notifications from
|
||||
worklists you are subscribed to?
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<input type="checkbox" name="worklistNotificationSettings"
|
||||
id="worklistNotifications"
|
||||
ng-true-value="'true'"
|
||||
ng-false-value="'false'"
|
||||
ng-model="preferences.receive_notifications_worklists">
|
||||
<label for="worklistNotifications">Enable worklist notifications</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -238,4 +238,7 @@ angular.module('sb.services').provider('Preference',
|
|||
// Let our preference provider know about email preferences.
|
||||
PreferenceProvider.addPreference('plugin_email_enable', 'false');
|
||||
|
||||
// Let our preference provider know about notifications preferences.
|
||||
PreferenceProvider.addPreference(
|
||||
'receive_notifications_worklists', false);
|
||||
});
|
||||
|
|
|
@ -192,3 +192,7 @@
|
|||
.panel .discussion::before {
|
||||
height: calc(100% - 35px);
|
||||
}
|
||||
|
||||
.discussion-comment .kanban-card {
|
||||
max-width: 300px;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue