From 72d6c6e7b8ffe77e6f3cfbd9cc89464e4b11619a Mon Sep 17 00:00:00 2001
From: Oliver Hader <oliver@typo3.org>
Date: Mon, 14 Dec 2015 22:53:55 +0100
Subject: [PATCH] [BUGFIX] Workspace page previews collide with generated
 preview links

Workspace page previews collide with that configuration that might have
been set by using a preview link containing a ADMCMD_prev command. The
keyword "IGNORE" is introduced to actually ignore these configurations
when viewing a page from the workspace module.

Resolves: #72225
Releases: master, 7.6, 6.2
Change-Id: I6a73e860a76308028f0a3b1bcd182e41082adcd6
Reviewed-on: https://review.typo3.org/45253
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Mathias Schreiber <mathias.schreiber@wmdb.de>
Tested-by: Mathias Schreiber <mathias.schreiber@wmdb.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
---
 typo3/sysext/version/Classes/Hook/PreviewHook.php           | 4 ++--
 .../workspaces/Classes/Controller/PreviewController.php     | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/typo3/sysext/version/Classes/Hook/PreviewHook.php b/typo3/sysext/version/Classes/Hook/PreviewHook.php
index 39487feaf642..1fcf803312eb 100644
--- a/typo3/sysext/version/Classes/Hook/PreviewHook.php
+++ b/typo3/sysext/version/Classes/Hook/PreviewHook.php
@@ -152,8 +152,8 @@ class PreviewHook implements \TYPO3\CMS\Core\SingletonInterface
     public function getPreviewConfiguration()
     {
         $inputCode = $this->getPreviewInputCode();
-        // If inputcode is available, look up the settings
-        if ($inputCode) {
+        // If input code is available and shall not be ignored, look up the settings
+        if ($inputCode && $inputCode !== 'IGNORE') {
             // "log out"
             if ($inputCode == 'LOGOUT') {
                 setcookie($this->previewKey, '', 0, GeneralUtility::getIndpEnv('TYPO3_SITE_PATH'));
diff --git a/typo3/sysext/workspaces/Classes/Controller/PreviewController.php b/typo3/sysext/workspaces/Classes/Controller/PreviewController.php
index 2680ca7844ad..41e668535209 100644
--- a/typo3/sysext/workspaces/Classes/Controller/PreviewController.php
+++ b/typo3/sysext/workspaces/Classes/Controller/PreviewController.php
@@ -138,11 +138,11 @@ class PreviewController extends AbstractController
         if (\TYPO3\CMS\Workspaces\Service\WorkspaceService::isNewPage($this->pageId)) {
             $wsNewPageUri = $uriBuilder->uriFor('newPage', array(), \TYPO3\CMS\Workspaces\Controller\PreviewController::class, 'workspaces', 'web_workspacesworkspaces');
             $wsNewPageParams = '&tx_workspaces_web_workspacesworkspaces[controller]=Preview';
-            $this->view->assign('liveUrl', $wsSettingsPath . $wsNewPageUri . $wsNewPageParams);
+            $this->view->assign('liveUrl', $wsSettingsPath . $wsNewPageUri . $wsNewPageParams . '&ADMCMD_prev=IGNORE');
         } else {
-            $this->view->assign('liveUrl', $wsBaseUrl . '&ADMCMD_noBeUser=1');
+            $this->view->assign('liveUrl', $wsBaseUrl . '&ADMCMD_noBeUser=1&ADMCMD_prev=IGNORE');
         }
-        $this->view->assign('wsUrl', $wsBaseUrl . '&ADMCMD_view=1&ADMCMD_editIcons=1&ADMCMD_previewWS=' . $GLOBALS['BE_USER']->workspace);
+        $this->view->assign('wsUrl', $wsBaseUrl . '&ADMCMD_prev=IGNORE&ADMCMD_view=1&ADMCMD_editIcons=1&ADMCMD_previewWS=' . $GLOBALS['BE_USER']->workspace);
         $this->view->assign('wsSettingsUrl', $wsSettingsUrl);
         $this->view->assign('backendDomain', GeneralUtility::getIndpEnv('TYPO3_HOST_ONLY'));
         $splitPreviewTsConfig = BackendUtility::getModTSconfig($this->pageId, 'workspaces.splitPreviewModes');
-- 
GitLab