From 85c1f52c456df703cc9f5b356093423c46d08faf Mon Sep 17 00:00:00 2001 From: Kirk Mayo Date: Wed, 12 Feb 2014 12:14:42 +1300 Subject: [PATCH] BUG: Fixes #189 default error message being shown --- code/model/UserDefinedForm.php | 2 -- code/model/formfields/EditableEmailField.php | 9 +++++++++ code/model/formfields/EditableFormField.php | 3 ++- code/model/formfields/EditableNumericField.php | 10 ++++++++-- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/code/model/UserDefinedForm.php b/code/model/UserDefinedForm.php index 553de10..3d001ef 100755 --- a/code/model/UserDefinedForm.php +++ b/code/model/UserDefinedForm.php @@ -600,8 +600,6 @@ class UserDefinedForm_Controller extends Page_Controller { if($this->Fields()) { foreach($this->Fields() as $field) { - $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; } }