diff --git a/typo3/sysext/frontend/Classes/Middleware/PreviewSimulator.php b/typo3/sysext/frontend/Classes/Middleware/PreviewSimulator.php index ffe0d1cb6a02275c34253bdc3b54293ffcf4c277..60300bb69bf47919a2c958b6fd54a512697809cd 100644 --- a/typo3/sysext/frontend/Classes/Middleware/PreviewSimulator.php +++ b/typo3/sysext/frontend/Classes/Middleware/PreviewSimulator.php @@ -94,10 +94,19 @@ class PreviewSimulator implements MiddlewareInterface { $pageRepository = GeneralUtility::makeInstance(PageRepository::class, $this->context); $site = $request->getAttribute('site', null); - return $pageRepository->checkIfPageIsHidden( - $pageId, - LanguageAspectFactory::createFromSiteLanguage($request->getAttribute('language', $site->getDefaultLanguage())) - ); + // always check both the page in the requested language and the page in the default language, as due to the + // overlay handling, a hidden default page will require setting the preview flag to allow previewing of the + // translation + $languageAspectFromRequest = LanguageAspectFactory::createFromSiteLanguage($request->getAttribute('language', $site->getDefaultLanguage())); + $pageIsHidden = $pageRepository->checkIfPageIsHidden($pageId, $languageAspectFromRequest); + + if ($languageAspectFromRequest->getId() > 0) { + $pageIsHidden = $pageIsHidden || $pageRepository->checkIfPageIsHidden( + $pageId, + LanguageAspectFactory::createFromSiteLanguage($site->getDefaultLanguage()) + ); + } + return $pageIsHidden; } /**