From 827c0c8387b12d26f268f75742020ad92b6788e7 Mon Sep 17 00:00:00 2001 From: Alexander Purr <purr@ub.uni-leipzig.de> Date: Mon, 12 Apr 2021 17:27:45 +0200 Subject: [PATCH] refs #19274 [fid_bbi] accessibility fixes * use html lists for record listings * add aria-described by for checkboxes ** set label context --- themes/fid_bbi/scss/blocks/record-list.scss | 11 +++++++++++ themes/fid_bbi/scss/compiled.scss | 1 + .../RecordDriver/DefaultRecord/list-entry.phtml | 8 +++++--- themes/fid_bbi/templates/myresearch/mylist.phtml | 3 ++- themes/fid_bbi/templates/record/checkbox.phtml | 4 ++-- themes/fid_bbi/templates/search/list-list.phtml | 8 +++++--- themes/fid_bbi/templates/search/results.phtml | 2 ++ 7 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 themes/fid_bbi/scss/blocks/record-list.scss diff --git a/themes/fid_bbi/scss/blocks/record-list.scss b/themes/fid_bbi/scss/blocks/record-list.scss new file mode 100644 index 00000000000..033a94b416f --- /dev/null +++ b/themes/fid_bbi/scss/blocks/record-list.scss @@ -0,0 +1,11 @@ +//// Result List ol, ul that contains li.result or facet group that contains li.facet +// comes from finc +.record-list { + list-style: none; + margin: 0; + padding: 0; + + li::before { + content: none; + } +} \ No newline at end of file diff --git a/themes/fid_bbi/scss/compiled.scss b/themes/fid_bbi/scss/compiled.scss index cf811b1949e..100aebd6f2a 100644 --- a/themes/fid_bbi/scss/compiled.scss +++ b/themes/fid_bbi/scss/compiled.scss @@ -47,6 +47,7 @@ @import 'blocks/posts'; @import 'blocks/post'; @import 'blocks/record'; +@import 'blocks/record-list'; @import 'blocks/result'; @import 'blocks/results'; @import 'blocks/rvk'; diff --git a/themes/fid_bbi/templates/RecordDriver/DefaultRecord/list-entry.phtml b/themes/fid_bbi/templates/RecordDriver/DefaultRecord/list-entry.phtml index ef8b7a7490a..a9c2d072858 100644 --- a/themes/fid_bbi/templates/RecordDriver/DefaultRecord/list-entry.phtml +++ b/themes/fid_bbi/templates/RecordDriver/DefaultRecord/list-entry.phtml @@ -33,7 +33,7 @@ $formatIconMappings = json_decode(file_get_contents($formatIconMappingsFile), tr $icon = $formatIconMappings[$format] ?? 'unknown'; ?> -<div class="result<?php if ($this->driver->supportsAjaxStatus()): ?> ajaxItem<?php endif ?>"> +<li class="result<?php if ($this->driver->supportsAjaxStatus()): ?> ajaxItem<?php endif ?>"> <input type="hidden" value="<?=$this->escapeHtmlAttr($id)?>" class="hiddenId"/> <input type="hidden" value="<?=$this->escapeHtmlAttr($source)?>" class="hiddenSource"/> @@ -44,16 +44,18 @@ $icon = $formatIconMappings[$format] ?? 'unknown'; <div class="result_details"> <h3 class="result_title resultItemLine1"> <?php $missing = $this->driver instanceof \VuFind\RecordDriver\Missing; ?> + <?php $describedById = $driver->getSourceIdentifier() . '|' . $driver->getUniqueId(); ?> <?php if (!$missing): ?> <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="getFull" data-view="<?=$this->params->getOptions()->getListViewOption()?>" + id="<?=$describedById?>" > <?=$this->record($this->driver)->getTitleHtml()?> </a> <?php else: ?> - <?=$this->record($this->driver)->getTitleHtml()?> + <span id="<?=$describedById?>"><?=$this->record($this->driver)->getTitleHtml()?></span> <?php endif; ?> </h3> @@ -301,5 +303,5 @@ $icon = $formatIconMappings[$format] ?? 'unknown'; <?php endif; ?> <?php endif; ?> </div> -</div> +</li> <!-- fid_bbi: RecordDriver - DefaultRecord - list-entry - END --> diff --git a/themes/fid_bbi/templates/myresearch/mylist.phtml b/themes/fid_bbi/templates/myresearch/mylist.phtml index 6313a08cfd0..ae75d713c5b 100644 --- a/themes/fid_bbi/templates/myresearch/mylist.phtml +++ b/themes/fid_bbi/templates/myresearch/mylist.phtml @@ -101,10 +101,11 @@ $user = $this->auth()->isLoggedIn(); data-lightbox-onsubmit="bulkFormHandler" > <?=$this->context($this)->renderInContext('myresearch/bulk-action-buttons.phtml', ['idPrefix' => '', 'list' => $list ?? null, 'account' => $this->account])?> - + <ul class="record-list"> <?php foreach ($this->results->getResults() as $i => $current): ?> <?=$this->record($current)->getListEntry($list, $user)?> <?php endforeach; ?> + </ul> </form> <?=$this->paginationControl($this->results->getPaginator(), 'Sliding', 'search/pagination.phtml', ['results' => $this->results])?> diff --git a/themes/fid_bbi/templates/record/checkbox.phtml b/themes/fid_bbi/templates/record/checkbox.phtml index f320511608a..6dee80d9bff 100644 --- a/themes/fid_bbi/templates/record/checkbox.phtml +++ b/themes/fid_bbi/templates/record/checkbox.phtml @@ -9,7 +9,7 @@ * @author Tobias Schäfer <ts@aspectis.net> */ ?> - +<?php $label = isset($this->context) ? 'select_item_' . $this->context : 'select_item'; ?> <?php $id = 'checkbox-' . uniqid(); ?> <?php // NOTE: `class` is required by favorites list JS ?> <input @@ -20,7 +20,7 @@ value="<?=$this->id?>" <?=isset($this->formAttr) ? "form='$this->formAttr'" : ""?> aria-describedby="<?=$this->id?>" - aria-label="<?=$this->transEsc('select_item')?>" + aria-label="<?=$this->transEsc($label)?>" > <label for="<?=$id?>"> <?php if (strlen($this->number ?? '') > 0): ?> diff --git a/themes/fid_bbi/templates/search/list-list.phtml b/themes/fid_bbi/templates/search/list-list.phtml index 6a90306f783..939c5cd06ee 100644 --- a/themes/fid_bbi/templates/search/list-list.phtml +++ b/themes/fid_bbi/templates/search/list-list.phtml @@ -6,11 +6,12 @@ if (!isset($this->indexStart)) { $i = $this->indexStart; ?> - +<?php $listStart = $this->results->getStartRecord() + $i - $this->indexStart; ?> +<ol class="record-list" start="<?=$listStart?>"> <?php foreach ($this->results->getResults() as $current): ?> <?php $i++; ?> - <div id="result<?=$i?>" class="result <?=$current->supportsAjaxStatus() ? 'ajaxItem': ''?>"> + <li id="result<?=$i?>" class="result <?=$current->supportsAjaxStatus() ? 'ajaxItem': ''?>"> <?php // TODO: Remove? ?> <?php $recordNumber = $this->results->getStartRecord() + $i - $this->indexStart; ?> <span id="jump<?=$recordNumber?>"></span> @@ -20,8 +21,9 @@ $i = $this->indexStart; <?php endif; ?> <?=$this->record($current)->getSearchResult('list')?> - </div> + </li> <?php $i++; ?> <?php endforeach; ?> +</ol> <!-- fid_bbi: search - list-list - END --> diff --git a/themes/fid_bbi/templates/search/results.phtml b/themes/fid_bbi/templates/search/results.phtml index 496cf3cfd50..9d79541f2cc 100644 --- a/themes/fid_bbi/templates/search/results.phtml +++ b/themes/fid_bbi/templates/search/results.phtml @@ -1,5 +1,7 @@ <!-- fid_bbi: search - results --> <?php +$this->context = 'search_result'; + $lookfor = $this->results->getUrlQuery()->isQuerySuppressed() ? '' : $this->params->getDisplayQuery(); $recordTotal = $this->results->getResultTotal(); -- GitLab