From 8f081ee0764942360576aac5ee5e7f862b2f5e3a Mon Sep 17 00:00:00 2001
From: Christian Rath-Ulrich <christian@rath-ulrich.de>
Date: Wed, 12 Jun 2024 11:27:40 +0200
Subject: [PATCH] [BUGFIX] Change list of (dis)allowed file extensions to ul li

Resolves: #104065
Releases: main, 12.4
Change-Id: I48c121620bf84a9444ff3c9d79d1adfd1fa631f3
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84655
Tested-by: core-ci <typo3@b13.com>
Tested-by: Andreas Nedbal <andy@pixelde.su>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Tested-by: Oliver Bartsch <bo@cedev.de>
Tested-by: Michael Telgkamp <michael.telgkamp@mindscreen.de>
Reviewed-by: Andreas Nedbal <andy@pixelde.su>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Michael Telgkamp <michael.telgkamp@mindscreen.de>
---
 Build/Sources/Sass/component/_form.scss        |  6 ++++++
 .../Classes/View/FolderUtilityRenderer.php     | 10 +++++-----
 .../Templates/Form/FilesControlContainer.html  | 16 ++++++++++------
 .../backend/Resources/Public/Css/backend.css   |  1 +
 .../Private/Templates/File/CreateFile.html     | 18 +++++++++++-------
 5 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/Build/Sources/Sass/component/_form.scss b/Build/Sources/Sass/component/_form.scss
index 336e72bc0eb5..34921f9e147f 100644
--- a/Build/Sources/Sass/component/_form.scss
+++ b/Build/Sources/Sass/component/_form.scss
@@ -69,6 +69,12 @@
     margin-bottom: var(--typo3-spacing);
 }
 
+.form-text {
+    .file-extension-list {
+        padding-left: 0;
+    }
+}
+
 .form-group-dashed {
     & + .form-group-dashed {
         padding-top: var(--typo3-spacing);
diff --git a/typo3/sysext/backend/Classes/View/FolderUtilityRenderer.php b/typo3/sysext/backend/Classes/View/FolderUtilityRenderer.php
index 13aec52c0b04..313f7aa42037 100644
--- a/typo3/sysext/backend/Classes/View/FolderUtilityRenderer.php
+++ b/typo3/sysext/backend/Classes/View/FolderUtilityRenderer.php
@@ -125,7 +125,7 @@ class FolderUtilityRenderer
         $fileNameVerifier = GeneralUtility::makeInstance(FileNameValidator::class);
         foreach ($list as $fileExt) {
             if (($fileExt === '*' && !$denyList) || $fileNameVerifier->isValid('.' . $fileExt)) {
-                $allowedOnlineMediaList[] = '<span class="badge badge-' . ($denyList ? 'danger' : 'success') . '">' . strtoupper(htmlspecialchars($fileExt)) . '</span>';
+                $allowedOnlineMediaList[] = '<li class="badge badge-' . ($denyList ? 'danger' : 'success') . '">' . strtoupper(htmlspecialchars($fileExt)) . '</li>';
             }
         }
         $markup = [];
@@ -134,7 +134,7 @@ class FolderUtilityRenderer
             $markup[] = '    <label>';
             $markup[] = htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.' . ($denyList ? 'disallowedFileExtensions' : 'allowedFileExtensions'))) . '<br/>';
             $markup[] = '    </label>';
-            $markup[] = '    <div>' . implode(' ', $allowedOnlineMediaList) . '</div>';
+            $markup[] = '    <ul>' . implode(' ', $allowedOnlineMediaList) . '</ul>';
             $markup[] = '</div>';
         }
 
@@ -177,7 +177,7 @@ class FolderUtilityRenderer
             if ($fileNameVerifier->isValid('.' . $supportedFileExtension)
                 && ($fileExtensionFilter === null || $fileExtensionFilter->isAllowed($supportedFileExtension))
             ) {
-                $allowedOnlineMediaList[$supportedFileExtension] = '<span class="badge badge-success">' . strtoupper(htmlspecialchars($supportedFileExtension)) . '</span>';
+                $allowedOnlineMediaList[$supportedFileExtension] = '<li class="badge badge-success">' . strtoupper(htmlspecialchars($supportedFileExtension)) . '</li>';
             }
         }
         if (!empty($allowedOnlineMediaList)) {
@@ -202,9 +202,9 @@ class FolderUtilityRenderer
             $markup[] = '<div class="col-auto">';
             $markup[] = $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:online_media.new_media.allowedProviders');
             $markup[] = '</div>';
-            $markup[] = '<div class="col">';
+            $markup[] = '<ul>';
             $markup[] = implode(' ', $allowedOnlineMediaList);
-            $markup[] = '</div>';
+            $markup[] = '</ul>';
             $markup[] = '</div>';
             $markup[] = '</div>';
             $markup[] = '</form>';
diff --git a/typo3/sysext/backend/Resources/Private/Templates/Form/FilesControlContainer.html b/typo3/sysext/backend/Resources/Private/Templates/Form/FilesControlContainer.html
index 309fd9442379..e448f95cc4c9 100644
--- a/typo3/sysext/backend/Resources/Private/Templates/Form/FilesControlContainer.html
+++ b/typo3/sysext/backend/Resources/Private/Templates/Form/FilesControlContainer.html
@@ -16,15 +16,19 @@
                 <f:if condition="{allowedFileExtensions}">
                     <f:then>
                         <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.allowedFileExtensions"/><br>
-                        <f:for each="{allowedFileExtensions}" as="allowedFileExtension">
-                            <span class="badge badge-success">{allowedFileExtension}</span>
-                        </f:for>
+                        <ul class="file-extension-list">
+                            <f:for each="{allowedFileExtensions}" as="allowedFileExtension">
+                                <li class="badge badge-success">{allowedFileExtension}</li>
+                            </f:for>
+                        </ul>
                     </f:then>
                     <f:else if="{disallowedFileExtensions}">
                         <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.disallowedFileExtensions"/><br>
-                        <f:for each="{disallowedFileExtensions}" as="disallowedFileExtension">
-                            <span class="badge badge-danger">{disallowedFileExtension}</span>
-                        </f:for>
+                        <ul>
+                            <f:for each="{disallowedFileExtensions}" as="disallowedFileExtension">
+                                <li class="badge badge-danger">{disallowedFileExtension}</li>
+                            </f:for>
+                        </ul>
                     </f:else>
                 </f:if>
             </div>
diff --git a/typo3/sysext/backend/Resources/Public/Css/backend.css b/typo3/sysext/backend/Resources/Public/Css/backend.css
index 3ebfa391b74c..0138ff019206 100644
--- a/typo3/sysext/backend/Resources/Public/Css/backend.css
+++ b/typo3/sysext/backend/Resources/Public/Css/backend.css
@@ -3682,6 +3682,7 @@ a.card:hover{--typo3-card-border-color:var(--typo3-card-hover-border-color);text
 .form-description{opacity:.75;margin-bottom:.5rem}
 .form-label+.form-description{margin-top:-.25rem}
 .form-group{margin-bottom:var(--typo3-spacing)}
+.form-text .file-extension-list{padding-left:0}
 .form-group-dashed+.form-group-dashed{padding-top:var(--typo3-spacing);border-top:1px dashed rgba(0,0,0,.15)}
 .form-group-search-result{padding-bottom:7px}
 .form-wizard-icon-list{color-scheme:light dark;color:var(--typo3-component-color);background:var(--typo3-component-bg);border:var(--typo3-component-border-width) solid var(--typo3-component-border-color);border-radius:var(--bs-border-radius);margin-top:.25rem;padding:calc(var(--typo3-spacing)/ 4);display:flex;flex-wrap:wrap;gap:2px}
diff --git a/typo3/sysext/filelist/Resources/Private/Templates/File/CreateFile.html b/typo3/sysext/filelist/Resources/Private/Templates/File/CreateFile.html
index d3a95bf59929..1e214474ea80 100644
--- a/typo3/sysext/filelist/Resources/Private/Templates/File/CreateFile.html
+++ b/typo3/sysext/filelist/Resources/Private/Templates/File/CreateFile.html
@@ -22,10 +22,12 @@
                                 <input required class="form-control" type="text" id="newMedia" name="data[newMedia][0][url]"
                                     placeholder="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:online_media.new_media.placeholder')}" />
                                 <div class="form-text">
-                                    <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:online_media.new_media.allowedProviders" /><br>
-                                    <f:for each="{fileExtList}" as="fileExt">
-                                        <span class="badge badge-success">{fileExt}</span>
-                                    </f:for>
+                                    <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:online_media.new_media.allowedProviders" />
+                                    <ul class="file-extension-list">
+                                        <f:for each="{fileExtList}" as="fileExt">
+                                            <li class="badge badge-success">{fileExt}</li>
+                                        </f:for>
+                                    </ul>
                                 </div>
                             </div>
                         </div>
@@ -50,9 +52,11 @@
                                 <input required class="form-control" type="text" id="newfile" name="data[newfile][0][data]" />
                                 <div class="form-text">
                                     <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:cm.allowedEditableTextFileExtensions" /><br>
-                                    <f:for each="{txtFileExtList}" as="fileExt">
-                                        <span class="badge badge-success">{fileExt}</span>
-                                    </f:for>
+                                    <ul class="file-extension-list">
+                                        <f:for each="{txtFileExtList}" as="fileExt">
+                                            <li class="badge badge-success">{fileExt}</li>
+                                        </f:for>
+                                    </ul>
                                 </div>
                             </div>
                         </div>
-- 
GitLab