From 736790f62593fda97879946296be2f85f97e3d28 Mon Sep 17 00:00:00 2001 From: alecpl Date: Sat, 28 Aug 2010 12:37:56 +0000 Subject: [PATCH] - Fix JS error on IE when trying to send HTML message with enabled spellchecker (#1486940) --- CHANGELOG | 1 + program/js/app.js | 48 +++++++++++++++++++++++++---------------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index fd9253a68..a92b3f5b2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -12,6 +12,7 @@ CHANGELOG RoundCube Webmail - Fix Tab key doesn't work in HTML editor in Google Chrome (#1486925) - Fix TinyMCE uses zh_CN when zh_TW locale is set (#1486929) - Fix TinyMCE buttons are hidden in Opera (#1486922) +- Fix JS error on IE when trying to send HTML message with enabled spellchecker (#1486940) RELEASE 0.4 ----------- diff --git a/program/js/app.js b/program/js/app.js index b129e9881..425e71b42 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -2752,12 +2752,12 @@ function rcube_webmail() this.check_compose_input = function() { // check input fields - var input_to = $("[name='_to']"); - var input_cc = $("[name='_cc']"); - var input_bcc = $("[name='_bcc']"); - var input_from = $("[name='_from']"); - var input_subject = $("[name='_subject']"); - var input_message = $("[name='_message']"); + var ed, input_to = $("[name='_to']"), + input_cc = $("[name='_cc']"), + input_bcc = $("[name='_bcc']"), + input_from = $("[name='_from']"), + input_subject = $("[name='_subject']"), + input_message = $("[name='_message']"); // check sender (if have no identities) if (input_from.attr('type') == 'text' && !rcube_check_email(input_from.val(), true)) { @@ -2795,25 +2795,25 @@ function rcube_webmail() input_subject.val((subject ? subject : this.get_label('nosubject'))); } + // Apply spellcheck changes if spell checker is active + this.stop_spellchecking(); + + if (window.tinyMCE) + ed = tinyMCE.get(this.env.composebody); + // check for empty body - if ((!window.tinyMCE || !tinyMCE.get(this.env.composebody)) - && input_message.val() == '' && !confirm(this.get_label('nobodywarning'))) { + if (!ed && input_message.val() == '' && !confirm(this.get_label('nobodywarning'))) { input_message.focus(); return false; } - else if (window.tinyMCE && tinyMCE.get(this.env.composebody) - && !tinyMCE.get(this.env.composebody).getContent() - && !confirm(this.get_label('nobodywarning'))) { - tinyMCE.get(this.env.composebody).focus(); - return false; - } - - // Apply spellcheck changes if spell checker is active - this.stop_spellchecking(); - - // move body from html editor to textarea (just to be sure, #1485860) - if (window.tinyMCE && tinyMCE.get(this.env.composebody)) + else if (ed) { + if (!ed.getContent() && !confirm(this.get_label('nobodywarning'))) { + ed.focus(); + return false; + } + // move body from html editor to textarea (just to be sure, #1485860) tinyMCE.triggerSave(); + } return true; }; @@ -2845,8 +2845,12 @@ function rcube_webmail() this.stop_spellchecking = function() { - if (this.env.spellcheck && !this.spellcheck_ready) { - $(this.env.spellcheck.spell_span).trigger('click'); + var ed; + if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody))) { + ed.execCommand('mceSpellCheck'); + } + else if ((ed = this.env.spellcheck) && !this.spellcheck_ready) { + $(ed.spell_span).trigger('click'); this.set_spellcheck_state('ready'); } };