mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
BUGFIX Ensure that \r carriage return characters get stripped out before setting content in HTMLValue::setContent(). DOMDocument will transform these into 
 entities, which is apparently XML spec, but not necessary for us as we're using HTML (from r111949)
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@112946 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
c2989908c8
commit
f0dc6c65ca
@ -45,11 +45,10 @@ 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);
|
||||
}
|
||||
|
||||
// Ensure that \r (carriage return) characters don't get replaced with " " entity by DOMDocument
|
||||
// apparently it's in the XML standard, but that messes it up because we're using HTML
|
||||
$content = str_replace(chr(13), '', $content);
|
||||
|
||||
return @$this->getDocument()->loadHTML(
|
||||
'<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head>' .
|
||||
"<body>$content</body></html>"
|
||||
|
@ -40,8 +40,9 @@ 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>");
|
||||
$eol = "\n";
|
||||
$platformEOL = PHP_EOL; // native EOL for platform. Windows is \r\n (CR-LF). UNIX is LF
|
||||
$value->setContent("<p>paragraph</p>{$platformEOL}<ul><li>1</li>\r\n</ul>");
|
||||
$this->assertEquals(
|
||||
"<p>paragraph</p>{$eol}<ul><li>1</li>{$eol}</ul>",
|
||||
$value->getContent(),
|
||||
|
Loading…
x
Reference in New Issue
Block a user