From 4340d5e63424ffdea2788701c5539c9cdc162eda Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 12 Nov 2012 03:16:22 -0500
Subject: [PATCH] Fix excessive LFs at the end of composed message with top_posting=true (#1488797)

---
 CHANGELOG                      |    1 +
 program/steps/mail/compose.inc |   10 +++++-----
 program/steps/mail/func.inc    |    2 +-
 program/js/app.js              |    4 ++++
 4 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 53ac6f3..19585aa 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix excessive LFs at the end of composed message with top_posting=true (#1488797)
 - Option to display attached images as thumbnails below message body
 - Fix bug where leading blanks were stripped from quoted lines (#1488795)
 - Upgraded to jQuery 1.8.2 and jQuery UI 1.9.1
diff --git a/program/js/app.js b/program/js/app.js
index 7764c6c..0f5a60c 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -3413,6 +3413,10 @@
             message = message.substring(0, p) + sig + message.substring(p, message.length);
             cursor_pos = p - 1;
           }
+          else if (!message) { // empty message
+            cursor_pos = 0;
+            message = '\n\n' + sig;
+          }
           else if (pos = this.get_caret_pos(input_message.get(0))) { // at cursor position
             message = message.substring(0, pos) + '\n' + sig + '\n\n' + message.substring(pos, message.length);
             cursor_pos = pos;
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 2327deb..87a06e1 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -906,9 +906,10 @@
 
   if (!$bodyIsHtml) {
     $body = preg_replace('/\r?\n/', "\n", $body);
+    $body = trim($body, "\n");
 
     // soft-wrap and quote message text
-    $body = rcmail_wrap_and_quote(rtrim($body, "\n"), $LINE_LENGTH);
+    $body = rcmail_wrap_and_quote($body, $LINE_LENGTH);
 
     $prefix .= "\n";
     $suffix = '';
@@ -953,8 +954,7 @@
   $date    = format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long'));
   $charset = $RCMAIL->output->get_charset();
 
-  if (!$bodyIsHtml)
-  {
+  if (!$bodyIsHtml) {
     $prefix = "\n\n\n-------- " . rcube_label('originalmessage') . " --------\n";
     $prefix .= rcube_label('subject') . ': ' . $MESSAGE->subject . "\n";
     $prefix .= rcube_label('date')    . ': ' . $date . "\n";
@@ -967,9 +967,9 @@
       $prefix .= rcube_label('replyto') . ': ' . $MESSAGE->get_header('replyto') . "\n";
 
     $prefix .= "\n";
+    $body = trim($body, "\r\n");
   }
-  else
-  {
+  else {
     // set is_safe flag (we need this for html body washing)
     rcmail_check_safe($MESSAGE);
     // clean up html tags
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index e4c4d81..5e24a43 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -1594,7 +1594,7 @@
     $out .= $line . "\n";
   }
 
-  return $out;
+  return rtrim($out, "\n");
 }
 
 

--
Gitblit v1.9.1