summaryrefslogtreecommitdiff
path: root/program/steps
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2010-02-05 11:35:11 +0000
committeralecpl <alec@alec.pl>2010-02-05 11:35:11 +0000
commitb620493a4bfdfdabc055b7d8cffa4af432e96977 (patch)
treea6ca5aea19bc5390eaeb067cfd812b5afef3053c /program/steps
parentad18d63cc15d7b0a77a5d90dc9f8bd7476b90c8d (diff)
- Fix quoted text wrapping when replying to an HTML email in plain text (#1484141)
Diffstat (limited to 'program/steps')
-rw-r--r--program/steps/mail/compose.inc25
-rw-r--r--program/steps/mail/sendmail.inc7
2 files changed, 24 insertions, 8 deletions
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 6fcdf435c..fd3e862c2 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -128,11 +128,14 @@ else if ($config_show_sig == 3 && ($compose_mode == RCUBE_COMPOSE_REPLY || $comp
else
$OUTPUT->set_env('show_sig', false);
+// set line length for body wrapping
+$LINE_LENGTH = $RCMAIL->config->get('line_length', 75);
+
if (!empty($msg_uid))
{
// similar as in program/steps/mail/show.inc
// re-set 'prefer_html' to have possibility to use html part for compose
- $CONFIG['prefer_html'] = $CONFIG['htmleditor'] || $compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT;
+ $CONFIG['prefer_html'] = $CONFIG['prefer_html'] || $CONFIG['htmleditor'] || $compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT;
$MESSAGE = new rcube_message($msg_uid);
if (!empty($MESSAGE->headers->charset))
@@ -395,7 +398,7 @@ function rcmail_compose_header_from($attrib)
function rcmail_compose_body($attrib)
{
- global $RCMAIL, $CONFIG, $OUTPUT, $MESSAGE, $compose_mode;
+ global $RCMAIL, $CONFIG, $OUTPUT, $MESSAGE, $compose_mode, $LINE_LENGTH;
list($form_start, $form_end) = get_form_tags($attrib);
unset($attrib['form']);
@@ -424,11 +427,21 @@ function rcmail_compose_body($attrib)
}
else if ($compose_mode)
{
- if (($isHtml || $compose_mode == RCUBE_COMPOSE_DRAFT) && $MESSAGE->has_html_part())
+ $has_html_part = $MESSAGE->has_html_part();
+ if (($isHtml || $compose_mode == RCUBE_COMPOSE_DRAFT) && $has_html_part)
{
$body = $MESSAGE->first_html_part();
$isHtml = true;
}
+ else if ($has_html_part)
+ {
+ // use html part if it has been used for message (pre)viewing
+ // decrease line length for quoting
+ $len = $compose_mode == RCUBE_COMPOSE_REPLY ? $LINE_LENGTH-2 : $LINE_LENGTH;
+ $txt = new html2text($MESSAGE->first_html_part(), false, true, $len);
+ $body = $txt->get_text();
+ $isHtml = false;
+ }
else
{
$body = $MESSAGE->first_text_part();
@@ -522,7 +535,7 @@ function rcmail_compose_body($attrib)
function rcmail_create_reply_body($body, $bodyIsHtml)
{
- global $RCMAIL, $MESSAGE;
+ global $RCMAIL, $MESSAGE, $LINE_LENGTH;
if (!$bodyIsHtml) {
// try to remove the signature
@@ -532,7 +545,7 @@ function rcmail_create_reply_body($body, $bodyIsHtml)
}
// soft-wrap message first
- $body = rcmail_wrap_quoted($body, 75);
+ $body = rcmail_wrap_quoted($body, $LINE_LENGTH);
$body = rtrim($body, "\r\n");
@@ -554,7 +567,7 @@ function rcmail_create_reply_body($body, $bodyIsHtml)
// add title line(s)
$prefix = rc_wordwrap(sprintf("On %s, %s wrote:\n",
$MESSAGE->headers->date,
- $MESSAGE->get_header('from')), 76);
+ $MESSAGE->get_header('from')), $LINE_LENGTH);
$suffix = '';
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 589c9af7f..724feb80c 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -357,6 +357,9 @@ if (!$savedraft) {
}
}
+// set line length for body wrapping
+$LINE_LENGTH = $RCMAIL->config->get('line_length', 75);
+
// create extended PEAR::Mail_mime instance
$MAIL_MIME = new rcube_mail_mime($RCMAIL->config->header_delimiter());
@@ -369,7 +372,7 @@ if ($isHtml) {
// add a plain text version of the e-mail as an alternative part.
$h2t = new html2text($plugin['body'], false, true, 0);
- $plainTextPart = rc_wordwrap($h2t->get_text(), 75, "\r\n") . ($footer ? "\r\n".$footer : '');
+ $plainTextPart = rc_wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n") . ($footer ? "\r\n".$footer : '');
$plainTextPart = wordwrap($plainTextPart, 998, "\r\n", true);
if (!strlen($plainTextPart)) {
// empty message body breaks attachment handling in drafts
@@ -383,7 +386,7 @@ if ($isHtml) {
}
else
{
- $message_body = rc_wordwrap($message_body, 75, "\r\n");
+ $message_body = rc_wordwrap($message_body, $LINE_LENGTH, "\r\n");
if ($footer)
$message_body .= "\r\n" . $footer;
$message_body = wordwrap($message_body, 998, "\r\n", true);