diff --git a/application/forms/IcingaServiceForm.php b/application/forms/IcingaServiceForm.php index b9e573ee..0ed2daea 100644 --- a/application/forms/IcingaServiceForm.php +++ b/application/forms/IcingaServiceForm.php @@ -318,12 +318,14 @@ class IcingaServiceForm extends DirectorObjectForm protected function setupServiceElements() { if ($this->object) { - $this->addHidden('object_type', $this->object->object_type); + $objectType = $this->object->object_type; } elseif ($this->preferredObjectType) { - $this->addHidden('object_type', $this->preferredObjectType); + $objectType = $this->preferredObjectType; } else { - $this->addHidden('object_type', 'template'); + $objectType = 'template'; } + $this->addHidden('object_type', $objectType); + $forceCommandElements = $this->hasPermission('director/admin'); $this->addNameElement() ->addHostObjectElement() @@ -334,7 +336,7 @@ class IcingaServiceForm extends DirectorObjectForm ->addApplyForElement() ->groupMainProperties() ->addAssignmentElements() - ->addCheckCommandElements() + ->addCheckCommandElements($forceCommandElements) ->addCheckExecutionElements() ->addExtraInfoElements() ->addAgentAndZoneElements() diff --git a/library/Director/Objects/IcingaObject.php b/library/Director/Objects/IcingaObject.php index 073f67cb..620a46e0 100644 --- a/library/Director/Objects/IcingaObject.php +++ b/library/Director/Objects/IcingaObject.php @@ -309,7 +309,7 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer * @param $id * @return string */ - protected function getRelatedObjectName($property, $id) + public function getRelatedObjectName($property, $id) { return $this->getRelatedObject($property, $id)->getObjectName(); } diff --git a/library/Director/Web/Form/DirectorObjectForm.php b/library/Director/Web/Form/DirectorObjectForm.php index c1dadb45..b0eaa301 100644 --- a/library/Director/Web/Form/DirectorObjectForm.php +++ b/library/Director/Web/Form/DirectorObjectForm.php @@ -423,6 +423,16 @@ abstract class DirectorObjectForm extends DirectorForm $el = $this->getElement($k); if ($el) { $this->setInheritedValue($el, $inherited->$k, $origins->$k); + } elseif (substr($k, -3) === '_id') { + $k = substr($k, 0, -3); + $el = $this->getElement($k); + if ($el) { + $this->setInheritedValue( + $el, + $object->getRelatedObjectName($k, $v), + $origins->{"${k}_id"} + ); + } } } }