From 026e0f46f0241341db7b8942ddb4cbecf106cff6 Mon Sep 17 00:00:00 2001
From: 11nd11 <typo3@andreassteiger.de>
Date: Fri, 13 Aug 2021 11:21:26 +0200
Subject: [PATCH] [TASK] Show full readable path of allowedFileMounts
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The label of the select field 'allowedFileMounts' in the form
wizard has been optimized. Now, the label is more readable and
less technical.

Resolves: #91627
Releases: master
Change-Id: Iee18a47901a6d1c63184c68d5c4a888c3d4f0e15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/70540
Tested-by: Björn Jacob <bjoern.jacob@tritum.de>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Andreas Steiger <typo3@andreassteiger.de>
Tested-by: waldhacker <hello@waldhacker.dev>
Reviewed-by: Björn Jacob <bjoern.jacob@tritum.de>
Reviewed-by: Andreas Steiger <typo3@andreassteiger.de>
Reviewed-by: Guido Schmechel <guido.schmechel@brandung.de>
Reviewed-by: waldhacker <hello@waldhacker.dev>
---
 .../Controller/FormManagerController.php      |  2 +-
 .../Public/JavaScript/Backend/FormManager.js  |  2 +-
 .../Controller/FormManagerControllerTest.php  | 26 ++++++++++++-------
 3 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/typo3/sysext/form/Classes/Controller/FormManagerController.php b/typo3/sysext/form/Classes/Controller/FormManagerController.php
index 2fbdc511b131..ae0ba98f6f97 100644
--- a/typo3/sysext/form/Classes/Controller/FormManagerController.php
+++ b/typo3/sysext/form/Classes/Controller/FormManagerController.php
@@ -360,7 +360,7 @@ class FormManagerController extends AbstractBackendController
         $preparedAccessibleFormStorageFolders = [];
         foreach ($this->formPersistenceManager->getAccessibleFormStorageFolders() as $identifier => $folder) {
             $preparedAccessibleFormStorageFolders[] = [
-                'label' => $folder->getName(),
+                'label' => $folder->getStorage()->isPublic() ? $folder->getPublicUrl() : $identifier,
                 'value' => $identifier
             ];
         }
diff --git a/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormManager.js b/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormManager.js
index 660bd1484cd2..fa6df85354a2 100644
--- a/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormManager.js
+++ b/typo3/sysext/form/Resources/Public/JavaScript/Backend/FormManager.js
@@ -129,7 +129,7 @@ define(['jquery'], function($) {
         if ('array' === $.type(_configuration['accessibleFormStorageFolders'])) {
           for (var i = 0, len1 = _configuration['accessibleFormStorageFolders'].length; i < len1; ++i) {
             folders.push({
-              label: _configuration['accessibleFormStorageFolders'][i]['label'] + ' (' + _configuration['accessibleFormStorageFolders'][i]['value'] + ')',
+              label: _configuration['accessibleFormStorageFolders'][i]['label'],
               value: _configuration['accessibleFormStorageFolders'][i]['value']
             });
           }
diff --git a/typo3/sysext/form/Tests/Unit/Controller/FormManagerControllerTest.php b/typo3/sysext/form/Tests/Unit/Controller/FormManagerControllerTest.php
index 26895050e93d..d26a7f9e7fac 100644
--- a/typo3/sysext/form/Tests/Unit/Controller/FormManagerControllerTest.php
+++ b/typo3/sysext/form/Tests/Unit/Controller/FormManagerControllerTest.php
@@ -52,23 +52,29 @@ class FormManagerControllerTest extends UnitTestCase
 
         $formPersistenceManagerProphecy = $this->prophesize(FormPersistenceManager::class);
 
-        $mockStorage = $this->getMockBuilder(ResourceStorage::class)
-            ->disableOriginalConstructor()
-            ->getMock();
         $mockController->_set('formPersistenceManager', $formPersistenceManagerProphecy->reveal());
-
         $mockController->_set('formSettings', [
             'persistenceManager' => [
                 'allowSaveToExtensionPaths' => true,
             ],
         ]);
 
-        $folder1 = new Folder($mockStorage, '/user_upload/', 'user_upload');
-        $folder2 = new Folder($mockStorage, '/forms/', 'forms');
+        $storageProphecy1 = $this->prophesize(ResourceStorage::class);
+        $storageProphecy2 = $this->prophesize(ResourceStorage::class);
+
+        $storageProphecy1->isPublic()->willReturn(true);
+        $storageProphecy2->isPublic()->willReturn(false);
+
+        $folder1Prophecy = $this->prophesize(Folder::class);
+        $folder1Prophecy->getPublicUrl()->willReturn('/fileadmin/user_upload/');
+        $folder1Prophecy->getStorage()->willReturn($storageProphecy1->reveal());
+
+        $folder2Prophecy = $this->prophesize(Folder::class);
+        $folder2Prophecy->getStorage()->willReturn($storageProphecy2->reveal());
 
         $formPersistenceManagerProphecy->getAccessibleFormStorageFolders(Argument::cetera())->willReturn([
-            '1:/user_upload/' => $folder1,
-            '2:/forms/' => $folder2,
+            '1:/user_upload/' => $folder1Prophecy->reveal(),
+            '2:/forms/' => $folder2Prophecy->reveal(),
         ]);
 
         $formPersistenceManagerProphecy->getAccessibleExtensionFolders(Argument::cetera())->willReturn([
@@ -78,11 +84,11 @@ class FormManagerControllerTest extends UnitTestCase
 
         $expected = [
             0 => [
-                'label' => 'user_upload',
+                'label' => '/fileadmin/user_upload/',
                 'value' => '1:/user_upload/',
             ],
             1 => [
-                'label' => 'forms',
+                'label' => '2:/forms/',
                 'value' => '2:/forms/',
             ],
             2 => [
-- 
GitLab