Bug 30699: Fix various HTML validity errors in staff interface templates
This patch fixes several HTML validity issues in various staff
interface templates. Most of these changes won't be visible in the
interface.
- Advanced search:
- Remove stray </a> tags
- Fix duplicate IDs by adding loop.index to repeated dropdown menus
- Circulation
- Fix mismatched label and form field id in checkouts table footer
- Fix mismatched label and form field id claim returned modal
- Remove invalid href attribute from button in claim returned modal
- Wrap relatives' checkouts tab in conditional so that panel doesn't
appear when tab has been hidden
- Fix duplicate id attributes in patron messages-related markup
- Remove redundant class attribute from patron messages-related markup
- Acquisitions -> Vendor -> Basket -> Add to basket -> From staged file
- Remove invalid "size" attribute from hidden form fields
- Circulation -> Holds awaiting pickup
- Fix mismatched label and form field id
- Patron -> Accounting -> Pay fine -> Submit cash amount higher than the
charge
- Remove invalid href attribute from button in confirmation modal
- Fix errors in tab markup WRAPPERs in html_helpers.inc to prevent
mismatched aria-labelledby attributes
- Footer language selector:
- Fix markup to correct errors in aria-controls
- Remove invalid href attribute from cookie consent modal
Sponsored-by: Athens County Public Libraries
Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
parent
8cfce49d14
commit
fee196a0e5
|
|
@ -16,18 +16,18 @@
|
|||
[% WRAPPER tabs_nav %]
|
||||
[% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
|
||||
[% WRAPPER tab_item tabname= "circ_search" bt_active= 1 %]
|
||||
<i class="fa fa-fw fa-upload" aria-hidden="true"></i> <span class="tab-title">Check out</span></a>
|
||||
<i class="fa fa-fw fa-upload" aria-hidden="true"></i> <span class="tab-title">Check out</span>
|
||||
[% END %]
|
||||
[% WRAPPER tab_item tabname= "checkin_search" %]
|
||||
<i class="fa fa-fw fa-download" aria-hidden="true"></i> <span class="tab-title">Check in</span></a>
|
||||
<i class="fa fa-fw fa-download" aria-hidden="true"></i> <span class="tab-title">Check in</span>
|
||||
[% END %]
|
||||
[% WRAPPER tab_item tabname= "renew_search" %]
|
||||
<i class="fa fa-fw fa-retweet" aria-hidden="true"></i> <span class="tab-title">Renew</span></a>
|
||||
<i class="fa fa-fw fa-retweet" aria-hidden="true"></i> <span class="tab-title">Renew</span>
|
||||
[% END %]
|
||||
[% END %]
|
||||
[% IF ( CAN_user_borrowers_edit_borrowers ) %]
|
||||
[% WRAPPER tab_item tabname= "patron_search" %]
|
||||
<i class="fa fa-fw fa-id-card" aria-hidden="true"></i> <span class="tab-title">Search patrons</span></a>
|
||||
<i class="fa fa-fw fa-id-card" aria-hidden="true"></i> <span class="tab-title">Search patrons</span>
|
||||
[% END %]
|
||||
[% END %]
|
||||
[% END # /WRAPPER tabs_nav %]
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
[% END %]
|
||||
<div class="date-select">
|
||||
<p><label for="newduedate">Renewal due date:</label> <input type="text" size="20" id="newduedate" name="newduedate" value="" class="flatpickr" data-flatpickr-enable-time="true"/></p>
|
||||
<p id="newonholdduedate"><label for="newonholdduedate">On hold due date:</label> <input type="text" size="20" name="newonholdduedate" value="" class="flatpickr" data-flatpickr-enable-time="true" /></p>
|
||||
<p id="newonholdduedate"><label for="newonholdduedatefield">On hold due date:</label> <input type="text" size="20" name="newonholdduedate" value="" id="newonholdduedatefield" class="flatpickr" data-flatpickr-enable-time="true" /></p>
|
||||
<p><label for="exemptfine">Forgive fines on return:</label> <input type="checkbox" id="exemptfine" name="exemptfine" value="1" /></p>
|
||||
</div>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -395,9 +395,9 @@
|
|||
[% END %]
|
||||
[% IF ( bt_active ) %]
|
||||
[% IF (linktab) %]
|
||||
<a class="nav-link active" href="?tab=[% tabname | url %]" id="[% tabname | uri %]-tab">
|
||||
<a class="nav-link active" href="?tab=[% tabname | url %]" id="[% tabname | html %]-tab">
|
||||
[% ELSE %]
|
||||
<a class="nav-link active" href="#[% tabname | uri %]_panel" id="[% tabname | uri %]-tab" data-tabname="[% tabname | uri %]" aria-controls="[% tabname | uri %]_panel" role="tab" data-bs-toggle="tab" data-bs-target="#[% tabname | uri %]_panel">
|
||||
<a class="nav-link active" href="#[% tabname | uri %]_panel" id="[% tabname | html %]-tab" data-tabname="[% tabname | uri %]" aria-controls="[% tabname | uri %]_panel" role="tab" data-bs-toggle="tab" data-bs-target="#[% tabname | uri %]_panel">
|
||||
[% END %]
|
||||
[% ELSE %]
|
||||
[% IF (linktab) %]
|
||||
|
|
@ -420,9 +420,9 @@
|
|||
|
||||
[% BLOCK tab_panel %]
|
||||
[% IF ( bt_active ) %]
|
||||
<div class="tab-pane show active" id="[% tabname | html %]_panel" role="tabpanel" aria-labelledby="[% tabname | html %]" tabindex="0">
|
||||
<div class="tab-pane show active" id="[% tabname | html %]_panel" role="tabpanel" aria-labelledby="[% tabname | html %]-tab" tabindex="0">
|
||||
[% ELSE %]
|
||||
<div class="tab-pane" id="[% tabname | html %]_panel" role="tabpanel" aria-labelledby="[% tabname | html %]" tabindex="0">
|
||||
<div class="tab-pane" id="[% tabname | html %]_panel" role="tabpanel" aria-labelledby="[% tabname | html %]-tab" tabindex="0">
|
||||
[% END %]
|
||||
[% content| $raw %]
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -13,10 +13,10 @@
|
|||
[% UNLESS ( one_language_enabled ) %]
|
||||
<div id="changelanguage" class="navbar navbar-expand navbar-light bg-light">
|
||||
<div class="container-fluid">
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#nav_lang_menu" aria-controls="nav_lang_menu" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse">
|
||||
<div class="collapse navbar-collapse" id="nav_lang_menu">
|
||||
<ul id="i18nMenu" class="navbar-nav me-auto">
|
||||
[% FOREACH languages_loo IN languages_loop %]
|
||||
[% IF ( languages_loo.group_enabled ) %]
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
<button type="button" class="btn btn-primary consentAcceptAll">Accept all cookies</button>
|
||||
<button type="button" class="btn btn-success" id="consentAcceptSelected">Accept selected non-essential cookies</button>
|
||||
[% END %]
|
||||
<a type="button" href="#" class="btn btn-secondary consentCloseModal">Cancel</a>
|
||||
<button type="button" class="btn btn-secondary consentCloseModal">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- /.modal-content -->
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
[% END %]
|
||||
|
||||
[% IF CAN_user_borrowers_edit_borrowers %]
|
||||
<a id="addnewmessageLabel" href="#add_message_form" data-bs-toggle="modal" class="btn btn-default"><i class="fa-solid fa-comment"></i> Add message</a>
|
||||
<a id="toolbar_addnewmessageLabel" href="#add_message_form" data-bs-toggle="modal" class="btn btn-default"><i class="fa-solid fa-comment"></i> Add message</a>
|
||||
[% END %]
|
||||
|
||||
[% IF Koha.Preference('CurbsidePickup') %]
|
||||
|
|
@ -129,7 +129,7 @@
|
|||
</li>
|
||||
[% ELSE %]
|
||||
<li data-bs-toggle="tooltip" data-bs-placement="left" title="Patron is an adult">
|
||||
<a class="dropdown-item disabled" aria-disabled="true" id="updatechild" href="#">Update child to adult patron</a>
|
||||
<button class="dropdown-item disabled" aria-disabled="true" id="updatechild">Update child to adult patron</button>
|
||||
</li>
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
|
@ -150,7 +150,7 @@
|
|||
</div>
|
||||
|
||||
<!-- Modal -->
|
||||
<div id="add_message_form" class="modal" tabindex="-1" role="dialog" aria-labelledby="addnewmessageLabel" aria-hidden="true">
|
||||
<div id="add_message_form" class="modal" tabindex="-1" role="dialog" aria-labelledby="addnewmessageLabel toolbar_addnewmessageLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content modal-lg">
|
||||
<form method="post" action="/cgi-bin/koha/circ/add_message.pl" id="message_form" name="message_f">
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<div class="modal-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="claims-returned-resolved-code">Resolution</label>
|
||||
<label for="claims-returned-resolved-modal-resolved-code">Resolution</label>
|
||||
[% SET resolutions = AuthorisedValues.GetAuthValueDropbox('RETURN_CLAIM_RESOLUTION') %]
|
||||
<select class="form-select" id="claims-returned-resolved-modal-resolved-code">
|
||||
[% FOREACH r IN resolutions %]
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
<i id="claims-returned-resolved-modal-btn-submit-spinner" class="fa fa-spinner fa-pulse fa-fw" style="display:none"></i>
|
||||
Resolve claim
|
||||
</button>
|
||||
<button class="btn btn-default deny cancel" href="#" data-bs-dismiss="modal"><i class="fa fa-times"></i> Cancel</button>
|
||||
<button class="btn btn-default deny cancel" data-bs-dismiss="modal"><i class="fa fa-times"></i> Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -90,9 +90,11 @@
|
|||
[% INCLUDE "checkouts-table.inc" %]
|
||||
[% END # /tab_panel# %]
|
||||
|
||||
[% WRAPPER tab_panel tabname="relatives-issues" %]
|
||||
[% INCLUDE "relatives-issues-table.inc" %]
|
||||
[% END # /tab_panel# %]
|
||||
[% IF relatives_issues_count %]
|
||||
[% WRAPPER tab_panel tabname="relatives-issues" %]
|
||||
[% INCLUDE "relatives-issues-table.inc" %]
|
||||
[% END # /tab_panel# %]
|
||||
[% END %]
|
||||
|
||||
[% IF ( guarantees_fines ) %]
|
||||
[% WRAPPER tab_panel tabname="guarantees_finesandcharges" %]
|
||||
|
|
@ -169,7 +171,7 @@
|
|||
[% IF hold_cancellation.count %]
|
||||
<label for="cancellation-reason">Cancellation reason:</label>
|
||||
<input type="hidden" name="op" value="cud-cancelall" />
|
||||
<select name="cancellation-reason">
|
||||
<select name="cancellation-reason" id="cancellation-reason">
|
||||
<option value="">No reason given</option>
|
||||
[% FOREACH reason IN hold_cancellation %]
|
||||
<option value="[% reason.authorised_value | html %]">[% reason.lib | html %]</option>
|
||||
|
|
|
|||
|
|
@ -379,7 +379,7 @@
|
|||
<div id="edit_message_form_[% pm.message_id | html %]" class="modal" tabindex="-1" aria-labelledby="#edit_message_form_[% patron_message.message_id | html %]" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<form method="post" action="/cgi-bin/koha/circ/add_message.pl" id="message_form" name="message_f">
|
||||
<form method="post" action="/cgi-bin/koha/circ/add_message.pl" id="edit_message_form" name="message_f">
|
||||
[% INCLUDE 'csrf-token.inc' %]
|
||||
<input type="hidden" name="op" value="cud-edit_message">
|
||||
<input type="hidden" name="message_id" value="[% pm.message_id | html %]"/>
|
||||
|
|
@ -388,9 +388,9 @@
|
|||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label for="message_type">
|
||||
<label for="edit_message_type">
|
||||
Message is for:
|
||||
<select name="message_type" id="message_type" disabled>
|
||||
<select name="message_type" id="edit_message_type" disabled>
|
||||
[% IF pm.message_type == "L" %]
|
||||
<option value="L" selected="selected">Staff - Internal note</option>
|
||||
[% ELSE %]
|
||||
|
|
@ -406,7 +406,7 @@
|
|||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<textarea rows="3" class="modal-textarea" name="borrower_message" id="borrower_message" >[% pm.message | html %]</textarea>
|
||||
<textarea rows="3" class="modal-textarea" name="borrower_message" id="edit_borrower_message" >[% pm.message | html %]</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
[% USE Koha %]
|
||||
[% IF refiner %]
|
||||
<select class="advsearch" name="idx" id="refiner_idx">
|
||||
<select class="advsearch" name="idx" id="refiner_idx_[% index | html %]">
|
||||
[% ELSE %]
|
||||
<select class="advsearch" name="idx" id="idx">
|
||||
<select class="advsearch" name="idx" id="idx_[% index | html %]">
|
||||
[% END %]
|
||||
[% IF ms_kw %]
|
||||
<option selected="selected" value="kw">Keyword</option>
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@
|
|||
<li class="fund">
|
||||
[% IF ( close ) %]
|
||||
<label for="fund_record_[% biblio.import_record_id | html %]">Fund: </label>
|
||||
<input type="hidden" size="20" name="budget_id" value="[% budget_id | html %]" />[% Budget_name | html %]
|
||||
<input type="hidden" name="budget_id" value="[% budget_id | html %]" />[% Budget_name | html %]
|
||||
[% ELSE %]
|
||||
<label for="fund_record_[% biblio.import_record_id | html %]">Fund: </label>
|
||||
<select id="fund_record_[% biblio.import_record_id | html %]" name="budget_id_[% biblio.import_record_id | html %]">
|
||||
|
|
@ -486,7 +486,7 @@
|
|||
[% IF ( close ) %]
|
||||
<li>
|
||||
<span class="label">Fund: </span>
|
||||
<input type="hidden" size="20" name="budget_id" id="budget_id" value="[% budget_id | html %]" />[% Budget_name | html %]
|
||||
<input type="hidden" name="budget_id" id="budget_id" value="[% budget_id | html %]" />[% Budget_name | html %]
|
||||
</li>
|
||||
[% ELSE %]
|
||||
<li>
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@
|
|||
<div>
|
||||
[% END %]
|
||||
[% SET preselect = 'ms_' _ indexes.${loop.index}.replace(',','comma') %]
|
||||
[% INCLUDE 'search_indexes.inc' ${preselect} = 1 %]
|
||||
[% INCLUDE 'search_indexes.inc' ${preselect} = 1 index = loop.index %]
|
||||
<input type="text" size="30" name="q" title="Enter search terms" value="[% query | html %]" />
|
||||
[% IF ( expanded_options ) %]
|
||||
[% IF ( loop.last ) %]
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@
|
|||
<fieldset class="action">
|
||||
[% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
|
||||
[% IF hold_cancellation.count %]
|
||||
<label for="cancellation-reason">Cancellation reason: </label>
|
||||
<label for="modal-cancellation-reason">Cancellation reason: </label>
|
||||
<select class="cancellation-reason" name="modal-cancellation-reason" id="modal-cancellation-reason">
|
||||
<option value="">No reason given</option>
|
||||
[% FOREACH reason IN hold_cancellation %]
|
||||
|
|
|
|||
|
|
@ -425,7 +425,7 @@
|
|||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-default approve" id="modal_submit" type="button"><i class="fa fa-check"></i> Yes</button>
|
||||
<button class="btn btn-default deny cancel" href="#" data-bs-dismiss="modal"><i class="fa fa-times"></i> No</button>
|
||||
<button class="btn btn-default deny cancel" data-bs-dismiss="modal"><i class="fa fa-times"></i> No</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1451,7 +1451,7 @@
|
|||
<fieldset class="action">
|
||||
[% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
|
||||
[% IF hold_cancellation.count %]
|
||||
<label for="cancellation-reason">Cancellation reason: </label>
|
||||
<label for="modal-cancellation-reason">Cancellation reason: </label>
|
||||
<select class="cancellation-reason" name="cancellation-reason" id="modal-cancellation-reason">
|
||||
<option value="">No reason given</option>
|
||||
[% FOREACH reason IN hold_cancellation %]
|
||||
|
|
|
|||
Loading…
Reference in New Issue