summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Bruederli <thomas@roundcube.net>2012-10-01 21:41:54 +0200
committerThomas Bruederli <thomas@roundcube.net>2012-10-01 21:55:21 +0200
commit5bb2312cc00d2008492068ec9e73332062f1a12a (patch)
treeafe42ff1ef06cf9b06eba344a93416d1379ff132
parente444a05a355704293b4feda4c2fc505b3de76d47 (diff)
Avoid double-quoting of some message headers; wrap email address strings in <span> for better styling
-rw-r--r--program/steps/mail/func.inc38
1 files 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('&lt;%s&gt;', Q($mailto));
+ $address .= (strlen($address) ? ' ' : '') . sprintf('&lt;%s&gt;', Q($mailto));
+
+ $out .= html::span('adr', $address);
}
if ($c>$j)