summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorThomas Bruederli <bruederli@kolabsys.com>2013-07-22 17:39:24 (GMT)
committerThomas Bruederli <bruederli@kolabsys.com>2013-07-22 18:01:05 (GMT)
commitb6e935bcb46c5d03aa1a957204a8c161ec20fc11 (patch)
tree77ee570af34d836e5060d92cae836bdcdf20417d /plugins
parentb10b81c92702543f17b9ef424717223f1d297a7f (diff)
downloadroundcubemail-plugins-kolab-b6e935bcb46c5d03aa1a957204a8c161ec20fc11.tar.gz
Avoid disabling RSVP button on event updates
Diffstat (limited to 'plugins')
-rw-r--r--plugins/calendar/calendar.php9
-rw-r--r--plugins/calendar/calendar_base.js2
2 files changed, 8 insertions, 3 deletions
diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index 905b4ff..bda393b 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -706,9 +706,13 @@ class calendar extends rcube_plugin
case "rsvp-status":
$action = 'rsvp';
$status = $event['fallback'];
+ $latest = false;
$html = html::div('rsvp-status', $status != 'CANCELLED' ? $this->gettext('acceptinvitation') : '');
+ if (is_numeric($event['changed']))
+ $event['changed'] = new DateTime('@'.$event['changed']);
$this->load_driver();
if ($existing = $this->driver->get_event($event, true, false, true)) {
+ $latest = ($event['sequence'] && $existing['sequence'] == $event['sequence']) || (!$event['sequence'] && $existing['changed'] && $existing['changed'] >= $event['changed']);
$emails = $this->get_user_emails();
foreach ($existing['attendees'] as $i => $attendee) {
if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
@@ -738,8 +742,8 @@ class calendar extends rcube_plugin
}
else if (in_array($status, array('ACCEPTED','TENTATIVE','DECLINED'))) {
$html = html::div('rsvp-status ' . strtolower($status), $this->gettext('youhave'.strtolower($status)));
- if ($existing['sequence'] >= $event['sequence'] || (!$event['sequence'] && $existing['changed'] && $existing['changed'] >= $event['changed'])) {
- $action = ''; // nothing to do here
+ if ($existing['sequence'] > $event['sequence'] || (!$event['sequence'] && $existing['changed'] && $existing['changed'] > $event['changed'])) {
+ $action = ''; // nothing to do here, outdated invitation
}
}
@@ -748,6 +752,7 @@ class calendar extends rcube_plugin
'uid' => $event['uid'],
'id' => asciiwords($event['uid'], true),
'saved' => $existing ? true : false,
+ 'latest' => $latest,
'status' => $status,
'action' => $action,
'html' => $html,
diff --git a/plugins/calendar/calendar_base.js b/plugins/calendar/calendar_base.js
index fb776c8..c60c89a 100644
--- a/plugins/calendar/calendar_base.js
+++ b/plugins/calendar/calendar_base.js
@@ -144,7 +144,7 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
// enable/disable rsvp buttons
$('.rsvp-buttons input.button').prop('disabled', false)
- .filter('.'+String(p.status).toLowerCase()).prop('disabled', true);
+ .filter('.'+String(p.status).toLowerCase()).prop('disabled', p.latest);
// show rsvp/import buttons with or without calendar selector
if (!p.select)