Skip to content

Commit 8e35b9e

Browse files
colemanwCiviCRM
authored and
CiviCRM
committed
Fixes #4 - html encode injected properties and enable test
1 parent 65c9e7a commit 8e35b9e

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

ext/afform/core/afform.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ function afform_civicrm_alterAngular($angular) {
329329
continue;
330330
}
331331
foreach ($field as &$prop) {
332-
$prop = json_encode($prop, JSON_UNESCAPED_SLASHES);
332+
$prop = htmlspecialchars(CRM_Utils_JS::encode($prop));
333333
}
334334
if ($existingFieldDefn) {
335335
$field = array_merge($field, CRM_Utils_JS::getRawProps($existingFieldDefn));

ext/afform/core/tests/phpunit/Civi/Afform/FilterTest.php

+12-11
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,17 @@ public function testDefnInjectionNested() {
4444
$this->assertEquals('First Name', $myField['defn']['title']);
4545
}
4646

47-
//public function testDefnOverrideTitle() {
48-
// $inputHtml = sprintf(self::PERSON_TPL,
49-
// '<div af-fieldset="person"><af-field name="first_name" defn="{title: \'Given name\'}" /></div>');
50-
// $filteredHtml = _afform_html_filter('~afform/MyForm.html', $inputHtml);
51-
// $converter = new \CRM_Afform_ArrayHtml(TRUE);
52-
// $parsed = $converter->convertHtmlToArray($filteredHtml);
53-
//
54-
// $myField = $parsed[0]['#children'][1]['#children'][0];
55-
// $this->assertEquals('af-field', $myField['#tag']);
56-
// $this->assertEquals('Given name', $myField['defn']['title']);
57-
//}
47+
public function testDefnOverrideTitle() {
48+
$inputHtml = sprintf(self::PERSON_TPL,
49+
'<div af-fieldset="person"><af-field name="first_name" defn="{title: \'Given name\'}" /></div>');
50+
$filteredHtml = _afform_html_filter('~afform/MyForm.html', $inputHtml);
51+
$converter = new \CRM_Afform_ArrayHtml(TRUE);
52+
$parsed = $converter->convertHtmlToArray($filteredHtml);
53+
54+
$myField = $parsed[0]['#children'][1]['#children'][0];
55+
$this->assertEquals('af-field', $myField['#tag']);
56+
$this->assertEquals('Given name', $myField['defn']['title']);
57+
$this->assertEquals('Text', $myField['defn']['input_type']);
58+
}
5859

5960
}

0 commit comments

Comments
 (0)