26 protected $actions = [];
27 protected $handlers = [];
29 function __construct (
string $name, $label, $icon, array $actions,
bool $inmenu = TRUE)
31 parent::__construct($name, $label, $icon,
'0', FALSE, [], $inmenu, FALSE);
32 $this->actions = $actions;
33 foreach ($this->actions as $action) {
34 $names = $action->listActions();
35 foreach ($names as $name) {
36 $this->handlers[$name] = $action;
41 function addAction (
Action $action)
43 $this->actions[] = $action;
44 $names = $action->listActions();
45 foreach ($names as $name) {
46 $this->handlers[$name] = $action;
49 $this->parent->registerAction($this);
54 parent::setParent($parent);
55 foreach ($this->actions as $action) {
56 $action->setParent($parent);
60 function listActions (): array
62 return array_keys($this->handlers);
65 function execute (
management $management, array $action)
67 if (isset($action[
'subaction']) && isset($this->handlers[$action[
'action'].
'_'.$action[
'subaction']])) {
68 return $this->handlers[$action[
'action'].
'_'.$action[
'subaction']]->execute($management, $action);
69 } elseif (isset($this->handlers[$action[
'action']])) {
70 return $this->handlers[$action[
'action']]->execute($management, $action);
74 function fillMenuItems (array &$actions)
81 foreach ($this->actions as $action) {
82 $action->fillMenuItems($subactions);
85 if (!empty($subactions)) {
87 'name' => $this->name,
88 'icon' => $this->icon,
89 'label' => $this->label,
90 'separator' => $this->separator,
91 'actions' => $subactions