DirectorObjectForm: re-arrange fields and commands
This commit is contained in:
parent
06736e1508
commit
a2d1594eaf
|
@ -56,6 +56,7 @@ class IcingaHostForm extends DirectorObjectForm
|
||||||
));
|
));
|
||||||
|
|
||||||
if ($this->isTemplate()) {
|
if ($this->isTemplate()) {
|
||||||
|
$this->addCheckCommandElements();
|
||||||
$this->addCheckExecutionElements();
|
$this->addCheckExecutionElements();
|
||||||
} else {
|
} else {
|
||||||
$this->getElement('imports')->setRequired();
|
$this->getElement('imports')->setRequired();
|
||||||
|
|
|
@ -22,6 +22,8 @@ class IcingaServiceForm extends DirectorObjectForm
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$this->addImportsElement();
|
$this->addImportsElement();
|
||||||
|
$this->addCheckCommandElements();
|
||||||
|
|
||||||
|
|
||||||
if ($this->isTemplate()) {
|
if ($this->isTemplate()) {
|
||||||
$this->addCheckExecutionElements();
|
$this->addCheckExecutionElements();
|
||||||
|
|
|
@ -113,11 +113,32 @@ abstract class DirectorObjectForm extends QuickForm
|
||||||
return $this->addElementsToGroup(
|
return $this->addElementsToGroup(
|
||||||
$elements,
|
$elements,
|
||||||
'custom_fields',
|
'custom_fields',
|
||||||
$this->translate('Custom fields')
|
50,
|
||||||
|
$this->translate('Custom properties')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function addElementsToGroup($elements, $group, $legend = null)
|
protected function addToCheckExecutionDisplayGroup($elements)
|
||||||
|
{
|
||||||
|
return $this->addElementsToGroup(
|
||||||
|
$elements,
|
||||||
|
'check_execution',
|
||||||
|
60,
|
||||||
|
$this->translate('Check execution')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function addToCommandFieldsDisplayGroup($elements)
|
||||||
|
{
|
||||||
|
return $this->addElementsToGroup(
|
||||||
|
$elements,
|
||||||
|
'command_fields',
|
||||||
|
55,
|
||||||
|
$this->translate('Command-specific custom vars')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function addElementsToGroup($elements, $group, $order, $legend = null)
|
||||||
{
|
{
|
||||||
if (! is_array($elements)) {
|
if (! is_array($elements)) {
|
||||||
$elements = array($elements);
|
$elements = array($elements);
|
||||||
|
@ -134,7 +155,7 @@ abstract class DirectorObjectForm extends QuickForm
|
||||||
'FormElements',
|
'FormElements',
|
||||||
'Fieldset',
|
'Fieldset',
|
||||||
),
|
),
|
||||||
'order' => 50,
|
'order' => $order,
|
||||||
'legend' => $legend ?: $group,
|
'legend' => $legend ?: $group,
|
||||||
));
|
));
|
||||||
$this->displayGroups[$group] = $this->getDisplayGroup($group);
|
$this->displayGroups[$group] = $this->getDisplayGroup($group);
|
||||||
|
@ -206,6 +227,13 @@ abstract class DirectorObjectForm extends QuickForm
|
||||||
$fields = $object->getResolvedFields();
|
$fields = $object->getResolvedFields();
|
||||||
$inherits = $object->getInheritedVars();
|
$inherits = $object->getInheritedVars();
|
||||||
$origins = $object->getOriginsVars();
|
$origins = $object->getOriginsVars();
|
||||||
|
if ($object->hasCheckCommand()) {
|
||||||
|
$checkCommand = $object->getCheckCommand();
|
||||||
|
$checkFields = $checkCommand->getResolvedFields();
|
||||||
|
$checkVars = $checkCommand->getResolvedVars();
|
||||||
|
} else {
|
||||||
|
$checkFields = (object) array();
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->hasBeenSent()) {
|
if ($this->hasBeenSent()) {
|
||||||
$vars = array();
|
$vars = array();
|
||||||
|
@ -224,6 +252,10 @@ abstract class DirectorObjectForm extends QuickForm
|
||||||
$value = json_decode($value);
|
$value = json_decode($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (property_exists($checkFields, $mykey) && $checkFields->$mykey->format === 'json') {
|
||||||
|
$value = json_decode($value);
|
||||||
|
}
|
||||||
|
|
||||||
$vars[$mykey] = $value;
|
$vars[$mykey] = $value;
|
||||||
$handled[$key] = true;
|
$handled[$key] = true;
|
||||||
}
|
}
|
||||||
|
@ -280,12 +312,40 @@ abstract class DirectorObjectForm extends QuickForm
|
||||||
$this->addField($field, $value, $inheritedValue, $inheritFrom);
|
$this->addField($field, $value, $inheritedValue, $inheritFrom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($checkFields as $field) {
|
||||||
|
$varname = $field->varname;
|
||||||
|
if (property_exists($vars, $varname)) {
|
||||||
|
$value = $vars->$varname;
|
||||||
|
} else {
|
||||||
|
$value = null;
|
||||||
|
}
|
||||||
|
if (property_exists($checkVars, $varname)) {
|
||||||
|
$inheritedValue = $checkVars->$varname;
|
||||||
|
$inheritFrom = $this->translate('check command');
|
||||||
|
} else {
|
||||||
|
$inheritedValue = null;
|
||||||
|
$inheritFrom = false;
|
||||||
|
}
|
||||||
|
$this->addCommandField($field, $value, $inheritedValue, $inheritFrom);
|
||||||
|
if ($inheritedValue !== null) {
|
||||||
|
$this->getElement('var_' . $field->varname)->setRequired(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Additional vars
|
// Additional vars
|
||||||
foreach ($vars as $key => $value) {
|
foreach ($vars as $key => $value) {
|
||||||
// Did we already create a field for this var? Then skip it:
|
// Did we already create a field for this var? Then skip it:
|
||||||
if (array_key_exists($key, $fields)) {
|
if (array_key_exists($key, $fields)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (array_key_exists($key, $checkFields)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: handle structured vars
|
// TODO: handle structured vars
|
||||||
if (! is_string($value)) continue;
|
if (! is_string($value)) continue;
|
||||||
|
@ -372,6 +432,37 @@ abstract class DirectorObjectForm extends QuickForm
|
||||||
return $el;
|
return $el;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function addCommandField($field, $value = null, $inherited = null, $inheritedFrom = null)
|
||||||
|
{
|
||||||
|
$datafield = DirectorDatafield::load($field->datafield_id, $this->getDb());
|
||||||
|
$name = 'var_' . $datafield->varname;
|
||||||
|
$className = $datafield->datatype;
|
||||||
|
|
||||||
|
if (! class_exists($className)) {
|
||||||
|
$this->addElement('text', $name, array('disabled' => 'disabled'));
|
||||||
|
$el = $this->getElement($name);
|
||||||
|
$el->addError(sprintf('Form element could not be created, %s is missing', $className));
|
||||||
|
return $el;
|
||||||
|
}
|
||||||
|
|
||||||
|
$datatype = new $className;
|
||||||
|
$datatype->setSettings($datafield->getSettings());
|
||||||
|
$el = $datatype->getFormElement($name, $this);
|
||||||
|
|
||||||
|
$el->setLabel($datafield->caption);
|
||||||
|
$el->setDescription($datafield->description);
|
||||||
|
|
||||||
|
if ($field->is_required === 'y' && ! $this->isTemplate() && $inherited === null) {
|
||||||
|
$el->setRequired(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addElement($el);
|
||||||
|
$this->setElementValue($name, $value, $inherited, $inheritedFrom);
|
||||||
|
$this->addToCommandFieldsDisplayGroup($el);
|
||||||
|
|
||||||
|
return $el;
|
||||||
|
}
|
||||||
|
|
||||||
protected function setElementValue($name, $value = null, $inherited = null, $inheritedFrom = null)
|
protected function setElementValue($name, $value = null, $inherited = null, $inheritedFrom = null)
|
||||||
{
|
{
|
||||||
$el = $this->getElement($name);
|
$el = $this->getElement($name);
|
||||||
|
@ -669,13 +760,19 @@ abstract class DirectorObjectForm extends QuickForm
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function addCheckExecutionElements()
|
protected function addCheckCommandElements()
|
||||||
{
|
{
|
||||||
$this->addElement('select', 'check_command_id', array(
|
$this->addElement('select', 'check_command_id', array(
|
||||||
'label' => $this->translate('Check command'),
|
'label' => $this->translate('Check command'),
|
||||||
'description' => $this->translate('Check command definition'),
|
'description' => $this->translate('Check command definition'),
|
||||||
'multiOptions' => $this->optionalEnum($this->db->enumCheckCommands())
|
'multiOptions' => $this->optionalEnum($this->db->enumCheckCommands()),
|
||||||
|
'class' => 'autosubmit', // This influences fields
|
||||||
));
|
));
|
||||||
|
$this->addToCheckExecutionDisplayGroup('check_command_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function addCheckExecutionElements()
|
||||||
|
{
|
||||||
|
|
||||||
$this->optionalBoolean(
|
$this->optionalBoolean(
|
||||||
'enable_active_checks',
|
'enable_active_checks',
|
||||||
|
@ -714,7 +811,6 @@ abstract class DirectorObjectForm extends QuickForm
|
||||||
);
|
);
|
||||||
|
|
||||||
$elements = array(
|
$elements = array(
|
||||||
'check_command_id',
|
|
||||||
'enable_active_checks',
|
'enable_active_checks',
|
||||||
'enable_passive_checks',
|
'enable_passive_checks',
|
||||||
'enable_notifications',
|
'enable_notifications',
|
||||||
|
@ -722,15 +818,7 @@ abstract class DirectorObjectForm extends QuickForm
|
||||||
'enable_perfdata',
|
'enable_perfdata',
|
||||||
'volatile'
|
'volatile'
|
||||||
);
|
);
|
||||||
|
$this->addToCheckExecutionDisplayGroup($elements);
|
||||||
$this->addDisplayGroup($elements, 'check_execution', array(
|
|
||||||
'decorators' => array(
|
|
||||||
'FormElements',
|
|
||||||
'Fieldset',
|
|
||||||
),
|
|
||||||
'order' => 60,
|
|
||||||
'legend' => $this->translate('Check execution')
|
|
||||||
));
|
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue