From 4205068db24a5669eb2a3e8aa68a1c7a5a7cfe43 Mon Sep 17 00:00:00 2001 From: raviks789 <33730024+raviks789@users.noreply.github.com> Date: Fri, 5 Aug 2022 14:19:59 +0200 Subject: [PATCH 1/2] Add delete button to modify view The modify view for the process form and edit node form must contain delete button. This allows the user to either store the modifications or delete the nodes. --- application/forms/EditNodeForm.php | 42 ++++++++++++++++++++++++++++++ application/forms/ProcessForm.php | 42 ++++++++++++++++++++++++++++++ public/css/module.less | 7 +++++ 3 files changed, 91 insertions(+) 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/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; +} From 5a18138559a4634f412652aa6aa4a9b7b668e103 Mon Sep 17 00:00:00 2001 From: raviks789 <33730024+raviks789@users.noreply.github.com> Date: Thu, 1 Sep 2022 12:46:58 +0200 Subject: [PATCH 2/2] Show the delete/cancel icon only for the imported node Imported nodes will not have edit icon on their node tile. Hence, it is required to show the delete icon in their node tile. As the other nodes will have edit icon and their edit forms contain the delete button, it is not necessary to show the delete/cancel icon in their node tiles. --- library/Businessprocess/Renderer/TileRenderer/NodeTile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(),