From a81fb8a596ddb4103417b6d02a6846561107a1b2 Mon Sep 17 00:00:00 2001
From: Andreas Fernandez <a.fernandez@scripting-base.de>
Date: Sun, 10 Sep 2017 11:46:21 +0200
Subject: [PATCH] [BUGFIX] Fix file upload and directory creation in file
 browser

While #81763 was in development, some locations of the file operation
handling were not adjusted. This patch fixes the left over places.

Resolves: #82436
Related: #81763
Releases: master
Change-Id: I450458f5ef687969b22a194a2387953330b8d17d
Reviewed-on: https://review.typo3.org/54094
Tested-by: Riccardo De Contardi <erredeco@gmail.com>
Reviewed-by: Benjamin Kott <benjamin.kott@outlook.com>
Tested-by: Benjamin Kott <benjamin.kott@outlook.com>
Reviewed-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
Tested-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
---
 .../Classes/Controller/File/FileController.php   |  3 ++-
 .../Controller/File/FileUploadController.php     |  2 +-
 .../Private/Templates/File/CreateFolder.html     |  6 +++---
 .../Private/Templates/File/ReplaceFile.html      |  8 ++++----
 .../Classes/View/FolderUtilityRenderer.php       | 16 ++++++++--------
 5 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/typo3/sysext/backend/Classes/Controller/File/FileController.php b/typo3/sysext/backend/Classes/Controller/File/FileController.php
index 1c862bacf38e..a9ec9cdada08 100644
--- a/typo3/sysext/backend/Classes/Controller/File/FileController.php
+++ b/typo3/sysext/backend/Classes/Controller/File/FileController.php
@@ -98,7 +98,8 @@ class FileController
             $this->redirect = GeneralUtility::sanitizeLocalUrl(GeneralUtility::_GP('redirect'));
         } else {
             $mode = key($this->file);
-            $this->redirect = GeneralUtility::sanitizeLocalUrl($this->file[$mode][0]['redirect']);
+            $elementKey = key($this->file[$mode]);
+            $this->redirect = GeneralUtility::sanitizeLocalUrl($this->file[$mode][$elementKey]['redirect']);
         }
         $this->CB = GeneralUtility::_GP('CB');
 
diff --git a/typo3/sysext/backend/Classes/Controller/File/FileUploadController.php b/typo3/sysext/backend/Classes/Controller/File/FileUploadController.php
index dd899779d7fd..03fcbebde0fb 100644
--- a/typo3/sysext/backend/Classes/Controller/File/FileUploadController.php
+++ b/typo3/sysext/backend/Classes/Controller/File/FileUploadController.php
@@ -189,7 +189,7 @@ class FileUploadController extends AbstractModule
         // Submit button:
         $content .= '
 			<div id="c-submit">
-				<input type="hidden" name="redirect" value="' . $this->returnUrl . '" /><br />
+				<input type="hidden" name="data[upload][1][redirect]" value="' . $this->returnUrl . '" /><br />
 				<input class="btn btn-default" type="submit" value="' . htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:file_upload.php.submit')) . '" />
 			</div>
 		';
diff --git a/typo3/sysext/backend/Resources/Private/Templates/File/CreateFolder.html b/typo3/sysext/backend/Resources/Private/Templates/File/CreateFolder.html
index 01e652ec45b8..b4045c5fbe37 100644
--- a/typo3/sysext/backend/Resources/Private/Templates/File/CreateFolder.html
+++ b/typo3/sysext/backend/Resources/Private/Templates/File/CreateFolder.html
@@ -47,9 +47,9 @@
                         <div class="form-group">
                             <label for="newMedia"><f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:online_media.new_media.label" /></label> {cshFileNewMedia -> f:format.raw()}
                             <div class="form-control-wrap">
-                                <input class="form-control" type="text" id="newMedia" name="file[newMedia][0][url]"
+                                <input class="form-control" type="text" id="newMedia" name="data[newMedia][0][url]"
                                        placeholder="{f:translate(key: 'LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:online_media.new_media.placeholder')}" />
-                                <input type="hidden" name="file[newMedia][0][target]" value="{target}" />
+                                <input type="hidden" name="data[newMedia][0][target]" value="{target}" />
                             </div>
                             <div class="help-block">
                                 <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:online_media.new_media.allowedProviders" /><br>
@@ -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="redirect" value="{returnUrl}" />
+                    <input type="hidden" name="data[newMedia][0][redirect]" value="{returnUrl}" />
                 </div>
             </div>
         </form>
diff --git a/typo3/sysext/backend/Resources/Private/Templates/File/ReplaceFile.html b/typo3/sysext/backend/Resources/Private/Templates/File/ReplaceFile.html
index c4b7026ecb80..522512d2ea9e 100644
--- a/typo3/sysext/backend/Resources/Private/Templates/File/ReplaceFile.html
+++ b/typo3/sysext/backend/Resources/Private/Templates/File/ReplaceFile.html
@@ -2,7 +2,7 @@
 <div>
     <form action="{moduleUrlTceFile}" role="form" method="post" name="editform" enctype="multipart/form-data">
     <div class="form-group">
-        <input type="checkbox" value="1" id="keepFilename" name="file[replace][1][keepFilename]">
+        <input type="checkbox" value="1" id="keepFilename" name="data[replace][1][keepFilename]">
         <label for="keepFilename"><f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:file_replace.php.keepfiletitle" /></label>
     </div>
 
@@ -24,14 +24,14 @@
     </script>
 
     <input type="hidden" name="overwriteExistingFiles" value="replace" />
-    <input type="hidden" name="file[replace][1][data]" value="1" />
-    <input type="hidden" name="file[replace][1][uid]" value="{uid}" />
+    <input type="hidden" name="data[replace][1][data]" value="1" />
+    <input type="hidden" name="data[replace][1][uid]" value="{uid}" />
 
     <div class="form-group">
         <input class="btn btn-primary" type="submit" value="{f:translate(key: 'LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:file_replace.php.submit')}" />
         <input class="btn btn-danger" type="submit" value="{f:translate(key: 'LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:labels.cancel')}"
              onclick="backToList(); return false;" />
-        <input type="hidden" name="redirect" value="{returnUrl}" />
+        <input type="hidden" name="data[replace][1][redirect]" value="{returnUrl}" />
     </div>
     </form>
 </div>
diff --git a/typo3/sysext/recordlist/Classes/View/FolderUtilityRenderer.php b/typo3/sysext/recordlist/Classes/View/FolderUtilityRenderer.php
index 232765eb3d8e..b65d4fde094c 100644
--- a/typo3/sysext/recordlist/Classes/View/FolderUtilityRenderer.php
+++ b/typo3/sysext/recordlist/Classes/View/FolderUtilityRenderer.php
@@ -74,13 +74,13 @@ class FolderUtilityRenderer
         $a = 1;
         $markup[] = '<div class="form-group">';
         $markup[] = '<div class="input-group">';
-        $markup[] = '<input class="form-control" type="text" name="file[newfolder][' . $a . '][data]" />';
+        $markup[] = '<input class="form-control" type="text" name="data[newfolder][' . $a . '][data]" />';
         $markup[] = '<span class="input-group-btn">';
         $markup[] = '<input class="btn btn-default" type="submit" name="submit" value="'
             . htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:create_folder.submit')) . '" />';
         $markup[] = '</span>';
         $markup[] = '</div>';
-        $markup[] = '<input type="hidden" name="file[newfolder][' . $a . '][target]" value="'
+        $markup[] = '<input type="hidden" name="data[newfolder][' . $a . '][target]" value="'
             . htmlspecialchars($folderObject->getCombinedIdentifier()) . '" />';
 
         // Make footer of upload form, including the submit button:
@@ -90,7 +90,7 @@ class FolderUtilityRenderer
                 ['identifier' => $folderObject->getCombinedIdentifier()]
             )
         );
-        $markup[] = '<input type="hidden" name="redirect" value="' . htmlspecialchars($redirectValue) . '" />';
+        $markup[] = '<input type="hidden" name="data[newfolder][' . $a . '][redirect]" value="' . htmlspecialchars($redirectValue) . '" />';
 
         $markup[] = '</div></form>';
 
@@ -152,7 +152,7 @@ class FolderUtilityRenderer
             '',
             $this->parameterProvider->getUrlParameters(['identifier' => $combinedIdentifier])
         );
-        $markup[] = '<input type="hidden" name="redirect" value="' . htmlspecialchars($redirectValue) . '" />';
+        $markup[] = '<input type="hidden" name="data[upload][1][redirect]" value="' . htmlspecialchars($redirectValue) . '" />';
 
         if (!empty($fileExtList)) {
             $markup[] = '<div class="form-group">';
@@ -199,12 +199,12 @@ class FolderUtilityRenderer
             $markup[] = '<h3>' . htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:online_media.new_media')) . ':</h3>';
             $markup[] = '<p><strong>' . htmlspecialchars($lang->getLL('path')) . ':</strong>' . htmlspecialchars($header) . '</p>';
             $markup[] = '<div class="form-group">';
-            $markup[] = '<input type="hidden" name="file[newMedia][0][target]" value="'
+            $markup[] = '<input type="hidden" name="data[newMedia][0][target]" value="'
                 . htmlspecialchars($folderObject->getCombinedIdentifier()) . '" />';
-            $markup[] = '<input type="hidden" name="file[newMedia][0][allowed]" value="'
+            $markup[] = '<input type="hidden" name="data[newMedia][0][allowed]" value="'
                 . htmlspecialchars(implode(',', $allowedExtensions)) . '" />';
             $markup[] = '<div class="input-group">';
-            $markup[] = '<input type="text" name="file[newMedia][0][url]" class="form-control" placeholder="'
+            $markup[] = '<input type="text" name="data[newMedia][0][url]" class="form-control" placeholder="'
                 . htmlspecialchars($lang->sL('LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:online_media.new_media.placeholder')) . '" />';
             $markup[] = '<div class="input-group-btn">';
             $markup[] = '<button class="btn btn-default">'
@@ -219,7 +219,7 @@ class FolderUtilityRenderer
             $markup[] = implode(' ', $fileExtList);
             $markup[] = '</div>';
             $markup[] = '</div>';
-            $markup[] = '<input type="hidden" name="redirect" value="' . htmlspecialchars($redirectValue) . '" />';
+            $markup[] = '<input type="hidden" name="data[newMedia][0][redirect]" value="' . htmlspecialchars($redirectValue) . '" />';
             $markup[] = '</form>';
 
             $code .= implode(LF, $markup);
-- 
GitLab