From 5821ff51239b7f24d18e3097b3e85813f81768dd Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sat, 06 Mar 2010 13:59:25 -0500
Subject: [PATCH] - Don't show a warning on html2text switch when textarea is empty - Set properly select's value when html2text is aborted

---
 program/steps/mail/compose.inc           |    2 +-
 program/js/editor.js                     |   24 ++++++++++++++++++------
 program/steps/settings/edit_identity.inc |    2 +-
 3 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/program/js/editor.js b/program/js/editor.js
index 361741e..10511a0 100644
--- a/program/js/editor.js
+++ b/program/js/editor.js
@@ -83,10 +83,15 @@
 }
 
 // switch html/plain mode
-function rcmail_toggle_editor(ishtml, textAreaId, flagElement)
+function rcmail_toggle_editor(select, textAreaId, flagElement)
 {
   var composeElement = document.getElementById(textAreaId);
-  var flag;
+  var flag, ishtml;
+
+  if (select.tagName != 'SELECT')
+    ishtml = select.checked;
+  else
+    ishtml = select.value == 'html';
 
   if (ishtml)
     {
@@ -100,12 +105,19 @@
     }
   else
     {
-    if (!confirm(rcmail.get_label('editorwarning')))
-      return false;
-
     var thisMCE = tinyMCE.get(textAreaId);
     var existingHtml = thisMCE.getContent();
-    rcmail.html2plain(existingHtml, textAreaId);
+
+    if (existingHtml) {
+      if (!confirm(rcmail.get_label('editorwarning'))) {
+        if (select.tagName == 'SELECT')
+	  select.value = 'html';
+        return false;
+	}
+
+      rcmail.html2plain(existingHtml, textAreaId);
+      }
+
     tinyMCE.execCommand('mceRemoveControl', true, textAreaId);
     rcmail.display_spellcheck_controls(true);
     if (flagElement && (flag = rcube_find_object(flagElement)))
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index fa1ea95..3a63cc8 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -976,7 +976,7 @@
   if (empty($attrib['name']))
     $attrib['name'] = 'editorSelect';
     
-  $attrib['onchange'] = "return rcmail_toggle_editor(this.value=='html', '".$attrib['editorid']."', '_is_html')";
+  $attrib['onchange'] = "return rcmail_toggle_editor(this, '".$attrib['editorid']."', '_is_html')";
 
   $select = new html_select($attrib);
 
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index bf3777f..d0f3581 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -70,7 +70,7 @@
                        'reply-to'     => array('type' => 'text', 'label' => 'reply-to', 'size' => $i_size),
                        'bcc'          => array('type' => 'text', 'size' => $i_size),
                        'signature'	  => array('type' => 'textarea', 'size' => $t_cols, 'rows' => $t_rows),
-                       'html_signature'=>array('type' => 'checkbox', 'label' => 'htmlsignature', 'onclick' => 'return rcmail_toggle_editor(this.checked, \'rcmfd_signature\');'),
+                       'html_signature'=>array('type' => 'checkbox', 'label' => 'htmlsignature', 'onclick' => 'return rcmail_toggle_editor(this, \'rcmfd_signature\');'),
                        'standard'     => array('type' => 'checkbox', 'label' => 'setdefault'));
 
   // disable some field according to access level

--
Gitblit v1.9.1