[TASK] Remove hardcoded module name in AbstractDatabaseRecordList 49/27049/7
authorMarcin Sągol <kontakt@soee.pl>
Fri, 24 Jan 2014 23:12:38 +0000 (00:12 +0100)
committerMarkus Klein <klein.t3@mfc-linz.at>
Tue, 15 Apr 2014 01:34:12 +0000 (03:34 +0200)
TYPO3 Fluid offers view helper TableListViewHelper to generate
records list in backend modules. When pagination is rendered
for this list all links (previous, next etc.) redirect to
List module but they should point to current backend module.
Reason of this behaviour is hardcoded module name in listURL()
function.

This patch replaces hardcoded module name with the M
parameter from GET array. Extbase modules require also
controller and action name in url's so all GET params
are merged with this defined in listURL() function. We are
using all GET params because module might require more
than controller and action name for other elements than
records list.

Resolves: #55314
Releases: 6.2
Change-Id: I706cf99838620c961e1b3f7af667d0c6ba447077
Reviewed-on: https://review.typo3.org/27049
Reviewed-by: Stefan Neufeind
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Markus Klein
Tested-by: Markus Klein
typo3/sysext/recordlist/Classes/RecordList/AbstractDatabaseRecordList.php

index 1a38c75..b35c889 100644 (file)
@@ -852,7 +852,12 @@ class AbstractDatabaseRecordList extends \TYPO3\CMS\Backend\RecordList\AbstractR
                if ((!$exclList || !GeneralUtility::inList($exclList, 'sortRev')) && $this->sortRev) {
                        $urlParameters['sortRev'] = $this->sortRev;
                }
-               return BackendUtility::getModuleUrl('web_list', $urlParameters);
+
+               // Current request GET arguments might be required by module so we add them to url
+               // GET array contains also controller and action names required to generate valid pagination url
+               $urlParameters = array_replace_recursive(GeneralUtility::_GET(), $urlParameters);
+
+               return BackendUtility::getModuleUrl($urlParameters['M'], $urlParameters);
        }
 
        /**