mirror of
				https://github.com/Icinga/icingaweb2-module-director.git
				synced 2025-10-31 11:24:52 +01:00 
			
		
		
		
	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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user