moduleTemplateFactory->create($request); $currentModule = $request->getAttribute('module'); if (!($currentModule instanceof ModuleInterface) || !$this->moduleProvider->accessGranted($currentModule->getIdentifier(), $this->getBackendUser())) { return $view->renderResponse('SubmoduleOverview/Cards'); } $id = (int)($request->getParsedBody()['id'] ?? $request->getQueryParams()['id'] ?? 0); $pageinfo = BackendUtility::readPageAccess($id, $this->getBackendUser()->getPagePermsClause(Permission::PAGE_SHOW)) ?: []; $view->setTitle( $this->getLanguageService()->sL($currentModule->getTitle()), $id !== 0 && isset($pageinfo['title']) ? $pageinfo['title'] : '' ); if ($pageinfo !== []) { $view->getDocHeaderComponent()->setPageBreadcrumb($pageinfo); } $view->makeDocHeaderModuleMenu(['id' => $id]); $view->getDocHeaderComponent()->setShortcutContext( $currentModule->getIdentifier(), $this->getLanguageService()->sL($currentModule->getTitle()) ); $view->setTitle($this->getLanguageService()->sL($currentModule->getTitle())); $view->setLayout(ModuleLayout::NORMAL); $view->assign('currentModule', $currentModule); $view->assignMultiple([ 'additionalParameters' => array_filter(['id' => $id]), 'submodules' => $this->getAccessibleSubmodules($currentModule), 'moduleTitle' => $this->getLanguageService()->sL($currentModule->getTitle()), ]); return $view->renderResponse('SubmoduleOverview/Cards'); } /** * Get all submodules the current user has access to * * @return ModuleInterface[] */ private function getAccessibleSubmodules(ModuleInterface $module): array { $accessibleSubmodules = []; foreach ($module->getSubModules() as $submodule) { // Check if the user has access to this submodule if ($this->moduleProvider->accessGranted($submodule->getIdentifier(), $this->getBackendUser())) { $accessibleSubmodules[] = $submodule; } } return $accessibleSubmodules; } private function getLanguageService(): LanguageService { return $GLOBALS['LANG']; } private function getBackendUser(): BackendUserAuthentication { return $GLOBALS['BE_USER']; } }