From 736790f62593fda97879946296be2f85f97e3d28 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sat, 28 Aug 2010 08:37:56 -0400
Subject: [PATCH] - Fix JS error on IE when trying to send HTML message with enabled spellchecker (#1486940)

---
 CHANGELOG         |    1 +
 program/js/app.js |   50 +++++++++++++++++++++++++++-----------------------
 2 files changed, 28 insertions(+), 23 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index fd9253a..a92b3f5 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -12,6 +12,7 @@
 - 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 b129e98..425e71b 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -2752,12 +2752,12 @@
   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 @@
         input_subject.val((subject ? subject : this.get_label('nosubject')));
     }
 
-    // check for empty body
-    if ((!window.tinyMCE || !tinyMCE.get(this.env.composebody))
-        && 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))
+    if (window.tinyMCE)
+      ed = tinyMCE.get(this.env.composebody);
+
+    // check for empty body
+    if (!ed && input_message.val() == '' && !confirm(this.get_label('nobodywarning'))) {
+      input_message.focus();
+      return false;
+    }
+    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 @@
 
   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');
     }
   };

--
Gitblit v1.9.1