alecpl
2012-02-13 06c990ead24edee69f07912f8169a0422c411422
- Added mailto: protocol handler registration link in User Preferences (#1486580)


7 files modified
53 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/js/app.js 26 ●●●●● patch | view | raw | blame | history
program/localization/en_US/labels.inc 2 ●●●●● patch | view | raw | blame | history
program/steps/settings/edit_prefs.inc 5 ●●●●● patch | view | raw | blame | history
program/steps/settings/func.inc 11 ●●●●● patch | view | raw | blame | history
skins/default/common.css 3 ●●●● patch | view | raw | blame | history
skins/default/settings.css 5 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Added mailto: protocol handler registration link in User Preferences (#1486580)
- Handle identity details box with an iframe (#1487020)
- Fix issue where some text from original message was missing on reply (#1488340)
- Fix parse errors in DDL files for MS SQL Server
program/js/app.js
@@ -6314,6 +6314,32 @@
      else if (lock || (this.disabled_form_elements && $.inArray(elm, this.disabled_form_elements)<0))
        elm.disabled = lock;
    }
  };
  this.mailto_handler_uri = function()
  {
    return location.href.split('?')[0] + '?_task=mail&_action=compose&_to=%s';
  };
  this.register_protocol_handler = function(name)
  {
    try {
      window.navigator.registerProtocolHandler('mailto', this.mailto_handler_uri(), name);
    }
    catch(e) {};
  };
  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; });
  };
}  // end object rcube_webmail
program/localization/en_US/labels.inc
@@ -422,6 +422,7 @@
$labels['displaynext'] = 'After message delete/move display the next message';
$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'Main Options';
$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Section';
$labels['maintenance'] = 'Maintenance';
$labels['newmessage'] = 'New Message';
@@ -451,6 +452,7 @@
$labels['spellcheckignorenums'] = 'Ignore words with numbers';
$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
$labels['addtodict'] = 'Add to dictionary';
$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
$labels['folder']  = 'Folder';
$labels['folders']  = 'Folders';
program/steps/settings/edit_prefs.inc
@@ -51,9 +51,14 @@
        if ($option['advanced'])
          $table->set_row_attribs('advanced');
        if (isset($option['title'])) {
        $table->add('title', $option['title']);
        $table->add(null, $option['content']);
      }
        else {
          $table->add(array('colspan' => 2), $option['content']);
        }
      }
      $out .= html::tag('fieldset', null, html::tag('legend', null, $block['name']) . $table->show($attrib));
    }
program/steps/settings/func.inc
@@ -160,6 +160,7 @@
    $blocks = array(
      'main' => array('name' => Q(rcube_label('mainoptions'))),
      'browser' => array('name' => Q(rcube_label('browseroptions'))),
    );
    // language selection
@@ -263,6 +264,16 @@
      }
    }
    $product_name = $RCMAIL->config->get('product_name', 'Roundcube Webmail');
    $RCMAIL->output->add_script(sprintf("%s.check_protocol_handler('%s', '#mailtoprotohandler');",
      JS_OBJECT_NAME, JQ($product_name)), 'foot');
    $blocks['browser']['options']['mailtoprotohandler'] = array(
      'content' => html::a(array(
        'href' => '#',
        'id' => 'mailtoprotohandler'), Q(rcube_label('mailtoprotohandler'))),
    );
    break;
    // Mailbox view (mail screen)
skins/default/common.css
@@ -759,7 +759,8 @@
  opacity: 0.8;
}
.disabled
.disabled,
a.disabled
{
  color: #999;
}
skins/default/settings.css
@@ -87,11 +87,6 @@
  text-align: right;
}
input.disabled
{
  color: #999999;
}
#bottomboxes
{
  position: absolute;