2 declare(strict_types = 1);
18 use Psr\Http\Message\ResponseInterface;
19 use Psr\Http\Message\ServerRequestInterface;
31 use TYPO3Fluid\Fluid\View\ViewInterface;
67 $this->moduleTemplate = GeneralUtility::makeInstance(ModuleTemplate::class);
68 $this->tableManualRepository = GeneralUtility::makeInstance(TableManualRepository::class);
77 public function handleRequest(ServerRequestInterface $request): ResponseInterface
79 $action = $request->getQueryParams()[
'action'] ?? $request->getParsedBody()[
'action'] ??
'index';
81 if ($action ===
'detail') {
82 $table = $request->getQueryParams()[
'table'] ?? $request->getParsedBody()[
'table'];
84 $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
85 return new RedirectResponse((
string)$uriBuilder->buildUriFromRoute(
'help_cshmanual', [
91 if (!in_array($action, self::ALLOWED_ACTIONS,
true)) {
92 return new HtmlResponse(
'Action not allowed', 400);
97 $result = call_user_func_array([$this, $action .
'Action'], [$request]);
98 if ($result instanceof ResponseInterface) {
104 $this->moduleTemplate->setContent($this->view->render());
105 return new HtmlResponse($this->moduleTemplate->renderContent());
113 $this->view = GeneralUtility::makeInstance(StandaloneView::class);
114 $this->view->setTemplate($templateName);
115 $this->view->setTemplateRootPaths([
'EXT:backend/Resources/Private/Templates/ContextSensitiveHelp']);
116 $this->view->setPartialRootPaths([
'EXT:backend/Resources/Private/Partials']);
117 $this->view->setLayoutRootPaths([
'EXT:backend/Resources/Private/Layouts']);
118 $this->view->getRequest()->setControllerExtensionName(
'Backend');
127 $this->view->assign(
'toc', $this->tableManualRepository->getSections(self::TOC_ONLY));
135 $this->view->assign(
'all', $this->tableManualRepository->getSections(self::FULL));
143 public function detailAction(ServerRequestInterface $request)
145 $table = $request->getQueryParams()[
'table'] ?? $request->getParsedBody()[
'table'];
146 $field = $request->getQueryParams()[
'field'] ?? $request->getParsedBody()[
'field'] ??
'*';
150 $this->view->assignMultiple([
154 'manuals' => $field ===
'*'
155 ? $this->tableManualRepository->getTableManual($mainKey)
156 : [$this->tableManualRepository->getSingleManual($mainKey, $field)],
167 $buttonBar = $this->moduleTemplate->getDocHeaderComponent()->getButtonBar();
170 $shortcutButton = $buttonBar->makeShortcutButton()
171 ->setModuleName(
'help_cshmanual')
172 ->setGetVariables([
'table',
'field',
'route']);
173 $buttonBar->addButton($shortcutButton);
176 $action = $request->getQueryParams()[
'action'] ?? $request->getParsedBody()[
'action'] ??
'index';
177 if ($action !==
'index') {
178 $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
179 $backButton = $buttonBar->makeLinkButton()
180 ->setTitle($this->
getLanguageService()->sL(
'LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:back'))
181 ->setIcon($this->moduleTemplate->getIconFactory()->getIcon(
'actions-view-go-up',
Icon::SIZE_SMALL))
182 ->setHref((
string)$uriBuilder->buildUriFromRoute(
'help_cshmanual'));
183 $buttonBar->addButton($backButton);