diff --git a/code/model/UserDefinedForm.php b/code/model/UserDefinedForm.php index 553de10..f245166 100755 --- a/code/model/UserDefinedForm.php +++ b/code/model/UserDefinedForm.php @@ -600,8 +600,10 @@ class UserDefinedForm_Controller extends Page_Controller { if($this->Fields()) { foreach($this->Fields() as $field) { - $messages[$field->Name] = $field->getErrorMessage()->HTML(); - + if (!in_array($field->ClassName, array('EditableEmailField', 'EditableNumericField'))) { + $messages[$field->Name] = $field->getErrorMessage()->HTML(); + } + if($field->Required) { $rules[$field->Name] = array_merge(array('required' => true), $field->getValidation()); $required->addRequiredField($field->Name); diff --git a/code/model/formfields/EditableEmailField.php b/code/model/formfields/EditableEmailField.php index 2f1ffe3..7976f6b 100755 --- a/code/model/formfields/EditableEmailField.php +++ b/code/model/formfields/EditableEmailField.php @@ -14,6 +14,15 @@ class EditableEmailField extends EditableFormField { private static $plural_name = 'Email Fields'; public function getFormField() { + if ($this->Required) { + // Required and Email validation can conflict so add the Required validation messages + // as input attributes + $errorMessage = $this->getErrorMessage()->HTML(); + $field = new EmailField($this->Name, $this->Title); + $field->setAttribute('data-rule-required','true'); + $field->setAttribute('data-msg-required',$errorMessage); + return $field; + } return new EmailField($this->Name, $this->Title); } diff --git a/code/model/formfields/EditableFormField.php b/code/model/formfields/EditableFormField.php index 1b15c06..efa99ba 100755 --- a/code/model/formfields/EditableFormField.php +++ b/code/model/formfields/EditableFormField.php @@ -499,7 +499,8 @@ class EditableFormField extends DataObject { $title = strip_tags("'". ($this->Title ? $this->Title : $this->Name) . "'"); $standard = sprintf(_t('Form.FIELDISREQUIRED', '%s is required').'.', $title); - $errorMessage = ($this->CustomErrorMessage) ? $this->CustomErrorMessage : $standard; + // only use CustomErrorMessage if it has a non empty value + $errorMessage = (!empty($this->CustomErrorMessage)) ? $this->CustomErrorMessage : $standard; return DBField::create_field('Varchar', $errorMessage); } diff --git a/code/model/formfields/EditableNumericField.php b/code/model/formfields/EditableNumericField.php index 1a33fde..85ff6e0 100755 --- a/code/model/formfields/EditableNumericField.php +++ b/code/model/formfields/EditableNumericField.php @@ -22,12 +22,18 @@ class EditableNumericField extends EditableTextField { $taf = new NumericField($this->Name, $this->Title); $taf->setRows($this->getSetting('Rows')); $taf->addExtraClass('number'); - return $taf; } else { $taf = new NumericField($this->Name, $this->Title, null, $this->getSetting('MaxLength')); $taf->addExtraClass('number'); - return $taf; } + if ($this->Required) { + // Required and numeric validation can conflict so add the Required validation messages + // as input attributes + $errorMessage = $this->getErrorMessage()->HTML(); + $taf->setAttribute('data-rule-required','true'); + $taf->setAttribute('data-msg-required',$errorMessage); + } + return $taf; } }