|
|
@@ -4,7 +4,7 @@ namespace Opentalent\OtTemplating\Page;
|
|
|
|
|
|
use Psr\Http\Message\ResponseInterface;
|
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
|
-use TYPO3\CMS\Core\Configuration\ExtensionConfiguration;
|
|
|
+use TYPO3\CMS\Core\Error\PageErrorHandler\PageContentErrorHandler;
|
|
|
use TYPO3\CMS\Core\Error\PageErrorHandler\PageErrorHandlerInterface;
|
|
|
use TYPO3\CMS\Core\Http\HtmlResponse;
|
|
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
|
|
@@ -66,18 +66,50 @@ class ErrorHandler implements PageErrorHandlerInterface
|
|
|
array $reasons = []
|
|
|
): ResponseInterface {
|
|
|
|
|
|
+ $homeUri = "https://opentalent.fr";
|
|
|
+ $title = 'Page introuvable';
|
|
|
+
|
|
|
+ // This variable role is to prevent redirection loop,
|
|
|
+ $isCircular = preg_match('/.*\/page-introuvable/', $request->getUri()->getPath());
|
|
|
+
|
|
|
$pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
|
|
|
$site = $pageRepository->getCurrentSite();
|
|
|
- $baseUri = $site->getBase();
|
|
|
|
|
|
+ if ($site && !$isCircular){
|
|
|
+ $homeUri = $site->getBase();
|
|
|
+ $rootUid = $site->getRootPageId();
|
|
|
+
|
|
|
+ $rootPage = $pageRepository->getPage($rootUid);
|
|
|
+ $title = $rootPage['title'];
|
|
|
+
|
|
|
+ $subPages = $pageRepository->getAllSubpagesForPage($rootUid, true);
|
|
|
+ foreach ($subPages as $page) {
|
|
|
+ if ($page['slug'] == '/page-introuvable') {
|
|
|
+
|
|
|
+ $errorHandler = GeneralUtility::makeInstance(
|
|
|
+ PageContentErrorHandler::class,
|
|
|
+ $this->statusCode,
|
|
|
+ [
|
|
|
+ 'errorHandler' => 'Page',
|
|
|
+ 'errorContentSource' => 't3://page?uid=' . $page['uid']
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ return $errorHandler->handlePageError($request, $message, $reasons);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // At this point, the site has not been determined or
|
|
|
+ // this site has no subpage with slug '/page-introuvable'
|
|
|
$this->view->assignMultiple([
|
|
|
'request' => $request,
|
|
|
'message' => $message,
|
|
|
'reasons' => $reasons,
|
|
|
- 'homeUri' => $baseUri,
|
|
|
- 'siteTitle' => $site->getConfiguration()['websiteTitle']
|
|
|
+ 'homeUri' => $homeUri,
|
|
|
+ 'siteTitle' => $title
|
|
|
]);
|
|
|
|
|
|
return new HtmlResponse($this->view->render(), $this->statusCode);
|
|
|
}
|
|
|
+
|
|
|
}
|