From 644c6beeffd934288086f1724bdfd93ea09ba753 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Fri, 3 Jul 2015 13:17:05 +0200 Subject: [PATCH] DirectorDatafield: introduce new object class... ...and adjust table, form and controller --- application/controllers/DataController.php | 24 --------------- .../controllers/DatafieldController.php | 26 ++++++++++++++++ application/controllers/ListController.php | 3 +- application/forms/DirectorDatafieldForm.php | 30 ++----------------- application/tables/DatafieldTable.php | 2 +- application/views/scripts/data/addfield.phtml | 8 ----- .../Director/Objects/DirectorDatafield.php | 23 ++++++++++++++ .../Director/Web/Form/DirectorObjectForm.php | 26 +++++++++++++--- 8 files changed, 75 insertions(+), 67 deletions(-) delete mode 100644 application/controllers/DataController.php create mode 100644 application/controllers/DatafieldController.php delete mode 100644 application/views/scripts/data/addfield.phtml create mode 100644 library/Director/Objects/DirectorDatafield.php diff --git a/application/controllers/DataController.php b/application/controllers/DataController.php deleted file mode 100644 index 8d932148..00000000 --- a/application/controllers/DataController.php +++ /dev/null @@ -1,24 +0,0 @@ -translate('Add field'); - $this->getTabs()->add('addfield', array( - 'url' => 'director/data/addfield', - 'label' => $title, - ))->activate('addfield'); - - $form = new DirectorDatafieldForm(); - $form->setDb($this->db()); - - $form->handleRequest(); - - $this->view->title = $title; - $this->view->form = $form; - } -} diff --git a/application/controllers/DatafieldController.php b/application/controllers/DatafieldController.php new file mode 100644 index 00000000..fa95fd74 --- /dev/null +++ b/application/controllers/DatafieldController.php @@ -0,0 +1,26 @@ +view->title = $this->translate('Add field'); + $this->getTabs()->add('addfield', array( + 'url' => 'director/data/addfield', + 'label' => $this->view->title, + ))->activate('addfield'); + + $form = $this->view->form = $this->loadForm('directorDatafield') + ->setSuccessUrl('director/list/datafield') + ->setDb($this->db()); + + if ($id = $this->params->get('id')) { + $form->loadObject($id); + } + $form->handleRequest(); + + $this->render('object/form', null, true); + } +} diff --git a/application/controllers/ListController.php b/application/controllers/ListController.php index eca14145..b98bee9e 100644 --- a/application/controllers/ListController.php +++ b/application/controllers/ListController.php @@ -24,10 +24,9 @@ class Director_ListController extends ActionController { $this->view->addLink = $this->view->qlink( $this->translate('Add field'), - 'director/data/addfield' + 'director/datafield' ); - $this->setConfigTabs()->activate('generatedconfig'); $this->setConfigTabs()->activate('datafield'); $this->view->title = $this->translate('Data fields'); $this->view->table = $this->loadTable('datafield')->setConnection($this->db()); diff --git a/application/forms/DirectorDatafieldForm.php b/application/forms/DirectorDatafieldForm.php index f9b8039a..eb709cca 100644 --- a/application/forms/DirectorDatafieldForm.php +++ b/application/forms/DirectorDatafieldForm.php @@ -2,13 +2,10 @@ namespace Icinga\Module\Director\Forms; -use Icinga\Module\Director\Web\Form\QuickForm; +use Icinga\Module\Director\Web\Form\DirectorObjectForm; -class DirectorDatafieldForm extends QuickForm +class DirectorDatafieldForm extends DirectorObjectForm { - protected $db; - protected $successUrl = 'director/list/datafield'; - public function setup() { $this->addElement('text', 'varname', array( @@ -37,27 +34,4 @@ class DirectorDatafieldForm extends QuickForm 'description' => $this->translate('Field format (string, json, expression)') )); } - - public function onSuccess() - { - $values = $this->getValues(); - - $this->db->insert( - 'director_datafield', - array( - 'varname' => $values['varname'], - 'caption' => $values['caption'], - 'description' => $values['description'], - 'datatype' => $values['datatype'], - 'format' => $values['format'], - ) - ); - - parent::onSuccess('Ding dong'); - } - - public function setDb($db) - { - $this->db = $db; - } } diff --git a/application/tables/DatafieldTable.php b/application/tables/DatafieldTable.php index f575624b..99c668d1 100644 --- a/application/tables/DatafieldTable.php +++ b/application/tables/DatafieldTable.php @@ -17,7 +17,7 @@ class DatafieldTable extends QuickTable protected function getActionUrl($row) { - return $this->url('director/show/datafield', array('id' => $row->id)); + return $this->url('director/datafield', array('id' => $row->id)); } public function getTitles() diff --git a/application/views/scripts/data/addfield.phtml b/application/views/scripts/data/addfield.phtml deleted file mode 100644 index 24c36044..00000000 --- a/application/views/scripts/data/addfield.phtml +++ /dev/null @@ -1,8 +0,0 @@ -
- tabs ?> -

escape($this->title) ?>

-
- -
- -
\ No newline at end of file diff --git a/library/Director/Objects/DirectorDatafield.php b/library/Director/Objects/DirectorDatafield.php new file mode 100644 index 00000000..9cc653ef --- /dev/null +++ b/library/Director/Objects/DirectorDatafield.php @@ -0,0 +1,23 @@ + null, + 'varname' => null, + 'caption' => null, + 'description' => null, + 'datatype' => null, + 'format' => null, + ); +} diff --git a/library/Director/Web/Form/DirectorObjectForm.php b/library/Director/Web/Form/DirectorObjectForm.php index d841fa8a..702be967 100644 --- a/library/Director/Web/Form/DirectorObjectForm.php +++ b/library/Director/Web/Form/DirectorObjectForm.php @@ -2,6 +2,8 @@ namespace Icinga\Module\Director\Web\Form; +use Icinga\Module\Director\Objects\IcingaObject; + abstract class DirectorObjectForm extends QuickForm { protected $db; @@ -26,7 +28,13 @@ abstract class DirectorObjectForm extends QuickForm protected function onSetup() { - if ($this->object()->supportsCustomVars()) { + $object = $this->object(); + + if (! $object instanceof IcingaObject) { + return; + } + + if ($object->supportsCustomVars()) { $this->addElement('note', '_newvar_hint', array('label' => 'New custom variable')); $this->addElement('text', '_newvar_name', array( 'label' => 'Name' @@ -40,7 +48,7 @@ abstract class DirectorObjectForm extends QuickForm )); } - if (false && $this->object()->supportsRanges()) { + if (false && $object->supportsRanges()) { /* TODO implement when new logic is there $this->addElement('note', '_newrange_hint', array('label' => 'New range')); $this->addElement('text', '_newrange_name', array( @@ -53,9 +61,8 @@ abstract class DirectorObjectForm extends QuickForm } } - public function onSuccess() + protected function handleIcingaObject(& $values) { - $values = $this->getValues(); $object = $this->object(); $handled = array(); @@ -117,7 +124,15 @@ abstract class DirectorObjectForm extends QuickForm foreach ($handled as $key => $value) { unset($values[$key]); } + } + public function onSuccess() + { + $object = $this->object; + $values = $this->getValues(); + if ($object instanceof IcingaObject) { + $this->handleIcingaObject($values); + } $object->setProperties($values); $msg = sprintf( $object->hasBeenLoadedFromDb() @@ -192,6 +207,9 @@ abstract class DirectorObjectForm extends QuickForm $this->addHidden('id'); } $this->setDefaults($this->object->getProperties()); + if (! $this->object instanceof IcingaObject) { + return $this; + } if ($submit = $this->getElement('submit')) { $this->removeElement('submit');