diff options
-rw-r--r-- | config/main.inc.php.dist | 14 | ||||
-rw-r--r-- | program/include/main.inc | 6 | ||||
-rw-r--r-- | program/include/rcube_imap.inc | 2 | ||||
-rw-r--r-- | program/steps/mail/compose.inc | 7 | ||||
-rw-r--r-- | program/steps/mail/spell.inc | 20 |
5 files changed, 38 insertions, 11 deletions
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist index 2f79bd8e8..e536917c4 100644 --- a/config/main.inc.php.dist +++ b/config/main.inc.php.dist @@ -157,10 +157,20 @@ $rcmail_config['read_when_deleted'] = TRUE; // false causes deleted messages to be permanantly removed if there is no Trash folder $rcmail_config['flag_for_deletion'] = TRUE; -// Make use of the built-in spell checker. It is based on GoogieSpell -// which means that the message content will be sent to Google in order to check spelling +// Make use of the built-in spell checker. It is based on GoogieSpell. $rcmail_config['enable_spellcheck'] = TRUE; +// For a locally installed Nox Spell Server, please specify the URI to call it. +// Get Nox Spell Server from http://orangoo.com/labs/?page_id=72 +// Leave empty to use the Google spell checking service, what means +// that the message content will be sent to Google in order to check spelling +$rcmail_config['spellcheck_uri'] = ''; + +// These languages can be selected for spell checking. +// Configure as a PHP style hash array: array('en'=>'English', 'de'=>'Deutsch'); +// Leave empty for default set of Google spell check languages +$rcmail_config['spellcheck_languages'] = NULL; + // path to a text file which will be added to each sent message // paths are relative to the RoundCube root folder $rcmail_config['generic_message_footer'] = ''; diff --git a/program/include/main.inc b/program/include/main.inc index 887668b47..1a2b8c793 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -439,12 +439,12 @@ function rcmail_login($user, $pass, $host=NULL) Inspired by Marco <P0L0_notspam_binware.org> */ // Check if we need to add domain - if ($CONFIG['username_domain'] && !strstr($user, '@')) + if (!empty($CONFIG['username_domain']) && !strstr($user, '@')) { if (is_array($CONFIG['username_domain']) && isset($CONFIG['username_domain'][$host])) $user .= '@'.$CONFIG['username_domain'][$host]; - else if (!empty($CONFIG['username_domain'])) - $user .= '@'.$CONFIG['username_domain']; + else if (is_string($CONFIG['username_domain'])) + $user .= '@'.$CONFIG['username_domain']; } diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc index 185565ca2..fe97a92f2 100644 --- a/program/include/rcube_imap.inc +++ b/program/include/rcube_imap.inc @@ -1063,7 +1063,7 @@ class rcube_imap if (is_array($part->parts)) for ($i=0; $i<count($part->parts); $i++) - $this->_get_part_numbers($part->parts[$i], &$a_parts); + $this->_get_part_numbers($part->parts[$i], $a_parts); } diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index f9ea876b7..f486175d8 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -385,13 +385,17 @@ function rcmail_compose_body($attrib) // include GoogieSpell if (!empty($CONFIG['enable_spellcheck'])) { + $lang_set = ''; + if (!empty($CONFIG['spellcheck_languages']) && is_array($CONFIG['spellcheck_languages'])) + $lang_set = "googie.setLanguages(".array2js($CONFIG['spellcheck_languages']).");\n"; + $OUTPUT->include_script('googiespell.js'); $OUTPUT->add_script(sprintf("var googie = new GoogieSpell('\$__skin_path/images/googiespell/','%s&_action=spell&lang=');\n". "googie.lang_chck_spell = \"%s\";\n". "googie.lang_rsm_edt = \"%s\";\n". "googie.lang_close = \"%s\";\n". "googie.lang_revert = \"%s\";\n". - "googie.lang_no_error_found = \"%s\";\n". + "googie.lang_no_error_found = \"%s\";\n%s". "googie.decorateTextarea('%s');\n". "%s.set_env('spellcheck', googie);", $GLOBALS['COMM_PATH'], @@ -400,6 +404,7 @@ function rcmail_compose_body($attrib) rep_specialchars_output(rcube_label('close')), rep_specialchars_output(rcube_label('revertto')), rep_specialchars_output(rcube_label('nospellerrors')), + $lang_set, $attrib['id'], $JS_OBJECT_NAME), 'foot'); diff --git a/program/steps/mail/spell.inc b/program/steps/mail/spell.inc index d60e691f6..bd03bfd3e 100644 --- a/program/steps/mail/spell.inc +++ b/program/steps/mail/spell.inc @@ -24,17 +24,29 @@ $REMOTE_REQUEST = TRUE; -$google = "ssl://www.google.com"; +// default settings +$host = "ssl://www.google.com"; $port = 443; -$lang = $_GET['lang']; +$lang = get_input_value('lang', RCUBE_INPUT_GET); $path = "/tbproxy/spell?lang=$lang"; + +// spell check uri is configured +if (!empty($CONFIG['spellcheck_uri'])) + { + $a_uri = parse_url($CONFIG['spellcheck_uri']); + $ssl = ($a_uri['scheme']=='https' || $a_uri['scheme']=='ssl'); + $port = $a_uri['port'] ? $a_uri['port'] : ($ssl ? 443 : 80); + $host = ($ssl ? 'ssl://' : '') . $a_uri['host']; + $path = $a_uri['path'] . ($a_uri['query'] ? '?'.$a_uri['query'] : '') . $lang; + } + $data = file_get_contents('php://input'); $store = ""; -if ($fp = fsockopen($google, $port, $errno, $errstr, 30)) +if ($fp = fsockopen($host, $port, $errno, $errstr, 30)) { $out = "POST $path HTTP/1.0\r\n"; - $out .= "Host: $google\r\n"; + $out .= "Host: $host\r\n"; $out .= "Content-Length: " . strlen($data) . "\r\n"; $out .= "Content-type: application/x-www-form-urlencoded\r\n"; $out .= "Connection: Close\r\n\r\n"; |