From 0fd1542eea2540ab5bb0d999217eb2275e9d107c Mon Sep 17 00:00:00 2001
From: Viola Elsenhans <elsenhans@ub.uni-leipzig.de>
Date: Mon, 20 Mar 2023 12:55:30 +0100
Subject: [PATCH] refs #19676 [finc] adapt label for bookbag other lists with
 checkboxes

* removes redundant sr-only
* adds explanatory sr-only to select all buttons
* unify generation of describedby title id
* do not escape id
* add title described by to cart link
* add title described by to favorites link on result list
* remove aria-label from default list
* use getTitleDescribedById method (record view helper) only once in each template
* replace old usage in myresearch templates
* add aria-describedby to hierarchyTreeLink (on result list)

co-authored by: Alexander Purr <purr@ub.uni-leipzig.de>
co-authored by: Claas Kazzer <kazzer@uni-leipzig.de>
co-authored by: Robert Lange <robert.lange@uni-leipzig.de>
---
 local/languages/de.ini                        |  3 ++-
 local/languages/en.ini                        |  3 ++-
 .../finc/src/finc/View/Helper/Root/Record.php | 10 +++++++
 .../DefaultRecord/list-entry.phtml            |  4 +--
 .../DefaultRecord/result-list.phtml           | 11 +++++---
 .../RecordDriver/SolrAI/result-list.phtml     | 13 ++++++---
 themes/finc/templates/cart/cart.phtml         |  3 ++-
 .../myresearch/bulk-action-buttons.phtml      | 27 +++++++++++++++++++
 .../templates/myresearch/checkedout.phtml     |  4 +--
 .../templates/myresearch/historicloans.phtml  |  2 +-
 themes/finc/templates/myresearch/holds.phtml  |  4 +--
 .../templates/myresearch/illrequests.phtml    |  4 +--
 .../myresearch/storageretrievalrequests.phtml |  4 +--
 .../finc/templates/record/cart-buttons.phtml  |  4 +--
 themes/finc/templates/record/checkbox.phtml   | 15 +++++++++--
 .../search/bulk-action-buttons.phtml          |  4 +--
 16 files changed, 89 insertions(+), 26 deletions(-)
 create mode 100644 themes/finc/templates/myresearch/bulk-action-buttons.phtml

diff --git a/local/languages/de.ini b/local/languages/de.ini
index 921a47e7822..78188edf9cd 100644
--- a/local/languages/de.ini
+++ b/local/languages/de.ini
@@ -947,7 +947,8 @@ search_unsave_success = "Gespeicherte Suche erfolgreich gelöscht."
 see all = "Alle anzeigen"
 select_all = "Alle auswählen"
 select_journal_item = "Bitte wählen Sie Heft und Jahrgang"
-select_page = "Alles auswählen"
+select_page = "Alle Einträge der Seite auswählen"
+select_page_cart = "Alle Einträge der Zwischenablage auswählen"
 sms_failure = "Fehler! Konnte Nachricht nicht versenden."
 sms_phone_number = "Handynummer für SMS"
 sms_sending = "Sende Nachricht..."
diff --git a/local/languages/en.ini b/local/languages/en.ini
index c0b7ed4dc06..90bce75d78a 100644
--- a/local/languages/en.ini
+++ b/local/languages/en.ini
@@ -904,7 +904,8 @@ search_unsave_success = "Saved search removed successfully."
 see all = "See All"
 select_all = "Select All"
 select_journal_item = "Please fill in number and year of item"
-select_page = "Select Page"
+select_page = "Select all entries of the page"
+select_page_cart = "Select all entries of the clipboard"
 sms_failure = "Error - Could not send message."
 sms_phone_number = "10-Digit Phone Number"
 sms_sending = "Sending Message..."
diff --git a/module/finc/src/finc/View/Helper/Root/Record.php b/module/finc/src/finc/View/Helper/Root/Record.php
index 6ba3b5eed6d..c309806e5b4 100644
--- a/module/finc/src/finc/View/Helper/Root/Record.php
+++ b/module/finc/src/finc/View/Helper/Root/Record.php
@@ -601,4 +601,14 @@ class Record extends \VuFind\View\Helper\Root\Record
         }
         return $queryParams;
     }
+
+    /**
+     * Get the unique title id of the record
+     *
+     * @return string
+     */
+    public function getTitleDescribedById()
+    {
+        return "{$this->driver->getSourceIdentifier()}|{$this->driver->getUniqueId()}";
+    }
 }
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml
index d4411701ac8..de21dea7f44 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml
@@ -17,6 +17,8 @@
   $cover = $coverDetails['html'];
   $thumbnail = false;
   $thumbnailAlignment = $this->record($this->driver)->getThumbnailAlignment('list');
+  // finc: load describedById only once; refs #19676
+  $describedById = $this->record($this->driver)->getTitleDescribedById();
 ?>
 <?php /* finc uses li structure + its own image/cover loading mechanism + adds aria */ ?>
 <li class="result<?php if ($this->driver->supportsAjaxStatus()): ?> ajaxItem<?php endif ?>">
@@ -44,7 +46,6 @@
             <?php /* finc: restore missing favorites #17375 */ ?>
           <?php if ($missing && $this->driver->isCachedRecord()): ?>
             <?php /* finc: add aria-label and aria-describedby #18019 */ ?>
-            <?php $describedById = $driver->getSourceIdentifier() . '|' . $driver->getUniqueId(); ?>
             <span id="<?=$describedById?>" class="title" lang=""><?=$this->record($this->driver)->getTitleHtml()?></span>
             <?php /* finc uses <p> and aria for alerts, use a div here, or h2 inside <p> will be invalid */ ?>
             <div class="alert alert-info" aria-live="polite">
@@ -58,7 +59,6 @@
             </div>
           <?php elseif (!$missing): ?>
             <?php /* finc adds aria-label and aria-describedby #18019 */ ?>
-            <?php $describedById = $driver->getSourceIdentifier() . '|' . $driver->getUniqueId(); ?>
             <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="getFull" data-view="<?=$this->params->getOptions()->getListViewOption() ?>">
               <?php /* finc: change span to h2 element #22158 */ ?>
                   <h2 id="<?=$describedById?>" class="title" lang=""><?=$this->record($this->driver)->getTitleHtml()?></h2>
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml
index 97e8025f3b3..7f0932a028c 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml
@@ -6,7 +6,7 @@ $cover = $coverDetails['html'];
 $thumbnail = false;
 $thumbnailAlignment = $this->record($this->driver)->getThumbnailAlignment('result');
   /* finc adds $describedById #18737 */
-$describedById = $driver->getSourceIdentifier() . '|' . $driver->getUniqueId();
+$describedById = $this->record($this->driver)->getTitleDescribedById();
 if ($cover):
   ob_start(); ?>
   <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>">
@@ -225,7 +225,12 @@ if ($cover):
           <?php /* Add to favorites;
                    finc: keep Icon inside link
                    finc adds accessibility code */ ?>
-          <a href="<?=$this->recordLink()->getActionUrl($this->driver, 'Save')?>?refreshOnClose=false" data-lightbox class="save-record result-link-label" data-id="<?=$this->escapeHtmlAttr($this->driver->getUniqueId())?>" aria-label="<?=$this->transEscAttr('Add to favorites')?>">
+          <a
+            href="<?=$this->recordLink()->getActionUrl($this->driver, 'Save')?>?refreshOnClose=false"
+            data-lightbox class="save-record result-link-label"
+            data-id="<?=$this->escapeHtmlAttr($this->driver->getUniqueId())?>"
+            aria-describedby="<?=$describedById?>"
+          >
             <i class="fa fa-fw fa-star" aria-hidden="true"></i><span><?=$this->transEsc('Add to favorites')?></span>
           </a><br/>
         <?php elseif ($block = $this->permission()->getAlternateContent('feature.Favorites')): ?>
@@ -245,7 +250,7 @@ if ($cover):
         <?php foreach ($trees as $hierarchyID => $hierarchyTitle): ?>
           <div class="hierarchyTreeLink">
             <input type="hidden" value="<?=$this->escapeHtmlAttr($hierarchyID)?>" class="hiddenHierarchyId" />
-            <a class="hierarchyTreeLinkText result-link-label" data-lightbox href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree', ['hierarchy' => $hierarchyID])?>#tabnav" title="<?=$this->transEscAttr('hierarchy_tree')?>" data-lightbox-href="<?=$this->recordLink()->getTabUrl($this->driver, 'AjaxTab', ['hierarchy' => $hierarchyID])?>" data-lightbox-post="tab=hierarchytree">
+            <a class="hierarchyTreeLinkText result-link-label" data-lightbox href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree', ['hierarchy' => $hierarchyID])?>#tabnav" title="<?=$this->transEscAttr('hierarchy_tree')?>" data-lightbox-href="<?=$this->recordLink()->getTabUrl($this->driver, 'AjaxTab', ['hierarchy' => $hierarchyID])?>" data-lightbox-post="tab=hierarchytree" aria-describedby="<?=$describedById?>">
               <i class="result-link-icon fa fa-fw fa-sitemap" aria-hidden="true"></i><span><?=$this->transEscAttr('hierarchy_view_context')?></span><?php if (count($trees) > 1): ?>: <?=$this->escapeHtml($hierarchyTitle)?><?php endif; ?>
             </a>
           </div>
diff --git a/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml b/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml
index adcb20c96f9..9141ab03fcf 100644
--- a/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml
+++ b/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml
@@ -4,7 +4,8 @@ $coverDetails = $this->record($this->driver)->getCoverDetails('result-list', 'me
 $cover = $coverDetails['html'];
 $thumbnail = false;
 $thumbnailAlignment = $this->record($this->driver)->getThumbnailAlignment('result');
-$describedById = $driver->getSourceIdentifier() . '|' . $driver->getUniqueId();
+// finc: load describedById only once; refs #19676
+$describedById = $this->record($this->driver)->getTitleDescribedById();
 if ($cover):
   ob_start(); ?>
   <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true">
@@ -203,7 +204,13 @@ if ($cover):
       <?php if ($this->userlist()->getMode() !== 'disabled'): ?>
         <?php /* if ($this->permission()->allowDisplay('feature.Favorites')): */ ?>
         <?php /* Add to favorites; finc: keep Icon inside link - CK */ ?>
-        <a href="<?=$this->recordLink()->getActionUrl($this->driver, 'Save')?>?refreshOnClose=false" data-lightbox class="save-record result-link-label" data-id="<?=$this->escapeHtmlAttr($this->driver->getUniqueId())?>">
+        <a
+            href="<?=$this->recordLink()->getActionUrl($this->driver, 'Save')?>?refreshOnClose=false"
+            data-lightbox
+            class="save-record result-link-label"
+            data-id="<?=$this->escapeHtmlAttr($this->driver->getUniqueId())?>"
+            aria-describedby="<?=$describedById?>"
+        >
           <i class="result-link-icon fa fa-fw fa-star" aria-hidden="true"></i><?=$this->transEsc('Add to favorites')?>
         </a><br/>
       <?php elseif ($block = $this->permission()->getAlternateContent('feature.Favorites')): ?>
@@ -221,7 +228,7 @@ if ($cover):
         <?php foreach ($trees as $hierarchyID => $hierarchyTitle): ?>
           <div class="hierarchyTreeLink">
             <input type="hidden" value="<?=$this->escapeHtmlAttr($hierarchyID)?>" class="hiddenHierarchyId"/>
-            <a class="hierarchyTreeLinkText result-link-label" data-lightbox href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree')?>?hierarchy=<?=urlencode($hierarchyID)?>#tabnav" title="<?=$this->transEscAttr('hierarchy_tree')?>" data-lightbox-href="<?=$this->recordLink()->getTabUrl($this->driver, 'AjaxTab')?>?hierarchy=<?=urlencode($hierarchyID)?>" data-lightbox-post="tab=hierarchytree">
+            <a class="hierarchyTreeLinkText result-link-label" data-lightbox href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree')?>?hierarchy=<?=urlencode($hierarchyID)?>#tabnav" title="<?=$this->transEscAttr('hierarchy_tree')?>" data-lightbox-href="<?=$this->recordLink()->getTabUrl($this->driver, 'AjaxTab')?>?hierarchy=<?=urlencode($hierarchyID)?>" data-lightbox-post="tab=hierarchytree" aria-describedby="<?=$describedById?>">
               <i class="result-link-icon fa fa-fw fa-sitemap" aria-hidden="true"></i><span class="hidden-xs hidden-sm"><?=$this->transEsc('hierarchy_view_context')?></span><?php if (count($trees) > 1): ?>: <?=$this->escapeHtml($hierarchyTitle)?><?php endif; ?>
             </a>
           </div>
diff --git a/themes/finc/templates/cart/cart.phtml b/themes/finc/templates/cart/cart.phtml
index 4e6cc6dce33..c047a454277 100644
--- a/themes/finc/templates/cart/cart.phtml
+++ b/themes/finc/templates/cart/cart.phtml
@@ -18,7 +18,8 @@
       <div class="checkbox pull-left flip w-100">
         <label>
           <input type="checkbox" name="selectAll" class="checkbox-select-all"/>
-          <?=$this->transEsc('select_page')?>
+          <?php /* finc: improve label for checkbox-select-all, change token to 'select_page_cart' #19676 */ ?>
+          <?=$this->transEsc('select_page_cart')?>
         </label>
       </div>
       <?php if ($this->userlist()->getMode() !== 'disabled'): ?>
diff --git a/themes/finc/templates/myresearch/bulk-action-buttons.phtml b/themes/finc/templates/myresearch/bulk-action-buttons.phtml
new file mode 100644
index 00000000000..25afa9cc377
--- /dev/null
+++ b/themes/finc/templates/myresearch/bulk-action-buttons.phtml
@@ -0,0 +1,27 @@
+<!-- finc: myresearch - bulk-action-buttons -->
+<?php if (isset($list)): ?>
+  <input type="hidden" name="listID" value="<?=$this->escapeHtmlAttr($list->id)?>" />
+  <input type="hidden" name="listName" value="<?=$this->escapeHtmlAttr($list->title)?>" />
+<?php endif; ?>
+<?php $user = $this->auth()->isLoggedIn(); ?>
+<nav class="bulkActionButtons">
+  <div class="bulk-checkbox">
+    <input type="checkbox" name="selectAll" class="checkbox-select-all" id="myresearchCheckAll"/>
+    <?php /* finc: improve label for myresearchCheckAll, change translation of 'select_page' and remove 'with_selected' #19676 */ ?>
+    <label for="myresearchCheckAll"><?=$this->transEsc('select_page')?>:</label>
+  </div>
+  <ul class="action-toolbar">
+    <li><button class="toolbar-btn btn-type-email" type="submit" name="email" value="1" title="<?=$this->transEscAttr('email_selected')?>"><?=$this->transEsc('Email') ?></button></li>
+    <?php if ((null !== $this->list && $this->list->editAllowed($user)) || null === $this->list && $user): ?>
+      <li><button class="toolbar-btn btn-type-delete" id="<?=$this->idPrefix?>delete_list_items_<?=null !== $this->list ? $this->escapeHtmlAttr($this->list->id) : ''?>" type="submit" name="delete" value="1" title="<?=$this->transEscAttr('delete_selected')?>"><?=$this->transEsc('Delete') ?></button></li>
+    <?php endif; ?>
+    <?php $exportOptions = $this->export()->getActiveFormats('bulk'); if (count($exportOptions) > 0): ?>
+      <li><button class="toolbar-btn btn-type-export" type="submit" name="export" value="1" title="<?=$this->transEscAttr('export_selected')?>"><?=$this->transEsc('Export')?></button></li>
+    <?php endif; ?>
+    <li><button class="toolbar-btn btn-type-print" type="submit" name="print" value="1" title="<?=$this->transEscAttr('print_selected')?>" data-lightbox-ignore><?=$this->transEsc('Print')?></button></li>
+    <?php if ($this->cart()->isActive()): ?>
+      <li><button class="toolbar-btn btn-type-add" id="<?=$this->idPrefix?>updateCart" type="submit" name="add" value="1"><?=$this->transEsc('Add to Book Bag')?></button></li>
+    <?php endif; ?>
+  </ul>
+</nav>
+<!-- finc: myresearch - bulk-action-buttons -->
diff --git a/themes/finc/templates/myresearch/checkedout.phtml b/themes/finc/templates/myresearch/checkedout.phtml
index 069ad818943..38bfb7a461b 100644
--- a/themes/finc/templates/myresearch/checkedout.phtml
+++ b/themes/finc/templates/myresearch/checkedout.phtml
@@ -81,8 +81,8 @@
     <ul class="record-list">
     <?php $i = 0; foreach ($this->transactions as $resource): ?>
       <?php $ilsDetails = $resource->getExtraDetail('ils_details'); ?>
-      <?php /* finc adds aria-label and -describedby #18019 */ ?>
-      <?php $describedById = $resource->getSourceIdentifier() . '|' . $resource->getUniqueId(); ?>
+      <?php /* finc adds aria-label and -describedby #18019, #19676 */ ?>
+      <?php $describedById = $this->record($resource)->getTitleDescribedById(); ?>
       <li id="record<?=$this->escapeHtmlAttr($resource->getUniqueId())?>" class="result">
         <?php if ($this->renewForm): ?>
           <div class="checkbox">
diff --git a/themes/finc/templates/myresearch/historicloans.phtml b/themes/finc/templates/myresearch/historicloans.phtml
index 429f75fb712..23e2d7c11d1 100644
--- a/themes/finc/templates/myresearch/historicloans.phtml
+++ b/themes/finc/templates/myresearch/historicloans.phtml
@@ -75,7 +75,7 @@
                     '" class="title" lang="">' . $title . '</a></h2>';
                 } elseif (isset($ilsDetails['title']) && !empty($ilsDetails['title'])){
                   // If the record is not available in Solr, perhaps the ILS driver sent us a title we can show...
-                  echo '<h2 class="title" id="' . $describedById . '" lang="">' . $this->escapeHtml($ilsDetails['title']) . '</h2>';
+                  echo '<h2 class="title" lang="">' . $this->escapeHtml($ilsDetails['title']) . '</h2>';
                 } else {
                   // Last resort -- indicate that no title could be found.
                   echo $this->transEsc('Title not available');
diff --git a/themes/finc/templates/myresearch/holds.phtml b/themes/finc/templates/myresearch/holds.phtml
index 0b1dacb5b54..408743e5204 100644
--- a/themes/finc/templates/myresearch/holds.phtml
+++ b/themes/finc/templates/myresearch/holds.phtml
@@ -51,8 +51,8 @@
     <?php foreach ($this->recordList as $resource): ?>
       <?php $iteration++; ?>
       <?php $ilsDetails = $resource->getExtraDetail('ils_details'); ?>
-      <?php /* finc adds aria-label and -describedby #18019 */ ?>
-      <?php $describedById = $resource->getSourceIdentifier() . '|' . $resource->getUniqueId(); ?>
+      <?php /* finc adds aria-label and -describedby #18019, #19676 */ ?>
+      <?php $describedById = $this->record($resource)->getTitleDescribedById(); ?>
       <li id="record<?=$this->escapeHtmlAttr($resource->getUniqueId()) ?>" class="result">
         <?php if ($this->cancelForm && isset($ilsDetails['cancel_details'])): ?>
           <?php $safeId = preg_replace('/[^a-zA-Z0-9]/', '', $resource->getUniqueId()); ?>
diff --git a/themes/finc/templates/myresearch/illrequests.phtml b/themes/finc/templates/myresearch/illrequests.phtml
index 6b9d774e707..c0d38e14da0 100644
--- a/themes/finc/templates/myresearch/illrequests.phtml
+++ b/themes/finc/templates/myresearch/illrequests.phtml
@@ -50,8 +50,8 @@
     <?php foreach ($this->recordList as $resource): ?>
       <?php $iteration++; ?>
       <?php $ilsDetails = $resource->getExtraDetail('ils_details'); ?>
-      <?php /* finc adds aria-label and -describedby #18019 */ ?>
-      <?php $describedById = $resource->getSourceIdentifier() . '|' . $resource->getUniqueId(); ?>
+      <?php /* finc adds aria-label and -describedby #18019, #19676 */ ?>
+      <?php $describedById = $this->record($resource)->getTitleDescribedById(); ?>
       <li id="record<?=$this->escapeHtmlAttr($resource->getUniqueId()) ?>" class="result">
         <?php if ($this->cancelForm && isset($ilsDetails['cancel_details'])): ?>
           <?php $safeId = preg_replace('/[^a-zA-Z0-9]/', '', $resource->getUniqueId()); ?>
diff --git a/themes/finc/templates/myresearch/storageretrievalrequests.phtml b/themes/finc/templates/myresearch/storageretrievalrequests.phtml
index 84a14f52494..2e465f57b2a 100644
--- a/themes/finc/templates/myresearch/storageretrievalrequests.phtml
+++ b/themes/finc/templates/myresearch/storageretrievalrequests.phtml
@@ -49,8 +49,8 @@
     <?php foreach ($this->recordList as $resource): ?>
       <?php $iteration++; ?>
       <?php $ilsDetails = $resource->getExtraDetail('ils_details'); ?>
-      <?php /* finc adds aria-label and -describedby #18019 */ ?>
-      <?php $describedById = $resource->getSourceIdentifier() . '|' . $resource->getUniqueId(); ?>
+      <?php /* finc adds aria-label and -describedby #18019, #19676 */ ?>
+      <?php $describedById = $this->record($resource)->getTitleDescribedById(); ?>
       <li id="record<?=$this->escapeHtmlAttr($resource->getUniqueId()) ?>" class="result">
         <?php if ($this->cancelForm && isset($ilsDetails['cancel_details'])): ?>
           <?php $safeId = preg_replace('/[^a-zA-Z0-9]/', '', $resource->getUniqueId()); ?>
diff --git a/themes/finc/templates/record/cart-buttons.phtml b/themes/finc/templates/record/cart-buttons.phtml
index cbf100bd68b..50116081cbe 100644
--- a/themes/finc/templates/record/cart-buttons.phtml
+++ b/themes/finc/templates/record/cart-buttons.phtml
@@ -5,10 +5,10 @@
     <?php /* finc changes span to div */ ?>
     <div class="btn-bookbag-toggle" data-cart-id="<?=$this->escapeHtmlAttr($this->id)?>" data-cart-source="<?=$this->escapeHtmlAttr($this->source)?>">
     <?php /* finc makes add-to/remove-from bookbag accessible for keyboard navigation - CK */ ?>
-    <a href="javascript:" class="cart-add hidden<?php if (!$cart->contains($cartId)): ?> correct<?php endif ?>">
+    <a href="javascript:" class="cart-add hidden<?php if (!$cart->contains($cartId)): ?> correct<?php endif ?>" aria-describedby="<?=$cartId?>">
       <span class="cart-link-label btn-type-add"><?=$this->transEsc('Add to Book Bag')?></span>
     </a>
-    <a href="javascript:" class="cart-remove hidden<?php if ($cart->contains($cartId)): ?> correct<?php endif ?>">
+    <a href="javascript:" class="cart-remove hidden<?php if ($cart->contains($cartId)): ?> correct<?php endif ?>" aria-describedby="<?=$cartId?>">
       <span class="cart-link-label btn-type-minus"><?=$this->transEsc('Remove from Book Bag')?></span>
     </a>
 
diff --git a/themes/finc/templates/record/checkbox.phtml b/themes/finc/templates/record/checkbox.phtml
index a203b76a04a..158a30219e0 100644
--- a/themes/finc/templates/record/checkbox.phtml
+++ b/themes/finc/templates/record/checkbox.phtml
@@ -3,9 +3,20 @@
 <?php $label = isset($this->context) ? 'select_item_' . $this->context : 'select_item'; ?>
 <label class="record-checkbox hidden-print">
   <?php /* finc adds aria-label and -describedby */ ?>
-  <input class="checkbox-select-item" type="checkbox" name="ids[]" value="<?=$this->id?>"<?php if(isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?> aria-describedby="<?=$this->id?>" aria-label="<?=$this->transEscAttr($label)?>"/>
+  <input
+      class="checkbox-select-item"
+      type="checkbox"
+      name="ids[]"
+      value="<?=$this->id?>"<?php if (isset($this->formAttr)): ?>form="<?=$this->formAttr ?>"<?php endif; ?>
+      aria-describedby="<?=$this->id?>"
+      aria-label="<?=$this->transEscAttr($label)?>"
+  />
   <span class="checkbox-icon"></span>
+  <?php /* finc: additional result number description is not needed, finc's checkbox description is more specific #19676 */
+  /*
   <?php if (strlen($this->number ?? '') > 0): ?><span class="sr-only"><?=$this->transEsc('result_checkbox_label', ['%%number%%' => $this->number]) ?></span><?php endif; ?>
+  */
+  ?>
 </label>
-<input type="hidden" name="idsAll[]" value="<?=$this->escapeHtmlAttr($this->id) ?>"<?php if(isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?>/>
+<input type="hidden" name="idsAll[]" value="<?=$this->escapeHtmlAttr($this->id) ?>"<?php if (isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?>/>
 <!-- finc: record - cart-buttons - END -->
diff --git a/themes/finc/templates/search/bulk-action-buttons.phtml b/themes/finc/templates/search/bulk-action-buttons.phtml
index 1d2dbbf49e7..bbdd94824c1 100644
--- a/themes/finc/templates/search/bulk-action-buttons.phtml
+++ b/themes/finc/templates/search/bulk-action-buttons.phtml
@@ -3,9 +3,9 @@
 <nav class="bulkActionButtons hidden-print" aria-label="<?=$this->transEscAttr('bulk_action_navigation')?>">
     <div class="bulk-checkbox">
       <input type="checkbox" class="checkbox-select-all" name="selectAll" id="<?=$this->idPrefix?>addFormCheckboxSelectAll"<?php if ($this->formAttr): ?> form="<?=$this->escapeHtmlAttr($this->formAttr) ?>"<?php endif; ?>/>
+      <?php /* finc: improve label for myresearchCheckAll, change translation of 'select_page' and remove 'with_selected' #19676 */ ?>
       <label for="<?=$this->idPrefix?>addFormCheckboxSelectAll">
-        <?=$this->transEsc('select_page')?>
-        &#124; <?=$this->transEsc('with_selected')?>:
+        <?=$this->transEsc('select_page')?>:
       </label>
     </div>
     <ul class="action-toolbar">
-- 
GitLab