From c26f9d25cba791ec5e4735e4c7a14ee1c1b30469 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Thu, 6 Nov 2014 12:06:51 +0100 Subject: [PATCH] Some fixes to the iTip delegation functions --- plugins/calendar/calendar.php | 2 +- plugins/calendar/calendar_ui.js | 2 +- plugins/libcalendaring/lib/libcalendaring_itip.php | 4 +++- plugins/libcalendaring/libcalendaring.js | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php index 2b37b799..88a4351a 100644 --- a/plugins/calendar/calendar.php +++ b/plugins/calendar/calendar.php @@ -2638,7 +2638,7 @@ class calendar extends rcube_plugin } else if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) { $event['attendees'][$i]['status'] = strtoupper($status); - if ($event['attendees'][$i]['status'] != 'NEEDS-ACTION') + if (!in_array($event['attendees'][$i]['status'], array('NEEDS-ACTION','DELEGATED'))) unset($event['attendees'][$i]['rsvp']); // remove RSVP attribute $metadata['attendee'] = $attendee['email']; $metadata['rsvp'] = $attendee['role'] != 'NON-PARTICIPANT'; diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js index ae745fe5..32d4773f 100644 --- a/plugins/calendar/calendar_ui.js +++ b/plugins/calendar/calendar_ui.js @@ -2349,7 +2349,7 @@ function rcube_calendar_ui(settings) if (data['delegated-to']) { delete data['delegated-to']; - if (data.role == 'NON-PARTICIPANT' && status != 'DECLINED') + if (data.role == 'NON-PARTICIPANT' && data.status != 'DECLINED') data.role = 'REQ-PARTICIPANT'; } } diff --git a/plugins/libcalendaring/lib/libcalendaring_itip.php b/plugins/libcalendaring/lib/libcalendaring_itip.php index e9be25d9..9403f461 100644 --- a/plugins/libcalendaring/lib/libcalendaring_itip.php +++ b/plugins/libcalendaring/lib/libcalendaring_itip.php @@ -262,6 +262,7 @@ class libcalendaring_itip * * @param array Event object to delegate * @param mixed Delegatee as string or hash array with keys 'name' and 'mailto' + * @param boolean The delegator's RSVP flag * @return boolean True on success, False on failure */ public function delegate_to(&$event, $delegate, $rsvp = false) @@ -301,6 +302,7 @@ class libcalendaring_itip $delegate_index = $i; break; } + // TODO: remove previous delegatee (i.e. attendee that has DELEGATED-FROM == $me) } // set/add delegate attendee with RSVP=TRUE and DELEGATED-FROM parameter @@ -635,7 +637,7 @@ class libcalendaring_itip // add localized texts for the delegation dialog if (in_array('delegated', $actions)) { foreach (array('itipdelegated','itipcomment','delegateinvitation', - 'delegateto','delegatersvpme','delegateinvalidaddress') as $label) { + 'delegateto','delegatersvpme','delegateinvalidaddress','cancel') as $label) { $this->rc->output->command('add_label', "itip.$label", $this->gettext($label)); } } diff --git a/plugins/libcalendaring/libcalendaring.js b/plugins/libcalendaring/libcalendaring.js index bb5a66f9..f06b55a0 100644 --- a/plugins/libcalendaring/libcalendaring.js +++ b/plugins/libcalendaring/libcalendaring.js @@ -916,7 +916,8 @@ rcube_libcalendaring.itip_delegate_dialog = function(callback, selector) rcm.env.recipients_delimiter = ''; }, close: function(event, ui) { - rcmail.ksearch_blur(); + rcm = rcmail.is_framed() ? parent.rcmail : rcmail; + rcm.ksearch_blur(); $(this).remove(); } });