diff --git a/application/forms/EditNodeForm.php b/application/forms/EditNodeForm.php index f26dd04b..a2089117 100644 --- a/application/forms/EditNodeForm.php +++ b/application/forms/EditNodeForm.php @@ -12,6 +12,9 @@ use Icinga\Module\Monitoring\Backend\MonitoringBackend; use Icinga\Web\Session\SessionNamespace; use ipl\Sql\Connection as IcingaDbConnection; +use ipl\Web\Url; +use ipl\Web\Widget\ButtonLink; +use Zend_Form_Element_Note; class EditNodeForm extends QuickForm { @@ -37,6 +40,8 @@ class EditNodeForm extends QuickForm protected $host; + protected $deleteButtonName = 'delete_node'; + /** @var SessionNamespace */ protected $session; @@ -79,6 +84,43 @@ public function setup() $this->setSubmitLabel($this->translate('Next')); return; } + + $url = Url::fromRequest(); + $params = $url->getParams(); + + $url->setParams([ + 'config' => $params->get('config'), + 'node' => $params->get('node'), + 'unlocked' => 1, + 'action' => 'delete', + 'deletenode' => $params->get('editmonitorednode') + ]); + + $deleteButton = (new Zend_Form_Element_Note( + 'delete', + [ + 'value' => new ButtonLink( + $this->translate('Delete'), + $url, + null, + ['class' => 'node-delete-button'] + ) + ] + )); + + $deleteButton->removeDecorator('Label'); + $deleteButton->removeDecorator('HtmlTag'); + + $this->addElement($deleteButton, $this->deleteButtonName); + } + + protected function onSetup() + { + $label = $this->translate('Save Changes'); + $this->setSubmitLabel($label); + $this->getElement($this->submitButtonName) + ->setAttribs(['class' => 'btn-primary']) + ->setLabel($label); } protected function isService() diff --git a/application/forms/ProcessForm.php b/application/forms/ProcessForm.php index cbc44669..d34b10c2 100644 --- a/application/forms/ProcessForm.php +++ b/application/forms/ProcessForm.php @@ -11,6 +11,9 @@ use Icinga\Web\Notification; use Icinga\Web\Session\SessionNamespace; use ipl\Sql\Connection as IcingaDbConnection; +use ipl\Web\Url; +use ipl\Web\Widget\ButtonLink; +use Zend_Form_Element_Note; class ProcessForm extends QuickForm { @@ -26,6 +29,8 @@ class ProcessForm extends QuickForm /** @var SessionNamespace */ protected $session; + protected $deleteButtonName = 'delete_node'; + public function setup() { if ($this->node !== null) { @@ -92,6 +97,43 @@ public function setup() $this->getElement('url')->setValue($node->getInfoUrl()); } } + + $url = Url::fromRequest(); + $params = $url->getParams(); + + $url->setParams([ + 'config' => $params->get('config'), + 'node' => $params->get('node'), + 'unlocked' => 1, + 'action' => 'delete', + 'deletenode' => $params->get('editnode') + ]); + + $deleteButton = (new Zend_Form_Element_Note( + 'delete', + [ + 'value' => new ButtonLink( + $this->translate('Delete'), + $url, + null, + ['class' => 'node-delete-button'] + ) + ] + )); + + $deleteButton->removeDecorator('Label'); + $deleteButton->removeDecorator('HtmlTag'); + + $this->addElement($deleteButton, $this->deleteButtonName); + } + + protected function onSetup() + { + $label = $this->translate('Save Changes'); + $this->setSubmitLabel($label); + $this->getElement($this->submitButtonName) + ->setAttribs(['class' => 'btn-primary']) + ->setLabel($label); } /** diff --git a/library/Businessprocess/Renderer/TileRenderer/NodeTile.php b/library/Businessprocess/Renderer/TileRenderer/NodeTile.php index 67bb4a62..b8c7432e 100644 --- a/library/Businessprocess/Renderer/TileRenderer/NodeTile.php +++ b/library/Businessprocess/Renderer/TileRenderer/NodeTile.php @@ -338,7 +338,7 @@ protected function addActionLinks() } } - if ($this->renderer->getBusinessProcess()->getMetadata()->canModify()) { + if ($this->renderer->getBusinessProcess()->getMetadata()->canModify() && $this->node instanceof ImportedNode) { $params = array( 'action' => 'delete', 'deletenode' => $this->node->getName(), diff --git a/public/css/module.less b/public/css/module.less index 75768348..792b17ba 100644 --- a/public/css/module.less +++ b/public/css/module.less @@ -980,3 +980,10 @@ textarea.smaller { max-width: 60em; } /** END of custom font styling **/ + +.node-delete-button { + float: left; + color: @state-critical; + background: transparent; + margin-right: 1em; +}