Thomas Bruederli
2012-10-01 5bb2312cc00d2008492068ec9e73332062f1a12a
Avoid double-quoting of some message headers; wrap email address strings in <span> for better styling
1 files modified
38 ■■■■■ changed files
program/steps/mail/func.inc 38 ●●●●● patch | view | raw | blame | history
program/steps/mail/func.inc
@@ -319,7 +319,7 @@
      $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 @@
  $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 @@
        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, null, true, $attrib['addicon'], $headers['charset']);
    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 ($hkey == 'subject' && empty($value))
      $header_value = rcube_label('nosubject');
    else
@@ -1001,7 +1010,9 @@
    $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 @@
  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 @@
      }
      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 @@
          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)