dashboard = $dashboard; $this->setRedirectUrl((string) Url::fromPath(Dashboard::BASE_ROUTE)); } public function hasBeenSubmitted() { return parent::hasBeenSubmitted() || $this->getPressedSubmitElement(); } protected function assemble() { $element = $this->createElement('submit', 'btn_use_defaults', ['label' => t('Use System Defaults')]); $this->registerElement($element)->decorate($element); $this->addElement('submit', 'btn_customize_dashlets', [ 'label' => t('Add Dashlets Now'), 'href' => Url::fromPath(Dashboard::BASE_ROUTE . '/setup-dashboard'), 'data-icinga-modal' => true, 'data-no-icinga-ajax' => true ]); $this->getElement('btn_customize_dashlets')->setWrapper($element->getWrapper()); } protected function onSuccess() { if ($this->getPopulatedValue('btn_use_defaults')) { $home = $this->dashboard->getEntry(DashboardHome::DEFAULT_HOME); $conn = Dashboard::getConn(); $conn->beginTransaction(); try { // Default Home might have been disabled, so we have to update it first $this->dashboard->manageEntry($home); $home->manageEntry($this->dashboard->getSystemDefaults(), null, true); $conn->commitTransaction(); } catch (\Exception $err) { $conn->rollBackTransaction(); throw $err; } } } }