From fc0667599cd884d78c6478653ebf907bf71e678b Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 22 Dec 2014 12:19:33 +1030 Subject: [PATCH] Fixing and adding form field custom error messages code. --- code/model/formfields/EditableCheckbox.php | 13 +++++++++++- code/model/formfields/EditableDateField.php | 10 +++++++++- code/model/formfields/EditableDropdown.php | 12 ++++++++++- code/model/formfields/EditableEmailField.php | 14 +++++++------ code/model/formfields/EditableFileField.php | 10 +++++++++- .../model/formfields/EditableNumericField.php | 7 +++---- code/model/formfields/EditableTextField.php | 20 +++++++++++++++---- 7 files changed, 68 insertions(+), 18 deletions(-) diff --git a/code/model/formfields/EditableCheckbox.php b/code/model/formfields/EditableCheckbox.php index 0ae243a..aa3e719 100755 --- a/code/model/formfields/EditableCheckbox.php +++ b/code/model/formfields/EditableCheckbox.php @@ -21,7 +21,18 @@ class EditableCheckbox extends EditableFormField { } public function getFormField() { - return new CheckboxField( $this->Name, $this->Title, $this->getSetting('Default')); + + $field = CheckboxField::create( $this->Name, $this->Title, $this->getSetting('Default')); + + if ($this->Required) { + // Required validation can conflict so add the Required validation messages + // as input attributes + $errorMessage = $this->getErrorMessage()->HTML(); + $field->setAttribute('data-rule-required', 'true'); + $field->setAttribute('data-msg-required', $errorMessage); + } + + return $field; } public function getValueFromData($data) { diff --git a/code/model/formfields/EditableDateField.php b/code/model/formfields/EditableDateField.php index f381392..5f8d347 100755 --- a/code/model/formfields/EditableDateField.php +++ b/code/model/formfields/EditableDateField.php @@ -38,9 +38,17 @@ class EditableDateField extends EditableFormField { */ public function getFormField() { $defaultValue = ($this->getSetting('DefaultToToday')) ? date('Y-m-d') : $this->Default; - $field = new EditableDateField_FormField( $this->Name, $this->Title, $defaultValue); + $field = EditableDateField_FormField::create( $this->Name, $this->Title, $defaultValue); $field->setConfig('showcalendar', true); + if ($this->Required) { + // Required validation can conflict so add the Required validation messages + // as input attributes + $errorMessage = $this->getErrorMessage()->HTML(); + $field->setAttribute('data-rule-required', 'true'); + $field->setAttribute('data-msg-required', $errorMessage); + } + return $field; } } diff --git a/code/model/formfields/EditableDropdown.php b/code/model/formfields/EditableDropdown.php index 1a3163c..0880631 100755 --- a/code/model/formfields/EditableDropdown.php +++ b/code/model/formfields/EditableDropdown.php @@ -26,6 +26,16 @@ class EditableDropdown extends EditableMultipleOptionField { } } - return new DropdownField($this->Name, $this->Title, $options); + $field = DropdownField::create($this->Name, $this->Title, $options); + + if ($this->Required) { + // Required validation can conflict so add the Required validation messages + // as input attributes + $errorMessage = $this->getErrorMessage()->HTML(); + $field->setAttribute('data-rule-required', 'true'); + $field->setAttribute('data-msg-required', $errorMessage); + } + + return $field; } } \ No newline at end of file diff --git a/code/model/formfields/EditableEmailField.php b/code/model/formfields/EditableEmailField.php index 49bc683..bd39815 100755 --- a/code/model/formfields/EditableEmailField.php +++ b/code/model/formfields/EditableEmailField.php @@ -18,16 +18,18 @@ class EditableEmailField extends EditableFormField { } public function getFormField() { + + $field = EmailField::create($this->Name, $this->Title); + if ($this->Required) { - // Required and Email validation can conflict so add the Required validation messages + // 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; + $field->setAttribute('data-rule-required', 'true'); + $field->setAttribute('data-msg-required', $errorMessage); } - return new EmailField($this->Name, $this->Title); + + return $field; } /** diff --git a/code/model/formfields/EditableFileField.php b/code/model/formfields/EditableFileField.php index b1710ac..4d7ee9a 100755 --- a/code/model/formfields/EditableFileField.php +++ b/code/model/formfields/EditableFileField.php @@ -30,7 +30,7 @@ class EditableFileField extends EditableFormField { } public function getFormField() { - $field = new FileField($this->Name, $this->Title); + $field = FileField::create($this->Name, $this->Title); if($this->getSetting('Folder')) { $folder = Folder::get()->byId($this->getSetting('Folder')); @@ -42,6 +42,14 @@ class EditableFileField extends EditableFormField { } } + if ($this->Required) { + // Required validation can conflict so add the Required validation messages + // as input attributes + $errorMessage = $this->getErrorMessage()->HTML(); + $field->setAttribute('data-rule-required', 'true'); + $field->setAttribute('data-msg-required', $errorMessage); + } + return $field; } diff --git a/code/model/formfields/EditableNumericField.php b/code/model/formfields/EditableNumericField.php index 0592a6d..a53f480 100755 --- a/code/model/formfields/EditableNumericField.php +++ b/code/model/formfields/EditableNumericField.php @@ -24,13 +24,12 @@ class EditableNumericField extends EditableFormField { $field = new NumericField($this->Name, $this->Title); $field->addExtraClass('number'); - if ($field->Required) { + if ($this->Required) { // Required and numeric validation can conflict so add the // required validation messages as input attributes $errorMessage = $this->getErrorMessage()->HTML(); - - $field->setAttribute('data-rule-required','true'); - $field->setAttribute('data-msg-required',$errorMessage); + $field->setAttribute('data-rule-required', 'true'); + $field->setAttribute('data-msg-required', $errorMessage); } return $field; diff --git a/code/model/formfields/EditableTextField.php b/code/model/formfields/EditableTextField.php index 6b661ae..30d0172 100755 --- a/code/model/formfields/EditableTextField.php +++ b/code/model/formfields/EditableTextField.php @@ -39,14 +39,26 @@ class EditableTextField extends EditableFormField { * @return TextareaField|TextField */ public function getFormField() { + + $field = NULL; + if($this->getSetting('Rows') && $this->getSetting('Rows') > 1) { - $taf = new TextareaField($this->Name, $this->Title); - $taf->setRows($this->getSetting('Rows')); - return $taf; + $field = TextareaField::create($this->Name, $this->Title); + $field->setRows($this->getSetting('Rows')); } else { - return new TextField($this->Name, $this->Title, null, $this->getSetting('MaxLength')); + $field = TextField::create($this->Name, $this->Title, null, $this->getSetting('MaxLength')); } + + if ($this->Required) { + // Required validation can conflict so add the Required validation messages + // as input attributes + $errorMessage = $this->getErrorMessage()->HTML(); + $field->setAttribute('data-rule-required', 'true'); + $field->setAttribute('data-msg-required', $errorMessage); + } + + return $field; } /**