2 declare(strict_types = 1);
19 use Psr\Http\Message\ServerRequestInterface;
81 $this->moduleLoader =
$moduleLoader ?? GeneralUtility::makeInstance(ModuleLoader::class);
82 $this->uriBuilder =
$uriBuilder ?? GeneralUtility::makeInstance(UriBuilder::class);
85 GeneralUtility::makeInstance(ConfigurationService::class);
86 $this->adminPanelModuleConfiguration =
$GLOBALS[
'TYPO3_CONF_VARS'][
'EXTCONF'][
'adminpanel'][
'modules'] ?? [];
94 public function initialize(ServerRequestInterface $request): void
96 $this->modules = $this->moduleLoader->validateSortAndInitializeModules(
97 $this->adminPanelModuleConfiguration
112 public function render(ServerRequestInterface $request): string
115 $adminPanelView = GeneralUtility::makeInstance(AdminPanelView::class);
116 $hookObjectContent = $adminPanelView->callDeprecatedHookObject();
121 $view = GeneralUtility::makeInstance(StandaloneView::class);
122 $templateNameAndPath =
'EXT:adminpanel/Resources/Private/Templates/Main.html';
123 $view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName($templateNameAndPath));
124 $view->setPartialRootPaths([
'EXT:adminpanel/Resources/Private/Partials']);
125 $view->setLayoutRootPaths([
'EXT:adminpanel/Resources/Private/Layouts']);
127 $view->assignMultiple(
130 'resources' => $resources,
135 $cache = GeneralUtility::makeInstance(CacheManager::class)->getCache(
'adminpanel_requestcache');
136 $requestId = $request->getAttribute(
'adminPanelRequestId');
137 $data = $cache->get($requestId);
139 $settingsModules = array_filter($this->modules,
function (ModuleInterface $module) {
140 return $module instanceof PageSettingsProviderInterface;
142 $parentModules = array_filter(
144 function (ModuleInterface $module) {
145 return $module instanceof SubmoduleProviderInterface && $module instanceof ShortInfoProviderInterface;
148 $view->assignMultiple(
150 'modules' => $this->modules,
151 'settingsModules' => $settingsModules,
152 'parentModules' => $parentModules,
153 'hookObjectContent' => $hookObjectContent,
155 'moduleResources' => $moduleResources,
156 'requestId' => $requestId,
157 'data' => $data ?? [],
161 return $view->render();
171 public function storeData(ServerRequestInterface $request): void
177 GeneralUtility::makeInstance(ModuleDataStorageCollection::class)
179 $cache = GeneralUtility::makeInstance(CacheManager::class)->getCache(
'adminpanel_requestcache');
180 $cache->set($request->getAttribute(
'adminPanelRequestId'), $data);
181 $cache->collectGarbage();
193 return (
string)$this->uriBuilder->buildUriFromRoute($route);
210 $module->initializeModule($request);
234 $data->
addModuleData($module, $module->getDataToStore($request));
237 if ($module instanceof SubmoduleProviderInterface) {