[BUGFIX] Remove GET parameters from URLs in List module 01/29701/5
authorMarkus Klein <klein.t3@mfc-linz.at>
Sun, 27 Apr 2014 21:15:29 +0000 (23:15 +0200)
committerOliver Hader <oliver.hader@typo3.org>
Mon, 28 Apr 2014 13:58:00 +0000 (15:58 +0200)
DatabaseRecordList (List module) generates returnUrls for localization
links. These must not contain the 'justLocalized' parameter, as this
would cause redirects to edit form over and over again.

This fix removes the inclusion of all the GET parameters - introduced
with #55314 - again. Only the module parameter is used from GET/POST.
Additional API enables extbase plugins to add necessary parameters.

The TableListViewHelper does not need any more parameters besides
the module name and hence still works after this patch.

Resolves: #58257
Related: #55314
Releases: 6.2
Change-Id: I641e4ce37e48c9ea4f9aabce41b11d8f824bf64d
Reviewed-on: https://review.typo3.org/29701
Reviewed-by: Marc Bastian Heinrichs
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
Reviewed-by: Wouter Wolters
typo3/sysext/recordlist/Classes/RecordList/AbstractDatabaseRecordList.php

index b35c889..de980b0 100644 (file)
@@ -291,6 +291,12 @@ class AbstractDatabaseRecordList extends \TYPO3\CMS\Backend\RecordList\AbstractR
        public $modTSconfig;
 
        /**
+        * Override/add urlparameters in listUrl() method
+        * @var array
+        */
+       protected $overrideUrlParameters = array();
+
+       /**
         * Initializes the list generation
         *
         * @param integer $id Page id for which the list is rendered. Must be >= 0
@@ -853,11 +859,9 @@ class AbstractDatabaseRecordList extends \TYPO3\CMS\Backend\RecordList\AbstractR
                        $urlParameters['sortRev'] = $this->sortRev;
                }
 
-               // 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);
+               $urlParameters = array_merge_recursive($urlParameters, $this->overrideUrlParameters);
 
-               return BackendUtility::getModuleUrl($urlParameters['M'], $urlParameters);
+               return BackendUtility::getModuleUrl(GeneralUtility::_GP('M'), $urlParameters);
        }
 
        /**
@@ -1002,4 +1006,14 @@ class AbstractDatabaseRecordList extends \TYPO3\CMS\Backend\RecordList\AbstractR
                }
        }
 
+       /**
+        * Set URL parameters to override or add in the listUrl() method.
+        *
+        * @param array $urlParameters
+        * @return void
+        */
+       public function setOverrideUrlParameters(array $urlParameters) {
+               $this->overrideUrlParameters = $urlParameters;
+       }
+
 }