summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/calendar/models/calendar.py1
-rw-r--r--addons/calendar/static/src/js/base_calendar.js19
2 files changed, 12 insertions, 8 deletions
diff --git a/addons/calendar/models/calendar.py b/addons/calendar/models/calendar.py
index 54ea446aed4..597bf760b95 100644
--- a/addons/calendar/models/calendar.py
+++ b/addons/calendar/models/calendar.py
@@ -454,6 +454,7 @@ class AlarmManager(models.AbstractModel):
delta = delta.seconds + delta.days * 3600 * 24
return {
+ 'alarm_id': alarm.id,
'event_id': meeting.id,
'title': meeting.name,
'message': message,
diff --git a/addons/calendar/static/src/js/base_calendar.js b/addons/calendar/static/src/js/base_calendar.js
index 0a9dd625662..600ebd4b01a 100644
--- a/addons/calendar/static/src/js/base_calendar.js
+++ b/addons/calendar/static/src/js/base_calendar.js
@@ -38,12 +38,12 @@ var CalendarNotification = Notification.extend({
},
'click .link2recall': function() {
- this.destroy(true);
+ this.close();
},
'click .link2showed': function() {
this._rpc({route: '/calendar/notify_ack'})
- .then(this.destroy.bind(this), this.destroy.bind(this));
+ .then(this.close.bind(this, false), this.close.bind(this, false));
},
});
},
@@ -57,22 +57,25 @@ WebClient.include({
// Clear previously set timeouts and destroy currently displayed calendar notifications
clearTimeout(this.get_next_calendar_notif_timeout);
_.each(this.calendar_notif_timeouts, clearTimeout);
- _.each(this.calendar_notif, function (notificationID) {
- self.call('notification', 'close', notificationID, true);
- });
this.calendar_notif_timeouts = {};
- this.calendar_notif = {};
// For each notification, set a timeout to display it
_.each(notifications, function(notif) {
- self.calendar_notif_timeouts[notif.event_id] = setTimeout(function() {
+ var key = notif.event_id + ',' + notif.alarm_id;
+ if (key in self.calendar_notif) {
+ return;
+ }
+ self.calendar_notif_timeouts[key] = setTimeout(function () {
var notificationID = self.call('notification', 'notify', {
Notification: CalendarNotification,
title: notif.title,
message: notif.message,
eventID: notif.event_id,
+ onClose: function () {
+ delete self.calendar_notif[key];
+ },
});
- self.calendar_notif[notif.event_id] = notificationID;
+ self.calendar_notif[key] = notificationID;
}, notif.timer * 1000);
last_notif_timer = Math.max(last_notif_timer, notif.timer);
});