Elastic: Alarms dialog

This commit is contained in:
Aleksander Machniak 2018-03-26 11:01:57 +02:00
parent 3b6c5b7bfd
commit fcde82bb91
2 changed files with 95 additions and 30 deletions

View file

@ -629,8 +629,8 @@ function rcube_libcalendaring(settings)
if (this.alarm_dialog) if (this.alarm_dialog)
this.alarm_dialog.dialog('destroy').remove(); this.alarm_dialog.dialog('destroy').remove();
var i, actions, adismiss, asnooze, alarm, html, var i, actions, adismiss, asnooze, alarm, html, type,
audio_alarms = [], records = [], event_ids = [], buttons = {}; audio_alarms = [], records = [], event_ids = [], buttons = [];
for (i=0; i < alarms.length; i++) { for (i=0; i < alarms.length; i++) {
alarm = alarms[i]; alarm = alarms[i];
@ -644,21 +644,27 @@ function rcube_libcalendaring(settings)
event_ids.push(alarm.id); event_ids.push(alarm.id);
html = '<h3 class="event-title">' + Q(alarm.title) + '</h3>'; type = alarm.id.match(/^task/) ? 'type-task' : 'type-event';
html = '<h3 class="event-title ' + type + '">' + Q(alarm.title) + '</h3>';
html += '<div class="event-section">' + Q(alarm.location || '') + '</div>'; html += '<div class="event-section">' + Q(alarm.location || '') + '</div>';
html += '<div class="event-section">' + Q(this.event_date_text(alarm)) + '</div>'; html += '<div class="event-section">' + Q(this.event_date_text(alarm)) + '</div>';
adismiss = $('<a href="#" class="alarm-action-dismiss"></a>').html(rcmail.gettext('dismiss','libcalendaring')).click(function(e){ adismiss = $('<a href="#" class="alarm-action-dismiss"></a>')
me.dismiss_link = $(this); .text(rcmail.gettext('dismiss','libcalendaring'))
me.dismiss_alarm(me.dismiss_link.data('id'), 0, e); .click(function(e) {
}); me.dismiss_link = $(this);
asnooze = $('<a href="#" class="alarm-action-snooze"></a>').html(rcmail.gettext('snooze','libcalendaring')).click(function(e){ me.dismiss_alarm(me.dismiss_link.data('id'), 0, e);
me.snooze_dropdown($(this), e); });
e.stopPropagation(); asnooze = $('<a href="#" class="alarm-action-snooze"></a>')
return false; .text(rcmail.gettext('snooze','libcalendaring'))
}); .click(function(e) {
actions = $('<div>').addClass('alarm-actions').append(adismiss.data('id', alarm.id)).append(asnooze.data('id', alarm.id)); me.snooze_dropdown($(this), e);
e.stopPropagation();
return false;
});
actions = $('<div>').addClass('alarm-actions').append(adismiss.data('id', alarm.id)).append(asnooze.data('id', alarm.id));
records.push($('<div>').addClass('alarm-item').html(html).append(actions)); records.push($('<div>').addClass('alarm-item').html(html).append(actions));
} }
@ -670,18 +676,26 @@ function rcube_libcalendaring(settings)
this.alarm_dialog = $('<div>').attr('id', 'alarm-display').append(records); this.alarm_dialog = $('<div>').attr('id', 'alarm-display').append(records);
buttons[rcmail.gettext('close')] = function() { buttons.push({
$(this).dialog('close'); text: rcmail.gettext('close'),
}; click: function() {
$(this).dialog('close');
},
'class': 'cancel'
});
buttons[rcmail.gettext('dismissall','libcalendaring')] = function(e) { buttons.push({
// submit dismissed event_ids to server text: rcmail.gettext('dismissall','libcalendaring'),
me.dismiss_alarm(me.alarm_ids.join(','), 0, e); click: function(e) {
$(this).dialog('close'); // submit dismissed event_ids to server
}; me.dismiss_alarm(me.alarm_ids.join(','), 0, e);
$(this).dialog('close');
},
'class': 'delete'
});
this.alarm_dialog.appendTo(document.body).dialog({ this.alarm_dialog.appendTo(document.body).dialog({
modal: false, modal: true,
resizable: true, resizable: true,
closeOnEscape: false, closeOnEscape: false,
dialogClass: 'alarms', dialogClass: 'alarms',
@ -725,6 +739,7 @@ function rcube_libcalendaring(settings)
// Internet Explorer does not support wav files, // Internet Explorer does not support wav files,
// support in other browsers depends on enabled plugins, // support in other browsers depends on enabled plugins,
// so we use wav as a fallback // so we use wav as a fallback
src += bw.ie || (plugin && plugin.enabledPlugin) ? '.mp3' : '.wav'; src += bw.ie || (plugin && plugin.enabledPlugin) ? '.mp3' : '.wav';
// HTML5 // HTML5
@ -1192,7 +1207,7 @@ rcube_libcalendaring.itip_delegate_dialog = function(callback, selector)
setTimeout(function() { dialog.dialog("close"); }, 500); setTimeout(function() { dialog.dialog("close"); }, 500);
} }
else { else {
alert(rcmail.gettext('itip.delegateinvalidaddress')); rcmail.alert_dialog(rcmail.gettext('itip.delegateinvalidaddress'));
$('#itip-delegate-to', doc).focus(); $('#itip-delegate-to', doc).focus();
} }
} }
@ -1271,12 +1286,9 @@ rcube_libcalendaring.itip_rsvp_recurring = function(btn, callback)
*/ */
rcube_libcalendaring.remove_from_itip = function(event, task, title) rcube_libcalendaring.remove_from_itip = function(event, task, title)
{ {
if (confirm(rcmail.gettext('itip.deleteobjectconfirm').replace('$title', title))) { rcmail.confirm_dialog(rcmail.gettext('itip.deleteobjectconfirm').replace('$title', title), 'delete', function() {
rcmail.http_post(task + '/itip-remove', rcmail.http_post(task + '/itip-remove', event, rcmail.set_busy(true, 'itip.savingdata'));
event, });
rcmail.set_busy(true, 'itip.savingdata')
);
}
}; };
/** /**

View file

@ -209,7 +209,6 @@
} }
} }
.attendees-comentbox { .attendees-comentbox {
label { label {
display: inline; display: inline;
@ -554,3 +553,57 @@
} }
} }
} }
#alarm-display {
h3 {
font-size: 1.2rem;
margin-bottom: .25rem;
&:before {
&:extend(.font-icon-class);
.font-icon-regular(@fa-var-calendar-alt);
font-size: 1em;
}
&.type-task:before {
.font-icon-regular(@fa-var-calendar-check);
}
}
.event-section {
font-size: .9rem;
color: @color-black-shade-text;
white-space: nowrap;
.overflow-ellipsis;
}
.alarm-actions {
text-align: right;
margin-bottom: .25rem;
a {
&:first-child {
margin-right: 1em;
}
&:before {
&:extend(.font-icon-class);
display: inline;
float: none;
}
}
}
a.alarm-action-snooze:before {
content: @fa-var-bell-slash;
}
a.alarm-action-dismiss:before {
content: @fa-var-trash-alt;
}
}
#alarm-snooze-dropdown a:before {
.font-icon-regular(@fa-var-clock);
}