From b39e7efce7e1f1d92a85217c1c453cb812dd4b55 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Wed, 16 Nov 2016 16:02:28 +0100 Subject: [PATCH] ObjectForm: allow to preset imports --- .../Web/Controller/ObjectController.php | 3 +++ .../Director/Web/Form/DirectorObjectForm.php | 22 ++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/library/Director/Web/Controller/ObjectController.php b/library/Director/Web/Controller/ObjectController.php index b43be537..779ec34f 100644 --- a/library/Director/Web/Controller/ObjectController.php +++ b/library/Director/Web/Controller/ObjectController.php @@ -9,6 +9,7 @@ use Icinga\Exception\NotFoundError; use Icinga\Module\Director\Exception\NestingError; use Icinga\Module\Director\IcingaConfig\IcingaConfig; use Icinga\Module\Director\Objects\IcingaObject; +use Icinga\Module\Director\Web\Form\DirectorObjectForm; use Icinga\Web\Url; abstract class ObjectController extends ActionController @@ -186,8 +187,10 @@ abstract class ObjectController extends ActionController $ltype = strtolower($type); $url = sprintf('director/%ss', $ltype); + /** @var DirectorObjectForm $form */ $form = $this->view->form = $this->loadForm('icinga' . ucfirst($type)) ->setDb($this->db()) + ->presetImports($this->params->shift('imports')) ->setApi($this->getApiIfAvailable()) ->setSuccessUrl($url); diff --git a/library/Director/Web/Form/DirectorObjectForm.php b/library/Director/Web/Form/DirectorObjectForm.php index b50dbe23..868d5679 100644 --- a/library/Director/Web/Form/DirectorObjectForm.php +++ b/library/Director/Web/Form/DirectorObjectForm.php @@ -45,12 +45,27 @@ abstract class DirectorObjectForm extends QuickForm /** @var CoreApi */ private $api; + private $presetImports; + public function setPreferredObjectType($type) { $this->preferredObjectType = $type; return $this; } + public function presetImports($imports) + { + if (! empty($imports)) { + if (is_array($imports)) { + $this->presetImports = $imports; + } else { + $this->presetImports = array($imports); + } + } + + return $this; + } + /** * @param array $values * @@ -248,7 +263,7 @@ abstract class DirectorObjectForm extends QuickForm unset($props['vars']); } - $this->setDefaults($this->removeNullProperties($props)); + $this->setDefaults($this->removeEmptyProperties($props)); if ($resolve) { $this->showInheritedProperties($object); @@ -270,11 +285,11 @@ abstract class DirectorObjectForm extends QuickForm } } - protected function removeNullProperties($props) + protected function removeEmptyProperties($props) { $result = array(); foreach ($props as $k => $v) { - if ($v !== null && $v !== '') { + if ($v !== null && $v !== '' && $v !== array()) { $result[$k] = $v; } } @@ -913,6 +928,7 @@ abstract class DirectorObjectForm extends QuickForm 'required' => ($required !== null ? $required : !$this->isTemplate()), 'multiOptions' => $this->optionallyAddFromEnum($enum), 'sorted' => true, + 'value' => $this->presetImports, 'class' => 'autosubmit' ));