From 5bb2312cc00d2008492068ec9e73332062f1a12a Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Mon, 1 Oct 2012 21:41:54 +0200 Subject: Avoid double-quoting of some message headers; wrap email address strings in for better styling --- program/steps/mail/func.inc | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index c0a41a3de..59203bfd9 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -319,7 +319,7 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null $col_name = $col == 'fromto' ? $smart_col : $col; if (in_array($col_name, array('from', 'to', 'cc', 'replyto'))) - $cont = Q(rcmail_address_string($header->$col_name, 3, false, null, $header->charset), 'show'); + $cont = rcmail_address_string($header->$col_name, 3, false, null, $header->charset); else if ($col == 'subject') { $cont = trim(rcube_mime::decode_header($header->$col, $header->charset)); if (!$cont) $cont = rcube_label('nosubject'); @@ -952,6 +952,8 @@ function rcmail_message_headers($attrib, $headers=NULL) $output_headers = array(); foreach ($standard_headers as $hkey) { + $ishtml = false; + if ($headers[$hkey]) $value = $headers[$hkey]; else if ($headers['others'][$hkey]) @@ -976,24 +978,31 @@ function rcmail_message_headers($attrib, $headers=NULL) continue; } else if ($hkey == 'replyto') { - if ($headers['replyto'] != $headers['from']) + if ($headers['replyto'] != $headers['from']) { $header_value = rcmail_address_string($value, null, true, $attrib['addicon'], $headers['charset']); + $ishtml = true; + } else continue; } else if ($hkey == 'mail-reply-to') { if ($headers['mail-replyto'] != $headers['reply-to'] && $headers['reply-to'] != $headers['from'] - ) + ) { $header_value = rcmail_address_string($value, null, true, $attrib['addicon'], $headers['charset']); + $ishtml = true; + } else continue; } else if ($hkey == 'mail-followup-to') { $header_value = rcmail_address_string($value, null, true, $attrib['addicon'], $headers['charset']); + $ishtml = true; + } + else if (in_array($hkey, array('from', 'to', 'cc', 'bcc'))) { + $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset']); + $ishtml = true; } - else if (in_array($hkey, array('from', 'to', 'cc', 'bcc'))) - $header_value = rcmail_address_string($value, null, true, $attrib['addicon'], $headers['charset']); else if ($hkey == 'subject' && empty($value)) $header_value = rcube_label('nosubject'); else @@ -1001,7 +1010,9 @@ function rcmail_message_headers($attrib, $headers=NULL) $output_headers[$hkey] = array( 'title' => rcube_label(preg_replace('/(^mail-|-)/', '', $hkey)), - 'value' => $header_value, 'raw' => $value + 'value' => $header_value, + 'raw' => $value, + 'html' => $ishtml, ); } @@ -1017,7 +1028,7 @@ function rcmail_message_headers($attrib, $headers=NULL) foreach ($plugin['output'] as $hkey => $row) { $table->add(array('class' => 'header-title'), Q($row['title'])); - $table->add(array('class' => 'header '.$hkey), Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show'))); + $table->add(array('class' => 'header '.$hkey), $row['html'] ? $row['value'] : Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show'))); } return $table->show($attrib); @@ -1391,7 +1402,7 @@ function rcmail_address_string($input, $max=null, $linked=false, $addicon=null, } if ($addicon && $_SESSION['writeable_abook']) { - $address = html::span(null, $address . html::a(array( + $address .= html::a(array( 'href' => "#add", 'onclick' => sprintf("return %s.command('add-contact','%s',this)", JS_OBJECT_NAME, $string), 'title' => rcube_label('addtoaddressbook'), @@ -1400,15 +1411,18 @@ function rcmail_address_string($input, $max=null, $linked=false, $addicon=null, html::img(array( 'src' => $CONFIG['skin_path'] . $addicon, 'alt' => "Add contact", - )))); + ))); } - $out .= $address; + $out .= html::span('adr', $address); } else { + $address = ''; if ($name) - $out .= Q($name); + $address .= Q($name); if ($mailto) - $out .= (strlen($out) ? ' ' : '') . sprintf('<%s>', Q($mailto)); + $address .= (strlen($address) ? ' ' : '') . sprintf('<%s>', Q($mailto)); + + $out .= html::span('adr', $address); } if ($c>$j) -- cgit v1.2.3