From fb1203c07fc6e8bf5504049522fb63f5408d218c Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 29 Apr 2014 13:21:19 -0400
Subject: [PATCH] Fix redundant warning when switching from html to text in empty editor (#1489819) We also skip ajax request in such a case. We assume "empty" here means "with no text excluding whitespace".

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

diff --git a/CHANGELOG b/CHANGELOG
index b032658..7e33e8a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -32,6 +32,7 @@
 - Fix identities_level=4 handling in new_user_dialog plugin (#1489840)
 - Fix various db_prefix issues (#1489839)
 - Fix too small length of users.preferences column data type on MySQL
+- Fix redundant warning when switching from html to text in empty editor (#1489819)
 
 RELEASE 1.0.0
 -------------
diff --git a/program/js/app.js b/program/js/app.js
index 2451a6d..082a28c 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -3458,17 +3458,8 @@
           $(tinyMCE.get(props.id).getBody()).css('font-family', rcmail.env.default_font);
         }, 500);
     }
-    else {
-      var thisMCE = tinyMCE.get(props.id), existingHtml;
-
-      if (existingHtml = thisMCE.getContent()) {
-        if (!confirm(this.get_label('editorwarning'))) {
-          return false;
-        }
-        this.html2plain(existingHtml, props.id);
-      }
+    else if (this.html2plain(tinyMCE.get(props.id).getContent(), props.id))
       tinyMCE.execCommand('mceRemoveControl', false, props.id);
-    }
 
     return true;
   };
@@ -6831,6 +6822,16 @@
 
   this.html2plain = function(htmlText, id)
   {
+    // warn the user (if converted content is not empty)
+    if (!htmlText || !(htmlText.replace(/<[^>]+>|&nbsp;|\s/g, '')).length) {
+      // without setTimeout() here, textarea is filled with initial (onload) content
+      setTimeout(function() { $('#'+id).val(''); }, 50);
+      return true;
+    }
+
+    if (!confirm(this.get_label('editorwarning')))
+      return false;
+
     var url = '?_task=utils&_action=html2text',
       lock = this.set_busy(true, 'converting');
 
@@ -6840,6 +6841,8 @@
       error: function(o, status, err) { ref.http_error(o, status, err, lock); },
       success: function(data) { ref.set_busy(false, null, lock); $('#'+id).val(data); ref.log(data); }
     });
+
+    return true;
   };
 
   this.plain2html = function(plain, id)

--
Gitblit v1.9.1