From 61137e140ce0308f78b0cf39ca36d68978b24a9a Mon Sep 17 00:00:00 2001
From: Oliver Bartsch <bo@cedev.de>
Date: Tue, 11 Jul 2023 09:29:25 +0200
Subject: [PATCH] [BUGFIX] Apply sorting parameters on filelist initialization

TO be consistent through the backend, filelist
instances are used for all the various file
and folder browsers in the backend.

To enable sorting, the corresponding request
parameters are now properly applied on
initialization of the filelist instances.

Resolves: #101307
Releases: main, 12.4
Change-Id: I86409831abb7f553875806a7e4f0e91f8d71d58e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/79959
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Tested-by: Oliver Bartsch <bo@cedev.de>
---
 .../Classes/ElementBrowser/CreateFolderBrowser.php        | 8 +++++++-
 .../filelist/Classes/ElementBrowser/FolderBrowser.php     | 8 +++++++-
 .../filelist/Classes/LinkHandler/FileLinkHandler.php      | 8 +++++++-
 .../filelist/Classes/LinkHandler/FolderLinkHandler.php    | 8 +++++++-
 4 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/typo3/sysext/filelist/Classes/ElementBrowser/CreateFolderBrowser.php b/typo3/sysext/filelist/Classes/ElementBrowser/CreateFolderBrowser.php
index d438d883655c..34932650ef1a 100644
--- a/typo3/sysext/filelist/Classes/ElementBrowser/CreateFolderBrowser.php
+++ b/typo3/sysext/filelist/Classes/ElementBrowser/CreateFolderBrowser.php
@@ -67,7 +67,13 @@ class CreateFolderBrowser extends AbstractResourceBrowser
             $markup[] = '</div>';
 
             // Create the filelist
-            $this->filelist->start($this->selectedFolder, MathUtility::forceIntegerInRange($this->currentPage, 1, 100000), 'asc', false, Mode::BROWSE);
+            $this->filelist->start(
+                $this->selectedFolder,
+                MathUtility::forceIntegerInRange($this->currentPage, 1, 100000),
+                $this->getRequest()->getQueryParams()['sort'] ?? '',
+                ($this->getRequest()->getQueryParams()['reverse'] ?? '') === '1',
+                Mode::BROWSE
+            );
             $this->filelist->setResourceDisplayMatcher($this->resourceDisplayMatcher);
             $this->filelist->setResourceSelectableMatcher($this->resourceSelectableMatcher);
             $markup[] = $this->filelist->render(null, $this->view);
diff --git a/typo3/sysext/filelist/Classes/ElementBrowser/FolderBrowser.php b/typo3/sysext/filelist/Classes/ElementBrowser/FolderBrowser.php
index faef6896101f..4de14dc6a467 100644
--- a/typo3/sysext/filelist/Classes/ElementBrowser/FolderBrowser.php
+++ b/typo3/sysext/filelist/Classes/ElementBrowser/FolderBrowser.php
@@ -76,7 +76,13 @@ class FolderBrowser extends AbstractResourceBrowser
             $markup[] = '</div>';
 
             // Create the filelist
-            $this->filelist->start($this->selectedFolder, MathUtility::forceIntegerInRange($this->currentPage, 1, 100000), 'asc', false, Mode::BROWSE);
+            $this->filelist->start(
+                $this->selectedFolder,
+                MathUtility::forceIntegerInRange($this->currentPage, 1, 100000),
+                $this->getRequest()->getQueryParams()['sort'] ?? '',
+                ($this->getRequest()->getQueryParams()['reverse'] ?? '') === '1',
+                Mode::BROWSE
+            );
             $this->filelist->setResourceDisplayMatcher($this->resourceDisplayMatcher);
             $this->filelist->setResourceSelectableMatcher($this->resourceSelectableMatcher);
             $markup[] = $this->filelist->render(null, $this->view);
diff --git a/typo3/sysext/filelist/Classes/LinkHandler/FileLinkHandler.php b/typo3/sysext/filelist/Classes/LinkHandler/FileLinkHandler.php
index e33c3a0d4d43..41c1c6a6fbbc 100644
--- a/typo3/sysext/filelist/Classes/LinkHandler/FileLinkHandler.php
+++ b/typo3/sysext/filelist/Classes/LinkHandler/FileLinkHandler.php
@@ -71,7 +71,13 @@ class FileLinkHandler extends AbstractResourceLinkHandler
             $markup[] = '</div>';
 
             // Create the filelist
-            $this->filelist->start($this->selectedFolder, MathUtility::forceIntegerInRange($this->currentPage, 1, 100000), 'asc', false, Mode::BROWSE);
+            $this->filelist->start(
+                $this->selectedFolder,
+                MathUtility::forceIntegerInRange($this->currentPage, 1, 100000),
+                $request->getQueryParams()['sort'] ?? '',
+                ($request->getQueryParams()['reverse'] ?? '') === '1',
+                Mode::BROWSE
+            );
             $this->filelist->setResourceDisplayMatcher($this->resourceDisplayMatcher);
             $this->filelist->setResourceSelectableMatcher($this->resourceSelectableMatcher);
 
diff --git a/typo3/sysext/filelist/Classes/LinkHandler/FolderLinkHandler.php b/typo3/sysext/filelist/Classes/LinkHandler/FolderLinkHandler.php
index 228ec29898ee..a9a346cbd121 100644
--- a/typo3/sysext/filelist/Classes/LinkHandler/FolderLinkHandler.php
+++ b/typo3/sysext/filelist/Classes/LinkHandler/FolderLinkHandler.php
@@ -58,7 +58,13 @@ class FolderLinkHandler extends AbstractResourceLinkHandler
             $markup[] = '</div>';
 
             // Create the filelist
-            $this->filelist->start($this->selectedFolder, MathUtility::forceIntegerInRange($this->currentPage, 1, 100000), 'asc', false, Mode::BROWSE);
+            $this->filelist->start(
+                $this->selectedFolder,
+                MathUtility::forceIntegerInRange($this->currentPage, 1, 100000),
+                $request->getQueryParams()['sort'] ?? '',
+                ($request->getQueryParams()['reverse'] ?? '') === '1',
+                Mode::BROWSE
+            );
             $this->filelist->setResourceDisplayMatcher($this->resourceDisplayMatcher);
             $this->filelist->setResourceSelectableMatcher($this->resourceSelectableMatcher);
 
-- 
GitLab