BUGFIX Ensure that windows-style newlines ("\r\n") don't get converted to their XML entity representation through DOMDocument in SS_HTMLValue->setContent()

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@111878 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Ingo Schommer 2010-10-11 18:52:45 +00:00 committed by Sam Minnee
parent 6dd19f40de
commit d45b8cce8b
2 changed files with 16 additions and 0 deletions

View File

@ -45,6 +45,11 @@ class SS_HTMLValue extends ViewableData {
* @return bool
*/
public function setContent($content) {
// Ensure that window-style newlines don't get replaced with "
" entity by DOMDocument
if (PHP_EOL == "\n") {
$content = str_replace("\r\n", PHP_EOL, $content);
}
return @$this->getDocument()->loadHTML(
'<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head>' .
"<body>$content</body></html>"

View File

@ -38,4 +38,15 @@ class SS_HTMLValueTest extends SapphireTest {
}
}
public function testMixedNewlines() {
$value = new SS_HTMLValue();
$eol = PHP_EOL;
$value->setContent("<p>paragraph</p>{$eol}<ul><li>1</li>\r\n</ul>");
$this->assertEquals(
"<p>paragraph</p>{$eol}<ul><li>1</li>{$eol}</ul>",
$value->getContent(),
'Newlines get converted'
);
}
}