Always show real free-busy status, even for organizer and acceppted attendees (#317); let large free-busy table scroll (#321)
This commit is contained in:
parent
be4f5d43ef
commit
e851b53e5a
4 changed files with 18 additions and 9 deletions
|
@ -296,6 +296,11 @@ function rcube_calendar_ui(settings)
|
||||||
html += '<span class="attendee ' + String(data.role == 'ORGANIZER' ? 'organizer' : data.status).toLowerCase() + '">' + dispname + '</span> ';
|
html += '<span class="attendee ' + String(data.role == 'ORGANIZER' ? 'organizer' : data.status).toLowerCase() + '">' + dispname + '</span> ';
|
||||||
if (data.role == 'ORGANIZER')
|
if (data.role == 'ORGANIZER')
|
||||||
organizer = true;
|
organizer = true;
|
||||||
|
// stop listing attendees
|
||||||
|
if (j == 7 && event.attendees.length >= 7) {
|
||||||
|
html += ' <em>' + rcmail.gettext('andnmore', 'calendar').replace('$nr', event.attendees.length - j - 1) + '</em>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (html && event.attendees.length > 1 || !organizer) {
|
if (html && event.attendees.length > 1 || !organizer) {
|
||||||
$('#event-attendees').show()
|
$('#event-attendees').show()
|
||||||
|
@ -559,6 +564,10 @@ function rcube_calendar_ui(settings)
|
||||||
data.attendees[i].role = $(elem).val();
|
data.attendees[i].role = $(elem).val();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// don't submit attendees if only myself is added as organizer
|
||||||
|
if (data.attendees.length == 1 && data.attendees[0].role == 'ORGANIZER' && data.attendees[0].email == settings.event_owner.email)
|
||||||
|
data.attendees = [];
|
||||||
|
|
||||||
// tell server to send notifications
|
// tell server to send notifications
|
||||||
if (data.attendees.length && ((event.id && notify.checked) || (!event.id && invite.checked))) {
|
if (data.attendees.length && ((event.id && notify.checked) || (!event.id && invite.checked))) {
|
||||||
data.notify = 1;
|
data.notify = 1;
|
||||||
|
@ -768,10 +777,7 @@ function rcube_calendar_ui(settings)
|
||||||
// adjust dialog size to fit grid without scrolling
|
// adjust dialog size to fit grid without scrolling
|
||||||
var gridw = $('#schedule-freebusy-times').width();
|
var gridw = $('#schedule-freebusy-times').width();
|
||||||
var overflow = gridw - $('#attendees-freebusy-table td.times').width() + 1;
|
var overflow = gridw - $('#attendees-freebusy-table td.times').width() + 1;
|
||||||
if (overflow > 0) {
|
me.dialog_resize($dialog.get(0), $dialog.height() + (bw.ie ? 20 : 0), 800 + Math.max(0, overflow));
|
||||||
$dialog.dialog('option', 'width', Math.min((window.innerWidth || document.documentElement.clientWidth) - 40, 850 + overflow));
|
|
||||||
$dialog.dialog('option', 'position', ['center', 'center']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// fetch data from server
|
// fetch data from server
|
||||||
freebusy_ui.loading = 0;
|
freebusy_ui.loading = 0;
|
||||||
|
@ -1233,8 +1239,6 @@ function rcube_calendar_ui(settings)
|
||||||
|
|
||||||
// availability
|
// availability
|
||||||
var avail = data.email ? 'loading' : 'unknown';
|
var avail = data.email ? 'loading' : 'unknown';
|
||||||
if (edit && data.role == 'ORGANIZER' && data.status == 'ACCEPTED')
|
|
||||||
avail = 'free';
|
|
||||||
|
|
||||||
// delete icon
|
// delete icon
|
||||||
var icon = rcmail.env.deleteicon ? '<img src="' + rcmail.env.deleteicon + '" alt="" />' : rcmail.gettext('delete');
|
var icon = rcmail.env.deleteicon ? '<img src="' + rcmail.env.deleteicon + '" alt="" />' : rcmail.gettext('delete');
|
||||||
|
@ -1267,7 +1271,7 @@ function rcube_calendar_ui(settings)
|
||||||
{
|
{
|
||||||
var icons = attendees_list.find('img.availabilityicon');
|
var icons = attendees_list.find('img.availabilityicon');
|
||||||
for (var i=0; i < event_attendees.length; i++) {
|
for (var i=0; i < event_attendees.length; i++) {
|
||||||
if (icons.get(i) && event_attendees[i].email && event_attendees[i].status != 'ACCEPTED')
|
if (icons.get(i) && event_attendees[i].email)
|
||||||
check_freebusy_status(icons.get(i), event_attendees[i].email, event);
|
check_freebusy_status(icons.get(i), event_attendees[i].email, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2023,7 +2027,7 @@ function rcube_calendar_ui(settings)
|
||||||
if (freebusy_ui.needsupdate && me.selected_event)
|
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
|
// add current user as organizer if non added yet
|
||||||
if (!event_attendees.length && !me.selected_event.id)
|
if (!event_attendees.length)
|
||||||
add_attendee($.extend({ role:'ORGANIZER' }, settings.event_owner));
|
add_attendee($.extend({ role:'ORGANIZER' }, settings.event_owner));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2091,8 +2095,10 @@ function rcube_calendar_ui(settings)
|
||||||
|
|
||||||
$('#edit-attendee-add').click(function(){
|
$('#edit-attendee-add').click(function(){
|
||||||
var input = $('#edit-attendee-name');
|
var input = $('#edit-attendee-name');
|
||||||
if (add_attendees(input.val()))
|
if (add_attendees(input.val())) {
|
||||||
input.val('');
|
input.val('');
|
||||||
|
rcmail.ksearch_blur();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// keep these two checkboxes in sync
|
// keep these two checkboxes in sync
|
||||||
|
|
|
@ -60,6 +60,7 @@ $labels['parentcalendar'] = 'Übergeordneter Kalender';
|
||||||
$labels['importtocalendar'] = 'In Kalender übernehmen';
|
$labels['importtocalendar'] = 'In Kalender übernehmen';
|
||||||
$labels['searchearlierdates'] = '« Frühere Termine suchen';
|
$labels['searchearlierdates'] = '« Frühere Termine suchen';
|
||||||
$labels['searchlaterdates'] = 'Spätere Termine suchen »';
|
$labels['searchlaterdates'] = 'Spätere Termine suchen »';
|
||||||
|
$labels['andnmore'] = 'und $nr weitere';
|
||||||
|
|
||||||
// alarm/reminder settings
|
// alarm/reminder settings
|
||||||
$labels['showalarms'] = 'Erinnerungen anzeigen';
|
$labels['showalarms'] = 'Erinnerungen anzeigen';
|
||||||
|
|
|
@ -60,6 +60,7 @@ $labels['parentcalendar'] = 'Übergeordneter Kalender';
|
||||||
$labels['importtocalendar'] = 'In Kalender übernehmen';
|
$labels['importtocalendar'] = 'In Kalender übernehmen';
|
||||||
$labels['searchearlierdates'] = '« Frühere Termine suchen';
|
$labels['searchearlierdates'] = '« Frühere Termine suchen';
|
||||||
$labels['searchlaterdates'] = 'Spätere Termine suchen »';
|
$labels['searchlaterdates'] = 'Spätere Termine suchen »';
|
||||||
|
$labels['andnmore'] = 'und $nr weitere';
|
||||||
|
|
||||||
// alarm/reminder settings
|
// alarm/reminder settings
|
||||||
$labels['showalarms'] = 'Erinnerungen anzeigen';
|
$labels['showalarms'] = 'Erinnerungen anzeigen';
|
||||||
|
|
|
@ -60,6 +60,7 @@ $labels['parentcalendar'] = 'Superior calendar';
|
||||||
$labels['importtocalendar'] = 'Save to my calendar';
|
$labels['importtocalendar'] = 'Save to my calendar';
|
||||||
$labels['searchearlierdates'] = '« Search for earlier events';
|
$labels['searchearlierdates'] = '« Search for earlier events';
|
||||||
$labels['searchlaterdates'] = 'Search for later events »';
|
$labels['searchlaterdates'] = 'Search for later events »';
|
||||||
|
$labels['andnmore'] = 'and $nr more';
|
||||||
|
|
||||||
// alarm/reminder settings
|
// alarm/reminder settings
|
||||||
$labels['showalarms'] = 'Show alarms';
|
$labels['showalarms'] = 'Show alarms';
|
||||||
|
|
Loading…
Add table
Reference in a new issue