diff --git a/application/controllers/NavigationController.php b/application/controllers/NavigationController.php index 1531d5563..080ef328e 100644 --- a/application/controllers/NavigationController.php +++ b/application/controllers/NavigationController.php @@ -6,9 +6,11 @@ namespace Icinga\Controllers; use Exception; use Icinga\Application\Config; use Icinga\Exception\NotFoundError; +use Icinga\Forms\ConfirmRemovalForm; use Icinga\Forms\Navigation\NavigationConfigForm; use Icinga\Web\Controller; use Icinga\Web\Form; +use Icinga\Web\Notification; use Icinga\Web\Url; /** @@ -166,7 +168,32 @@ class NavigationController extends Controller */ public function removeAction() { - + $itemName = $this->params->getRequired('name'); + + $navigationConfigForm = new NavigationConfigForm(); + $navigationConfigForm->setIniConfig($this->Auth()->getUser()->loadNavigationConfig()); + $form = new ConfirmRemovalForm(); + $form->setRedirectUrl('navigation'); + $form->setTitle(sprintf($this->translate('Remove Navigation Item %s'), $itemName)); + $form->setOnSuccess(function (ConfirmRemovalForm $form) use ($itemName, $navigationConfigForm) { + try { + $navigationConfigForm->delete($itemName); + } catch (Exception $e) { + $form->error($e->getMessage()); + return false; + } + + if ($navigationConfigForm->save()) { + Notification::success(sprintf(t('Navigation Item "%s" successfully removed'), $itemName)); + return true; + } + + return false; + }); + $form->handleRequest(); + + $this->view->form = $form; + $this->render('form'); } /** diff --git a/application/views/scripts/navigation/form.phtml b/application/views/scripts/navigation/form.phtml new file mode 100644 index 000000000..cbf06590d --- /dev/null +++ b/application/views/scripts/navigation/form.phtml @@ -0,0 +1,6 @@ +