Don't wrap worwarded text; better wrap reply message text

release-0.6
thomascube 16 years ago
parent 7f22f297ac
commit ccd63c5591

@ -32,7 +32,7 @@ if ($RCMAIL->action=='remove-attachment' && preg_match('/^rcmfile([0-9]+)$/', $_
if (is_array($_SESSION['compose']['attachments'][$id])) if (is_array($_SESSION['compose']['attachments'][$id]))
{ {
@unlink($_SESSION['compose']['attachments'][$id]['path']); @unlink($_SESSION['compose']['attachments'][$id]['path']);
$_SESSION['compose']['attachments'][$id] = NULL; unset($_SESSION['compose']['attachments'][$id]);
$OUTPUT->command('remove_from_attachment_list', "rcmfile$id"); $OUTPUT->command('remove_from_attachment_list', "rcmfile$id");
$OUTPUT->send(); $OUTPUT->send();
exit; exit;
@ -478,7 +478,7 @@ function rcmail_create_reply_body($body, $bodyIsHtml)
if (! $bodyIsHtml) if (! $bodyIsHtml)
{ {
// soft-wrap message first // soft-wrap message first
$body = wordwrap($body, 75); $body = rcmail_wrap_quoted($body, 75);
// split body into single lines // split body into single lines
$a_lines = preg_split('/\r?\n/', $body); $a_lines = preg_split('/\r?\n/', $body);
@ -526,9 +526,6 @@ function rcmail_create_forward_body($body, $bodyIsHtml)
if (!$bodyIsHtml) if (!$bodyIsHtml)
{ {
// soft-wrap message first
$body = wordwrap($body, 80);
$prefix = sprintf("\n\n\n-------- Original Message --------\nSubject: %s\nDate: %s\nFrom: %s\nTo: %s\n\n", $prefix = sprintf("\n\n\n-------- Original Message --------\nSubject: %s\nDate: %s\nFrom: %s\nTo: %s\n\n",
$MESSAGE->subject, $MESSAGE->subject,
$MESSAGE->headers->date, $MESSAGE->headers->date,

@ -642,9 +642,6 @@ function rcmail_print_body($part, $p = array())
$convert_patterns[] = '/([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9]\\.[a-z]{2,5})/ie'; $convert_patterns[] = '/([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9]\\.[a-z]{2,5})/ie';
$convert_replaces[] = "rcmail_str_replacement('<a href=\"mailto:\\1\" onclick=\"return ".JS_OBJECT_NAME.".command(\'compose\',\'\\1\',this)\">\\1</a>', \$replace_strings)"; $convert_replaces[] = "rcmail_str_replacement('<a href=\"mailto:\\1\" onclick=\"return ".JS_OBJECT_NAME.".command(\'compose\',\'\\1\',this)\">\\1</a>', \$replace_strings)";
// if ($part->ctype_parameters['format'] != 'flowed')
// $body = wordwrap(trim($body), 80);
// search for patterns like links and e-mail addresses // search for patterns like links and e-mail addresses
$body = preg_replace($convert_patterns, $convert_replaces, $body); $body = preg_replace($convert_patterns, $convert_replaces, $body);
@ -1013,6 +1010,51 @@ function rcmail_address_string($input, $max=null, $linked=false, $addicon=null)
} }
/**
* Wrap text to a given number of characters per line
* but respect the mail quotation of replies messages (>)
*
* @param string Text to wrap
* @param int The line width
* @return string The wrapped text
*/
function rcmail_wrap_quoted($text, $max = 76)
{
// Rebuild the message body with a maximum of $max chars, while keeping quoted message.
$lines = preg_split('/\r?\n/', trim($text));
$out = '';
foreach ($lines as $line) {
if (strlen($line) > $max) {
if (preg_match('/^([>\s]+)/', $line, $regs)) {
$length = strlen($regs[0]);
$prefix = substr($line, 0, $length);
// Remove '> ' from the line, then wordwrap() the line
$line = wordwrap(substr($line, $length), $max - $length);
// Rebuild the line with '> ' at the beginning of each 'subline'
$newline = '';
foreach (explode("\n", $line) as $l) {
$newline .= $prefix . $l . "\n";
}
// Remove the righest newline char
$line = rtrim($newline);
}
else {
$line = wordwrap($line, $max);
}
}
// Append the line
$out .= $line . "\n";
}
return $out;
}
function rcmail_message_part_controls() function rcmail_message_part_controls()
{ {
global $MESSAGE; global $MESSAGE;

Loading…
Cancel
Save