From 8e44f425f8be7cea2972c550fe8de48c928e868e Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Fri, 22 Aug 2008 07:11:37 -0400 Subject: [PATCH] Remove mailto links from sender/recipient addresses in message list and wait for the context menu (#1484931) --- program/steps/mail/func.inc | 94 +++++++++++++++++++++++++++++++---------------- 1 files changed, 62 insertions(+), 32 deletions(-) diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 7a986c1..f578090 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -245,7 +245,7 @@ foreach ($a_show_cols as $col) { if ($col=='from' || $col=='to') - $cont = Q(rcmail_address_string($header->$col, 3, $attrib['addicon']), 'show'); + $cont = Q(rcmail_address_string($header->$col, 3, false, $attrib['addicon']), 'show'); else if ($col=='subject') { $action = $mbox==$CONFIG['drafts_mbox'] ? 'compose' : 'show'; @@ -529,6 +529,27 @@ return Q($out); } +/** + * + */ +function rcmail_mailbox_name_display($attrib) +{ + global $RCMAIL; + + if (!$attrib['id']) + $attrib['id'] = 'rcmmailboxname'; + + $RCMAIL->output->add_gui_object('mailboxname', $attrib['id']); + + return html::span($attrib, rcmail_get_mailbox_name_text()); +} + +function rcmail_get_mailbox_name_text() +{ + global $RCMAIL; + return rcmail_localize_foldername($RCMAIL->imap->get_mailbox_name()); +} + /** * Convert the given message part to proper HTML @@ -555,8 +576,8 @@ else if ($part->ctype_secondary == 'html') { // charset was converted to UTF-8 in rcube_imap::get_message_part() -> change charset specification in HTML accordingly $html = $part->body; - if (preg_match('/(\s+content=[\'"]\w+\/\w+;\s*charset)=([a-z0-9-]+)/i', $html)) - $html = preg_replace('/(\s+content=[\'"]\w+\/\w+;\s*charset)=([a-z0-9-]+)/i', '\\1='.RCMAIL_CHARSET, $html); + if (preg_match('/(\s+content=[\'"]\w+\/\w+;\s*charset)=([a-z0-9-_]+)/i', $html)) + $html = preg_replace('/(\s+content=[\'"]\w+\/\w+;\s*charset)=([a-z0-9-_]+)/i', '\\1='.RCMAIL_CHARSET, $html); else { // add <head> for malformed messages, washtml cannot work without that if (!preg_match('/<head>(.*)<\\/head>/Uims', $html)) @@ -736,7 +757,7 @@ $header_value = format_date($headers[$hkey]); } else if (in_array($hkey, array('from', 'to', 'cc', 'bcc', 'reply-to'))) - $header_value = Q(rcmail_address_string($headers[$hkey], NULL, $attrib['addicon']), 'show'); + $header_value = Q(rcmail_address_string($headers[$hkey], null, true, $attrib['addicon']), 'show'); else $header_value = Q($IMAP->decode_header($headers[$hkey])); @@ -921,8 +942,8 @@ /** * decode address string and re-format it as HTML links */ -function rcmail_address_string($input, $max=NULL, $addicon=NULL) - { +function rcmail_address_string($input, $max=null, $linked=false, $addicon=null) +{ global $IMAP, $PRINT_MODE, $CONFIG, $OUTPUT, $EMAIL_ADDRESS_PATTERN; $a_parts = $IMAP->decode_address_list($input); @@ -934,48 +955,56 @@ $j = 0; $out = ''; - foreach ($a_parts as $part) - { + foreach ($a_parts as $part) { $j++; - if ($PRINT_MODE) + if ($PRINT_MODE) { $out .= sprintf('%s <%s>', Q($part['name']), $part['mailto']); - else if (preg_match($EMAIL_ADDRESS_PATTERN, $part['mailto'])) - { - $out .= sprintf('<a href="mailto:%s" onclick="return %s.command(\'compose\',\'%s\',this)" class="rcmContactAddress" title="%s">%s</a>', - Q($part['mailto']), - JS_OBJECT_NAME, - JQ($part['mailto']), - Q($part['mailto']), - Q($part['name'])); - - if ($addicon) - $out .= sprintf(' <a href="#add" onclick="return %s.command(\'add-contact\',\'%s\',this)" title="%s"><img src="%s%s" alt="add" border="0" /></a>', - JS_OBJECT_NAME, - urlencode($part['string']), - rcube_label('addtoaddressbook'), - $CONFIG['skin_path'], - $addicon); + } + else if (preg_match($EMAIL_ADDRESS_PATTERN, $part['mailto'])) { + if ($linked) { + $out .= html::a(array( + 'href' => 'mailto:'.$part['mailto'], + 'onclick' => sprintf("return %s.command('compose','%s',this)", JS_OBJECT_NAME, JQ($part['mailto'])), + 'title' => $part['mailto'], + 'class' => "rcmContactAddress", + ), + Q($part['name'])); } - else - { + else { + $out .= html::span(array('title' => $part['mailto'], 'class' => "rcmContactAddress"), Q($part['name'])); + } + + if ($addicon) { + $out .= ' ' . html::a(array( + 'href' => "#add", + 'onclick' => sprintf("return %s.command('add-contact','%s',this)", JS_OBJECT_NAME, urlencode($part['string'])), + 'title' => rcube_label('addtoaddressbook'), + ), + html::img(array( + 'src' => $CONFIG['skin_path'] . $addicon, + 'alt' => "Add contact", + 'border' => 0, + ))); + } + } + else { if ($part['name']) $out .= Q($part['name']); if ($part['mailto']) $out .= (strlen($out) ? ' ' : '') . sprintf('<%s>', Q($part['mailto'])); - } + } if ($c>$j) $out .= ','.($max ? ' ' : ' '); - if ($max && $j==$max && $c>$j) - { + if ($max && $j==$max && $c>$j) { $out .= '...'; break; - } } + } return $out; - } +} function rcmail_message_part_controls() @@ -1179,6 +1208,7 @@ 'messages' => 'rcmail_message_list', 'messagecountdisplay' => 'rcmail_messagecount_display', 'quotadisplay' => 'rcmail_quota_display', + 'mailboxname' => 'rcmail_mailbox_name_display', 'messageheaders' => 'rcmail_message_headers', 'messagebody' => 'rcmail_message_body', 'messagecontentframe' => 'rcmail_messagecontent_frame', -- Gitblit v1.9.1