From f4c512336dd707cf16b39beaae1055acea048891 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Mon, 10 Aug 2015 04:17:05 -0400 Subject: [PATCH] Fix "washing" of style elements wrapped into many lines --- CHANGELOG | 1 + program/lib/Roundcube/rcube_washtml.php | 3 +++ tests/Framework/Washtml.php | 8 ++++++++ 3 files changed, 12 insertions(+), 0 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index ba56486..1526726 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -37,6 +37,7 @@ - Fix error when using back button after sending an email (#1490009) - Fix removing signature when switching to identity with an empty sig in HTML mode (#1490470) - Disable links list generation on html-to-text conversion of identities or composed message (#1490437) +- Fix "washing" of style elements wrapped into many lines RELEASE 1.1.2 ------------- diff --git a/program/lib/Roundcube/rcube_washtml.php b/program/lib/Roundcube/rcube_washtml.php index 061184e..f3b0720 100644 --- a/program/lib/Roundcube/rcube_washtml.php +++ b/program/lib/Roundcube/rcube_washtml.php @@ -174,6 +174,9 @@ { $result = array(); + // Remove unwanted white-space characters so regular expressions below work better + $style = preg_replace('/[\n\r\s\t]+/', ' ', $style); + foreach (explode(';', $style) as $declaration) { if (preg_match('/^\s*([a-z\-]+)\s*:\s*(.*)\s*$/i', $declaration, $match)) { $cssid = $match[1]; diff --git a/tests/Framework/Washtml.php b/tests/Framework/Washtml.php index e4e3de4..acc611e 100644 --- a/tests/Framework/Washtml.php +++ b/tests/Framework/Washtml.php @@ -182,6 +182,14 @@ $this->assertRegExp('|line-height: 1;|', $washed, "Untouched line-height (#1489917)"); $this->assertRegExp('|; height: 10px|', $washed, "Fixed height units"); + + $html = "<div style=\"padding: 0px\n 20px;border:1px solid #000;\"></div>"; + $expected = "<div style=\"padding: 0px 20px; border: 1px solid #000\"></div>"; + + $washer = new rcube_washtml; + $washed = $washer->wash($html); + + $this->assertTrue(strpos($washed, $expected) !== false, "White-space and new-line characters handling"); } /** -- Gitblit v1.9.1