diff options
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | config/main.inc.php.dist | 6 | ||||
-rwxr-xr-x | program/include/rcube_template.php | 78 | ||||
-rw-r--r-- | program/localization/en_US/labels.inc | 28 | ||||
-rw-r--r-- | program/localization/pl_PL/labels.inc | 19 | ||||
-rw-r--r-- | program/steps/settings/func.inc | 11 | ||||
-rw-r--r-- | program/steps/settings/save_prefs.inc | 3 |
7 files changed, 113 insertions, 33 deletions
@@ -1,6 +1,7 @@ CHANGELOG RoundCube Webmail =========================== +- Add 'default_charset' option to user preferences (#1485451) - Add 'delete_always' option to user preferences - Support/Require tls:// prefix in 'smtp_server' option for TLS connections - Fix inconsistent behaviour of 'delete_always' option (#1486299) diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist index 61736c298..8558c44e3 100644 --- a/config/main.inc.php.dist +++ b/config/main.inc.php.dist @@ -296,9 +296,6 @@ $rcmail_config['quota_zero_as_unlimited'] = false; // 0 = ask the user, 1 = send automatically, 2 = ignore (never send or ask) $rcmail_config['mdn_requests'] = 0; -// Use this charset as fallback for message decoding -$rcmail_config['default_charset'] = 'ISO-8859-1'; - // Make use of the built-in spell checker. It is based on GoogieSpell. // Since Google only accepts connections over https your PHP installatation // requires to be compiled with Open SSL support @@ -397,6 +394,9 @@ $rcmail_config['autocomplete_addressbooks'] = array('sql'); // USER PREFERENCES // ---------------------------------- +// Use this charset as fallback for message decoding +$rcmail_config['default_charset'] = 'ISO-8859-1'; + // skin name: folder from skins/ $rcmail_config['skin'] = 'default'; diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php index 266d21a35..a37adc28b 100755 --- a/program/include/rcube_template.php +++ b/program/include/rcube_template.php @@ -1134,39 +1134,67 @@ class rcube_template extends rcube_html_page * @param array Named parameters for the select tag * @return string HTML code for the gui object */ - static function charset_selector($attrib) + function charset_selector($attrib) { // pass the following attributes to the form class $field_attrib = array('name' => '_charset'); foreach ($attrib as $attr => $value) { - if (in_array($attr, array('id', 'class', 'style', 'size', 'tabindex'))) { + if (in_array($attr, array('id', 'name', 'class', 'style', 'size', 'tabindex'))) { $field_attrib[$attr] = $value; } } - $charsets = array( - 'US-ASCII' => 'ASCII (English)', - 'EUC-JP' => 'EUC-JP (Japanese)', - 'EUC-KR' => 'EUC-KR (Korean)', - 'BIG5' => 'BIG5 (Chinese)', - 'GB2312' => 'GB2312 (Chinese)', - 'ISO-2022-JP' => 'ISO-2022-JP (Japanese)', - 'ISO-8859-1' => 'ISO-8859-1 (Latin-1)', - 'ISO-8859-2' => 'ISO-8895-2 (Central European)', - 'ISO-8859-7' => 'ISO-8859-7 (Greek)', - 'ISO-8859-9' => 'ISO-8859-9 (Turkish)', - 'Windows-1251' => 'Windows-1251 (Cyrillic)', - 'Windows-1252' => 'Windows-1252 (Western)', - 'Windows-1255' => 'Windows-1255 (Hebrew)', - 'Windows-1256' => 'Windows-1256 (Arabic)', - 'Windows-1257' => 'Windows-1257 (Baltic)', - 'UTF-8' => 'UTF-8' - ); - $select = new html_select($field_attrib); - $select->add(array_values($charsets), array_keys($charsets)); - - $set = $_POST['_charset'] ? $_POST['_charset'] : $this->get_charset(); - return $select->show($set); + $charsets = array( + 'UTF-8' => 'UTF-8 ('.rcube_label('unicode').')', + 'US-ASCII' => 'ASCII ('.rcube_label('english').')', + 'ISO-8859-1' => 'ISO-8859-1 ('.rcube_label('westerneuropean').')', + 'ISO-8859-2' => 'ISO-8895-2 ('.rcube_label('easterneuropean').')', + 'ISO-8859-4' => 'ISO-8895-4 ('.rcube_label('baltic').')', + 'ISO-8859-5' => 'ISO-8859-5 ('.rcube_label('cyrillic').')', + 'ISO-8859-6' => 'ISO-8859-6 ('.rcube_label('arabic').')', + 'ISO-8859-7' => 'ISO-8859-7 ('.rcube_label('greek').')', + 'ISO-8859-8' => 'ISO-8859-8 ('.rcube_label('hebrew').')', + 'ISO-8859-9' => 'ISO-8859-9 ('.rcube_label('turkish').')', + 'ISO-8859-10' => 'ISO-8859-10 ('.rcube_label('nordic').')', + 'ISO-8859-11' => 'ISO-8859-11 ('.rcube_label('thai').')', + 'ISO-8859-13' => 'ISO-8859-13 ('.rcube_label('baltic').')', + 'ISO-8859-14' => 'ISO-8859-14 ('.rcube_label('celtic').')', + 'ISO-8859-15' => 'ISO-8859-15 ('.rcube_label('westerneuropean').')', + 'ISO-8859-16' => 'ISO-8859-16 ('.rcube_label('southeasterneuropean').')', + 'WINDOWS-1250' => 'Windows-1250 ('.rcube_label('easterneuropean').')', + 'WINDOWS-1251' => 'Windows-1251 ('.rcube_label('cyrillic').')', + 'WINDOWS-1252' => 'Windows-1252 ('.rcube_label('westerneuropean').')', + 'WINDOWS-1253' => 'Windows-1253 ('.rcube_label('greek').')', + 'WINDOWS-1254' => 'Windows-1254 ('.rcube_label('turkish').')', + 'WINDOWS-1255' => 'Windows-1255 ('.rcube_label('hebrew').')', + 'WINDOWS-1256' => 'Windows-1256 ('.rcube_label('arabic').')', + 'WINDOWS-1257' => 'Windows-1257 ('.rcube_label('baltic').')', + 'WINDOWS-1258' => 'Windows-1258 ('.rcube_label('vietnamese').')', + 'ISO-2022-JP' => 'ISO-2022-JP ('.rcube_label('japanese').')', + 'ISO-2022-KR' => 'ISO-2022-KR ('.rcube_label('korean').')', + 'ISO-2022-CN' => 'ISO-2022-CN ('.rcube_label('chinese').')', + 'EUC-JP' => 'EUC-JP ('.rcube_label('japanese').')', + 'EUC-KR' => 'EUC-KR ('.rcube_label('korean').')', + 'EUC-CN' => 'EUC-CN ('.rcube_label('chinese').')', + 'BIG5' => 'BIG5 ('.rcube_label('chinese').')', + 'GB2312' => 'GB2312 ('.rcube_label('chinese').')', + ); + + if (!empty($_POST['_charset'])) + $set = $_POST['_charset']; + else if (!empty($attrib['selected'])) + $set = $attrib['selected']; + else + $set = $this->get_charset(); + + $set = strtoupper($set); + if (!isset($charsets[$set])) + $charsets[$set] = $set; + + $select = new html_select($field_attrib); + $select->add(array_values($charsets), array_keys($charsets)); + + return $select->show($set); } } // end class rcube_template diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc index 5e9c968ef..3462b8da8 100644 --- a/program/localization/en_US/labels.inc +++ b/program/localization/en_US/labels.inc @@ -64,10 +64,6 @@ $labels['download'] = 'Download'; $labels['filename'] = 'File name'; $labels['filesize'] = 'File size'; -$labels['preferhtml'] = 'Display HTML'; -$labels['htmlmessage'] = 'HTML Message'; -$labels['prettydate'] = 'Pretty dates'; - $labels['addtoaddressbook'] = 'Add to address book'; // weekdays short @@ -265,6 +261,10 @@ $labels['newidentity'] = 'New identity'; $labels['newitem'] = 'New item'; $labels['edititem'] = 'Edit item'; +$labels['preferhtml'] = 'Display HTML'; +$labels['defaultcharset'] = 'Default Character Set'; +$labels['htmlmessage'] = 'HTML Message'; +$labels['prettydate'] = 'Pretty dates'; $labels['setdefault'] = 'Set default'; $labels['autodetect'] = 'Auto'; $labels['language'] = 'Language'; @@ -350,4 +350,24 @@ $labels['KB'] = 'KB'; $labels['MB'] = 'MB'; $labels['GB'] = 'GB'; +// character sets +$labels['unicode'] = 'Unicode'; +$labels['english'] = 'English'; +$labels['westerneuropean'] = 'Western European'; +$labels['easterneuropean'] = 'Eastern European'; +$labels['southeasterneuropean'] = 'South-Eastern European'; +$labels['baltic'] = 'Baltic'; +$labels['cyrillic'] = 'Cyrillic'; +$labels['arabic'] = 'Arabic'; +$labels['greek'] = 'Greek'; +$labels['hebrew'] = 'Hebrew'; +$labels['turkish'] = 'Turkish'; +$labels['nordic'] = 'Nordic'; +$labels['thai'] = 'Thai'; +$labels['celtic'] = 'Celtic'; +$labels['vietnamese'] = 'Vietnamese'; +$labels['japanese'] = 'Japanese'; +$labels['korean'] = 'Korean'; +$labels['chinese'] = 'Chinese'; + ?> diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc index c00d73c06..3ceb0ac32 100644 --- a/program/localization/pl_PL/labels.inc +++ b/program/localization/pl_PL/labels.inc @@ -218,6 +218,7 @@ $labels['language'] = 'Język'; $labels['timezone'] = 'Strefa czasowa'; $labels['pagesize'] = 'Liczba wierszy na stronie'; $labels['signature'] = 'Podpis'; +$labels['defaultcharset'] = 'Domyślny zestaw znaków'; $labels['dstactive'] = 'Czas letni'; $labels['htmleditor'] = 'Twórz wiadomości HTML'; $labels['htmlsignature'] = 'Podpis w HTML'; @@ -296,5 +297,23 @@ $labels['replysignaturepos'] = 'Podczas odpowiedzi wstaw podpis'; $labels['belowquote'] = 'poniżej cytowanej treści'; $labels['abovequote'] = 'ponad cytowaną treścią'; +$labels['unicode'] = 'uniwersalny'; +$labels['english'] = 'angielski'; +$labels['westerneuropean'] = 'zachodnioeuropejski'; +$labels['easterneuropean'] = 'wschodnioeuropejski'; +$labels['southeasterneuropean'] = 'południowo-wschodnioeuropejski'; +$labels['baltic'] = 'bałtycki'; +$labels['cyrillic'] = 'cyrylica'; +$labels['arabic'] = 'arabski'; +$labels['greek'] = 'grecki'; +$labels['hebrew'] = 'hebrajski'; +$labels['turkish'] = 'turecki'; +$labels['nordic'] = 'nordycki'; +$labels['thai'] = 'tajski'; +$labels['celtic'] = 'celtycki'; +$labels['vietnamese'] = 'wietnamski'; +$labels['japanese'] = 'japoński'; +$labels['korean'] = 'koreański'; +$labels['chinese'] = 'chiński'; ?> diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc index 91e1e3fd5..44225c715 100644 --- a/program/steps/settings/func.inc +++ b/program/steps/settings/func.inc @@ -368,6 +368,17 @@ function rcmail_user_prefs($current=null) ); } + if (!isset($no_override['default_charset'])) { + $field_id = 'rcmfd_default_charset'; + + $blocks['main']['options']['default_charset'] = array( + 'title' => html::label($field_id, Q(rcube_label('defaultcharset'))), + 'content' => $RCMAIL->output->charset_selector(array( + 'name' => '_default_charset', 'selected' => $config['default_charset'] + )) + ); + } + if (!isset($no_override['show_images'])) { $field_id = 'rcmfd_show_images'; $input_show_images = new html_select(array('name' => '_show_images', 'id' => $field_id)); diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc index 8f0a0e711..eeb64034c 100644 --- a/program/steps/settings/save_prefs.inc +++ b/program/steps/settings/save_prefs.inc @@ -54,8 +54,10 @@ switch ($CURR_SECTION) 'inline_images' => isset($_POST['_inline_images']) ? TRUE : FALSE, 'show_images' => isset($_POST['_show_images']) ? intval($_POST['_show_images']) : 0, 'display_next' => isset($_POST['_display_next']) ? TRUE : FALSE, + 'default_charset' => get_input_value('_default_charset', RCUBE_INPUT_POST), ); + break; case 'compose': $a_user_prefs = array( @@ -92,7 +94,6 @@ switch ($CURR_SECTION) break; } - $data = rcmail::get_instance()->plugins->exec_hook('save_preferences', array('prefs' => $a_user_prefs, 'section' => $CURR_SECTION)); |