diff --git a/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php b/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php index 68898d8257d3f470262de823428f8c892200a7b6..da17237dd0e2f26de4acc64e323a1e1ff6e0d896 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 b4045c5fbe37c6ab959ff7bbff9158ad6aa34246..2bf66a9bd5d760ca42befe5d7b7cb1d26e7506bf 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 b65d4fde094ca62bff4bec0b29fcd731a093ebb9..ca212c1e6e708ba66e9439d53add59e8cd4a7b84 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);