diff --git a/local/languages/de.ini b/local/languages/de.ini index c0b5aeabfe3151d51a8468ebacb1bfca6b6267fc..543fd6499f2e45d161d2ae565e9af9121272955e 100644 --- a/local/languages/de.ini +++ b/local/languages/de.ini @@ -2065,3 +2065,6 @@ select_item_hold_cancel = "Titel auswählen, um Bestellung oder Vormerkung zu st select_item_checked_out_renew = "Titel zum Verlängern auswählen" select_item_ill_request_cancel = "Titel auswählen, um Fernleihanfrage zu stornieren" select_item_storage_retrieval_request_cancel = "Titel auswählen, um Magazinbestellung zu stornieren" + +; #17915 +toggle-dropdown = "Untermenü aufklappen" diff --git a/local/languages/en.ini b/local/languages/en.ini index f66672e884b3fc36d65fbd500f3e63f7975e59ea..ac07e3194069d996547b5e2b19670ebc414a6cb2 100644 --- a/local/languages/en.ini +++ b/local/languages/en.ini @@ -2148,3 +2148,6 @@ select_item_storage_retrieval_request_cancel = "Select item for canceling storag Edit this Advanced Search = "Edit this Search" Start a new Advanced Search = "New Advanced Search" Start a new Basic Search = "New Basic Search" + +; #17915 +toggle-dropdown = "Toggle Dropdown" diff --git a/themes/finc-accessibility/templates/channels/channelList.phtml b/themes/finc-accessibility/templates/channels/channelList.phtml new file mode 100644 index 0000000000000000000000000000000000000000..1224ee29b4180f3f85758c83d6180da2301c045b --- /dev/null +++ b/themes/finc-accessibility/templates/channels/channelList.phtml @@ -0,0 +1,74 @@ +<!-- finc-accessibility: channels - channelList --> +<?php /* copied from bootstrap3 - #17915 - add aria-label - HR */ ?> +<?php + $this->headLink()->appendStylesheet('vendor/slick.css'); + $this->headLink()->appendStylesheet('vendor/slick-theme.css'); + $this->headScript()->appendFile('vendor/slick.min.js'); + $this->headScript()->appendFile('channels.js'); + $this->headScript()->appendFile('vendor/jquery.dotdotdot.min.js'); + $this->jsTranslations()->addStrings([ + 'channel_browse' => 'channel_browse', + 'channel_expand' => 'channel_expand', + 'channel_search' => 'channel_search', + 'nohit_heading' => 'nohit_heading', + 'View Record' => 'View Record', + ]); + + $finalChannels = []; + $finalCount = 0; + foreach ($channels as $current) { + if (isset($current['contents'])) { + $finalChannels[] = $current; + $finalCount++; + } elseif ($finalCount > 0 && isset($current['token'])) { + $finalChannels[$finalCount - 1]['relatedTokens'][] = $current; + } + } +?> + +<?php if (empty($token)): ?> + <form action="<?=$this->url('channels-search')?>" class="channel-search form-inline"> + <?=$this->transEsc('channel_searchbox_label')?> + <input type="text" name="lookfor" class="form-control" value="<?=$this->escapeHtmlAttr($this->lookfor) ?>" aria-label="<?=$this->transEsc('search_terms') ?>"/> + <input type="submit" value="<?=$this->escapeHtmlAttr($this->translate('Submit'))?>" class="btn btn-default" aria-label="<?=$this->transEsc('Submit') ?>" /> + </form> +<?php endif; ?> + +<?php $insideButton = false; ?> +<?php foreach ($finalChannels as $channel): ?> + <?php + $groupId = $channel['groupId'] ?? $channel['providerId']; + $channelID = 'channel-' . md5(serialize($channel)); + ?> + <div class="channel-wrapper"> + <div class="channel-title"> + <h2><?=$this->escapeHtml($channel['title'])?></h2> + </div> + + <?php if (count($channel['relatedTokens'] ?? []) > 0): ?> + <div class="channel-add-menu hidden" data-group="<?=$groupId ?>"> + <button type="button" class="add-btn btn btn-link"><?=$this->transEsc('channel_add_more') ?></button><!-- + --><button type="button" class="btn btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="<?=$this->transEsc('toggle-dropdown') ?>"> + <span class="caret"></span> + </button> + <ul class="dropdown-menu"> + <?php foreach ($channel['relatedTokens'] as $related): ?> + <li><a href="<?=current(explode('?', $this->serverUrl(true)))?>?<?=empty($queryParams) ? '' : $this->escapeHtmlAttr($queryParams . '&')?>channelProvider=<?=urlencode($related['providerId']) ?>&channelToken=<?=urlencode($related['token']) ?>&layout=lightbox" data-token="<?=$related['token'] ?>"><?=$this->escapeHtml($this->truncate($related['title'], 100)) ?></a></li> + <?php endforeach; ?> + </ul> + </div> + <?php endif; ?> + + <div id="<?=$channelID ?>" class="channel" data-group="<?=$groupId ?>" data-link-json='<?=empty($channel['links']) ? '[]' : json_encode($channel['links']) ?>'> + <!-- Wrapper for slides --> + <?php foreach ($channel['contents'] as $index => $item): ?> + <a href="<?=empty($item['routeDetails']) ? $this->recordLink()->getUrl("{$item['source']}|{$item['id']}") : $this->url($item['routeDetails']['route'], $item['routeDetails']['params'])?>" class="channel-record slide hidden" data-record-id="<?=$this->escapeHtmlAttr($item['id']) ?>" data-record-source="<?=$item['source'] ?>" title="<?=$this->escapeHtml($item['title'])?>"> + <div class="thumb"> + <img <?=$index < 6 ? "src" : "data-lazy" ?>="<?=$this->escapeHtmlAttr($item['thumbnail'] ? $item['thumbnail'] : $this->url('cover-unavailable'))?>"/> + </div> + <?=$this->escapeHtml($item['title'])?> + </a> + <?php endforeach; ?> + </div> + </div> +<?php endforeach; ?> diff --git a/themes/finc/js/channels.js b/themes/finc/js/channels.js index 0667f0d44a6703bb28bf845f263b43f0b0d2c5df..c6f232cdf3aa589f8a661fea1df2acebd7914e9e 100644 --- a/themes/finc/js/channels.js +++ b/themes/finc/js/channels.js @@ -9,7 +9,7 @@ VuFind.register('channels', function Channels() { } var $cont = $( '<div class="dropdown">' + - ' <button class="btn btn-link" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">' + + ' <button class="btn btn-link" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true" aria-label="' + VuFind.translate('toggle-dropdown') + '">' + ' <i class="fa fa-caret-square-o-down"></i>' + ' </button>' + '</div>' diff --git a/themes/finc/templates/header.phtml b/themes/finc/templates/header.phtml index 1f64dd68a52fb9b8c1732260854b20eebae2fc2d..7a37482bbcc7ac0c29756766a026eb3335cba979 100644 --- a/themes/finc/templates/header.phtml +++ b/themes/finc/templates/header.phtml @@ -10,8 +10,7 @@ <?php /* This element only holds the mobile toggler and the navbar-brand/library name - CK */ ?> <div class="navbar-header"> <?php /* mobile navigation toggler - CK */ ?> - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#header-collapse"> - <span class="sr-only"><?=$this->transEsc("mobile_toggle_navigation_text")?></span> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#header-collapse" aria-label="<?=$this->transEsc("mobile_toggle_navigation_text")?>"> <i class="fa fa-bars" aria-hidden="true"></i> </button> <?php /* remove h1 from header and use h1 in content area instead - CK*/ ?> @@ -32,7 +31,7 @@ <ul class="nav navbar-nav navbar-right flip"> <?php if ($this->feedback()->tabEnabled()): ?> <li> - <a id="feedbackLink" data-lightbox class="btn" href="<?=$this->url('feedback-home')?>"> <i class="fa fa-envelope" aria-hidden="true"></i><span class="sr-only"><?=$this->transEsc("Feedback")?></span></a> + <a id="feedbackLink" data-lightbox class="btn" href="<?=$this->url('feedback-home')?>" aria-label="<?=$this->transEsc("Feedback")?>"> <i class="fa fa-envelope" aria-hidden="true"></i></a> </li> <?php endif; ?> <?php $cart = $this->cart(); diff --git a/themes/finc/templates/layout/layout.phtml b/themes/finc/templates/layout/layout.phtml index fac3c55ea90673bac2a47b954084ead02a7cc4a3..0ec319d7ed627ac142d57492d419004954a8393c 100644 --- a/themes/finc/templates/layout/layout.phtml +++ b/themes/finc/templates/layout/layout.phtml @@ -233,8 +233,7 @@ if (!isset($this->layout()->searchbox)) { <div id="modal" class="modal fade hidden-print" tabindex="-1" role="dialog" aria-modal="true" aria-labelledby="modal-title" aria-hidden="true" aria-describedby="modal-description"> <div class="modal-dialog"> <div class="modal-content"> - <button type="button" class="close" data-dismiss="modal" tabindex="0"> - <span class="sr-only"><?= $this->transEsc('CloseModal') ?></span> + <button type="button" class="close" data-dismiss="modal" tabindex="0" aria-label="<?= $this->transEsc('CloseModal') ?>"> <i class="fa fa-times" aria-hidden="true"></i> </button> <div class="sr-only" id="modal-description"> diff --git a/themes/finc/templates/librarycards/editcard.phtml b/themes/finc/templates/librarycards/editcard.phtml index 3bd6a5481027a6d283402970989b1ba2f0f5df08..9a7926db76b7240eaabdc86e678bccbaf0ab8cb3 100644 --- a/themes/finc/templates/librarycards/editcard.phtml +++ b/themes/finc/templates/librarycards/editcard.phtml @@ -39,7 +39,7 @@ <input id="login_password" type="password" name="password" value="" placeholder="<?=!empty($this->card->id) ? $this->escapeHtmlAttr($this->translate('library_card_edit_password_placeholder')) : ''?>" class="form-control"/> </div> <div class="form-group"> - <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Save') ?>"/> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Save') ?>" aria-label="<?=$this->transEsc('Save') ?>"/> </div> </form> <!-- finc - templates - librarycards - editcard - END --> diff --git a/themes/finc/templates/myresearch/edit.phtml b/themes/finc/templates/myresearch/edit.phtml index bb73f1956319e23e36bd55da9fbce3729b9cb02f..0484ff434fbfb08d8b1806970c946cb7d0545bd3 100644 --- a/themes/finc/templates/myresearch/edit.phtml +++ b/themes/finc/templates/myresearch/edit.phtml @@ -59,7 +59,7 @@ <?php endif; ?> <?php if (!empty($this->savedData) || count($this->lists) > 0): ?> <div class="form-group"> - <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Save') ?>"/> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Save') ?>" aria-label="<?=$this->transEsc('Save') ?>"/> </div> <?php endif; ?> </form> diff --git a/themes/finc/templates/myresearch/editlist.phtml b/themes/finc/templates/myresearch/editlist.phtml index 404b909125b30f167479a694f4585849df6e6ca8..364c4bbfdcb32d92f55bd280129b06a8bfe3c24e 100644 --- a/themes/finc/templates/myresearch/editlist.phtml +++ b/themes/finc/templates/myresearch/editlist.phtml @@ -45,7 +45,7 @@ </div> <?php endif; ?> <div class="form-group"> - <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Save') ?>"/> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Save') ?>" aria-label="<?=$this->transEsc('Save') ?>"/> </div> </form> <!-- finc - templates - myresearch - editlist - END --> diff --git a/themes/finc/templates/myresearch/holds.phtml b/themes/finc/templates/myresearch/holds.phtml index d46127d4fc138748d752e11aa24f6a2dee01a031..67298804196e4d9e207e1ce0adfa587ddc096a96 100644 --- a/themes/finc/templates/myresearch/holds.phtml +++ b/themes/finc/templates/myresearch/holds.phtml @@ -24,7 +24,7 @@ <input type="hidden" id="submitType" name="cancelSelected" value="1"/> <input type="hidden" id="cancelConfirm" name="confirm" value="0"/> <div class="btn-group"> - <input id="cancelSelected" name="cancelSelected" type="submit" value="<?=$this->transEsc("hold_cancel_selected") ?>" class="btn btn-default dropdown-toggle" data-toggle="dropdown"/> + <input id="cancelSelected" name="cancelSelected" type="submit" value="<?=$this->transEsc("hold_cancel_selected") ?>" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-label="<?=$this->transEsc("hold_cancel_selected") ?>"/> <ul class="dropdown-menu"> <li class="disabled"><a><?=$this->transEsc("confirm_hold_cancel_selected_text") ?></a></li> <li><a href="#" onClick="$('#cancelConfirm').val(1);$('#submitType').attr('name','cancelSelected');$(this).parents('form').submit(); return false;"><?=$this->transEsc('confirm_dialog_yes') ?></a></li> @@ -32,7 +32,7 @@ </ul> </div> <div class="btn-group"> - <input id="cancelAll" name="cancelAll" type="submit" value="<?=$this->transEsc("hold_cancel_all") ?>" class="btn btn-default dropdown-toggle" data-toggle="dropdown"/> + <input id="cancelAll" name="cancelAll" type="submit" value="<?=$this->transEsc("hold_cancel_all") ?>" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-label="<?=$this->transEsc("hold_cancel_all") ?>"/> <ul class="dropdown-menu"> <li class="disabled"><a><?=$this->transEsc("confirm_hold_cancel_all_text") ?></a></li> <li><a href="#" onClick="$('#cancelConfirm').val(1);$('#submitType').attr('name','cancelAll');$(this).parents('form').submit(); return false;"><?=$this->transEsc('confirm_dialog_yes') ?></a></li> diff --git a/themes/finc/templates/myresearch/profile.phtml b/themes/finc/templates/myresearch/profile.phtml index c5be5678f25c4b72e5504658f67ba08856ea784b..8360cd61d7bb948c9826c2a4ef1c035eaa4718fe 100644 --- a/themes/finc/templates/myresearch/profile.phtml +++ b/themes/finc/templates/myresearch/profile.phtml @@ -44,7 +44,7 @@ value="<?= $this->escapeHtmlAttr($lib['locationID']) ?>"<?= ($selected == $lib['locationID']) ? ' selected="selected"' : '' ?>><?= $this->transEsc('location_' . $lib['locationDisplay'], null, $lib['locationDisplay']) ?></option> <?php endforeach; ?> </select> - <input class="btn btn-default" type="submit" value="<?= $this->transEsc('Save') ?>"/> + <input class="btn btn-default" type="submit" value="<?= $this->transEsc('Save') ?>" aria-label="<?= $this->transEsc('Save') ?>"/> </form> </td> <?php endif; ?> diff --git a/themes/finc/templates/search/advanced/layout.phtml b/themes/finc/templates/search/advanced/layout.phtml index 10453d28ce049b94643f250672bbbd6111ad451d..d21f9a5a648256858e6bf7eacdd92097bcd473b9 100644 --- a/themes/finc/templates/search/advanced/layout.phtml +++ b/themes/finc/templates/search/advanced/layout.phtml @@ -118,7 +118,7 @@ if (isset($searchDetails) && is_object($searchDetails)) { <option value="<?=$this->escapeHtml($searchVal)?>"<?php if(isset($setQueries[$group][$search]) && $searchVal == $setQueries[$group][$search]->getHandler()):?> selected<?php endif;?>><?=$this->transEsc($searchDesc)?></option> <?php endforeach; ?> </select> - <a href="javascript:void(0);" class="adv-term-remove hidden"><span class="sr-only"><?=$this->transEsc("remove")?></span><i class="fa fa-times" aria-hidden="true"></i></a> + <a href="javascript:void(0);" class="adv-term-remove hidden" aria-label="<?=$this->transEsc("remove")?>"><i class="fa fa-times" aria-hidden="true"></i></a> </div> <?php if($group == 0 && $search == 0): ?> </div> @@ -151,16 +151,16 @@ if (isset($searchDetails) && is_object($searchDetails)) { </div> <?php /* finc: introduce 'fnd-btn'-class to swap submit and clear buttons for consistency */ ?> <div class="adv-submit"> - <input class="clear-btn btn btn-transparent" type="button" value="<?=$this->transEsc('Clear')?>"> - <input class="fnd-btn btn btn-primary" type="submit" value="<?= $this->transEsc('Find')?>"> + <input class="clear-btn btn btn-transparent" type="button" value="<?=$this->transEsc('Clear')?>" aria-label="<?=$this->transEsc('Clear')?>"> + <input class="fnd-btn btn btn-primary" type="submit" value="<?= $this->transEsc('Find')?>" aria-label="<?= $this->transEsc('Find')?>"> </div> <?php if (isset($this->extraAdvancedControls)): ?> <div class="clearfix"> <?=$this->extraAdvancedControls ?> </div> <div class="adv-submit margin-t margin-btm"> - <input class="clear-btn btn btn-transparent" type="button" value="<?=$this->transEsc('Clear')?>"> - <input class="fnd-btn btn btn-primary" type="submit" value="<?= $this->transEsc('Find')?>"> + <input class="clear-btn btn btn-transparent" type="button" value="<?=$this->transEsc('Clear')?>" aria-label="<?=$this->transEsc('Clear')?>"> + <input class="fnd-btn btn btn-primary" type="submit" value="<?= $this->transEsc('Find')?>" aria-label="<?= $this->transEsc('Find')?>"> </div> <?php endif; ?> </div> diff --git a/themes/finc/templates/search/newitem.phtml b/themes/finc/templates/search/newitem.phtml index 75049b76728d99909875fd5c5c842176e1c25d1c..a4af3a11f2d6a141fb86eef281d19a124529a40b 100644 --- a/themes/finc/templates/search/newitem.phtml +++ b/themes/finc/templates/search/newitem.phtml @@ -34,7 +34,7 @@ </select> </div> <?php endif; ?> - <input class="btn btn-primary" type="submit" name="submit" value="<?= $this->transEsc('Find') ?>"/> + <input class="btn btn-primary" type="submit" name="submit" value="<?= $this->transEsc('Find') ?>" aria-label="<?= $this->transEsc('Find')?>"/> </form> </div> <!-- finc - templates - search - newitem - END --> diff --git a/themes/finc/templates/search/reserves.phtml b/themes/finc/templates/search/reserves.phtml index 8a78cc689175398c7ad2ec16c11537797f64f4ae..723436e1af346726ff1688b88290f313811629a6 100644 --- a/themes/finc/templates/search/reserves.phtml +++ b/themes/finc/templates/search/reserves.phtml @@ -26,7 +26,7 @@ <option value="<?=$this->escapeHtmlAttr($courseId)?>"><?=$this->escapeHtml($courseName)?></option> <?php endforeach; ?> </select> - <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>"/> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>" aria-label="<?= $this->transEsc('Find')?>"/> </div> <?php endif; ?> @@ -39,7 +39,7 @@ <option value="<?=$this->escapeHtmlAttr($instId)?>"><?=$this->escapeHtml($instName)?></option> <?php endforeach; ?> </select> - <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>"/> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>" aria-label="<?= $this->transEsc('Find')?>"/> </div> <?php endif; ?> @@ -52,7 +52,7 @@ <option value="<?=$this->escapeHtmlAttr($deptId)?>"><?=$this->escapeHtml($deptName)?></option> <?php endforeach; ?> </select> - <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>"/> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>" aria-label="<?= $this->transEsc('Find')?>"/> </div> <?php endif; ?> </form> diff --git a/themes/finc/templates/search/searchbox.phtml b/themes/finc/templates/search/searchbox.phtml index 6529d9cf80bec94a36c23c786561f41c587cdffa..7821f78003dd9af01c916e4dbdd60f7fb8b5e871 100644 --- a/themes/finc/templates/search/searchbox.phtml +++ b/themes/finc/templates/search/searchbox.phtml @@ -59,7 +59,7 @@ $hiddenFilterParams = $this->searchTabs()->getCurrentHiddenFilterParams($this->s <?php elseif ($handlerCount == 1): ?> <input type="hidden" name="type" value="<?=$this->escapeHtmlAttr($handlers[0]['value'])?>"/> <?php endif; ?> - <button type="submit" class="btn btn-primary"><i class="fa fa-search" aria-hidden="true"></i> <span class="find-label sr-only"><?=$this->transEsc("Find")?></span></button> + <button type="submit" class="btn btn-primary" aria-label="<?=$this->transEsc("Find")?>"><i class="fa fa-search" aria-hidden="true"></i></button> <?php if ($advSearch): ?> <a href="<?=$this->url($advSearch) . ((isset($this->searchId) && $this->searchId) ? '?edit=' . $this->escapeHtmlAttr($this->searchId) : $hiddenFilterParams)?>" class="btn btn-transparent" role="button" rel="nofollow" aria-label="<?=$this->transEsc("Advanced")?>"><i class="fa fa-cog"></i> <span class="hidden-xs hidden-sm hidden-md"><?=$this->transEsc("Advanced")?></span></a> <?php endif; ?>