add(new HtmlElement('div', ['class' => 'form-description'], [ new Icon('info-circle', ['class' => 'form-description-icon']), new HtmlElement('ul', null, [ new HtmlElement('li', null, t( 'This command is used to send custom notifications about hosts or services.' )) ]) ])); $config = Config::module('icingadb'); $decorator = new IcingaFormDecorator(); $this->addElement( 'textarea', 'comment', [ 'required' => true, 'label' => t('Comment'), 'description' => t( 'Enter a brief description on why you\'re sending this notification. It will be sent with it.' ) ] ); $decorator->decorate($this->getElement('comment')); $this->addElement( 'checkbox', 'forced', [ 'label' => t('Forced'), 'value' => (bool) $config->get('settings', 'custom_notification_forced', false), 'description' => t( 'If you check this option, the notification is sent regardless' . ' of downtimes or whether notifications are enabled or not.' ) ] ); $decorator->decorate($this->getElement('forced')); } protected function assembleSubmitButton() { $this->addElement( 'submit', 'btn_submit', [ 'required' => true, 'label' => tp('Send custom notification', 'Send custom notifications', count($this->getObjects())) ] ); (new IcingaFormDecorator())->decorate($this->getElement('btn_submit')); } protected function getCommand(Model $object) { if (! $this->isGrantedOn('monitoring/command/send-custom-notification', $object)) { return null; } $command = new SendCustomNotificationCommand(); $command->setObject($object); $command->setComment($this->getValue('comment')); $command->setForced($this->getElement('forced')->isChecked()); $command->setAuthor($this->getAuth()->getUser()->getUsername()); return $command; } }