From e6f69cc023dd380a5e4d9fb18e08765f04ba16e8 Mon Sep 17 00:00:00 2001 From: Oliver Bartsch <bo@cedev.de> Date: Fri, 23 Feb 2024 16:04:09 +0100 Subject: [PATCH] [BUGFIX] Always set `action` argument for action ViewHelpers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A couple of places (mostly paginations) are using the action ViewHelpers without providing the `action` argument. Those links will therefore fall back to the default action, which might be wrong e.g. in the backend user group listing. To preserve the current action on paginating, the corresponding action is now always set. Resolves: #103189 Related: #101729 Releases: main, 12.4 Change-Id: I1db9a637a4b320f90aae3a93fe903c939384ea3a Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83114 Reviewed-by: Oliver Bartsch <bo@cedev.de> Tested-by: Oliver Bartsch <bo@cedev.de> Reviewed-by: Markus Klein <markus.klein@typo3.org> Reviewed-by: Stefan Bürk <stefan@buerk.tech> Tested-by: Markus Klein <markus.klein@typo3.org> Tested-by: Stefan Bürk <stefan@buerk.tech> Tested-by: core-ci <typo3@b13.com> --- .../Classes/Controller/BackendUserController.php | 6 +++--- .../Private/Partials/BackendUser/PaginatedList.html | 2 +- .../Partials/BackendUserGroup/PaginatedList.html | 2 +- .../Private/Partials/Filemount/PaginatedList.html | 2 +- .../Resources/Private/Partials/SimplePagination.html | 12 ++++++------ .../Partials/Backend/FormManager/Pagination.html | 12 ++++++------ .../Private/Templates/Backend/FormManager/Index.html | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/typo3/sysext/beuser/Classes/Controller/BackendUserController.php b/typo3/sysext/beuser/Classes/Controller/BackendUserController.php index e55015d4531b..1b4707db95cc 100644 --- a/typo3/sysext/beuser/Classes/Controller/BackendUserController.php +++ b/typo3/sysext/beuser/Classes/Controller/BackendUserController.php @@ -389,15 +389,15 @@ class BackendUserController extends ActionController $backendUser->pushModuleData($this->moduleData->getModuleIdentifier(), $this->moduleData->toArray()); - $backendUsers = $this->backendUserGroupRepository->findByFilter($userGroupDto); - $paginator = new QueryResultPaginator($backendUsers, $currentPage, 50); + $backendUserGroups = $this->backendUserGroupRepository->findByFilter($userGroupDto); + $paginator = new QueryResultPaginator($backendUserGroups, $currentPage, 50); $pagination = new SimplePagination($paginator); $compareGroupUidList = array_keys((array)$this->moduleData->get('compareGroupUidList', [])); $this->moduleTemplate->assignMultiple( [ 'paginator' => $paginator, 'pagination' => $pagination, - 'totalAmountOfBackendUserGroups' => $backendUsers->count(), + 'totalAmountOfBackendUserGroups' => $backendUserGroups->count(), 'compareGroupUidList' => array_map(static function (int $value): int { // uid as key and force value to 1 return 1; }, array_flip($compareGroupUidList)), diff --git a/typo3/sysext/beuser/Resources/Private/Partials/BackendUser/PaginatedList.html b/typo3/sysext/beuser/Resources/Private/Partials/BackendUser/PaginatedList.html index 65a29b14d47f..38c0743709f6 100644 --- a/typo3/sysext/beuser/Resources/Private/Partials/BackendUser/PaginatedList.html +++ b/typo3/sysext/beuser/Resources/Private/Partials/BackendUser/PaginatedList.html @@ -153,4 +153,4 @@ </table> </div> -<f:render partial="SimplePagination" arguments="{paginator:paginator, pagination:pagination}" /> +<f:render partial="SimplePagination" arguments="{paginator:paginator, pagination:pagination, actionName:'index'}" /> diff --git a/typo3/sysext/beuser/Resources/Private/Partials/BackendUserGroup/PaginatedList.html b/typo3/sysext/beuser/Resources/Private/Partials/BackendUserGroup/PaginatedList.html index d537a6355f57..ab80d82f7036 100644 --- a/typo3/sysext/beuser/Resources/Private/Partials/BackendUserGroup/PaginatedList.html +++ b/typo3/sysext/beuser/Resources/Private/Partials/BackendUserGroup/PaginatedList.html @@ -120,6 +120,6 @@ </table> </div> -<f:render partial="SimplePagination" arguments="{paginator:paginator, pagination:pagination}" /> +<f:render partial="SimplePagination" arguments="{paginator:paginator, pagination:pagination, actionName:'groups'}" /> </html> diff --git a/typo3/sysext/beuser/Resources/Private/Partials/Filemount/PaginatedList.html b/typo3/sysext/beuser/Resources/Private/Partials/Filemount/PaginatedList.html index 3a7d3154176c..94a2c9e55886 100644 --- a/typo3/sysext/beuser/Resources/Private/Partials/Filemount/PaginatedList.html +++ b/typo3/sysext/beuser/Resources/Private/Partials/Filemount/PaginatedList.html @@ -106,6 +106,6 @@ </table> </div> -<f:render partial="SimplePagination" arguments="{paginator:paginator, pagination:pagination}" /> +<f:render partial="SimplePagination" arguments="{paginator:paginator, pagination:pagination, actionName:'filemounts'}" /> </html> diff --git a/typo3/sysext/beuser/Resources/Private/Partials/SimplePagination.html b/typo3/sysext/beuser/Resources/Private/Partials/SimplePagination.html index 8b211e55eb87..059e616cbe71 100644 --- a/typo3/sysext/beuser/Resources/Private/Partials/SimplePagination.html +++ b/typo3/sysext/beuser/Resources/Private/Partials/SimplePagination.html @@ -10,12 +10,12 @@ <f:if condition="{pagination.previousPageNumber} && {pagination.previousPageNumber} >= {pagination.firstPageNumber}"> <f:then> <li class="page-item"> - <a href="{f:uri.action(arguments:{currentPage: 1})}" title="{f:translate(key:'pagination.first')}" class="page-link"> + <a href="{f:uri.action(action:actionName, arguments:{currentPage: 1})}" title="{f:translate(key:'pagination.first')}" class="page-link"> <core:icon identifier="actions-view-paging-first" /> </a> </li> <li class="page-item"> - <a href="{f:uri.action(arguments:{currentPage: pagination.previousPageNumber})}" title="{f:translate(key:'pagination.previous')}" class="page-link"> + <a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.previousPageNumber})}" title="{f:translate(key:'pagination.previous')}" class="page-link"> <core:icon identifier="actions-view-paging-previous" /> </a> </li> @@ -44,7 +44,7 @@ <form style="display:inline;" data-global-event="submit" data-action-navigate="$form=~s/$value/" - data-navigate-value="{f:uri.action(arguments:'{currentPage: \'$[value]\'}')}" + data-navigate-value="{f:uri.action(action:actionName, arguments:'{currentPage: \'$[value]\'}')}" data-value-selector="input[name='paginator-target-page']"> <input min="{pagination.firstPageNumber}" @@ -64,12 +64,12 @@ <f:if condition="{pagination.nextPageNumber} && {pagination.nextPageNumber} <= {pagination.lastPageNumber}"> <f:then> <li class="page-item"> - <a href="{f:uri.action(arguments:{currentPage: pagination.nextPageNumber})}" title="{f:translate(key:'pagination.next')}" class="page-link"> + <a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.nextPageNumber})}" title="{f:translate(key:'pagination.next')}" class="page-link"> <core:icon identifier="actions-view-paging-next" /> </a> </li> <li class="page-item"> - <a href="{f:uri.action(arguments:{currentPage: pagination.lastPageNumber})}" title="{f:translate(key:'pagination.last')}" class="page-link"> + <a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.lastPageNumber})}" title="{f:translate(key:'pagination.last')}" class="page-link"> <core:icon identifier="actions-view-paging-last" /> </a> </li> @@ -88,7 +88,7 @@ </f:else> </f:if> <li class="page-item"> - <a href="{f:uri.action(arguments:{currentPage: paginator.currentPageNumber})}" title="{f:translate(key:'pagination.refresh')}" class="page-link"> + <a href="{f:uri.action(action:actionName, arguments:{currentPage: paginator.currentPageNumber})}" title="{f:translate(key:'pagination.refresh')}" class="page-link"> <core:icon identifier="actions-refresh" /> </a> </li> diff --git a/typo3/sysext/form/Resources/Private/Partials/Backend/FormManager/Pagination.html b/typo3/sysext/form/Resources/Private/Partials/Backend/FormManager/Pagination.html index 62869c8ad373..d6c31551fec7 100644 --- a/typo3/sysext/form/Resources/Private/Partials/Backend/FormManager/Pagination.html +++ b/typo3/sysext/form/Resources/Private/Partials/Backend/FormManager/Pagination.html @@ -4,12 +4,12 @@ <f:if condition="{pagination.previousPageNumber} && {pagination.previousPageNumber} >= {pagination.firstPageNumber}"> <f:then> <li class="page-item"> - <f:link.action arguments="{page: 1, searchTerm: searchTerm}" title="{f:translate(key:'pagination.first')}" class="page-link"> + <f:link.action action="index" arguments="{page: 1, searchTerm: searchTerm}" title="{f:translate(key:'pagination.first')}" class="page-link"> <core:icon identifier="actions-view-paging-first" /> </f:link.action> </li> <li class="page-item"> - <f:link.action arguments="{page: pagination.previousPageNumber, searchTerm: searchTerm}" title="{f:translate(key:'pagination.previous')}" class="page-link"> + <f:link.action action="index" arguments="{page: pagination.previousPageNumber, searchTerm: searchTerm}" title="{f:translate(key:'pagination.previous')}" class="page-link"> <core:icon identifier="actions-view-paging-previous" /> </f:link.action> </li> @@ -38,7 +38,7 @@ <form style="display:inline;" data-global-event="submit" data-action-navigate="$form=~s/$value/" - data-navigate-value="{f:uri.action(arguments:'{page: \'$[value]\', searchTerm: searchTerm}')}" + data-navigate-value="{f:uri.action(action:'index', arguments:'{page: \'$[value]\', searchTerm: searchTerm}')}" data-value-selector="input[name='paginator-target-page']"> <input min="{pagination.firstPageNumber}" @@ -56,12 +56,12 @@ <f:if condition="{pagination.nextPageNumber} && {pagination.nextPageNumber} <= {pagination.lastPageNumber}"> <f:then> <li class="page-item"> - <f:link.action arguments="{page: pagination.nextPageNumber, searchTerm: searchTerm}" title="{f:translate(key:'pagination.next')}" class="page-link"> + <f:link.action action="index" arguments="{page: pagination.nextPageNumber, searchTerm: searchTerm}" title="{f:translate(key:'pagination.next')}" class="page-link"> <core:icon identifier="actions-view-paging-next" /> </f:link.action> </li> <li class="page-item"> - <f:link.action arguments="{page: pagination.lastPageNumber, searchTerm: searchTerm}" title="{f:translate(key:'pagination.last')}" class="page-link"> + <f:link.action action="index" arguments="{page: pagination.lastPageNumber, searchTerm: searchTerm}" title="{f:translate(key:'pagination.last')}" class="page-link"> <core:icon identifier="actions-view-paging-last" /> </f:link.action> </li> @@ -80,7 +80,7 @@ </f:else> </f:if> <li class="page-item"> - <f:link.action arguments="{page: paginator.currentPageNumber, searchTerm: searchTerm}" title="{f:translate(key:'pagination.refresh')}" class="page-link"> + <f:link.action action="index" arguments="{page: paginator.currentPageNumber, searchTerm: searchTerm}" title="{f:translate(key:'pagination.refresh')}" class="page-link"> <core:icon identifier="actions-refresh" /> </f:link.action> </li> diff --git a/typo3/sysext/form/Resources/Private/Templates/Backend/FormManager/Index.html b/typo3/sysext/form/Resources/Private/Templates/Backend/FormManager/Index.html index 444abf0dd77b..8bd2fb496506 100644 --- a/typo3/sysext/form/Resources/Private/Templates/Backend/FormManager/Index.html +++ b/typo3/sysext/form/Resources/Private/Templates/Backend/FormManager/Index.html @@ -18,7 +18,7 @@ <form style="display:inline;" data-global-event="submit" data-action-navigate="$form=~s/$value/" - data-navigate-value="{f:uri.action(arguments:'{searchTerm: \'$[value]\'}')}" + data-navigate-value="{f:uri.action(action:'index', arguments:'{searchTerm: \'$[value]\'}')}" data-value-selector="input[name='searchTerm']" > <div class="row mb-3"> -- GitLab