From 3bd94b142eb00024eeb52c0e3f4a9f61bed4f3f9 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sun, 14 Sep 2008 04:34:11 -0400
Subject: [PATCH] - use html2text for signatures in Settings/Identities

---
 program/js/editor.js                     |   33 +---------------
 program/localization/en_US/messages.inc  |    2 
 program/localization/pl_PL/messages.inc  |    2 
 program/js/app.js                        |   43 ++++++++++++++++++++-
 program/localization/en_GB/messages.inc  |    2 
 program/steps/settings/edit_identity.inc |    2 
 6 files changed, 48 insertions(+), 36 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index f4f4fc4..d42b8ed 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -3648,13 +3648,21 @@
   this.toggle_editor = function(checkbox, textAreaId)
     {
     var ischecked = checkbox.checked;
+    var composeElement = document.getElementById(textAreaId);
+    
     if (ischecked)
       {
-        tinyMCE.execCommand('mceAddControl', true, textAreaId);
+      var existingPlainText = composeElement.value;
+      var htmlText = "<pre>" + existingPlainText + "</pre>";
+      composeElement.value = htmlText;
+      tinyMCE.execCommand('mceAddControl', true, textAreaId);
       }
     else
       {
-        tinyMCE.execCommand('mceRemoveControl', true, textAreaId);
+      var thisMCE = tinyMCE.get(textAreaId);
+      var existingHtml = thisMCE.getContent();
+      this.html2plain(existingHtml, textAreaId);
+      tinyMCE.execCommand('mceRemoveControl', true, textAreaId);
       }
     };
 
@@ -3718,6 +3726,37 @@
 
 
   /********************************************************/
+  /*********  html to text conversion functions   *********/
+  /********************************************************/
+
+  this.html2plain = function(htmlText, id)
+    {
+    var http_request = new rcube_http_request();
+    var url = this.env.bin_path+'html2text.php';
+    var rcmail = this;
+
+    this.set_busy(true, 'converting');
+    console.log('HTTP POST: '+url);
+
+    http_request.onerror = function(o) { rcmail.http_error(o); };
+    http_request.oncomplete = function(o) { rcmail.set_text_value(o, id); };
+    http_request.POST(url, htmlText, 'application/octet-stream');
+    }
+
+  this.set_text_value = function(httpRequest, id)
+    {
+    this.set_busy(false);
+    document.getElementById(id).value = httpRequest.get_text();
+    console.log(httpRequest.get_text());
+    }
+
+  this.handle_conv_error = function(httpRequest)
+    {
+    alert('html2text request returned with error ' + httpRequest.xmlhttp.status);
+    }
+
+
+  /********************************************************/
   /*********        remote request methods        *********/
   /********************************************************/
 
diff --git a/program/js/editor.js b/program/js/editor.js
index 38c9b71..c4f449c 100644
--- a/program/js/editor.js
+++ b/program/js/editor.js
@@ -55,13 +55,10 @@
     }
 
   // do the appropriate conversion
-
-  var composeElement = document.getElementById('compose-body');
-
   if (selectedEditor == 'html')
     {
-    var existingPlainText = composeElement.value;
-    var htmlText = "<pre>" + existingPlainText + "</pre>";
+    var composeElement = document.getElementById('compose-body');
+    var htmlText = "<pre>" + composeElement.value + "</pre>";
     composeElement.value = htmlText;
     tinyMCE.execCommand('mceAddControl', true, 'compose-body');
     htmlFlag.value = "1";
@@ -69,35 +66,11 @@
     }
   else
     {
-    rcmail.set_busy(true, 'converting');
     var thisMCE = tinyMCE.get('compose-body');
     var existingHtml = thisMCE.getContent();
-    rcmail_html2plain(existingHtml);
+    rcmail.html2plain(existingHtml, 'compose-body');
     tinyMCE.execCommand('mceRemoveControl', true, 'compose-body');
     htmlFlag.value = "0";
     rcmail.display_spellcheck_controls(true);
     }
-  }
-
-function rcmail_html2plain(htmlText)
-  {
-  var http_request = new rcube_http_request();
-
-  http_request.onerror = function(o) { rcmail_handle_toggle_error(o); };
-  http_request.oncomplete = function(o) { rcmail_set_text_value(o); };
-  var url = rcmail.env.bin_path+'html2text.php';
-  //console.log('HTTP request: ' + url);
-  http_request.POST(url, htmlText, 'application/octet-stream');
-  }
-
-function rcmail_set_text_value(httpRequest)
-  {
-  rcmail.set_busy(false);
-  var composeElement = document.getElementById('compose-body');
-  composeElement.value = httpRequest.get_text();
-  }
-
-function rcmail_handle_toggle_error(httpRequest)
-  {
-  alert('html2text request returned with error ' + httpRequest.xmlhttp.status);
   }
diff --git a/program/localization/en_GB/messages.inc b/program/localization/en_GB/messages.inc
index 8ee5d8e..255aac3 100644
--- a/program/localization/en_GB/messages.inc
+++ b/program/localization/en_GB/messages.inc
@@ -66,7 +66,7 @@
 $messages['nospellerrors'] = 'No spelling errors found';
 $messages['folderdeleted'] = 'Folder successfully deleted';
 $messages['deletedsuccessfully'] = 'Successfully deleted';
-$messages['converting'] = 'Removing formatting from message...';
+$messages['converting'] = 'Removing formatting...';
 $messages['messageopenerror'] = 'Could not load message from server';
 $messages['fileuploaderror'] = 'File upload failed';
 $messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size';
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index a2a9559..c4de6dd 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -66,7 +66,7 @@
 $messages['nospellerrors'] = 'No spelling errors found';
 $messages['folderdeleted'] = 'Folder successfully deleted';
 $messages['deletedsuccessfully'] = "Successfully deleted";
-$messages['converting'] = 'Removing formatting from message...';
+$messages['converting'] = 'Removing formatting...';
 $messages['messageopenerror'] = 'Could not load message from server';
 $messages['fileuploaderror'] = 'File upload failed';
 $messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size';
diff --git a/program/localization/pl_PL/messages.inc b/program/localization/pl_PL/messages.inc
index 54fc771..986a859 100644
--- a/program/localization/pl_PL/messages.inc
+++ b/program/localization/pl_PL/messages.inc
@@ -71,7 +71,7 @@
 $messages['nospellerrors'] = 'Nie znaleziono błędów w pisowni.';
 $messages['folderdeleted'] = 'Folder został pomyślnie usunięty.';
 $messages['deletedsuccessfully'] = 'Usunięto';
-$messages['converting'] = 'Konwertowanie wiadomości...';
+$messages['converting'] = 'Konwertowanie tekstu...';
 $messages['messageopenerror'] = 'Nie można załadować wiadomości z serwera';
 $messages['fileuploaderror'] = 'Załączanie pliku nie powiodło się';
 $messages['filesizeerror'] = 'Plik przekracza maksymalną wielkość $size';
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index cb9064a..46918cb 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -60,7 +60,7 @@
     return rcube_label('notfound');
 
   // add some labels to client
-  rcube_add_label('noemailwarning', 'nonamewarning');
+  $OUTPUT->add_label('noemailwarning', 'nonamewarning', 'converting');
 
 
   list($form_start, $form_end) = get_form_tags($attrib, 'save-identity', array('name' => '_iid', 'value' => $IDENTITY_RECORD['identity_id']));

--
Gitblit v1.9.1