mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
ISSUE 7833: Invoke ShortcodeParser on RestfulServer output
This commit is contained in:
parent
a6f5b99a5c
commit
71758c782f
@ -56,7 +56,7 @@ class JSONDataFormatter extends DataFormatter {
|
|||||||
// Field filtering
|
// Field filtering
|
||||||
if($fields && !in_array($fieldName, $fields)) continue;
|
if($fields && !in_array($fieldName, $fields)) continue;
|
||||||
|
|
||||||
$fieldValue = $obj->$fieldName;
|
$fieldValue = $obj->obj($fieldName)->forTemplate();
|
||||||
$serobj->$fieldName = $fieldValue;
|
$serobj->$fieldName = $fieldValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,8 +49,7 @@ class XMLDataFormatter extends DataFormatter {
|
|||||||
foreach($this->getFieldsForObj($obj) as $fieldName => $fieldType) {
|
foreach($this->getFieldsForObj($obj) as $fieldName => $fieldType) {
|
||||||
// Field filtering
|
// Field filtering
|
||||||
if($fields && !in_array($fieldName, $fields)) continue;
|
if($fields && !in_array($fieldName, $fields)) continue;
|
||||||
|
$fieldValue = $obj->obj($fieldName)->forTemplate();
|
||||||
$fieldValue = $obj->$fieldName;
|
|
||||||
if(!mb_check_encoding($fieldValue,'utf-8')) $fieldValue = "(data is badly encoded)";
|
if(!mb_check_encoding($fieldValue,'utf-8')) $fieldValue = "(data is badly encoded)";
|
||||||
|
|
||||||
if(is_object($fieldValue) && is_subclass_of($fieldValue, 'Object') && $fieldValue->hasMethod('toXML')) {
|
if(is_object($fieldValue) && is_subclass_of($fieldValue, 'Object') && $fieldValue->hasMethod('toXML')) {
|
||||||
|
@ -28,6 +28,35 @@ class XMLDataFormatterTest extends SapphireTest {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testShortcodesInDataObject() {
|
||||||
|
$formatter = new XMLDataFormatter();
|
||||||
|
|
||||||
|
$page1 = new Page();
|
||||||
|
$page1->Title = 'Test page1';
|
||||||
|
$page1->Content = '[sitetree_link,id=-1]';
|
||||||
|
$page1->write();
|
||||||
|
|
||||||
|
$page2 = new Page();
|
||||||
|
$page2->Title = 'Test page 2';
|
||||||
|
$page2->Content = 'This is some test content [sitetree_link,id='.$page1->ID.']';
|
||||||
|
$page2->write();
|
||||||
|
|
||||||
|
$page1->Content = '[bad_code,id=1]';
|
||||||
|
$page1->write();
|
||||||
|
|
||||||
|
$xml = new SimpleXMLElement('<?xml version="1.0"?>' . $formatter->convertDataObjectWithoutHeader($page2));
|
||||||
|
$this->assertContains('This is some test content '.$page1->Link(), $xml->Content);
|
||||||
|
|
||||||
|
$xml = new SimpleXMLElement('<?xml version="1.0"?>' . $formatter->convertDataObjectWithoutHeader($page1));
|
||||||
|
$this->assertEmpty('', $xml->Content);
|
||||||
|
|
||||||
|
$xml = new SimpleXMLElement('<?xml version="1.0"?>' . $formatter->convertDataObjectWithoutHeader($page1));
|
||||||
|
$this->assertContains('[bad_code,id=1]', $xml->Content);
|
||||||
|
|
||||||
|
$page1->delete();
|
||||||
|
$page2->delete();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
class XMLDataFormatterTest_DataObject extends DataObject implements TestOnly {
|
class XMLDataFormatterTest_DataObject extends DataObject implements TestOnly {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user