Bug #98129
openWorkspace pagination is broken
0%
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'];
Updated by Francois Suter over 2 years ago
- Related to Bug #93915: Workspace "Uncaught (in promise) TypeError: a is null" when in workspace manager module added
Updated by Francois Suter over 2 years ago
The commit that introduced method \TYPO3\CMS\Workspaces\Service\GridDataService::calculateStartWithCollections()
is:
https://github.com/TYPO3/typo3/commit/f8e4b4430b745961a0d84038ef03dca79186d24e
and it's weird, because - looking at the code - I can't see how it ever worked...
Updated by Francois Suter over 2 years ago
- Related to Bug #93645: Workspace pagination empty and Javascript error: Uncaught (in promise) TypeError: t is undefined added
Updated by Oliver Hader over 2 years ago
resolveDataArrayDependencies
: having$this->dataArray = $collectionService->process($this->dataArray);
creates numeric keysgetDataArray
: 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;
Updated by Benni Mack over 1 year ago
- Sprint Focus changed from Stabilization Sprint to On Location Sprint
Updated by Riccardo De Contardi 3 months ago
- Status changed from New to Needs Feedback
Is this reproducible on version 12 or higher? I tried a short test on version 12, modifying 30+ records (pages and CE) until I got 2 pages on the Workspace module.
And the pagination on the bottom seems to work (tried clicking on both numbers and arrows)
Is a different test necessary?