diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php index 6b28657a..343b3e5d 100644 --- a/plugins/calendar/calendar.php +++ b/plugins/calendar/calendar.php @@ -2497,7 +2497,8 @@ class calendar extends rcube_plugin $this->rc->output->command('display_message', $this->gettext(array('name' => $message, 'vars' => array('calendar' => $calendar['name']))), 'confirmation'); $metadata['rsvp'] = intval($metadata['rsvp']); - $this->rc->output->command('plugin.fetch_itip_object_status', $metadata); + $metadata['after_action'] = $this->rc->config->get('calendar_itip_after_action', $this->defaults['calendar_itip_after_action']); + $this->rc->output->command('plugin.itip_message_processed', $metadata); $error_msg = null; } else if ($error_msg) diff --git a/plugins/libcalendaring/libcalendaring.js b/plugins/libcalendaring/libcalendaring.js index a5558ddd..a2cf667b 100644 --- a/plugins/libcalendaring/libcalendaring.js +++ b/plugins/libcalendaring/libcalendaring.js @@ -854,6 +854,19 @@ rcube_libcalendaring.update_itip_object_status = function(p) $('#'+p.action+'-'+p.id).show().find('input.button').last().after(p.select); }; +/** + * Callback from server after an iTip message has been processed + */ +rcube_libcalendaring.itip_message_processed = function(metadata) +{ + if (metadata.after_action) { + setTimeout(function(){ rcube_libcalendaring.itip_after_action(metadata.after_action); }, 1200); + } + else { + rcube_libcalendaring.fetch_itip_object_status(metadata); + } +}; + /** * After-action on iTip request message. Action types: * 0 - no action @@ -903,7 +916,7 @@ window.rcmail && rcmail.addEventListener('init', function(evt) { rcmail.addEventListener('plugin.update_itip_object_status', rcube_libcalendaring.update_itip_object_status) .addEventListener('plugin.fetch_itip_object_status', rcube_libcalendaring.fetch_itip_object_status) - .addEventListener('plugin.itip_after_action', rcube_libcalendaring.itip_after_action); + .addEventListener('plugin.itip_message_processed', rcube_libcalendaring.itip_message_processed); $('.rsvp-buttons').on('click', 'a.reply-comment-toggle', function(e){ $(this).hide().parent().find('textarea').show().focus();