'inline']; public function __construct() { $this->on(self::ON_SUCCESS, function () { if ($this->errorOccurred) { return; } $countObjects = count($this->getObjects()); Notification::success(sprintf( tp('Removed comment successfully', 'Removed comment from %d objects successfully', $countObjects), $countObjects )); }); } protected function assembleElements() { $this->addElement($this->createRedirectOption()); } protected function assembleSubmitButton() { $this->addElement( 'submitButton', 'btn_submit', [ 'class' => ['cancel-button', 'spinner'], 'label' => [ new Icon('trash'), tp('Remove Comment', 'Remove Comments', count($this->getObjects())) ] ] ); } protected function getCommands(Iterator $objects): Traversable { $granted = new CallbackFilterIterator($objects, function (Model $object): bool { return $this->isGrantedOn('icingadb/command/comment/delete', $object->{$object->object_type}); }); $granted->rewind(); // Forwards the pointer to the first element if ($granted->valid()) { $command = new DeleteCommentCommand(); $command->setObjects($granted); $command->setAuthor($this->getAuth()->getUser()->getUsername()); yield $command; } } }