diff options
Diffstat (limited to 'plugins/newmail_notifier/newmail_notifier.js')
| -rw-r--r-- | plugins/newmail_notifier/newmail_notifier.js | 106 | 
1 files changed, 24 insertions, 82 deletions
| diff --git a/plugins/newmail_notifier/newmail_notifier.js b/plugins/newmail_notifier/newmail_notifier.js index b00f33d10..45238eb56 100644 --- a/plugins/newmail_notifier/newmail_notifier.js +++ b/plugins/newmail_notifier/newmail_notifier.js @@ -34,13 +34,6 @@ function newmail_notifier_stop(prop)          $('<link rel="shortcut icon" href="'+rcmail.env.favicon_href+'"/>').replaceAll('link[rel="shortcut icon"]');          rcmail.env.favicon_changed = 0;      } - -    // Remove IE icon overlay if we're pinned to Taskbar -    try { -        if(window.external.msIsSiteMode()) { -            window.external.msSiteModeClearIconOverlay(); -        } -    } catch(e) {}  }  // Basic notification: window.focus and favicon change @@ -59,13 +52,6 @@ function newmail_notifier_basic()      rcmail.env.favicon_changed = 1;      link.replaceAll(oldlink); - -    // Add IE icon overlay if we're pinned to Taskbar -    try { -        if (window.external.msIsSiteMode()) { -            window.external.msSiteModeSetIconOverlay('plugins/newmail_notifier/overlay.ico', rcmail.gettext('title', 'newmail_notifier')); -        } -    } catch(e) {}  }  // Sound notification @@ -86,79 +72,44 @@ function newmail_notifier_sound()      }  } -// Desktop notification -// - Require Chrome or Firefox latest version (22+) / 21.0 or older with a plugin +// Desktop notification (need Chrome or Firefox with a plugin)  function newmail_notifier_desktop(body)  { +    var dn = window.webkitNotifications; -/** - * Fix: As of 17 June 2013, Chrome/Chromium does not implement Notification.permission correctly that - *      it gives 'undefined' until an object has been created: - *      https://code.google.com/p/chromium/issues/detail?id=163226 - * - */ -    try { -        if (Notification.permission == 'granted' || Notification.permission == undefined) { -            var popup = new Notification(rcmail.gettext('title', 'newmail_notifier'), { -                dir: "auto", -                lang: "", -                body: body, -                tag: "newmail_notifier", -                icon: "plugins/newmail_notifier/mail.png", -            }); -            popup.onclick = function() { -                this.close(); -            } -            setTimeout(function() { popup.close(); }, 10000); // close after 10 seconds -            if (popup.permission == 'granted') return true; +    if (dn && !dn.checkPermission()) { +        if (rcmail.newmail_popup) +            rcmail.newmail_popup.cancel(); +        var popup = window.webkitNotifications.createNotification('plugins/newmail_notifier/mail.png', +            rcmail.gettext('title', 'newmail_notifier'), body); +        popup.onclick = function() { +            this.cancel();          } +        popup.show(); +        setTimeout(function() { popup.cancel(); }, 10000); // close after 10 seconds +        rcmail.newmail_popup = popup; +        return true;      } -    catch (e) { -        var dn = window.webkitNotifications; -        if (dn && !dn.checkPermission()) { -            if (rcmail.newmail_popup) -                rcmail.newmail_popup.cancel(); -            var popup = window.webkitNotifications.createNotification('plugins/newmail_notifier/mail.png', -                rcmail.gettext('title', 'newmail_notifier'), body); -            popup.onclick = function() { -                this.cancel(); -            } -            popup.show(); -            setTimeout(function() { popup.cancel(); }, 10000); // close after 10 seconds -            rcmail.newmail_popup = popup; -            return true; -        } -    }      return false;  }  function newmail_notifier_test_desktop()  { -    var txt = rcmail.gettext('testbody', 'newmail_notifier'); +    var dn = window.webkitNotifications, +        txt = rcmail.gettext('testbody', 'newmail_notifier'); -    // W3C draft implementation (with fix for Chrome/Chromium) -    try { -        var testNotification = new window.Notification(txt, {tag: "newmail_notifier"});  // Try to show a test message -        if (Notification.permission !== 'granted' || (testNotification.permission && testNotification.permission !== 'granted')) -            newmail_notifier_desktop_authorize(); -    } -    // webkit implementation -    catch (e) { -        var dn = window.webkitNotifications; -        if (dn) { -            if (!dn.checkPermission()) -                newmail_notifier_desktop(txt); -            else -                dn.requestPermission(function() { -                    if (!newmail_notifier_desktop(txt)) -                        rcmail.display_message(rcmail.gettext('desktopdisabled', 'newmail_notifier'), 'error'); -                }); -        } +    if (dn) { +        if (!dn.checkPermission()) +            newmail_notifier_desktop(txt);          else -            // Everything fails, means the browser has no support -            rcmail.display_message(rcmail.gettext('desktopunsupported', 'newmail_notifier'), 'error'); +            dn.requestPermission(function() { +                if (!newmail_notifier_desktop(txt)) +                    rcmail.display_message(rcmail.gettext('desktopdisabled', 'newmail_notifier'), 'error'); +            });      } +    else +        rcmail.display_message(rcmail.gettext('desktopunsupported', 'newmail_notifier'), 'error');  }  function newmail_notifier_test_basic() @@ -170,12 +121,3 @@ function newmail_notifier_test_sound()  {      newmail_notifier_sound();  } - -function newmail_notifier_desktop_authorize() { -        Notification.requestPermission(function(perm) { -                if (perm == 'denied') -                        rcmail.display_message(rcmail.gettext('desktopdisabled', 'newmail_notifier'), 'error'); -                if (perm == 'granted') -                        newmail_notifier_test_desktop();  // Test again, which should show test message -        }); -} | 
