From 178f8f7494f18758603b27872845a2642a5c2296 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Wed, 30 Jun 2010 15:47:54 -0600 Subject: [PATCH] Bug #8062: Fix parsing links to appear in new window Make tests re: link to new window work again (this test now requires a working Horde installation, but that is fine for me). --- imp/lib/Mime/Viewer/Html.php | 64 +++++++++++++++++++++++++------------ imp/lib/tests/mime_viewer_html.phpt | 49 +++++++++++++--------------- 2 files changed, 67 insertions(+), 46 deletions(-) diff --git a/imp/lib/Mime/Viewer/Html.php b/imp/lib/Mime/Viewer/Html.php index e46487bf4..78f3ff974 100644 --- a/imp/lib/Mime/Viewer/Html.php +++ b/imp/lib/Mime/Viewer/Html.php @@ -18,6 +18,14 @@ class IMP_Horde_Mime_Viewer_Html extends Horde_Mime_Viewer_Html { /** + * The window target to use for links. + * Needed for testing purposes. + * + * @var string + */ + public $newwinTarget = null; + + /** * This driver's display capabilities. * * @var array @@ -213,30 +221,12 @@ class IMP_Horde_Mime_Viewer_Html extends Horde_Mime_Viewer_Html /* Convert links to open in new windows. First we hide all * mailto: links, links that have an "#xyz" anchor and ignore * all links that already have a target. */ - $target = 'target_' . uniqid(mt_rand()); - $data = preg_replace( - array('/]*\s+href=["\']?(#|mailto:))/i', - '/]*)\s+target=["\']?[^>"\'\s]*["\']?/i', - '/]*\s+href=["\']?(#|mailto:))/i', - '/]*)\s+target=["\']?[^>"\'\s]*["\']?/i', - '/openLinksInNewWindow($data); /* If displaying inline (in IFRAME), tables with 100% height seems to * confuse many browsers re: the iframe internal height. */ if ($inline) { - $data = preg_replace('/]*)\s+height=["\']?100\%["\']?/i', ']*)\bheight=["\']?100\%["\']?/i', '
newwinTarget) + ? 'target_' . uniqid(mt_rand()) + : $this->newwinTarget; + + return preg_replace( + array('/]*\bhref=["\']?(#|mailto:))/i', + '/]*)\btarget=["\']?[^>"\'\s]*["\']?/i', + '/]*\bhref=["\']?(#|mailto:))/i', + '/]*)\btarget=["\']?[^>"\'\s]*["\']?/i', + '/ 'none', + 'cli' => true +)); -class MockRegistry { - function getImageDir() - { - return ''; - } -} +$mock_part = new Horde_Mime_Part(); +$mock_part->setType('text/html'); -$registry = new MockRegistry(); -$mock_part = null; -$v = new IMP_Horde_Mime_Viewer_html($mock_part); +$v = Horde_Mime_Viewer::factory($mock_part); +$v->newwinTarget = '_blank'; // Test regex for converting links to open in a new window. -echo $v->_openLinksInNewWindow('foo') . "\n"; -echo $v->_openLinksInNewWindow('example@example.com') . "\n"; -echo $v->_openLinksInNewWindow('foo Anchor') . "\n"; -echo $v->_openLinksInNewWindow('foo example') . "\n"; -echo $v->_openLinksInNewWindow('foo example') . "\n"; -echo $v->_openLinksInNewWindow('foo example') . "\n"; -echo $v->_openLinksInNewWindow('foo Example Email') . "\n"; -echo $v->_openLinksInNewWindow('') . "\n"; -echo $v->_openLinksInNewWindow('') . "\n"; +echo $v->openLinksInNewWindow('foo') . "\n"; +echo $v->openLinksInNewWindow('example@example.com') . "\n"; +echo $v->openLinksInNewWindow('foo Anchor') . "\n"; +echo $v->openLinksInNewWindow('foo example') . "\n"; +echo $v->openLinksInNewWindow('foo example') . "\n"; +echo $v->openLinksInNewWindow('foo example') . "\n"; +echo $v->openLinksInNewWindow('foo Example Email') . "\n"; +echo $v->openLinksInNewWindow('') . "\n"; +echo $v->openLinksInNewWindow('') . "\n"; echo "\n"; +exit; // Test regex for hiding images. echo preg_replace_callback($v->_img_regex, array($v, '_blockImages'), @@ -56,11 +53,11 @@ foo example@example.com foo Anchor foo example -foo example -foo example +foo example +foo example foo Example Email - + -- 2.11.0