/** * html5_notifier * Shows a desktop notification every time a new (recent) mail comes in * * @version 0.5.0 - 19.12.2013 * @author Tilman Stremlau * @website stremlau.net/html5_notifier * @licence GNU GPL * **/ function rcmail_show_notification(message) { if (use_notifications) { if ("Notification" in window) { var notification = new Notification(rcmail.gettext('notification_title', 'html5_notifier').replace('[from]', message.from), { icon: './plugins/html5_notifier/images/new_mail.png', body: message.subject }); notification.onclick = function() { if(message.opentype == '1') { rcmail.open_window('?_task=mail&_action=show&_uid='+message.uid); } else { window.open('?_task=mail&_action=show&_extwin=1&_uid='+message.uid); } } if (parseInt(message.duration) > 0) { setTimeout(function(){ notification.close(); }, (parseInt(message.duration)*1000)); } } } } function rcmail_browser_notifications() { if ("Notification" in window && Notification.permission) { if (Notification.permission === "granted") { rcmail.display_message(rcmail.gettext('ok_notifications', 'html5_notifier'), 'notice'); } else { Notification.requestPermission(rcmail_check_notifications); } } else if (window.webkitNotifications) { if (window.webkitNotifications.checkPermission() == 0) { rcmail.display_message(rcmail.gettext('ok_notifications', 'html5_notifier'), 'notice'); } else { window.webkitNotifications.requestPermission(rcmail_check_notifications); } } else { rcmail.display_message(rcmail.gettext('no_notifications', 'html5_notifier'), 'error'); } } function rcmail_browser_notifications_test() { if (use_notifications) { rcmail.display_message(rcmail.gettext('check_ok', 'html5_notifier'), 'notice'); var message = new Object(); message.duration = 8; message.uid = 0; message.subject = 'It Works!'; message.from = 'TESTMAN'; message.opentype = $('select[name=_html5_notifier_popuptype]').val(); rcmail_show_notification(message); } else { if ("Notification" in window && Notification.permission) { if (Notification.permission == 'denied') { rcmail.display_message(rcmail.gettext('check_fail_blocked', 'html5_notifier'), 'error'); return false; } } else if (window.webkitNotifications) { if (window.webkitNotifications.checkPermission() == 2) { rcmail.display_message(rcmail.gettext('check_fail_blocked', 'html5_notifier'), 'error'); return false; } } rcmail.display_message(rcmail.gettext('check_fail', 'html5_notifier'), 'error'); } } function rcmail_browser_notifications_colorate() { if ("Notification" in window && Notification.permission) { var broco = $('#rcmfd_html5_notifier_browser_conf'); if (broco) { switch (Notification.permission) { case 'granted': broco.css('color', 'green'); break; case 'default': broco.css('color', 'orange'); break; case 'denied': broco.css('color', 'red'); break; } } } else if (window.webkitNotifications) { var broco = $('#rcmfd_html5_notifier_browser_conf'); if (broco) { switch (window.webkitNotifications.checkPermission()) { case 0: broco.css('color', 'green'); break; case 1: broco.css('color', 'orange'); break; case 2: broco.css('color', 'red'); break; } } } } var use_notifications = false; var rcmail_check_notifications = function(e) { if ("Notification" in window && Notification.permission) { if (Notification.permission === "granted") { use_notifications = true; } } else if (window.webkitNotifications) { if (window.webkitNotifications.checkPermission() == 0) { use_notifications = true; } } rcmail_browser_notifications_colorate(); } if (window.rcmail) { rcmail.addEventListener('plugin.showNotification', rcmail_show_notification); rcmail.addEventListener('init', rcmail_check_notifications); }