diff --git a/plugins/calendar/calendar.js b/plugins/calendar/calendar.js
index 8324ea32..1386a9d4 100644
--- a/plugins/calendar/calendar.js
+++ b/plugins/calendar/calendar.js
@@ -681,7 +681,7 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
if (event.location) {
element.find('div.fc-event-title').after('
@ ' + Q(event.location) + '
');
}
- if (event.recurrence_id)
+ if (event.recurrence)
element.find('div.fc-event-time').append('');
if (event.alarms)
element.find('div.fc-event-time').append('');
diff --git a/plugins/calendar/drivers/database/database_driver.php b/plugins/calendar/drivers/database/database_driver.php
index e86da7d2..350304e4 100644
--- a/plugins/calendar/drivers/database/database_driver.php
+++ b/plugins/calendar/drivers/database/database_driver.php
@@ -191,6 +191,10 @@ class database_driver extends calendar_driver
if ($old['recurrence'] || $old['recurrence_id']) {
$master = $old['recurrence_id'] ? $this->get_event($old['recurrence_id']) : $old;
+ // keep saved exceptions (not submitted by the client)
+ if ($old['recurrence']['EXDATE'])
+ $event['recurrence']['EXDATE'] = $old['recurrence']['EXDATE'];
+
switch ($event['savemode']) {
case 'new':
$event['uid'] = $this->cal->generate_uid();