From fe79b1bcf828b6b9f947c4b32d5e7bf297438be4 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Sun, 30 Jul 2006 06:14:19 -0400 Subject: [PATCH] Alter links in HTML messages; highlight droptargets --- program/steps/mail/func.inc | 27 +++++++++++++++++++++++++-- 1 files changed, 25 insertions(+), 2 deletions(-) diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index b1d3d8b..fd0d2c2 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -216,6 +216,8 @@ $out .= sprintf('<li id="rcmbx%s" class="mailbox %s %s%s%s"><a href="%s&_mbox=%s"'. ' onclick="return %s.command(\'list\',\'%s\')"'. + ' onmouseover="return %s.focus_mailbox(\'%s\')"' . + ' onmouseout="return %s.unfocus_mailbox(\'%s\')"' . ' onmouseup="return %s.mbox_mouse_up(\'%s\')"%s>%s</a>', $folder_css, $class_name, @@ -224,6 +226,10 @@ addslashes($folder['id'])==addslashes($mbox_name) ? ' selected' : '', $COMM_PATH, urlencode($folder['id']), + $JS_OBJECT_NAME, + addslashes($folder['id']), + $JS_OBJECT_NAME, + addslashes($folder['id']), $JS_OBJECT_NAME, addslashes($folder['id']), $JS_OBJECT_NAME, @@ -1170,11 +1176,14 @@ $body = preg_replace('/(url\s*\()(["\']?)([\.\/]+[^"\'\)\s]+)(\2)\)/Uie', "'\\1\''.make_absolute_url('\\3', '$base_url').'\')'", $body); $body = preg_replace($base_reg, '', $body); } + + // modify HTML links to open a new window if clicked + $body = preg_replace('/<a\s+([^>]+)>/Uie', "rcmail_alter_html_link('\\1');", $body); // add comments arround html and other tags $out = preg_replace(array('/(<\/?html[^>]*>)/i', '/(<\/?head[^>]*>)/i', - '/(<title[^>]*>.+<\/title>)/ui', + '/(<title[^>]*>.*<\/title>)/Ui', '/(<\/?meta[^>]*>)/i'), '<!--\\1-->', $body); @@ -1184,12 +1193,26 @@ array('<div class="rcmBody">', '</div>'), $out); - return $out; } +// parse link attributes and set correct target +function rcmail_alter_html_link($in) + { + $attrib = parse_attrib_string($in); + + if (stristr((string)$attrib['href'], 'mailto:')) + $attrib['onclick'] = sprintf("return %s.command('compose','%s',this)", + $GLOBALS['JS_OBJECT_NAME'], + substr($attrib['href'], 7)); + else if (!empty($attrib['href']) && $attrib['href']{0}!='#') + $attrib['target'] = '_blank'; + + return '<a' . create_attrib_string($attrib, array('href', 'name', 'target', 'onclick', 'id', 'class', 'style', 'title')) . '>'; + } + // replace all css definitions with #container [def] function rcmail_mod_css_styles($source, $container_id) -- Gitblit v1.9.1