LP#1268636 My account various repairs
authorBill Erickson <berick@esilibrary.com>
Wed, 8 Jan 2014 21:29:15 +0000 (16:29 -0500)
committerBill Erickson <berick@esilibrary.com>
Tue, 11 Feb 2014 14:24:06 +0000 (09:24 -0500)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Dan Scott <dscott@laurentian.ca>
19 files changed:
Open-ILS/src/templates/opac/css/style.css.tt2
Open-ILS/src/templates/opac/myopac/circ_history.tt2
Open-ILS/src/templates/opac/myopac/circs.tt2
Open-ILS/src/templates/opac/myopac/hold_history.tt2
Open-ILS/src/templates/opac/myopac/holds.tt2
Open-ILS/src/templates/opac/myopac/lists.tt2
Open-ILS/src/templates/opac/myopac/main.tt2
Open-ILS/src/templates/opac/myopac/main_payment_form.tt2
Open-ILS/src/templates/opac/myopac/main_payments.tt2
Open-ILS/src/templates/opac/myopac/prefs.tt2
Open-ILS/src/templates/opac/myopac/prefs_my_lists.tt2
Open-ILS/src/templates/opac/myopac/prefs_notify.tt2
Open-ILS/src/templates/opac/myopac/prefs_settings.tt2
Open-ILS/src/templates/opac/parts/bookbag_actions.tt2
Open-ILS/src/templates/opac/parts/header.tt2
Open-ILS/src/templates/opac/parts/myopac/base.tt2
Open-ILS/src/templates/opac/parts/myopac/main_base.tt2
Open-ILS/src/templates/opac/parts/myopac/prefs_base.tt2
Open-ILS/src/templates/opac/parts/result/table.tt2

index 3beb4ee..a5220fb 100644 (file)
@@ -2004,3 +2004,4 @@ a.preflib_change {
         table#acct_holds_main_header td:nth-of-type(9):before { content: "[% l('Status') %]"; }
         table#acct_holds_main_header td.hold_notes:before { content: "[% l('Notes') %]"; }
 }
+
index 4582e81..025f568 100644 (file)
@@ -26,7 +26,7 @@
             <a href='[% mkurl('circ_history', {limit => limit, offset => (offset + limit)}) %]'
                [% IF ctx.circs.size < limit %] class='invisible' [% END %] >[% l('Next') %]<span class="nav_arrow_fix">&#9658;</span></a>
         </span>
-        <span class="float-left">
+        <div class="float-left">
             <form action="[% mkurl(ctx.opac_root _ '/myopac/circ_history/export') %]" method="post">
                 <div>
                     [%- INCLUDE "opac/parts/preserve_params.tt2" %]
@@ -36,7 +36,7 @@
                     [% END %]
                 </div>
             </form>
-        </span>
+        </div>
     </div>
     <div class="clear-both"></div>
 
@@ -45,7 +45,8 @@
     [% ELSE %]
 
     <div id='checked_main'>
-        <table id="acct_checked_main_header">
+        <table id="acct_checked_main_header"
+            title="[% l('History of Items Checked Out') %]">
             <thead>
                 <tr>
                     <th>[% l('Title / Author') %]</th>
@@ -63,7 +64,9 @@
                     <tr>
                         <td>
                             <a href="[% mkurl(ctx.opac_root _ '/record/' _ circ.circ.target_copy.call_number.record.id) %]" 
-                                name="[% l('Catalog record') %]">[% attrs.title | html %]</a>
+                                [% html_text_attr('title', l('Catalog record [_1]', attrs.title)) %]>
+                                [% attrs.title | html %]
+                            </a>
                             [% IF attrs.author %] /
                             <a href="[% mkurl(ctx.opac_root _ '/results',
                                 {qtype => 'author', query => attrs.author.replace('[,\.:;]', '')}
index 8d856e1..3229ede 100644 (file)
     <div id='checked_main'>
         <form method="post" id="circ-form"
             onsubmit="return confirm('[% l("Are you sure you wish to renew the selected item(s)?") %]');">
-        <table class="table_no_border_space table_no_cell_pad item_list_padding">
-            <tr>
-                <td>
-                    <select name="action">
-                        <option value="renew">[% l('Renew Selected Titles') %]</option>
-                    </select>
-                </td>
-                <td style="padding-left:9px;">
-                    <input type="submit"
-                        value="[% l('Go') %]"
-                        alt="[% l('Go') %]" title="[% l('Go') %]"
-                        class="opac-button" />
-                </td>
-                <td style="padding-left:5px;">
-                    <a href="#"><img alt="[% l('Renewing Help') %]"
-                        src="[% ctx.media_prefix %]/images/question-mark.png" /></a>
-                </td>
-            </tr>
-        </table>
-        <table id="acct_checked_main_header" cellpadding='0' cellspacing='0' border='0'>
+        <div>
+            <span>
+                <select name="action" title="[% l('Select Action') %]">
+                    <option value="renew">[% l('Renew Selected Titles') %]</option>
+                </select>
+            </span>
+            <span style="padding-left:9px;">
+                <input type="submit"
+                    value="[% l('Go') %]"
+                    title="[% l('Go') %]"
+                    class="opac-button" />
+            </span>
+            <span style="padding-left:5px;">
+                <a href="#"><img 
+                    alt="[% l('Renewing Help') %]"
+                    title="[% l('Actions for checked out items') %]"
+                    src="[% ctx.media_prefix %]/images/question-mark.png" /></a>
+            </span>
+        </div>
+
+        <table id="acct_checked_main_header" 
+            title="[% l('Items Checked Out') %]"
+            class="table_no_border_space table_no_cell_pad item_list_padding">
             <thead>
             <tr>
                 <th class="checkbox_column">
                     <input type="checkbox" id="check_all_checked"
-                        onclick="var inputs=document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i++) { if (inputs[i].name == 'circ' && !inputs[i].disabled) inputs[i].checked = this.checked;}"
+                        title="[% l('Select All Items') %]"
+                        onclick="var inputs=document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i++) { if (inputs[i].name == 'circ' &amp;&amp; !inputs[i].disabled) inputs[i].checked = this.checked;}"
                     />
                 </th>
                 <th>[% l('Title / Author') %]</th>
                 <th>[% l('Call number') %]</th>
             </tr>
             </thead>
-            <tbody>
+                <tbody>
                     [% FOR circ IN ctx.circs;
                         attrs = {marc_xml => circ.marc_xml};
                         PROCESS get_marc_attrs args=attrs; %]
                     <tr>
                         <td class="checkbox_column" valign="top">
                             <input type="checkbox" name="circ"
+                                title="[% l('Item Selected') %]"
                                 [% IF circ.circ.renewal_remaining < 1 %] disabled="disabled" [% END %]
                                 value="[% circ.circ.id %]" />
                         </td>
                     </tr>
                     [%  END;
                     END %]
-                </table>
-            </div>
-        </div>
+                </tbody>
+            </table>
         </form>
     </div>
     [% END %]
index 7276c9d..60e9b13 100644 (file)
             <big><strong>[% l('No holds found.') %]</strong></big>
         </div>
         [% ELSE %]
-        <table style='border-collapse:collapse; width: 100%;'>
+        <table style='border-collapse:collapse; width: 100%;'
+            title="[% l('History of items on hold') %]">
             <thead id='acct_holds_main_header'>
                 <tr>
-                    <td width="138"><span>[% l('Title') %]</span></td>
-                    <td width="123"><span>[% l('Author') %]</span></td>
-                    <td width="64"> <span>[% l('Format') %]</span></td>
-                    <td width="136"><span>[% l('Pickup Location') %]</span> </td>
-                    <td width="104">[% l('Active On') %]</td>
-                    <td width="95">[% l('Active') %]</td>
-                    <td width="106">[% l('Date Fulfilled') %]</td>
-                    <td width="172"><span>[% l('Status') %]</span></td>
+                    <td><span>[% l('Title') %]</span></td>
+                    <td><span>[% l('Author') %]</span></td>
+                    <td> <span>[% l('Format') %]</span></td>
+                    <td><span>[% l('Pickup Location') %]</span> </td>
+                    <td>[% l('Active On') %]</td>
+                    <td>[% l('Active') %]</td>
+                    <td>[% l('Date Fulfilled') %]</td>
+                    <td><span>[% l('Status') %]</span></td>
                 </tr>
             </thead>
             <tbody>
                     PROCESS get_marc_attrs args=attrs;
                     ahr = hold.hold.hold %]
 
-                <tr id="acct_holds_temp" name="acct_holds_temp" class="acct_holds_temp">
+                <tr name="acct_holds_temp" class="acct_holds_temp">
 
-                    <td width="138">
+                    <td>
                         <div style="margin-top:10px;margin-bottom:10px;">
                             <a href="[% mkurl(ctx.opac_root _ '/record/' _ hold.hold.bre_id) %]">[% attrs.title | html %]</a>
                         </div>
                     </td>
-                    <td width="123">
+                    <td>
                         <div style="margin-top:10px;margin-bottom:10px;">
                             <a href="[% mkurl(ctx.opac_root _ '/results',
                                 {qtype => author, query => attrs.author.replace('[,\.:;]', '')}
                             ) %]">[% attrs.author | html %]</a>
                         </div>
                     </td>
-                    <td width="64">
+                    <td>
                         <div style="width:26px;height:23px;margin-top:6px;margin-bottom:6px;">
                             [% IF attrs.format_icon %]
                             <img title="[% attrs.format_label | html %]" alt="[% attrs.format_label | html %]" src="[% attrs.format_icon %]" />
                             [% END %]
                         </div>
                     </td>
-                    <td width="136">
+                    <td>
                         [% ctx.get_aou(ahr.pickup_lib).name | html %]
                     </td>
-                    <td width="104">
+                    <td>
                         [% IF ahr.frozen == 't' AND ahr.thaw_date;
                             date.format(ctx.parse_datetime(ahr.thaw_date), DATE_FORMAT);
                         END %]
                     </td>
-                    <td width="95">
+                    <td>
                         [% l(ahr.frozen == 'f' ? 'Active' : 'Suspended') %]
                     </td>
-                    <td width="106">
+                    <td>
                         [% IF ahr.fulfillment_time;
                             date.format(ctx.parse_datetime(ahr.fulfillment_time), DATE_FORMAT);
                         END %]
                     </td>
-                    <td width="110">
+                    <td>
                         <div name="acct_holds_status"
                             style="margin-top:10px;margin-bottom:10px;">
                             [% PROCESS get_hold_status hold=hold; %]
index e8ecea9..6443b13 100644 (file)
     <div class="clear-both"></div>
     <div id='holds_main'>
         <form method="post">
-        <table class="table_no_border_space table_no_cell_pad" class="opac-auto-097">
+        <table class="table_no_border_space table_no_cell_pad opac-auto-097"
+            title="[% l('Actions for Items on Hold') %]">
             <tr>
-                <td width="1">
-                    <select name="action" id="acct_holds_actions" aria-label="[%
-                        l('Select your action for the selected holds')
-                    %]">
+                <td>
+                    <select name="action" id="acct_holds_actions" 
+                      aria-label="[% l('Select your action for the selected holds') %]"
+                      title="[% l('Select your action for the selected holds') %]">
                         <option id='myopac_holds_actions_none' value=''>
                         -- [% l("Actions for selected holds") %] --
                         </option>
                         <option value='cancel'>[% l("Cancel") %]</option>
                     </select>
                 </td>
-                <td width="1" style="padding-left:9px;">
+                <td style="padding-left:9px;">
                     <input type="submit" value="[% l('Go') %]"
-                        alt="[% l('Go') %]" title="[% l('Go') %]"
-                        class="opac-button" />
+                        title="[% l('Go') %]" class="opac-button" />
                 </td>
-                <td width="1" style="padding-left:5px;">
+                <td style="padding-left:5px;">
                     <a href="#"><img
                         alt="[% l('Holds Help') %]"
+                        title="[% l('Actions for selected holds') %]"
                         src="[% ctx.media_prefix %]/images/question-mark.png" /></a>
                 </td>
                 <td style="padding-left:5px;" class='error'>
                     <strong>[% l("Show all holds") %]</strong> |
                     <a href="[% mkurl('holds',{available => 1},['limit','offset']) %]">[% l("Show only available holds") %]</a>
                     [% END -%]
-                    <select class="hide_me" id="holds_sort">
-                        <option value="">[% l('-- Sort By --') %]</option>
-                        <option value="title">[% l('Title') %]</option>
-                        <option value="pickup">[% l('Pickup Location') %]</option>
-                        <option value="status">[% l('Status') %]</option>
-                    </select>
                 </td>
             </tr>
         </table>
         [% IF ctx.holds.size < 1 %]
         <div class="warning_box">[% l('No holds found.') %]</div>
         [% ELSE %]
-        <div class="hide_me">
-            <select id="hold_pickup_lib_temp" name="hold_pickup_lib_sel" class="hide_me"></select>
-        </div>
-        <table id="acct_holds_main_header" class="table_no_border_space table_no_cell_pad">
+        <table id="acct_holds_main_header" title="[% l('Items on Hold') %]"
+            class="table_no_border_space table_no_cell_pad">
             <thead>
             <tr>
                 <th align="center">
-                    <input type="checkbox" onclick="var inputs=document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i++) { if (inputs[i].name == 'hold_id' && !inputs[i].disabled) inputs[i].checked = this.checked;}"/>
+                    <input type="checkbox" title="[% l('Select All Holds') %]"
+                      onclick="var inputs=document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i++) { if (inputs[i].name == 'hold_id' &amp;&amp; !inputs[i].disabled) inputs[i].checked = this.checked;}"/>
                 </th>
                 <th>[% l('Title') %]</th>
                 <th>[% l('Author') %]</th>
                     attrs = {marc_xml => hold.marc_xml};
                     PROCESS get_marc_attrs args=attrs;
                     ahr = hold.hold.hold %]
-                <tr id="acct_holds_temp" name="acct_holds_temp"
+                <tr name="acct_holds_temp"
                     class="acct_holds_temp[% ahr.frozen == 't' ? ' inactive-hold' : '' %]">
                     <td align="center" style="text-align:center;">
-                        <input type="checkbox" name="hold_id" value="[% ahr.id %]" />
+                        <input type="checkbox" name="hold_id" value="[% ahr.id %]" 
+                            [% html_text_attr('title', l('Select hold [_1]', attrs.title)) %]/>
                     </td>
                     <td>
                         <div>
                     [%- END; END; %]
                     </td>
                     <td class="opac-auto-161">
-                        <a href="[% mkurl(ctx.opac_root _ '/myopac/holds/edit', {id => ahr.id}) %]">Edit</a>
+                        <a href="[% mkurl(ctx.opac_root _ '/myopac/holds/edit', {id => ahr.id}) %]"
+                            [% html_text_attr('title', l('Edit hold for item [_1]', attrs.title)) %]>
+                            [% l('Edit') %]
+                        ]</a>
                     </td>
                 </tr>
                 [% END %]
index 36adee2..e0e1181 100644 (file)
@@ -5,6 +5,11 @@
     limit = ctx.bookbags_limit;
     offset = ctx.bookbags_offset;
     item_page = ctx.bookbags_item_page;
+    bb_publish_text = l(
+"Sharing a Bookbag means that the contents " _
+"of the Bookbag will be visible to others. " _
+"To see the public view of a shared Bookbag, " _
+"click on the Bookbag\\'s name in the Bookbag list.");
 %]
 <div id='myopac_bookbag_div' style="padding:5px;">
 
                         <option value="0">[% l('No') %]
                         <option value="1">[% l('Yes') %]
                     </select>
-                    <a href="javascript:void(0);" onclick="alert(document.getElementById('bb_publish_text').innerHTML);"><img alt="[% l('Sharing Help') %]"
-                        src="[% ctx.media_prefix %]/images/question-mark.png" /></a>
+                    <a href="javascript:void(0);" 
+                        onclick="alert('[% bb_publish_text %]')">
+                        <img alt="[% l('Sharing Help') %]"
+                            [% html_text_attr('title', bb_publish_text) %]
+                            src="[% ctx.media_prefix %]/images/question-mark.png" />
+                    </a>
                 </td>
                 <td class="list-create-table-buttons">
                     <input type="submit"
             <thead id="acct_list_header">
                 <tr>
                     <td class="list_checkbox">
-                    <input type="checkbox" onclick="
-                        var inputs=document.getElementsByTagName('input'); 
+                    <input type="checkbox" 
+                      onclick="var inputs=document.getElementsByTagName('input'); 
                         for (i = 0; i < inputs.length; i++) { 
-                            if (inputs[i].name == 'selected_item' && !inputs[i].disabled && inputs[i].getAttribute('bbag') == [% bbag.id %]) 
+                            if (inputs[i].name == 'selected_item' &amp;&amp; !inputs[i].disabled &amp;&amp; inputs[i].getAttribute('bbag') == [% bbag.id %]) 
                                 inputs[i].checked = this.checked;}"/>
 
                     </td>
         [% END %]
     </div>
     [% END %]
-
-    <span id='bb_publish_text' class='hide_me'>
-[% l("Sharing a Bookbag means that the contents " _
-"of the Bookbag will be visible to others. " _
-"To see the public view of a shared Bookbag, " _
-"click on the Bookbag's name in the Bookbag list.") %]
-    </span>
 </div>
 [% END %]
index 38d5b4f..f4c139b 100644 (file)
@@ -8,10 +8,15 @@
         myopac_cc_allowed = 1;
     END
 %]
+[%  IF myopac_cc_allowed;
+    # http://www.w3.org/TR/WCAG20-TECHS/H32.html
+    # avoid forms w/ no submit action %]
 <form action="[% ctx.opac_root %]/myopac/main_payment_form" method="get">
+[% END %]
+
     [% IF ctx.fines.circulation.size > 0 %]
     <div id='myopac_circ_trans_div'>
-        <table width='100%' class='data_grid'>
+        <table width='100%' class='data_grid' title="[% l('Items Checked Out') %]">
             <thead>
                 <tr>
                     <td colspan='10' style='padding: 6px'>
         <hr class='opac-auto-013'  color="#dcdbdb" />
         <br/>
         <table width='100%' class='data_grid data_grid_center'
-            id='myopac_trans_table'>
+            id='myopac_trans_table' title="[% l('Other Fines and Fees') %]">
             <thead>
                 <tr>
                     <td colspan='8' style='padding: 6px'>
-                        <b>[% l("Other Fees") %]</b>
+                        <span class="bold">[% l("Other Fees") %]</span>
                     </td>
                 </tr>
                 <tr>
     <div class="text-right pad-top-ten">
         <input type="submit"
             value="[% l('Pay selected fines') %]"
-            alt="[% l('Pay selected fines') %]"
             title="[% l('Pay selected fines') %]"
             class="opac-button" />
     </div>
     [% END %]
+[% IF myopac_cc_allowed %]
 </form>
 [% END %]
+
+[% END %]
index 93ac283..dbc2ca1 100644 (file)
         <input type="hidden" name="xact_misc" value="[% xact | html %]" />
         [% END %]
 
-        <table>
+        <table title="[% l('Billing Information') %]">
             <tbody>
                 <tr>
                     <td colspan='2'><strong>[% l('Billing Information') %]</strong></td>
                     <td rowspan='13' valign='top'>
                         <p>[% l('Selected fines you are paying for:') %]</p>
-                        <table class="table_no_border_space table_no_cell_pad" class="myopac_payments_table">
+                        <table title="[% l('List of Transactions') %]"
+                            class="table_no_border_space table_no_cell_pad myopac_payments_table">
                             <thead>
                                 <tr>
                                     <th>[% l('Name') %]</th>
                     </td>
                 </tr>
                 <tr>
-                    <td>[% l('First Name') %]</td>
-                    <td><input type="text" name="billing_first" value="[% ctx.user.first_given_name | html %]" /></td>
+                    <td><label for="payment-first-name">[% l('First Name') %]</label></td>
+                    <td><input type="text"  name="billing_first" id="payment-first-name" 
+                        value="[% ctx.user.first_given_name | html %]" /></td>
                 </tr>
                 <tr>
-                    <td>[% l('Last Name') %]</td>
-                    <td><input type="text" name="billing_last" value="[% ctx.user.family_name | html %]" /></td>
+                    <td><label for="payment-last-name">[% l('Last Name') %]</label></td>
+                    <td><input type="text" name="billing_last" id="payment-last-name" 
+                        value="[% ctx.user.family_name | html %]" /></td>
                 </tr>
                 <tr>
-                    <td>[% l('Email Address') %]</td>
+                    <td><label for="payment-email-addr">[% l('Email Address') %]</label></td>
                     <td>
-                        <input type="text" disabled="disabled" readonly="readonly" value="[% ctx.user.email | html %]" />
-                        <a href="[% ctx.opac_root %]/myopac/update_email?return_to_referer=1">[% l("Update") %]</a>
+                        <input id="payment-email-addr" type="text" disabled="disabled" 
+                            readonly="readonly" value="[% ctx.user.email | html %]" />
+                        <a title="[% l('Update Email Address') %]"
+                            href="[% ctx.opac_root %]/myopac/update_email?return_to_referer=1">[% l("Update") %]</a>
                     </td>
                 </tr>
                 <tr>
-                    <td>[% l('Street Address') %]</td>
-                    <td><input type="text" name="billing_address" value="[% ctx.user.billing_address.street1 _ ctx.user.billing_address.street2 | html %]" /></td>
+                    <td><label for="payment-billing-address">[% l('Street Address') %]</label></td>
+                    <td><input type="text" name="billing_address" id="payment-billing-address" 
+                        value="[% ctx.user.billing_address.street1 _ ctx.user.billing_address.street2 | html %]" /></td>
                 </tr>
                 <tr>
-                    <td>[% l('City' )%]</td>
-                    <td><input type="text" name="billing_city" value="[% ctx.user.billing_address.city | html %]" /></td>
+                    <td><label for="payment-billing-city">[% l('City' )%]</label></td>
+                    <td><input type="text" name="billing_city" id="payment-billing-city" 
+                        value="[% ctx.user.billing_address.city | html %]" /></td>
                 </tr>
                 <tr>
-                    <td>[% l('State or Province') %]</td>
-                    <td><input type="text" name="billing_state" value="[% ctx.user.billing_address.state | html %]" /></td>
+                    <td><label for="payment-billing-state">[% l('State or Province') %]</label></td>
+                    <td><input type="text" name="billing_state" id="payment-billing-state"
+                        value="[% ctx.user.billing_address.state | html %]" /></td>
                 </tr>
                 <tr>
-                    <td>[% l('ZIP or Postal Code') %]</td>
-                    <td><input type="text" name="billing_zip" value="[% ctx.user.billing_address.post_code | html %]" /></td>
+                    <td><label for="paymenet-billing-zip">[% l('ZIP or Postal Code') %]</label></td>
+                    <td><input type="text" name="billing_zip" id="paymenet-billing-zip"
+                        value="[% ctx.user.billing_address.post_code | html %]" /></td>
                 </tr>
                 <tr>
                   <td colspan='2'><strong>[% l('Credit Card Information') %]</strong></td>
                 </tr>
                 -->
                 <tr>
-                    <td>[% l('Credit Card #') %]</td>
-                    <td><input type="text" name="number" maxlength="16" /></td>
+                    <td><label for="payment-credit-card">[% l('Credit Card #') %]</label></td>
+                    <td><input type="text" name="number" 
+                        id="payment-credit-card" maxlength="16" /></td>
                 </tr>
                 <tr>
-                    <td>[% l('Security Code') %]</td>
+                    <td><label for="payment-security-code">[% l('Security Code') %]</label></td>
                     <td>
-                        <input type="text" size="4" maxlength="5" name="cvv2" />
+                        <input type="text" size="4" maxlength="5" 
+                            name="cvv2" id="payment-security-code"/>
                     </td>
                 </tr>
                 <tr>
-                    <td>[% l('Expiration Month') %]</td>
+                    <td><label for="payment-expire-month">[% l('Expiration Month') %]</label></td>
                     <td>
-                        <select name="expire_month">
+                        <select name="expire_month" id="payment-expire-month">
                             <option value="01">[% l("January") %]</option>
                             <option value="02">[% l("February") %]</option>
                             <option value="03">[% l("March") %]</option>
                     </td>
                 </tr>
                 <tr>
-                    <td>[% l('Expiration Year') %]</td>
+                    <td><label for="payment-expire-year">[% l('Expiration Year') %]</label></td>
                     <td>
-                        <select name="expire_year">
+                        <select name="expire_year" id="payment-expire-year">
                         [% year = date.format(date.now, '%Y');
                         y = year;
                         WHILE y < year + 10; # show ten years starting now %]
index c3caa58..7351315 100644 (file)
@@ -21,7 +21,8 @@
     <div class="clear-both"></div>
 
     [% IF ctx.payments.size %]
-    <table class='myopac_payments_table data_grid' width='100%'>
+    <table title="[% l('Payments') %]" 
+        class='myopac_payments_table data_grid' width='100%'>
         <thead><tr>
             <th>[% l('Payment Date') %]</th>
             <th>[% l('Payment For') %]</th>
index df1d444..a495dee 100644 (file)
@@ -4,44 +4,9 @@
     prefs_page = 'prefs' %]
 
 <div id="acct_info_main">
-    <div id='myopac.expired.alert'
-         class='hide_me'
-         style='margin-bottom: 20px;'>
-        <table class='data_grid'
-               width='100%'>
-            <tbody>
-                <tr>
-                    <td width='100%' class='alert'>
-                        [% l("Your account expired on") %]
-                        <span id='myopac.expired.date'></span>!
-                        [% l("Please see a librarian to renew your account.") %]</td>
-                </tr>
-            </tbody>
-        </table>
-    </div>
 
-    <div id='myopac.notes.div'
-         class='hide_me'>
-        <table class='data_grid'
-               width='100%'>
-            <thead>
-                <tr>
-                    <td colspan='2'>
-                    <b>[% l("* Staff Notes *") %]</b></td>
-                </tr>
-            </thead>
-
-            <tbody id='myopac.notes.tbody'>
-                <tr id='myopac.notes.tr'>
-                    <td><b name='title'></b> : <span name=
-                    'value'></span></td>
-                </tr>
-            </tbody>
-        </table><br />
-    </div>
-
-    <table width='70%'
-           class='light_border data_grid'>
+    <table width='70%' title="[% l('Account preference') %]"
+        class='light_border data_grid'>
         <tbody id='myopac_summary_tbody'>
             <tr>
                 <td width='30%'
             <tr>
                 <td class='color_4 light_border'>
                     <div style="position:absolute">
-                        <div class="hide_me" style="position:relative;left:70px;top:-3px;">
-                            <a href="#"><img alt="[% l('Username Help') %]" src="[% ctx.media_prefix %]/images/question-mark.png" /></a>
-                        </div>
-                    </div>[% l("Username") %]
+                   </div>[% l("Username") %]
                 </td>
                 <td class='light_border'>[% ctx.user.usrname | html %]</td>
                 [%- IF ctx.username_change_disallowed %]
                 <td></td>
                 [%- ELSE %]
-                <td class='light_border'><a href='update_username'>[% l("Change") %]</a></td>
+                <td class='light_border'><a href='update_username'
+                    title="[% l('Change Username') %]">[% l("Change") %]</a></td>
                 [%- END %]
             </tr>
             <tr>
@@ -96,7 +59,8 @@
                 [%- IF disable_password_change == 'true' %]
                 <td></td>
                 [%- ELSE %]
-                <td class='light_border'><a href='update_password'>[% l("Change") %]</a></td>
+                <td class='light_border'><a href='update_password'
+                    title="[% l('Change Password') %]">[% l("Change") %]</a></td>
                 [%- END %]
             </tr>
             <tr>
                 [%- IF disable_email_change == 'true' %]
                 <td></td>
                 [%- ELSE %]
-                <td class='light_border'><a href='update_email'>[% l('Change') %]</a></td>
+                <td class='light_border'><a href='update_email'
+                    title="[% l('Update Email Address') %]">[% l('Change') %]</a></td>
                 [%- END %]
             </tr>
 
     <hr class='opac-auto-013' color="#DCDBDB" />
     <br />
 
-    <table width='100%' class='light_border data_grid'>
+    <table width='100%' class='light_border data_grid' title="[% l('Addresses') %]">
         <thead>
             <tr>
                 <td><strong>[% l("Addresses") %]</strong></td>
             <tr>
                 <td>
                     <!-- read-only address display -->
-                    <table class='light_border'>
+                    <table class='light_border' title="[% l('Active Addresses') %]">
                         <tr><td>[% l("Address Type") %]</td><td>[% addr.address_type | html %]</td></tr>
                         <tr><td>[% l("Street") %]</td><td>[% addr.street1 | html %]</td></tr>
                         <tr><td>[% l("Street") %]</td><td>[% addr.street2 | html %]</td></tr>
                         [% ELSE %]
                             <input type='hidden' name='replace_addr' value='[% edit_addr_id | html %]'/>
                         [% END %]
-                        <table class='pending-addr'>
-                            <tr>
-                                <td>[% l("Address Type") %]</td>
-                                <td><input name='address_type' value='[% update_addr.address_type | html %]'/></td>
-                            </tr>
-                            <tr>
-                                <td>[% l("Street") %]</td>
-                                <td><input name='street1' value='[% update_addr.street1 | html %]'/></td>
-                            </tr>
-                            <tr>
-                                <td>[% l("Street") %]</td>
-                                <td><input name='street2' value='[% update_addr.street2 | html %]'/></td>
-                            </tr>
-                            <tr>
-                                <td>[% l("City") %]</td>
-                                <td><input name='city' value='[% update_addr.city | html %]'/></td>
-                            </tr>
+                        <table class='pending-addr' title="[% l('Pending Addresses') %]">
+                        [% addr_fields = [
+                            {label => l("Address Type"), name => 'address_type', value => update_addr.address_type},
+                            {label => l("Street"), name => 'street1', value => update_addr.street1},
+                            {label => l("Street"), name => 'street2', value => update_addr.street2},
+                            {label => l("City"), name => 'city', value => update_addr.city},
+                            {label => l("County"), name => 'county', value => update_addr.county},
+                            {label => l("State"), name => 'state', value => update_addr.state},
+                            {label => l("Country"), name => 'country', value => update_addr.country},
+                            {label => l("ZIP"), name => 'post_code', value => update_addr.post_code},
+                        ];
+                        FOR field IN addr_fields %]
                             <tr>
-                                <td>[% l("County") %]</td>
-                                <td><input name='county' value='[% update_addr.county| html %]'/></td>
-                            </tr>
-                            <tr>
-                                <td>[% l("State") %]</td>
-                                <td><input name='state' value='[% update_addr.state | html %]'</td>
-                            </tr>
-                            <tr>
-                                <td>[% l("Country") %]</td>
-                                <td><input name='country' value='[% update_addr.country | html %]'/></td>
-                            </tr>
-
-                            <tr>
-                                <td>[% l("Zip") %]</td>
-                                <td><input name='post_code' value='[% update_addr.post_code | html %]'/></td>
+                                <td><label for="addr-form-[% field.name %]">[% field.label %]</label></td>
+                                <td><input name="[% field.name %]" 
+                                    id="addr-form-[% field.name %]"
+                                    value="[% field.value | html %]">
+                                </td>
                             </tr>
+                        [% END %]
                             <tr>
                                 <td><input type='submit' value="[% l('Save Changes') %]"/></td>
                                 <td>
index 441ba3e..4a9da10 100644 (file)
@@ -6,7 +6,8 @@
 
     <form method='post'>
 
-       <table class="full-width data_grid" id="acct_search_main">
+       <table class="full-width data_grid" id="acct_search_main"
+            title="[% l('List Preferences') %]">
             <tbody>
 
                 [% IF ctx.updated_user_settings %]
@@ -59,7 +60,7 @@
                 </tr>
             </tbody>
         </table>
-        <input type="submit" value="[% l('Save') %]" alt="[% l('Save') %]" class="opac-button"/>
+        <input type="submit" value="[% l('Save') %]" class="opac-button"/>
     </form>
     [% INCLUDE "opac/parts/myopac/prefs_hints.tt2" %]
 [% END %]
index 46bce63..edbf567 100644 (file)
@@ -8,7 +8,8 @@
     <input name='[% setting %]' type="hidden"
         [% IF ctx.user_setting_map.$setting; %] value='[% ctx.user_setting_map.$setting | html %]' [% END %]/>
 
-    <table class="full-width data_grid" id="acct_search_main">
+    <table class="full-width data_grid" id="acct_search_main" 
+        title="[% l('Search Preferences') %]">
         <tbody>
 
             [% IF ctx.updated_user_settings %]
 
             [% setting = 'opac.hold_notify' %]
             <tr>
-                <td><label for='[% setting %].email'>[%
-                    l('Notify by Email by default when a hold is ready for pickup?')
-                %]</label></td>
+                [%# WCAG insists that labels for checkboxes contain the input
+                    or directly follow the input, which would not look right
+                    with the rest of the table.  As an alternative, we can
+                    repeat the label as a title attr.
+                    http://www.w3.org/TR/WCAG20-TECHS/H44.html %]
+                [% email_label = l('Notify by Email by default when a hold is ready for pickup?') %]
+
+                <td><label for='[% setting %].email'>[% email_label %]</label></td>
                 <td>
-                    <input id='[% setting %].email' name='[% setting %].email' type="checkbox"
+                    <input id='[% setting %].email' name='[% setting %].email' 
+                        type="checkbox" title="[% email_label %]"
                         [% IF (matches = ctx.user_setting_map.$setting.match('email')); %] checked='checked' [% END %]/>
                 </td>
             </tr>
                 setting = 'opac.hold_notify'; 
             -%]
             <tr>
-                <td><label for='[% setting %].phone'>[%
-                    l('Notify by Phone by default when a hold is ready for pickup?')
-                %]</label></td>
+                [% phone_label = l('Notify by Phone by default when a hold is ready for pickup?') %]
+                <td><label for='[% setting %].phone'>[% phone_label %]</label></td>
                 <td>
-                    <input id='[% setting %].phone' name='[% setting %].phone' type="checkbox"
+                    <input id='[% setting %].phone' name='[% setting %].phone' 
+                        type="checkbox" title="[% phone_label %]"
                         [% IF (matches = ctx.user_setting_map.$setting.match('phone')); %] checked='checked' [% END %]/>
                 </td>
             </tr>
                setting = 'opac.hold_notify';
             -%]
             <tr>
-                <td><label for='[% setting %].sms'>[%
-                    l('Notify by Text by default when a hold is ready for pickup?')
-                %]</label></td>
+                [% sms_label = l('Notify by Text by default when a hold is ready for pickup?') %]
+                <td><label for='[% setting %].sms'>[% sms_label %]</label></td>
                 <td>
-                    <input id='[% setting %].sms' name='[% setting %].sms' type="checkbox"
+                    <input id='[% setting %].sms' name='[% setting %].sms' 
+                        type="checkbox" title="[% sms_label %]"
                         [% IF (matches = ctx.user_setting_map.$setting.match('sms')); %] checked='checked' [% END %]/>
                 </td>
             </tr>
                     <td>
                         <input type='checkbox' name='setting' 
                             value='[% optin.cust.name | uri %]' 
+                            title="[% optin.cust.label | html %]"
                             [% IF optin.value %] checked='checked' [% END %]/>
                     </td>
                 </tr>
       </table>
     </div>
     [% END %]
-    <input type='submit' value="[% l('Save') %]" alt="[% l('Save') %]" class="opac-button" />
+    <input type='submit' value="[% l('Save') %]" class="opac-button" />
 </form>
 [% END %]
 
index 3032382..a2b9461 100644 (file)
@@ -7,7 +7,8 @@
 
     <form method='post'>
 
-       <table class="full-width data_grid" id="acct_search_main">
+       <table class="full-width data_grid" id="acct_search_main"
+            title="[% l('Search and History Preferences') %]">
             <tbody>
 
                 [% IF ctx.updated_user_settings %]
                 </tr>
                 [%- setting = 'history.circ.retention_start' -%]
                 <tr>
-                    <td><label for='[% setting %]'>[% l('Keep history of checked out items?') %]</label></td>
+                    [% circ_name = l('Keep history of checked out items?') %]
+                    <td><label for='[% setting %]'>[% circ_name%]</label></td>
                     <td>
-                        <input id='[% setting %]' name='[% setting %]' type="checkbox"
+                        <input id='[% setting %]' name='[% setting %]' 
+                            type="checkbox" title="[% circ_name %]"
                             [% IF ctx.user_setting_map.$setting; %] checked='checked' [% END %]/>
                     </td>
                 </tr>
                 [%- setting = 'history.hold.retention_start' -%]
                 <tr>
-                    <td><label for='[% setting %]'>[% l('Keep history of holds?') %]</label></td>
+                    [% hold_name =  l('Keep history of holds?') %]
+                    <td><label for='[% setting %]'>[% hold_name %]</label></td>
                     <td>
-                        <input id='[% setting %]' name='[% setting %]' type="checkbox"
+                        <input id='[% setting %]' name='[% setting %]' 
+                            type="checkbox" title="[% hold_name %]"
                             [% IF ctx.user_setting_map.$setting; %] checked='checked' [% END %]/>
                     </td>
                 </tr>
                 [%- setting = 'opac.temporary_list_no_warn' -%]
                 <tr>
-                    <td><label for='[% setting %]'>[% l('Skip warning when adding to temporary book list?') %]</label></td>
+                    [% skip_warn =  l('Skip warning when adding to temporary book list?') %]
+                    <td><label for='[% setting %]'>[% skip_warn %]</label></td>
                     <td>
-                        <input id='[% setting %]' name='[% setting %]' type="checkbox"
+                        <input id='[% setting %]' name='[% setting %]' 
+                            type="checkbox" title="[% skip_warn %]"
                             [% IF ctx.user_setting_map.$setting %] checked='checked' [% END %]/>
                     </td>
                 </tr>
                 [%- setting = 'circ.holds_behind_desk'; IF ctx.behind_desk_supported -%]
                 <tr>
-                    <td><label for='[% setting %]'>[% l('Pickup holds from behind the desk when possible?') %]</label></td>
+                    [% behind_desk = l('Pickup holds from behind the desk when possible?') %]
+                    <td><label for='[% setting %]'>[% behind_desk %]</label></td>
                     <td>
-                        <input id='[% setting %]' name='[% setting %]' type="checkbox"
+                        <input id='[% setting %]' name='[% setting %]' 
+                            type="checkbox" title="[% behind_desk %]"
                             [% IF ctx.user_setting_map.$setting %] checked='checked' [% END %]/>
                     </td>
                 </tr>
 
             </tbody>
         </table>
-        <input type="submit" value="[% l('Save') %]" alt="[% l('Save') %]" class="opac-button"/>
+        <input type="submit" value="[% l('Save') %]" class="opac-button"/>
     </form>
     [% INCLUDE "opac/parts/myopac/prefs_hints.tt2" %]
 [% END %]
index 5aca80d..76bd0ce 100644 (file)
@@ -22,6 +22,8 @@
         rec_anchor => ctx.bre_id;
     END;
 
+    record_title = attrs.title; # same for either context
+
     IF ctx.user_setting_map.defined(dsetting);
         default_list = ctx.user_setting_map.$dsetting;
     END;
@@ -36,7 +38,8 @@
 %]
 <ul class="popmenu">
     <li><a href="#" class="no-dec">
-          <img src="[% ctx.media_prefix %]/images/clipboard.png" alt="" />
+          <img src="[% ctx.media_prefix %]/images/clipboard.png" 
+              [% html_text_attr('alt', 'Add item to a list: [_1]', record_title) %]/>
           [% l("Add to my list") %]
         </a>
     <ul>
index 1d93bc4..7c9b95f 100644 (file)
         want_dojo = 1;
     END;
 
-    # Recommend max length for image alt text is 75 for screen
-    # reader support / WCAG compliance.  This macro trims the text 
-    # to this length and and produces a full alt="abc" attribute.
+    # Especially useful for image 'alt' tags and link title tags,
+    # where the content may need to be unique (making it longer)
+    # but should not exceed 75 chars for ideal screen reader support.
+    # usage: html_text_attr('title', 'Link to item I Have A Super Long Title')
+    # the full HTML attribute key="value" is produced
+    MACRO html_text_attr(name, value) BLOCK;
+        IF value.length >= 75;
+            value = value.substr(71, value.length, '...');                        
+        END;                                                                   
+        value = value.replace('\s*$', ''); # remove trailing whitespace          
+        HTML.attributes($name => value); 
+    END;
+
     MACRO img_alt(text) BLOCK;
-        IF text.length >= 75;
-            text = text.substr(71, text.length, '...');
-        END;
-        text = text.replace('\s*$', ''); # remove trailing whitespace
-        HTML.attributes(alt => text);
+        html_text_attr('alt', text);
     END;
 %]
index 3dae62f..93c50d9 100644 (file)
                     class="[% cls_which %]">[% page.name; %]</a>
                 [% END %]
             </div>
-            <!- Select box navigation for media view ->
-           <div id="acct_select">
-              <form name="acct_nav">
-                <select name="acct_url" aria-label="Select an account page" onchange="window.location.href=document.acct_nav.acct_url.options[document.acct_nav.acct_url.selectedIndex].value">
-                   <option value="" selected="selected">Go to...</option>
-               [% FOREACH page IN myopac_pages;
-                  IF page.url != myopac_page; %]
-                    <option value="[% mkurl(ctx.opac_root _ '/myopac/' _ page.url, {}, ['bbid', 'offset', 'limit']) %]">[% page.name; %]</option>
-                [% ELSE; %]
-                  <option value="" disabled>[% page.name; %]</option>
-              [% END;
-               END; %] 
-              </select>
-           </div>
-          </form>
-       </div>
+
+            <!-- Select box navigation for media view -->
+            <div id="acct_select">
+               <form name="acct_nav">
+
+                 <select name="acct_url" 
+                    aria-label="[% l('Select an account page') %]" 
+                    title="[% l('Select an account page') %]" 
+                    onchange="window.location.href=document.acct_nav.acct_url.options[document.acct_nav.acct_url.selectedIndex].value">
+                    <option value="" selected="selected">[% l('Go to...') %]</option>
+                    [% FOREACH page IN myopac_pages;
+                      IF page.url != myopac_page; %]
+                        <option value="[% mkurl(ctx.opac_root _ '/myopac/' _ page.url, {}, ['bbid', 'offset', 'limit']) %]">[% page.name; %]</option>
+                    [% ELSE; %]
+                        <option value="" disabled>[% page.name; %]</option>
+                    [% END;
+                   END; %] 
+                 </select>
+                   </form>
+            </div>
+           </div><!-- myopac_tabs -->
         <div id="main-content">
             [% content %]
             <div class="common-full-pad"></div>
         </div>
-    </div>
+    </div> <!-- content-wrapper -->
 [% END %]
index 420bd3e..7ac523c 100644 (file)
     <div id="myopac_sum_fines">
         <div style="position:absolute;">
             <div style="position:relative;top:-15px;left:-23px;">
-                <img src="[% ctx.media_prefix %]/images/acct_sum_fines_tl.png" />
+                <img src="[% ctx.media_prefix %]/images/acct_sum_fines_tl.png" 
+                    alt="[% l('Account Fines Border Image 1') %]"/>
             </div>
         </div>
         <div style="position:absolute;">
             <div style="position:relative;top:-15px;left:172px;">
-                <img src="[% ctx.media_prefix %]/images/acct_sum_fines_tr.png" />
+                <img src="[% ctx.media_prefix %]/images/acct_sum_fines_tr.png" 
+                    alt="[% l('Account Fines Border Image 2') %]"/>
             </div>
         </div>
         <div style="position:absolute;">
             <div style="position:relative;top:161px;left:-23px;">
-                <img src="[% ctx.media_prefix %]/images/acct_sum_fines_bl.png" />
+                <img src="[% ctx.media_prefix %]/images/acct_sum_fines_bl.png" 
+                    alt="[% l('Account Fines Border Image 3') %]"/>
             </div>
         </div>
         <div style="position:absolute;">
             <div style="position:relative;top:161px;left:172px;">
-                <img src="[% ctx.media_prefix %]/images/acct_sum_fines_br.png" />
+                <img src="[% ctx.media_prefix %]/images/acct_sum_fines_br.png" 
+                    alt="[% l('Account Fines Border Image 4') %]"/>
             </div>
         </div>
         [% l('Fines:') %]
@@ -42,7 +46,7 @@
         </span><br />
         [% IF (ctx.fines.grocery.size OR ctx.fines.circulation.size) AND ctx.get_org_setting(ctx.user.home_ou, 'credit.payments.allow') == 1 %]
         <form action="[% ctx.opac_root %]/myopac/main_payment_form" method="get"><input
-            type="submit" title="[% l('Pay Fines') %]" alt="[% l('Pay Fines') %]"
+            type="submit" title="[% l('Pay Fines') %]"
             value="[% l('Pay Fines') %]" class="pos-rel-top-5 opac-button" /></form>
         [% END %]
     </div>
             <span class="alert">[% l("Your library card expired on [_1]. Please contact a librarian to resolve this issue.", fmt_expire_date) %]</span>
             [% END %]
             </div>
-            <table class="acct_sum_table">
+            <table class="acct_sum_table" title="[% l('Account Summary') %]">
                 <tr>
-                        <td>[% l("Items Currently Checked out ([_1])", ctx.user_stats.checkouts.total_out) %]</td>
-                        <td align="right">
-                            <a href="[% mkurl(ctx.opac_root _ '/myopac/circs') %]">[% l("View All") %]</a>
-                        </td>
+                    <td>[% l("Items Currently Checked out ([_1])", ctx.user_stats.checkouts.total_out) %]</td>
+                    <td align="right">
+                        <a href="[% mkurl(ctx.opac_root _ '/myopac/circs') %]"
+                            title="[% l('View My Checked Out Items') %]">
+                            [% l("View All") %]
+                        </a>
+                    </td>
                 </tr>
                 <tr>
-                        <td>[% l('Items Currently on Hold ([_1])', ctx.user_stats.holds.total) %]</td>
-                        <td align="right">
-                            <a href="[% mkurl(ctx.opac_root _ '/myopac/holds') %]">[% l('View All') %]</a>
-                        </td>
+                    <td>[% l('Items Currently on Hold ([_1])', ctx.user_stats.holds.total) %]</td>
+                    <td align="right">
+                        <a href="[% mkurl(ctx.opac_root _ '/myopac/holds') %]"
+                            title="[% l('View My Holds') %]">
+                            [% l('View All') %]
+                        </a>
+                    </td>
                 </tr>
                 <tr>
-                        <td>[% l('Items ready for pickup ([_1])', ctx.user_stats.holds.ready) %]</td>
-                        <td align="right">
-                            <a href="[% mkurl(ctx.opac_root _ '/myopac/holds', {available => 1}) %]">[% l('View All') %]</a>
-                        </td>
+                    <td>[% l('Items ready for pickup ([_1])', ctx.user_stats.holds.ready) %]</td>
+                    <td align="right">
+                        <a href="[% mkurl(ctx.opac_root _ '/myopac/holds', {available => 1}) %]"
+                            title="[% l('View My Holds Ready for Pickup') %]">
+                            [% l('View All') %]
+                        </a>
+                    </td>
                 </tr>
             </table>
         </div>
index 34c156d..cf38a62 100644 (file)
     [%- # Select box navigation for mobile view %]
     <div id="acct_prefs_select">
         <form name="acct_prefs_nav">
-            <select name="acct_prefs_url" aria-label="[% l('Select a preference page') %]" onchange="window.location.href=document.acct_prefs_nav.acct_prefs_url.options[document.acct_prefs_nav.acct_prefs_url.selectedIndex].value">
+            <select name="acct_prefs_url" 
+              [% select_title = l('Select a preference page') %]
+              aria-label="[% select_title %]" title="[% select_title %]"
+              onchange="window.location.href=document.acct_prefs_nav.acct_prefs_url.options[document.acct_prefs_nav.acct_prefs_url.selectedIndex].value">
         [% FOREACH page IN acct_prefs_pages;
             IF page.url != prefs_page; -%]
             <option value="[% mkurl(ctx.opac_root _ '/myopac/' _ page.url, {}, ['bbid', 'offset', 'limit']) %]">[% page.name; %]</option>
index 7c71576..7fbf955 100644 (file)
@@ -49,7 +49,7 @@
                                                     <abbr class="unapi-id" title='tag:[% ctx.hostname %],[% date.format(date.now, '%Y') %]:biblio-record_entry/[% rec.id %]'></abbr>
                                                     <a class='record_title search_link' name='record_[% rec.id %]'
                                                         href="[% mkurl(ctx.opac_root _ '/record/' _ rec.id) %]"
-                                                        [% HTML.attributes(title => l('Display record details for "[_1]"', attrs.title)) %]
+                                                        [% html_text_attr('title', l('Display record details for "[_1]"', attrs.title)) %]
                                                         >[% attrs.title | html %]</a>
 [%-
 FOR entry IN attrs.graphic_titles;
@@ -297,7 +297,7 @@ END;
                                                         <div class="results_aux_utils place_hold"><a
                                                                 href="[% mkurl(ctx.opac_root _ '/place_hold',
                                                                     {hold_target => rec.id, hold_type => 'T', hold_source_page => mkurl()}, ['query']) %]"
-                                                                [% HTML.attributes(title => l('Place Hold on [_1]', attrs.title)) %]
+                                                                [% html_text_attr('title', l('Place Hold on [_1]', attrs.title)) %]
                                                                     name="place_hold_link" class="no-dec"><img
                                                                 src="[% ctx.media_prefix %]/images/green_check.png"
                                                                 alt=""/><span class="result_place_hold">[% l('Place Hold') %]</span></a>
@@ -316,7 +316,8 @@ END;
                                                                 href = mkurl(ctx.opac_root _ '/mylist/' _ operation, 
                                                                         {record => rec.id, anchor => 'record_' _ rec.id}, 1);
                                                             %]      
-                                                            <a href="[% href %]" class="no-dec" [% HTML.attributes(title => title_label) %]>
+                                                            <a href="[% href %]" class="no-dec" 
+                                                                [% html_text_attr('title', title_label) %]>
                                                                 <img src="[% ctx.media_prefix %]/images/clipboard.png" alt="" />
                                                                 [% label %]
                                                             </a>
@@ -326,7 +327,7 @@ END;
                                                         [% ident = attrs.isbn_clean || attrs.upc %]
                                                         <div class="results_aux_utils result_util">
                                                             <a target='_blank' 
-                                                               [% HTML.attributes(title => l('Reviews and More for [_1]', attrs.title)) %]
+                                                               [% html_text_attr('title', l('Reviews and More for [_1]', attrs.title)) %]
                                                                 href="[% ctx.ext_proto %]://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=[%- 
                                                                     ENV.OILS_CONTENT_CAFE_USER %]&amp;Password=[%-
                                                                     ENV.OILS_CONTENT_CAFE_PASS %]&amp;ItemKey=[% ident | uri %]&amp;Options=Y">