From c28d62df9178fd86f78c2691e1d1f3341c773d57 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Tue, 26 Apr 2022 11:59:45 +0200 Subject: [PATCH] Fix adding resources to new events --- plugins/calendar/calendar_ui.js | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js index 51ed0411..7ca29b59 100644 --- a/plugins/calendar/calendar_ui.js +++ b/plugins/calendar/calendar_ui.js @@ -866,12 +866,6 @@ function rcube_calendar_ui(settings) if (i.match(/^rcmfile(.+)/)) data.attachments.push(RegExp.$1); - // read attendee roles - $('select.edit-attendee-role').each(function(i, elem){ - if (data.attendees[i]) - data.attendees[i].role = $(elem).val(); - }); - if (organizer) data._identity = $('#edit-identities-list option:selected').val(); @@ -1220,13 +1214,7 @@ function rcube_calendar_ui(settings) freebusy_ui.endtime.val("13:00").hide(); event.allDay = true; } - - // read attendee roles from drop-downs - $('select.edit-attendee-role').each(function(i, elem){ - if (event_attendees[i]) - event_attendees[i].role = $(elem).val(); - }); - + // render time slots var now = new Date(), fb_start = new Date(), fb_end = new Date(); fb_start.setTime(event.start); @@ -1261,7 +1249,7 @@ function rcube_calendar_ui(settings) $('#schedule-attendees-list').html(list_html) .unbind('click.roleicons') - .bind('click.roleicons', function(e){ + .bind('click.roleicons', function(e) { // toggle attendee status upon click on icon if (e.target.id && e.target.id.match(/rcmlia(.+)/)) { var attendee, domid = RegExp.$1, @@ -1299,12 +1287,15 @@ function rcube_calendar_ui(settings) $('#edit-endtime').val(freebusy_ui.endtime.val()); // write role changes back to main dialog - $('select.edit-attendee-role').each(function(i, elem){ - if (event_attendees[i] && freebusy_ui.attendees[i]) { - event_attendees[i].role = freebusy_ui.attendees[i].role; - $(elem).val(event_attendees[i].role); + for (var domid in freebusy_ui.attendees) { + var attendee = freebusy_ui.attendees[domid], + event_attendee = event_attendees.find(function(item) { return item.email == attendee.email}); + + if (event_attendee && attendee.role != event_attendee.role) { + event_attendee.role = attendee.role; + $('select.edit-attendee-role').filter(function(i,elem) { return $(elem).data('email') == attendee.email; }).val(attendee.role); } - }); + } if (freebusy_ui.needsupdate) update_freebusy_status(me.selected_event); @@ -1936,6 +1927,7 @@ function rcube_calendar_ui(settings) dispname = rcmail.env['identities-selector']; var select = '