From 9f8790471ea40e04199d8a233e135d2016080554 Mon Sep 17 00:00:00 2001 From: Benni Mack <benni@typo3.org> Date: Wed, 29 Nov 2017 09:48:00 +0100 Subject: [PATCH] [BUGFIX] Allow to upload online media via file list It was not possible due to a form name mixup to add online media files via the FileList in TYPO3 v9 anymore. Related: #82436 Related: #81763 Resolves: #83151 Releases: master Change-Id: Ica0ed049f685bf20b98f0a599adf61ec3874017a Reviewed-on: https://review.typo3.org/54847 Reviewed-by: Andreas Fernandez <typo3@scripting-base.de> Tested-by: Andreas Fernandez <typo3@scripting-base.de> Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Susanne Moog <susanne.moog@typo3.org> Tested-by: Susanne Moog <susanne.moog@typo3.org> --- .../Controller/OnlineMediaController.php | 19 ++++++++++--------- .../Private/Templates/File/CreateFolder.html | 2 +- .../Classes/View/FolderUtilityRenderer.php | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php b/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php index 68898d8257d3..da17237dd0e2 100644 --- a/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php +++ b/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php @@ -16,6 +16,7 @@ namespace TYPO3\CMS\Backend\Controller; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use TYPO3\CMS\Core\Http\RedirectResponse; use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Messaging\FlashMessageService; @@ -56,15 +57,15 @@ class OnlineMediaController } /** - * Process add media request + * Process add media request, and redirects to the previous page * * @param ServerRequestInterface $request - * @param ResponseInterface $response * @return ResponseInterface */ - public function mainAction(ServerRequestInterface $request, ResponseInterface $response) + public function mainAction(ServerRequestInterface $request) { - $files = $request->getParsedBody()['file']; + $files = $request->getParsedBody()['data']; + $redirect = $request->getParsedBody()['redirect']; $newMedia = []; if (isset($files['newMedia'])) { $newMedia = (array)$files['newMedia']; @@ -92,18 +93,18 @@ class OnlineMediaController ); } $this->addFlashMessage($flashMessage); + if (empty($redirect) && $media['redirect']) { + $redirect = $media['redirect']; + } } } - $redirect = isset($request->getParsedBody()['redirect']) ? $request->getParsedBody()['redirect'] : $request->getQueryParams()['redirect']; $redirect = GeneralUtility::sanitizeLocalUrl($redirect); if ($redirect) { - $response = $response - ->withHeader('Location', GeneralUtility::locationHeaderUrl($redirect)) - ->withStatus(303); + return new RedirectResponse($redirect, 303); } - return $response; + throw new \RuntimeException('No redirect after uploading a media found, probably a mis-use of the template not sending the proper Return URL.', 1511945040); } /** diff --git a/typo3/sysext/backend/Resources/Private/Templates/File/CreateFolder.html b/typo3/sysext/backend/Resources/Private/Templates/File/CreateFolder.html index b4045c5fbe37..2bf66a9bd5d7 100644 --- a/typo3/sysext/backend/Resources/Private/Templates/File/CreateFolder.html +++ b/typo3/sysext/backend/Resources/Private/Templates/File/CreateFolder.html @@ -62,7 +62,7 @@ </div> <div class="form-group"> <input class="btn btn-default" type="submit" value="{f:translate(key: 'LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:online_media.new_media.submit')}" /> - <input type="hidden" name="data[newMedia][0][redirect]" value="{returnUrl}" /> + <input type="hidden" name="redirect" value="{returnUrl}" /> </div> </div> </form> diff --git a/typo3/sysext/recordlist/Classes/View/FolderUtilityRenderer.php b/typo3/sysext/recordlist/Classes/View/FolderUtilityRenderer.php index b65d4fde094c..ca212c1e6e70 100644 --- a/typo3/sysext/recordlist/Classes/View/FolderUtilityRenderer.php +++ b/typo3/sysext/recordlist/Classes/View/FolderUtilityRenderer.php @@ -219,7 +219,7 @@ class FolderUtilityRenderer $markup[] = implode(' ', $fileExtList); $markup[] = '</div>'; $markup[] = '</div>'; - $markup[] = '<input type="hidden" name="data[newMedia][0][redirect]" value="' . htmlspecialchars($redirectValue) . '" />'; + $markup[] = '<input type="hidden" name="redirect" value="' . htmlspecialchars($redirectValue) . '" />'; $markup[] = '</form>'; $code .= implode(LF, $markup); -- GitLab