alecpl
2011-12-07 7e263ea2048721482c00db65d4511f00c4c7b1d4
- Add option to set default font for HTML message (#1484137) 


11 files modified
84 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
config/main.inc.php.dist 5 ●●●●● patch | view | raw | blame | history
program/include/main.inc 24 ●●●●● patch | view | raw | blame | history
program/js/app.js 5 ●●●●● patch | view | raw | blame | history
program/js/editor.js 3 ●●●●● patch | view | raw | blame | history
program/localization/en_US/labels.inc 1 ●●●● patch | view | raw | blame | history
program/localization/pl_PL/labels.inc 1 ●●●● patch | view | raw | blame | history
program/steps/mail/compose.inc 6 ●●●●● patch | view | raw | blame | history
program/steps/mail/sendmail.inc 17 ●●●● patch | view | raw | blame | history
program/steps/settings/func.inc 20 ●●●●● patch | view | raw | blame | history
program/steps/settings/save_prefs.inc 1 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Add option to set default font for HTML message (#1484137)
- Fix issues with big memory allocation of IMAP results
- Replace prompt() with jQuery UI dialog (#1485135)
- Fix navigation in messages search results
config/main.inc.php.dist
@@ -794,4 +794,9 @@
// Skip alternative email addresses in autocompletion (show one address per contact)
$rcmail_config['autocomplete_single'] = false;
// Default font for composed HTML message.
// Supported values: Andale Mono, Arial, Arial Black, Book Antiqua, Courier New,
// Georgia, Helvetica, Impact, Tahoma, Terminal, Times New Roman, Trebuchet MS, Verdana
$rcmail_config['default_font'] = '';
// end of config file
program/include/main.inc
@@ -2408,3 +2408,27 @@
    $RCMAIL->output->set_env('autocomplete_min_length', $RCMAIL->config->get('autocomplete_min_length'));
    $RCMAIL->output->add_label('autocompletechars', 'autocompletemore');
}
function rcube_fontdefs($font = null)
{
  $fonts = array(
    'Andale Mono'   => '"Andale Mono",Times,monospace',
    'Arial'         => 'Arial,Helvetica,sans-serif',
    'Arial Black'   => '"Arial Black","Avant Garde",sans-serif',
    'Book Antiqua'  => '"Book Antiqua",Palatino,serif',
    'Courier New'   => '"Courier New",Courier,monospace',
    'Georgia'       => 'Georgia,Palatino,serif',
    'Helvetica'     => 'Helvetica,Arial,sans-serif',
    'Impact'        => 'Impact,Chicago,sans-serif',
    'Tahoma'        => 'Tahoma,Arial,Helvetica,sans-serif',
    'Terminal'      => 'Terminal,Monaco,monospace',
    'Times New Roman' => '"Times New Roman",Times,serif',
    'Trebuchet MS'  => '"Trebuchet MS",Geneva,sans-serif',
    'Verdana'       => 'Verdana,Geneva,sans-serif',
  );
  if ($font)
    return $fonts[$font];
  return $fonts;
}
program/js/app.js
@@ -3048,6 +3048,11 @@
      this.display_spellcheck_controls(false);
      this.plain2html($('#'+props.id).val(), props.id);
      tinyMCE.execCommand('mceAddControl', false, props.id);
      if (this.env.default_font)
        window.setTimeout(function() {
          $(tinyMCE.get(props.id).getBody()).css('font-family', rcmail.env.default_font);
        }, 500);
    }
    else {
      var thisMCE = tinyMCE.get(props.id), existingHtml;
program/js/editor.js
@@ -66,6 +66,9 @@
  var elem = rcube_find_object('_from'),
    fe = rcmail.env.compose_focus_elem;
  if (rcmail.env.default_font)
    $(tinyMCE.get(rcmail.env.composebody).getBody()).css('font-family', rcmail.env.default_font);
  if (elem && elem.type == 'select-one') {
    rcmail.change_identity(elem);
    // Focus previously focused element
program/localization/en_US/labels.inc
@@ -407,6 +407,7 @@
$labels['focusonnewmessage'] = 'Focus browser window on new message';
$labels['checkallfolders'] = 'Check all folders for new messages';
$labels['displaynext'] = 'After message delete/move display the next message';
$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'Main Options';
$labels['section'] = 'Section';
$labels['maintenance'] = 'Maintenance';
program/localization/pl_PL/labels.inc
@@ -440,5 +440,6 @@
$labels['license'] = 'Licencja';
$labels['about'] = 'O programie';
$labels['support'] = 'Wsparcie techniczne';
$labels['defaultfont'] = 'Czcionka wiadomoĊ›ci HTML';
?>
program/steps/mail/compose.inc
@@ -142,6 +142,12 @@
// use jquery UI for showing prompt() dialogs
$RCMAIL->plugins->load_plugin('jqueryui');
// default font for HTML editor
$font = rcube_fontdefs($RCMAIL->config->get('default_font', 'Verdana'));
if ($font && !is_array($font)) {
  $OUTPUT->set_env('default_font', $font);
}
// get reference message and set compose mode
if ($msg_uid = $COMPOSE['param']['draft_uid']) {
  $RCMAIL->imap->set_mailbox($CONFIG['drafts_mbox']);
program/steps/mail/sendmail.inc
@@ -397,6 +397,15 @@
// fetch message body
$message_body = get_input_value('_message', RCUBE_INPUT_POST, TRUE, $message_charset);
if ($isHtml) {
  $font   = rcube_fontdefs($RCMAIL->config->get('default_font', 'Verdana'));
  $bstyle = $font && is_string($font) ? " style='font-family: $font'" : '';
  // append doctype and html/body wrappers
  $message_body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">' .
    "\r\n<html><body$bstyle>\r\n" . $message_body;
}
if (!$savedraft) {
  if ($isHtml) {
    // remove signature's div ID
@@ -406,10 +415,6 @@
    $bstyle = 'padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%';
    $message_body = preg_replace('/<blockquote>/',
      '<blockquote type="cite" style="'.$bstyle.'">', $message_body);
    // append doctype and html/body wrappers
    $message_body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">' .
      "\r\n<html><body>\r\n" . $message_body;
  }
  // Check spelling before send
@@ -443,7 +448,9 @@
  if ($footer)
    $message_body .= "\r\n" . $footer;
  if ($isHtml)
}
if ($isHtml) {
    $message_body .= "\r\n</body></html>\r\n";
}
program/steps/settings/func.inc
@@ -481,7 +481,6 @@
      'sig'        => array('name' => Q(rcube_label('signatureoptions'))),
    );
    // Show checkbox for HTML Editor
    if (!isset($no_override['htmleditor'])) {
      $field_id = 'rcmfd_htmleditor';
      $select_htmleditor = new html_select(array('name' => '_htmleditor', 'id' => $field_id));
@@ -634,6 +633,25 @@
      );
    }
    if (!isset($no_override['default_font'])) {
      $field_id     = 'rcmfd_default_font';
      $fonts        = rcube_fontdefs();
      $default_font = $config['default_font'] ? $config['default_font'] : 'Verdana';
      $select = '<select name="_default_font" id="'.$field_id.'">';
      foreach ($fonts as $fname => $font)
        $select .= '<option value="'.$fname.'"'
          . ($fname == $default_font ? ' selected="selected"' : '')
          . ' style=\'font-family: ' . $font . '\'>'
          . Q($fname) . '</option>';
      $select .= '</select>';
      $blocks['main']['options']['default_font'] = array(
        'title' => html::label($field_id, Q(rcube_label('defaultfont'))),
        'content' => $select
      );
    }
    break;
program/steps/settings/save_prefs.inc
@@ -86,6 +86,7 @@
      'top_posting'        => !empty($_POST['_top_posting']),
      'strip_existing_sig' => isset($_POST['_strip_existing_sig']),
      'sig_above'          => !empty($_POST['_sig_above']) && !empty($_POST['_top_posting']),
      'default_font'       => get_input_value('_default_font', RCUBE_INPUT_POST),
    );
  break;