From d3de5d553ccb70e0aa93bd94b8b8ee65186101da Mon Sep 17 00:00:00 2001
From: Oliver Hader <oliver@typo3.org>
Date: Wed, 28 May 2014 15:42:21 +0200
Subject: [PATCH] [BUGFIX] Preview of moved workspace elements on source page

If e.g. a content element gets moved to a different page, the
workspace preview link opens the source page (which does not
contain the element anymore, because it was moved).

Since the elements are shown on the correct page in the
workspace backend module, using the target page in the preview
link for the frontend is just obvious.

Resolves: #59143
Releases: 6.2
Change-Id: Ib84e65766e825cc26a66cbda9ffa8132c3a3ec18
Reviewed-on: https://review.typo3.org/30474
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
---
 .../sysext/workspaces/Classes/Service/WorkspaceService.php  | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/typo3/sysext/workspaces/Classes/Service/WorkspaceService.php b/typo3/sysext/workspaces/Classes/Service/WorkspaceService.php
index da98278ec752..3adfb30ce6f6 100644
--- a/typo3/sysext/workspaces/Classes/Service/WorkspaceService.php
+++ b/typo3/sysext/workspaces/Classes/Service/WorkspaceService.php
@@ -528,7 +528,11 @@ class WorkspaceService implements \TYPO3\CMS\Core\SingletonInterface {
 			if ($versionRecord === NULL) {
 				$versionRecord = BackendUtility::getRecord($table, $uid);
 			}
+			if (VersionState::cast($versionRecord['t3ver_state'])->equals(VersionState::MOVE_POINTER)) {
+				$movePlaceholder = BackendUtility::getMovePlaceholder($table, $liveRecord['uid'], 'pid');
+			}
 
+			$previewPageId = (empty($movePlaceholder['pid']) ? $liveRecord['pid'] : $movePlaceholder['pid']);
 			$additionalParameters = '&tx_workspaces_web_workspacesworkspaces[previewWS]=' . $versionRecord['t3ver_wsid'];
 
 			$languageField = $GLOBALS['TCA'][$table]['ctrl']['languageField'];
@@ -536,7 +540,7 @@ class WorkspaceService implements \TYPO3\CMS\Core\SingletonInterface {
 				$additionalParameters .= '&L=' . $versionRecord[$languageField];
 			}
 
-			$viewUrl = BackendUtility::viewOnClick($liveRecord['pid'], '', '', '', '', $additionalParameters);
+			$viewUrl = BackendUtility::viewOnClick($previewPageId, '', '', '', '', $additionalParameters);
 		} else {
 			if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['workspaces']['viewSingleRecord'])) {
 				$_params = array(
-- 
GitLab