From 6f46e6b496f3d2ce70b765d53e8ff003ea4de450 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Fri, 14 Oct 2016 13:39:43 +0000 Subject: [PATCH] YesNo: new boolean-like form fields fixes #12927 --- application/forms/SyncPropertyForm.php | 4 +-- .../Director/Web/Form/DirectorObjectForm.php | 35 +++---------------- .../Web/Form/Element/OptionalYesNo.php | 22 ++++++++++++ library/Director/Web/Form/Element/YesNo.php | 14 ++++++++ 4 files changed, 41 insertions(+), 34 deletions(-) create mode 100644 library/Director/Web/Form/Element/OptionalYesNo.php create mode 100644 library/Director/Web/Form/Element/YesNo.php diff --git a/application/forms/SyncPropertyForm.php b/application/forms/SyncPropertyForm.php index 7e92f695..55320df0 100644 --- a/application/forms/SyncPropertyForm.php +++ b/application/forms/SyncPropertyForm.php @@ -124,14 +124,12 @@ class SyncPropertyForm extends DirectorObjectForm } */ - // TODO: we need modifier - $this->addElement('select', 'use_filter', array( + $this->addElement('YesNo', 'use_filter', array( 'label' => $this->translate('Set based on filter'), 'ignore' => true, 'class' => 'autosubmit', 'required' => true, - 'multiOptions' => $this->enumBoolean() )); if ($this->hasBeenSent()) { diff --git a/library/Director/Web/Form/DirectorObjectForm.php b/library/Director/Web/Form/DirectorObjectForm.php index 402ad854..69b505bc 100644 --- a/library/Director/Web/Form/DirectorObjectForm.php +++ b/library/Director/Web/Form/DirectorObjectForm.php @@ -229,12 +229,6 @@ abstract class DirectorObjectForm extends QuickForm unset($props['vars']); } - foreach ($props as $k => $v) { - if (is_bool($v)) { - $props[$k] = $v ? 'y' : 'n'; - } - } - $this->setDefaults($props); if (! $object instanceof IcingaObject) { @@ -424,25 +418,12 @@ abstract class DirectorObjectForm extends QuickForm protected function addBoolean($key, $options, $default = null) { - $map = array( - false => 'n', - true => 'y', - 'n' => 'n', - 'y' => 'y', - ); - if ($default !== null) { - $options['multiOptions'] = $this->enumBoolean(); + if ($default === null) { + return $this->addElement('OptionalYesNo', $key, $options); } else { - $options['multiOptions'] = $this->optionalEnum($this->enumBoolean()); + $this->addElement('YesNo', $key, $options); + return $this->getElement($key)->setValue($default); } - - $res = $this->addElement('select', $key, $options); - - if ($default !== null) { - $this->getElement($key)->setValue($map[$default]); - } - - return $res; } protected function optionalBoolean($key, $label, $description) @@ -453,14 +434,6 @@ abstract class DirectorObjectForm extends QuickForm )); } - protected function enumBoolean() - { - return array( - 'y' => $this->translate('Yes'), - 'n' => $this->translate('No'), - ); - } - public function hasElement($name) { return $this->getElement($name) !== null; diff --git a/library/Director/Web/Form/Element/OptionalYesNo.php b/library/Director/Web/Form/Element/OptionalYesNo.php new file mode 100644 index 00000000..7ef6d7f7 --- /dev/null +++ b/library/Director/Web/Form/Element/OptionalYesNo.php @@ -0,0 +1,22 @@ +getUnfilteredValue(); + + if ($value === 'y' || $value === true) { + return 'y'; + } elseif ($value === 'n' || $value === false) { + return 'n'; + } + + return null; + } +} diff --git a/library/Director/Web/Form/Element/YesNo.php b/library/Director/Web/Form/Element/YesNo.php new file mode 100644 index 00000000..3e8aaa7f --- /dev/null +++ b/library/Director/Web/Form/Element/YesNo.php @@ -0,0 +1,14 @@ + 'Yes', + 'n' => 'No', + ); +}