From c109a532de9e2170c097ed38e8c84c75359c6960 Mon Sep 17 00:00:00 2001 From: Ioannis Igoumenos Date: Sun, 28 Apr 2024 09:52:58 +0300 Subject: [PATCH] required field fix for nameDiv and infoDiv. Take fieldOptions into consideration. --- app/src/View/Helper/FieeldHelper.php | 4 ++-- app/templates/element/form/nameDiv.php | 9 ++++++++- app/templates/element/notify/banner.php | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/View/Helper/FieeldHelper.php b/app/src/View/Helper/FieeldHelper.php index 29acdff70..e829b839e 100644 --- a/app/src/View/Helper/FieeldHelper.php +++ b/app/src/View/Helper/FieeldHelper.php @@ -291,12 +291,12 @@ public function formField(string $fieldName, $fieldArgs = $fieldOptions ?? []; $fieldArgs['label'] = $fieldOptions['label'] ?? false; $fieldArgs['readonly'] = !$this->editable - || (isset($fieldOptions['readonly']) && $fieldOptions['readonly']) + || \boolval($fieldOptions['readonly']) || ($fieldName == 'plugin' && $this->action == 'edit'); // Selects, Checkboxes, and Radio Buttons use "disabled" $fieldArgs['disabled'] = $fieldArgs['readonly']; - $fieldArgs['required'] = $this->isReqField($fieldName); + $fieldArgs['required'] = $this->isReqField($fieldName) ?? boolval($fieldOptions['required']); // Get the field type from the map of fields (e.g. 'boolean', 'string', 'timestamp') $fieldType = $fieldType ?? $this->getFieldType($fieldName); diff --git a/app/templates/element/form/nameDiv.php b/app/templates/element/form/nameDiv.php index daa8295c7..45e80d0e6 100644 --- a/app/templates/element/form/nameDiv.php +++ b/app/templates/element/form/nameDiv.php @@ -59,6 +59,10 @@ [$label, $desc] = $this->Fieeld->calculateLabelAndDescription($fn); $label = $vv_field_arguments['fieldLabel'] ?? $label; +// Override the default required behavior is the field has the required +// option set +$optionsRequired = boolval($vv_field_arguments['fieldOptions']['required']); + // Extra class required for the grouped controls elements if(isset($groupedControls)) { $classes .= 'align-top '; @@ -78,7 +82,10 @@ Fieeld->isEditable() && $this->Fieeld->isReqField($fn)) { + if($this->Fieeld->isEditable() + && + ($this->Fieeld->isReqField($fn) || $optionsRequired) + ) { print $this->element('form/requiredSpan'); } ?> diff --git a/app/templates/element/notify/banner.php b/app/templates/element/notify/banner.php index 27bfdfbaa..927e7fc0f 100644 --- a/app/templates/element/notify/banner.php +++ b/app/templates/element/notify/banner.php @@ -28,8 +28,8 @@ declare(strict_types = 1); -// Params required: -// $info +// Parameters: +// $info: String, required ?>