setName('form_dashboard_addurl'); if (! $this->getSubmitLabel()) { $this->setSubmitLabel($this->translate('Add To Dashboard')); } $this->setAction(Url::fromRequest()); } /** * Build AddUrl form elements * * @see Form::createElements() */ public function createElements(array $formData) { $groupElements = array(); $panes = array(); if ($this->dashboard) { $panes = $this->dashboard->getPaneKeyTitleArray(); } $sectionNameValidator = ['Callback', true, [ 'callback' => function ($value) { if (strpos($value, '[') === false && strpos($value, ']') === false) { return true; } }, 'messages' => [ 'callbackValue' => $this->translate('Brackets ([, ]) cannot be used here') ] ]]; $this->addElement( 'hidden', 'org_pane', array( 'required' => false ) ); $this->addElement( 'hidden', 'org_dashlet', array( 'required' => false ) ); $this->addElement( 'textarea', 'url', array( 'required' => true, 'label' => $this->translate('Url'), 'description' => $this->translate( 'Enter url to be loaded in the dashlet. You can paste the full URL, including filters.' ), 'validators' => array(new UrlValidator(), new InternalUrlValidator()) ) ); $this->addElement( 'text', 'dashlet', array( 'required' => true, 'label' => $this->translate('Dashlet Title'), 'description' => $this->translate('Enter a title for the dashlet.'), 'validators' => [$sectionNameValidator] ) ); $this->addElement( 'note', 'note', array( 'decorators' => array( array('HtmlTag', array('tag' => 'hr')) ) ) ); $this->addElement( 'checkbox', 'create_new_pane', array( 'autosubmit' => true, 'required' => false, 'label' => $this->translate('New dashboard'), 'description' => $this->translate('Check this box if you want to add the dashlet to a new dashboard') ) ); if (empty($panes) || ((isset($formData['create_new_pane']) && $formData['create_new_pane'] != false))) { $this->addElement( 'text', 'pane', array( 'required' => true, 'label' => $this->translate('New Dashboard Title'), 'description' => $this->translate('Enter a title for the new dashboard'), 'validators' => [$sectionNameValidator] ) ); } else { $this->addElement( 'select', 'pane', array( 'required' => true, 'label' => $this->translate('Dashboard'), 'multiOptions' => $panes, 'description' => $this->translate('Select a dashboard you want to add the dashlet to') ) ); } } /** * @param \Icinga\Web\Widget\Dashboard $dashboard */ public function setDashboard(Dashboard $dashboard) { $this->dashboard = $dashboard; } /** * @return \Icinga\Web\Widget\Dashboard */ public function getDashboard() { return $this->dashboard; } /** * @param Dashlet $dashlet */ public function load(Dashlet $dashlet) { $this->populate(array( 'pane' => $dashlet->getPane()->getTitle(), 'org_pane' => $dashlet->getPane()->getName(), 'dashlet' => $dashlet->getTitle(), 'org_dashlet' => $dashlet->getName(), 'url' => $dashlet->getUrl()->getRelativeUrl() )); } }