From 9d4bd323a8e1075eb7f6651534f35d2f26ec81f6 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Thu, 30 Jul 2015 12:46:08 +0200 Subject: [PATCH] DirectorObjectForm: methods dealing with fields --- .../Director/Web/Form/DirectorObjectForm.php | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/library/Director/Web/Form/DirectorObjectForm.php b/library/Director/Web/Form/DirectorObjectForm.php index e3562350..cb0a51f0 100644 --- a/library/Director/Web/Form/DirectorObjectForm.php +++ b/library/Director/Web/Form/DirectorObjectForm.php @@ -3,6 +3,7 @@ namespace Icinga\Module\Director\Web\Form; use Icinga\Module\Director\Objects\IcingaObject; +use Icinga\Module\Director\Objects\DirectorDatafield; use Zend_Form_Element_Select as Zf_Select; abstract class DirectorObjectForm extends QuickForm @@ -150,6 +151,44 @@ abstract class DirectorObjectForm extends QuickForm return $this; } + public function addFields() + { + $object = $this->object(); + $fields = $object->getResolvedFields(); + $vars = $object->vars(); + + foreach ($fields as $field) { + $varname = $field->varname; + if (isset($vars->$varname)) { + $value = $vars->{$varname}->getValue(); + } else { + $value = null; + } +$inherited = null; // Just testing + $this->addField($field, $value, $inherited); + } + } + + protected function addField($field, $value = null, $inherited = null) + { + $datafield = DirectorDatafield::load($field->datafield_id, $this->getDb()); + $datatype = new $datafield->datatype; + $datatype->setSettings($datafield->getSettings()); + + $name = 'var_' . $datafield->varname; + $el = $datatype->getFormElement($name, $this); + + $el->setLabel($datafield->caption); + $el->setDescription($datafield->description); + + if ($field->is_required === 'y') { + $el->setRequired(true); + } + + $this->addElement($el); + $this->setElementValue($name, $value, $inherited); + } + protected function setElementValue($name, $value = null, $inherited = null) { $el = $this->getElement($name);