From 5bc4ed80c37ba8bfcb4a6471c90f3787fc6aa161 Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Wed, 6 Mar 2024 16:15:41 +1300 Subject: [PATCH] NEW Extensions for elemental --- code/elemental/ElementContentExtension.php | 47 ++++++++++++++++++++++ code/elemental/NumericFieldExtension.php | 19 +++++++++ 2 files changed, 66 insertions(+) create mode 100644 code/elemental/ElementContentExtension.php create mode 100644 code/elemental/NumericFieldExtension.php diff --git a/code/elemental/ElementContentExtension.php b/code/elemental/ElementContentExtension.php new file mode 100644 index 0000000..d3e7273 --- /dev/null +++ b/code/elemental/ElementContentExtension.php @@ -0,0 +1,47 @@ + + */ +class ElementContentExtension extends Extension +{ + private static $db = [ + 'MyField' => 'Varchar', + 'MyInt' => 'Int', + ]; + + public function validate(ValidationResult $result) + { + if ($this->owner->Title == 'x') { + $result->addFieldError('Title', 'Title cannot be x'); + } + if ($this->owner->MyField == 'x') { + $result->addFieldError('MyField', 'MyField cannot be x'); + } + if ($this->owner->Title == 'z' && $this->owner->MyField == 'z') { + $result->addError('This is a general error message'); + } + } + + public function updateCMSCompositeValidator(CompositeValidator $compositeValidator) + { + $compositeValidator->addValidator(new RequiredFields(['Title'])); + } + + public function updateCMSFields(FieldList $fields) + { + $fields->removeByName('HTML'); + $fields->addFieldToTab('Root.Main', TextField::create('MyField', 'My Field')); + $fields->addFieldToTab('Root.Main', NumericField::create('MyInt', 'My Int')); + } +} diff --git a/code/elemental/NumericFieldExtension.php b/code/elemental/NumericFieldExtension.php new file mode 100644 index 0000000..3fba91c --- /dev/null +++ b/code/elemental/NumericFieldExtension.php @@ -0,0 +1,19 @@ + + */ +class NumericFieldExtension extends Extension +{ + public function updateValidationResult($result, $validator) + { + if ($this->owner->Value() == 1) { + $validator->validationError($this->owner->getName(), 'This field cannot be 1'); + } + } +}