diff options
author | Thomas Bruederli <thomas@roundcube.net> | 2014-03-21 18:32:04 +0100 |
---|---|---|
committer | Thomas Bruederli <thomas@roundcube.net> | 2014-03-21 18:33:19 +0100 |
commit | 5934e238242cb0d96e128bfad3905809b5aeb093 (patch) | |
tree | 4bff16b02d22ee55ee009cd1d17b30bba95f798b /program | |
parent | e5bb1357a5bad2f5ed9b488425d6b195296ca595 (diff) |
Disable link registering mailto: protocol handler if not supported by the browser (#1489569)
Diffstat (limited to 'program')
-rw-r--r-- | program/js/app.js | 26 | ||||
-rw-r--r-- | program/steps/settings/func.inc | 9 |
2 files changed, 23 insertions, 12 deletions
diff --git a/program/js/app.js b/program/js/app.js index 605df57fa..f9d4bb056 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -7510,20 +7510,28 @@ function rcube_webmail() try { window.navigator.registerProtocolHandler('mailto', this.mailto_handler_uri(), name); } - catch(e) {}; + catch(e) { + this.display_message(String(e), 'error'); + }; }; this.check_protocol_handler = function(name, elem) { var nav = window.navigator; - if (!nav - || (typeof nav.registerProtocolHandler != 'function') - || ((typeof nav.isProtocolHandlerRegistered == 'function') - && nav.isProtocolHandlerRegistered('mailto', this.mailto_handler_uri()) == 'registered') - ) - $(elem).addClass('disabled'); - else - $(elem).click(function() { rcmail.register_protocol_handler(name); return false; }); + if (!nav || (typeof nav.registerProtocolHandler != 'function')) { + $(elem).addClass('disabled').click(function(){ return false; }); + } + else { + var status = null; + if (typeof nav.isProtocolHandlerRegistered == 'function') { + status = nav.isProtocolHandlerRegistered('mailto', this.mailto_handler_uri()); + if (status) + $(elem).parent().find('.mailtoprotohandler-status').html(status); + } + else { + $(elem).click(function() { rcmail.register_protocol_handler(name); return false; }); + } + } }; // Checks browser capabilities eg. PDF support, TIF support diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc index 7c36df3b1..307be8c8e 100644 --- a/program/steps/settings/func.inc +++ b/program/steps/settings/func.inc @@ -376,13 +376,16 @@ function rcmail_user_prefs($current = null) if ($current) { $product_name = $RCMAIL->config->get('product_name', 'Roundcube Webmail'); $RCMAIL->output->add_script(sprintf("%s.check_protocol_handler('%s', '#mailtoprotohandler');", - rcmail_output::JS_OBJECT_NAME, rcube::JQ($product_name)), 'foot'); + rcmail_output::JS_OBJECT_NAME, rcube::JQ($product_name)), 'docready'); } $blocks['browser']['options']['mailtoprotohandler'] = array( 'content' => html::a(array( - 'href' => '#', - 'id' => 'mailtoprotohandler'), rcube::Q($RCMAIL->gettext('mailtoprotohandler'))), + 'href' => '#', + 'id' => 'mailtoprotohandler' + ), + rcube::Q($RCMAIL->gettext('mailtoprotohandler'))) . + html::span('mailtoprotohandler-status', ''), ); break; |