/**
  * 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);
     }
 }
Esempio n. 3
0
 /**
  * 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());
 }