From da5ccaaa851f945ea5e969d9bd4a756b98d7b258 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Tue, 5 Nov 2019 12:16:45 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B01986=20Portal:=20Forms=20with=20only=20t?= =?UTF-8?q?ransition=20buttons=20are=20now=20read-only?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../portal/src/Form/ObjectFormManager.php | 32 ++++++++++++++++++- .../src/Helper/ObjectFormHandlerHelper.php | 3 +- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php b/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php index 4c565b5cf..66d4754da 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php @@ -82,7 +82,9 @@ class ObjectFormManager extends FormManager protected $aFormProperties; /** @var array $aCallbackUrls */ protected $aCallbackUrls = array(); - + /** @var boolean $bIsSubmittable */ + protected $bIsSubmittable = true; + /** * Creates an instance of \Combodo\iTop\Portal\Form\ObjectFormManager from JSON data that must contain at least : * - formobject_class : The class of the object that is being edited/viewed @@ -227,7 +229,29 @@ class ObjectFormManager extends FormManager return $this; } + + /** + * + * @return string + */ + public function GetIsSubmittable() + { + return $this->bIsSubmittable; + } + /** + * + * @param boolean $bIsSubmittable + * + * @return \Combodo\iTop\Portal\Form\ObjectFormManager + */ + public function SetIsSubmittable($bIsSubmittable) + { + $this->bIsSubmittable = $bIsSubmittable; + + return $this; + } + /** * * @return string @@ -461,6 +485,12 @@ class ObjectFormManager extends FormManager } continue; } + + // If a form can't be submitted to update an object, we have no reason to allow fields to be editable + if (!$this->GetIsSubmittable()) + { + $sFieldFlags .= ' read_only'; + } // Otherwise we proceed as usual foreach (explode(' ', $sFieldFlags) as $sFieldFlag) diff --git a/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php b/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php index a604ffa53..300c95364 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php @@ -246,7 +246,8 @@ class ObjectFormHandlerHelper ->SetMode($sMode) ->SetActionRulesToken($sActionRulesToken) ->SetRenderer($oFormRenderer) - ->SetFormProperties($aFormProperties); + ->SetFormProperties($aFormProperties) + ->SetIsSubmittable(isset($aFormData['buttons']['submit'])); $oFormManager->Build();