Skip to content

Commit

Permalink
- Add option to set default font for HTML message (#1484137)
Browse files Browse the repository at this point in the history
  • Loading branch information
alecpl committed Dec 7, 2011
1 parent 889665f commit 7e263ea
Show file tree
Hide file tree
Showing 11 changed files with 79 additions and 7 deletions.
1 change: 1 addition & 0 deletions 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
Expand Down
5 changes: 5 additions & 0 deletions config/main.inc.php.dist
Expand Up @@ -794,4 +794,9 @@ $rcmail_config['spellcheck_before_send'] = false;
// 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
24 changes: 24 additions & 0 deletions program/include/main.inc
Expand Up @@ -2408,3 +2408,27 @@ function rcube_autocomplete_init()
$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;
}
5 changes: 5 additions & 0 deletions program/js/app.js
Expand Up @@ -3048,6 +3048,11 @@ function rcube_webmail()
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;
Expand Down
3 changes: 3 additions & 0 deletions program/js/editor.js
Expand Up @@ -66,6 +66,9 @@ function rcmail_editor_callback()
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
Expand Down
1 change: 1 addition & 0 deletions program/localization/en_US/labels.inc
Expand Up @@ -407,6 +407,7 @@ $labels['advancedoptions'] = 'Advanced options';
$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';
Expand Down
1 change: 1 addition & 0 deletions program/localization/pl_PL/labels.inc
Expand Up @@ -440,5 +440,6 @@ $labels['source'] = 'Źródła';
$labels['license'] = 'Licencja';
$labels['about'] = 'O programie';
$labels['support'] = 'Wsparcie techniczne';
$labels['defaultfont'] = 'Czcionka wiadomości HTML';

?>
6 changes: 6 additions & 0 deletions program/steps/mail/compose.inc
Expand Up @@ -142,6 +142,12 @@ $OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_s
// 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']);
Expand Down
19 changes: 13 additions & 6 deletions program/steps/mail/sendmail.inc
Expand Up @@ -397,6 +397,15 @@ $isHtml = (bool) get_input_value('_is_html', RCUBE_INPUT_POST);
// 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
Expand All @@ -406,10 +415,6 @@ if (!$savedraft) {
$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
Expand Down Expand Up @@ -443,8 +448,10 @@ if (!$savedraft) {

if ($footer)
$message_body .= "\r\n" . $footer;
if ($isHtml)
$message_body .= "\r\n</body></html>\r\n";
}

if ($isHtml) {
$message_body .= "\r\n</body></html>\r\n";
}

// set line length for body wrapping
Expand Down
20 changes: 19 additions & 1 deletion program/steps/settings/func.inc
Expand Up @@ -481,7 +481,6 @@ function rcmail_user_prefs($current=null)
'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));
Expand Down Expand Up @@ -634,6 +633,25 @@ function rcmail_user_prefs($current=null)
);
}

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;


Expand Down
1 change: 1 addition & 0 deletions program/steps/settings/save_prefs.inc
Expand Up @@ -86,6 +86,7 @@ switch ($CURR_SECTION)
'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;
Expand Down

0 comments on commit 7e263ea

Please sign in to comment.