<?phpnamespace EasyCorp\Bundle\EasyAdminBundle\Dto;use EasyCorp\Bundle\EasyAdminBundle\Config\Action;/** * @author Javier Eguiluz <javier.eguiluz@gmail.com> */final class ActionDto{ private $type; private $name; private $label; private $icon; private $cssClass; private $htmlElement; private $htmlAttributes; private $linkUrl; private $templatePath; private $crudActionName; private $routeName; private $routeParameters; private $url; private $translationParameters; private $displayCallable; public function __construct() { $this->cssClass = ''; $this->htmlAttributes = []; $this->routeParameters = []; $this->translationParameters = []; } public function getType(): string { return $this->type; } public function setType(string $type): void { $this->type = $type; } public function isEntityAction(): bool { return Action::TYPE_ENTITY === $this->type; } public function isGlobalAction(): bool { return Action::TYPE_GLOBAL === $this->type; } public function isBatchAction(): bool { return Action::TYPE_BATCH === $this->type; } public function getName(): string { return $this->name; } public function setName(string $name): void { $this->name = $name; } /** * @return string|false|null */ public function getLabel() { return $this->label; } public function setLabel(?string $label): void { $this->label = $label; } public function getIcon(): ?string { return $this->icon; } public function setIcon(?string $icon): void { $this->icon = $icon; } public function getCssClass(): string { return $this->cssClass; } public function setCssClass(string $cssClass): void { $this->cssClass = $cssClass; } public function getHtmlElement(): string { return $this->htmlElement; } public function setHtmlElement(string $htmlElement): void { $this->htmlElement = $htmlElement; } public function getHtmlAttributes(): array { return $this->htmlAttributes; } public function addHtmlAttributes(array $htmlAttributes): void { $this->htmlAttributes = array_merge($this->htmlAttributes, $htmlAttributes); } public function setHtmlAttributes(array $htmlAttributes): void { $this->htmlAttributes = $htmlAttributes; } public function setHtmlAttribute(string $attributeName, string $attributeValue): void { $this->htmlAttributes[$attributeName] = $attributeValue; } public function getTemplatePath(): ?string { return $this->templatePath; } public function setTemplatePath(string $templatePath): void { $this->templatePath = $templatePath; } public function getLinkUrl(): string { return $this->linkUrl; } public function setLinkUrl(string $linkUrl): void { $this->linkUrl = $linkUrl; } public function getCrudActionName(): ?string { return $this->crudActionName; } public function setCrudActionName(string $crudActionName): void { $this->crudActionName = $crudActionName; } public function getRouteName(): ?string { return $this->routeName; } public function setRouteName(string $routeName): void { $this->routeName = $routeName; } /** * @return array|callable */ public function getRouteParameters() { return $this->routeParameters; } /** * @param array|callable $routeParameters */ public function setRouteParameters($routeParameters): void { $this->routeParameters = $routeParameters; } /** * @return string|callable */ public function getUrl() { return $this->url; } /** * @param string|callable $url */ public function setUrl($url): void { $this->url = $url; } public function getTranslationParameters(): array { return $this->translationParameters; } public function setTranslationParameters(array $translationParameters): void { $this->translationParameters = $translationParameters; } public function shouldBeDisplayedFor(EntityDto $entityDto): bool { return null === $this->displayCallable || \call_user_func($this->displayCallable, $entityDto->getInstance()); } public function setDisplayCallable(callable $displayCallable): void { $this->displayCallable = $displayCallable; } /** * @internal */ public function getAsConfigObject(): Action { $action = Action::new($this->name, $this->label, $this->icon); $action->setCssClass($this->cssClass); $action->setHtmlAttributes($this->htmlAttributes); $action->setTranslationParameters($this->translationParameters); if (null !== $this->templatePath) { $action->setTemplatePath($this->templatePath); } if ($this->isGlobalAction()) { $action->createAsGlobalAction(); } elseif ($this->isBatchAction()) { $action->createAsBatchAction(); } if ('a' === $this->htmlElement) { $action->displayAsLink(); } else { $action->displayAsButton(); } if (null !== $this->crudActionName) { $action->linkToCrudAction($this->crudActionName); } if (null !== $this->routeName) { $action->linkToRoute($this->routeName, $this->routeParameters); } if (null !== $this->displayCallable) { $action->displayIf($this->displayCallable); } return $action; }}