dashboard = $dashboard; $this->requestUrl = Url::fromRequest(); $this->init(); } /** * Initialize this form * * @return void */ protected function init() { // This is needed for the modal views $this->setAction((string) $this->requestUrl); $this->getAttributes()->add('class', 'dashboard-form'); } public function hasBeenSubmitted() { // We don't use addElement() for the form controls, so the form has no way of knowing // that we do have a submit button and will always be submitted with autosubmit elements return $this->hasBeenSent() && $this->getPopulatedValue('submit'); } /** * Populate form data from config * * @param BaseDashboard $dashboard * * @return void */ public function load(BaseDashboard $dashboard) { } /** * Get whether we are updating an existing widget * * @return bool */ protected function isUpdating(): bool { return substr($this->requestUrl->getPath(), 0, 16) === Dashboard::BASE_ROUTE . DIRECTORY_SEPARATOR . 'edit-'; } /** * Create custom form controls * * @return HtmlElement */ protected function createFormControls(): ValidHtml { return HtmlElement::create('div', ['class' => ['control-group', 'form-controls']]); } /** * Create a cancel button * * @return HtmlElement */ protected function createCancelButton(): ValidHtml { return HtmlElement::create('button', [ 'type' => 'button', 'class' => 'btn-cancel', 'data-icinga-modal-cancel' => true ])->setContent(t('Cancel')); } /** * Create a remove button * * @param Url $action * @param string $label * * @return FormElement */ protected function createRemoveButton(Url $action, string $label): ValidHtml { return $this->createElement('submitButton', 'btn_remove', [ 'class' => 'btn-remove', 'label' => [new Icon('trash'), $label], 'formaction' => (string) $action ]); } /** * Create and register a submit button * * @param string $label * * @return FormElement */ protected function registerSubmitButton(string $label): ValidHtml { $submitElement = $this->createElement('submit', 'submit', ['class' => 'btn-primary', 'label' => $label]); $this->registerElement($submitElement); return $submitElement; } }