node; $view = $this->getView(); $this->addHtml( '

' . $view->escape( sprintf($this->translate('Delete "%s"'), $node->getAlias()) ) . '

' ); $biLink = $view->qlink( $node->getAlias(), 'businessprocess/node/impact', array('name' => $node->getName()), array('data-base-target' => '_next') ); $this->addHtml( '

' . sprintf( $view->escape( $this->translate('Unsure? Show business impact of "%s"') ), $biLink ) . '

' ); if ($this->parentNode) { $yesMsg = sprintf( $this->translate('Delete from %s'), $this->parentNode->getAlias() ); } else { $yesMsg = sprintf( $this->translate('Delete root node "%s"'), $this->node->getAlias() ); } $this->addElement('select', 'confirm', array( 'label' => $this->translate('Are you sure?'), 'required' => true, 'description' => $this->translate( 'Do you really want to delete this node?' ), 'multiOptions' => $this->optionalEnum(array( 'no' => $this->translate('No'), 'yes' => $yesMsg, 'all' => sprintf($this->translate('Delete all occurrences of %s'), $node->getAlias()), )) )); } /** * @param MonitoringBackend|IcingaDbConnection $backend * @return $this */ public function setBackend($backend) { $this->backend = $backend; return $this; } /** * @param BpConfig $process * @return $this */ public function setProcess(BpConfig $process) { $this->bp = $process; $this->setBackend($process->getBackend()); return $this; } /** * @param Node $node * @return $this */ public function setNode(Node $node) { $this->node = $node; return $this; } /** * @param BpNode|null $node * @return $this */ public function setParentNode(BpNode $node = null) { $this->parentNode = $node; return $this; } /** * @param SessionNamespace $session * @return $this */ public function setSession(SessionNamespace $session) { $this->session = $session; return $this; } public function onSuccess() { $changes = ProcessChanges::construct($this->bp, $this->session); $confirm = $this->getValue('confirm'); switch ($confirm) { case 'yes': $changes->deleteNode($this->node, $this->parentNode === null ? null : $this->parentNode->getName()); break; case 'all': $changes->deleteNode($this->node); break; case 'no': $this->setSuccessMessage($this->translate('Well, maybe next time')); } switch ($confirm) { case 'yes': case 'all': if ($this->successUrl === null) { $this->successUrl = clone $this->getRequest()->getUrl(); } $this->successUrl->getParams()->remove(array('action', 'deletenode')); } // Trigger session desctruction to make sure it get's stored. // TODO: figure out why this is necessary, might be an unclean shutdown on redirect unset($changes); parent::onSuccess(); } }