193 lines
4.2 KiB
PHP
193 lines
4.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/*
|
|
* This file is part of the TYPO3 CMS project.
|
|
*
|
|
* It is free software; you can redistribute it and/or modify it under
|
|
* the terms of the GNU General Public License, either version 2
|
|
* of the License, or any later version.
|
|
*
|
|
* For the full copyright and license information, please read the
|
|
* LICENSE.txt file that was distributed with this source code.
|
|
*
|
|
* The TYPO3 project - inspiring people to share!
|
|
*/
|
|
|
|
namespace TYPO3\CMS\Backend\Module;
|
|
|
|
/**
|
|
* A representation for a module used for the menu generation.
|
|
*
|
|
* @internal only to be used by TYPO3 Core.
|
|
*/
|
|
class MenuModule implements ModuleInterface
|
|
{
|
|
/**
|
|
* @var ModuleInterface[]
|
|
*/
|
|
protected array $subModules = [];
|
|
|
|
public function __construct(protected readonly ModuleInterface $module, protected $isCollapsed = false) {}
|
|
|
|
public function getIdentifier(): string
|
|
{
|
|
return $this->module->getIdentifier();
|
|
}
|
|
|
|
public function getIconIdentifier(): string
|
|
{
|
|
return $this->module->getIconIdentifier();
|
|
}
|
|
|
|
public function getTitle(): string
|
|
{
|
|
return $this->module->getTitle();
|
|
}
|
|
|
|
public function getDescription(): string
|
|
{
|
|
return $this->module->getDescription();
|
|
}
|
|
|
|
public function getShortDescription(): string
|
|
{
|
|
return $this->module->getShortDescription();
|
|
}
|
|
|
|
public function isStandalone(): bool
|
|
{
|
|
return $this->module->isStandalone();
|
|
}
|
|
|
|
public function getComponent(): string
|
|
{
|
|
return $this->module->getComponent();
|
|
}
|
|
|
|
public function getNavigationComponent(): string
|
|
{
|
|
return $this->module->getNavigationComponent();
|
|
}
|
|
|
|
public function getPosition(): array
|
|
{
|
|
return $this->module->getPosition();
|
|
}
|
|
|
|
public function getAppearance(): array
|
|
{
|
|
return $this->module->getAppearance();
|
|
}
|
|
|
|
public function getAccess(): string
|
|
{
|
|
return $this->module->getAccess();
|
|
}
|
|
|
|
public function getWorkspaceAccess(): string
|
|
{
|
|
return $this->module->getWorkspaceAccess();
|
|
}
|
|
|
|
public function getParentIdentifier(): string
|
|
{
|
|
return $this->module->getParentIdentifier();
|
|
}
|
|
|
|
public function setParentModule(ModuleInterface $module): void
|
|
{
|
|
$this->module->setParentModule($module);
|
|
}
|
|
|
|
public function getParentModule(): ?ModuleInterface
|
|
{
|
|
return $this->module->getParentModule();
|
|
}
|
|
|
|
public function hasParentModule(): bool
|
|
{
|
|
return $this->module->hasParentModule();
|
|
}
|
|
|
|
public function addSubModule(ModuleInterface $module): void
|
|
{
|
|
$this->subModules[$module->getIdentifier()] = $module;
|
|
}
|
|
|
|
public function removeSubModule(string $identifier): void
|
|
{
|
|
unset($this->subModules[$identifier]);
|
|
}
|
|
|
|
public function hasSubModule(string $identifier): bool
|
|
{
|
|
return isset($this->subModules[$identifier]);
|
|
}
|
|
|
|
public function hasSubModules(): bool
|
|
{
|
|
return $this->subModules !== [];
|
|
}
|
|
|
|
public function getSubModule(string $identifier): ?ModuleInterface
|
|
{
|
|
return $this->subModules[$identifier] ?? null;
|
|
}
|
|
|
|
/**
|
|
* @return ModuleInterface[]
|
|
*/
|
|
public function getSubModules(): array
|
|
{
|
|
return $this->subModules;
|
|
}
|
|
|
|
public function getPath(): string
|
|
{
|
|
return $this->module->getPath();
|
|
}
|
|
|
|
public function getDefaultRouteOptions(): array
|
|
{
|
|
return $this->module->getDefaultRouteOptions();
|
|
}
|
|
|
|
public function getDefaultModuleData(): array
|
|
{
|
|
return $this->module->getDefaultModuleData();
|
|
}
|
|
|
|
public function getAliases(): array
|
|
{
|
|
return $this->module->getAliases();
|
|
}
|
|
|
|
public function hasSubmoduleOverview(): bool
|
|
{
|
|
return $this->module->hasSubmoduleOverview();
|
|
}
|
|
|
|
public function isCollapsed(): bool
|
|
{
|
|
return $this->isCollapsed;
|
|
}
|
|
|
|
public function getIsCollapsed(): bool
|
|
{
|
|
return $this->isCollapsed();
|
|
}
|
|
|
|
public function getShouldBeLinked(): bool
|
|
{
|
|
if ($this->module->isStandalone()) {
|
|
return true;
|
|
}
|
|
if ($this->module->hasParentModule()) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|