moduleProvider->getModulesForModuleMenu($context->user)); } public function getResult(SidebarComponentContext $context): SidebarComponentResult { $modules = $this->moduleProvider->getModulesForModuleMenu($context->user); if ($modules === []) { return new SidebarComponentResult('', ''); } $view = $this->viewFactory->create($context->request); $view->assignMultiple([ 'modules' => $modules, 'modulesInformation' => GeneralUtility::jsonEncodeForHtmlAttribute( $this->getModulesInformation($context), false ), ]); return new SidebarComponentResult( identifier: 'module-menu', html: $view->render('Backend/ModuleMenu'), module: '@typo3/backend/module-menu.js', ); } /** * Get module information for JavaScript. * * @return array */ private function getModulesInformation(SidebarComponentContext $context): array { $modules = []; foreach ($this->moduleProvider->getModules($context->user, true, false) as $identifier => $module) { $menuModule = new MenuModule(clone $module); $modules[$identifier] = [ 'name' => $identifier, 'aliases' => $module->getAliases(), 'component' => $menuModule->getComponent(), 'navigationComponentId' => $menuModule->getNavigationComponent(), 'parent' => $menuModule->hasParentModule() ? $menuModule->getParentIdentifier() : '', 'link' => $menuModule->getShouldBeLinked() ? (string)$this->uriBuilder->buildUriFromRoute($module->getIdentifier()) : '', ]; } return $modules; } }