diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js index f6507012..ea494c36 100644 --- a/plugins/calendar/calendar_ui.js +++ b/plugins/calendar/calendar_ui.js @@ -515,13 +515,13 @@ function rcube_calendar_ui(settings) return (j - k); }); - var data, mystatus = null, rsvp, line, morelink, html = '', overflow = ''; + var data, mystatus = null, rsvp, line, morelink, html = '', overflow = '', + organizer = is_organizer(event); + for (var j=0; j < event.attendees.length; j++) { data = event.attendees[j]; if (data.email) { - if (data.role == 'ORGANIZER') - organizer = true; - else if (settings.identity.emails.indexOf(';'+data.email) >= 0) { + if (data.role != 'ORGANIZER' && settings.identity.emails.indexOf(';'+data.email) >= 0) { mystatus = data.status.toLowerCase(); if (data.status == 'NEEDS-ACTION' || data.status == 'TENTATIVE' || data.rsvp) rsvp = mystatus; @@ -540,7 +540,7 @@ function rcube_calendar_ui(settings) morelink = $('').html(rcmail.gettext('andnmore', 'calendar').replace('$nr', event.attendees.length - j - 1)); } } - + if (html && (event.attendees.length > 1 || !organizer)) { $('#event-attendees').show() .children('.event-text') @@ -570,7 +570,7 @@ function rcube_calendar_ui(settings) .text(rcmail.gettext('status' + mystatus, 'libcalendaring')); } - var show_rsvp = rsvp && !is_organizer(event) && event.status != 'CANCELLED' && has_permission(calendar, 'v'); + var show_rsvp = rsvp && !organizer && event.status != 'CANCELLED' && has_permission(calendar, 'v'); $('#event-rsvp')[(show_rsvp ? 'show' : 'hide')](); $('#event-rsvp .rsvp-buttons input').prop('disabled', false).filter('input[rel='+mystatus+']').prop('disabled', true); @@ -793,7 +793,7 @@ function rcube_calendar_ui(settings) var load_attendees_tab = function() { - var j, data, reply_selected = 0; + var j, data, organizer_attendee, reply_selected = 0; if (event.attendees) { for (j=0; j < event.attendees.length; j++) { data = event.attendees[j]; @@ -805,6 +805,9 @@ function rcube_calendar_ui(settings) add_attendee(data, !allow_invitations); if (allow_invitations && data.role != 'ORGANIZER' && !data.noreply) reply_selected++; + + if (data.role == 'ORGANIZER') + organizer_attendee = data; } } @@ -820,6 +823,15 @@ function rcube_calendar_ui(settings) return false; } }); + + // In case the user is not the (shared) event organizer we'll add the organizer to the selection list + if (!identity_id && !organizer && organizer_attendee) { + var organizer_name = organizer_attendee.email; + if (organizer_attendee.name) + organizer_name = '"' + organizer_attendee.name + '" <' + organizer_name + '>'; + $('#edit-identities-list').append($('