From ad18d63cc15d7b0a77a5d90dc9f8bd7476b90c8d Mon Sep 17 00:00:00 2001 From: alecpl Date: Fri, 5 Feb 2010 08:25:22 +0000 Subject: - Fix handling of extended mailto links (with params) (#1486354) --- CHANGELOG | 1 + program/steps/mail/func.inc | 4 ++-- tests/mailfunc.php | 16 ++++++++++++++++ tests/src/mailto.txt | 8 ++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 tests/src/mailto.txt diff --git a/CHANGELOG b/CHANGELOG index ba2f0e9d3..634230707 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG RoundCube Webmail =========================== +- Fix handling of extended mailto links (with params) (#1486354) - Fix sorting by date of messages without date header on servers without SORT (#1486286) - Fix inconsistency when not using default table names (#1486467) - Fix folder rename/delete buttons do not appear on creation of first folder (#1486468) diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 98653087f..e9adc1513 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -1148,12 +1148,12 @@ function rcmail_alter_html_link($matches) $attrib['href'] = "./bin/modcss.php?u=" . urlencode($attrib['href']) . "&c=" . urlencode($GLOBALS['rcmail_html_container_id']); $end = ' />'; } - else if (preg_match("/^mailto:$EMAIL_ADDRESS_PATTERN/i", $attrib['href'], $mailto)) { + else if (preg_match('/^mailto:'.$EMAIL_ADDRESS_PATTERN.'(\?[^"\'>]+)?/i', $attrib['href'], $mailto)) { $attrib['href'] = $mailto[0]; $attrib['onclick'] = sprintf( "return %s.command('compose','%s',this)", JS_OBJECT_NAME, - JQ($mailto[1])); + JQ($mailto[1].$mailto[2])); } else if (!empty($attrib['href']) && $attrib['href'][0] != '#') { $attrib['target'] = '_blank'; diff --git a/tests/mailfunc.php b/tests/mailfunc.php index 0e9363a0b..755cadc5e 100644 --- a/tests/mailfunc.php +++ b/tests/mailfunc.php @@ -114,6 +114,22 @@ class rcube_test_mailfunc extends UnitTestCase $this->assertPattern('#http://www.apple.com/legal/privacy/#', $html, "Links with target=_blank"); } + /** + * Test mailto links in html messages + */ + function test_mailto() + { + $part = $this->get_html_part('src/mailto.txt'); + + // render HTML in normal mode + $html = rcmail_html4inline(rcmail_print_body($part, array('safe' => false)), 'foo'); + + $mailto = 'e-mail'; + + $this->assertPattern('|'.preg_quote($mailto, '|').'|', $html, "Extended mailto links"); + } + } ?> \ No newline at end of file diff --git a/tests/src/mailto.txt b/tests/src/mailto.txt new file mode 100644 index 000000000..e70b12de8 --- /dev/null +++ b/tests/src/mailto.txt @@ -0,0 +1,8 @@ + + + + +e-mail + + + \ No newline at end of file -- cgit v1.2.3