/** * Gets a list of email templates suitable for populating the email template dropdown. * * @return array */ public function getEmailTemplateDropdownValues() { $templates = array(); $finder = new SS_FileFinder(); $finder->setOption('name_regex', '/^.*\\.ss$/'); $found = $finder->find(BASE_PATH . '/' . UserDefinedForm::config()->email_template_directory); foreach ($found as $key => $value) { $template = pathinfo($value); $templates[$template['filename']] = $template['filename']; } return $templates; }
/** * Updates a formfield with the additional metadata specified by this field * * @param FormField $field */ protected function updateFormField($field) { // set the error / formatting messages $field->setCustomValidationMessage($this->getErrorMessage()); // set the right title on this field if ($this->RightTitle) { // Since this field expects raw html, safely escape the user data prior $field->setRightTitle(Convert::raw2xml($this->RightTitle)); } // if this field is required add some if ($this->Required) { // Required validation can conflict so add the Required validation messages as input attributes $errorMessage = $this->getErrorMessage()->HTML(); $field->addExtraClass('requiredField'); $field->setAttribute('data-rule-required', 'true'); $field->setAttribute('data-msg-required', $errorMessage); if ($identifier = UserDefinedForm::config()->required_identifier) { $title = $field->Title() . " <span class='required-identifier'>" . $identifier . "</span>"; $field->setTitle($title); } } // if this field has an extra class if ($this->ExtraClass) { $field->addExtraClass($this->ExtraClass); } }
/** * Get the form fields for the form on this page. Can modify this FieldSet * by using {@link updateFormFields()} on an {@link Extension} subclass which * is applied to this controller. * * @return FieldList */ public function getFormFields() { $fields = new FieldList(); if ($this->Fields()) { foreach ($this->Fields() as $editableField) { // get the raw form field from the editable version $field = $editableField->getFormField(); if (!$field) { break; } // set the error / formatting messages $field->setCustomValidationMessage($editableField->getErrorMessage()); // set the right title on this field if ($right = $editableField->getSetting('RightTitle')) { $field->setRightTitle($right); } // if this field is required add some if ($editableField->Required) { $field->addExtraClass('requiredField'); if ($identifier = UserDefinedForm::config()->required_identifier) { $title = $field->Title() . " <span class='required-identifier'>" . $identifier . "</span>"; $field->setTitle($title); } } // if this field has an extra class if ($editableField->getSetting('ExtraClass')) { $field->addExtraClass(Convert::raw2att($editableField->getSetting('ExtraClass'))); } // set the values passed by the url to the field $request = $this->getRequest(); if ($var = $request->getVar($field->name)) { $field->value = Convert::raw2att($var); } $fields->push($field); } } $this->extend('updateFormFields', $fields); return $fields; }
function testGetFormFields() { // generating the fieldset of fields $form = $this->objFromFixture('UserDefinedForm', 'basic-form-page'); $controller = new UserDefinedFormControllerTest_Controller($form); $fields = $controller->getFormFields(); $this->assertEquals($fields->Count(), 1); // custom error message on a form field $requiredForm = $this->objFromFixture('UserDefinedForm', 'validation-form'); $controller = new UserDefinedFormControllerTest_Controller($requiredForm); UserDefinedForm::config()->required_identifier = "*"; $fields = $controller->getFormFields(); $this->assertEquals($fields->First()->getCustomValidationMessage()->getValue(), 'Custom Error Message'); $this->assertEquals($fields->First()->Title(), 'Required Text Field <span class=\'required-identifier\'>*</span>'); // test custom right title $field = $form->Fields()->First(); $field->setSetting('RightTitle', 'Right Title'); $field->write(); $controller = new UserDefinedFormControllerTest_Controller($form); $fields = $controller->getFormFields(); $this->assertEquals($fields->First()->RightTitle(), "Right Title"); // test empty form $emptyForm = $this->objFromFixture('UserDefinedForm', 'empty-form'); $controller = new UserDefinedFormControllerTest_Controller($emptyForm); $this->assertFalse($controller->Form()); }