From 7e5e44a61a369718659aa36832d6a820441947f9 Mon Sep 17 00:00:00 2001 From: Christian Kuhn <lolli@schwarzbu.ch> Date: Wed, 30 Aug 2023 16:21:22 +0200 Subject: [PATCH] [BUGFIX] Fix stage changing in workspace preview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changing stages using the various buttons in workspace preview module fatals server side since the request is incomplete. This is mainly due to the weird ajax dispatching from class AjaxDispatcher to ActionHandler: This area needs a major overhaul. However, patch for issue #100577 already introduced a hack to hand the current request down. The patch re-uses this to fix the issue. Resolves: #101802 Related: #101781 Related: #96904 Related: #100577 Releases: main, 12.4 Change-Id: Ifacf653ed0409891469a168c7bc0c38eaacf183f Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80760 Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: core-ci <typo3@b13.com> Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by: Stefan B�rk <stefan@buerk.tech> Reviewed-by: Stefan B�rk <stefan@buerk.tech> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> --- .../workspaces/Classes/Controller/Remote/ActionHandler.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/typo3/sysext/workspaces/Classes/Controller/Remote/ActionHandler.php b/typo3/sysext/workspaces/Classes/Controller/Remote/ActionHandler.php index 84465def9a4d..cb141f5227a9 100644 --- a/typo3/sysext/workspaces/Classes/Controller/Remote/ActionHandler.php +++ b/typo3/sysext/workspaces/Classes/Controller/Remote/ActionHandler.php @@ -17,11 +17,11 @@ declare(strict_types=1); namespace TYPO3\CMS\Workspaces\Controller\Remote; +use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Backend\Utility\BackendUtility; use TYPO3\CMS\Backend\View\BackendViewFactory; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\DataHandling\DataHandler; -use TYPO3\CMS\Core\Http\ServerRequest; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\MathUtility; @@ -756,7 +756,7 @@ class ActionHandler * Fetch the current label and visible state of the stage buttons. * Used when records have been pushed to different stages in the preview module to update the button phalanx. */ - public function updateStageChangeButtons(int $id): string + public function updateStageChangeButtons(int $id, ServerRequestInterface $request): string { // Fetch next and previous stage $workspaceItemsArray = $this->workspaceService->selectVersionsInWorkspace( @@ -768,8 +768,7 @@ class ActionHandler ); [, $nextStage] = $this->stagesService->getNextStageForElementCollection($workspaceItemsArray); [, $previousStage] = $this->stagesService->getPreviousStageForElementCollection($workspaceItemsArray); - // @todo: It would of course be better if AjaxDispatcher could hand over $request to the method ... - $view = $this->backendViewFactory->create(new ServerRequest(), ['typo3/cms-workspaces']); + $view = $this->backendViewFactory->create($request, ['typo3/cms-workspaces']); $view->assignMultiple([ 'enablePreviousStageButton' => is_array($previousStage) && !empty($previousStage), 'enableNextStageButton' => is_array($nextStage) && !empty($nextStage), -- GitLab