'inline']; public function __construct() { $this->on(self::ON_SUCCESS, function () { if ($this->errorOccurred) { return; } $countObjects = count($this->getObjects()); Notification::success(sprintf( tp('Removed downtime successfully', 'Removed downtime from %d objects successfully', $countObjects), $countObjects )); }); } protected function assembleElements() { $this->addElement($this->createRedirectOption()); } protected function assembleSubmitButton() { $isDisabled = true; foreach ($this->getObjects() as $downtime) { if ($downtime->scheduled_by === null) { $isDisabled = false; break; } } $this->addElement( 'submitButton', 'btn_submit', [ 'class' => ['cancel-button', 'spinner'], 'disabled' => $isDisabled ?: null, 'title' => $isDisabled ? t('Downtime cannot be removed at runtime because it is based on a configured scheduled downtime.') : null, 'label' => [ new Icon('trash'), tp('Delete downtime', 'Delete downtimes', count($this->getObjects())) ] ] ); } /** * @return ?DeleteDowntimeCommand */ protected function getCommand(Model $object) { if ( ! $this->isGrantedOn('icingadb/command/downtime/delete', $object->{$object->object_type}) || $object->scheduled_by !== null ) { return null; } $command = new DeleteDowntimeCommand(); $command->setDowntimeName($object->name); $command->setAuthor($this->getAuth()->getUser()->getUsername()); return $command; } }