This patch attempts to replace <i> with <em> AND <b> with <strong> in
order to more accessible to screen readers. This patch makes no attempt
to change Font Awesome icons which typically use <i>. I found templates,
includes and XSLT by using 'git grep ‘<b>’
koha-tmpl/opac-tmpl/bootstrap/en/' and git grep ‘<i>’
koha-tmpl/opac-tmpl/bootstrap/en/
TEST PLAN:
There should be no visible difference on the changed pages. The files
changed are:
koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc
koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-note.inc
koha-tmpl/opac-tmpl/bootstrap/en/modules/clubs/enroll.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-auth-MARCdetail.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-authoritiessearchresultlist.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-browser.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-course-details.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-downloadshelf.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-messaging.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-opensearch.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-overdrive-search.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-privacy.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results-grouped.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-review.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shareshelf.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/NORMARCslim2OPACResults.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl
koha-tmpl/opac-tmpl/xslt/OAI.xslt
Read the changes and make sure everything looks correct, try to visit as
many pages as possible and confirm that everything looks as it should.
grep around for cases of <b> or <i> that I could have missed.
Signed-off-by: Timothy Alexis Vass <timothy_alexis.vass@ub.lu.se>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
(cherry picked from commit
d3036d46ba4b26df040a25f960c3bc3081734c26)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit
25d820f3226c6116d064591abc67e2463a571f50)
Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>
(cherry picked from commit
eb9650bb1aa01abb8cf6721f35b077f8421313aa)
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
<i class="fa fa-exclamation-circle text-warning"></i>
[% IF ( HOLD.is_at_destination ) %]
[% IF ( HOLD.found ) %]
- Item waiting at <b> [% HOLD.branch.branchname | html %]</b>
+ Item waiting at <strong> [% HOLD.branch.branchname | html %]</strong>
[% IF ( HOLD.waitingdate ) %]
since [% HOLD.waitingdate | $KohaDates %]
[% IF HOLD.expirationdate %]
[% END %]
<input type="hidden" name="pickup" value="[% HOLD.branchcode | html %]" />
[% ELSE %]
- Item waiting to be pulled from <b> [% Branches.GetName( HOLD.branchcode ) | html %]</b>
+ Item waiting to be pulled from <strong> [% Branches.GetName( HOLD.branchcode ) | html %]</strong>
[% END %]
[% ELSE %]
- Item in transit to <b> [% Branches.GetName( HOLD.branchcode ) | html %]</b> <input type="hidden" name="pickup" value="[% HOLD.branchcode | html %]" />
+ Item in transit to <strong> [% Branches.GetName( HOLD.branchcode ) | html %]</strong> <input type="hidden" name="pickup" value="[% HOLD.branchcode | html %]" />
[% END %]
[% ELSE %]
[% IF ( HOLD.is_in_transit ) %]
[% SET transfer = HOLD.item.get_transfer %]
- Item in transit from <b> [% Branches.GetName( transfer.frombranch ) | html %]</b> since
+ Item in transit from <strong> [% Branches.GetName( transfer.frombranch ) | html %]</strong> since
[% transfer.datesent | $KohaDates %]
[% ELSIF ( HOLD.suspend ) %]
Suspended [% IF ( HOLD.suspend_until ) %] until [% HOLD.suspend_until | $KohaDates %] [% END %]
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
[% IF HOLD.suspend %]
- <h3 id="suspendModal[% HOLD.reserve_id | html %]Label">Resume your hold on <i>[% HOLD.biblio.title | html %]</i></h3>
+ <h3 id="suspendModal[% HOLD.reserve_id | html %]Label">Resume your hold on <em>[% HOLD.biblio.title | html %]</em></h3>
[% ELSE %]
- <h3 id="suspendModal[% HOLD.reserve_id | html %]Label">Suspend your hold on <i>[% HOLD.biblio.title | html %]</i></h3>
+ <h3 id="suspendModal[% HOLD.reserve_id | html %]Label">Suspend your hold on <em>[% HOLD.biblio.title | html %]</em></h3>
[% END %]
</div>
<div class="modal-body">
[% FOREACH message IN patron_messages %]
<li>
<strong>[% message.message | html %]</strong><br>
- <i>Written on [% message.message_date | $KohaDates %] by [% Branches.GetName(message.branchcode) | html %]</i>
+ <em>Written on [% message.message_date | $KohaDates %] by [% Branches.GetName(message.branchcode) | html %]</em>
</li>
[% END %]
[% SET AuthorisedValuesCategories = AuthorisedValues.GetCategories %]
<h3>
- Enroll in <i>[% club.name | html %]</i>
+ Enroll in <em>[% club.name | html %]</em>
</h3>
<div class="container">
<h1>Entry [% authtypetext | html %]</h1>
<p><a href="opac-search.pl?type=opac&q=[% authid | uri %]&idx=an,phr">Number of records used in: [% count | html %]</a></p>
[% FOREACH Tag0X IN Tab0XX %]
- <p><b>[% Tag0X.tag | html %]</b></p>
+ <p><strong>[% Tag0X.tag | html %]</strong></p>
<ul>
[% FOREACH subfiel IN Tag0X.subfield %]
- <li><b>[% subfiel.marc_lib | $raw %]:</b>
+ <li><strong>[% subfiel.marc_lib | $raw %]:</strong>
[% IF subfiel.isurl %]<a href="[% subfiel.marc_value | url %]">[% subfiel.marc_value | html %]</a>
[% ELSE %][% subfiel.marc_value | html %][% END %]</li>
[% END %]
<div id="results">
[% IF ( total ) %]
[% IF ( countfuzzy ) %]
- <p><b>Showing [% resultcount | html %] of about [% total | html %] results</b></p>
+ <p><strong>Showing [% resultcount | html %] of about [% total | html %] results</strong></p>
[% ELSE %]
- <p><b>Results [% from | html %] to [% to | html %] of [% total | html %]</b></p>
+ <p><strong>Results [% from | html %] to [% to | html %] of [% total | html %]</strong></p>
[% END %]
[% ELSE %]
No results found.
<a href="opac-browser.pl?level=[% LEVEL_LOO.level | uri %]&filter=[% LEVEL_LOO.classification |uri %]">[% LEVEL_LOO.description | html %]</a>
[% END %]
</p>
- <p style="font-size:0.75em"><i>([% LEVEL_LOO.number | html %] biblios)</i></p>
+ <p style="font-size:0.75em"><em>([% LEVEL_LOO.number | html %] biblios)</em></p>
</td>
[% IF ( LEVEL_LOO.count3 ) %]</tr><tr>[% END %]
[% END %]
<ul class="breadcrumb">
<li><a href="/cgi-bin/koha/opac-main.pl">Home</a> <span class="divider">›</span></li>
<li><a href="/cgi-bin/koha/opac-course-reserves.pl">Course reserves</a> <span class="divider">›</span></li>
- <li><a href="#">Course reserves for <i>[% course.course_name | html %]</i></a></li>
+ <li><a href="#">Course reserves for <em>[% course.course_name | html %]</em></a></li>
</ul>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
- <h2>Course reserves for <i>[% course.course_name | html %]</i></h2>
+ <h2>Course reserves for <em>[% course.course_name | html %]</em></h2>
<div class="rows">
<ol>
[% IF ( course.term ) %]<li><span class="label">Term:</span> [% AuthorisedValues.GetByCode( 'TERM', course.term, 1 ) | html %]</li>[% END %]
<h3>Table of contents provided by Syndetics</h3>
<ul>
[% FOREACH SYNDETICS_TO IN SYNDETICS_TOC %]
- <li><b>[% SYNDETICS_TO.l | html %] [% SYNDETICS_TO.t | html %]</b>[% IF ( SYNDETICS_TO.p ) %] ([% SYNDETICS_TO.p | html %])[% END %]</li>
+ <li><strong>[% SYNDETICS_TO.l | html %] [% SYNDETICS_TO.t | html %]</strong>[% IF ( SYNDETICS_TO.p ) %] ([% SYNDETICS_TO.p | html %])[% END %]</li>
[% END %]
</ul>
</div>
[% END %]
<span class="divider">›</span>
</li>
- <li>Download list <i>[% shelf.shelfname | html %]</i></li>
+ <li>Download list <em>[% shelf.shelfname | html %]</em></li>
</ul>
<div class="container-fluid">
<div class="row-fluid">
<p>Your download should begin automatically.</p>
</div>
[% ELSE %]
- <h1>Download list <i>[% shelf.shelfname | html %]</i></h1>
+ <h1>Download list <em>[% shelf.shelfname | html %]</em></h1>
<form method="post" action="/cgi-bin/koha/opac-downloadshelf.pl">
<fieldset>
<select name="format" id="dlformat" required="required">
<ol><li><label>Notice:</label>Some charges for text messages may be incurred when using this service. Please check with your mobile service provider if you have questions.</li></ol>
<ol><li>
<label for="SMSnumber">SMS number:</label> <input type="text" id="SMSnumber" name="SMSnumber" value="[% SMSnumber | html %]" pattern="^\+?[1-9]\d{1,14}$" />
- <i>Please enter numbers only. <b>(123) 456-7890</b> would be entered as <b>1234567890</b>.</i>
+ <em>Please enter numbers only. <strong>(123) 456-7890</strong> would be entered as <strong>1234567890</strong>.</em>
</li></ol>
[% END %]
[% END %]
[% END %]
</select>
- <i>Please contact a library staff member if you are unsure of your mobile service provider, or you do not see your provider in this list.</i>
+ <em>Please contact a library staff member if you are unsure of your mobile service provider, or you do not see your provider in this list.</em>
</li></ol>
[% END %]
</fieldset>
[% IF ( SEARCH_RESULT.isbn ) %] [% SEARCH_RESULT.isbn | html %][% END %]
</p>
[% IF Koha.Preference( 'RequestOnOpac' ) == 1 %]
-<p><a href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]">Place Hold on <i>[% SEARCH_RESULT.title | html %]</i></a></p>
+<p><a href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-reserve.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]">Place Hold on <em>[% SEARCH_RESULT.title | html %]</em></a></p>
[% END %]
]]></description>
<guid>[% OPACBaseURL | url %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]</guid>
function ( data ) {
if ( data.error ) return;
- $availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="available"><b>' + _("Items available:") + ' </b>' + data.copiesAvailable + " " + _("out of") + ' ' + data.copiesOwned + '</span>' );
+ $availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="available"><strong>' + _("Items available:") + ' </strong>' + data.copiesAvailable + " " + _("out of") + ' ' + data.copiesOwned + '</span>' );
if ( data.numberOfHolds ) {
$availability_summary.find( '.available' ).append( ', ' + _("waiting holds:") + ' <strong>' + data.numberOfHolds + '</strong>' );
<h2>Immediate deletion</h2>
<form action="/cgi-bin/koha/opac-privacy.pl" method="post" id="opac-privacy-delete-form">
<input type="hidden" name="op" value="delete_record" />
- <p>Whatever your privacy rule you choose, you can delete all your reading history immediately by clicking here. <b>BE CAREFUL</b>. Once you've confirmed the deletion, no one can retrieve the list!</p>
+ <p>Whatever your privacy rule you choose, you can delete all your reading history immediately by clicking here. <strong>BE CAREFUL</strong>. Once you've confirmed the deletion, no one can retrieve the list!</p>
<input type="submit" value="Immediate deletion" class="btn btn-danger" onclick="return confirmDelete(MSG_CONFIRM_AGAIN);" />
</form>
[% IF Koha.Preference('StoreLastBorrower') %]<p id="store-last-borrower-msg">Please note, the last person to return an item is tracked for the management of items returned damaged.</p>[% END %]
[% IF ( GROUP_RESULT.pages ) %] - [% GROUP_RESULT.pages | html %][% END %]
[% IF ( GROUP_RESULT.notes ) %] : [% GROUP_RESULT.notes | html %][% END %]
[% IF ( GROUP_RESULT.size ) %] ; [% GROUP_RESULT.size | html %][% END %]
- [% IF ( GROUP_RESULT.timestamp ) %] <i>(modified on [% GROUP_RESULT.timestamp | html %])</i>[% END %]
+ [% IF ( GROUP_RESULT.timestamp ) %] <em>(modified on [% GROUP_RESULT.timestamp | html %])</em>[% END %]
</p>
[% IF ( GROUP_RESULT.searchhighlightblob ) %]
<p class="searchhighlightblob">[% GROUP_RESULT.searchhighlightblob | html %]</p>
[% IF ( SEARCH_RESULT.pages ) %]. [% SEARCH_RESULT.pages | html %][% END %]
[% IF ( SEARCH_RESULT.notes ) %], [% SEARCH_RESULT.notes | html %][% END %]
[% IF ( SEARCH_RESULT.size ) %] [% SEARCH_RESULT.size | html %][% END %]
- [% IF ( SEARCH_RESULT.timestamp ) %] <i>(modified on [% SEARCH_RESULT.timestamp | html %])</i>[% END %]
+ [% IF ( SEARCH_RESULT.timestamp ) %] <em>(modified on [% SEARCH_RESULT.timestamp | html %])</em>[% END %]
</span>
[% IF ( SEARCH_RESULT.summary ) %]
</div>
[% END # / ERRORs %]
- <h1>Comments on <i>[% title | html %] [% subtitle | html %]</i></h1>
+ <h1>Comments on <em>[% title | html %] [% subtitle | html %]</em></h1>
[% IF ( author ) %]<h3>[% author | html %]</h3>[% END %]
<form id="reviewf" action="/cgi-bin/koha/opac-review.pl[% IF ( cgi_debug ) %]?debug=1[% END %]" method="post">
<input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
[% ELSIF op=='conf_invite' %]
<div id="conf_invite">
[% IF approvedaddress %]
- <p>An invitation to share list <i>[% shelfname | html %]</i> will be sent shortly to [% approvedaddress | html %].</p>
+ <p>An invitation to share list <em>[% shelfname | html %]</em> will be sent shortly to [% approvedaddress | html %].</p>
[% END %]
[% IF failaddress %]
<p>Something went wrong while processing the following addresses. Please check them. These are: [% failaddress | html %]</p>
[% END %]
[% IF op == 'view' %]
- <li><span class="divider">›</span> Contents of <i>[% shelf.shelfname | html %]</i></li>
+ <li><span class="divider">›</span> Contents of <em>[% shelf.shelfname | html %]</em></li>
[% END %]
[% IF op == 'add_form' %]
[% END %]
[% IF op == 'edit_form' %]
- <li><span class="divider">›</span> Edit list <i>[% shelf.shelfname | html %]</i></li>
+ <li><span class="divider">›</span> Edit list <em>[% shelf.shelfname | html %]</em></li>
[% END %]
</ul> <!-- / .breadcrumb -->
<td class="title">
<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% ISSUE.biblionumber | html %]">[% ISSUE.title | html %] [% FOREACH subtitl IN ISSUE.subtitle %] [% subtitl.subfield | html %][% END %]</a>
[% IF ( ISSUE.enumchron ) %] [% ISSUE.enumchron | html %][% END %]
- [% IF ( ISSUE.onsite_checkout ) %] <i class="onsite_checkout">(On-site checkout)</i>[% END %]
+
+ [% IF ( ISSUE.onsite_checkout ) %] <em class="onsite_checkout">(On-site checkout)</em>[% END %]
</td>
<td class="author">[% ISSUE.author | html %]</td>
[% ar.item.enumchron | html %]
</a>
[% ar.biblio.author | html %]
- [% IF ar.itemnumber %] <i>(only [% ar.item.barcode | html %])</i>[% END %]
+ [% IF ar.itemnumber %] <em>(only [% ar.item.barcode | html %])</em>[% END %]
</td>
<td class="article-request-created_on">
<xsl:variable name="available_items" select="key('item-by-status', 'available')"/>
<xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch-home', concat(items:status, ' ', items:homebranch))[1])]">
<xsl:choose>
- <xsl:when test="$OPACItemLocation='location'"><b><xsl:value-of select="concat(items:location,' ')"/></b></xsl:when>
- <xsl:when test="$OPACItemLocation='ccode'"><b><xsl:value-of select="concat(items:ccode,' ')"/></b></xsl:when>
+ <xsl:when test="$OPACItemLocation='location'"><strong><xsl:value-of select="concat(items:location,' ')"/></strong></xsl:when>
+ <xsl:when test="$OPACItemLocation='ccode'"><strong><xsl:value-of select="concat(items:ccode,' ')"/></strong></xsl:when>
</xsl:choose>
<xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"><span class="CallNumber"><xsl:value-of select="items:itemcallnumber"/></span></xsl:if>
<xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
<xsl:variable name="reference_items" select="key('item-by-status', 'reference')"/>
<xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch-home', concat(items:status, ' ', items:homebranch))[1])]">
<xsl:choose>
- <xsl:when test="$OPACItemLocation='location'"><b><xsl:value-of select="concat(items:location,' ')"/></b></xsl:when>
- <xsl:when test="$OPACItemLocation='ccode'"><b><xsl:value-of select="concat(items:ccode,' ')"/></b></xsl:when>
+ <xsl:when test="$OPACItemLocation='location'"><strong><xsl:value-of select="concat(items:location,' ')"/></strong></xsl:when>
+ <xsl:when test="$OPACItemLocation='ccode'"><strong><xsl:value-of select="concat(items:ccode,' ')"/></strong></xsl:when>
</xsl:choose>
<xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"><span class="CallNumber"><xsl:value-of select="items:itemcallnumber"/></span></xsl:if>
<xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
<xsl:when test="count(key('item-by-status', 'available'))>0">
<span class="available">
- <b><xsl:text>Items available for loan: </xsl:text></b>
+ <strong><xsl:text>Items available for loan: </xsl:text></strong>
<xsl:variable name="available_items" select="key('item-by-status', 'available')"/>
<xsl:choose>
<xsl:when test="$singleBranchMode=1">
<xsl:choose>
<xsl:when test="count(key('item-by-status', 'reference'))>0">
<span class="available">
- <b><xsl:text>Items available for reference: </xsl:text></b>
+ <strong><xsl:text>Items available for reference: </xsl:text></strong>
<xsl:variable name="reference_items"
select="key('item-by-status', 'reference')"/>
<xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
</xsl:when>
<xsl:when test="count(key('item-by-status', 'available'))>0">
<span class="available">
- <b><xsl:text>Items available for loan: </xsl:text></b>
+ <strong><xsl:text>Items available for loan: </xsl:text></strong>
<xsl:variable name="available_items" select="key('item-by-status', 'available')"/>
<xsl:choose>
<xsl:when test="$singleBranchMode=1">
<xsl:choose>
<xsl:when test="count(key('item-by-status', 'reference'))>0">
<span class="available">
- <b><xsl:text>Items available for reference: </xsl:text></b>
+ <strong><xsl:text>Items available for reference: </xsl:text></strong>
<xsl:variable name="reference_items"
select="key('item-by-status', 'reference')"/>
<xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch-home', concat(items:status, ' ', items:homebranch))[1])]">
<hr />
<table class="table table-striped table-bordered">
<tr>
- <td><b>Repository Name</b></td>
+ <td><strong>Repository Name</strong></td>
<td><xsl:value-of select="oai:repositoryName/text()" /></td>
</tr>
<xsl:for-each select="oai:adminEmail">
<tr>
- <td><b>E-Mail Contact</b></td>
+ <td><strong>E-Mail Contact</strong></td>
<td>
<a>
<xsl:attribute name="href">
</tr>
</xsl:for-each>
<tr>
- <td><b>Repository identifier</b></td>
+ <td><strong>Repository identifier</strong></td>
<td>
<xsl:value-of select="oai:description/oai_id:oai-identifier/oai_id:repositoryIdentifier/text()" />
</td>
</tr>
<tr>
- <td><b>Sample identifier</b></td>
+ <td><strong>Sample identifier</strong></td>
<td>
<xsl:value-of
select="oai:description/oai_id:oai-identifier/oai_id:sampleIdentifier/text()" />
</td>
</tr>
<tr>
- <td><b>Protocol Version</b></td>
+ <td><strong>Protocol Version</strong></td>
<td>
<xsl:value-of
select="oai:protocolVersion/text()" />
</tr>
<tr>
- <td><b>Earliest Registered Date</b></td>
+ <td><strong>Earliest Registered Date</strong></td>
<td>
<xsl:value-of
select="translate(oai:earliestDatestamp/text(), 'TZ' ,' ')" />
</tr>
<tr>
- <td><b>Date Granularity</b></td>
+ <td><strong>Date Granularity</strong></td>
<td>
<xsl:value-of
select="translate(oai:granularity/text(), 'TZ', ' ')" />
</tr>
<tr>
- <td><b>Deletion Mode</b></td>
+ <td><strong>Deletion Mode</strong></td>
<td>
<xsl:value-of
select="oai:deletedRecord/text()" />