diff --git a/plugins/libcalendaring/alarm.mp3 b/plugins/libcalendaring/alarm.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@').attr('id', 'alarm-display'); + var i, actions, adismiss, asnooze, alarm, html, + audio_alarms = [], records = [], event_ids = [], buttons = {}; - var i, actions, adismiss, asnooze, alarm, html, event_ids = [], buttons = {}; for (i=0; i < alarms.length; i++) { alarm = alarms[i]; alarm.start = this.parseISO8601(alarm.start); alarm.end = this.parseISO8601(alarm.end); + + if (alarm.action == 'AUDIO') { + audio_alarms.push(alarm); + continue; + } + event_ids.push(alarm.id); html = '

' + Q(alarm.title) + '

'; @@ -594,9 +600,17 @@ }); actions = $('
').addClass('alarm-actions').append(adismiss.data('id', alarm.id)).append(asnooze.data('id', alarm.id)); - $('
').addClass('alarm-item').html(html).append(actions).appendTo(this.alarm_dialog); + records.push($('
').addClass('alarm-item').html(html).append(actions)); } + if (audio_alarms.length) + this.audio_alarms(audio_alarms); + + if (!records.length) + return; + + this.alarm_dialog = $('
').attr('id', 'alarm-display').append(records); + buttons[rcmail.gettext('close')] = function() { $(this).dialog('close'); }; @@ -636,6 +650,38 @@ }; /** + * Display a notification and play a sound for a set of alarms + */ + this.audio_alarms = function(alarms) + { + var elem, txt = [], + src = rcmail.assets_path('plugins/libcalendaring/alarm'), + plugin = navigator.mimeTypes ? navigator.mimeTypes['audio/mp3'] : {}; + + // first generate and display notification text + $.each(alarms, function() { txt.push(this.title); }); + + rcmail.display_message(rcmail.gettext('alarmtitle','libcalendaring') + ': ' + Q(txt.join(', ')), 'notice', 10000); + + // Internet Explorer does not support wav files, + // support in other browsers depends on enabled plugins, + // so we use wav as a fallback + src += bw.ie || (plugin && plugin.enabledPlugin) ? '.mp3' : '.wav'; + + // HTML5 + try { + elem = $('