Bug #98129
open
Workspace pagination is broken
Added by Francois Suter over 1 year ago.
Updated 9 months ago.
Sprint Focus:
On Location Sprint
Description
The pagination of the Workspaces module does not work. Visually it always displays the first 30 elements. When looking at the response of the AJAX request, it appears that all elements are returned every time, no matter what value is passed in the start
parameter.
The culprit is \TYPO3\CMS\Workspaces\Service\GridDataService::calculateStartWithCollections()
which always returns "0". This is due to line 699, a regression introduced by https://github.com/TYPO3/typo3/commit/7258b52477a3c9119a24af20c1513c111dac768f (how could it be merged?). The problem is that the test on line 699:
if (!isset($this->dataArray[$recordsCount])) {
will always fail because the keys of array $this->dataArray
are not numerical. They are strings assembled in \TYPO3\CMS\Workspaces\Service\GridDataService::generateDataArray()
, on line 194:
$versionArray['id'] = $table . ':' . $record['uid'];
- Related to Bug #93915: Workspace "Uncaught (in promise) TypeError: a is null" when in workspace manager module added
- Related to Bug #93645: Workspace pagination empty and Javascript error: Uncaught (in promise) TypeError: t is undefined added
resolveDataArrayDependencies
: having $this->dataArray = $collectionService->process($this->dataArray);
creates numeric keys
getDataArray
: having $this->dataArray = array_values($this->dataArray);
creates numeric keys
getDataArray
has the following code as well - which creates numeric keys for a particular case -
To me it seems like $this->dataArray
nowadays should be just a list, no other information in the key. This $versionIdentifier
was used in the past to avoid duplicates (overlays, new or move place-holders).
Thus, I think it now just should be like this in generateDataArray()
:
$this->dataArray[] = $versionArray;
- Sprint Focus set to Stabilization Sprint
- Sprint Focus changed from Stabilization Sprint to On Location Sprint
Also available in: Atom
PDF