From bca16caf3674b0f679a0e92391950904af1c0b62 Mon Sep 17 00:00:00 2001
From: Oliver Bartsch <bo@cedev.de>
Date: Thu, 13 Jun 2024 12:14:55 +0200
Subject: [PATCH] [BUGFIX] Add aria-label to the selection options toggle
 button

The toggle button to open the selection options
of the multi record selection component does now
provide an aria-label to make it accessible for
screen readers.

Resolves: #104089
Releases: main, 12.4
Change-Id: I89af5e4f5a0f8dd87be5d532bdd894bd2636502e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84689
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Oliver Bartsch <bo@cedev.de>
---
 typo3/sysext/backend/Classes/RecordList/DatabaseRecordList.php | 2 +-
 .../sysext/core/Resources/Private/Language/locallang_core.xlf  | 3 +++
 typo3/sysext/filelist/Classes/FileList.php                     | 2 +-
 .../Resources/Private/Templates/Management/Overview.html       | 2 +-
 .../recycler/Resources/Private/Templates/RecyclerModule.html   | 2 +-
 .../Resources/Private/Templates/Management/Overview.html       | 2 +-
 .../sysext/scheduler/Resources/Private/Partials/TaskList.html  | 1 +
 .../Resources/Private/Templates/Management/Overview.html       | 2 +-
 .../workspaces/Resources/Private/Partials/WorkingTable.html    | 2 +-
 9 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/typo3/sysext/backend/Classes/RecordList/DatabaseRecordList.php b/typo3/sysext/backend/Classes/RecordList/DatabaseRecordList.php
index 6dc297a8ed28..e35a6aa0441c 100644
--- a/typo3/sysext/backend/Classes/RecordList/DatabaseRecordList.php
+++ b/typo3/sysext/backend/Classes/RecordList/DatabaseRecordList.php
@@ -3077,7 +3077,7 @@ class DatabaseRecordList
 
         return '
             <div class="btn-group dropdown">
-                <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false">
+                <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false" aria-label="' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.openSelectionOptions')) . '">
                     ' . $this->iconFactory->getIcon('actions-selection', Icon::SIZE_SMALL) . '
                 </button>
                 <ul class="dropdown-menu t3js-multi-record-selection-check-actions">
diff --git a/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf b/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf
index b51b5ef4bf33..bc23c6abbf5c 100644
--- a/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf
+++ b/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf
@@ -451,6 +451,9 @@ Do you want to continue WITHOUT saving?</source>
 			<trans-unit id="labels.setAllCheckboxes" resname="labels.setAllCheckboxes">
 				<source>Select All Checkboxes</source>
 			</trans-unit>
+			<trans-unit id="labels.openSelectionOptions" resname="labels.openSelectionOptions">
+				<source>Open selection options</source>
+			</trans-unit>
 			<trans-unit id="labels.checkAll" resname="labels.checkAll">
 				<source>Check all</source>
 			</trans-unit>
diff --git a/typo3/sysext/filelist/Classes/FileList.php b/typo3/sysext/filelist/Classes/FileList.php
index 09cb51743d0a..b700ea1c6a0d 100644
--- a/typo3/sysext/filelist/Classes/FileList.php
+++ b/typo3/sysext/filelist/Classes/FileList.php
@@ -1388,7 +1388,7 @@ class FileList
 
         return '
             <div class="btn-group dropdown">
-                <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false">
+                <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false" aria-label="' . htmlspecialchars($lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.openSelectionOptions')) . '">
                     ' . $this->iconFactory->getIcon('actions-selection', Icon::SIZE_SMALL) . '
                 </button>
                 <ul class="dropdown-menu t3js-multi-record-selection-check-actions">
diff --git a/typo3/sysext/reactions/Resources/Private/Templates/Management/Overview.html b/typo3/sysext/reactions/Resources/Private/Templates/Management/Overview.html
index 8ee9ad29d561..39911427af10 100644
--- a/typo3/sysext/reactions/Resources/Private/Templates/Management/Overview.html
+++ b/typo3/sysext/reactions/Resources/Private/Templates/Management/Overview.html
@@ -66,7 +66,7 @@
             <tr>
                 <th class="col-checkbox">
                     <div class="btn-group dropdown">
-                        <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false">
+                        <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false" aria-label="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.openSelectionOptions')}">
                             <core:icon identifier="actions-selection" size="small" />
                         </button>
                         <ul class="dropdown-menu t3js-multi-record-selection-check-actions">
diff --git a/typo3/sysext/recycler/Resources/Private/Templates/RecyclerModule.html b/typo3/sysext/recycler/Resources/Private/Templates/RecyclerModule.html
index 5f07a66555e3..a39fbb5ee692 100644
--- a/typo3/sysext/recycler/Resources/Private/Templates/RecyclerModule.html
+++ b/typo3/sysext/recycler/Resources/Private/Templates/RecyclerModule.html
@@ -67,7 +67,7 @@
 
 <f:section name="multiRecordSelectionCheckboxActions">
     <div class="btn-group dropdown">
-        <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false">
+        <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false" aria-label="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.openSelectionOptions')}">
             <core:icon identifier="actions-selection" size="small" />
             <span class="visually-hidden"><f:translate id="LLL:EXT:recycler/Resources/Private/Language/locallang.xlf:button.dropdown.multiselect"/></span>
         </button>
diff --git a/typo3/sysext/redirects/Resources/Private/Templates/Management/Overview.html b/typo3/sysext/redirects/Resources/Private/Templates/Management/Overview.html
index 783763cbda76..a40888df344b 100644
--- a/typo3/sysext/redirects/Resources/Private/Templates/Management/Overview.html
+++ b/typo3/sysext/redirects/Resources/Private/Templates/Management/Overview.html
@@ -70,7 +70,7 @@
                 <tr>
                     <th>
                         <div class="btn-group dropdown">
-                            <a href="javascript:;" class="dropdown-toggle t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false">
+                            <a href="javascript:;" class="dropdown-toggle t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false" aria-label="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.openSelectionOptions')}">
                                 <core:icon identifier="actions-selection" size="small" />
                             </a>
                             <ul class="dropdown-menu t3js-multi-record-selection-check-actions">
diff --git a/typo3/sysext/scheduler/Resources/Private/Partials/TaskList.html b/typo3/sysext/scheduler/Resources/Private/Partials/TaskList.html
index fe58d7afcc81..2b8f0396ea23 100644
--- a/typo3/sysext/scheduler/Resources/Private/Partials/TaskList.html
+++ b/typo3/sysext/scheduler/Resources/Private/Partials/TaskList.html
@@ -203,6 +203,7 @@
                                                 data-bs-toggle="dropdown"
                                                 data-bs-boundary="window"
                                                 aria-expanded="false"
+                                                aria-label="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.openSelectionOptions')}"
                                             >
                                                 <core:icon identifier="actions-selection" size="small" />
                                             </button>
diff --git a/typo3/sysext/webhooks/Resources/Private/Templates/Management/Overview.html b/typo3/sysext/webhooks/Resources/Private/Templates/Management/Overview.html
index a66f2e716abe..62bda2ad75a1 100644
--- a/typo3/sysext/webhooks/Resources/Private/Templates/Management/Overview.html
+++ b/typo3/sysext/webhooks/Resources/Private/Templates/Management/Overview.html
@@ -237,7 +237,7 @@
 
 <f:section name="multiRecordSelectionCheckboxActions">
     <div class="btn-group dropdown">
-        <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false">
+        <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false" aria-label="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.openSelectionOptions')}">
             <core:icon identifier="actions-selection" size="small" />
         </button>
         <ul class="dropdown-menu t3js-multi-record-selection-check-actions">
diff --git a/typo3/sysext/workspaces/Resources/Private/Partials/WorkingTable.html b/typo3/sysext/workspaces/Resources/Private/Partials/WorkingTable.html
index 316154dce4a8..b827cbd20f0d 100644
--- a/typo3/sysext/workspaces/Resources/Private/Partials/WorkingTable.html
+++ b/typo3/sysext/workspaces/Resources/Private/Partials/WorkingTable.html
@@ -57,7 +57,7 @@
                     <tr>
                         <th>
                             <div class="btn-group dropdown">
-                                <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false">
+                                <button type="button" class="dropdown-toggle dropdown-toggle-link t3js-multi-record-selection-check-actions-toggle" data-bs-toggle="dropdown" data-bs-boundary="window" aria-expanded="false" aria-label="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.openSelectionOptions')}">
                                     <core:icon identifier="actions-selection" size="small" />
                                 </button>
                                 <ul class="dropdown-menu t3js-multi-record-selection-check-actions">
-- 
GitLab