diff --git a/_config/config.yml b/_config/config.yml new file mode 100644 index 0000000..604a306 --- /dev/null +++ b/_config/config.yml @@ -0,0 +1,5 @@ +--- +Name: userformsconfig +--- +SilverStripe\UserForms\Control\UserDefinedFormController: + disable_form_content_shortcode: false diff --git a/code/Control/UserDefinedFormController.php b/code/Control/UserDefinedFormController.php index b37bf93..d4001ed 100644 --- a/code/Control/UserDefinedFormController.php +++ b/code/Control/UserDefinedFormController.php @@ -108,7 +108,8 @@ class UserDefinedFormController extends PageController */ public function index(HTTPRequest $request = null) { - if ($this->Content && $form = $this->Form()) { + $form = $this->Form(); + if ($this->Content && $form && !$this->config()->disable_form_content_shortcode) { $hasLocation = stristr($this->Content, '$UserDefinedForm'); if ($hasLocation) { /** @see Requirements_Backend::escapeReplacement */ diff --git a/tests/Control/UserDefinedFormControllerTest.php b/tests/Control/UserDefinedFormControllerTest.php index 5c2c34f..2a3fe00 100644 --- a/tests/Control/UserDefinedFormControllerTest.php +++ b/tests/Control/UserDefinedFormControllerTest.php @@ -257,7 +257,7 @@ class UserDefinedFormControllerTest extends FunctionalTest $controller = new UserDefinedFormController($form); - // check to see if $Form is replaced to inside the content + // check to see if $Form is placed in the template $index = new ArrayData($controller->index()); $parser = new CSSContentParser($index->renderWith(__CLASS__)); @@ -276,6 +276,26 @@ class UserDefinedFormControllerTest extends FunctionalTest $this->checkTemplateIsCorrect($parser, $form); } + + public function testRenderingIntoTemplateWithDisabledInterpolation() + { + $form = $this->setupFormFrontend(); + + $controller = new UserDefinedFormController($form); + $controller->config()->set('disable_form_content_shortcode', true); + // check to see if $Form is replaced to inside the content + $index = new ArrayData($controller->index()); + $html = $index->renderWith(__CLASS__); + $parser = new CSSContentParser($html); + + // Assert Content has been rendered with the shortcode in place + $this->assertContains('

Here is my form

$UserDefinedForm

Thank you for filling it out

', $html); + // And the form in the $From area + $this->assertArrayHasKey(0, $parser->getBySelector('form#UserForm_Form_' . $form->ID)); + // check for the input + $this->assertArrayHasKey(0, $parser->getBySelector('input.text')); + } + /** * Publish a form for use on the frontend *