summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--config/main.inc.php.dist3
-rw-r--r--program/localization/en_US/labels.inc1
-rw-r--r--program/localization/en_US/messages.inc1
-rw-r--r--program/localization/pl_PL/labels.inc1
-rw-r--r--program/localization/pl_PL/messages.inc1
-rw-r--r--program/steps/mail/sendmail.inc17
-rw-r--r--program/steps/settings/func.inc10
-rw-r--r--program/steps/settings/save_prefs.inc1
9 files changed, 36 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 15bfd7674..4bb90ee76 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
+- Added option to force spellchecking before sending a message (#1485458)
- Fix handling of "<" character in contact data, search fields and folder names (#1487864)
- Fix saving "<" character in identity name and organization fields (#1487864)
- Added option to specify to which address book add new contacts
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index ddb1eda1b..447575fce 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -703,4 +703,7 @@ $rcmail_config['forward_attachment'] = false;
// Note: Use '0' for built-in address book.
$rcmail_config['default_addressbook'] = null;
+// Enables spell checking before sending a message.
+$rcmail_config['spellcheck_before_send'] = false;
+
// end of config file
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index 3e88d09a0..45da21cb4 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -413,6 +413,7 @@ $labels['reqmdn'] = 'Always request a return receipt';
$labels['reqdsn'] = 'Always request a delivery status notification';
$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
$labels['defaultaddressbook'] = 'Add new contacts to the selected addressbook';
+$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Folders';
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index 701420104..da4b41339 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -141,5 +141,6 @@ $messages['nametoolong'] = 'Name is too long';
$messages['folderupdated'] = 'Folder updated successfully';
$messages['foldercreated'] = 'Folder created successfully';
$messages['invalidimageformat'] = 'Not a valid image format';
+$messages['mispellingsfound'] = 'Spelling errors detected in the message';
?>
diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc
index 652b3027e..637768e4d 100644
--- a/program/localization/pl_PL/labels.inc
+++ b/program/localization/pl_PL/labels.inc
@@ -407,5 +407,6 @@ $labels['personalfolder'] = 'Folder prywatny';
$labels['otherfolder'] = 'Folder innego użytkownika';
$labels['sharedfolder'] = 'Folder współdzielony';
$labels['defaultaddressbook'] = 'Nowe kontakty dodawaj do wybranej książki adresowej';
+$labels['spellcheckbeforesend'] = 'Przed wysłaniem wiadomości sprawdzaj pisownię';
?>
diff --git a/program/localization/pl_PL/messages.inc b/program/localization/pl_PL/messages.inc
index 89a39ecdb..1d99ffc1e 100644
--- a/program/localization/pl_PL/messages.inc
+++ b/program/localization/pl_PL/messages.inc
@@ -145,5 +145,6 @@ $messages['errorreadonly'] = 'Nie można wykonać operacji. Folder tylko do odcz
$messages['errornoperm'] = 'Nie można wykonać operacji. Brak uprawnień';
$messages['importconfirmskipped'] = '<b>Pominięto $skipped istniejących wpisów</b>';
$messages['invalidimageformat'] = 'Niepoprawny format obrazka';
+$messages['mispellingsfound'] = 'Wykryto błędy pisowni w tej wiadomości';
?>
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index a492e937c..de971a25a 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -409,6 +409,22 @@ if (!$savedraft) {
"\r\n<html><body>\r\n" . $message_body;
}
+ // Check spelling before send
+ if ($CONFIG['spellcheck_before_send'] && $CONFIG['enable_spellcheck']
+ && empty($_SESSION['compose']['spell_checked'])
+ ) {
+ $spellchecker = new rcube_spellchecker();
+ $spell_result = $spellchecker->check($message_body, $isHtml);
+
+ $_SESSION['compose']['spell_checked'] = true;
+
+ if (!$spell_result) {
+ $OUTPUT->show_message('mispellingsfound', 'error');
+ $OUTPUT->command('command', 'spellcheck');
+ $OUTPUT->send('iframe');
+ }
+ }
+
// generic footer for all messages
if ($isHtml && !empty($CONFIG['generic_message_footer_html'])) {
$footer = file_get_contents(realpath($CONFIG['generic_message_footer_html']));
@@ -420,6 +436,7 @@ if (!$savedraft) {
if ($isHtml)
$footer = '<pre>'.$footer.'</pre>';
}
+
if ($footer)
$message_body .= "\r\n" . $footer;
if ($isHtml)
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 280185e76..cf2d59199 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -545,6 +545,16 @@ function rcmail_user_prefs($current=null)
);
}
+ if (!isset($no_override['spellcheck_before_send']) && $config['enable_spellcheck']) {
+ $field_id = 'rcmfd_spellcheck_before_send';
+ $input_spellcheck = new html_checkbox(array('name' => '_spellcheck_before_send', 'id' => $field_id, 'value' => 1));
+
+ $blocks['main']['options']['spellcheck_before_send'] = array(
+ 'title' => html::label($field_id, Q(rcube_label('spellcheckbeforesend'))),
+ 'content' => $input_spellcheck->show($config['spellcheck_before_send']?1:0),
+ );
+ }
+
if (!isset($no_override['show_sig'])) {
$field_id = 'rcmfd_show_sig';
$select_show_sig = new html_select(array('name' => '_show_sig', 'id' => $field_id));
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index a5ec2346a..ac1cfb3d0 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -70,6 +70,7 @@ switch ($CURR_SECTION)
'mdn_default' => isset($_POST['_mdn_default']) ? TRUE : FALSE,
'dsn_default' => isset($_POST['_dsn_default']) ? TRUE : FALSE,
'reply_same_folder' => isset($_POST['_reply_same_folder']) ? TRUE : FALSE,
+ 'spellcheck_before_send' => isset($_POST['_spellcheck_before_send']) ? TRUE : FALSE,
'show_sig' => isset($_POST['_show_sig']) ? intval($_POST['_show_sig']) : 1,
'top_posting' => !empty($_POST['_top_posting']),
'strip_existing_sig' => isset($_POST['_strip_existing_sig']),