Add current user as event organizer on new events

This commit is contained in:
Thomas Bruederli 2011-07-27 11:26:39 +02:00
parent b240c3b1e1
commit a6e22b5dc6

View file

@ -43,11 +43,10 @@ function rcube_calendar_ui(settings)
var day_clicked = day_clicked_ts = 0; var day_clicked = day_clicked_ts = 0;
var ignore_click = false; var ignore_click = false;
var event_defaults = { free_busy:'busy' }; var event_defaults = { free_busy:'busy' };
var event_attendees = null; var event_attendees = [];
var attendees_list; var attendees_list;
var freebusy_ui = { workinhoursonly:false }; var freebusy_ui = { workinhoursonly:false, needsupdate:false };
var freebusy_data = {}; var freebusy_data = {};
var freebusy_needsupdate;
// general datepicker settings // general datepicker settings
var datepicker_settings = { var datepicker_settings = {
@ -345,9 +344,9 @@ function rcube_calendar_ui(settings)
var $dialog = $("#eventedit"); var $dialog = $("#eventedit");
var calendar = event.calendar && me.calendars[event.calendar] ? me.calendars[event.calendar] : { editable:action=='new' }; var calendar = event.calendar && me.calendars[event.calendar] ? me.calendars[event.calendar] : { editable:action=='new' };
me.selected_event = $.extend(event_defaults, event); // clone event object (with defaults) me.selected_event = $.extend($.extend({}, event_defaults), event); // clone event object (with defaults)
event = me.selected_event; // change reference to clone event = me.selected_event; // change reference to clone
freebusy_needsupdate = false; freebusy_ui.needsupdate = false;
// reset dialog first, enable/disable fields according to editable state // reset dialog first, enable/disable fields according to editable state
$('#eventtabs').get(0).reset(); $('#eventtabs').get(0).reset();
@ -688,9 +687,9 @@ function rcube_calendar_ui(settings)
$('#edit-starttime').val(freebusy_ui.starttime.val()); $('#edit-starttime').val(freebusy_ui.starttime.val());
$('#edit-enddate').val(freebusy_ui.enddate.val()); $('#edit-enddate').val(freebusy_ui.enddate.val());
$('#edit-endtime').val(freebusy_ui.endtime.val()); $('#edit-endtime').val(freebusy_ui.endtime.val());
if (freebusy_needsupdate) if (freebusy_ui.needsupdate)
update_freebusy_status(me.selected_event); update_freebusy_status(me.selected_event);
freebusy_needsupdate = false; freebusy_ui.needsupdate = false;
$dialog.dialog("close"); $dialog.dialog("close");
}; };
@ -938,7 +937,7 @@ function rcube_calendar_ui(settings)
freebusy_ui.starttime.val($.fullCalendar.formatDate(start, settings['time_format'])); freebusy_ui.starttime.val($.fullCalendar.formatDate(start, settings['time_format']));
freebusy_ui.enddate.val($.fullCalendar.formatDate(end, settings['date_format'])); freebusy_ui.enddate.val($.fullCalendar.formatDate(end, settings['date_format']));
freebusy_ui.endtime.val($.fullCalendar.formatDate(end, settings['time_format'])); freebusy_ui.endtime.val($.fullCalendar.formatDate(end, settings['time_format']));
freebusy_needsupdate = true; freebusy_ui.needsupdate = true;
}; };
// attempt to find a time slot where all attemdees are available // attempt to find a time slot where all attemdees are available
@ -1042,7 +1041,7 @@ function rcube_calendar_ui(settings)
me.selected_event.start = parse_datetime(allday.checked ? '00:00' : $('#edit-starttime').val(), $('#edit-startdate').val()); me.selected_event.start = parse_datetime(allday.checked ? '00:00' : $('#edit-starttime').val(), $('#edit-startdate').val());
me.selected_event.end = parse_datetime(allday.checked ? '23:59' : $('#edit-endtime').val(), $('#edit-enddate').val()); me.selected_event.end = parse_datetime(allday.checked ? '23:59' : $('#edit-endtime').val(), $('#edit-enddate').val());
if (event_attendees) if (event_attendees)
freebusy_needsupdate = true; freebusy_ui.needsupdate = true;
$('#edit-startdate').data('duration', Math.round((me.selected_event.end.getTime() - me.selected_event.start.getTime()) / 1000)); $('#edit-startdate').data('duration', Math.round((me.selected_event.end.getTime() - me.selected_event.start.getTime()) / 1000));
} }
}; };
@ -1149,7 +1148,7 @@ function rcube_calendar_ui(settings)
check_freebusy_status(icons.get(i), event_attendees[i].email, event); check_freebusy_status(icons.get(i), event_attendees[i].email, event);
} }
freebusy_needsupdate = false; freebusy_ui.needsupdate = false;
}; };
// load free-busy status from server and update icon accordingly // load free-busy status from server and update icon accordingly
@ -1832,8 +1831,12 @@ function rcube_calendar_ui(settings)
show: function(event, ui) { show: function(event, ui) {
if (ui.panel.id == 'event-tab-3') { if (ui.panel.id == 'event-tab-3') {
$('#edit-attendee-name').select(); $('#edit-attendee-name').select();
if (freebusy_needsupdate && me.selected_event) // update free-busy status if needed
if (freebusy_ui.needsupdate && me.selected_event)
update_freebusy_status(me.selected_event); update_freebusy_status(me.selected_event);
// add current user as organizer if non added yet
if (!event_attendees.length && !me.selected_event.id)
add_attendee($.extend({ role:'ORGANIZER' }, settings.event_owner));
} }
} }
}); });