LP#1778972: Tweaks and fixes to Bootstrap 4 template
authorOwen Leonard <zivot@zivotdesign.com>
Tue, 8 Sep 2020 16:29:58 +0000 (12:29 -0400)
committerJane Sandberg <sandbej@linnbenton.edu>
Sat, 12 Sep 2020 15:53:01 +0000 (08:53 -0700)
- Add "aria-hidden" to Font Awesome icons as recommended by Font Awesome for accessibility.
- Minor changes to the color scheme.
- Some adjustments to the way alignment is defined: Bootstrap 4 classes like "text-center"
  can be an impediment to customization because they use "!important." I've removed many
  instances of such classes in favor of putting alignment in CSS.
- Ajustments to responsive behavior. I've made some changes to grid class definitions
  to improve flexibility of layouts at various browser widths.
- Whitespace and other typo corrections. I've worked to remove trailing whitespace and
  replace tabs with spaces.

Signed-of-by: Owen Leonard <zivot@zivotdesign.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
105 files changed:
Open-ILS/src/templates-bootstrap/opac/ReadMe.txt
Open-ILS/src/templates-bootstrap/opac/advanced.tt2
Open-ILS/src/templates-bootstrap/opac/browse.tt2
Open-ILS/src/templates-bootstrap/opac/css/mediaQuery.css.tt2
Open-ILS/src/templates-bootstrap/opac/css/style.css.tt2
Open-ILS/src/templates-bootstrap/opac/home.tt2
Open-ILS/src/templates-bootstrap/opac/login.tt2
Open-ILS/src/templates-bootstrap/opac/mylist.tt2
Open-ILS/src/templates-bootstrap/opac/mylist/clear.tt2
Open-ILS/src/templates-bootstrap/opac/mylist/email.tt2
Open-ILS/src/templates-bootstrap/opac/mylist/print.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/circ_history.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/circs.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/hold_history.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/holds.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/holds/edit.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/list/update.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/lists.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/main.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/main_pay.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/main_payment_form.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/main_payments.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/messages/list.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/messages/single_message.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/prefs.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/prefs_my_lists.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/prefs_notify.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/prefs_settings.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/update_email.tt2
Open-ILS/src/templates-bootstrap/opac/myopac/update_username.tt2
Open-ILS/src/templates-bootstrap/opac/parts/advanced/expert.tt2
Open-ILS/src/templates-bootstrap/opac/parts/advanced/global_row.tt2
Open-ILS/src/templates-bootstrap/opac/parts/advanced/numeric.tt2
Open-ILS/src/templates-bootstrap/opac/parts/advanced/search.tt2
Open-ILS/src/templates-bootstrap/opac/parts/anon_list.tt2
Open-ILS/src/templates-bootstrap/opac/parts/base.tt2
Open-ILS/src/templates-bootstrap/opac/parts/bookbag_actions.tt2
Open-ILS/src/templates-bootstrap/opac/parts/cart_nav.tt2
Open-ILS/src/templates-bootstrap/opac/parts/check_value_selector.tt2
Open-ILS/src/templates-bootstrap/opac/parts/chilifresh.tt2
Open-ILS/src/templates-bootstrap/opac/parts/coded_value_selector.tt2
Open-ILS/src/templates-bootstrap/opac/parts/config-fresh.tt2
Open-ILS/src/templates-bootstrap/opac/parts/config.tt2
Open-ILS/src/templates-bootstrap/opac/parts/css/colors.tt2
Open-ILS/src/templates-bootstrap/opac/parts/css/fonts.tt2
Open-ILS/src/templates-bootstrap/opac/parts/filter_group_selector.tt2
Open-ILS/src/templates-bootstrap/opac/parts/filtersort.tt2
Open-ILS/src/templates-bootstrap/opac/parts/footer.tt2
Open-ILS/src/templates-bootstrap/opac/parts/goog_analytics.tt2
Open-ILS/src/templates-bootstrap/opac/parts/header.tt2
Open-ILS/src/templates-bootstrap/opac/parts/hold_status.tt2
Open-ILS/src/templates-bootstrap/opac/parts/homesearch.tt2
Open-ILS/src/templates-bootstrap/opac/parts/js.tt2
Open-ILS/src/templates-bootstrap/opac/parts/library/core_info.tt2
Open-ILS/src/templates-bootstrap/opac/parts/library_name_link.tt2
Open-ILS/src/templates-bootstrap/opac/parts/library_name_link_from_ou.tt2
Open-ILS/src/templates-bootstrap/opac/parts/locale_picker.tt2
Open-ILS/src/templates-bootstrap/opac/parts/login/form.tt2
Open-ILS/src/templates-bootstrap/opac/parts/login/help.tt2
Open-ILS/src/templates-bootstrap/opac/parts/login/login_modal.tt2
Open-ILS/src/templates-bootstrap/opac/parts/metarecord_hold_filters.tt2
Open-ILS/src/templates-bootstrap/opac/parts/misc_util.tt2
Open-ILS/src/templates-bootstrap/opac/parts/myopac/base.tt2
Open-ILS/src/templates-bootstrap/opac/parts/myopac/column_sort_support.tt2
Open-ILS/src/templates-bootstrap/opac/parts/myopac/main_base.tt2
Open-ILS/src/templates-bootstrap/opac/parts/org_selector.tt2
Open-ILS/src/templates-bootstrap/opac/parts/place_hold.tt2
Open-ILS/src/templates-bootstrap/opac/parts/place_hold_result.tt2
Open-ILS/src/templates-bootstrap/opac/parts/pref_lib_display.tt2
Open-ILS/src/templates-bootstrap/opac/parts/preserve_params.tt2
Open-ILS/src/templates-bootstrap/opac/parts/qtype_selector.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/addedcontent.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/authors.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/awards.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/cnbrowse.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/contents.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/copy_counts.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/copy_table.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/extras.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/issues-mfhd.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/navigation.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/refworks.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/series.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/subjects.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/summary.tt2
Open-ILS/src/templates-bootstrap/opac/parts/record/summaryplus.tt2
Open-ILS/src/templates-bootstrap/opac/parts/result/adv_filter.tt2
Open-ILS/src/templates-bootstrap/opac/parts/result/copy_counts.tt2
Open-ILS/src/templates-bootstrap/opac/parts/result/facets-hz.tt2
Open-ILS/src/templates-bootstrap/opac/parts/result/facets.tt2
Open-ILS/src/templates-bootstrap/opac/parts/result/lowhits.tt2
Open-ILS/src/templates-bootstrap/opac/parts/result/paginate.tt2
Open-ILS/src/templates-bootstrap/opac/parts/result/table.tt2
Open-ILS/src/templates-bootstrap/opac/parts/searchbar.tt2
Open-ILS/src/templates-bootstrap/opac/parts/staff_saved_searches.tt2
Open-ILS/src/templates-bootstrap/opac/parts/topnav.tt2
Open-ILS/src/templates-bootstrap/opac/parts/topnav_links.tt2
Open-ILS/src/templates-bootstrap/opac/parts/topnav_subnav.tt2
Open-ILS/src/templates-bootstrap/opac/password_reset.tt2
Open-ILS/src/templates-bootstrap/opac/place_hold.tt2
Open-ILS/src/templates-bootstrap/opac/record.tt2
Open-ILS/src/templates-bootstrap/opac/record/email.tt2
Open-ILS/src/templates-bootstrap/opac/register.tt2
Open-ILS/src/templates-bootstrap/opac/results.tt2
Open-ILS/src/templates-bootstrap/opac/temp_warn.tt2

index 5fd954a..104815f 100644 (file)
@@ -9,7 +9,7 @@
 /////////////////////TOOLTIPS///////////////////////////////////////////
 <!--data-html allows use of HTML tags in the tooltip-->  
  <a href="#" title="text to show on tooltip" data-html="true" data-toggle="tooltip">
-    <i class="fas fa-question-circle"></i>
+    <i class="fas fa-question-circle" aria-hidden="true"></i>
 </a>
 <!--This is needed to activate the tooltips on the page and is activated Globally by default in js.tt2-->
 <script>
index 30d27ab..325d6bd 100755 (executable)
@@ -4,16 +4,16 @@
     ctx.page_title = l("Advanced Search");
     pane = CGI.param("pane") || "advanced";
     loc = ctx.search_ou;
-    
+
     ctx.metalinks.push('<meta name="robots" content="noindex,follow">');
 -%]
     <span class="sr-only">[% l('Advanced Search') %]</span>
-       <div class="container">    
-        <div id="search-wrapper">    
+    <div class="container">
+        <div id="search-wrapper">
             <div class="mt-3">
                 <ul class="nav nav-tabs">
                 <li class="nav-item">
-                    <a href="[% mkurl('', {pane => 'advanced'}) %]" 
+                    <a href="[% mkurl('', {pane => 'advanced'}) %]"
                         class="nav-link [% IF pane == 'advanced' %]active[% END %]"
                         id="adv_search">[% l('Advanced Search') %]</a>
                 </li>
index dfc3ea9..357c68b 100755 (executable)
@@ -8,7 +8,7 @@
     INCLUDE "opac/parts/topnav.tt2";
 
     ctx.page_title = l("Browse the Catalog");
-    
+
     blimit = CGI.param('blimit') || ctx.opac_hits_per_page || 10;
 
     depart_list = ['blimit', 'bterm', 'bpivot'];
 %]
 
     <h2 class="sr-only">[% l('Catalog Browse') %]</h2>
-    
+
     <div id="content-wrapper" class="my-5">
         <div class="container mx-auto w-75">
             <div id="browse-the-catalog">
-                <div id="browse-controls" class='row text-center'>
+                <div id="browse-controls" class='row'>
                     <form method="get" onsubmit="$('browse-submit-spinner').className = ''; return true" class="mx-auto">
                         <input type="hidden" name="blimit"
                             value="[% blimit %]" />
 
                         [% control_qtype = INCLUDE "opac/parts/qtype_selector.tt2"
                             id="browse-search-class" browse_only=1 plural=1 %]
-                                                       
+
                         [% control_bterm = BLOCK %]<input type="text" name="bterm" id="browse-term"
                             aria-label="[% l('Browse term') %]"
                             value="[% CGI.param('bterm') | html %]" class="form-control" />[% END %]
                             arialabel=l('Select holding library') %]
                         [% l('Browse for [_1] starting with [_2] in [_3]', control_qtype, control_bterm, control_locg) %]
 
-                       <button id='search-submit-go' type="submit" class="btn btn-confirm my-2"><i class="fas fa-book-reader"></i> [% l('Browse') %]</button>
-                        <img id="browse-submit-spinner" 
+            <button id='search-submit-go' type="submit" class="btn btn-confirm my-2"><i class="fas fa-book-reader" aria-hidden="true"></i> [% l('Browse') %]</button>
+                        <img id="browse-submit-spinner"
                         src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]"
-                        class="hidden" style="width: 16px; height: 16px;" 
+                        class="hidden" style="width: 16px; height: 16px;"
                         alt="[% l('Search in progress icon') %]" />
                     </form>
                 </div>
-                       <div class="row my-5 border-top border-bottom">
+            <div class="row my-5 border-top border-bottom">
                 [% BLOCK browse_pager %]
-                <div class="browse-pager text-center col-12">
+                <div class="browse-pager col-12">
                 <div class="mx-auto">
                     [% IF ctx.back_pivot %]
-                    <a class="btn btn-action btn-sm" href="[% mkurl('', {bpivot => ctx.back_pivot}) %]" onclick="$('browse-pager-spinner-[% id %]').className = '';">&larr; [%l ('Back') %]</a>
+                    <a class="btn btn-action btn-sm" href="[% mkurl('', {bpivot => ctx.back_pivot}) %]" onclick="$('#browse-pager-spinner-[% id %]').removeClass('hidden');">&larr; [%l ('Back') %]</a>
                     [% END %]
                     [% IF ctx.pager_shortcuts;
                         current_qtype = CGI.param('qtype') || 'title' %]
                         [% END %]
                     </span>
                     [% END %]
-                    <img id="browse-pager-spinner-[% id %]" 
-                        src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]"
-                        class="hidden" style="width: 16px; height: 16px;" 
-                        alt="[% l('Search in progress icon') %]" />
+                    <span class="browse-pager-spinner">
+                        <img id="browse-pager-spinner-[% id %]"
+                            src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]"
+                            class="hidden" height="16" width="16"
+                            alt="[% l('Search in progress icon') %]" />
+                    </span>
                     [% IF ctx.forward_pivot %]
-                    <a class="btn btn-action btn-sm" href="[% mkurl('', {bpivot => ctx.forward_pivot}) %]" onclick="$('browse-pager-spinner-[% id %]').className = '';">[%l ('Next') %] &rarr;</a>
+                    <a class="btn btn-action btn-sm" href="[% mkurl('', {bpivot => ctx.forward_pivot}) %]" onclick="$('#browse-pager-spinner-[% id %]').removeClass('hidden');">[%l ('Next') %] &rarr;</a>
                     [% END %]
 
-                   
+
                         </div>
                 </div>
                 [% END %]
                                             # defined when h.target is.
 
                                             IF h.target AND h.target_count AND result.list_authorities.grep('^' _ h.target _ '$').size == 0 AND h.main_entry;
-                                                id = h.target; NEXT IF seenit.$id; seenit.$id = 1; 
+                                                id = h.target; NEXT IF seenit.$id; seenit.$id = 1;
                                                 IF !auth_headings_ul_added;
                                                     # only add a <ul> if we have at least one <li> (WCAG 2.0)
                                                     auth_headings_ul_added = 1; %]
-                                                <ul class="browse-result-authority-headings"> 
+                                                <ul class="browse-result-authority-headings">
                                                 [% END %]
 
                                                 <li><span class="browse-result-authority-field-name">[% heading_use_label(use=h.type) %]</span>
                                             # defined when h.target is.
 
                                             IF h.target AND h.target_count AND result.list_sees.grep('^' _ h.target _ '$').size == 0 AND !h.main_entry AND ctx.get_cgf('opac.show_related_headings_in_browse').enabled == 't';
-                                                id = h.target; NEXT IF seenit.$id; seenit.$id = 1; 
+                                                id = h.target; NEXT IF seenit.$id; seenit.$id = 1;
                                                 IF !auth_headings_ul_added;
                                                     # only add a <ul> if we have at least one <li> (WCAG 2.0)
                                                     auth_headings_ul_added = 1; %]
-                                                <ul class="browse-result-authority-headings"> 
+                                                <ul class="browse-result-authority-headings">
                                                 [% END %]
                                                 <li><span class="browse-result-authority-field-name">[% heading_use_label(use=h.type) %]</span>
                                                 <a href="[% mkurl(ctx.opac_root _ '/results', {query => 'identifier|authority_id[' _ h.target _ ']'}) %]">[% h.heading | html %]</a>
index e7fc909..66439e7 100644 (file)
 /*
 Mini Table Styling
 */
-@media 
+@media
 only screen and (max-width: 650px)  {
     .miniTable{
         width: 100% !important;
     }
 
-       /* Force table to not be like tables anymore */
+    /* Force table to not be like tables anymore */
     .miniTable table, .miniTable thead, .miniTable tbody, .miniTable th, .miniTable td, .miniTable tr
-    { 
-               display: block; 
+    {
+        display: block;
     }
-    
+
     .miniTable th{
        display:none;
     }
-       
-       /* Hide table headers (but not display: none;, for accessibility) */
-    .miniTable thead tr{ 
-               position: absolute;
-               top: -9999px;
-               left: -9999px;
-       }
-       
+
+    /* Hide table headers (but not display: none;, for accessibility) */
+    .miniTable thead tr{
+        position: absolute;
+        top: -9999px;
+        left: -9999px;
+    }
+
     .miniTable tr
-     { 
-       border: 1px solid #ccc; 
-       margin: 10px 0px; 
+     {
+         border: 1px solid #ccc;
+         margin: 10px 0px;
      }
 
 
     .miniTable td
-    { 
-               border: none;
-               border-bottom: 1px solid #eee; 
-               position: relative;
-        padding-left: 50%; 
+    {
+        border: none;
+        border-bottom: 1px solid #eee;
+        position: relative;
+        padding-left: 50%;
         min-height:45px;
         text-align: right;
     }
-       
+
     .miniTable td:before
-    { 
-               left: 6px;
-               width: 45%; 
-               padding-right: 10px; 
-               white-space: nowrap;
+    {
+        left: 6px;
+        width: 45%;
+        padding-right: 10px;
+        white-space: nowrap;
         position: absolute;
     }
     .copyTable tr:nth-of-type(1):before { content: "Copy #1"; display: block; text-align:center; }
-       .copyTable tr:nth-of-type(2):before { content: "Copy #2"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(3):before { content: "Copy #3"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(4):before { content: "Copy #4"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(5):before { content: "Copy #5"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(6):before { content: "Copy #6"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(7):before { content: "Copy #7"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(8):before { content: "Copy #8"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(9):before { content: "Copy #9"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(10):before { content: "Copy #10"; display: block; text-align:center;}
-
-       .copyTable td:nth-of-type(1):before { content: "Library"; display: flex; }
+    .copyTable tr:nth-of-type(2):before { content: "Copy #2"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(3):before { content: "Copy #3"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(4):before { content: "Copy #4"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(5):before { content: "Copy #5"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(6):before { content: "Copy #6"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(7):before { content: "Copy #7"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(8):before { content: "Copy #8"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(9):before { content: "Copy #9"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(10):before { content: "Copy #10"; display: block; text-align:center;}
+
+    .copyTable td:nth-of-type(1):before { content: "Library"; display: flex; }
     .copyTable td:nth-of-type(2):before { content: "Call Number"; display: flex; }
-       .copyTable td:nth-of-type(3):before { content: "Barcode"; display: flex;}
+    .copyTable td:nth-of-type(3):before { content: "Barcode"; display: flex;}
     .copyTable td:nth-of-type(4):before { content: "Shelving Location"; display: flex;}
     .copyTable td:nth-of-type(5):before { content: "Status"; display: flex;}
     .copyTable td:nth-of-type(6):before { content: "Due Date"; display: flex;}
-   
+
     .holdingsTable tr:nth-of-type(1):before { content: "Copy #1"; display: block; text-align:center; }
-       .holdingsTable tr:nth-of-type(2):before { content: "Copy #2"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(3):before { content: "Copy #3"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(4):before { content: "Copy #4"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(5):before { content: "Copy #5"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(6):before { content: "Copy #6"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(7):before { content: "Copy #7"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(8):before { content: "Copy #8"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(9):before { content: "Copy #9"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(10):before { content: "Copy #10"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(2):before { content: "Copy #2"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(3):before { content: "Copy #3"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(4):before { content: "Copy #4"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(5):before { content: "Copy #5"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(6):before { content: "Copy #6"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(7):before { content: "Copy #7"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(8):before { content: "Copy #8"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(9):before { content: "Copy #9"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(10):before { content: "Copy #10"; display: block; text-align:center;}
 
 
     .holdingsTable td:nth-of-type(1):before { content: "Library"; display: flex; }
     .holdingsTable td:nth-of-type(2):before { content: "Shelving location"; display: flex; }
-       .holdingsTable td:nth-of-type(3):before { content: "Call number"; display: flex;}
+    .holdingsTable td:nth-of-type(3):before { content: "Call number"; display: flex;}
     .holdingsTable td:nth-of-type(4):before { content: "Status"; display: flex;}
 
-       .chargesTable td:nth-of-type(1):before { content: "Select"; display: flex; }
+    .chargesTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .chargesTable td:nth-of-type(2):before { content: "Owed"; display: flex; }
-       .chargesTable td:nth-of-type(3):before { content: "Billing Type"; display: flex;}
+    .chargesTable td:nth-of-type(3):before { content: "Billing Type"; display: flex;}
     .chargesTable td:nth-of-type(4):before { content: "Note"; display: flex;}
     .chargesTable td:nth-of-type(5):before { content: "Date"; display: flex;}
-    
+
     .chargesMainTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .chargesMainTable td:nth-of-type(2):before { content: "Owed"; display: flex; }
-       .chargesMainTable td:nth-of-type(3):before { content: "Billing Type"; display: flex;}
+    .chargesMainTable td:nth-of-type(3):before { content: "Billing Type"; display: flex;}
     .chargesMainTable td:nth-of-type(4):before { content: "Title"; display: flex;}
     .chargesMainTable td:nth-of-type(5):before { content: "Checkout"; display: flex;}
     .chargesMainTable td:nth-of-type(6):before { content: "Due"; display: flex;}
     .chargesMainTable td:nth-of-type(7):before { content: "Returned/Renewed"; display: flex;}
-    
+
     .activeHoldstable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .activeHoldstable td:nth-of-type(2):before { content: "Title"; display: flex; }
-       .activeHoldstable td:nth-of-type(3):before { content: "Author"; display: flex;}
+    .activeHoldstable td:nth-of-type(3):before { content: "Author"; display: flex;}
     .activeHoldstable td:nth-of-type(4):before { content: "Format"; display: flex;}
     .activeHoldstable td:nth-of-type(5):before { content: "Pickup Location"; display: flex;}
     .activeHoldstable td:nth-of-type(6):before { content: "Cancel If Not Filled By"; display: flex;}
     .activeHoldstable td:nth-of-type(7):before { content: "Status"; display: flex;}
     .activeHoldstable td:nth-of-type(8):before { content: "Notes"; display: flex;}
-    
+
     .holdHistoryTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .holdHistoryTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .holdHistoryTable td:nth-of-type(3):before { content: "Format"; display: flex; }
     .holdHistoryTable td:nth-of-type(4):before { content: "Pickup Location"; display: flex; }
     .holdHistoryTable td:nth-of-type(5):before { content: "Status"; display: flex; }
-    
+
     .paymentTable td:nth-of-type(1):before { content: "Payment Date"; display: flex; }
     .paymentTable td:nth-of-type(2):before { content: "Payment For"; display: flex; }
     .paymentTable td:nth-of-type(3):before { content: "Amount"; display: flex; }
     .paymentTable td:nth-of-type(4):before { content: "Receipt"; display: flex; }
-    
+
     .messagesTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .messagesTable td:nth-of-type(2):before { content: "Date"; display: flex; }
     .messagesTable td:nth-of-type(3):before { content: "Library"; display: flex; }
     .messagesTable td:nth-of-type(4):before { content: "Subject"; display: flex; }
     .messagesTable td:nth-of-type(5):before { content: ""; display: flex; }
-    
+
     .circTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .circTable td:nth-of-type(2):before { content: "Title"; display: flex; }
     .circTable td:nth-of-type(3):before { content: "Author"; display: flex; }
@@ -131,7 +131,7 @@ only screen and (max-width: 650px)  {
     .circTable td:nth-of-type(5):before { content: "Due Date"; display: flex; }
     .circTable td:nth-of-type(6):before { content: "Barcode"; display: flex; }
     .circTable td:nth-of-type(7):before { content: "Call Number"; display: flex; }
-    
+
     .circHistTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .circHistTable td:nth-of-type(2):before { content: "Title"; display: flex; }
     .circHistTable td:nth-of-type(3):before { content: "Author"; display: flex; }
@@ -140,7 +140,7 @@ only screen and (max-width: 650px)  {
     .circHistTable td:nth-of-type(6):before { content: "Date Returned"; display: flex; }
     .circHistTable td:nth-of-type(7):before { content: "Barcode"; display: flex; }
     .circHistTable td:nth-of-type(8):before { content: "Call Number"; display: flex; }
-    
+
     .bookbagTable td:nth-of-type(1):before { content: ""; display: flex; }
     .bookbagTable td:nth-of-type(2):before { content: "Title"; display: flex; }
     .bookbagTable td:nth-of-type(3):before { content: "Author(s)"; display: flex; }
@@ -148,23 +148,23 @@ only screen and (max-width: 650px)  {
     .bookbagTable td:nth-of-type(5):before { content: "Publication Date"; display: flex; }
     .bookbagTable td:nth-of-type(6):before { content: "Format"; display: flex; }
     .bookbagTable td:nth-of-type(7):before { content: "Notes"; display: flex; }
-    
+
     .eholdsTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .eholdsTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .eholdsTable td:nth-of-type(3):before { content: "Expire Date"; display: flex; }
     .eholdsTable td:nth-of-type(4):before { content: "Status"; display: flex; }
     .eholdsTable td:nth-of-type(5):before { content: "Actions"; display: flex; }
-    
+
     .eholdsreadyTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .eholdsreadyTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .eholdsreadyTable td:nth-of-type(3):before { content: "Expire Date"; display: flex; }
     .eholdsreadyTable td:nth-of-type(4):before { content: "Actions"; display: flex; }
-    
+
     .echeckoutTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .echeckoutTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .echeckoutTable td:nth-of-type(3):before { content: "Due Date"; display: flex; }
     .echeckoutTable td:nth-of-type(4):before { content: "Actions"; display: flex; }
-    
+
     .ecircsTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .ecircsTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .ecircsTable td:nth-of-type(3):before { content: "Due Date"; display: flex; }
@@ -173,17 +173,17 @@ only screen and (max-width: 650px)  {
     .bucketTable td:nth-of-type(2):before { content: "Title"; display: flex; text-align:left; }
     .bucketTable td:nth-of-type(3):before { content: "Author"; display: flex; text-align:left; }
     .bucketTable td:nth-of-type(4):before { content: "Call Number"; display: flex; text-align:left; }
-    
+
     /*Media Style Additions*/
     .fullRow{
         padding: 5px !important;
-       text-align: center !important;
-       width: 100%;
+        text-align: center !important;
+        width: 100%;
     }
-    
+
     .paginateText{
-       display:none;
-       }
+        display:none;
+    }
 
     .modal-dialog {
     max-width: 600px !important;
@@ -222,7 +222,7 @@ only screen and (max-width: 650px)  {
     #topnav_logo img {
         width: 200px;
     }
+
     #gold-links-holder {
         display: none;
     }
@@ -382,7 +382,7 @@ only screen and (max-width: 650px)  {
         float:left;
         [% END -%]
     }
-   
+
     #holds_box form blockquote {
         [% IF rtl == 't' -%]
         margin-right: 10px;
@@ -461,24 +461,24 @@ only screen and (max-width: 650px)  {
         display: block;
     }
     #main-content {
-        margin: 0 1px;        
+        margin: 0 1px;
     }
     #rdetails_status thead {
         display: none;
     }
     #rdetails_status tr {
-       display: block;
-       margin-top: 3px;
+    display: block;
+    margin-top: 3px;
     }
     #rdetails_status td {
-       display: block;
-       padding: 1px;
+    display: block;
+    padding: 1px;
     }
     .copy_details_row {
-       background-color: [% css_colors.accent_lightest %];
+    background-color: [% css_colors.accent_lightest %];
     }
     .copy_details_offers_row {
-       background-color: [% css_colors.accent_lightest %];
+    background-color: [% css_colors.accent_lightest %];
     }
     select#pickup_lib.search-wrapper-locg {
         width: 100%;
@@ -510,8 +510,8 @@ only screen and (max-width: 650px)  {
     #adv_search_parent {
         font-size: [% css_fonts.size_smaller %];
     }
-    #adv_search_filters {                                                                                                                             
-        position: relative;                                                                                                                           
+    #adv_search_filters {
+        position: relative;
         width: 300px;
     }
     #format_actions {
@@ -545,51 +545,51 @@ only screen and (max-width: 650px)  {
     }
     .search_catalog_lbl {
         [% IF rtl == 't' -%]
-       margin-right: 0;
+    margin-right: 0;
         [% ELSE -%]
-       margin-left: 0;
+    margin-left: 0;
         [% END -%]
-       white-space: nowrap;
+    white-space: nowrap;
     }
-    .adv_search_catalog_lbl { 
+    .adv_search_catalog_lbl {
         margin-top: 0;
-       white-space: nowrap;
+    white-space: nowrap;
     }
     .browse_the_catalog_lbl {
         white-space: nowrap;
     }
     .mobile_hide {
-       display: none;
-    } 
+    display: none;
+    }
     #dash_user {
         display: block;
-        padding: 0.5em;    
+        padding: 0.5em;
         font-size: 18px;
         text-align: center;
     }
     .dash_divider {
-       display: none;
+    display: none;
     }
     .dash_account_buttons {
         display: block;
-    } 
+    }
     .searchbar { line-height: 1.5em; }
     #browse-controls { line-height: 1.5em; }
     #search_query_label, #search_qtype_label, #search_itype_label, #search_locg_label {
         display: block;
     }
     .bookshelf td {
-       display: block;
-       width: 100%;
+    display: block;
+    width: 100%;
     }
     .bookshelf table thead tr {
-       display: block;
+    display: block;
     }
     #lowhits_help { width: inherit; }
-    #adv_search_tabs a{                                                                                                                           
+    #adv_search_tabs a{
         font-size: [% css_fonts.size_small %];
         margin: 2px 2px 0px 2px;
-        padding: 2px 2px 5px 2px; 
+        padding: 2px 2px 5px 2px;
         [% IF rtl == 't' -%]
         border-radius: 7px 0px 0px 7px;
         [% ELSE -%]
@@ -634,7 +634,7 @@ only screen and (max-width: 650px)  {
            here. */
 
         table#ebook_circs_main_table tr, table#ebook_holds_main_table tr { border-top: 25px solid #fff; }
-               table#acct_holds_hist_header tr{ border-top: 2px solid #bbb; }
+        table#acct_holds_hist_header tr{ border-top: 2px solid #bbb; }
 
         table#acct_checked_main_header td, table#acct_holds_main_header td, table#acct_checked_hist_header td, table#acct_holds_hist_header td, table#ebook_circs_main_table td, table#ebook_holds_main_table td {
                 /* Behave  like a "row" */
@@ -719,14 +719,14 @@ only screen and (max-width: 650px)  {
 }
 
 @media only screen and (min-width: 992px) {
-       .nav-fr{
-       float: right;
+    .nav-fr{
+        float: right;
     }
     .nav-fl{
-       float: left;
+        float: left;
     }
     #nav-divide{
-       display:none !important;
+        display:none !important;
     }
 }
 @media only screen and (max-width: 800px) {
index 4b0e8c5..cc26774 100755 (executable)
@@ -5,7 +5,7 @@
 %]
 
 .adv_filters{
-    
+
     -moz-column-count: 4;
     -moz-column-gap: 20px;
     -webkit-column-count: 4;
 /*
 Mini Table Styling
 */
-@media 
+@media
 only screen and (max-width: 650px)  {
     .miniTable{
         width: 100% !important;
     }
 
-       /* Force table to not be like tables anymore */
+    /* Force table to not be like tables anymore */
     .miniTable table, .miniTable thead, .miniTable tbody, .miniTable th, .miniTable td, .miniTable tr
-    { 
-               display: block; 
+    {
+        display: block;
     }
-    
+
     .miniTable th{
        display:none;
     }
-       
-       /* Hide table headers (but not display: none;, for accessibility) */
-    .miniTable thead tr{ 
-               position: absolute;
-               top: -9999px;
-               left: -9999px;
-       }
-       
+
+    /* Hide table headers (but not display: none;, for accessibility) */
+    .miniTable thead tr{
+        position: absolute;
+        top: -9999px;
+        left: -9999px;
+    }
+
     .miniTable tr
-     { 
-       border: 1px solid #ccc; 
-       margin: 10px 0px; 
+     {
+         border: 1px solid #ccc;
+         margin: 10px 0px;
      }
 
 
     .miniTable td
-    { 
-               border: none;
-               border-bottom: 1px solid #eee; 
-               position: relative;
-        padding-left: 50%; 
+    {
+        border: none;
+        border-bottom: 1px solid #eee;
+        position: relative;
+        padding-left: 50%;
         min-height:45px;
         text-align: right;
     }
-       
+
     .miniTable td:before
-    { 
-               left: 6px;
-               width: 45%; 
-               padding-right: 10px; 
-               white-space: nowrap;
+    {
+        left: 6px;
+        width: 45%;
+        padding-right: 10px;
+        white-space: nowrap;
         position: absolute;
     }
     .copyTable tr:nth-of-type(1):before { content: "Copy #1"; display: block; text-align:center; }
-       .copyTable tr:nth-of-type(2):before { content: "Copy #2"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(3):before { content: "Copy #3"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(4):before { content: "Copy #4"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(5):before { content: "Copy #5"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(6):before { content: "Copy #6"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(7):before { content: "Copy #7"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(8):before { content: "Copy #8"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(9):before { content: "Copy #9"; display: block; text-align:center;}
-       .copyTable tr:nth-of-type(10):before { content: "Copy #10"; display: block; text-align:center;}
-
-       .copyTable td:nth-of-type(1):before { content: "Library"; display: flex; }
+    .copyTable tr:nth-of-type(2):before { content: "Copy #2"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(3):before { content: "Copy #3"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(4):before { content: "Copy #4"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(5):before { content: "Copy #5"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(6):before { content: "Copy #6"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(7):before { content: "Copy #7"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(8):before { content: "Copy #8"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(9):before { content: "Copy #9"; display: block; text-align:center;}
+    .copyTable tr:nth-of-type(10):before { content: "Copy #10"; display: block; text-align:center;}
+
+    .copyTable td:nth-of-type(1):before { content: "Library"; display: flex; }
     .copyTable td:nth-of-type(2):before { content: "Call Number"; display: flex; }
-       .copyTable td:nth-of-type(3):before { content: "Barcode"; display: flex;}
+    .copyTable td:nth-of-type(3):before { content: "Barcode"; display: flex;}
     .copyTable td:nth-of-type(4):before { content: "Shelving Location"; display: flex;}
     .copyTable td:nth-of-type(5):before { content: "Status"; display: flex;}
     .copyTable td:nth-of-type(6):before { content: "Due Date"; display: flex;}
-   
+
     .holdingsTable tr:nth-of-type(1):before { content: "Copy #1"; display: block; text-align:center; }
-       .holdingsTable tr:nth-of-type(2):before { content: "Copy #2"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(3):before { content: "Copy #3"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(4):before { content: "Copy #4"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(5):before { content: "Copy #5"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(6):before { content: "Copy #6"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(7):before { content: "Copy #7"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(8):before { content: "Copy #8"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(9):before { content: "Copy #9"; display: block; text-align:center;}
-       .holdingsTable tr:nth-of-type(10):before { content: "Copy #10"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(2):before { content: "Copy #2"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(3):before { content: "Copy #3"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(4):before { content: "Copy #4"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(5):before { content: "Copy #5"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(6):before { content: "Copy #6"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(7):before { content: "Copy #7"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(8):before { content: "Copy #8"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(9):before { content: "Copy #9"; display: block; text-align:center;}
+    .holdingsTable tr:nth-of-type(10):before { content: "Copy #10"; display: block; text-align:center;}
 
 
     .holdingsTable td:nth-of-type(1):before { content: "Library"; display: flex; }
     .holdingsTable td:nth-of-type(2):before { content: "Shelving location"; display: flex; }
-       .holdingsTable td:nth-of-type(3):before { content: "Call number"; display: flex;}
+    .holdingsTable td:nth-of-type(3):before { content: "Call number"; display: flex;}
     .holdingsTable td:nth-of-type(4):before { content: "Status"; display: flex;}
 
-       .chargesTable td:nth-of-type(1):before { content: "Select"; display: flex; }
+    .chargesTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .chargesTable td:nth-of-type(2):before { content: "Owed"; display: flex; }
-       .chargesTable td:nth-of-type(3):before { content: "Billing Type"; display: flex;}
+    .chargesTable td:nth-of-type(3):before { content: "Billing Type"; display: flex;}
     .chargesTable td:nth-of-type(4):before { content: "Note"; display: flex;}
     .chargesTable td:nth-of-type(5):before { content: "Date"; display: flex;}
-    
+
     .chargesMainTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .chargesMainTable td:nth-of-type(2):before { content: "Owed"; display: flex; }
-       .chargesMainTable td:nth-of-type(3):before { content: "Billing Type"; display: flex;}
+    .chargesMainTable td:nth-of-type(3):before { content: "Billing Type"; display: flex;}
     .chargesMainTable td:nth-of-type(4):before { content: "Title"; display: flex;}
     .chargesMainTable td:nth-of-type(5):before { content: "Checkout"; display: flex;}
     .chargesMainTable td:nth-of-type(6):before { content: "Due"; display: flex;}
     .chargesMainTable td:nth-of-type(7):before { content: "Returned/Renewed"; display: flex;}
-    
+
     .activeHoldstable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .activeHoldstable td:nth-of-type(2):before { content: "Title"; display: flex; }
-       .activeHoldstable td:nth-of-type(3):before { content: "Author"; display: flex;}
+    .activeHoldstable td:nth-of-type(3):before { content: "Author"; display: flex;}
     .activeHoldstable td:nth-of-type(4):before { content: "Format"; display: flex;}
     .activeHoldstable td:nth-of-type(5):before { content: "Pickup Location"; display: flex;}
     .activeHoldstable td:nth-of-type(6):before { content: "Cancel If Not Filled By"; display: flex;}
     .activeHoldstable td:nth-of-type(7):before { content: "Status"; display: flex;}
     .activeHoldstable td:nth-of-type(8):before { content: "Notes"; display: flex;}
-    
+
     .holdHistoryTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .holdHistoryTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .holdHistoryTable td:nth-of-type(3):before { content: "Format"; display: flex; }
     .holdHistoryTable td:nth-of-type(4):before { content: "Pickup Location"; display: flex; }
     .holdHistoryTable td:nth-of-type(5):before { content: "Status"; display: flex; }
-    
+
     .paymentTable td:nth-of-type(1):before { content: "Payment Date"; display: flex; }
     .paymentTable td:nth-of-type(2):before { content: "Payment For"; display: flex; }
     .paymentTable td:nth-of-type(3):before { content: "Amount"; display: flex; }
     .paymentTable td:nth-of-type(4):before { content: "Receipt"; display: flex; }
-    
+
     .messagesTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .messagesTable td:nth-of-type(2):before { content: "Date"; display: flex; }
     .messagesTable td:nth-of-type(3):before { content: "Library"; display: flex; }
     .messagesTable td:nth-of-type(4):before { content: "Subject"; display: flex; }
     .messagesTable td:nth-of-type(5):before { content: ""; display: flex; }
-    
+
     .circTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .circTable td:nth-of-type(2):before { content: "Title"; display: flex; }
     .circTable td:nth-of-type(3):before { content: "Author"; display: flex; }
@@ -152,7 +152,7 @@ only screen and (max-width: 650px)  {
     .circTable td:nth-of-type(5):before { content: "Due Date"; display: flex; }
     .circTable td:nth-of-type(6):before { content: "Barcode"; display: flex; }
     .circTable td:nth-of-type(7):before { content: "Call Number"; display: flex; }
-    
+
     .circHistTable td:nth-of-type(1):before { content: "Select"; display: flex; }
     .circHistTable td:nth-of-type(2):before { content: "Title"; display: flex; }
     .circHistTable td:nth-of-type(3):before { content: "Author"; display: flex; }
@@ -161,7 +161,7 @@ only screen and (max-width: 650px)  {
     .circHistTable td:nth-of-type(6):before { content: "Date Returned"; display: flex; }
     .circHistTable td:nth-of-type(7):before { content: "Barcode"; display: flex; }
     .circHistTable td:nth-of-type(8):before { content: "Call Number"; display: flex; }
-    
+
     .bookbagTable td:nth-of-type(1):before { content: ""; display: flex; }
     .bookbagTable td:nth-of-type(2):before { content: "Title"; display: flex; }
     .bookbagTable td:nth-of-type(3):before { content: "Author(s)"; display: flex; }
@@ -169,23 +169,23 @@ only screen and (max-width: 650px)  {
     .bookbagTable td:nth-of-type(5):before { content: "Publication Date"; display: flex; }
     .bookbagTable td:nth-of-type(6):before { content: "Format"; display: flex; }
     .bookbagTable td:nth-of-type(7):before { content: "Notes"; display: flex; }
-    
+
     .eholdsTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .eholdsTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .eholdsTable td:nth-of-type(3):before { content: "Expire Date"; display: flex; }
     .eholdsTable td:nth-of-type(4):before { content: "Status"; display: flex; }
     .eholdsTable td:nth-of-type(5):before { content: "Actions"; display: flex; }
-    
+
     .eholdsreadyTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .eholdsreadyTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .eholdsreadyTable td:nth-of-type(3):before { content: "Expire Date"; display: flex; }
     .eholdsreadyTable td:nth-of-type(4):before { content: "Actions"; display: flex; }
-    
+
     .echeckoutTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .echeckoutTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .echeckoutTable td:nth-of-type(3):before { content: "Due Date"; display: flex; }
     .echeckoutTable td:nth-of-type(4):before { content: "Actions"; display: flex; }
-    
+
     .ecircsTable td:nth-of-type(1):before { content: "Title"; display: flex; }
     .ecircsTable td:nth-of-type(2):before { content: "Author"; display: flex; }
     .ecircsTable td:nth-of-type(3):before { content: "Due Date"; display: flex; }
@@ -194,20 +194,20 @@ only screen and (max-width: 650px)  {
     .bucketTable td:nth-of-type(2):before { content: "Title"; display: flex; text-align:left; }
     .bucketTable td:nth-of-type(3):before { content: "Author"; display: flex; text-align:left; }
     .bucketTable td:nth-of-type(4):before { content: "Call Number"; display: flex; text-align:left; }
-    
+
     /*Media Style Additions*/
     .fullRow{
         padding: 5px !important;
-       text-align: center !important;
-       width: 100%;
+        text-align: center !important;
+        width: 100%;
     }
-    
+
     .paginateText{
-       display:none;
-       }
+        display:none;
+    }
 }/*Micro Tables End*/
 
- .my_nav .active{background-color:#afffbf;}.my_nav a{text-align:left !important; min-width:17em;border-radius: 0px;}.sumNum{
+.sumNum {
     font-weight:700;
 }
 
@@ -225,13 +225,13 @@ Novelist Styling
 }
 
 .NovSectionHeader{
-       font-size: 16pt !important;
+    font-size: 16pt !important;
     font-weight: 600 !important;
 }
 
 .NovSelectImageHeadingToggle{
-           font-size: 20px;
-        
+        font-size: 20px;
+
 }
 
 /*Novelist Styling End*/
@@ -282,7 +282,7 @@ Novelist Styling
 
 .btn-opac:hover{
     color: [% css_colors.opac_button_text %];
-       background-color: [% css_colors.opac_button_hover %] !important;
+    background-color: [% css_colors.opac_button_hover %] !important;
     border-color: [% css_colors.opac_button_border_hover %];
 }
 
@@ -294,7 +294,7 @@ Novelist Styling
 
 .btn-action:hover{
     color: [% css_colors.action_button_text %];
-       background-color: [% css_colors.action_button_hover %] !important;
+    background-color: [% css_colors.action_button_hover %] !important;
     border-color: [% css_colors.action_button_border_hover %];
 }
 .btn-action > a{
@@ -303,15 +303,15 @@ Novelist Styling
 
 
 .dash-link{
-       color: #fff;
+    color: #fff;
 }
 
 .dash-clear{
-       color: [% css_colors.zero_count %] !important;
+    color: [% css_colors.zero_count %] !important;
 }
 
 .dash-unclear{
-       color: [% css_colors.non_zero_count %] !important;
+    color: [% css_colors.non_zero_count %] !important;
 }
 
 .remove_filter{
@@ -323,19 +323,19 @@ Novelist Styling
 
 
 .cn_browse_item .card{
-       padding: 15px;
+    padding: 15px;
 }
 #facets .card-header,#facets .card-header a {
-       background-color: [% css_colors.facets_back %];
+    background-color: [% css_colors.facets_back %];
     color: [% css_colors.text_invert %]
 }
 
 .facet_template:hover{
-               background-color:#e8e8e8;
+        background-color:#e8e8e8;
 }
 
 .danger, .validate{
-       color: [% css_colors.text_alert %] !important;
+    color: [% css_colors.text_alert %] !important;
 }
 
 .danger{
@@ -354,32 +354,32 @@ Novelist Styling
     color : #000 !important;
 }
 .login:focus{
-       outline:none;
+    outline:none;
 }
 .browse-result-list{
-       list-style:none;
+    list-style:none;
 }
 .not_active_pill{
-       border: 2px solid #007bff;
+    border: 2px solid #007bff;
     padding: 6px;
     margin: 0 10px;
 }
 
 .mini-control{
-       max-width: 100px !important;
+    max-width: 100px !important;
 }
 
 .card-body:empty{
-       display:none;
+    display:none;
 }
 .min{
  min-height:500px;
 }
 .container{
-       
+
 }
 html{
-       height:100%;
+    height:100%;
     min-height: 100vh;
 }
 body {
@@ -416,18 +416,29 @@ a {
     color: [% css_colors.link %];
 }
 
+#search-wrapper h1,
+#search-wrapper h2 {
+    text-align: center;
+}
+
 #search-wrapper input[type=text] {
+    height: calc(1.8125rem + 2px);
     margin:0;
     padding:0;
 }
 
 #search-wrapper select, .results_header_lbl select {
     border:1px solid [% css_colors.border_standard %];
+    height: calc(1.8125rem + 2px);
     margin:0;
     padding:0;
     width: 12em;
 }
 
+.search-check {
+    text-align: center;
+}
+
 .searchbar {
     font-weight: bold;
     padding-top: 10px;
@@ -455,6 +466,10 @@ a {
 }
 */
 
+#actions .btn-action {
+    text-align: left;
+}
+
 #adv_numeric_block{
     max-width: 600px;
 }
@@ -518,10 +533,10 @@ div.select-box-wrapper {
 }
 
 
-/*  
+/*
 #dash_fines { color: [% css_colors.text_badnews %]; }
 the color contrast between "text_badnews" and "primary"
-is too low for WCAG compliance.  Use "text_attention" 
+is too low for WCAG compliance.  Use "text_attention"
 for now until a better color is picked - if needed.
 */
 
@@ -547,7 +562,7 @@ for now until a better color is picked - if needed.
 }
 
 #header-wrap {
-       /* border-bottom: 5px solid [% css_colors.nav_separation %]; */
+    /* border-bottom: 5px solid [% css_colors.nav_separation %]; */
     background-color: [% css_colors.header_primary_fade %];
     background-image: -moz-linear-gradient([% css_colors.header_primary %], [% css_colors.header_primary_fade %]);
     background-image: -o-linear-gradient([% css_colors.header_primary %], [% css_colors.header_primary_fade %]);
@@ -576,7 +591,7 @@ for now until a better color is picked - if needed.
     font-weight: bold;
     position: relative;
     top:4px;
-    
+
 }
 
 #header-links a {
@@ -652,6 +667,10 @@ for now until a better color is picked - if needed.
     height:0px;
 }
 
+.search_box_wrapper {
+    padding-left: 1rem;
+}
+
 #search-wrapper {
     /*border-bottom: 1px solid [% css_colors.border_standard %];*/
     padding-bottom: 5px;
@@ -700,7 +719,7 @@ for now until a better color is picked - if needed.
     padding-bottom: 10px;
 }
 
-#adv_search_tabs, #acct_tabs, #acct_fines_tabs, #acct_checked_tabs, #acct_holds_tabs, #acct_prefs_tabs, #results_header_inner{
+#adv_search_tabs, #acct_tabs, #acct_fines_tabs, #acct_checked_tabs, #acct_holds_tabs, #acct_prefs_tabs {
     [% IF rtl == 't' -%]
     margin-right:2px;
     [%- ELSE %]
@@ -1030,7 +1049,7 @@ div.format_icon {
     [%- END %]
 }
 
-#rdetails_status td[headers=copy_header_library], 
+#rdetails_status td[headers=copy_header_library],
 #rdetails_status td[headers=copy_header_shelfloc] {
     white-space: normal;
 }
@@ -1137,6 +1156,10 @@ div.format_icon {
     background-color: [% css_colors.background %];
 }
 
+#cartDropdown .dropdown-menu {
+
+}
+
 #content-wrapper {
     background-color: [% css_colors.background %];
     height: auto;
@@ -1161,7 +1184,7 @@ div.format_icon {
     padding-left: 0px;
     [%- END %]
     margin: 0 1em;
-    clear: both;   
+    clear: both;
 }
 
 #main-content-after-bar {
@@ -1174,13 +1197,17 @@ div.format_icon {
     [%- END %]
 }
 
+#results_header_inner {
+    padding-bottom: 1rem;
+}
+
 #results-side-bar {
     [% IF rtl == 't' -%]
-    float: right; 
+    float: right;
     margin-left: 5px;
     [%- ELSE %]
     float: left;
-    margin-right: 5px; 
+    margin-right: 5px;
     [%- END %]
     width: 174px;
     background-color: [% css_colors.background %];
@@ -1313,6 +1340,9 @@ collapse correctly when the window width decreases */
 }
 
 
+.results_header_nav1 {
+    text-align: center;
+}
 
 .results_header_nav1 .h1 {
     font-size: [% css_fonts.size_bigger %];
@@ -1385,7 +1415,7 @@ tr.result_table_row > td.result_table_pic_header {
     [% ELSE; %]
     float: right;
     margin-right: 5em;
-    [% END; %]
+    [% END %]
 }
 #record_basket_icon {
     [% IF rtl == 't' -%]
@@ -1394,7 +1424,7 @@ tr.result_table_row > td.result_table_pic_header {
     [% ELSE; %]
     float: right;
     margin-right: 2em;
-    [% END; %]
+    [% END %]
     position: relative;
 }
 #record_basket_count_floater {
@@ -1411,11 +1441,7 @@ tr.result_table_row > td.result_table_pic_header {
     text-decoration: none;
 }
 #basket_actions {
-    [% IF rtl == 't' -%]
-    float: left;
-    [% ELSE; %]
-    float: right;
-    [% END; %]
+    margin: .5rem;
 }
 #basket_actions select {
     border-color: rgb(169, 169, 169);
@@ -1523,7 +1549,7 @@ div.result_table_utils_cont {
 
 #myopac_holds_main_table td {
     border: 1px solid [% css_colors.border_dark %];
-    
+
 }
 
 .myopac-hold-available {
@@ -1697,7 +1723,7 @@ div.result_table_utils_cont {
     [% ELSE -%]
     padding-left: .5em;
     [% END -%]
-   
+
 }
 
 /* div for the payment buttons with the total */
@@ -1754,7 +1780,7 @@ div.result_table_utils_cont {
 }
 
 #fines_payments_wrapper {
-    padding-left: 5px; 
+    padding-left: 5px;
     padding-right: 5px;
 }
 
@@ -1794,6 +1820,13 @@ div.result_table_utils_cont {
 #adv_search_parent {
     margin-bottom:0px;
 }
+
+#search-wrapper #search-submit-go,
+#search-wrapper #search-submit-go-depth {
+    display: inline-block;
+    margin-top: 1.3rem;
+}
+
 #search-submit-spinner {
     height: 16px;
     width: 16px;
@@ -1961,10 +1994,10 @@ div#facet_sidebar {
     padding-top:6px;
 }
 
-/* in this context, where h4 is primarily for structure, 
+/* in this context, where h4 is primarily for structure,
    avoid the normal large font and margin for h4's */
 .facet_box_temp h4 {
-    font-size : 100%; 
+    font-size : 100%;
     margin: 0px;
 }
 
@@ -2046,7 +2079,7 @@ div#facet_sidebar {
 }
 
 #footer-wrap {
-       /* border-top: 5px solid [% css_colors.nav_separation %]; */
+    /* border-top: 5px solid [% css_colors.nav_separation %]; */
     background-color: [% css_colors.footer_primary %];
     background-image: -moz-linear-gradient([% css_colors.footer_primary_fade %], [% css_colors.footer_primary %]);
     background-image: -o-linear-gradient([% css_colors.footer_primary_fade %], [% css_colors.footer_primary %]);
@@ -2067,10 +2100,15 @@ div#facet_sidebar {
     font-size: [% css_fonts.size_small %];
 }
 
+#footer .navbar-nav {
+    justify-content: center;
+}
 
 #copyright_text, #footer_logo {
     color: [% css_colors.footer_link %];
-    font-size: [% css_fonts.size_bigger %];
+    font-size: [% css_fonts.size_small %];
+    margin: 5px 0;
+    text-align: center;
 }
 
 .color_4 {
@@ -2212,12 +2250,6 @@ a.dash-link:hover { text-decoration: underline !important; }
 }
 #adv_expert_row label { font-weight: bold; }
 
-.bookshelf tr.browse_border td {
-    border-bottom: 1px dashed [% css_colors.accent_dark %];
-    font-size: 1px;
-    height: 1px;
-    padding-bottom: 1ex;
-}
 .cn_browse_item { padding: 2ex; }
 .results-paginator-list {
     [% IF rtl == 't' -%]
@@ -2231,7 +2263,7 @@ a.dash-link:hover { text-decoration: underline !important; }
 .unread-patron-message { font-weight: bold; }
 
 #hold-items-list td { padding: 5px; margin-bottom: 20px; }
-.hold-items-list-title { 
+.hold-items-list-title {
   font-size: [% css_fonts.size_bigger %];
   margin-bottom: 20px;
 }
@@ -2239,17 +2271,17 @@ a.dash-link:hover { text-decoration: underline !important; }
 
 .hold_success_links > span { margin: 0 2em; }
 
-.radio-parts-selection { 
+.radio-parts-selection {
    width: 75%;
    margin-bottom: 20px;
 }
 
-.parts-radio-option { 
+.parts-radio-option {
   display: inline-block;
   width:15em;
 }
 
-.mr_holds_no_formats { 
+.mr_holds_no_formats {
   [% IF rtl == 't' -%]
   margin-right: 25px;
   [% ELSE -%]
@@ -2258,10 +2290,10 @@ a.dash-link:hover { text-decoration: underline !important; }
   padding: 5px;
   font-size: 110%;
   font-weight: bold;
-  color: [% css_colors.text_invert %]; 
+  color: [% css_colors.text_invert %];
   background-color: [% css_colors.primary %];
 }
+
 .holds_item_row_separator td {
   border-top: 2px dashed [% css_colors.accent_medium %];
 }
@@ -2284,7 +2316,7 @@ a.dash-link:hover { text-decoration: underline !important; }
 .opac-multiline-button > a,
 .opac-button, .results_header_btns a, #simple-detail-view-links a, .dash_account_buttons a {
     color: [% css_colors.button_text %];
-    font-weight: bold; 
+    font-weight: bold;
     text-decoration: none;
     cursor: pointer !important;
     border-radius: 5px;
@@ -2606,6 +2638,7 @@ table.bookbag-specific {
     height: 15px;
 }
 .opac-alert { color: [% css_colors.text_alert %]; }
+
 .float-left {
     [% IF rtl == 't' -%]
     float: right;
@@ -2765,7 +2798,7 @@ a.preflib_change {
     padding: 3px 5px;
 }
 .popmenu li ul {
-    display: none; 
+    display: none;
     width: 10em; /* Width to help Opera out */
     background-color: [% css_colors.primary %];
 }
@@ -2782,38 +2815,38 @@ a.preflib_change {
     float: none;
 }
 .popmenu li:hover li a {
-    background-color: [% css_colors.primary %]; 
+    background-color: [% css_colors.primary %];
     color: [% css_colors.accent_ultralight %];
 }
 .popmenu li li a:hover {
-    background-color: [% css_colors.accent_ultralight %]; 
+    background-color: [% css_colors.accent_ultralight %];
     color: [% css_colors.primary %];
 }
 /* Styles for the basket entry. */
 .popmenu li:hover li[class~="temporary"] a {
-    background-color: [% css_colors.primary %]; 
+    background-color: [% css_colors.primary %];
     color: [% css_colors.accent_ultralight %];
 }
 .popmenu li li[class~="temporary"] a:hover {
-    background-color: [% css_colors.accent_ultralight %]; 
+    background-color: [% css_colors.accent_ultralight %];
     color: [% css_colors.primary %];
 }
 /* Styles for the default list entry. */
 .popmenu li:hover li[class~="default"] a {
-    background-color: [% css_colors.primary %]; 
+    background-color: [% css_colors.primary %];
     color: [% css_colors.accent_ultralight %];
 }
 .popmenu li li[class~="default"] a:hover {
-    background-color: [% css_colors.accent_ultralight %]; 
+    background-color: [% css_colors.accent_ultralight %];
     color: [% css_colors.primary %];
 }
 /* Styles for the new list entry. */
 .popmenu li:hover li[class~="new"] a {
-    background-color: [% css_colors.primary %]; 
+    background-color: [% css_colors.primary %];
     color: [% css_colors.accent_ultralight %];
 }
 .popmenu li li[class~="new"] a:hover {
-    background-color: [% css_colors.accent_ultralight %]; 
+    background-color: [% css_colors.accent_ultralight %];
     color: [% css_colors.primary %];
 }
 /* Style to add a divider on the menu. */
@@ -2822,7 +2855,7 @@ a.preflib_change {
     border-bottom-color: [% css_colors.border_dark %];
     border-bottom-style: solid;
 }
-    
+
 
 
 
@@ -2841,7 +2874,7 @@ a.preflib_change {
 .password_message {
     padding-top: 1em;
     padding-bottom: 0.5em;
-       font-style: italic;
+    font-style: italic;
 }
 
 #maintenance_message {
@@ -2915,9 +2948,9 @@ a.preflib_change {
     font-size: [% css_fonts.size_bigger %];
 }
 
-#main-content-register table { 
-    padding: 20px; 
-    margin-top: 18px; 
+#main-content-register table {
+    padding: 20px;
+    margin-top: 18px;
     border-collapse: collapse;
 }
 
@@ -2999,18 +3032,35 @@ a.preflib_change {
     white-space: pre-wrap;
 }
 
+#browse-controls {
+    text-align: center;
+}
+
+.browse-pager-spinner {
+    display: inline-block;
+    height: 16px;
+    width: 16px;
+}
+
 @media only screen and (min-width: 992px) {
-       .nav-fr{
-       float: right;
+    .nav-fr{
+        float: right;
     }
     .nav-fl{
-       float: left;
+        float: left;
     }
     #nav-divide{
-       display:none !important;
+        display:none !important;
+    }
+}
+
+@media only screen and (max-width: 767px) {
+    .search_box_wrapper {
+        padding-left: 0;
     }
     
 }
+
 @media only screen and (max-width: 800px) {
     .adv_options{
         width: 100% !important;
@@ -3064,7 +3114,7 @@ a.preflib_change {
     #topnav_logo img {
         width: 200px;
     }
+
     #gold-links-holder {
         display: none;
     }
@@ -3224,7 +3274,7 @@ a.preflib_change {
         float:left;
         [% END -%]
     }
-   
+
     #holds_box form blockquote {
         [% IF rtl == 't' -%]
         margin-right: 10px;
@@ -3303,24 +3353,24 @@ a.preflib_change {
         display: block;
     }
     #main-content {
-        margin: 0 1px;        
+        margin: 0 1px;
     }
     #rdetails_status thead {
         display: none;
     }
     #rdetails_status tr {
-       display: block;
-       margin-top: 3px;
+    display: block;
+    margin-top: 3px;
     }
     #rdetails_status td {
-       display: block;
-       padding: 1px;
+    display: block;
+    padding: 1px;
     }
     .copy_details_row {
-       background-color: [% css_colors.accent_lightest %];
+    background-color: [% css_colors.accent_lightest %];
     }
     .copy_details_offers_row {
-       background-color: [% css_colors.accent_lightest %];
+    background-color: [% css_colors.accent_lightest %];
     }
     select#pickup_lib.search-wrapper-locg {
         width: 100%;
@@ -3352,8 +3402,8 @@ a.preflib_change {
     #adv_search_parent {
         font-size: [% css_fonts.size_smaller %];
     }
-    #adv_search_filters {                                                                                                                             
-        position: relative;                                                                                                                           
+    #adv_search_filters {
+        position: relative;
         width: 300px;
     }
     #format_actions {
@@ -3387,51 +3437,51 @@ a.preflib_change {
     }
     .search_catalog_lbl {
         [% IF rtl == 't' -%]
-       margin-right: 0;
+    margin-right: 0;
         [% ELSE -%]
-       margin-left: 0;
+    margin-left: 0;
         [% END -%]
-       white-space: nowrap;
+    white-space: nowrap;
     }
-    .adv_search_catalog_lbl { 
+    .adv_search_catalog_lbl {
         margin-top: 0;
-       white-space: nowrap;
+    white-space: nowrap;
     }
     .browse_the_catalog_lbl {
         white-space: nowrap;
     }
     .mobile_hide {
-       display: none;
-    } 
+    display: none;
+    }
     #dash_user {
         display: block;
-        padding: 0.5em;    
+        padding: 0.5em;
         font-size: 18px;
         text-align: center;
     }
     .dash_divider {
-       display: none;
+    display: none;
     }
     .dash_account_buttons {
         display: block;
-    } 
+    }
     .searchbar { line-height: 1.5em; }
     #browse-controls { line-height: 1.5em; }
     #search_query_label, #search_qtype_label, #search_itype_label, #search_locg_label {
         display: block;
     }
     .bookshelf td {
-       display: block;
-       width: 100%;
+    display: block;
+    width: 100%;
     }
     .bookshelf table thead tr {
-       display: block;
+    display: block;
     }
     #lowhits_help { width: inherit; }
-    #adv_search_tabs a{                                                                                                                           
+    #adv_search_tabs a{
         font-size: [% css_fonts.size_small %];
         margin: 2px 2px 0px 2px;
-        padding: 2px 2px 5px 2px; 
+        padding: 2px 2px 5px 2px;
         [% IF rtl == 't' -%]
         border-radius: 7px 0px 0px 7px;
         [% ELSE -%]
@@ -3476,7 +3526,7 @@ a.preflib_change {
            here. */
 
         table#ebook_circs_main_table tr, table#ebook_holds_main_table tr { border-top: 25px solid #fff; }
-               table#acct_holds_hist_header tr{ border-top: 2px solid #bbb; }
+        table#acct_holds_hist_header tr{ border-top: 2px solid #bbb; }
 
         table#acct_checked_main_header td, table#acct_holds_main_header td, table#acct_checked_hist_header td, table#acct_holds_hist_header td, table#ebook_circs_main_table td, table#ebook_holds_main_table td {
                 /* Behave  like a "row" */
@@ -3561,27 +3611,27 @@ a.preflib_change {
 }
 
 
-/* 
+/*
 For text which is visible only to screen readers.
-Borrowed from http://getbootstrap.com/css/#helper-classes-screen-readers 
+Borrowed from http://getbootstrap.com/css/#helper-classes-screen-readers
 See also http://webaim.org/techniques/css/invisiblecontent/
 */
-.sr-only {                                                                     
-    position: absolute;                                                          
-    width: 1px;                                                                  
-    height: 1px;                                                                 
-    padding: 0;                                                                  
-    margin: -1px;                                                                
-    overflow: hidden;                                                            
-    clip: rect(0, 0, 0, 0);                                                      
-    border: 0;                                                                   
+.sr-only {
+    position: absolute;
+    width: 1px;
+    height: 1px;
+    padding: 0;
+    margin: -1px;
+    overflow: hidden;
+    clip: rect(0, 0, 0, 0);
+    border: 0;
 }
 
 /* Make added rows in Expert Search have bold labels like the initial row */
 label[for*=expert_]
 {
     font-weight: bold;
-}  
+}
 
 .sort_deemphasize {
     font-weight: lighter;
@@ -3595,7 +3645,7 @@ label[for*=expert_]
 
 #clear-history-confirm {
   font-weight: bold;
-  color: [% css_colors.text_badnews %]; 
+  color: [% css_colors.text_badnews %];
   padding: 10px;
 }
 
@@ -3720,10 +3770,10 @@ label[for*=expert_]
 
 /*
 #acct_checked_main_header td, #acct_holds_main_header td, #acct_fines_main_header td, #acct_fines_confirm_header td, #acct_fees_main_header td,#acct_checked_hist_header td, #acct_holds_hist_header td, #acct_list_header td, #acct_list_header_anon td, #temp_list_holds td, #acct_messages_main_header td, #ebook_circs_main_table td, #ebook_holds_main_table td {
-    background-color: [% css_colors.background %]; 
+    background-color: [% css_colors.background %];
     padding: 10px;
-        border: 1px solid #d3d3d3; 
-} 
+     border: 1px solid #d3d3d3;
+}
 
 #acct_checked_main_header th, #acct_holds_main_header th, #acct_fines_main_header th, #acct_fines_confirm_header th, #acct_fees_main_header th, #acct_checked_hist_header th, #acct_holds_hist_header th, #acct_list_header th, #acct_list_header_anon th, #temp_list_holds th, #acct_messages_main_header th, #ebook_holds_main_table th {
     [% IF rtl == 't' -%]
@@ -3799,6 +3849,7 @@ label[for*=expert_]
 
 .search-filter{
     display: inline;
+    white-space: nowrap;
 }
 
 
@@ -3810,7 +3861,7 @@ label[for*=expert_]
 
 
 #homeLogo{
-    filter: alpha(opacity=50); 
+    filter: alpha(opacity=50);
     background-color: #fff; /* Used if the image is unavailable */
     height: 500px; /* You must set a specified height */
     background-position: center; /* Center the image */
@@ -3824,6 +3875,10 @@ label[for*=expert_]
     color: #fff !important;
 }
 
+.nav-link.active {
+    color: #000;
+}
+
 .pref_table{
     margin: 10px;
 }
@@ -3845,6 +3900,9 @@ label[for*=expert_]
     background-color: [% css_colors.facets_back %];
     color: [% css_colors.facets_text %];
 }
+.facet_box_wrapper .card-body {
+    padding: .5rem;
+}
 
 .vertMid {
     position: relative;
@@ -3856,15 +3914,74 @@ label[for*=expert_]
     margin-right:5px;
 }
 
+.my_nav .active{
+     background-color: #c8ffaf;
+}
+
+.my_nav a {
+    text-align:left !important;
+    border-radius: 0;
+}
+
+.my_nav .dropdown {
+    display: block;
+    width: 100%;
+}
+
+.my_nav .dropdown button {
+    border-radius: 0;
+}
+
 .my_nav .dropdown-toggle::after{
-    margin: 5px 0px !important;
     float: right;
+    margin: 5px 0 0 5px;
+}
+
+.dropdown-item:active {
+    background-color: #EDFFCC;
 }
 
 .my_nav .fas, .mynav .far{
     min-width:20px;
 }
 
-.adv_options{
+.adv_options {
     width: 50%;
-}
\ No newline at end of file
+}
+
+.page-link {
+    color: [% css_colors.link %];
+}
+
+.page-item.active .page-link {
+    background-color: [% css_colors.link %];
+    border-color: [% css_colors.link %];
+}
+
+.btn-outline-primary {
+    border-color: [% css_colors.link %];
+    color: [% css_colors.link %];
+}
+
+.btn-outline-primary:hover {
+    color: [% css_colors.button_confirm_text %];
+    background-color: [% css_colors.button_confirm_hover %];
+    border-color: [% css_colors.button_confirm_border_hover %];
+}
+
+#rdetail_extras_div .card-header {
+    background-color: #007a54;
+}
+
+#rdetail_extras_div .card-header  a {
+    color: #FFF
+}
+
+#record_actions .btn {
+    text-align: left;
+}
+
+.alert-danger a:link,
+.alert-danger a:visited {
+    color: #424fa6;
+}
index 4d15d07..add822b 100755 (executable)
@@ -5,7 +5,7 @@
     ctx.page_title = l("Home") %]
     <h2 class="sr-only">[% l('Catalog Home') %]</h2>
     [% INCLUDE "opac/parts/searchbar.tt2" is_home_page=1 %]
-  
+
             [% INCLUDE "opac/parts/homesearch.tt2" %]
-        
+
 [%- END %]
index 0e82edf..eeea74b 100755 (executable)
@@ -11,7 +11,7 @@
         <div id="main-content">
             <h3 class="sr-only">[% l('Account Login Form') %]</h3>
             [% INCLUDE "opac/parts/login/form.tt2" %]
-            <div class="clear-both very-big-height"></div>     
+            <div class="clear-both very-big-height"></div>
         </div>
     </div>
 [%- END %]
index a03c7cb..c3b9a82 100755 (executable)
@@ -14,9 +14,9 @@
                     INCLUDE "opac/parts/anon_list.tt2";
                 ELSE %]
                 <div class="warning_box"><h2>[% l("The basket is empty."); %]</h2></div>
-                <button type="button" class="btn btn-confirm" onclick="window.location='[% ctx.referer | html %]'"><i class="fas fa-arrow-alt-circle-left"></i> [% l('Return') %]</button>
+                <button type="button" class="btn btn-confirm" onclick="window.location='[% ctx.referer | html %]'"><i class="fas fa-arrow-alt-circle-left" aria-hidden="true"></i> [% l('Return') %]</button>
                 [% END %]
         </div>
     </div>
-    
+
 [%- END %]
index 793581c..538268f 100755 (executable)
@@ -3,7 +3,7 @@
     WRAPPER "opac/parts/base.tt2";
     INCLUDE "opac/parts/topnav.tt2";
     ctx.page_title = l("Confirm Clearing of Basket") %]
-    
+
     [% INCLUDE "opac/parts/searchbar.tt2" %]
 <div class="container">
   <hr>
@@ -11,9 +11,9 @@
   <p class="big-strong">[% l('Please confirm that you want to remove all [_1] titles from the basket.', ctx.mylist.size) %]
     <form method="post" action="[% mkurl(ctx.opac_root _ '/cache/clear', {}, 1) %]">
       <input type="hidden" name="redirect_to" value="[% ctx.referer %]" />
-      <button id="print_cart_submit" type="submit" 
-        value="[% l('Confirm') %]"  class="btn btn-confirm"><i class="fas fa-check"></i> [% l('Confirm') %]</button>
-      <button type="reset" onclick="window.location='[% ctx.referer | html %]'" id="clear_basket_cancel" class="btn btn-deny"><i class="far fa-times-circle"></i> [% l('Cancel') %]</button>
+      <button id="print_cart_submit" type="submit"
+        value="[% l('Confirm') %]"  class="btn btn-confirm"><i class="fas fa-check" aria-hidden="true"></i> [% l('Confirm') %]</button>
+      <button type="reset" onclick="window.location='[% ctx.referer | html %]'" id="clear_basket_cancel" class="btn btn-deny"><i class="fas fa-times-circle" aria-hidden="true"></i> [% l('Cancel') %]</button>
     </form>
 </div>
 [%- END %]
index ab47de1..0a9d302 100755 (executable)
@@ -3,7 +3,7 @@
     WRAPPER "opac/parts/base.tt2";
     INCLUDE "opac/parts/topnav.tt2";
     ctx.page_title = l("Confirm Basket Email") %]
-   
+
 [% INCLUDE "opac/parts/searchbar.tt2" %]
 <div class="container top-divide">
   [% IF ctx.mylist.size %]
           </label>
         </div>
         <br />
-        <button id="print_cart_submit" type="submit" 
-          value="[% l('Confirm') %]" class="btn btn-confirm"><i class="fas fa-envelope-open-text"></i> [% l('Email') %]</button>
-        <button type="reset" onclick="window.location='[% ctx.referer | html %]'"  id="clear_basket_cancel" class="btn btn-deny"><i class="far fa-times-circle"></i> [% l('Cancel') %]</button>
+        <button id="print_cart_submit" type="submit"
+          value="[% l('Confirm') %]" class="btn btn-confirm"><i class="fas fa-envelope-open-text" aria-hidden="true"></i> [% l('Email') %]</button>
+        <button type="reset" onclick="window.location='[% ctx.referer | html %]'"  id="clear_basket_cancel" class="btn btn-deny"><i class="fas fa-times-circle" aria-hidden="true"></i> [% l('Cancel') %]</button>
     </form>
   [% ELSE %]
     <div class="warning_box">[% l("The basket is empty."); %]</div>
-    <button type="button" class="btn btn-confirm" onclick="window.location='[% ctx.referer | html %]'"><i class="fas fa-undo-alt"></i> [% l('Return') %]</button>
+    <button type="button" class="btn btn-confirm" onclick="window.location='[% ctx.referer | html %]'"><i class="fas fa-undo-alt" aria-hidden="true"></i> [% l('Return') %]</button>
   [% END %]
 </div>
 [%- END %]
index 0958dff..5b32867 100755 (executable)
@@ -4,7 +4,7 @@
     INCLUDE "opac/parts/topnav.tt2";
     ctx.page_title = l("Confirm Basket Printing") %]
     [% INCLUDE "opac/parts/searchbar.tt2" %]
-   
+
 <div class="container">
   [% IF ctx.mylist.size %]
   <h3>[% l('Confirm Basket Printing') %]</h3>
         </label>
       </div>
       <br />
-      <button id="print_cart_submit" type="submit" class="btn btn-confirm"><i class="fas fa-print"></i> [% l("Print") %]</button>
-      <button type="reset" name="cancel" onclick="window.location='[% ctx.referer | html %]'"  id="clear_basket_cancel" class="btn btn-deny"><i class="far fa-times-circle"></i> [% l('Cancel') %]</button>
+      <button id="print_cart_submit" type="submit" class="btn btn-confirm"><i class="fas fa-print" aria-hidden="true"></i> [% l("Print") %]</button>
+      <button type="reset" name="cancel" onclick="window.location='[% ctx.referer | html %]'"  id="clear_basket_cancel" class="btn btn-deny"><i class="fas fa-times-circle" aria-hidden="true"></i> [% l('Cancel') %]</button>
     </form>
   [% ELSE %]
     <div class="warning_box"><h3>[% l("The basket is empty."); %]</h3></div>
-    <button type="button" class="btn btn-confirm" onclick="window.location='[% ctx.referer | html %]'"><i class="fas fa-undo-alt"></i> [% l('Return') %]</button>
+    <button type="button" class="btn btn-confirm" onclick="window.location='[% ctx.referer | html %]'"><i class="fas fa-undo-alt" aria-hidden="true"></i> [% l('Return') %]</button>
   [% END %]
 </div>
 [%- END %]
index 65b92b7..0ad3f8a 100755 (executable)
     END;
     %]
 <div>
-   
+
 
     [% IF ctx.circs.size < 1 %]
     <div class="warning_box">[% l('There are no items in your circulation history.') %]</div>
     [% ELSE %]
 
         <form method="post" id="circ-form">
-            
+
         <div class="row">
         <div class="col-3 text-left">[% IF offset != 0 %]<a href='[% mkurl('circ_history', {limit => limit, offset => (offset - limit)}) %]'
                  class="btn btn-action mr-3" ><span class="nav_arrow_fix">&#9668;</span>[% l('Previous') %]</a>[% END %]
-                 <button name="action" class="btn btn-danger my-2" id="delete" value="delete" type="submit" onclick="return confirm('[% l("Are you sure you wish to delete the selected item(s)?") %]');">
-            <i class="fas fa-trash-alt"></i> Delete Selected</button>
+                 <button name="action" class="btn btn-deny my-2" id="delete" value="delete" type="submit" onclick="return confirm('[% l("Are you sure you wish to delete the selected item(s)?") %]');">
+            <i class="fas fa-trash-alt" aria-hidden="true"></i> Delete Selected</button>
             </div>
         <div class="col-6 text-center"></div>
         <div class="col-3 text-right">[% IF !no_next %]<a href='[% mkurl('circ_history', {limit => limit, offset => (offset + limit)}) %]'
     </div>
     <div id='checked_main'>
      <div class="d-block d-md-none">
-          
+
 
             <input id="check_all_circ_hist" checked="checked" type="checkbox" onclick="var inputs=document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i++) { if (inputs[i].name == 'circ_id' && !inputs[i].disabled) inputs[i].checked = this.checked;}"/>
 
-            <label for="check_all_circ_hist">[% l('Check/Uncheck All') %]</label>  
-        </div>       
+            <label for="check_all_circ_hist">[% l('Check/Uncheck All') %]</label>
+        </div>
         <table title="[% l('History of Items Checked Out') %]" id="acct_checked_hist_header" class="table table-hover table-bordered miniTable circHistTable my-3">
             <thead>
                 <tr>
                                     date.format(ctx.parse_datetime(circ.circ.checkin_time),DATE_FORMAT);
                                 ELSE; %]
                                 <span style='color:blue;'>Not Returned</span><!-- meh -->
-                            [% END; %]
+                            [% END %]
                         </td>
                         <td>[% circ.circ.target_copy.barcode | html %]</td>
-                        
+
                     </tr>
                 [% END %]
             </tbody>
                     [%- INCLUDE "opac/parts/preserve_params.tt2" %]
                     [% IF ctx.circs.size > 0 %]
                     <input type="hidden" name="filename" value="[% l('circ_history.csv') %]"/>
-                    <button type="submit" class="btn btn-action"><i class="fas fa-file-download"></i> [% l('Download CSV') %]</button>
+                    <button type="submit" class="btn btn-action"><i class="fas fa-file-download" aria-hidden="true"></i> [% l('Download CSV') %]</button>
                     [% END %]
                 </div>
             </form>
index 5dd46f1..91f8d33 100755 (executable)
@@ -7,9 +7,9 @@
 %]
 <h3>[% l('Current Items Checked Out') %]</h3>
 <div id='myopac_checked_div'>
-       
+
     <div>
-   
+
     [% IF ctx.circs.size < 1 %]
     <div class="warning_box">[% l('You have no items checked out.') %]</div>
     [% ELSE %]
         <div class="d-block d-md-none">
             <input id="check_all_checked_alt" aria-label="[% l('Select All Items') %]" checked="checked" type="checkbox" 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;}"/>
 
-            <label for="check_all_checked">[% l('Check/Uncheck All') %]</label>  
-        </div>       
+            <label for="check_all_checked">[% l('Check/Uncheck All') %]</label>
+        </div>
         <table  id="acct_checked_main_header"  title="[% l('Items Checked Out') %]"
             class="table table-hover table-bordered miniTable circTable">
             <thead>
             <tr>
                 <td class="checkbox_column">
                     <input type="checkbox" id="check_all_checked"
-                        aria-label="[% l('Select All Items') %]" 
+                        aria-label="[% 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;}"
                     />
                 </td>
@@ -62,8 +62,8 @@
                 [%# Copy the ctx.circs into a local array, then add a SORT field
                     that contains the value to sort on.  Since we need the item attrs,
                     invoke it and save the result in ATTRS.
-               %]
-               [% 
+        %]
+        [%
                 circ_items = ctx.circs;  # Array assignment
 
                 sort_field = CGI.param('sort');  # unless changed below...
@@ -71,7 +71,7 @@
                 FOR circ IN circ_items;
                     circ.ATTRS = {marc_xml => circ.marc_xml};
                     PROCESS get_marc_attrs args=circ.ATTRS;
-               
+
                     SWITCH sort_field;
 
                        CASE "sort_title";
 
                        CASE "renews";
                           circ.SORTING = circ.circ.renewal_remaining;
-                       
+
                        CASE "due";
                           circ.SORTING = circ.circ.due_date;
-                       
+
                        CASE "barcode";
                           circ.SORTING = circ.circ.target_copy.barcode;
 
@@ -93,7 +93,7 @@
                           circ.SORTING = circ.circ.target_copy.call_number.label;
                         CASE "lib";
                           circ.SORTING = circ.circ.target_copy.call_number.owning_lib.name;
-                       
+
                        CASE;
                           sort_field = "";
                     END; # SWITCH
                 END;
 
                 # Apply sorting to circ_items
-               IF (sort_field);
-                   circ_items = circ_items.sort("SORTING");
+            IF (sort_field);
+            circ_items = circ_items.sort("SORTING");
                     IF (CGI.param("sort_type") == "desc");
                         circ_items = circ_items.reverse;
                     END;
                 END;
 
-               # circ_items list is now sorted.  Traverse and dump the information.
+        # circ_items list is now sorted.  Traverse and dump the information.
 
                 FOR circ IN circ_items; %]
                     <tr>
                             [% IF circ.circ.target_copy.call_number.id == -1 %]
                                 [% circ.circ.target_copy.dummy_title | html %]
                             [% ELSIF circ.ATTRS.title %]
-                                <a href="[% mkurl(ctx.opac_root _ '/record/' _ 
+                                <a href="[% mkurl(ctx.opac_root _ '/record/' _
                                     circ.circ.target_copy.call_number.record.id, {}, 1) %]"><span[%- deemphasize_class -%]>
                                     [%- circ.ATTRS.title.substr(0,circ.ATTRS.nonfiling_characters) | html %]</span>
                                     [%- circ.ATTRS.title.substr(circ.ATTRS.nonfiling_characters) | html %]</a>
                                                 INCLUDE "opac/parts/library_name_link_from_ou.tt2";
                                 %]
                           </td>
-                        [% END; %]
+                        [% END %]
                     </tr>
                     [%  IF circ.renewal_response AND
                             circ.renewal_response.textcode != 'SUCCESS' %]
                                         # the stock hold ratio message may not be patron friendly
                                         renew_fail_msg = l('Item is needed for a hold');
                                     ELSE;
-                                        renew_fail_msg = circ.renewal_response.desc || 
-                                            circ.renewal_response.fail_part || 
+                                        renew_fail_msg = circ.renewal_response.desc ||
+                                            circ.renewal_response.fail_part ||
                                             circ.renewal_response.textcode;
                                     END;
                                     renew_fail_msg | html;
                             </span>
                         </td>
                     </tr>
-                    [% END; %]
+                    [% END %]
 
-                [% END; %]
+                [% END %]
                 </tbody>
             </table>
         </form>
index 175381a..2683099 100755 (executable)
@@ -10,8 +10,8 @@
 %]
 
 <h3>[% l('Holds History') %]</h3>
-<div id='myopac_holds_div'> 
-  
+<div id='myopac_holds_div'>
+
 <div>
     <div>
         <div>   
@@ -20,7 +20,6 @@
 
              [% IF offset > 0 || count > limit; curpage = 0; WHILE curpage * limit < count; IF curpage * limit == offset; %]
                   <span class="np_nav_link classic_link btn btn-action disabled">[% curpage + 1 %]</span>
-
                     [%- ELSE %]
                 <a href='[% mkurl('hold_history', {limit => limit, offset => (curpage * limit)}) %]' class="np_nav_link classic_link btn btn-action">[% curpage + 1 %]</a>
                     [%- END; curpage = curpage + 1; END; END %]
@@ -65,7 +64,7 @@
                     ahr = hold.hold.hold %]
 
                 <tr>
-                   
+
                     <td>
                     <span class="sr-only">Title</span>
                         <div>
index e206819..d8314aa 100755 (executable)
@@ -7,7 +7,7 @@
     parent="holds";
     limit = (ctx.holds_limit.defined) ? ctx.holds_limit : 0;
     offset = (ctx.holds_offset.defined) ? ctx.holds_offset : 0;
-    count = (ctx.holds_ids.size.defined) ? ctx.holds_ids.size : 0; 
+    count = (ctx.holds_ids.size.defined) ? ctx.holds_ids.size : 0;
 %]
 <h3> [%  IF CGI.param("available");
                     l("Items Ready for Pickup");
     <form method="post">
           <div class="row">
             <div class="col-4 text-left">
-                
+
                     <div>
-            <button name="action" class="btn btn-action my-2" id="suspend" value="suspend" type="submit"><i class="fas fa-hand-paper"></i> [% l("Suspend") %]</button>
-            <button name="action" class="btn btn-opac my-2" id="activate" value="activate" type="submit"><i class="fas fa-play"></i> [% l("Activate") %] </button>
-            <button name="action" class="btn btn-danger my-2" id="cancel" value="cancel" type="submit" onclick="return confirm('[% l("Are you sure you wish to cancel the selected hold(s)?") %]');"><i class="fas fa-ban"></i> [% l("Cancel") %]</button>
+            <button name="action" class="btn btn-action my-2" id="suspend" value="suspend" type="submit"><i class="fas fa-hand-paper" aria-hidden="true"></i> [% l("Suspend") %]</button>
+            <button name="action" class="btn btn-opac my-2" id="activate" value="activate" type="submit"><i class="fas fa-play" aria-hidden="true"></i> [% l("Activate") %] </button>
+            <button name="action" class="btn btn-danger my-2" id="cancel" value="cancel" type="submit" onclick="return confirm('[% l("Are you sure you wish to cancel the selected hold(s)?") %]');"><i class="fas fa-ban" aria-hidden="true"></i> [% l("Cancel") %]</button>
                  <p class="my-2">
                     [% IF CGI.param("available") -%]
                     <a href="[% mkurl('holds', {}, ['limit','offset','available']) %]">[% l('Show all holds') %]</a> |
                     <a href="[% mkurl('holds',{available => 1},['limit','offset']) %]">[% l("Show only available holds") %]</a>
                     [% END -%]
                      <span title="This option will show all items available for pickup." data-toggle="tooltip">
-                        <i class="fas fa-question-circle"></i>
+                        <i class="fas fa-question-circle" aria-hidden="true"></i>
                     </span>
                </p>
-                
-          </div>       
+
+          </div>
             </div>
             <div class="col-8">
              [% IF offset != 0 %]<a href='[% mkurl('holds', {limit => limit,offset => (offset - limit)}) %]'
                 <span style="padding-left:5px;" class='error'>
                     [%  IF ctx.hold_suspend_post_capture; l('One or more holds could not be suspended because the item is at (or en route to) the pickup library.'); END; %]
                 </span>
-            
-              
+
+
                 [% IF count > limit + offset %]<a href='[% mkurl('holds', {limit => limit, offset => (offset + limit)}) %]'
                   ><span class="np_nav_link classic_link btn btn-action">[% l('Next') %]&#9658;</span></a>[% END %]
-           
-              
+
+
             </div>
 
-            
+
           </div>
-            
+
         [% IF ctx.holds.size && ctx.holds.size < 1 %]
         <div class="warning_box">[% l('No holds found.') %]</div>
         [% ELSE %]
         <div class="d-block d-md-none">
             <input id="check_all_holds" aria-label="[% l('Select All Items') %]" checked="checked" type="checkbox" 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;}"/>
 
-            <label for="check_all_holds">[% l('Check/Uncheck All') %]</label>  
-        </div> 
+            <label for="check_all_holds">[% l('Check/Uncheck All') %]</label>
+        </div>
         <table title="[% l('Items on Hold') %]"
         class="table table-hover table-bordered miniTable activeHoldstable w-100 my-3">
             <thead>
             <tr>
-                <td class="checkCell"> 
+                <td class="checkCell">
                     <input type="checkbox" aria-label="[% 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;}"/>
                 </td>
@@ -95,8 +95,8 @@
                 [%# Copy the ctx.holds into a local array, then add a SORT field
                     that contains the value to sort on.  Since we need the item attrs,
                     invoke it and save the result in ATTRS.
-               %]
-               [% 
+        %]
+        [%
                 hold_items = ctx.holds;
 
                 sort_field = CGI.param('sort');
 
                        CASE "format";
                           hold.SORTING = hold.ATTRS.format_label;
-                       
+
                        CASE;
                           sort_field = "";
                     END; # SWITCH
                 END;
 
                 # Apply sorting to hold_items
-               IF (sort_field != "");
-                   hold_items = hold_items.sort("SORTING");
+            IF (sort_field != "");
+            hold_items = hold_items.sort("SORTING");
                     IF (CGI.param("sort_type") == "desc");
                         hold_items = hold_items.reverse;
                     END;
 
-                    # Shorten the hold_items list per offset/limit/count 
+                    # Shorten the hold_items list per offset/limit/count
                     hi = offset + limit - 1;
                     hi = hi > hold_items.max ? hold_items.max : hi;
 
                     hold_items = hold_items.slice(offset, hi);
                 END;
 
-               # hold_items list is now sorted.  Traverse and dump the information.
+        # hold_items list is now sorted.  Traverse and dump the information.
                 cnt = 0;
                 FOR hold IN hold_items;
                     ahr = hold.hold.hold;
                     <td class="checkbox_column">
 
                     <span class="sr-only">Hold Number [%  cnt; %]</span>
-                        <input type="checkbox" name="hold_id" value="[% ahr.id %]" 
-                         aria-label="Select Hold"/>
+                        <input type="checkbox" name="hold_id" value="[% ahr.id %]"
+                            [% html_text_attr('title', l('Select hold [_1]', attrs.title)) %]/>
                     </td>
                     <td>
                     <span class="sr-only">Title</span>
                         <div>
                             [% title = hold.ATTRS.title;
                             IF ahr.hold_type == 'P';
-                               title = l('[_1] ([_2])', title, hold.hold.part.label);
+                                title = l('[_1] ([_2])', title, hold.hold.part.label);
                             END; %]
 
-                            <a href="[% mkurl(ctx.opac_root _ '/record/' _ 
+                            <a href="[% mkurl(ctx.opac_root _ '/record/' _
                                 hold.hold.bre_id, {}, 1) %]"><span[%- deemphasize_class -%]>
                                 [%- title.substr(0,hold.ATTRS.nonfiling_characters) | html %]</span>
                                 [%- title.substr(hold.ATTRS.nonfiling_characters)   | html %]</a>
                     <td>
                     <span class="sr-only">Format</span>
                         <div class="format_icon">
-                          [% 
+                          [%
                             formats = hold.ATTRS.all_formats;
                             IF ahr.hold_type == 'M';
                               # only show selected formats for metarecords
                                 formats.push(format);
                               END;
                             END;
-                            FOR format IN formats 
+                            FOR format IN formats
                           %]
                           <span class="sr-only">[% format.label | html %]</span>
-                            <img alt="[% format.label | html %]" src="[% format.icon %][% ctx.cache_key %]" />
+                            <img title="[% format.label | html %]"
+                              alt="[% format.label | html %]" src="[% format.icon %][% ctx.cache_key %]" />
                             [% END %]
                         </div>
                     </td>
                     <td class="fullRow">
                         <a class="btn btn-confirm btn-sm" href="[% mkurl(ctx.opac_root _ '/myopac/holds/edit', {hid => ahr.id}) %]"
                             [% html_text_attr('title', l('Edit hold for item [_1]', attrs.title)) %]>
-                            <i class="fas fa-edit"></i>
+                            <i class="fas fa-edit" aria-hidden="true"></i>
                             [% l('Edit') %]
                         </a>
                     </td>
         </table>
         [% END %]
         </form>
-    </div> 
+    </div>
 </div>
 [% END %]
index a3fd196..e5212e5 100755 (executable)
@@ -27,7 +27,7 @@
         [%  IF hold; title = attrs.title;
                 IF ahr.hold_type == 'P';
                     title = l('[_1] ([_2])', title, hold.hold.part.label);
-                END 
+                END
         %]
         <div class="my-4">
             <h1>[% title | html %]</h1>
                             <input type="hidden" name="hold_id"
                                 value="[% ahr.id %]" />
                             [% l('Pickup library') %]
-                       
+
                             [% INCLUDE build_org_selector
-                                name='pickup_lib' value=ahr.pickup_lib 
+                                name='pickup_lib' value=ahr.pickup_lib
                                 can_have_vols_only=1 hold_pickup_lib=1 %]
             </div>
             <div class="col-12">
             [% IF hold.hold.status < 3 OR hold.hold.status == 7 %]
-                    [%# The following actions cannot be performed on holds that 
+                    [%# The following actions cannot be performed on holds that
                         have already been captured... %]
-                  
+
                             [% l('Cancel unless filled by') %]
-                      
+
                             <div class="input-group date" data-provide="datepicker">
                                 <input type="text" class="form-control" name="expire_time"  value="[% expire_time | html %]" data-date-format="mm/dd/yyyy">
                                 <div class="input-group-addon">
                                     <span class="glyphicon glyphicon-th"></span>
                                 </div>
                             </div>
-                           
-                       
+
+
                             [% l('Active?') %]
-                       
+
                             <select class="form-control" name="frozen">
                                 <option value="f"[% ahr.frozen == 't' ? '' :' selected="selected"' %]>
                                     [% l('Yes, this hold is active now') %]
                                     [% l('No, this hold is suspended') %]
                                 </option>
                             </select>
-                        
+
                             [% l('If suspended, activate on') %]
-                       
+
                          <div class="input-group date" data-provide="datepicker">
                                 <input type="text" class="form-control" name="thaw_date" id="datepicker" value="[% thaw_date | html %]" data-date-format="mm/dd/yyyy">
                                 <div class="input-group-addon">
                                     <span class="glyphicon glyphicon-th"></span>
                                 </div>
                             </div>
-                           
-                       
+
+
                     [% END %]
-                      
+
             </div>
             <div class="col-12">
-               
+
                     [% IF hold.metarecord_filters.formats.size OR
                         (hold.metarecord_filters.langs.size.defined && hold.metarecord_filters.langs.size > 1);
-                            PROCESS metarecord_hold_filters_selector 
+                            PROCESS metarecord_hold_filters_selector
                                 hold_data=hold; END %]
             </div>
              <div class="col-12">
index f12dade..e015684 100755 (executable)
@@ -1,7 +1,7 @@
 [%  PROCESS "opac/parts/header.tt2";
     PROCESS "opac/parts/misc_util.tt2";
     WRAPPER "opac/parts/myopac/base.tt2";
-    myopac_page = "lists/update"  
+    myopac_page = "lists/update"
 %]
 
 <!-- we should never see this page on success -->
     <h3>[% l("Problem with list management:") %]</h3>
       <div>
         [% IF ctx.bucket_action == 'create' %]
-          [% IF ctx.bucket_failure_noname %]         
+          [% IF ctx.bucket_failure_noname %]
             <h4 class="text-danger">[% l('A list name is required') %]</h4>
-          [% END %]   
-        [% END %]   
+          [% END %]
+        [% END %]
       </div>
       <div>
         [% url = ctx.referer;
index c5aed2d..d4dcbdf 100755 (executable)
@@ -1,7 +1,7 @@
 [%  PROCESS "opac/parts/header.tt2";
     PROCESS "opac/parts/misc_util.tt2";
     WRAPPER "opac/parts/myopac/base.tt2";
-    myopac_page = "lists"  
+    myopac_page = "lists"
     limit = ctx.bookbags_limit;
     offset = ctx.bookbags_offset;
     item_page = ctx.bookbags_item_page;
@@ -14,7 +14,7 @@
 
 
 <h3>[% l('My Lists') %]</h3>
-<div id='myopac_bookbag_div' style="padding:5px;">
+<div id='myopac_bookbag_div'>
 
     <!-- new list creation -->
     <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post" id="create_form">
@@ -54,7 +54,7 @@
                         <option value="1">[% l('Yes') %]
                     </select>
                     <span title="Allows the list to be shared through a link or RSS." data-toggle="tooltip">
-                        <i class="fas fa-question-circle"></i>
+                        <i class="fas fa-question-circle" aria-hidden="true"></i>
                     </span>
                 </td>
             </tr>
             <tr>
                 <td>&nbsp;</td>
                 <td class="list-create-table-buttons">
-                                    <button type="submit" class="btn btn-confirm"><i class="far fa-plus-square"></i> [% l('Create List') %]</button>
+                                    <button type="submit" class="btn btn-confirm"><i class="fas fa-plus-square" aria-hidden="true"></i> [% l('Create List') %]</button>
 
-                    <button type="reset" class="btn btn-deny" ><i class="fas fa-ban"></i> [% l('Cancel') %]</button>
+                    <button type="reset" class="btn btn-deny" ><i class="fas fa-ban" aria-hidden="true"></i> [% l('Cancel') %]</button>
                 </td>
             </tr>
         </table>
     </form>
 
       [% IF CGI.param('from_basket');  %]
-    <h1>[% l("... from basket") %]</h1>
+    <h3>[% l("... from basket") %]</h3>
     [% INCLUDE "opac/parts/anon_list.tt2" %]
     [% ELSE %]
-    <h1>[% l("My Existing Basket and Lists") %]</h1>
+    <h3>[% l("My Existing Basket and Lists") %]</h3>
     [% INCLUDE "opac/parts/anon_list.tt2" %]
 
     [% IF ctx.bookbags.size %]
                     offset => (offset + (limit * 3))
                 }) %]'>[% ((offset + (limit * 3)) / limit) + 1 %]</a>
             [%- END; -%]
-            [%- IF (ctx.bookbag_count - offset) > limit; -%] 
+            [%- IF (ctx.bookbag_count - offset) > limit; -%]
                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
                     offset => (offset + limit)
                 }) %]'>[% l('Next') %]<span class="nav_arrow_fix">&#9658;</span></a>
                     url = mkurl(baseurl, {}, ['bbid', 'edit_notes', 'sort']);
                     ltitle = l("Hide items in list");
                 END %]
-                <h2 class="bookbag-name"><a title="[% ltitle %]" href="[% url %]">[% bbag.name | html %]</a>[% IF bbag.pub == 't'; %]
+                <h4 class="bookbag-name"><a title="[% ltitle %]" href="[% url %]">[% bbag.name | html %]</a>[% IF bbag.pub == 't'; %]
                 <a target='_blank' href='/opac/extras/feed/bookbag/rss2-full/[% bbag.id %]' aria-label="RSS Feed">
-                <i class="fas fa-rss-square"></i></a>
-                [% END %]</h2>
+                <i class="fas fa-rss-square" aria-hidden="true"></i></a>
+                [% END %]</h4>
                 [% IF bbag.description %]<div class="bookbag-description">[% bbag.description | html %]</div>[% END %]
             </div>
             </td>
-           
+
             <td>
             [% IF ctx.add_rec %]
             <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update', {}, 1) %]" method="post">
                     [% IF ctx.where_from %]
                     <input type="hidden" name="where_from" value="[% ctx.where_from %]" />
                     [% END %]
-                    <button class="fixed btn btn-success btn-sm m-1" type="submit" ><i class="far fa-plus-square"></i> [% l('Add to this list') %]</button>
+                    <button class="fixed btn btn-success btn-sm m-1" type="submit" ><i class="fas fa-plus-square" aria-hidden="true"></i> [% l('Add to this list') %]</button>
                 </div>
             </form>
             [% END %]
                     [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
                     [% IF bbag.pub != 't' %]
                     <input type="hidden" name="action" value="show" />
-                    <button class="class=fixed btn btn-action btn-sm m-1" type="submit" ><i class="fas fa-share-square"></i> [% l('Share') %]</button>
+                    <button class="fixed btn btn-action btn-sm m-1" type="submit" ><i class="fas fa-share-square" aria-hidden="true"></i> [% l('Share') %]</button>
                     [% ELSE %]
                     <input type="hidden" name="action" value="hide" />
-                    <button class="fixed btn btn-secondary btn-sm m-1" type="submit"><i class="fas fa-eye-slash"></i> [% l('Hide') %]</button>
+                    <button class="fixed btn btn-secondary btn-sm m-1" type="submit"><i class="fas fa-eye-slash" aria-hidden="true"></i> [% l('Hide') %]</button>
                     [% END %]
                 </div>
             </form>
-          
+
             <form action="[% mkurl(ctx.opac_root _ '/myopac/list/print') %]" method="post">
                 <div class="bookbag-controls">
                     <input type="hidden" name="list" value="[% bbag.id %]" />
                     <input type="hidden" name="sort" value="[% CGI.param('sort') | html %]" />
                     [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
-                    <button type="submit" class="btn btn-action btn-sm m-1"><i class="fas fa-file-download"></i> [% l('Download CSV') %]</button>
+                    <button type="submit" class="btn btn-action btn-sm m-1"><i class="fas fa-file-download" aria-hidden="true"></i> [% l('Download CSV') %]</button>
                 </div>
             </form>
             [% setting = 'opac.default_list'; %]
                     [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
                     [% IF ctx.user_setting_map.$setting == bbag.id %]
                     <input type="hidden" name="action" value="remove_default" />
-                    <button type="submit" class="btn btn-danger btn-sm m-1"><i class="fas fa-minus-circle"></i> [% l('Remove Default List') %]</button>
+                    <button type="submit" class="btn btn-deny btn-sm m-1"><i class="fas fa-minus-circle" aria-hidden="true"></i> [% l('Remove Default List') %]</button>
                     [% ELSE %]
                     <input type="hidden" name="action" value="make_default" />
-                    <button type="submit" class="btn btn-action btn-sm m-1"><i class="fas fa-th-list"></i> [% l('Make Default List') %]</button>
+                    <button type="submit" class="btn btn-action btn-sm m-1"><i class="fas fa-th-list" aria-hidden="true"></i> [% l('Make Default List') %]</button>
                     [% END %]
                 </div>
             </form>
             [% IF ctx.is_staff %]
             <div class="bookbag-controls">
-                <button 
-                    type="submit" 
+                <button
+                    type="submit"
                     onclick='
-                       var path = 
+                       var path =
                           "oils://remote/xul/server/cat/bucketz39_dialog.xul";
                         window.openDialog(
                             xulG.url_prefix(path),
                             "[% bbag.id %]",
                             xulG
                         )'
-                    value="[% l('Locate Z39.50 Matches') %]" 
-                ><i class="fas fa-external-link-alt"></i></button>
+                    value="[% l('Locate Z39.50 Matches') %]"
+                ><i class="fas fa-external-link-alt" aria-hidden="true"></i></button>
             </div>
             [% END %]
             [% IF bbag.pub == 't'; %]
             <div class="bookbag-controls">
-                
                 <a class="btn btn-sm btn-opac m-1" href='[%-
                     mkurl(
                         ctx.opac_root _ '/results',
                         {page => '0', bookbag => bbag.id, depth => 0, locg => ctx.search_ou},
                         1
                     )
-                -%]'><i class="fas fa-glasses"></i> [% l('View in Catalogue') %]</a>
-             
+                -%]'><i class="fas fa-glasses" aria-hidden="true"></i> [% l('View in Catalogue') %]</a>
+
             </div>
                [% END %]
                  <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post" onsubmit="return confirm('[% l('Do you really want to delete this list?') %]')">
                     <input type="hidden" name="list" value="[% bbag.id %]" />
                     <input type="hidden" name="action" value="delete" />
                     [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
-                    <button type="submit" class="btn btn-danger btn-sm m-1"><i class="fas fa-trash-alt"></i> [% l('Delete List') %]</button>
+                    <button type="submit" class="btn btn-deny btn-sm m-1"><i class="fas fa-trash-alt" aria-hidden="true"></i> [% l('Delete List') %]</button>
                 </div>
             </form>
             </td>
             </table>
         </div>
         [% IF CGI.param("bbid") == bbag.id %]
-        
+
         <div>
         <h5 class="text-center my-2">List Items</h5>
         <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post" >
                 <button name="action" class="btn btn-action" type="submit" value="del_item">[% l('Remove from list') %]</button>
             </div>
         [% END %]
-    
+
         <div>
          <div class="d-block d-md-none">
-          
 
-            <input id="check_all_list_items" checked="checked" type="checkbox" onclick="var inputs=document.getElementsByTagName('input'); 
-                        for (i = 0; i < inputs.length; i++) { 
-                            if (inputs[i].name == 'selected_item' &amp;&amp; !inputs[i].disabled &amp;&amp; inputs[i].getAttribute('bbag') == [% bbag.id %]) 
+
+            <input id="check_all_list_items" checked="checked" type="checkbox" onclick="var inputs=document.getElementsByTagName('input');
+                        for (i = 0; i < inputs.length; i++) {
+                            if (inputs[i].name == 'selected_item' &amp;&amp; !inputs[i].disabled &amp;&amp; inputs[i].getAttribute('bbag') == [% bbag.id %])
                                 inputs[i].checked = this.checked;}"/>
 
-            <label for="check_all_list_items">[% l('Check/Uncheck All') %]</label>  
-        </div>       
+            <label for="check_all_list_items">[% l('Check/Uncheck All') %]</label>
+        </div>
         <table class="table table-hover miniTable w-100 bookbagTable">
             <thead>
                 <tr>
                     <th class="list_checkbox">
-                    <input type="checkbox" 
-                      onclick="var inputs=document.getElementsByTagName('input'); 
-                        for (i = 0; i < inputs.length; i++) { 
-                            if (inputs[i].name == 'selected_item' &amp;&amp; !inputs[i].disabled &amp;&amp; inputs[i].getAttribute('bbag') == [% bbag.id %]) 
+                    <input type="checkbox"
+                      onclick="var inputs=document.getElementsByTagName('input');
+                        for (i = 0; i < inputs.length; i++) {
+                            if (inputs[i].name == 'selected_item' &amp;&amp; !inputs[i].disabled &amp;&amp; inputs[i].getAttribute('bbag') == [% bbag.id %])
                                 inputs[i].checked = this.checked;}"/>
 
                     </th>
                             -%]">[% attrs.author | html %]</a>
                     </td>
                     <td class="list_entry" data-label="[% l('Local Call Number') %]">
-                        [% 
+                        [%
                             copy = attrs.holdings.0;
                             IF copy;
                                 # only show a relevant call number
                     <td class="save-notes">
                         [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
                         <input type="hidden" name="bbid" value="[% CGI.param('bbid') | html %]" />
-                        <button type="submit" class="btn btn-confirm" ><i class="fas fa-save"></i> [% l('Save Notes') %]</button>
+                        <button type="submit" class="btn btn-confirm" ><i class="fas fa-save" aria-hidden="true"></i> [% l('Save Notes') %]</button>
                     </td>
                 </tr>
                 [% END %]
             </tbody>
         </table>
         </div>
-        
-        
-        
-       
+
+
+
+
         [% IF ctx.bb_page_count > 1; %]
             <div class="header_middle" style="padding-top:7px;">
                 <div class="bbag-navigate-list">[% l('Navigate Selected List ') %]</div>
index deb65ae..2f61dcc 100755 (executable)
                             [% l("E-Items ready for pickup") %] (<span id="acct_sum_ebook_hold_ready_total">-</span>)
                         </a>
                     </div>
-                   
+
                 </div>
-                   
+
         </div>
     </div>
-       [% content %]
+    [% content %]
 </div>
 
 [% END %]
index 8c0da57..7a1e3f6 100755 (executable)
@@ -25,8 +25,8 @@
                 retry_url =  mkurl(ctx.opac_root _ '/myopac/main_payment_form', url_args, 1);
             %]
             <br/>
-            
-             <a href="[% mkurl(ctx.opac_root _ '/myopac/main', {}, 1) %]" class="btn btn-confirm"><i class="fas fa-home"></i> [% l('Account Home') %]</a> 
+
+             <a href="[% mkurl(ctx.opac_root _ '/myopac/main', {}, 1) %]" class="btn btn-confirm"><i class="fas fa-home"></i> [% l('Account Home') %]</a>
              <a href="[% retry_url %]" class="btn btn-confirm"><i class="fas fa-redo"></i> [% l('Try Payment Again') %]</a>
         </p>
     [% ELSE %]
@@ -36,7 +36,7 @@
             FOR p IN ctx.payment_response.payments;
                 print_args.push('payment=' _ p);
             END %]
-               <a href="[% ctx.opac_root %]/myopac/receipt_print?[% print_args.join('&amp;') %]"
+            <a href="[% ctx.opac_root %]/myopac/receipt_print?[% print_args.join('&amp;') %]"
             target="_egrecpt"
             class="btn-confirm btn btn-sm"
             onclick="try { print_node('printable-receipt'); } catch (e) { window.print(); } return false;"><i class="fas fa-print"></i> [% l('Print receipt') %]</a></p>
@@ -45,7 +45,7 @@
             [% ctx.printable_receipt.template_output.data %]
             <br />
         </tt>
-               <hr>
+            <hr>
         [% ELSE %]
         <div class="payment-error">
             [% l(
index 6fa08fc..ea17013 100755 (executable)
@@ -11,7 +11,7 @@
         ctx.use_stripe = 1;
     END %]
 
-<a name="payment"> </a>    
+<a name="payment"> </a>
 <h3 class="sr-only">[% l('Pay Charges') %]</h3>
 [% IF ctx.fines.balance_owed <= 0 %]
 <div>
 <div id="pay_fines_now"[% IF ctx.use_stripe %] class="hide_me"[% END %]>
      [% IF last_chance %]
     <h3>[% l("Confirm Payment") %]</h3>
-    
+
     <form action="[% ctx.opac_root %]/myopac/main_pay_init" method="post">
         [% FOR k IN CGI.Vars;
             NEXT UNLESS k;
             FOR val IN CGI.param(k) %]
-        <input type="hidden" name="[% k | html %]" value="[% val | html %]" /> 
+        <input type="hidden" name="[% k | html %]" value="[% val | html %]" />
         [% END; END %]
 
         <button type="submit" class="btn btn-confirm"><i class="fas fa-check"></i> [% l('Confirm') %]</button>
         <a href="[% mkurl(ctx.opac_root _ '/myopac/main#selected_fines', {}, 1) %]" class="btn btn-deny"><i class="fas fa-ban"></i> [% l('Cancel') %]</a>
-       <p class="my-2"><big>[% l("Are you sure you are ready to charge ") %]
+    <p class="my-2"><big>[% l("Are you sure you are ready to charge ") %]
          <strong> [% l("[_1] ", money(ctx.fines.balance_owed))%]</strong>
-        [% l("to your credit card?") %]</big></p> 
+        [% l("to your credit card?") %]</big></p>
      <table title="[% l('List of Transactions') %]" id="acct_fines_confirm_header"
         class="table my-2">
    <thead>
             </tr>
         [% END %]
      </tbody>
-   </table> 
-     
+   </table>
+
        [% ELSE %]
-    
+
     <form method="post" id="payment_form" action='#payment'
     [% IF ctx.use_stripe %]
     onsubmit="return stripe_onsubmit();"
           <th colspan='2'><strong>[% l('Billing Information') %]</strong></th>
          </thead>
           <tbody>
-               
-               <tr> 
+
+               <tr>
                 <td><label for="payment-first-name">[% l('First Name') %]</label></td>
-                    <td><input name="given-name" type="text"  name="billing_first" id="payment-first-name" 
+                    <td><input name="given-name" type="text"  name="billing_first" id="payment-first-name"
                         value="[% ctx.user.first_given_name | html %]" class="form-control"/></td>
                 </tr>
                 <tr>
                     <td><label for="payment-last-name">[% l('Last Name') %]</label></td>
-                    <td><input name="family-name" type="text" name="billing_last" id="payment-last-name" 
+                    <td><input name="family-name" type="text" name="billing_last" id="payment-last-name"
                         value="[% ctx.user.family_name | html %]" class="form-control"/></td>
                 </tr>
 
                 <tr>
                     <td><label for="payment-email-addr">[% l('Email Address') %]</label></td>
                     <td>
-                        
-                        <input id="payment-email-addr" type="text" 
-                             value="[% ctx.user.email | html %]" disabled="disabled" 
-                            readonly="readonly" class="form-control" name="email"/>   
+
+                        <input id="payment-email-addr" type="text"
+                             value="[% ctx.user.email | html %]" disabled="disabled"
+                            readonly="readonly" class="form-control" name="email"/>
                         <a title="[% l('Update Email Address') %]"
                             href="[% ctx.opac_root %]/myopac/update_email?return_to_referer=1">[% l("Update") %]</a>
                     </td
                 </tr>
                 <tr>
                     <td><label for="payment-billing-address">[% l('Street Address') %]</label></td>
-                    <td><input type="text" name="billing_address" id="payment-billing-address" 
+                    <td><input type="text" name="billing_address" id="payment-billing-address"
                         value="[% ctx.user.billing_address.street1 _ ctx.user.billing_address.street2 | html %]" class="form-control"/></td>
                 </tr>
                 <tr>
                     <td><label for="payment-billing-city">[% l('City' )%]</label></td>
-                    <td><input type="text" name="billing_city" id="payment-billing-city" 
+                    <td><input type="text" name="billing_city" id="payment-billing-city"
                         value="[% ctx.user.billing_address.city | html %]" class="form-control"/></td>
                 </tr>
                 <tr>
                 </tr>
                </tbody>
                </table>
-               
+
                <table id="credit_card_info_table" class="table">
                <thead>
-                       <th colspan='2'><strong>[% l('Credit Card Information') %]</strong></th>
+                   <th colspan='2'><strong>[% l('Credit Card Information') %]</strong></th>
                </thead>
                <tbody>
-               
+
                 <tr>
                     <td><label for="payment-credit-card">[% l('Credit Card #') %]</label></td>
-                    
+
                      <!-- Make type tel, which prompts for numbers in mobile -->
-                    <td><input class="form-control" type="tel" pattern="[0-9]*" maxlength="16" id="payment-credit-card" required 
+                    <td><input class="form-control" type="tel" pattern="[0-9]*" maxlength="16" id="payment-credit-card" required
                     [% IF ctx.use_stripe %]
                     data-stripe="number"
                     [% ELSE %]
                        <div id="payment_actions">
                           [% l('Total amount:') %]
                            <strong>[% money(ctx.fines.balance_owed) %]</strong><br />
-          
+
                          <button type="submit" id="payment_submit" class="btn btn-confirm"><i class="fas fa-arrow-circle-right"></i> [% l('Next') %]</button>
-                         <a href="[% mkurl(ctx.opac_root _ '/myopac/main', {}, 1) %]" class="btn btn-deny"><i class="fas fa-ban"></i> [% l('Cancel') %]</a> 
+                         <a href="[% mkurl(ctx.opac_root _ '/myopac/main', {}, 1) %]" class="btn btn-deny"><i class="fas fa-ban"></i> [% l('Cancel') %]</a>
                          <br/>
                          </div>
                    </td>
                 </tr>
-                
+
           </tbody>
         </table>
          [% INCLUDE "opac/parts/myopac/main_refund_policy.tt2" %]
-        
+
     [% END %]
     </form>
 </div></div>
index 421f390..1733037 100755 (executable)
             [% END %]
         </div>
         <div class="col-6">
-            
+
         </div>
-        <div class="col-3 text-right"> 
+        <div class="col-3 text-right">
         [% IF ctx.payments.size > limit %]
             <a href='main_payments?limit=[% limit %]&amp;offset=[% offset + limit %]'
                  ><span class="np_nav_link classic_link btn btn-action">[% l('Next') %] &#9658;</span>
                  </a>
                 [% END %]
-            
+
         </div>
     </div>
 
     [% IF ctx.payments.size %]
-    <table title="[% l('Payments') %]" 
+    <table title="[% l('Payments') %]"
         class='table table-hover table-bordered miniTable paymentTable'>
         <thead><tr>
             <th>[% l('Payment Date') %]</th>
             <th>[% l('Payment For') %]</th>
             <th>[% l('Amount') %]</th>
-            <th>[% l('Receipt') %]</th> 
+            <th>[% l('Receipt') %]</th>
         </tr></thead>
         <tbody>
             [% FOR payment IN ctx.payments %]
@@ -45,7 +45,7 @@
                 <td><span class="sr-only">Payment Date: </span>[% date.format(ctx.parse_datetime(payment.mp.payment_ts), DATE_FORMAT) %]</td>
                 <td>
                 <span class="sr-only">Payment For: </span>
-                [% 
+                [%
                     btype = payment.last_billing_type | html;
                     ptitle = payment.title | html;
                     (payment.xact_type == 'grocery') ? btype : ptitle
index d1293bd..8da00a9 100755 (executable)
@@ -4,12 +4,12 @@
 
 
 
-<ul class='start_end_links_span pagination d-inline-flex'>    
-            [% IF offset != 0 %]        
-            
+<ul class='start_end_links_span pagination d-inline-flex'>
+            [% IF offset != 0 %]
+
              <li class="page-item"> <a class='np_nav_link classic_link btn btn-action' title='[% l("Previous Page") %]'
             href='[% mkurl('messages', { limit => limit, offset => (offset - limit)} ) %]'><span class="nav_arrow_fix">&#9668;</span> <span class="d-none d-md-inline-block">[% l('Previous') %]</span></a></li>
-           [% END; %]
+           [% END %]
             [% IF offset > 0 || count > limit;
                 curpage = 0;
                 WHILE curpage * limit < count;
@@ -17,7 +17,7 @@
             %]
                         <li class="page-item active"><a href="[% mkurl('hold_history', {limit => limit, offset => (curpage * limit)}) %]"  class="results-paginator-selected btn page-link disabled">[% curpage + 1%]</a></li>
 
-            
+
                     [%- ELSE %]
             <li class="page-item"><a href="[% mkurl('messages', {limit => limit, offset => (curpage * limit)}) %]" class="btn page-link">[% curpage + 1%]</a></li>
 
             [% IF count >= limit + offset %]
             <li class="page-item"><a class='np_nav_link classic_link btn btn-action' title='[% l("Next Page") %]'
             href='[% mkurl('messages', {limit => limit, offset => (offset + limit)}) %]'><span class="d-none d-md-inline-block">[% l('Next') %]</span> <span class="nav_arrow_fix">&#9658;</span></a></li>
-        
-[% END; %]
+
+[% END %]
 </ul>
 
-      
+
     </div>
     [% IF ctx.message_update_action.defined %]
         [% IF ctx.message_update_changed > 0 %]
@@ -64,9 +64,9 @@
         <form method="post" id="messages-form"
          onsubmit="if (document.getElementById('acct_messages_actions').value == 'mark_deleted') { return confirm('[% l("Are you sure you wish to permanently delete the selected message(s)?") %]') } else { return true; }">
             <div class="my-2">
-                <button name="action" class="btn btn-action" value="mark_read" id="mark_read" type="submit"><i class="fas fa-glasses"></i> Mark Read</button>
-                <button name="action" class="btn btn-opac" value="mark_unread" id="mark_unread"  type="submit"><i class="fas fa-eye-slash"></i> Mark Unread</button>
-                <button name="action" class="btn btn-danger" value="mark_deleted" id="mark_deleted"  type="submit" onclick="return confirm('[% l("Are you sure you wish to permanently delete the selected message(s)?") %]')"><i class="fas fa-trash-alt"></i> Delete</button>
+                <button name="action" class="btn btn-action" value="mark_read" id="mark_read" type="submit"><i class="fas fa-glasses" aria-hidden="true"></i> Mark Read</button>
+                <button name="action" class="btn btn-opac" value="mark_unread" id="mark_unread"  type="submit"><i class="fas fa-eye-slash" aria-hidden="true"></i> Mark Unread</button>
+                <button name="action" class="btn btn-deny" value="mark_deleted" id="mark_deleted"  type="submit" onclick="return confirm('[% l("Are you sure you wish to permanently delete the selected message(s)?") %]')"><i class="fas fa-trash-alt" aria-hidden="true"></i> Delete</button>
             </div>
             [% IF count < 1 %]
             <div class="warning_box">[% l('No messages found.') %]</div>
@@ -74,9 +74,9 @@
              <div class="d-block d-md-none">
                 <input id="all_message_check" checked="checked"
                 type="checkbox" onclick="var inputs=document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i++) { if (inputs[i].name == 'message_id' &amp;&amp; !inputs[i].disabled) inputs[i].checked = this.checked;}"
-                aria-label="[% l('Check/Uncheck All') %]" />    
-                <label for="all_message_check">[% l('Check/Uncheck All') %]</label>  
-            </div>    
+                aria-label="[% l('Check/Uncheck All') %]" />
+                <label for="all_message_check">[% l('Check/Uncheck All') %]</label>
+            </div>
             <table id="acct_messages_main_header" title="[% l('Messages') %]"
                 class="table table-hover table-bordered miniTable messagesTable">
                 <thead>
                         </td>
                         <td>
                         <span class="sr-only">Message Options</span>
-                            <a class="btn btn-sm btn-action" href="[% mkurl('messages', { single => 1, message_id => message.id } ) %]" title="Read [% message.title | html %]"><i class="fas fa-glasses"></i> Read</a>
+                            <a class="btn btn-sm btn-action" href="[% mkurl('messages', { single => 1, message_id => message.id } ) %]" title="Read [% message.title | html %]"><i class="fas fa-glasses" aria-hidden="true"></i> Read</a>
                         </td>
                     </tr>
                 [% END %]
index 2d74973..32a1819 100755 (executable)
@@ -7,17 +7,17 @@
             <input type="hidden" name="limit" value="[% limit %]" />
             <span>
                 <a href="[% mkurl('messages', {}, ['single', 'message_id']) %]" class="btn btn-action m-1">
-                <i class="fas fa-arrow-circle-left"></i>
+                <i class="fas fa-arrow-circle-left" aria-hidden="true"></i>
                 [% l('Return to Message List') %]
                 </a>
-                
+
                 <button type="submit" name="action" value="mark_unread" class="btn btn-opac m-1">
-                   <i class="fas fa-eye-slash"></i>
+                   <i class="fas fa-eye-slash" aria-hidden="true"></i>
                     [% l('Mark Unread') %]
                 </button>
-                <button type="submit" name="action" value="mark_deleted" class="btn btn-danger m-1"
+                <button type="submit" name="action" value="mark_deleted" class="btn btn-deny m-1"
                     onclick="return confirm('[% l("Are you sure you wish to permanently delete this message?") %]')">
-                    <i class="fas fa-trash-alt"></i>
+                    <i class="fas fa-trash-alt" aria-hidden="true"></i>
                     [% l('Delete') %]
                 </button>
             </span>
index 00cb39a..24fb3c0 100755 (executable)
@@ -12,9 +12,9 @@
 
                 <td class='light_border'>[% l(
                     HUMAN_NAME_FORMAT,
-                    ctx.user.prefix, 
+                    ctx.user.prefix,
                     ctx.user.first_given_name,
-                    ctx.user.second_given_name, 
+                    ctx.user.second_given_name,
                     ctx.user.family_name,
                     ctx.user.suffix
                 ) | html %]</td>
@@ -27,9 +27,9 @@
 
                 <td class='light_border'>[% l(
                     HUMAN_NAME_FORMAT,
-                    ctx.user.pref_prefix, 
+                    ctx.user.pref_prefix,
                     (ctx.user.pref_first_given_name || ctx.user.first_given_name),
-                    ctx.user.pref_second_given_name, 
+                    ctx.user.pref_second_given_name,
                     (ctx.user.pref_family_name || ctx.user.family_name),
                     ctx.user.pref_suffix
                 ) | html %]</td>
                     # l('[_1] ([_2])', ctx.user.ident_value, ctx.user.ident_type.name) | html
                     # XXX uncomment the above line to show primary
                     # identification. With a minor tweak it could
-                    # alternatively be shown but partially obscured. 
+                    # alternatively be shown but partially obscured.
                     %]
                 </td>
                 <td></td>
                     [% ctx.user.home_ou.name | html %]<br/>
                     [% ctx.user.home_ou.billing_address.street1 %]<br/>
                     [% IF ctx.user.home_ou.billing_address.street2; ctx.user.home_ou.billing_address.street2 _ "<br/>"; END %]
-                    [% ctx.user.home_ou.billing_address.city %], [% ctx.user.home_ou.billing_address.state %] 
+                    [% ctx.user.home_ou.billing_address.city %], [% ctx.user.home_ou.billing_address.state %]
                     [% ctx.user.home_ou.billing_address.post_code %]<br/>
                     <br/>
 
                     [% IF ctx.user.home_ou.phone; ctx.user.home_ou.phone _ "<br/>"; END %]
-                    
+
                     [% IF ctx.user.home_ou.email; ctx.user.home_ou.email _ "<br/>"; END %]
                     [% lib_url = ctx.get_org_setting(ctx.user.home_ou.id, 'lib.info_url');
                         IF lib_url;
                  [%- INCLUDE "opac/parts/locale_picker.tt2" %]
                 </td>
             </tr>
-            
+
         </tbody>
     </table>
-    
+
     <br />
     <hr />
     <br />
-    
+
        <div class="header_middle mb-3">
         <span>Addresses</span>
     </div>
 
 <div class="row">
-            [% 
+            [%
                 # cycle through the non-pending address.  For each non-pending addr
-                # that has a corresponding pending addr, render the pending addr 
+                # that has a corresponding pending addr, render the pending addr
                 # along the right inside it's own edit form
                 pending = {};
                 regular = [];
                     END;
                 END;
             FOR addr IN regular;
-                cur_id = addr.id; 
+                cur_id = addr.id;
                 pending_addr = pending.$cur_id;
             %]
     <div class="col-lg-6 col-12">
         <table class='table' title="[% l('Addresses') %]">
-       
+
             <tbody>
             <tr>
               <td>
                 <!-- pending address form -->
                 [% IF pending_addr OR edit_addr_id == cur_id;
                     update_addr = pending_addr || addr %]
-              
+
                     <form method='post'>
                         [% IF pending_addr %]
                             <input type='hidden' name='pending_addr' value='[% pending_addr.id %]'/>
                             {label => l("ZIP"), name => 'post_code', value => update_addr.post_code},
                         ];
                         FOR field IN addr_fields %]
-                        
+
                             <tr>
-                               
+
                                 <td><label for="addr-form-[% field.name %]">[% field.label %]</label></td>
-                                <td><input name="[% field.name %]" 
+                                <td><input name="[% field.name %]"
                                     id="addr-form-[% field.name %]"
                                     value="[% field.value | html %]" class="form-control">
                                 </td>
                 </td>
                  [% ELSE %]
                 <td>
-                               
+
                     <!-- read-only address display -->
                     <table class='table' title="[% l('Active Addresses') %]">
                         <tr><td>[% l("Address Type") %]</td><td>[% addr.address_type | html %]</td></tr>
                         <tr><td>[% l("State") %]</td><td>[% addr.state | html %]</td></tr>
                         <tr><td>[% l("Country") %]</td><td>[% addr.country | html %]</td></tr>
                         <tr><td>[% l("Zip") %]</td><td>[% addr.post_code | html %]</td></tr>
-                        [% IF ctx.get_org_setting(ctx.user.home_ou.id, 'opac.allow_pending_address') 
+                        [% IF ctx.get_org_setting(ctx.user.home_ou.id, 'opac.allow_pending_address')
                                 AND !pending_addr AND edit_addr_id != cur_id %]
                         <tr><td colspan='2'><a class="btn btn-action" href='?edit_address=[% addr.id %]'><i class="fas fa-edit"></i> [% l('Edit Address') %]</a></td></tr>
                         [% END %]
                     </table>
-                 
+
                  </td>
-                [% END %] 
+                [% END %]
                 </tr>
             </tbody>
         </table>
      </div></div>
             [% END %]
-       
-    
+
+
 
 [% END %]
index 1b4420e..da71d72 100755 (executable)
@@ -29,7 +29,7 @@
                                     ctx.user_setting_map.$setting = 10;
                                 END;
                                 FOR val IN [10, 15, 20, 25] %]
-                                <option value='[% val | uri %]' 
+                                <option value='[% val | uri %]'
                                     [% IF ctx.user_setting_map.$setting == val %]
                                         selected='selected'[% END %]>[% val | html %]</option>
                             [% END %]
@@ -48,7 +48,7 @@
                                     ctx.user_setting_map.$setting = 10;
                                 END;
                                 FOR val IN [10, 15, 20, 25, 50] %]
-                                <option value='[% val | uri %]' 
+                                <option value='[% val | uri %]'
                                     [% IF ctx.user_setting_map.$setting == val %]
                                         selected='selected'[% END %]>[% val | html %]</option>
                             [% END %]
@@ -63,5 +63,5 @@
         <button type="submit" class="btn btn-confirm"><i class="fas fa-save"></i> [% l('Save') %]</button>
     </form>
     [% INCLUDE "opac/parts/myopac/prefs_hints.tt2" %]
-    
+
 [% END %]
index c98a8b5..e7c8b80 100755 (executable)
@@ -10,7 +10,7 @@
     <input name='[% setting %]' type="hidden"
         [% IF ctx.user_setting_map.$setting; %] value='[% ctx.user_setting_map.$setting | html %]' [% END %]/>
 
-    <table class="full-width table" id="acct_search_main" 
+    <table class="full-width table" id="acct_search_main"
         title="[% l('Notification Preferences') %]">
         <tbody>
 
 
                 <td><label for='[% setting %].email'>[% email_label %]</label></td>
                 <td>
-                    <input id='[% setting %].email' name='[% setting %].email' 
+                    <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>
             [%- IF allow_phone_notifications == 'true';
-                setting = 'opac.hold_notify'; 
+                setting = 'opac.hold_notify';
             -%]
             <tr>
                 [% 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' 
+                    <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>
@@ -66,7 +66,7 @@
                 [% 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' 
+                    <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>
@@ -89,9 +89,9 @@
             <tr>
                 <td><label for='[% optin.cust.name | uri %]'>[% optin.cust.label | html %]</label></td>
                 <td>
-                    <input type='checkbox' name='setting' 
-                        value='[% optin.cust.name | uri %]' 
-                        id='[% optin.cust.name | uri %]' 
+                    <input type='checkbox' name='setting'
+                        value='[% optin.cust.name | uri %]'
+                        id='[% optin.cust.name | uri %]'
                         title="[% optin.cust.label | html %]"
                         [% IF optin.value %] checked='checked' [% END %]/>
                 </td>
index 947d663..5dafea6 100755 (executable)
@@ -42,7 +42,7 @@
                                     ctx.user_setting_map.$setting = 10;
                                 END;
                                 FOR val IN [5, 8, 10, 15, 20, 25, 50] %]
-                                <option value='[% val | uri %]' 
+                                <option value='[% val | uri %]'
                                     [% IF ctx.user_setting_map.$setting == val %]
                                         selected='selected'[% END %]>[% val | html %]</option>
                             [% END %]
@@ -83,9 +83,9 @@
                     [% circ_name = l('Keep history of checked out items?') %]
                     <td><label for='[% setting %]'>[% circ_name%]</label></td>
                     <td>
-                        <input id='[% setting %]' name='[% setting %]' 
+                        <input id='[% setting %]' name='[% setting %]'
                             type="checkbox" title="[% circ_name %]"
-                            [% IF ctx.user_setting_map.$setting 
+                            [% IF ctx.user_setting_map.$setting
                               AND !ctx.clear_circ_history; %] checked='checked' [% END %]/>
                     </td>
                 </tr>
@@ -94,7 +94,7 @@
                     [% hold_name =  l('Keep history of holds?') %]
                     <td><label for='[% setting %]'>[% hold_name %]</label></td>
                     <td>
-                        <input id='[% setting %]' name='[% setting %]' 
+                        <input id='[% setting %]' name='[% setting %]'
                             type="checkbox" title="[% hold_name %]"
                             [% IF ctx.user_setting_map.$setting
                               AND !ctx.clear_hold_history; %] checked='checked' [% END %]/>
                     [% 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 %]' 
+                        <input id='[% setting %]' name='[% setting %]'
                             type="checkbox" title="[% skip_warn %]"
                             [% IF ctx.user_setting_map.$setting %] checked='checked' [% END %]/>
                     </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 %]' 
+                        <input id='[% setting %]' name='[% setting %]'
                             type="checkbox" title="[% behind_desk %]"
                             [% IF ctx.user_setting_map.$setting %] checked='checked' [% END %]/>
                     </td>
                             <input type="hidden" name="waiver_id" value="[% waiver.id %]"/>
                             [% l('Name:') %] <input type="textbox" name="waiver_name_[% waiver.id %]" value="[% waiver.name | html %]"/><br/>
                             <label>
-                                <input type="checkbox" name="waiver_place_holds" 
+                                <input type="checkbox" name="waiver_place_holds"
                                     value="[% waiver.id %]" [% waiver.place_holds == 't' ? 'checked="checked"' : '' %]/>
                                 [% l('Place Holds') %]
                             </label>
index ce898cf..a7d0c9d 100755 (executable)
@@ -8,7 +8,7 @@
     <div class="header_middle">
        <span class="float-left">[% l('Update Email') %]</span>
     </div>
-       
+
 [% IF ctx.invalid_email %]
     <div id='account-update-email-error'>
         [% bad_email = ctx.invalid_email | html %]
@@ -26,7 +26,7 @@
     [% IF CGI.param("return_to_referer") %]
     <input type="hidden" name="redirect_to" value="[% ctx.referer | html %]" />
     [% END %]
-    <table> 
+    <table>
         <tr><td>[% l('Current Email') %]</td><td>[% ctx.user.email | html %]</td></tr>
         <tr><td>[% l('Current Password') %]</td><td><input type='password' class="form-control" name='current_pw'/></td></tr>
         <tr><td>[% l('New Email') %]</td><td><input type='text' name='email' class="form-control" value='[% ctx.invalid_email | html %]'/></td></tr>
index 5d40fb6..0e5d0e2 100755 (executable)
@@ -8,7 +8,7 @@
     <div class="header_middle">
         <span class="float-left">[% l('Update Username') %]</span>
     </div>
-       
+
 [% IF ctx.invalid_username %]
     <div id='account-update-email-error'> <!-- borrow css from update-email page -->
         [% bad_user = ctx.invalid_username | html %]
@@ -27,8 +27,8 @@
 
 [% END %]
 
-<form method='post' id='account-update-email' autocomplete='off'> 
-    <table> 
+<form method='post' id='account-update-email' autocomplete='off'>
+    <table>
         <tr><td>[% l('Current Username') %]</td><td>[% ctx.user.usrname | html %]</td></tr>
         <tr><td>[% l('Current Password') %]</td><td><input type='password' name='current_pw' class="form-control"/></td></tr>
         <tr><td>[% l('New Username') %]</td><td><input type='text' name='username' value='[% ctx.invalid_username | html %]' class="form-control"/></td></tr>
index 68ca9f9..243e7d0 100755 (executable)
@@ -9,7 +9,7 @@
             <tr id="adv_expert_row">
                 <td class="py-3">
                    <div class="row">
-                        
+
                         <div class="col-3">
                         <span class="d-inline-block">
                             <label for="expert_tag">[% l("Tag:") %]</label>
@@ -29,7 +29,7 @@
                         </span>
                         </div>
                         <div class="col-2">
-                         <button class="btn btn-remove btn-sm d-inline-block" style="position:absolute;bottom:5px;" aria-label="[% l('Remove row') %]" 
+                         <button class="btn btn-remove btn-sm d-inline-block" style="position:absolute;bottom:5px;" aria-label="[% l('Remove row') %]"
                                 onclick='return killRowIfAtLeast(1, this.parentNode.parentNode);'>
                                <i class="fas fa-times"></i></a>
                             </button>
@@ -47,7 +47,7 @@
                <td  class="py-3">
                    <label for="[% lib_select_id %]"><strong>[% l("Search Library:") %]</strong>
                        [%- PROCESS "opac/parts/org_selector.tt2";
-                           INCLUDE build_org_selector id=lib_select_id show_loc_groups=1 
+                           INCLUDE build_org_selector id=lib_select_id show_loc_groups=1
                        %]
                    </label>
                </td>
index fb4924d..dcc7d59 100755 (executable)
@@ -26,7 +26,7 @@
 <tr[% IF loop.index == 1 %] id="adv_global_row"[% END %]>
 
     <td class="td-left py-3">
-               <div class="row">
+        <div class="row">
             <div class="col-2">
             <!-- bool selector.  hide for first row.  safe to ignore first bool value in form submission -->
                 <select aria-label="[% l('Boolean search operator') %]"
@@ -59,8 +59,9 @@
     <td class="px-2">
         <a href="javascript:;" class="btn btn-remove btn-sm" aria-label="Remove This Row"
             title="[% l('Remove row') %]"
+            aria-label="[% l('Remove row') %]"
             onclick='return killRowIfAtLeast(2, this);'>
-               <i class="fas fa-times"></i>
+               <i class="fas fa-times" aria-hidden="true"></i>
             </a></td>
 </tr>
 [% END %]
index c942dfc..0d4326a 100755 (executable)
@@ -6,7 +6,7 @@
     <input id="detail" type="hidden" name="detail_record_view"
            value="[% show_detail_view %]"/>
     <div id='adv_numeric_block' class='row'>
-       <div class="col-12 my-3">
+        <div class="col-12 my-3">
             <label for="numeric_qtype"><strong>[% l("Field:") %]</strong></label>
                 <select id="numeric_qtype" name="qtype" class="form-control">
                     <!-- TODO: Pull labels from config.metabib_field.label -->
                     <option value="identifier|tcn">[% l('TCN') %]</option>
                     <option value="item_barcode">[% l('Item Barcode') %]</option>
                 </select>
-               </div>
+        </div>
         <div class="col-12 my-3">
-                       <label for="numeric_ident"><strong>[% l("Identifier:") %]</strong></label>
+                <label for="numeric_ident"><strong>[% l("Identifier:") %]</strong></label>
                 <input id="numeric_ident" class="form-control" type="text" name="query" size="16" autofocus placeholder='[% l("Identifier") %]' aria-label='[% l("Identifier") %]' />
         </div>
-           <br/>
+        <br/>
         <div class="col-12 my-3">
             [%- lib_select_id="adv_org_selector" -%]
             <label for="[% lib_select_id %]"><strong>[% l("Search Library:") %]</strong>
@@ -31,7 +31,7 @@
                      INCLUDE build_org_selector id=lib_select_id show_loc_groups=1
                   %]
             </label>
-           <br/>
+        <br/>
 
           </div>
           <div class="col-12 my-3">
index 5e749c1..b766f81 100755 (executable)
@@ -14,7 +14,7 @@
                     <!-- add a new row -->
                     <tr id='adv_global_addrow' >
                         <td class="td-search-left" colspan="2">
-                            <a class="btn btn-opac btn-sm" href="javascript:;" id="myopac_new_global_row" onclick='addSearchRow();'><i class="fas fa-plus-circle"></i> [% l('Add Search Row') %]</a>
+                            <a class="btn btn-opac btn-sm" href="javascript:;" id="myopac_new_global_row" onclick='addSearchRow();'><i class="fas fa-plus-circle" aria-hidden="true"></i> [% l('Add Search Row') %]</a>
                         </td>
                     </tr>
                 </tbody>
                             </button>
                         </h4>
                     </div>
-                    
+
                     <div id="[% IF adv_chunk.id == 'adv_copy_location_selector'; 'adv_copy_location_selector_new';  ELSE; adv_chunk.id; END; %]" class="collapse" aria-labelledby="[% adv_chunk.id %]_card" data-parent="#accordion">
                     [% IF adv_chunk.id != 'adv_copy_location_selector';%]
                         <div class="card-body">
                         <fieldset>
                         <legend class="sr-only"> [% adv_chunk.adv_label %]</legend>
-                       [% END; %]  
+                       [% END %]
                             [% IF adv_chunk.adv_attr;
                                         INCLUDE "opac/parts/check_value_selector.tt2"
                                             id=adv_chunk.id
                                         INCLUDE "opac/parts/filter_group_selector.tt2"
                                             id=adv_chunk.id
                                             filter_group=adv_chunk.adv_filter multiple="multiple"
-                                            size=adv_chunk.adv_size || search.default_adv_select_height || "4"; 
-                            END; %] 
+                                            size=adv_chunk.adv_size || search.default_adv_select_height || "4";
+                            END; %]
                             [% IF adv_chunk.id != 'adv_copy_location_selector';%]
-                        </fieldset>   
-                         [% END; %]   
+                        </fieldset>
+                         [% END %]
                         </div>
-                    </div> 
+                    </div>
                 </div></div>
             </div>
             [%END;%]
         </div>
-    </div>       
-         
+    </div>
+
     <!--Bottom Content (Library/Pub Year/Sort and Limit/Format Checkboxes -->
     <div class="row adv_options">
-        [% FOR adv_chunk IN search.adv_config; NEXT IF adv_chunk.adv_hide || adv_chunk.adv_special == 'copy_location';%]                  
+        [% FOR adv_chunk IN search.adv_config; NEXT IF adv_chunk.adv_hide || adv_chunk.adv_special == 'copy_location';%]
         [%     IF adv_chunk.adv_special;%]
         <div class='col-12 my-2'>
             <div [% IF adv_chunk.js_only %] id='adv_chunk_[% adv_chunk.adv_special %]' class='hidden' [% END %]>
@@ -84,8 +84,9 @@
                                 <option value="[% opt.code %]"[% CGI.param('pubdate') == opt.code ? ' selected="selected"' : '' %]>[% opt.label | html %]</option>
                             [%  END %]
                             </select>
-                            
-                            <div class="mx-3">
+
+                            <br/>
+                            <div id='adv_special_block' class="text-center">
                                 <input title="[% l('Search date') %]" class='form-control' placeholder='Year'
                                   name='date1' type='text' size='4' maxlength='4' value="[% CGI.param('date1') | html %]" />
                                 <span id='adv_global_pub_date_2_span' class='[% CGI.param("pubdate") == "between" ? "" : "hide_me" %]'>
                                         [% l("Limit to Available") %]</label>
                                 </div>
                             </div>
-                    [% END; %]
+                    [% END %]
                 </div>
             </div>
-        [% END; %]
-    [% END; %]
+        [% END %]
+    [% END %]
     </div>
     <div id='adv_search_submit' class="my-3">
         <input type="hidden" name="_adv" value="1" />
index 77e3a79..b241b27 100755 (executable)
@@ -2,26 +2,25 @@
         <div>
         <hr>
         <h3>[% l('Basket') %]</h3>
-       
+
         <form action="[% mkurl(ctx.opac_root _ '/mylist/move') %]" method="post">
         <input type="hidden" name="orig_referrer" value="[% CGI.referer | html %]" />
         <input type="hidden" name="redirect_to" value="[% mkurl('', {}, ['list_none_selected', 'cart_none_selected']) %]" />
         <div class="bbag-action" style="clear:both;">
         <div class="input-group my-3">
-         
-            <button class="btn btn-success m-1" name="action" value="place_hold" id="place_hold" type="submit"><i class="fas fa-book"></i> Place Hold</button>
-             <button class="btn btn-danger m-1" name="action" value="delete" id="delete" type="submit"><i class="fas fa-trash"></i> Delete</button>
-            <button class="btn btn-action m-1" name="action" value="print" id="print" type="submit"><i class="fas fa-print"></i> Print Details</button>
-            <button class="btn btn-action m-1" name="action" value="email" id="email" type="submit"><i class="fas fa-envelope-open-text"></i> Email Details</button>
-           
-            <button class="btn btn-action m-1" name="action" value="new_list" id="new_list" type="submit"><i class="fas fa-plus"></i> Add to New List</button>
-             [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
+
+            <button class="btn btn-success m-1" value="place_hold" id="place_hold" type="submit"><i class="fas fa-book" aria-hidden="true"></i> Place Hold</button>
+            <button class="btn btn-danger m-1" value="delete" id="delete" type="submit"><i class="fas fa-trash" aria-hidden="true"></i> Delete</button>
+            <button class="btn btn-action m-1" value="print" id="print" type="submit"><i class="fas fa-print" aria-hidden="true"></i> Print Details</button>
+            <button class="btn btn-action m-1" value="email" id="email" type="submit"><i class="fas fa-envelope-open-text" aria-hidden="true"></i> Email Details</button>
+
+            <button class="btn btn-action m-1" value="new_list" id="new_list" type="submit"><i class="fas fa-plus" aria-hidden="true"></i> Add to New List</button>
             <div class="dropdown show m-1">
                 [% IF ctx.user AND ctx.bookbags.size %]
                  <a class="btn btn-action dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
-                    <i class="fas fa-truck-moving"></i> [% l('Move selected items to list:') %]
-                </a>
-              
+                   <i class="fas fa-truck-moving" aria-hidden="true"></i> [% l('Move selected items to list:') %]
+                 </a>
+
                 <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
                     [% FOR bbag IN ctx.bookbags %]
                          <button name="action" class="dropdown-item" href="#" type="submit" value="[% bbag.id %]"> [% bbag.name | html %]</button>
@@ -38,9 +37,9 @@
             </div>
 </div>
 
-      
 
-        
+
+
             [% IF CGI.param('cart_none_selected') %]
                 <span class="error">[% l('No items were selected') %]</span>
             [% END %]
 
             <div class="d-block d-md-none">
                 <input id="all_check" checked="checked"
-                type="checkbox" onclick="var inputs=document.getElementsByTagName('input'); 
-                                for (i = 0; i < inputs.length; i++) { 
+                type="checkbox" onclick="var inputs=document.getElementsByTagName('input');
+                                for (i = 0; i < inputs.length; i++) {
                                     if (inputs[i].name == 'record' && !inputs[i].disabled) inputs[i].checked = this.checked;}"
-                aria-label="[% l('Check/Uncheck All') %]" />    
-                <label for="all_check">[% l('Check/Uncheck All') %]</label>  
-            </div>   
+                aria-label="[% l('Check/Uncheck All') %]" />
+                <label for="all_check">[% l('Check/Uncheck All') %]</label>
+            </div>
             <table class="container-fluid table table-hover table-bordered mt-4 miniTable bucketTable">
                 <thead id="acct_list_header_anon">
                     <tr>
                         <th class='list_checkbox'>
-                            <input type="checkbox" checked="checked" 
+                            <input type="checkbox" checked="checked"
                             aria-label="[% l('Select all records') %]" onclick="
-                                var inputs=document.getElementsByTagName('input'); 
-                                for (i = 0; i < inputs.length; i++) { 
+                                var inputs=document.getElementsByTagName('input');
+                                for (i = 0; i < inputs.length; i++) {
                                     if (inputs[i].name == 'record' && !inputs[i].disabled) inputs[i].checked = this.checked;}"/>
                         </th>
                         <th><a href="[% mkurl('', {anonsort=>(CGI.param('anonsort') == 'titlesort' ? 'titlesort.descending' : 'titlesort')}) %]">[% l('Title') %]</a></th>
@@ -89,7 +88,7 @@
                             )
                         -%]">[% attrs.author | html %]</a></td>
                         <td class="list_entry" data-label="[% l('Local Call Number') %]">
-                        [% 
+                        [%
                             copy = attrs.holdings.0;
                             IF copy;
                                 copy_org = ctx.get_aou_by_shortname(copy.owner);
index 543d2cf..8c898b5 100755 (executable)
@@ -11,8 +11,8 @@
         <meta name = "viewport" content = "initial-scale = 1.0">
         <!--Added bootstrap dependancies-->
         <link rel="stylesheet" href="[% ctx.media_prefix %]/css/bootstrap/bootstrap.min.css">
-        <link rel="stylesheet"  href="[% ctx.media_prefix %]/css/fontawesome/all.css[% ctx.cache_key %]" /> 
-        <link rel="stylesheet"  href="[% ctx.media_prefix %]/css/datepicker/bootstrap-datepicker.css[% ctx.cache_key %]" /> 
+        <link rel="stylesheet"  href="[% ctx.media_prefix %]/css/fontawesome/all.css[% ctx.cache_key %]" />
+        <link rel="stylesheet"  href="[% ctx.media_prefix %]/css/datepicker/bootstrap-datepicker.css[% ctx.cache_key %]" />
         <link rel="stylesheet"  href="[% ctx.media_prefix %]/css/skin/default/opac/semiauto.css[% ctx.cache_key %]" />
         <link rel="stylesheet" href="[% ctx.opac_root %]/css/style.css[% ctx.cache_key %]&amp;dir=[%
           IF ctx.get_i18n_l(ctx.eg_locale).rtl == 't' %]rtl[%
         [% IF ctx.get_i18n_l(ctx.eg_locale).rtl == 't' %]
         <link rel="stylesheet" href="[% ctx.media_prefix %]/css/skin/default/opac/semiauto-rtl.css[% ctx.cache_key %]" />
         [% END %]
-        
+
            [% IF ctx.get_org_setting(ctx.search_ou, 'opac.patron.custom_css') %]
             [% custom_css = ctx.get_org_setting(ctx.search_ou, 'opac.patron.custom_css') %]
-        [% '<style>'; custom_css ; '</style>' %]                                          
+        [% '<style>'; custom_css ; '</style>' %]
         [% END %]
 
         [%- libname = ctx.get_aou(ctx.search_ou).name;
             @import "[% ctx.media_prefix %]/js/dojo/dijit/themes/tundra/tundra.css[% ctx.cache_key %]";
         </style>
         [% END %]
-               
+
         [% IF !ctx.is_staff %]
             [% INCLUDE 'opac/parts/goog_analytics.tt2' %]
         [% END %]
         [% PROCESS 'opac/parts/stripe.tt2' %]
 <script  src="[% ctx.media_prefix %]/js/bootstrap/jquery-3.5.1.min.js"></script>
 
-        
+
     </head>
     <body[% IF want_dojo; ' class="tundra d-flex flex-column min-vh-100"'; ELSE; ' class="tundra d-flex flex-column min-vh-100"';  END %]>
         <h1 class="sr-only">[% l('Catalog') %]</h1>
@@ -66,7 +66,7 @@
         [% END;%]
         <h2 class="sr-only">[% l('Additional Resources') %]</h2>
         [% INCLUDE 'opac/parts/footer.tt2' %]
-        
+
         [% INCLUDE 'opac/parts/js.tt2' %]
         <script>
     $(document).ready(function(){
@@ -77,7 +77,7 @@
             [%- INCLUDE 'opac/parts/chilifresh.tt2' %]
         [%- END %]
 
-     
+
 
     </body>
 </html>
index d24a25c..bf2c6f8 100755 (executable)
@@ -4,7 +4,7 @@
 
     # Wrap a url to open in a new tab in staff client.
     MACRO opac_wrap(url) BLOCK;
-         IF ctx.is_staff AND NOT ctx.is_browser_staff;
+          IF ctx.is_staff AND NOT ctx.is_browser_staff;
               # void(0) to return false and not go to new page in current tab.
               "javascript:xulG.new_tab(xulG.urls.XUL_OPAC_WRAPPER, {}, {'opac_url' : 'oils://remote" _ url _ "'});void(0);";
           ELSE;
 %]
 
  <div id="btnGroupDrop1" role="button" class="btn btn-action text-left" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
-        <i class="fas fa-list"></i>
+        <i class="fas fa-list" aria-hidden="true"></i>
           [% l("Add to my list") %]
         </div>
-    <!--Removal-->    
+    <!--Removal-->
     <div class="dropdown-menu" aria-labelledby="btnGroupDrop1">
     <a class="dropdown-item" href="[% href %]">[% l('Temporary List') %]</a>
-    
+
     [% IF default_list;
        label = (ctx.default_bookbag) ? ctx.default_bookbag : l('Default List');
        class = (ctx.bookbags.size) ? "default divider" : "default";
index 4757449..f8d189b 100755 (executable)
@@ -8,18 +8,18 @@
             <span class="sr-only">[% l('Records In Basket') %]</span>
         </div>
       </a>
-      <div class="dropdown-menu dropdown-menu-left" role="menu" aria-labelledby="cartDropdown" style="right:0px !important;left:unset !important;">
-        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist', {}) %]"><i class="fas fa-glasses"></i>[% l('View Basket') %]</a>
-        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist/move', { action => 'place_hold', entire_list => 1 }) %]"><i class="fas fa-book"></i>[% l('Place Holds') %]</a>
-        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist/print', {}) %]"><i class="fas fa-print"></i>[% l('Print Title Details') %]</a>
-        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist/email', {}) %]"><i class="far fa-envelope"></i>[% l('Email Title Details') %]</a>
+      <div class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="cartDropdown">
+        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist', {}) %]"><i class="fas fa-glasses" aria-hidden="true"></i> [% l('View Basket') %]</a>
+        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist/move', { action => 'place_hold', entire_list => 1 }) %]"><i class="fas fa-book" aria-hidden="true"></i> [% l('Place Holds') %]</a>
+        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist/print', {}) %]"><i class="fas fa-print" aria-hidden="true"></i> [% l('Print Title Details') %]</a>
+        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist/email', {}) %]"><i class="fas fa-envelope" aria-hidden="true"></i> [% l('Email Title Details') %]</a>
         [% IF !ctx.is_browser_staff %]
-        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/myopac/lists', { move_cart_by_default => 1, from_basket => 1 }) %]"><i class="fas fa-list"></i>[% l('Add Basket to Saved List') %]</a>
+        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/myopac/lists', { move_cart_by_default => 1, from_basket => 1 }) %]"><i class="fas fa-list" aria-hidden="true"></i> [% l('Add Basket to Saved List') %]</a>
         [% END %]
         [% IF ctx.is_browser_staff %]
-        <a class="dropdown-item" role="menuitem" tabindex="-1" href="add_cart_to_bucket"><i class="fab fa-bitbucket"></i>[% l('Add Basket to Bucket') %]</a>
+        <a class="dropdown-item" role="menuitem" tabindex="-1" href="add_cart_to_bucket"><i class="fab fa-bitbucket" aria-hidden="true"></i> [% l('Add Basket to Bucket') %]</a>
         [% END %]
-        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist/clear', {}) %]"><i class="fas fa-trash"></i>[% l('Clear Basket') %]</a>
+        <a class="dropdown-item" role="menuitem" tabindex="-1" href="[% mkurl(ctx.opac_root _ '/mylist/clear', {}) %]"><i class="fas fa-trash" aria-hidden="true"></i> [% l('Clear Basket') %]</a>
       </div>
     </div>
   </div>
index 45df6c0..6de5ae1 100644 (file)
@@ -1,6 +1,6 @@
 
-[%- 
-    # If caller passes a list of possible attribute types, 
+[%-
+    # If caller passes a list of possible attribute types,
     # search all until we find some values
 
     IF !attr.size; attr = [attr]; END;
@@ -12,7 +12,7 @@
     END;
     name = name || "fi:" _ attr_class;
     id = id || attr_class _ "_selector";
-    values = values || CGI.param(name); 
+    values = values || CGI.param(name);
     IF size AND size < 1; size = all_values.size; END;
 -%]
 
@@ -21,7 +21,7 @@
 [% IF none_ok %]
     <p value=''>[% none_label ? none_label : l('-- Any --') %]</p>
 [% END;
-# turn the list of objects into a list of hashes to 
+# turn the list of objects into a list of hashes to
 # leverage TT's array.sort('<hashkey>') behavior
 simple_sorter = [];
 sorter = [];
@@ -29,7 +29,7 @@ FOR o IN all_values;
     IF o.is_simple == 't';
         simple_sorter.push({code => o.code, value => (o.search_label ? o.search_label : o.value)});
     ELSE;
-        sorter.push({code => o.code, value  => (o.search_label ? o.search_label : o.value)}); 
+        sorter.push({code => o.code, value  => (o.search_label ? o.search_label : o.value)});
     END;
 END;%]
 <ul class="adv_filters">
index aa2e0d1..a6f0c94 100755 (executable)
@@ -1,9 +1,9 @@
-[%-  IF ENV.OILS_CHILIFRESH_URL AND ENV.OILS_CHILIFRESH_ACCOUNT 
+[%-  IF ENV.OILS_CHILIFRESH_URL AND ENV.OILS_CHILIFRESH_ACCOUNT
             AND (ctx.page == 'rresult' OR ctx.page == 'record');
         chili_url = ENV.OILS_CHILIFRESH_URL;
         IF CGI.https AND ENV.OILS_CHILIFRESH_HTTPS_URL;
             chili_url = ENV.OILS_CHILIFRESH_HTTPS_URL;
-        END; 
+        END;
 %]
     <!-- Set up the chilifresh account information and load the JS -->
     <input type="hidden" id="chilifresh_account" name="chilifresh_account" value="[% ENV.OILS_CHILIFRESH_ACCOUNT %]"/>
index 35d8e37..13edbed 100755 (executable)
@@ -1,6 +1,6 @@
 
-[%- 
-    # If caller passes a list of possible attribute types, 
+[%-
+    # If caller passes a list of possible attribute types,
     # search all until we find some values
 
     IF !attr.size; attr = [attr]; END;
     END;
     name = name || "fi:" _ attr_class;
     id = id || attr_class _ "_selector";
-    values = values || CGI.param(name); 
+    values = values || CGI.param(name);
     IF size AND size < 1; size = all_values.size; END;
 -%]
 
-<select class="form-control w-100" id='[% id %]' name='[% name %]'[%
+<select class="form-control form-control-sm w-100" id='[% id %]' name='[% name %]'[%
     multiple ? ' multiple="multiple"' : '';
     size ? (' size="' _ size _ '"') : '';
 %] title="[% filter_label || l('Select item type:') %]">
 [% IF none_ok %]
     <option value=''>[% none_label ? none_label : l('-- Any --') %]</option>
 [% END;
-# turn the list of objects into a list of hashes to 
+# turn the list of objects into a list of hashes to
 # leverage TT's array.sort('<hashkey>') behavior
 simple_sorter = [];
 sorter = [];
@@ -31,7 +31,7 @@ FOR o IN all_values;
     IF o.is_simple == 't';
         simple_sorter.push({code => o.code, value => (o.search_label ? o.search_label : o.value)});
     ELSE;
-        sorter.push({code => o.code, value  => (o.search_label ? o.search_label : o.value)}); 
+        sorter.push({code => o.code, value  => (o.search_label ? o.search_label : o.value)});
     END;
 END;
 FOR o IN simple_sorter.sort('value') %]
index 08f3ae8..0cea9e4 100755 (executable)
@@ -195,7 +195,7 @@ ctx.google_books_preview = 0;
 ctx.maintenance_message = "<b>This OPAC will be unavailable on Month ##, #### at #pm for planned upgrades.</b>";
 # Maintenance types follow Bootstrap4 alert options as follows
 # success = green; info = blue; warning = yellow; danger = red
-# Other colors would require re-coding the alert 
+# Other colors would require re-coding the alert
 ctx.maintenance_type = l('info');
 
 ##############################################################################
@@ -274,7 +274,7 @@ ctx.hide_badge_scores = 'false';
 ctx.max_cart_size = 500;
 
 ##############################################################################
-# Display booking reservations tab in myopac 
+# Display booking reservations tab in myopac
 ##############################################################################
 ctx.show_reservations_tab = 'false';
 
index aab1add..d4e40bb 100755 (executable)
@@ -196,7 +196,7 @@ ctx.google_books_preview = 0;
 #ctx.maintenance_message = "<b>This OPAC will be unavailable part of March 15, 2019 for planned upgrades.</b>";
 # Maintenance types follow Bootstrap4 alert options as follows
 # success = green; info = blue; warning = yellow; danger = red
-# Other colors would require re-coding the alert 
+# Other colors would require re-coding the alert
 #ctx.maintenance_type = l('warning');
 
 ##############################################################################
@@ -275,7 +275,7 @@ ctx.hide_badge_scores = 'false';
 ctx.max_cart_size = 500;
 
 ##############################################################################
-# Display booking reservations tab in myopac 
+# Display booking reservations tab in myopac
 ##############################################################################
 ctx.show_reservations_tab = 'false';
 
index 41d6f50..622fe57 100755 (executable)
@@ -1,20 +1,20 @@
 [%
     css_colors = {
-        
-        
+
+
 #The counts that appear in the navigation when signed into the OPAC -EX. X Ready For Pickup where x is the modified number
 
-       zero_count = "#c1ffbf", #Logged in item/charges count at 0
+            zero_count = "#c1ffbf", #Logged in item/charges count at 0
         non_zero_count = "#ffc107", #Logged in item/charges count NOT at 0
 
-       facets_back = "#00593d", #search list facet backgrounds
+            facets_back = "#006042", #search list facet backgrounds
         facets_text = "#fff",
-       footer_link = "#fff",
+            footer_link = "#fff",
 
-       nav_separation = "#00593d",
-        header_primary = "#00593d", #Primary Header Color
+            nav_separation = "#007a54",
+        header_primary = "#007a54", #Primary Header Color
         header_primary_fade = "#007a54", #Fade Header Color, make equal to header_primary for no fade
-        footer_primary = "#00593d", #Primary Footer Color
+        footer_primary = "#007a54", #Primary Footer Color
         footer_primary_fade = "#007a54", #Fade Footer Color, make equal to footer_primary for no fade
 
         bg_extras = "#007a54",
@@ -26,7 +26,7 @@
         background = "#fff", # white
         background_alert = "#ffcccc", # pink
         background_invert = "#252525", # charcoal
-        text = "black", # black 
+        text = "black", # black
         text_alert = "#c50202", # red
         text_attention = "#ffcc33", # pumpkin orange
         text_badnews = "#c50202", # cherry red
@@ -34,7 +34,7 @@
         text_greatnews = "green", # green
         text_invert = "#fff", # white
         text_match = "#c00", # deep red
-        primary = "#00593d", # dark green
+        primary = "#007a54", # dark green
         primary_fade = "#007a54", # medium green
         primary_offset = "#417860", # light_green
         control = "#69A088", # lighter green
         border_standard = "#e9ebf3", # light grey-blue
         border_dark = "black", # black
         border_alert = "red", # red
-        button_text = "#fbf9f9", # off-white 
+        button_text = "#fbf9f9", # off-white
         button_text_shadow = "#555555", # medium grey
         table_heading = "#d8d8d8", # grey-blue
         mobile_header_text = "#fff", # white
         item_selected = "#ddd", # grey (lighter)
-        link = "#00593d", # dark green
+        link = "#007a54", # dark green
 
 #Buttons are using default Bootstrap styling colors by default with this scheme, changable to match your library colours
 
         button_confirm_border_hover = "#00593d",
         button_confirm_text = "#fff",
 
-#Denial buttons like Cancel. Make all 4 the same color for no hover effect    
-        button_deny = "#dc3545",
-        button_deny_hover = "#c82333",
-        button_deny_border = "#dc3545",
+#Denial buttons like Cancel. Make all 4 the same color for no hover effect
+        button_deny = "#c82333",
+        button_deny_hover = "#b21f2d",
+        button_deny_border = "#bd2130",
         button_deny_border_hover = "#bd2130",
         button_deny_text = "#fff",
 
         button_remove_border_hover = "#bd2130",
         button_remove_text = "#fff",
 
-#Main search buttons and buttons that are not a confirm or deny such as the Less and More details on the record. Make all 4 the same color for no hover effect 
-        opac_button = "#2e3b91",
-        opac_button_hover = "#949cc8",
-        opac_button_border = "#2e3b91",
-        opac_button_border_hover = "#949cc8",
+#Main search buttons and buttons that are not a confirm or deny such as the Less and More details on the record. Make all 4 the same color for no hover effect
+        opac_button = "#424fa6",
+        opac_button_hover = "#4a58b7",
+        opac_button_border = "#2e3b91;",
+        opac_button_border_hover = "#2e3b91;",
         opac_button_text = "#fff",
 
-#Action buttons such as Place Hold and Add to List seen in record and results. Make all 4 the same color for no hover effect 
+#Action buttons such as Place Hold and Add to List seen in record and results. Make all 4 the same color for no hover effect
         action_button = "#f8f9fa",
         action_button_hover = "#e2e6ea",
         action_button_border = "#007a54",
@@ -96,5 +96,5 @@
         #Many action buttons use link coloring on the anchor tags. This setting will change the color to match your color schema if necessary
         #action_button_text_anchors = "",
 };
-    
+
 %]
index eaf2e7b..e86b319 100755 (executable)
@@ -8,6 +8,6 @@
         size_big = "110%",
         size_bigger = "125%",
         size_biggest = "150%"
-       font_main = "Arial, Helvetica, sans-serif",
+        font_main = "Arial, Helvetica, sans-serif",
     }
 %]
index e03033e..9cabf96 100755 (executable)
@@ -1,4 +1,4 @@
-[%- 
+[%-
     # If caller passes a list of possible filter_groups
     # search all until we find some values
     IF !filter_group.size; filter_group = [filter_group]; END;
@@ -10,7 +10,7 @@
     name = name || "fg:" _ group.code;
     id = id || group.code _ "_selector";
     class = class || '';
-    values = values || CGI.param(name); 
+    values = values || CGI.param(name);
     IF size AND size < 1; size = group.entries.size; END;
 -%]
 
index 2990352..4f029cd 100755 (executable)
@@ -1,5 +1,5 @@
-<select title="[% l('Search sorting') %]" 
-    [% class ? ('class="' _ class _ '"') : '' %] id='[% id || "opac.result.sort" %]' 
+<select title="[% l('Search sorting') %]"
+    [% class ? ('class="' _ class _ '"') : '' %] id='[% id || "opac.result.sort" %]'
     name="[% name || 'sort' %]" [% IF submit_on_change %]onchange='this.form.submit()'[% END %]>
     [% IF mode != 'bookbag' %]<option value=''>[% l("Sort by Relevance") %]</option>[% END %]
     <optgroup label='[% l("Sort by Title") %]'>
index 86ebcaa..e51a4ea 100755 (executable)
@@ -1,23 +1,23 @@
 [% IF !ctx.is_staff %]
 <div id="footer-wrap" class="mt-auto">
-<div id="footer" class="text-center">
+<div id="footer">
 <nav class="navbar navbar-expand-lg navbar-dark ">
 <!--Home-->
-  
+
+
+
   <!--Left Links-->
   <div class="row w-100">
     <div class="col-12">
-        <ul class="navbar-nav justify-content-center ">
+        <ul class="navbar-nav">
             <!--Link 1-->
         [% IF ctx.get_org_setting(ctx.physical_loc || ctx.aou_tree.id, 'opac.allow_pending_user') && !ctx.user %]
-            <li class="nav-item"><a class="nav-link" href="[% mkurl(ctx.opac_root _ '/register') %]">[% 
+            <li class="nav-item"><a class="nav-link" href="[% mkurl(ctx.opac_root _ '/register') %]">[%
             l('Request Library Card') %]</a></li>
         [% ELSE %]
-            <li class="nav-item"><a class="nav-link" href="#">[% l('Example Link 1') %]</a></li> 
+            <li class="nav-item"><a class="nav-link" href="#">[% l('Example Link 1') %]</a></li>
         [% END %]
-            <li class="nav-item"><a class="nav-link" href="#">[% l('Example Link 2') %]</a></li> 
+            <li class="nav-item"><a class="nav-link" href="#">[% l('Example Link 2') %]</a></li>
             <li class="nav-item"><a class="nav-link" href="#">[% l('Example Link 3') %]</a></li>
             <li class="nav-item"><a class="nav-link" href="#">[% l('Example Link 4') %]</a></li>
         </ul>
         [% END %]
     </div>
     [% END %]
-    
-      <div id="copyright_text" class="mt-3 text-center">
+
+      <div id="copyright_text" class="mt-3">
         [% l('Copyright &copy; 2006-[_1] Georgia Public Library Service, and others', date.format(date.now, '%Y')) %]
     <div id="footer_logo">
         [% l('Powered by') %]
         <a href="http://evergreen-ils.org">
             <img src="[% ctx.media_prefix %]/opac/images/eg_tiny_logo.png[% ctx.cache_key %]"
-                style="border:none; width: 94px; height: 16px;"
                 alt="[% l('Evergreen') %]"
             />
         </a>
     </div>
-   
+
     </div>
-    
+
 </div>
 [% END %]
index 5070537..c5927db 100755 (executable)
@@ -8,10 +8,10 @@
     _gaq.push(['_trackPageview']);
 
     (function() {
-        var ga = document.createElement('script'); 
+        var ga = document.createElement('script');
         ga.type = 'text/javascript'; ga.async = true;
         ga.src = ('oils:' == document.location.protocol || 'https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
+        var s = document.getElementsByTagName('script')[0];
         s.parentNode.insertBefore(ga, s);
     })();
 </script>
index e3a0eda..f54b472 100755 (executable)
@@ -42,7 +42,7 @@
     # mkurl('http://flarg.baz/squz', {foo => 'bar', boo => ['baz', 'faz']});
     #
     # New page, clear all existing params before applying new ones:
-    # mkurl('/fuz/buster', {foo => 'bar', boo => 'baz'}, 1); 
+    # mkurl('/fuz/buster', {foo => 'bar', boo => 'baz'}, 1);
     #
     # Current page, clear 'some_param' from the existing params:
     # mkurl('', {foo => 'bar', boo => 'baz'}, ['some_param']);
         cgi.delete('move_cart_by_default');
         cgi.delete('cart_none_selected');
         cgi.delete('list_none_selected');
-        
-        # x and y are artifacts of using <input type="image" /> tags 
+
+        # x and y are artifacts of using <input type="image" /> tags
         # instead of true submit buttons, and their values are never used.
-        cgi.delete('x', 'y'); 
+        cgi.delete('x', 'y');
 
         # apply user params
         FOR k IN params.keys;
     # 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); 
+            value = value.substr(71, value.length, '...');
+        END;
+        value = value.replace('\s*$', ''); # remove trailing whitespace
+        HTML.attributes($name => value);
     END;
 
     MACRO img_alt(text) BLOCK;
index f2eb5e6..bb7f6cd 100755 (executable)
@@ -1,5 +1,5 @@
 [% BLOCK get_hold_status %]
-<div>   
+<div>
     [% IF hold.hold.status == 4 %]
             <span class="myopac-hold-available">[% l("Available") %] </span>
               [% IF ahr.shelf_expire_time %]
index 721c060..e79cfb3 100755 (executable)
@@ -1,4 +1,6 @@
-<div id="homeLogo">
-    
-</div>
+
+[%-
+    PROCESS "opac/parts/css/colors.tt2";
+%]
+
 [% PROCESS carousels %]
index 8ddf1a6..488c95b 100755 (executable)
@@ -1,6 +1,6 @@
 
 
-       
+
 <script  src="[% ctx.media_prefix %]/js/ui/default/opac/simple.js[% ctx.cache_key %]"></script>
 [% INCLUDE "opac/i18n_strings.tt2" %]
 
@@ -65,7 +65,7 @@
                 [% FOR summary IN ctx.mfhd_summaries %]
                     [% IF summary.sre_id != -1 %]
                 {
-                    'id' : '[% summary.sre_id %]', 
+                    'id' : '[% summary.sre_id %]',
                     'label' : '[% summary.location | replace("'", "\\'") %]',
                     'entryNum' : [% loop.index %],
                     'owning_lib' : '[% summary.owning_lib %]'
 
 [% INCLUDE "opac/parts/acjs.tt2" IF ctx.page == 'record' %]
 [% IF ctx.page == 'advanced' %]
-<script  
+<script
     src="[% ctx.media_prefix %]/js/ui/default/opac/copyloc.js[% ctx.cache_key %]"></script>
 [% END %]
 
@@ -180,10 +180,10 @@ var aou_hash = {
 
 <script src="[% ctx.media_prefix %]/js/bootstrap/popper.min.js"></script>
 
-<script src="[% ctx.media_prefix %]/js/bootstrap/bootstrap.min.js"></script>  
+<script src="[% ctx.media_prefix %]/js/bootstrap/bootstrap.min.js"></script>
 
 <script  src="[% ctx.media_prefix %]/js/datepicker/bootstrap-datepicker.js"></script>
+
   <script>
     $(document).ready(function(){
     $('[data-toggle="tooltip"]').tooltip();
index 23c405e..9e48741 100755 (executable)
@@ -7,14 +7,14 @@
 <div class="container">
     <div>
     <h2>[% ctx.library.name | html %]</h2>
-    
+
     [%-
         lib_url = ctx.get_org_setting(ctx.library.id, 'lib.info_url');
         IF lib_url;
             '<div id="library-url"><a href="'; lib_url | html; '" property="url">'; l('Library web site'); '</a></div>';
         END;
     -%]
-    
+
     [%- IF ctx.hours; %]
         [%- INCLUDE "opac/parts/library/hours.tt2"; %]
     [% END; -%]
@@ -27,9 +27,9 @@
     [%- END; %]
     [%- IF ctx.library.phone; %]
         <div>[% l('Telephone: ') %]<a href="tel:[% ctx.library.phone | html %]" property="telephone">[% ctx.library.phone | html %]</a></div>
-    [% END; %]
+    [% END %]
     </div>
-    [% END; %]
+    [% END %]
 
     [%- IF ctx.library.mailing_address; %]
     <div class="my-3" id="addresses">
index c3d26f3..dd5e469 100755 (executable)
@@ -5,10 +5,10 @@
     END;
 
   # Allow fleshed circ_libs
-    IF copy_info.circ_lib.name; 
+    IF copy_info.circ_lib.name;
        org_id = copy_info.circ_lib.id;
-       org_name = copy_info.circ_lib.name; 
-       org_sname = copy_info.circ_lib.shortname; 
+       org_name = copy_info.circ_lib.name;
+       org_sname = copy_info.circ_lib.shortname;
     ELSE;
        org_id = copy_info.circ_lib;
        org_name = ctx.get_aou(org_id).name;
@@ -19,7 +19,7 @@
     prefer_external_url = ctx.get_org_setting(org_id, 'lib.prefer_external_url');
     UNLESS lib_url && prefer_external_url;
         lib_url = mkurl(opac_root _ '/library/' _ org_sname, {}, 1);
-    END; 
+    END;
     IF lib_url; '<a target="_blank" property="offeredBy" typeof="Library" href="'; lib_url | html; '">'; END;
     '<span property="name">'; org_name | html; '</span>';
     IF lib_url; '</a>'; END;
index 54e085b..730167e 100755 (executable)
@@ -7,14 +7,14 @@
     # Requires a "fleshed_ou" (aou) object defined.
     # Allow fleshed circ_libs
     org_id = fleshed_ou.id;
-    org_name = fleshed_ou.name; 
+    org_name = fleshed_ou.name;
     org_sname = fleshed_ou.shortname;
 
     lib_url = ctx.get_org_setting(org_id, 'lib.info_url');
     prefer_external_url = ctx.get_org_setting(org_id, 'lib.prefer_external_url');
     UNLESS lib_url && prefer_external_url;
         lib_url = mkurl(opac_root _ '/library/' _ org_sname, {}, 1);
-    END; 
+    END;
     IF lib_url; '<a property="offeredBy" typeof="Library" href="'; lib_url | html; '">'; END;
     '<span property="name">'; org_name | html; '</span>';
     IF lib_url; '</a>'; END;
index de30a46..295aac7 100755 (executable)
@@ -12,7 +12,7 @@
         [%- NEXT IF param.key == 'set_eg_locale'; -%]
         <input type="hidden" name="[% param.key | html %]" value="[% param.value | html %]" />
     [%- END; -%]
-   
+
     <select id="locale_picker" name="set_eg_locale" class="form-control form-control-sm col-6">
     [%- FOREACH locale IN ctx.locales.keys %]
         [%- IF set_locale == locale;
@@ -25,7 +25,7 @@
     [%- END %]
     </select>
     <div class="col-3">
-     <button type="submit" class="btn btn-sm btn-confirm float-right"><i class="fas fa-save"></i>[% l(" Save Changes") %]</button>
+     <button type="submit" class="btn btn-sm btn-confirm float-right"/><i class="fas fa-save" aria-hidden="true"></i>[% l(" Save Changes") %]</button>
     </div>
 </form>
 [%- END %]
index 862308a..525dd38 100755 (executable)
@@ -19,8 +19,8 @@
 %]
 </div>
 [% END %]
-    
+
+
     <div class="mx-auto row w-75 my-5">
         <div class='col-md-6'>
             <label for='username_field' class="lbl1" >[% l('Library Card Number') %]<span title="[% INCLUDE "opac/parts/login/username_hint.tt2" %]" data-html="true" data-toggle="tooltip">
             </div>
                <a href='[% mkurl(ctx.opac_root _ '/register', {}, 1) %]'>[% l('Request A Card') %]</a>
             <br>
-            
+
         </div>
         <div class='col-md-6'>
             <label for="password_field" class="lbl1" >[% l('PIN') %]<span title="[% INCLUDE "opac/parts/login/password_hint.tt2" %]" data-html="true" data-toggle="tooltip">
                         <i class="fas fa-question-circle"></i>
                     </span></label><br>
-             
+
             <div class="input_bg mb-2">
                 <input class="form-control" id="password_field" name="password" type="password"/>
             </div>
@@ -44,7 +44,7 @@
             <a href='[% mkurl(ctx.opac_root _ '/password_reset', {}, 1) %]'>[% l('Forgot Your Password?') %]  </a>
             [% END %]
             <br>
-            
+
         </div>
 
          <div class="col-12 pt-4 text-center">
@@ -54,7 +54,7 @@
                     [% l('Stay logged in?') %]
                 </label>
             </div>
-            <button type="submit" class="btn btn-confirm my-2"><i class="fas fa-sign-in-alt"></i> [% l('Log in') %]</button>
+            <button type="submit" class="btn btn-confirm my-2"><i class="fas fa-sign-in-alt" aria-hidden="true"></i> [% l('Log in') %]</button>
         </div>
         <div style="clear: both; padding-top: 15px;" class="col-12 text-center">
         [%
                 redirect = redirect  | replace('^http:', 'https:');
             %]
             <input type='hidden' name='redirect_to' value='[% redirect | html %]'/>
-          
+
         </div>
         <input id="client_tz_id" name="client_tz" type="hidden" />
         </div>
     </form>
-    
+
 </div>
 
index 9e38988..294d67e 100755 (executable)
@@ -5,13 +5,13 @@
 </div>
 <div class="col-12 text-center">
     <div class="mx-3 d-inline-block">
-        <a href="http://example.com" class="btn btn-confirm"><i class="fas fa-question"></i> [% l('Questions?') %]</a>
+        <a href="http://example.com" class="btn btn-confirm"><i class="fas fa-question" aria-hidden="true"></i> [% l('Questions?') %]</a>
     </div>
-    
+
     <div class="mx-3 d-inline-block">
         <div>
-            <a href="http://example.com" class="btn btn-confirm"><i class="fas fa-tasks"></i> [% l('FAQs') %]</a>
-           </div>
+            <a href="http://example.com" class="btn btn-confirm"><i class="fas fa-tasks" aria-hidden="true"></i> [% l('FAQs') %]</a>
+        </div>
     </div>
 
 </div>
index 252df0c..caded87 100755 (executable)
@@ -1,31 +1,31 @@
-<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+<div class="modal fade" id="loginModal" tabindex="-1" role="dialog" aria-labelledby="loginModalLabel" aria-hidden="true">
   <div class="modal-dialog modal-dialog-centered" role="document">
     <div class="modal-content">
      <form method='post' action="/eg/opac/login?redirect_to=%2Feg%2Fopac%2Fmyopac%2Fmain">
       <div class="modal-header">
         <h1 class="modal-title" id="exampleModalLabel">Login To Evergreen</h1>
         <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-          <i class="fas fa-times"></i>
+          <i class="fas fa-times" aria-hidden="true"></i>
         </button>
       </div>
       <div class="modal-body">
-      
-       [% IF ctx.login_failed_event %]
-               <div id='login-failed-message'>
-               [%
-               IF ctx.login_failed_event.textcode == 'PATRON_CARD_INACTIVE';
-                       l("The barcode used to login is marked as inactive.  Please contact your local library.");
-               ELSIF ctx.login_failed_event.textcode == 'PATRON_INACTIVE';
-                       l("This account has been deactivated.  Please contact your local library.");
-               ELSE;
-                       l("Login failed. The username or password provided was not valid. " _
-                       "Passwords are case-sensitive.  Check your Caps-Lock key and try again or contact your local library.");
-               END;
-               %]
-               </div>
-               [% END %]
 
-<div class='container text-center'>
+      [% IF ctx.login_failed_event %]
+    <div id='login-failed-message'>
+    [%
+        IF ctx.login_failed_event.textcode == 'PATRON_CARD_INACTIVE';
+            l("The barcode used to login is marked as inactive.  Please contact your local library.");
+        ELSIF ctx.login_failed_event.textcode == 'PATRON_INACTIVE';
+            l("This account has been deactivated.  Please contact your local library.");
+        ELSE;
+            l("Login failed. The username or password provided was not valid. " _
+               "Passwords are case-sensitive.  Check your Caps-Lock key and try again or contact your local library.");
+        END;
+    %]
+    </div>
+    [% END %]
+
+<div class='container'>
     <div class="mx-auto row py-4">
         <div class='col-md-6'>
             <label for='username_field' class="lbl1" >[% l('Library Card Number') %]<span title="[% INCLUDE "opac/parts/login/username_hint.tt2" %]" data-html="true" data-toggle="tooltip">
             </div>
                <a href='[% mkurl(ctx.opac_root _ '/register', {}, 1) %]'>[% l('Request A Card') %]</a>
             <br>
-            
+
         </div>
         <div class='col-md-6'>
             <label for="password_field" class="lbl1" >[% l('PIN') %]<span title="[% INCLUDE "opac/parts/login/password_hint.tt2" %]" data-html="true" data-toggle="tooltip">
                         <i class="fas fa-question-circle"></i>
                     </span></label><br>
-             
+
             <div class="input_bg mb-2">
                 <input class="form-control" id="password_field" name="password" type="password"/>
             </div>
@@ -49,7 +49,7 @@
             <a href='[% mkurl(ctx.opac_root _ '/password_reset', {}, 1) %]'>[% l('Forgot Your Password?') %]  </a>
             [% END %]
             <br>
-            
+
         </div>
         <div style="clear: both; padding-top: 15px;" class="col-12">
         [%
                 redirect = redirect  | replace('^http:', 'https:');
             %]
         </div>
-       
+
         <input id="client_tz_id" name="client_tz" type="hidden" />
         </div>
-       </div>
-               [%# INCLUDE "opac/parts/login/help.tt2" %]
+  </div>
+    [%# INCLUDE "opac/parts/login/help.tt2" %]
 
       </div>
       <div class="modal-footer">
       <div class="mr-auto">
-       <input type='hidden' name='redirect_to' value='[% redirect | html %]'/>
+        <input type='hidden' name='redirect_to' value='[% redirect | html %]'/>
         <input type="checkbox" name="persist" id="login_persist" class="mr-1"/>
         <label for="login_persist"> [% l('Stay logged in?') %]</label>
       </div>
-       
-        <button type="button" class="btn btn-secondary" data-dismiss="modal"><i class="fas fa-times"></i> [% l('Close') %]</button>
-        <button type="submit" class="btn btn-confirm"><i class="fas fa-sign-in-alt"></i> [% l('Log in') %]</button>
+
+        <button type="button" class="btn btn-secondary" data-dismiss="modal"><i class="fas fa-times" aria-hidden="true"></i> [% l('Close') %]</button>
+        <button type="submit" class="btn btn-confirm"><i class="fas fa-sign-in-alt" aria-hidden="true"></i> [% l('Log in') %]</button>
       </div>
       </form>
     </div>
index 8175002..c1e2df6 100755 (executable)
@@ -23,14 +23,14 @@ limiting the set of desired records for a given metarecord.
 <div class="row">
   <div class="col-6">
     <div class="metarecord_filter_header">
-      
+
     </div>
     <select multiple='multiple' class="form-control"
       name="metarecord_formats_[% target_id %]">
       [% FOR ccvm IN
           hold_data.metarecord_filters.formats.sort('search_label');
           NEXT IF ccvm.opac_visible == 'f' %]
-        <option value="[% ccvm.code %]"[%- code = ccvm.code; 
+        <option value="[% ccvm.code %]"[%- code = ccvm.code;
             IF selected_formats.$code %] selected='selected'[% END -%]>
           [% ccvm.search_label | html %]
         </option>
@@ -43,12 +43,12 @@ limiting the set of desired records for a given metarecord.
         my_lang = ctx.get_i18n_l(ctx.eg_locale).marc_code;
   %]
   <div class="col-6">
-   
+
     <select multiple='multiple' class="form-control"
       name="metarecord_langs_[% target_id %]">
       [% FOR lang_ccvm IN hold_data.metarecord_filters.langs.sort('value');
             NEXT IF lang_ccvm.opac_visible == 'f';
-            selected = 0; 
+            selected = 0;
             code = lang_ccvm.code;
             IF selected_langs.size;
                 # user has already selected their preferred language(s)
@@ -59,7 +59,7 @@ limiting the set of desired records for a given metarecord.
                 SET selected = 1 IF code == my_lang;
             END;
         %]
-        <option value="[% lang_ccvm.code %]"[%- 
+        <option value="[% lang_ccvm.code %]"[%-
             IF selected %] selected='selected'[%- END %]>
           [% lang_ccvm.value | html %]
         </option>
@@ -71,6 +71,6 @@ limiting the set of desired records for a given metarecord.
     </div>
   </div>
   [% END %]
-  
+
 </div>
 [% END # metarecord_hold_filters_selector %]
index e7e7cc0..359a5e9 100755 (executable)
@@ -1,4 +1,4 @@
-[%- 
+[%-
     # Support multiscript records via alternate graphic 880 fields
     # get_graphic_880s(target_field='100')
     # See "Model A" in http://www.loc.gov/marc/bibliographic/ecbdmulti.html
@@ -95,7 +95,7 @@
         END;
 
         args.df_bib_list = args.bibid;
-        args.bibid = args.bibid.0; 
+        args.bibid = args.bibid.0;
 
         IF args.mr_constituent_ids.size && !args.df_bib_list.size;
             args.df_bib_list = args.mr_constituent_ids;
         END;
         hl_field = args.hl_field;
 
-        junk = ctx.timelog('Fetching display fields and Using data from "' _ hl_field _ '" for rendering'); 
+        junk = ctx.timelog('Fetching display fields and Using data from "' _ hl_field _ '" for rendering');
         args.display_field_list = ctx.fetch_display_fields(args.df_bib_list.list);
 
-        junk = ctx.timelog('Mapping display fields for bib(s) ' _ args.df_bib_list.list.join(', ')); 
+        junk = ctx.timelog('Mapping display fields for bib(s) ' _ args.df_bib_list.list.join(', '));
         FOR df IN args.display_field_list;
             df_map = ctx.search_cdfm('field', df.field).0;
             df_name = df_map.name();
                 args.hl.$df_name = df.$hl_field || df.value;
             END;
         END;
-        junk = ctx.timelog('Finished mapping display fields for bib(s) ' _ args.df_bib_list.list.join(', ')); 
+        junk = ctx.timelog('Finished mapping display fields for bib(s) ' _ args.df_bib_list.list.join(', '));
 
         # Map item types to schema.org types; impedance mismatch :(
         args.schema.itemtype = {};
         # Create a version of the title designed for sorted displays.
         args.sort_title = args.title | upper;
 
-        # If the title has a "non-filing chaaracters" 
+        # If the title has a "non-filing chaaracters"
         # (to logically remove leading "The " for example)
         # chop the title. Otherwise, chop until the first alphanumeric.
         # BTW: Template Toolkit folds 1-element arrays to scalars!
         title_node = xml.findnodes('//*[@tag="245"]');
 
         args.nonfiling_characters = title_node.findvalue('@ind2');
-      
+
         IF (args.nonfiling_characters > 0);
-             args.sort_title = args.sort_title.substr(args.nonfiling_characters); 
+             args.sort_title = args.sort_title.substr(args.nonfiling_characters);
         ELSE;
              args.sort_title = args.sort_title.replace('^[^A-Z0-9]*','');
         END;
-      
+
         args.pubplaces = [];
         pubplace_hunt = xml.findnodes('//*[@tag="260"]/*[@code="a"]') ||
             xml.findnodes('//*[@tag="264" and @ind2="1"]/*[@code="a"]');
         args.publisher = (args.publishers.size) ? args.publishers.0 : '';
 
         args.pubdates = [];
-        pubdates_hunt = xml.findnodes('//*[@tag="260"]/*[@code="c"]') || 
+        pubdates_hunt = xml.findnodes('//*[@tag="260"]/*[@code="c"]') ||
             xml.findnodes('//*[@tag="264" and @ind2="1"]/*[@code="c"]');
         FOR sub IN pubdates_hunt;
             args.pubdates.push(sub.textContent);
             args.marc_cns.push(sub.textContent);
         END;
         args.marc_cn = (args.marc_cns.size ) ? args.marc_cns.0 : '';
-            
+
 
         # clean up the ISBN
         args.isbn_clean = args.isbns.0.replace('\ .*', '');
                 NEXT UNLESS href;
                 # it's possible for multiple $u's to exist within 1 856 tag.
                 # in that case, honor the label/notes data for the first $u, but
-                # leave any subsequent $u's as unadorned href's. 
+                # leave any subsequent $u's as unadorned href's.
                 # use href/link/note keys to be consistent with args.uri's
                 args.online_res.push({
-                    href => href.textContent, 
+                    href => href.textContent,
                     link => (loop.first AND label) ? label.textContent : href.textContent,
                     note => (loop.first) ? notes.textContent : ''
                 });
             END;
         END;
+
         args.holdings = [];
         args.uris = [];
         args.issns = [];
             END;
         END;
 
-        # now snag all issns 
+        # now snag all issns
         FOR rawissn IN xml.findnodes('//*[@tag="022"]/*[@code="a"]');
             args.issns.push(
                 rawissn.textContent.replace('[^\d\-X]', '')
                         LAST IF part_label != '';
                     END;
                     # Check copy visibility
-                    cp.deleted = copy.getAttribute('deleted');    
+                    cp.deleted = copy.getAttribute('deleted');
                     cp.visible = copy.getAttribute('opac_visible');
                     NEXT IF (cp.deleted == 'true' OR cp.visible == 'false');
 
                     END;
 
                     NEXT IF cp.visible == 'false';
-                    
+
                     loc = copy.findnodes('./*[local-name()="location"]');
                     NEXT IF loc.getAttribute('opac_visible') == 'false';
 
         xpath = '//*[local-name()="counts"]/*[local-name()="count"][@type="' _ count_type _ '"]';
         args.copy_counts = {};
         FOR node IN xml.findnodes(xpath);
-            FOR attr IN ['count', 'available', 'unshadow', 'transcendant', 'org_unit']; 
+            FOR attr IN ['count', 'available', 'unshadow', 'transcendant', 'org_unit'];
                 depth = node.getAttribute('depth');
                 count_org_unit = node.getAttribute('org_unit');
                 args.copy_counts.$depth.$attr = node.getAttribute(attr);
         count_type = 'pref_lib';
         xpath = '//*[local-name()="counts"]/*[local-name()="count"][@type="' _ count_type _ '"]';
         FOR node IN xml.findnodes(xpath);
-            FOR attr IN ['count', 'available', 'unshadow', 'transcendant', 'org_unit']; 
+            FOR attr IN ['count', 'available', 'unshadow', 'transcendant', 'org_unit'];
                 depth = node.getAttribute('depth');
                 args.plib_copy_counts.$depth.$attr = node.getAttribute(attr);
             END;
 
     # Get the library or location group
     # get_library()
-    # magically upgrades any use of 'loc' to 'locg', 
+    # magically upgrades any use of 'loc' to 'locg',
     # which is a superset of 'loc'.
     BLOCK get_library;
         loc_name = 'locg';
                 carousel.name = car.override_name;
             END;
             carousels.push(carousel);
-        END; 
+        END;
     END;
     IF carousels.size > 0;
 %]
            <!-- <a href="[% mkurl(ctx.opac_root  _ '/record/' _ bib.id) %]"> -->
             [% bib.title | html %]
            <!-- </a> -->
-            
+
             </span>
             </div>
         </div>
     </li>
-[% END; %]
+[% END %]
     </ul>
   </div>
   <div class="glide__arrows" data-glide-el="controls">
     });
     glide.mount();
 </script>
-[% END; %]
-[% END; %]
+[% END %]
+[% END %]
 </div>
 [% END -%]
 [% END -%]
index be7abb9..15bc336 100755 (executable)
@@ -1,36 +1,36 @@
 [%  WRAPPER "opac/parts/base.tt2" %]
 
 [% myopac_pages = [
-        {children => 0, parent => "parent",url => "main", text => l("<i class='fas fa-home'></i>Home"), name => l("Account Summary")},
+        {children => 0, parent => "parent",url => "main", text => l("<i class='fas fa-home' aria-hidden='true'></i> Home"), name => l("Account Summary")},
 
-        {children => 2, parent => "parent",url => "charges", text => l("<i class='fas fa-money-check-alt'></i><span class='sumNum'>[_1]</span>Charges", money(ctx.user_stats.fines.balance_owed)), name => l("Charges")},
-        {children => 0, parent => "charges",url => "charges", text => l("<i class='fas fa-file-invoice'></i>Current Charges"), name => l("Current Charges")},
-        {children => 0, parent => "charges",url => "main_payments", text => l("<i class='fas fa-history'></i>Payment History"), name => l("Payment History")},
+        {children => 2, parent => "parent",url => "charges", text => l("<i class='fas fa-money-check-alt' aria-hidden='true'></i> <span class='sumNum'>[_1]</span>Charges", money(ctx.user_stats.fines.balance_owed)), name => l("Charges")},
+        {children => 0, parent => "charges",url => "charges", text => l("<i class='fas fa-file-invoice' aria-hidden='true'></i> Current Charges"), name => l("Current Charges")},
+        {children => 0, parent => "charges",url => "main_payments", text => l("<i class='fas fa-history' aria-hidden='true'></i> Payment History"), name => l("Payment History")},
 
-        {children => 0, parent => "parent", url => "messages", text => l("<i class='fas fa-envelope'></i><span class='sumNum'>[_1]</span>Messages",  ctx.user_stats.messages.unread), name => l("Messages")},
+        {children => 0, parent => "parent", url => "messages", text => l("<i class='fas fa-envelope' aria-hidden='true'></i> <span class='sumNum'>[_1]</span>Messages",  ctx.user_stats.messages.unread), name => l("Messages")},
 
-        {children => 3, parent => "parent",url => "circs", text => l("<i class='fas fa-book'></i><span class='sumNum'>[_1]</span>Items Checked Out", ctx.user_stats.checkouts.total_out), name = l("Circulations")},
-        {children => 0, parent => "circs", url => "circs", text => l("<i class='fas fa-book-reader'></i>Current Items Checked Out"), name=> l("Circulations")},
-        {children => 0, parent => "circs", url => "ebook_circs", text => l("<i class='fas fa-desktop'></i>E-Items Currently Checked Out"), name => l("E-Items Currently Checked Out")},
-        {children => 0, parent => "circs", url => "circ_history", text => l("<i class='fas fa-history'></i>Check Out History"), name => l("Check Out History")},
+        {children => 3, parent => "parent",url => "circs", text => l("<i class='fas fa-book' aria-hidden='true'></i> <span class='sumNum'>[_1]</span>Items Checked Out", ctx.user_stats.checkouts.total_out), name = l("Circulations")},
+        {children => 0, parent => "circs", url => "circs", text => l("<i class='fas fa-book-reader' aria-hidden='true'></i> Current Items Checked Out"), name=> l("Circulations")},
+        {children => 0, parent => "circs", url => "ebook_circs", text => l("<i class='fas fa-desktop' aria-hidden='true'></i> E-Items Currently Checked Out"), name => l("E-Items Currently Checked Out")},
+        {children => 0, parent => "circs", url => "circ_history", text => l("<i class='fas fa-history' aria-hidden='true'></i> Check Out History"), name => l("Check Out History")},
 
-        {children => 4, parent => "parent",url => "holds", text => l("<i class='fas fa-clock'></i><span class='sumNum'>[_1]</span>Holds / <span class='sumNum'>[_2]</span> Ready", ctx.user_stats.holds.total, ctx.user_stats.holds.ready), name => l("Holds")},
-        {children => 0, parent => "holds", url => "holds", text => l("<i class='fas fa-hands'></i>Items on Hold"), name => l("Holds")},
-        {children => 0, parent => "holds", url => "ebook_holds", text => l("<i class='fas fa-desktop'></i>E-Items on Hold"), name => l("E-Items on Hold")},
-        {children => 0, parent => "holds", url => "ebook_holds_ready", text => l("<i class='fas fa-download'></i> E-Items Ready for Checkout"), name => l("E-Items Ready for Checkout")},
-        {children => 0, parent => "holds", url => "hold_history", text => l("<i class='fas fa-history'></i>Holds History"), name => l("Holds History")},
+        {children => 4, parent => "parent",url => "holds", text => l("<i class='fas fa-clock' aria-hidden='true'></i> <span class='sumNum'>[_1]</span>Holds / <span class='sumNum'>[_2]</span> Ready", ctx.user_stats.holds.total, ctx.user_stats.holds.ready), name => l("Holds")},
+        {children => 0, parent => "holds", url => "holds", text => l("<i class='fas fa-hands' aria-hidden='true'></i> Items on Hold"), name => l("Holds")},
+        {children => 0, parent => "holds", url => "ebook_holds", text => l("<i class='fas fa-desktop' aria-hidden='true'></i> E-Items on Hold"), name => l("E-Items on Hold")},
+        {children => 0, parent => "holds", url => "ebook_holds_ready", text => l("<i class='fas fa-download' aria-hidden='true'></i>  E-Items Ready for Checkout"), name => l("E-Items Ready for Checkout")},
+        {children => 0, parent => "holds", url => "hold_history", text => l("<i class='fas fa-history' aria-hidden='true'></i> Holds History"), name => l("Holds History")},
 
-        {children => 4, parent => "parent", url => "prefs", text => l("<i class='fas fa-cog'></i>Preferences"),name => l("Preferences")},
-        {children => 0, parent => "prefs", url => "prefs", text => l("<i class='fas fa-user-cog'></i>Personal Information"), name => l("Preferences")},
-        {children => 0, parent => "prefs", url => "prefs_notify", text => l("<i class='fas fa-exclamation-circle'></i>Notifications"), name => l("Notifications")},
-        {children => 0, parent => "prefs", url => "prefs_settings", text => l("<i class='fas fa-search'></i>Search & History"), name => l("Search & History")},
-        {children => 0, parent => "prefs", url => "prefs_my_lists", text => l("<i class='fas fa-list'></i>Lists"), name => l("Lists")},
+        {children => 4, parent => "parent", url => "prefs", text => l("<i class='fas fa-cog' aria-hidden='true'></i> Preferences"),name => l("Preferences")},
+        {children => 0, parent => "prefs", url => "prefs", text => l("<i class='fas fa-user-cog' aria-hidden='true'></i> Personal Information"), name => l("Preferences")},
+        {children => 0, parent => "prefs", url => "prefs_notify", text => l("<i class='fas fa-exclamation-circle' aria-hidden='true'></i> Notifications"), name => l("Notifications")},
+        {children => 0, parent => "prefs", url => "prefs_settings", text => l("<i class='fas fa-search' aria-hidden='true'></i> Search & History"), name => l("Search & History")},
+        {children => 0, parent => "prefs", url => "prefs_my_lists", text => l("<i class='fas fa-list' aria-hidden='true'></i> Lists"), name => l("Lists")},
 
-        
-        {children => 0, parent => "parent", url => "lists", text => l("<i class='fas fa-list'></i>My Lists"), name => l("My Lists")}
+
+        {children => 0, parent => "parent", url => "lists", text => l("<i class='fas fa-list' aria-hidden='true'></i> My Lists"), name => l("My Lists")}
     ];
      IF (ctx.show_reservations_tab == 'true');
-        myopac_pages.push({children => 0, parent => "parent", url => "reservations", text => l("<i class='fas fa-splotch'></i> Reservations"), name => l("Reservations")});
+        myopac_pages.push({children => 0, parent => "parent", url => "reservations", text => l("<i class='fas fa-splotch' aria-hidden='true'></i>  Reservations"), name => l("Reservations")});
     END;
     skin_root = "../"
 %]
     <div>
         [% INCLUDE "opac/parts/searchbar.tt2" %]
     </div>
-
-    <div class="mx-5">
-        <div class="row top-divide">
-            <div class="my_nav col-xl-3 col-lg-3 col-12 mx-auto text-center my-3">
+    <hr />
+    <div class="container">
+        <div class="row">
+            <div class="col-md-3">
+                <div class="my_nav">
                 <div class="btn-group-vertical dropright">
-        
+
                 [%- FOREACH page IN myopac_pages;
                     IF page.url == myopac_page || page.url == parent;
                         active = "active";
                     ELSE;
                         active = "";
                     END -%]
-                    
+
                     [% IF page.parent == "parent" && page.children > 0; %]
-                    <div class="dropdown dropright w-100">
+                    <div class="dropdown dropright">
                         <button class="btn btn-action text-left dropdown-toggle [% active %]" id="dropdownMenuLink-[% page.url %]" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                             [% page.text; %]
                         </button>
-  
+
                         <div class="dropdown-menu" aria-labelledby="dropdownMenuLink-[% page.url %]">
                         [%- FOREACH child IN myopac_pages; -%]
                             [% IF child.parent == page.url;
                         </div>
                     </div>
                     [% ELSIF page.parent == "parent"; %]
-                    
+
                     <a role="button" class="btn btn-action [% active %]" href="[% mkurl(ctx.opac_root _ '/myopac/' _ page.url, {}, ['bbid', 'offset', 'limit','sort','sort_type', 'hid']) %]">
   [% page.text; %]
   </a>
+
                     [% END %]
                 [% END %]
+                </div>
            </div>
            </div><!-- myopac_tabs -->
-        <div class="col-xl-9 col-12 my-3">
+        <div class="col">
             [% content %]
-            
+
         </div>
         </div>
     </div> <!-- content-wrapper -->
-    
+
+
 [% END %]
index 6d5ba47..ab934b8 100755 (executable)
@@ -1,4 +1,4 @@
-[%# Produce a URL for a given field that cycles for sorting from 
+[%# Produce a URL for a given field that cycles for sorting from
     "nothing" to "ascending" to "descending" then back to "nothing".
 %]
 [% MACRO sort_url(field)
@@ -29,7 +29,7 @@
 %]
 
 [%# Column headers for sortable columns %]
-[% MACRO sort_head(field, field_label) 
+[% MACRO sort_head(field, field_label)
    BLOCK %]
 <a href="[% sort_url(field) %]" [% click_sort %]>[% l(field_label) %]</a>[%- sort_indicator(field) %]
 [% END
index 05b3efc..f63e422 100755 (executable)
@@ -2,7 +2,7 @@
     PROCESS "opac/parts/misc_util.tt2";
     WRAPPER "opac/parts/myopac/base.tt2";
 
-   
+
 %]
 
 [% END %]
index d37f99a..e368399 100755 (executable)
@@ -1,6 +1,6 @@
 [%
 # Org Unit Selector Widget :
-#   INCLUDE build_org_selector id='selector-id' name='selector-name' 
+#   INCLUDE build_org_selector id='selector-id' name='selector-name'
 #       value=org_id show_loc_groups=1/0 can_have_vols_only=1/0
 #       can_have_users_only=1/0 valid_org_list=[1,2,3]
 #
@@ -14,24 +14,24 @@ BLOCK build_org_selector;
     node_stack = [{org => org_unit || ctx.aouct_tree || ctx.aou_tree}];
     inherited_vis = ctx.get_cgf('opac.org_unit.non_inherited_visibility').enabled == 'f';
 
-    IF !name; 
+    IF !name;
         name = loc_name;
     END;
     IF !value;
         value = loc_value;
     END;
 
-    # if the selected org unit is out of hiding scope, 
+    # if the selected org unit is out of hiding scope,
     # disable the ou-hide scoping altogether.
     hiding_disabled = ctx.org_hiding_disabled(value);
 
     -%]
 
     <select [% IF id %] id='[% id %]' [% END -%]
-            title='[% arialabel || l("Select Library") %]' 
+            title='[% arialabel || l("Select Library") %]'
             name='[% name %]' class="form-control w-100">
-    [%- 
-        WHILE node_stack.size > 0; 
+    [%-
+        WHILE node_stack.size > 0;
             node = node_stack.pop();
             org_unit = node.org;
             loc_grp = node.loc_grp;
@@ -73,13 +73,13 @@ BLOCK build_org_selector;
 
             # org is not publicly visible (though its children may be).
             NEXT UNLESS ctx.is_staff OR visible;
-            
+
             # org is not within hiding scope (though its children may be).
             NEXT UNLESS hiding_disabled OR ctx.org_within_hiding_scope(ou_id);
 
             node_value = ou_id;
             IF loc_grp;
-                node_value = node_value _ ':' _ loc_grp.id; 
+                node_value = node_value _ ':' _ loc_grp.id;
                 css_class = 'class="loc_grp"';
             ELSE;
                 css_class = 'class="org_unit"';
@@ -89,13 +89,13 @@ BLOCK build_org_selector;
                 disabled = 'disabled="disabled"';
             ELSIF node_value == value;
                 selected = 'selected="selected"';
-            END; 
+            END;
 
             IF can_have_users_only AND org_unit.ou_type.can_have_users != 't';
                 disabled = 'disabled="disabled"';
             ELSIF node_value == value;
                 selected = 'selected="selected"';
-            END; 
+            END;
 
             IF hold_pickup_lib AND ctx.get_org_setting(
                     org_unit.id, 'opac.holds.org_unit_not_pickup_lib');
@@ -104,7 +104,7 @@ BLOCK build_org_selector;
 
             # caller provided a list of valid org units.
             # all orgs not in the list are marked invalid.
-            IF valid_org_list AND 
+            IF valid_org_list AND
                     !valid_org_list.grep('^' _ org_unit.id _ '$').size;
                 disabled = 'disabled="disabled"';
                 selected = '';
@@ -125,9 +125,9 @@ BLOCK build_org_selector;
             pad_depth = pad_depth * 2;
             display_name = loc_grp ? loc_grp.name : org_unit.name %]
 
-            <option value='[% node_value %]' [% selected %] [% disabled %] [% css_class %]> 
+            <option value='[% node_value %]' [% selected %] [% disabled %] [% css_class %]>
                 [% '&nbsp;' FOR [0..pad_depth]; display_name | html %]
-            </option> 
+            </option>
 
         [%- END %]
     </select>
index 89ca800..419e7c1 100755 (executable)
@@ -15,11 +15,11 @@ function toggleActivationDate() {
     // Check for not equal to block so it works on first click.
     if (block.style.display != "block") {
         block.style.display = "block";
-        anchor.innerHTML = "<i class='fas fa-calendar'></i> " + actText;
+        anchor.innerHTML = "<i class='fas fa-calendar' aria-hidden='true'></i> " + actText;
         if (cb.checked != true) cb.checked = true;
     } else {
         block.style.display = "none";
-        anchor.innerHTML = "<i class='fas fa-calendar'></i> " + inActText;
+        anchor.innerHTML = "<i class='fas fa-calendar' aria-hidden='true'></i> " + inActText;
     }
     // Prevent the href from being followed, thus overriding the CSS.
     return false;
@@ -68,13 +68,13 @@ function maybeToggleNumCopies(obj) {
               ELSE; some_holds_allowed = 1; END;
             END %]
 
-       [% IF loop.first %] 
+       [% IF loop.first %]
     <form method="post" name="PlaceHold" onsubmit="return validateHoldForm()" >
         <input type="hidden" name="hold_type" value="[% CGI.param('hold_type') | html %]" />
-        [%  
+        [%
             redirect = CGI.param('hold_source_page') || CGI.param('redirect_to') || CGI.referer;
             # since we have to be logged in to get this far, return to a secure page
-            redirect = redirect.replace('^http:', 'https:') 
+            redirect = redirect.replace('^http:', 'https:')
         %]
         <input type="hidden" name="redirect_to" value="[% redirect | html %]" />
         <input type="hidden" name="hold_source_page" value="[% CGI.param('hold_source_page') | html %]" />
@@ -106,11 +106,11 @@ function maybeToggleNumCopies(obj) {
             <label for="hold_usr_is_requestor_not">
                 [% l("Place hold for patron by barcode:") %]
             </label>
-            <input type="text" name="hold_usr" id="hold_usr_input" 
+            <input type="text" name="hold_usr" id="hold_usr_input"
               aria-label="[% l('Barcode') %]"
-              value="[% usr_barcode | html %]" 
+              value="[% usr_barcode | html %]"
               onpaste="return debounce_barcode_change(event)"
-              onkeydown="return debounce_barcode_change(event)" autofocus /> 
+              onkeydown="return debounce_barcode_change(event)" autofocus />
             <span id="patron_name"></span>
             <span id="patron_usr_barcode_not_found" style="display: none">
               [% l('Patron barcode was not found') %]
@@ -119,7 +119,7 @@ function maybeToggleNumCopies(obj) {
             <button id="hold_usr_search" type="button" class="opac-button" style="display: none;">[% l('Patron Search') %]</button>
             [% END %]
             <br />
-            <input type="hidden" id="staff_barcode" 
+            <input type="hidden" id="staff_barcode"
               value="[% ctx.staff_recipient.card.barcode | html %]"/>
             <span>
                 <input type="radio" id="hold_usr_is_requestor"
@@ -140,12 +140,12 @@ function maybeToggleNumCopies(obj) {
                     <input type="hidden" name="hold_target" value="[% hdata.target.id | html %]" />
                     [% END %]
                     <div class='hold-items-list-title'>
-                                           <!-- If hold is for grouped formats/editions (metarecord), show short title - else, show complete title --> 
-                                           [% IF CGI.param('hold_type') == 'M' %]
-                                                   [% attrs.title | html %]
-                                               [% ELSE %]
-                                                   [% attrs.title_extended | html %]
-                                               [% END %]
+                        <!-- If hold is for grouped formats/editions (metarecord), show short title - else, show complete title -->
+                        [% IF CGI.param('hold_type') == 'M' %]
+                            [% attrs.title | html %]
+                        [% ELSE %]
+                            [% attrs.title_extended | html %]
+                        [% END %]
                     </div>
                     [% IF hdata.parts AND !this_hold_disallowed %]
                         [% IF hdata.parts.size > 0 %]
@@ -182,8 +182,8 @@ function maybeToggleNumCopies(obj) {
                         <input type='hidden' name='part' value=''/>
                         [% END %]
                     [% END %]
-                   [% INCLUDE "opac/parts/multi_hold_select.tt2" IF NOT (this_hold_disallowed AND hdata.part_required); %]
-                   
+            [% INCLUDE "opac/parts/multi_hold_select.tt2" IF NOT (this_hold_disallowed AND hdata.part_required); %]
+
                 </td>
             </tr>
 
@@ -200,7 +200,7 @@ function maybeToggleNumCopies(obj) {
             [% END %]
 </table>
         [% END %]
-        
+
 
         [% IF some_holds_allowed %]
 
@@ -208,11 +208,11 @@ function maybeToggleNumCopies(obj) {
             [%- org_select_id = 'pickup_lib'; -%]
             <label for="[% org_select_id %]" class="font-weight-bold">[%l('Pickup location:') %]</label>
             [% PROCESS "opac/parts/org_selector.tt2";
-                INCLUDE build_org_selector name='pickup_lib' 
-                    value=ctx.default_pickup_lib id=org_select_id 
+                INCLUDE build_org_selector name='pickup_lib'
+                    value=ctx.default_pickup_lib id=org_select_id
                     can_have_vols_only=1 hold_pickup_lib=1 %]
         </p>
-  
+
             <span class="font-weight-bold">[% l('Notify when hold is ready for pickup?') %]</span>
             <p>
              <div class="form-check m-2">
@@ -223,10 +223,10 @@ function maybeToggleNumCopies(obj) {
                      [% IF !ctx.user.email and !ctx.is_staff; l('<br>No configured Email address. See "My Account" for setting your Email address.'); ELSE; %] : <span id="email_address"><b>[% ctx.user.email %]</b></span>[% END %]
                 </label>
             </div>
-              
-                   
+
+
                 <p>
-                  
+
                 </p>
                 [%- IF allow_phone_notifications == 'true' %]
                 <div class="form-check m-2">
@@ -235,7 +235,7 @@ function maybeToggleNumCopies(obj) {
                     [% l('Yes, by Phone') %]
                     </label>
                 </div>
-               
+
                 <p>
                     <label>[% l('Phone Number:') %]<input type="text" class="form-control" name="phone_notify" [% setting = 'opac.default_phone';
                     IF ctx.user_setting_map.$setting; %] value='[% ctx.user_setting_map.$setting | html %]'
@@ -263,17 +263,17 @@ function maybeToggleNumCopies(obj) {
                 ELSE;
                     l('Suspend these holds?');
                 END %]
-                  <a href="#" title="[% l('A suspended hold will retain its place in the queue, but will not be fulfilled until it has been activated.') %]" data-toggle="tooltip">
-                    <i class="fas fa-question-circle"></i>
+                  <a href="#" aria-label="[% l('A suspended hold will retain its place in the queue, but will not be fulfilled until it has been activated.') %]" title="[% l('A suspended hold will retain its place in the queue, but will not be fulfilled until it has been activated.') %]" data-toggle="tooltip">
+                    <i class="fas fa-question-circle" aria-hidden="true"></i>
                 </a>
                 </label>
             </div>
                 [% END %]
-           
-          
-               
-              
-                <a class="btn btn-sm btn-action m-2" id="actDateToggle" href="#toggled-block-suspend" onclick="return toggleActivationDate();"><i class="fas fa-calendar"></i> [% l('Set activation date') %]</a>
+
+
+
+
+                <a class="btn btn-sm btn-action m-2" id="actDateToggle" href="#toggled-block-suspend" onclick="return toggleActivationDate();"><i class="fas fa-calendar" aria-hidden="true"></i> [% l('Set activation date') %]</a>
             </div>
             <blockquote id="toggled-block-suspend">
             <label for="thaw_date">[% l('Activate on') %]
@@ -284,9 +284,9 @@ function maybeToggleNumCopies(obj) {
                 </div>
             </div>
             </blockquote>
-        
+
          [% IF CGI.param('from_basket') %]
-        
+
            <div class="form-check m-2">
                     <input class="form-check-input" type="checkbox" value="" id="clear_cart" />
                     <label class="form-check-label" for="clear_cart">
@@ -294,18 +294,18 @@ function maybeToggleNumCopies(obj) {
                     </label>
                 </div>
         [% END %]
-                        [% IF NOT metarecords.disabled AND ctx.hold_data.size == 1 %]
+                 [% IF NOT metarecords.disabled AND ctx.hold_data.size == 1 %]
                         [% IF CGI.param('hold_type') == 'T' AND hdata.record.metarecord AND !hdata.part_required %]
                         <!-- Grab the bre_id so that we can restore it if user accidentally clicks advanced options -->
                            [% bre_id = hdata.target.id %]
-                            <a  id='advanced_hold_link' class="m-2 btn btn-sm btn-primary"
-                                href="[% mkurl('', {hold_type => 'M', hold_target => hdata.record.metarecord.id, bre_id => bre_id}) %]"><i class="fas fa-cog"></i> 
+                            <a  id='advanced_hold_link' class="btn btn-sm btn-link"
+                                href="[% mkurl('', {hold_type => 'M', hold_target => hdata.record.metarecord.id, bre_id => bre_id}) %]"><i class="fas fa-cog" aria-hidden="true"></i>
                                 [% l('Advanced Hold Options') %]</a>
                         [% END %]
                         [% IF CGI.param('hold_type') == 'M' AND CGI.param('bre_id') %]
                             <input type="hidden" name="bre_id" value="[% CGI.param('bre_id') %]" />
-                            <a id='basic_hold_link' class="m-2 btn btn-sm btn-primary"
-                               href="[% mkurl('', {hold_target => CGI.param('bre_id'), hold_type => 'T'}) %]"><i class="fas fa-cog"></i> 
+                            <a id='basic_hold_link' class="btn btn-sm btn-link"
+                               href="[% mkurl('', {hold_target => CGI.param('bre_id'), hold_type => 'T'}) %]"><i class="fas fa-cog" aria-hidden="true"></i>
                                 [% l('Basic Hold Options') %]</a>
                         [% END %]
                         [% IF hdata.metarecord_filters.formats.size OR # should this be size > 1
@@ -316,7 +316,7 @@ function maybeToggleNumCopies(obj) {
         <div class="py-3">
         <button id="place_hold_submit" type="submit" name="submit"  class="btn btn-confirm" ><i class="fas fa-check"></i> [% l('Submit') %]</button>
         [% END # some_holds_allowed %]
-        <button type="reset" name="cancel" onclick="window.location='[% redirect | html %]'" id="holds_cancel" class="btn btn-deny"><i class="fas fa-ban"></i> [% l('Cancel') %]</button>
+        <button type="reset" name="cancel" onclick="window.location='[% redirect | html %]'" id="holds_cancel" class="btn btn-deny"><i class="fas fa-ban" aria-hidden="true"></i> [% l('Cancel') %]</button>
         </div>
     </form>
 </div>
index a32781f..6f2597d 100755 (executable)
@@ -31,7 +31,7 @@ function disable_submit() {
             PROCESS get_marc_attrs args=attrs %]
             <tr>
                 <td>
-                    [% 
+                    [%
                         override = 0;
                         IF hdata.could_override || hdata.hold_local_alert;
                             override_possible = 1;
@@ -39,21 +39,21 @@ function disable_submit() {
                         END;
                     %]
                     [% IF override %]
-                    <input 
+                    <input
                         type="checkbox" name="hold_target" value="[% hdata.target.id | html %]"
-                         checked='checked' />       
-                         [% END %]        
+                         checked='checked' />
+                         [% END %]
                 </td>
                 <td>
-                    
+
                     [% IF hdata.parts %]
                         <input type='hidden' name='part' value='[% hdata.selected_part || '' %]'/>
                     [% END %]
-                   
+
                         [% IF hdata.hold_success %]
 
                        <h5 class="success"><i class="fas fa-check-circle"></i> [% l("Hold was successfully placed for: "); %]</h5>
-                                       [%
+                    [%
                         title = attrs.title_extended;
                         IF hdata.selected_part AND hdata.parts AND hdata.parts.size > 0;
                             FOREACH part IN hdata.parts;
@@ -63,18 +63,18 @@ function disable_submit() {
                             END;
                         END;
                     %]
-                      
+
 
                     <div class='hold-items-list-title'><p>[% title | html %]</p></div>
                     <div>
                         [% IF hdata.frozen %]
-                        
+
                         [% l("Hold is suspended") %]
                         [% IF hdata.thaw_date %]
                         <br/>
                         [% l("Reactivate on [_1]", date.format(ctx.parse_datetime(hdata.thaw_date), DATE_FORMAT));
                            END %]
-                        
+
                         [% END %]
                 </div>
                         [% IF ctx.is_staff %]
@@ -146,17 +146,16 @@ function disable_submit() {
                 [% |l %]You have permission to override some of the failed holds. Click Submit to override and place your hold on the selected items.[% END %]
             </div>
             <span>
-                <button id="place_hold_submit" type="submit" name="submit" class="btn btn-confirm"><i class="fas fa-save"></i> [% l('Submit') %]</button>
+                <button id="place_hold_submit" type="submit" name="submit" class="btn btn-confirm"><i class="fas fa-save" aria-hidden="true"></i> [% l('Submit') %]</button>
             </span>
         [% END %]
-      
-        [% IF any_failures OR ctx.general_hold_error %]
-                  <span><a class="btn btn-confirm" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-arrow-circle-left"></i> [% l('Back To Search') %]</a></span>
 
-        <a class="btn btn-deny" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-times"></i> [% l('Cancel') %]</a>
+        [% IF any_failures OR ctx.general_hold_error %]
+        <span><a class="btn btn-confirm" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-arrow-circle-left" aria-hidden="true"></i> [% l('Back To Search') %]</a></span>
+        <a class="btn btn-deny" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-times" aria-hidden="true"></i> [% l('Cancel') %]</a>
         [% ELSE %]
         <div class='hold_success_links'>
-          <span><a class="btn btn-confirm" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-arrow-circle-left"></i> [% l('Back To Search') %]</a></span>
+          <span><a class="btn btn-confirm" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-arrow-circle-left" aria-hidden="true"></i> [% l('Back To Search') %]</a></span>
            [% IF ctx.is_staff %]
              [% IF CGI.param('hold_type') == 'C';
                   hold_type_label = l('copy');
index 9fe7d9c..951de03 100755 (executable)
@@ -2,6 +2,6 @@
 <span class="preflib">[%
     l('Preferred library: [_1]', '<span class="bold">' _ ctx.get_aou(ctx.pref_ou).name _ '</span>');
     IF NOT ctx.is_staff %]<a href="[% mkurl(ctx.opac_root _ '/myopac/prefs_settings')
-    %]" class="preflib_change" title="[% l("Change preferred library"); %]">[% l('?') %]</a>[% END; %]
+    %]" class="preflib_change" title="[% l("Change preferred library"); %]">[% l('?') %]</a>[% END %]
 </span>
-[%- END; %]
+[%- END %]
index 9e9a2bc..ecb7e0e 100755 (executable)
@@ -13,7 +13,8 @@
     END;
 -%]
 
-<select aria-label="[% l('Select query type:') %]" class="form-control w-100" name="[% name || 'qtype' %]"[% IF id; ' id="'; id ; '"' ; END -%]>
+<select class="form-control w-100" name="[% name || 'qtype' %]"[% IF id; ' id="'; id ; '"' ; END -%]
+    title="[% l('Select query type:') %]">
     [%  query_type = query_type || CGI.param('qtype') || search.default_qtypes.0;
       FOR qt IN query_types;
         NEXT IF browse_only AND NOT qt.browse -%]
index 131e56c..05f640d 100755 (executable)
@@ -1,6 +1,6 @@
-<div class='rdetail_extras_div'> 
+<div class='rdetail_extras_div'>
 
-[% 
+[%
     ac_types = {
         reviews => l('Reviews'),
         anotes  => l('Author Notes'),
     };
 
     selected_type = CGI.param('ac');
-    
+
     # For each type of added content, render the link if it's known to have
-    # content, do not render the link if it's known to not have content.  If 
+    # content, do not render the link if it's known to not have content.  If
     # the content status is unknown, render the link, but hide the link via CSS
     # if dojo is enabled.  If dojo is not enabled, render and display the link.
 %]
 
     <div id='ac_tab_wrapper'>
-    [% 
+    [%
         all_hidden = 1;
         FOR type IN ac_types.keys;
             tab_class = 'ac_tab';
-            SET tab_class = tab_class _ ' ac_tab_selected' IF type == selected_type; 
+            SET tab_class = tab_class _ ' ac_tab_selected' IF type == selected_type;
             IF ctx.added_content.$type.status != '2'; # no content
                 all_hidden = 0;
                 IF ctx.added_content.$type.status == '3' AND want_dojo; # status unknown
@@ -37,8 +37,8 @@
     </div>
 
     <div id='ac_content'>
-        [% 
-            IF selected_type; 
+        [%
+            IF selected_type;
                 content = ctx.added_content.$selected_type.content;
                 IF content;
                     content;
index 25dac9a..3f5243a 100755 (executable)
@@ -1,23 +1,23 @@
-[%-  
+[%-
 
 PROCESS "opac/parts/relators.tt2";
 
 author_cnt = 0;
 authors = [
     {
-        type => 'author', 
+        type => 'author',
         label => l('Author'),
         xpath => '//*[@tag="100"]|//*[@tag="110"]|//*[@tag="111"]'
     }, {
-        type => 'added', 
+        type => 'added',
         label => l('Added Author'),
         xpath => '//*[@tag="700"]|//*[@tag="710"]|//*[@tag="711"]'
     }, {
-        type => 'cast', 
+        type => 'cast',
         label => l('Cast'),
         xpath => '//*[@tag="511"][@ind1="1"]'
     }, {
-        type => 'notes', 
+        type => 'notes',
         label => l('Author Notes: '),
         xpath => '' # Comes from added content...
     }
@@ -111,10 +111,10 @@ BLOCK build_author_links;
             END;
         END;
         url = mkurl(ctx.opac_root _ '/results', {query => qterm.replace('^\s*(.*?)\s*$', '$1'), qtype => 'author'}, stop_parms.merge(expert_search_parms, general_search_parms, browse_search_parms, facet_search_parms));
-       tlabel = tlabels.join(', ');
-       tlabels = [];
+    tlabel = tlabels.join(', ');
+    tlabels = [];
         author_type = (tlabel || label) | html;
-        
+
         # schema.org changes
         IF type == 'author';
             IF tag.substr(1,2) == '10' && args.schema.itemtype && args.schema.itemtype.match('MusicAlbum');
@@ -180,7 +180,7 @@ END;
 
 <div class='rdetail_authors_div'>
 [%- FOREACH author IN authors;
-    NEXT UNLESS author.xpath; 
+    NEXT UNLESS author.xpath;
     authlist = [];
     PROCESS build_author_links(
         xpath=author.xpath, label=author.label, type=author.type
index 1e81833..8422657 100755 (executable)
@@ -1,7 +1,7 @@
-<div class='rdetail_extras_div'> 
+<div class='rdetail_extras_div'>
 
     <!-- Chilifresh patron reviews -->
-    [% IF ENV.OILS_CHILIFRESH_URL %] 
+    [% IF ENV.OILS_CHILIFRESH_URL %]
     <strong>[% l('Patron Reviews:') %]</strong>
     <div style="margin-bottom:20px;">
         <span class="chili_review" id="isbn_[% attrs.isbn_clean | html %]"> </span>
@@ -9,7 +9,7 @@
     </div>
     [% END %]
     <!-- Novelist suggestions-->
-    [% IF ENV.OILS_NOVELIST_URL %] 
+    [% IF ENV.OILS_NOVELIST_URL %]
         <div id='novelist-loading'>
         <h3 class="text-center">[% l('Loading Recommendations...') %]</h3>
             <div class="progress">
@@ -18,6 +18,6 @@
         </div>
         <div data-novelist-novelistselect="[% attrs.isbn_clean || attrs.upc %]"></div>
     [% END %]
-    
+
 </div>
 
index 4e5d6e3..73cf33b 100755 (executable)
@@ -1,26 +1,31 @@
-[% 
+[%
     cnoffset = CGI.param('cnoffset');
     cnoffset = cnoffset.match('^-?\d+$') ? cnoffset : 0; # verify cnoffset is a sane value
 %]
 
 <div class='cn_browser'>
-    <div id='cn_browse_div'> 
+    <div id='cn_browse_div'>
         <p class='color_4 h5'>
             [% l("You are now browsing [_1]", ctx.browsing_ou.name) | html %]
         </p>
-        <br>
-        <table class="w-100">
-                <tr>
-                    <td class="text-left">
-                        <a class='btn btn-action' 
-                            href="[% mkurl('', {cnoffset => cnoffset - 1}) %]#cnbrowse">[% l("&lt;&lt; Previous Page") %]</a>
-                    </td>
-                    <td colspan='1' class="h3 text-center">[% l("Shelf Browser") %]</td>
-                    <td class="text-right">
-                        <a class='btn btn-action' 
-                            href="[% mkurl('', {cnoffset => cnoffset + 1}) %]#cnbrowse">[% l("Next Page &gt;&gt;") %]</a>
-                    </td>
-                </tr>
+
+        <div class="row">
+            <div class="col-3">
+                <a class='np_nav_link classic_link btn btn-outline-primary' href="[% mkurl('', {cnoffset => cnoffset - 1}) %]#cnbrowse">[% l("&lt;&lt; Previous Page") %]</a>
+            </div>
+
+            <div class="col-6 text-center">
+                <h3>[% l("Shelf Browser") %]</h3>
+            </div>
+
+            <div class="col-3 text-right">
+                <a class='np_nav_link classic_link btn btn-outline-primary' href="[% mkurl('', {cnoffset => cnoffset + 1}) %]#cnbrowse">[% l("Next Page &gt;&gt;") %]</a>
+            </div>
+        </div>
+
+        <hr />
+
+        <table class='data_grid bookshelf'>
             <tbody>
             [%- tr_open = 0;
                 PROCESS get_library;
                 <tr class='cn_browse_row'>
                 [% END -%]
                     <td class='cn_browse_item'>
-                       <div class="card">
+                        <div class="card">
                         [%  rec_attrs = {marc_xml => cn.record.marc};
                             PROCESS get_marc_attrs args=rec_attrs; %]
-                        <a href="[% mkurl(ctx.opac_root _ '/record/' _ cn.record.id, {$loc_name => loc_value}, 1) %]"><img height='60' width='50' 
-                            class='cn_browse_info' 
+                        <a href="[% mkurl(ctx.opac_root _ '/record/' _ cn.record.id, {$loc_name => loc_value}, 1) %]"><img height='60' width='50'
+                            class='cn_browse_info'
                             [% img_alt(l('Go to record [_1]', rec_attrs.title)) %]
                             src="[% ctx.media_prefix %]/opac/extras/ac/jacket/small/r/[% cn.record.id | uri %]" /></a>
                         <div class='cn_browse_info bold'>[% cn.label | html %]</div>
index db80b47..883d8e1 100755 (executable)
@@ -157,7 +157,7 @@ contents =  [
     }, {
         label => l('Source of Description Note: '),
         xpath => '//*[@tag="588"]'
-    } 
+    }
 ];
 
 BLOCK render_contents;
index 15b8a70..ab2aa74 100755 (executable)
@@ -27,7 +27,7 @@
        title="[% l('Show copies at [_1]', ou_name) | html; %]">
        [%- l('(Show)'); %]</a>
     [%- END; %]
-    </li> 
+    </li>
     [%- depth = depth + 1;
         END;
 
index 38f1295..0432fff 100755 (executable)
@@ -65,7 +65,7 @@ IF has_copies or ctx.foreign_copies;
         <ul><li>
             <span class="bib_peer_type">[% bib.peer_type.name | html %]</span>:
             <a href="[% mkurl(ctx.opac_root _ '/record/' _ bib.target_copy.call_number.record) %]">
-                <span class="bib_peer_title">[% peer.title | html %]</span> / 
+                <span class="bib_peer_title">[% peer.title | html %]</span> /
                 <span class="bib_peer_author">[% peer.author | html %]</span>
             </a>
         </li></ul>
@@ -104,8 +104,8 @@ END; # FOREACH bib
                 <link property="businessFunction" href="http://purl.org/goodrelations/v1#LeaseOut">
                 <meta property="price" content="0.00">
             </td>[% END %]
-            <td><span property="sku">[% callnum | html %]</span> [% IF ctx.get_org_setting(CGI.param('loc') 
-                OR ctx.aou_tree.id, 'sms.enable') == 1 %](<a href="[% mkurl(ctx.opac_root _ '/sms_cn', 
+            <td><span property="sku">[% callnum | html %]</span> [% IF ctx.get_org_setting(CGI.param('loc')
+                OR ctx.aou_tree.id, 'sms.enable') == 1 %](<a href="[% mkurl(ctx.opac_root _ '/sms_cn',
                {copy_id => copy_info.id}) %];rec=[%- ctx.bre_id -%]" rel="nofollow" vocab="">Text</a>)[% END %]</td>
             [%- IF has_parts == 'true' %]
             <td>[% copy_info.part_label | html %]</td>
@@ -115,7 +115,7 @@ END; # FOREACH bib
                 [% IF ctx.is_staff %]
                   [%- IF ctx.is_browser_staff %]
                     <a target="_blank" href="[% ctx.base_path %]/staff/cat/item/[% copy_info.id %]">[% l('view') %]</a>
-                    [% IF ctx.has_perm('UPDATE_COPY', copy_info.circ_lib) 
+                    [% IF ctx.has_perm('UPDATE_COPY', copy_info.circ_lib)
                         OR ctx.has_perm('UPDATE_COPY', copy_info.call_number_owning_lib) %]
                         <span> | </span>
                         <a target="_blank" href="[% ctx.base_path %]/staff/cat/item/[% copy_info.id %]/edit">[% l('edit') %]</a>
@@ -124,10 +124,10 @@ END; # FOREACH bib
                     <a onclick="xulG.new_tab(xulG.urls.XUL_COPY_STATUS, {}, {'from_item_details_new': true, 'barcodes': ['[%- copy_info.barcode | html | replace('\'', '\\\'') -%]']})"
                         href="javascript:;">[% l('view') %]</a>
                     [%# if the user can edit copies, show the copy edit link %]
-                    [% IF ctx.has_perm('UPDATE_COPY', copy_info.circ_lib) 
+                    [% IF ctx.has_perm('UPDATE_COPY', copy_info.circ_lib)
                         OR ctx.has_perm('UPDATE_COPY', copy_info.call_number_owning_lib) %]
                         <span> | </span>
-                        <a href="javascript:;" 
+                        <a href="javascript:;"
                             onclick="xulG.volume_item_creator({copy_id : [% copy_info.id %]})">
                             [% l(' edit') %]
                         </a>
@@ -145,13 +145,13 @@ END; # FOREACH bib
                 [% copy_info.age_protect ?
                     ctx.get_crahp(copy_info.age_protect).name : l('None') | html %]
             </td>
-            <td>[% 
+            <td>[%
                 IF ctx.get_org_setting(copy_info.circ_lib, 'circ.holds.age_protect.active_date') == 1;
                     disp_date = copy_info.active_date ? copy_info.active_date : copy_info.create_date;
                 ELSE;
                     disp_date = copy_info.create_date;
                 END;
-           
+
                 IF disp_date;
                     date.format(
                         ctx.parse_datetime(disp_date),
@@ -175,7 +175,7 @@ END; # FOREACH bib
                     param_sep = l(" / ");
 
                     # Only staff get to place copy or volume holds
-                    IF ctx.is_staff; 
+                    IF ctx.is_staff;
                         hold_link = '<a href="' _
                             mkurl(ctx.opac_root _ '/place_hold', {
                                 hold_target => copy_info.id,
@@ -183,7 +183,7 @@ END; # FOREACH bib
                                 hold_source_page => mkurl()
                             }) _ '">' _ l('Copy hold') _ '</a>';
                         IF copy_info.call_number != last_cn;
-                            last_cn = copy_info.call_number; 
+                            last_cn = copy_info.call_number;
                             hold_link = hold_link _ param_sep;
                             hold_link = hold_link _ '<a href="' _
                                 mkurl(ctx.opac_root _ '/place_hold', {
@@ -195,8 +195,8 @@ END; # FOREACH bib
                         IF serial_holdings;
                             hold_link = hold_link _ param_sep;
                         END;
-                    END; 
-                    IF serial_holdings; 
+                    END;
+                    IF serial_holdings;
                         hold_link = hold_link _
                             '<a class="rdetail-issue-place-hold" href="' _
                             mkurl(ctx.opac_root _ '/place_hold', {
@@ -204,10 +204,10 @@ END; # FOREACH bib
                                 hold_type => 'I',
                                 hold_source_page => mkurl()
                             }) _ '" rel="nofollow" vocab="">' _ l('Issue hold') _ '</a>';
-                    END; 
+                    END;
 
                     hold_link;
-                ELSE; 
+                ELSE;
                     l("Not holdable");
                 END %]</td>
             [%- END %]
@@ -274,46 +274,44 @@ END; # FOREACH bib
 
 [%- END; # FOR copy_info
 %]
-               [%- IF ctx.copy_offset > 0 AND NOT serial_holdings;
-            new_offset = ctx.copy_offset - ctx.copy_limit; 
+        [%- IF ctx.copy_offset > 0 AND NOT serial_holdings;
+            new_offset = ctx.copy_offset - ctx.copy_limit;
             IF new_offset < 0; new_offset = 0; END %]
         [%- IF copies.size >= ctx.copy_limit AND NOT serial_holdings AND (ctx.copy_offset + ctx.copy_limit < total_copies) %]
-               <tr class="offset">
-               [%- IF ctx.copy_offset > 0 AND NOT serial_holdings;
-               new_offset = ctx.copy_offset - ctx.copy_limit;
-               IF new_offset < 0; new_offset = 0; END %]
-               <td>
+            <tr class="offset">
+            [%- IF ctx.copy_offset > 0 AND NOT serial_holdings;
+                new_offset = ctx.copy_offset - ctx.copy_limit;
+                IF new_offset < 0; new_offset = 0; END %]
+                <td>
                 <a href="[% mkurl('', {copy_offset => new_offset, copy_limit => ctx.copy_limit}) %]">&laquo; [%
                     l('Previous [_1]', ctx.copy_offset - new_offset) %]</a>
-               </td>
-               [%- END %]
-               [%- IF copies.size >= ctx.copy_limit AND NOT serial_holdings AND (ctx.copy_offset + ctx.copy_limit < total_copies) %]
-               <td>
-                       <a href="[% mkurl('', {copy_offset => ctx.copy_offset + ctx.copy_limit, copy_limit => ctx.copy_limit}) %]">[%
+                </td>
+            [%- END %]
+            [%- IF copies.size >= ctx.copy_limit AND NOT serial_holdings AND (ctx.copy_offset + ctx.copy_limit < total_copies) %]
+                <td>
+                    <a href="[% mkurl('', {copy_offset => ctx.copy_offset + ctx.copy_limit, copy_limit => ctx.copy_limit}) %]">[%
                     l('Next [_1]', ctx.copy_limit) %] &raquo;</a>
-               </td>
-               [%- END %]
+                </td>
+            [%- END %]
             </tr>
         [%- END %]
         [%- END %]
         [% IF NOT serial_holdings && ctx.copy_limit < total_copies -%]
-               <tr class="not_serial">
-               <td>
-                       [%- more_copies_limit = 50 %] [%# TODO: config %]
-                       [%- IF  ctx.copy_limit != more_copies_limit AND copies.size >= ctx.copy_limit AND ctx.copy_limit < total_copies %]
-                       <div class="rdetail_show_copies">
-                               <img src="[% ctx.media_prefix %]/images/plus_sign.png[% ctx.cache_key %]" alt="[% l('Show more copies icon') %]"/>
-                               <a href="[% mkurl('', {copy_limit => more_copies_limit, copy_offset => 0}) %]">[% l('Show more copies') %]</a>
-                       </div>
-                       [%- ELSIF ctx.copy_limit == more_copies_limit %]
-                       <div  class="rdetail_show_copies">
-                               <img src="[% ctx.media_prefix %]/images/minus_sign.png[% ctx.cache_key %]" alt="[% l('Show fewer copies icon') %]"/>
-                               <a href="[% mkurl('', {copy_limit => 0, copy_offset => 0}) %]">[% l('Show fewer copies') %]</a>
-                       </div>
-                       [%- END %]
-               </td>
-               </tr>
-               [%- END %]
+            <tr class="not_serial">
+                <td>
+                    [%- more_copies_limit = 50 %] [%# TODO: config %]
+                    [%- IF  ctx.copy_limit != more_copies_limit AND copies.size >= ctx.copy_limit AND ctx.copy_limit < total_copies %]
+                        <div class="rdetail_show_copies">
+                            <a href="[% mkurl('', {copy_limit => more_copies_limit, copy_offset => 0}) %]"><i class="fas fa-plus-square"></i> [% l('Show more copies') %]</a>
+                        </div>
+                    [%- ELSIF ctx.copy_limit == more_copies_limit %]
+                        <div  class="rdetail_show_copies">
+                            <a href="[% mkurl('', {copy_limit => 0, copy_offset => 0}) %]"><i class="fas fa-minus-square"></i> [% l('Show fewer copies') %]</a>
+                        </div>
+                    [%- END %]
+                </td>
+            </tr>
+            [%- END %]
     </tbody>
 </table>
-[% END; %]
+[% END %]
index 6af8516..48f246a 100755 (executable)
@@ -3,7 +3,7 @@
     arrow_down = '&#9660;';
 %]
 <div>
-    <div id='rdetail_extras_div' class="card-columns row" style='width: 100%;'> 
+    <div id='rdetail_extras_div' class="card-columns row" style='width: 100%;'>
         [%
             IF ctx.google_books_preview;
                 label = l('Google Preview');
@@ -30,8 +30,8 @@
         IF attrs.summaries.0; hide_summary = 0; ELSE;
             # Expose content cafe if it's reasonable to do so.
             # This approach only works when using embedded content cafe.
-            IF ENV.OILS_CONTENT_CAFE_USER; 
-                ident = attrs.isbn_clean || attrs.upc; 
+            IF ENV.OILS_CONTENT_CAFE_USER;
+                ident = attrs.isbn_clean || attrs.upc;
                 IF ident; hide_summary = 0; END;
             END;
         END;
         END;
 
         extras = [
-               {name => 'summaryplus',  label => l('Summaries & More'), hide => hide_summary},
-            {name => 'annotation', label => l('Annotation'), hide => 1}, 
-            {name => 'awards',  label => l('Awards, Reviews, & Suggested Reads')}, 
+            {name => 'summaryplus',  label => l('Summaries & More'), hide => hide_summary},
+            {name => 'annotation', label => l('Annotation'), hide => 1},
+            {name => 'awards',  label => l('Awards, Reviews, & Suggested Reads')},
             {name => 'excerpt',  label => l('Excerpt'), hide => 1},
             {name => 'issues',   label => l('Issues Held'), hide => !(ctx.have_holdings_to_show || ctx.have_mfhd_to_show)},
-            {name => 'preview',  label => l('Preview'), hide => 1}, 
+            {name => 'preview',  label => l('Preview'), hide => 1},
             {name => 'addedcontent',  label => l('Additional Content'), hide => hide_ac},  # hide if all content is known to not exist
             {name => 'cnbrowse', label => l('Shelf Browser')},
             {name => 'marchtml', label => l('MARC Record')}
         ];
 
         FOREACH extra IN extras;
-            IF extra.hide; NEXT; END; 
+            IF extra.hide; NEXT; END;
             name = extra.name;
         %]
         <div class="card border-secondary col-12 p-0">
-         [%  
+         [%
                     IF tab_is_active(name);
                         href = mkurl('', {}, ['expand', 'ac']);
                         arrow = arrow_down;
                     ELSE;
                         IF name == 'addedcontent' AND default_ac;
-                            href = mkurl('', {expand => name, ac => default_ac}) _ '#' _ name; 
+                            href = mkurl('', {expand => name, ac => default_ac}) _ '#' _ name;
                         ELSE;
-                            href = mkurl('', {expand => name}) _ '#' _ name; 
+                            href = mkurl('', {expand => name}) _ '#' _ name;
                         END;
                         arrow = arrow_right;
                     END;
                 %]
             <a id='[% name %]' href='[% href %]' class="text-white" rel="nofollow" vocab="" style="text-decoration:none;">
            <div class="card-header extra_header">
-               
+
                 <span>[% arrow %] [% extra.label | html %]</span>
+                </a>
             </div>
-            </a> 
             [%  IF tab_is_active(name); %]
             <div class='card-body'>
-                
+
                     [% IF name == 'marchtml';
                         ctx.marchtml;
                     ELSE;
@@ -98,7 +98,7 @@
                     END;
                     -%]
                 </div>
-                [% END; %]
+                [% END %]
             </div>
         [% END %]
     </div>
index bd6bb97..37d1f94 100755 (executable)
@@ -36,7 +36,7 @@
                 <tr>
                     <td class="rdetail-mfhd-foot" colspan="2"> </td>
                 </tr>
-            [% END; %]
+            [% END %]
         [% END %]
         </tbody></table>
     </div>
index ce85b68..c1fe478 100755 (executable)
@@ -1,13 +1,12 @@
 [% IF ctx.search_result_index.defined && ctx.search_result_index >= 0 %]
-<div class="row pt-2">
-    
-    
+<div class="col pt-2">
+    <div class="row">
     <div class="col-3">
-       <div>
+        <div>
         [%
             IF ctx.prev_search_record;
                 prev_args = {};
-                IF ctx.search_page > 0 AND 
+                IF ctx.search_page > 0 AND
                         ctx.search_result_index % ((ctx.page_size * ctx.search_page)) == 0; # first record in the page
                     prev_args.page = ctx.search_page - 1;
                 END;
             href='[% ctx.prev_rec_url %]'><span class="nav_arrow_fix">&#9668;</span> <span class="d-none d-md-inline-block">[% l('Previous') %]</span></a>
         [% END %]
         </div>
-       </div>
+    </div>
     <div class="col-6 text-center">
-       <span>
-               <a class="btn btn-confirm" href='[% mkurl(ctx.opac_root _ '/results', {}, stop_parms); %]#result[% ctx.bre_id %]'>[% l('Back To Results') %]</a>
-               <!-- stash these in JS for the web staff client to find -->
-               <script>
-               window.search_result_hit_count = [% ctx.hit_count %];
-               window.search_result_index = [% ctx.search_result_index %];
-               </script>
-       </span>
+        <span>
+            <a class="btn btn-confirm" href='[% mkurl(ctx.opac_root _ '/results', {}, stop_parms); %]#result[% ctx.bre_id %]'>[% l('Back To Results') %]</a>
+            <!-- stash these in JS for the web staff client to find -->
+            <script>
+                window.search_result_hit_count = [% ctx.hit_count %];
+                window.search_result_index = [% ctx.search_result_index %];
+            </script>
+        </span>
         <br>
         <span>
-               [% l('Showing Item [_1] of [_2]', ctx.search_result_index + 1, ctx.hit_count) %]
+                [% l('Showing Item [_1] of [_2]', ctx.search_result_index + 1, ctx.hit_count) %]
         </span>
         <br>
         <span>
-               [%- INCLUDE "opac/parts/pref_lib_display.tt2" %]
+            [%- INCLUDE "opac/parts/pref_lib_display.tt2" %]
         </span>
-        
+
     </div>
     <div class="col-3 text-right">
-       <div>
-        [% 
+        <div>
+        [%
             IF ctx.next_search_record;
                 next_args = {};
                 IF (ctx.page_size * (ctx.search_page + 1)) == ctx.search_result_index + 1;
@@ -50,7 +49,8 @@
         <a class='np_nav_link classic_link btn btn-action' title='[% l("Next Record") %]'
             href='[% ctx.next_rec_url %]'><span class="d-none d-md-inline-block">[% l('Next') %]</span> <span class="nav_arrow_fix">&#9658;</span></a>
         [% END %]
-               </div>
+        </div>
+    </div>
     </div>
 </div>
 [% END %]
index b8775c7..240c43c 100755 (executable)
@@ -6,13 +6,13 @@
     ou_name = ctx.get_aou(loc).name | uri;
 
     # Generate the gross RefWorks URL, based on parameters from config.tt2
-    rw_uri = ctx.refworks.url _ 
+    rw_uri = ctx.refworks.url _
         '/express/expressimport.asp?vendor=' _
         ou_name _
         '&filter=MARC+Format&database=All+MARC+Formats&' _
         'encoding=65001&url=http%3A%2F%2F' _
-        CGI.server_name _ 
-        '/opac/extras/supercat/marctxt/record/' _ 
+        CGI.server_name _
+        '/opac/extras/supercat/marctxt/record/' _
         ctx.bre_id;
 %]
 <div class="rdetail_aux_utils rdetail_refworks">
index b9b8f4e..c689457 100755 (executable)
@@ -1,5 +1,5 @@
-[%- 
-    series_tags = ['440', '490', '800', '810', '811', '830', '694']; 
+[%-
+    series_tags = ['440', '490', '800', '810', '811', '830', '694'];
     loc = ctx.search_ou;
 
 BLOCK render_series;
@@ -8,7 +8,7 @@ BLOCK render_series;
     hl_field = attrs.hl_field;
         FOREACH s IN attrs.hl_display_fields.series_title;
             search_term = s.value.replace('[#"^$\+\-,\.:;&|\[\]()]', ' ').replace('\s+$', '') | html;
-    
+
             url = mkurl(ctx.opac_root _ '/results',
                 { qtype=>'series', query=>search_term }, stop_parms.merge(expert_search_parms, general_search_parms, browse_search_parms, facet_search_parms)
             );
@@ -34,7 +34,7 @@ BLOCK render_series;
                     single_term = subfield.textContent | html;
                     all_terms.push(subfield.textContent.replace('[#"^$\+\-,\.:;&|\[\]()]', ' '));
                     total_term = all_terms.join(" ").replace('\s+$', '');
-    
+
                     url = mkurl(ctx.opac_root _ '/results',
                         { qtype=>'series', query=>total_term }, stop_parms.merge(expert_search_parms, general_search_parms, browse_search_parms, facet_search_parms)
                     );
@@ -46,7 +46,7 @@ BLOCK render_series;
                 END;
                 results.push(series);
             END;
-        END; 
+        END;
     END;
     FOR entry IN results;
     -%]
index f987125..7f0f58e 100755 (executable)
@@ -1,4 +1,4 @@
-[% 
+[%
     subjects = [
         {
             display_field => 'subject',
                     </tr>
                 </tbody>
             </table>
-[%          
+[%
         ELSE;
             content = PROCESS render_subject(s=subj);
             IF content.match('\S');
index 496af04..c433c76 100755 (executable)
@@ -49,7 +49,7 @@ ctx.metalinks.push('
 
 
 
-           
+
         </div>
     </div>
 
@@ -71,7 +71,7 @@ ctx.metalinks.push('
                 [%- INCLUDE "opac/parts/record/authors.tt2" %]
                 <div>
                     <button id="btnMore" data-toggle="collapse" data-target="#demo"
-                        class="btn btn-action text-left btn-sm my-3"><i class="fas fa-info-circle"></i> More Details</button>
+                        class="btn btn-action btn-sm my-3"><i class="fas fa-info-circle" aria-hidden="true"></i> More Details</button>
                     <div id="demo" class="collapse">
                         <h2 id='rdetail_record_details'>[% l("Record details") %]</h2>
                         <ul class="list-unstyled">
@@ -315,13 +315,13 @@ ctx.metalinks.push('
                         </div>
 
                     </div>
-                    
+
                 </div>
                 <script>jQuery('#demo').on('hidden.bs.collapse', function () {
-                        jQuery('#btnMore').html("<i class='fas fa-info-circle'></i> More Details");
+                        jQuery('#btnMore').html("<i class='fas fa-info-circle' aria-hidden='true'></i> More Details");
                     })
                     jQuery('#demo').on('shown.bs.collapse', function () {
-                        jQuery('#btnMore').html("<i class='fas fa-info-circle'></i> Less Details");
+                        jQuery('#btnMore').html("<i class='fas fa-info-circle' aria-hidden='true'></i> Less Details");
                     })
                     </script>
 
@@ -340,81 +340,81 @@ ctx.metalinks.push('
             </div>
             <!--rdetail_title_div-->
 
-            <div class="col-lg-4 text-right">
-             <div class="mx-auto btn-group btn-group-vertical text-left dropright mt-3">
+            <div class="col-lg-4">
+             <div id="actions" class="mx-auto btn-group btn-group-vertical dropright mt-3">
                 [%- search_ou = ctx.search_ou;
                 IF ctx.place_unfillable ||
                 ( attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size
                 && (ctx.holds_block.enabled != 'true' || !attrs.org_copy_counts.$search_ou.available)
                 )
                 %]
-                <div class="btn btn-action text-left">
-                    <a href="[% mkurl(ctx.opac_root _ '/place_hold', 
+                <div class="btn btn-action">
+                    <a href="[% mkurl(ctx.opac_root _ '/place_hold',
                     {hold_target => ctx.bre_id, hold_type => 'T', hold_source_page => mkurl()}, stop_parms) %]"
                         class="no-dec">
-                        <span class="place_hold"><i class="fas fa-check"></i> [% l('Place Hold') %]</span></a>
+                        <span class="place_hold"><i class="fas fa-check" aria-hidden="true"></i> [% l('Place Hold') %]</span></a>
                 </div>
                 [%- END -%]
 
                 [%- IF ebook_api.enabled == 'true' && args.ebook %]
-                <div class="btn btn-action text-left">
+                <div class="btn btn-action">
                     <div id="[%- ctx.bre_id -%]_ebook_checkout" class="rdetail_aux_utils ebook_action hidden">
                         <a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_checkout',
                     {title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'checkout'}, stop_parms) %]"
                             class="no-dec" rel="nofollow" vocab="">
-                            <span class="place_hold"><i class="fas fa-check"></i> [% l('Check Out E-Item') %]</span></a>
+                            <span class="place_hold"><i class="fas fa-check" aria-hidden="true"></i> [% l('Check Out E-Item') %]</span></a>
                     </div>
                 </div>
-                <div class="btn btn-action text-left">
+                <div class="btn btn-action">
                     <div id="[%- ctx.bre_id -%]_ebook_place_hold" class="rdetail_aux_utils ebook_action hidden">
                         <a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_place_hold',
                     {title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'place_hold'}, stop_parms) %]"
                             class="no-dec" rel="nofollow" vocab="">
-                            <span class="place_hold"><i class="fas fa-check"></i> [% l('Place Hold on E-Item') %]</span></a>
+                            <span class="place_hold"><i class="fas fa-check" aria-hidden="true"></i> [% l('Place Hold on E-Item') %]</span></a>
                     </div>
                 </div>
                 [%- END -%]
 
 
-                <div class="btn btn-action text-left">
+                <div class="btn btn-action">
                     [% operation = ctx.mylist.grep('^' _ ctx.bre_id _ '$').size ? "delete" : "add";
                     addhref = mkurl(ctx.opac_root _ '/mylist/add', {record => ctx.bre_id}, stop_parms);
                     delhref = mkurl(ctx.opac_root _ '/mylist/delete', {record => ctx.bre_id}, stop_parms);
                     label = (operation == "add") ? l("Add to Basket") : l("Remove from Basket");
                     %]
-                    <a href="[% addhref %]" id="mylist_add_[% ctx.bre_id %]" 
+                    <a href="[% addhref %]" id="mylist_add_[% ctx.bre_id %]"
                         data-recid="[% ctx.bre_id %]" data-action="add"
                         class="no-dec mylist_action [% IF ctx.mylist.grep('^' _ ctx.bre_id _ '$').size %]hidden[% END %]"
                         title="[% l(" Add [_1] to basket", attrs.title) %]" rel="nofollow" vocab="">
-                        <i class="fas fa-shopping-basket"></i>
+                        <i class="fas fa-shopping-basket" aria-hidden="true"></i>
                         [% l("Add to basket") %]
                     </a>
-                    <a href="[% delhref %]" id="mylist_delete_[% ctx.bre_id %]" 
+                    <a href="[% delhref %]" id="mylist_delete_[% ctx.bre_id %]"
                         data-recid="[% ctx.bre_id %]" data-action="delete"
                         class="mylist_action [% IF !ctx.mylist.grep('^' _ ctx.bre_id _ '$').size %]hidden[% END %]"
                         title="[% l(" Remove [_1] from basket", attrs.title) %]" rel="nofollow" vocab="">
-                        <i class="fas fa-minus-circle"></i>
+                        <i class="fas fa-minus-circle" aria-hidden="true"></i>
                         [% l("Remove from basket") %]
                     </a>
                 </div>
                 [% IF ctx.mylist.size %]
-                <div class="btn btn-action text-left">
+                <div class="btn btn-action">
                     [%- IF ctx.user; %]
-                    <a href="[% mkurl(ctx.opac_root _ '/myopac/lists') %]" class="no-dec" rel="nofollow" vocab=""><i class="fas fa-glasses"></i> [% l(' View Basket') %]</a>
+                    <a href="[% mkurl(ctx.opac_root _ '/myopac/lists') %]" class="no-dec" rel="nofollow" vocab=""><i class="fas fa-glasses" aria-hidden="true"></i> [% l(' View Basket') %]</a>
                     [%- ELSE %]
-                    <a href="[% mkurl(ctx.opac_root _ '/mylist') %]" class="no-dec" rel="nofollow" vocab=""><i class="fas fa-glasses"></i> [% l(' View My Basket') %]</a>
+                    <a href="[% mkurl(ctx.opac_root _ '/mylist') %]" class="no-dec" rel="nofollow" vocab=""><i class="fas fa-glasses" aria-hidden="true"></i> [% l(' View My Basket') %]</a>
                     [%- END %]
                 </div>
                 [% END %]
-                
+
                 [% IF !ctx.is_staff %]
                     [% IF ctx.user; %]
                     [% INCLUDE "opac/parts/bookbag_actions.tt2"; %]
-                    [% END; %]
+                    [% END %]
                 [% END %]
-                
-                <div class="btn btn-action text-left">
-                    <i class="fas fa-envelope-open-text"></i>
+
+                <div class="btn btn-action">
+                    <i class="fas fa-envelope-open-text" aria-hidden="true"></i>
                     <a href="[% mkurl(ctx.opac_root _ '/record/print/' _ ctx.bre_id) %]" class="no-dec" rel="nofollow"
                         vocab="">[% l('Print') %]</a> /
                     <a href="[% mkurl(ctx.opac_root _ '/record/email/' _ ctx.bre_id) %]" class="no-dec" rel="nofollow"
@@ -424,47 +424,47 @@ ctx.metalinks.push('
                 [%- INCLUDE 'opac/parts/record/refworks.tt2' %]
                 [%- END %]
                 [% IF !ctx.is_staff %]
-                <div class="btn btn-action text-left">
+                <div class="btn btn-action">
                     <a href="[% mkurl('', {locg =>CGI.param('locg'), copy_depth =>CGI.param('copy_depth')}, 1) %]"
                         class="no-dec">
-                        <i class="fas fa-link"></i>
+                        <i class="fas fa-link" aria-hidden="true"></i>
                         [% l('Permalink') %]
                     </a>
                 </div>
                 [% END %]
                 [% IF !search.no_highlight %]
-                <div class="btn btn-action text-left">
+                <div class="btn btn-action">
                     [% IF CGI.param('no_highlight') %]
                     <a href="[% mkurl('', {}, ['no_highlight']) %]" class="no-dec">
                         [% ELSE %]
                         <a href="[% mkurl('', {no_highlight => '1'}) %]" class="no-dec">
                             [% END %]
-                            <i class="fas fa-highlighter"></i>
+                            <i class="fas fa-highlighter" aria-hidden="true"></i>
                             [% CGI.param('no_highlight') ? l('Enable Highlighting') : l('Disable Highlighting') %]
                         </a>
                 </div>
                 [% END %]
                 [%- IF ctx.is_staff %]
-                <div class="btn btn-action text-left">
+                <div class="btn btn-action">
                     <a href="[% ctx.media_prefix %]/opac/extras/ac/clearcache/all/r/[% ctx.bre_id | uri %]"
                         class="no-dec" target="_blank">
-                        <i class="fas fa-sync-alt"></i>
+                        <i class="fas fa-sync-alt" aria-hidden="true"></i>
                         [% l('Clear Added Content Cache') %]
                     </a>
                 </div>
                 [%- END %]
-                
+
             </div>
-            
+
         </div>
     </div>
 </div>
 </div>
 <div class="row">
 <div class="col-12">
-        
+
 <div class="float-right">
-                      
+
                             <h2 class="text-right">[% l('Holds') %]</h2>
                             <p class="text-right">
                                 [%
@@ -482,7 +482,7 @@ ctx.metalinks.push('
                                 ctx.record_hold_count, ctx.copy_summary.$count_entry.count)
                                 %]
                             </p>
-                        
+
                     </div>
 
         [%-
index 23e21ea..1ca1784 100755 (executable)
@@ -1,4 +1,4 @@
-<div class='rdetail_extras_div'> 
+<div class='rdetail_extras_div'>
     [%- IF attrs.summary %]
     <div class='rdetail-extras-summary'>
         <strong>[% l('Summary: ') %]</strong>
@@ -11,8 +11,8 @@
     [%- IF ENV.OILS_CONTENT_CAFE_USER %]
     <!-- Embedded content cafe iframe -->
     [% ident = attrs.isbn_clean || attrs.upc %]
-    <iframe width="100%" height="400" frameborder="0" 
-        src="[% ctx.ext_proto %]://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=[%- 
+    <iframe width="100%" height="400" frameborder="0"
+        src="[% 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" >
     </iframe>
     [%- END %]
index 7f21117..39a4207 100755 (executable)
@@ -34,7 +34,7 @@ FOR filter IN ctx.query_struct.filters;
              </div>
               <a class="button remove_filter btn btn-deny btn-sm"
               title="[% l('Remove [_1] filter', (crad.description || crad.label)) %]"
-              aria-label="[% l('Remove [_1] filter', (crad.description || crad.label)) %]" 
+              aria-label="[% l('Remove [_1] filter', (crad.description || crad.label)) %]"
               href="[% mkurl('', {}, [remove_filter]) %]" rel="nofollow" vocab=""><span class="text-white">&times;</span> </a>
             </div>
            </div>
@@ -58,7 +58,7 @@ FOR filter IN ctx.query_struct.filters;
               title="[% l('Remove location filter') %]"
               href="[% mkurl('', {}, ['fi:locations']) %]" rel="nofollow" vocab=""> <span class="text-white">×</span></a>
       </div>
-    </div> 
+    </div>
 [%- END; # IF locations -%]
 
 [%- IF pubdate_filters.grep('^' _ filter.name _ '$').size;
index dc8aab7..b198400 100755 (executable)
@@ -26,7 +26,7 @@
     org_unit = ctx.get_aou(attrs.plib_copy_counts.$depth.org_unit);
     ou_name = org_unit.name;
     UNLESS displayed_ous.exists(ou_name);
-    
+
 %]
 [%- IF attrs.plib_copy_counts.$depth.count > 0 AND (
         hiding_disabled OR ctx.org_within_hiding_scope(org_unit.id)) %]
index 30646dc..be1338f 100755 (executable)
@@ -1,6 +1,6 @@
 <div class="container-fluid my-3">
 <div class="facet_box_wrapper row">
-[% 
+[%
 
 long_facets = CGI.param('long_facet') || [];
 selected_facets = CGI.param('facet') || [];
@@ -14,16 +14,16 @@ DEFAULT_DISPLAY_COUNT = facet.default_display_count || 5;
 
 IF facet.display;
 
-    # facet display configuration present.  Traverse the 
-    # configuration lists, find the matching facets from 
-    # search facet data, and append them to the sorted 
+    # facet display configuration present.  Traverse the
+    # configuration lists, find the matching facets from
+    # search facet data, and append them to the sorted
     # list of facets.
 
     FOR display_chunk IN facet.display;
         FOR display_field IN display_chunk.facet_order;
             # find the matching facet in the facet data
             FOR facet IN ctx.search_facets.values;
-                IF facet.cmf.field_class == display_chunk.facet_class 
+                IF facet.cmf.field_class == display_chunk.facet_class
                         AND facet.cmf.name == display_field;
                     sorted_facets.push(facet);
                 END;
@@ -31,17 +31,17 @@ IF facet.display;
         END;
     END;
 
-ELSE; 
+ELSE;
 
     # No facet display configuration is present.
     # show all facets, sorted by name.
 
     # collect facet type labels for easier sorting
-    labels = []; 
+    labels = [];
     FOR facet IN ctx.search_facets.values;
         labels.push(facet.cmf.label);
     END;
-    
+
     # We used to do a sort here, but now that's handled in EGCatLoader.
     sorted_facets = ctx.search_facets.values;
 END;
@@ -57,7 +57,7 @@ FOR facet IN sorted_facets;
     <div id="facets" class="col-xs-12 col-sm-12 col-md-6 col-lg-3">
     <div class="card">
         <div class="card-header">
-               <h4 class="title text-center">[% facet.cmf.label %]</h4>
+            <h4 class="title text-center">[% facet.cmf.label %]</h4>
             <span class="float-right">
                 [% IF long_facets.grep(long_key).0;
                     new_long = [];
@@ -76,7 +76,7 @@ FOR facet IN sorted_facets;
                       [% l("Fewer") %]
                     </a>
                 [% ELSIF facet.data.size > DEFAULT_DISPLAY_COUNT %]
-                    <a class="button" 
+                    <a class="button"
                       title="[% l('Show More [_1] Entries', facet.cmf.label) %]"
                       href="[% mkurl('', {long_facet => long_facets.merge([long_key])}) %]#facets" rel="nofollow" vocab="">
                       [% l("More") %]
@@ -92,8 +92,8 @@ FOR facet IN sorted_facets;
                 new_facets = [];
                 this_selected = 0;
                 FOR selected IN selected_facets;
-                    IF selected == param_string; 
-                        this_selected = 1; 
+                    IF selected == param_string;
+                        this_selected = 1;
                     ELSE;
                         new_facets.push(selected);
                     END;
@@ -109,9 +109,9 @@ FOR facet IN sorted_facets;
                 display_count_by_cmf.$fid = display_count_by_cmf.$fid + 1;
 
                 IF this_selected;
-                    # This facet is already selected by the user. 
+                    # This facet is already selected by the user.
                     # Link removes the facet from the set of selected facets.
-                %] 
+                %]
                     <div class="facet_template facet_template_selected">
                         <div class="facet">
                             [% IF new_facets.size == 0 %]
@@ -126,9 +126,9 @@ FOR facet IN sorted_facets;
                         </div>
                         <div class="count">([% facet_data.count; IF facet_data.count == (ctx.superpage + 1) * ctx.superpage_size; '+'; END %])</div>
                     </div>
-                [% 
+                [%
                     ELSE;
-                    # This facet is not currently selected.  If selected, 
+                    # This facet is not currently selected.  If selected,
                     # append this facet to the list of currently active facets.
                 %]
                     <div class="facet_template">
@@ -141,7 +141,7 @@ FOR facet IN sorted_facets;
                         </div>
                         <div class="count">([% facet_data.count %])</div>
                     </div>
-                    
+
                 [% END %]
             [% END %]
             </div>
index 5e39a1e..f38cbdc 100755 (executable)
@@ -1,6 +1,6 @@
 <div class="container-fluid my-3">
 <div class="facet_box_wrapper row">
-[% 
+[%
 
 long_facets = CGI.param('long_facet') || [];
 selected_facets = CGI.param('facet') || [];
@@ -14,16 +14,16 @@ DEFAULT_DISPLAY_COUNT = facet.default_display_count || 5;
 
 IF facet.display;
 
-    # facet display configuration present.  Traverse the 
-    # configuration lists, find the matching facets from 
-    # search facet data, and append them to the sorted 
+    # facet display configuration present.  Traverse the
+    # configuration lists, find the matching facets from
+    # search facet data, and append them to the sorted
     # list of facets.
 
     FOR display_chunk IN facet.display;
         FOR display_field IN display_chunk.facet_order;
             # find the matching facet in the facet data
             FOR facet IN ctx.search_facets.values;
-                IF facet.cmf.field_class == display_chunk.facet_class 
+                IF facet.cmf.field_class == display_chunk.facet_class
                         AND facet.cmf.name == display_field;
                     sorted_facets.push(facet);
                 END;
@@ -31,17 +31,17 @@ IF facet.display;
         END;
     END;
 
-ELSE; 
+ELSE;
 
     # No facet display configuration is present.
     # show all facets, sorted by name.
 
     # collect facet type labels for easier sorting
-    labels = []; 
+    labels = [];
     FOR facet IN ctx.search_facets.values;
         labels.push(facet.cmf.label);
     END;
-    
+
     # We used to do a sort here, but now that's handled in EGCatLoader.
     sorted_facets = ctx.search_facets.values;
 END;
@@ -54,11 +54,11 @@ FOR facet IN sorted_facets;
     fid = facet.cmf.id;
     long_key = fclass _ fname %]
 
-    <div class="w-100">
+    <div class="facet-card w-100">
     <div class="card">
         <div class="card-header">
-               <span class="title text-center">[% facet.cmf.label %]</span>
-            
+            <span class="title text-center">[% facet.cmf.label %]</span>
+
         </div>
         <div class="card-body">
             <div>
@@ -68,8 +68,8 @@ FOR facet IN sorted_facets;
                 new_facets = [];
                 this_selected = 0;
                 FOR selected IN selected_facets;
-                    IF selected == param_string; 
-                        this_selected = 1; 
+                    IF selected == param_string;
+                        this_selected = 1;
                     ELSE;
                         new_facets.push(selected);
                     END;
@@ -85,9 +85,9 @@ FOR facet IN sorted_facets;
                 display_count_by_cmf.$fid = display_count_by_cmf.$fid + 1;
 
                 IF this_selected;
-                    # This facet is already selected by the user. 
+                    # This facet is already selected by the user.
                     # Link removes the facet from the set of selected facets.
-                %] 
+                %]
                     <div class="facet_template facet_template_selected">
                         <div class="facet">
                             [% IF new_facets.size == 0 %]
@@ -102,9 +102,9 @@ FOR facet IN sorted_facets;
                         </div>
                         <div class="count">([% facet_data.count; IF facet_data.count == (ctx.superpage + 1) * ctx.superpage_size; '+'; END %])</div>
                     </div>
-                [% 
+                [%
                     ELSE;
-                    # This facet is not currently selected.  If selected, 
+                    # This facet is not currently selected.  If selected,
                     # append this facet to the list of currently active facets.
                 %]
                     <div class="facet_template">
@@ -117,9 +117,9 @@ FOR facet IN sorted_facets;
                         </div>
                         <div class="count">([% facet_data.count %])</div>
                     </div>
-                    
+
                 [% END %]
-                
+
             [% END %]</div>
             <span class="float-right">
                 [% IF long_facets.grep(long_key).0;
@@ -139,7 +139,7 @@ FOR facet IN sorted_facets;
                       [% l("Fewer") %]
                     </a>
                 [% ELSIF facet.data.size > DEFAULT_DISPLAY_COUNT %]
-                    <a class="button" 
+                    <a class="button"
                       title="[% l('Show More [_1] Entries', facet.cmf.label) %]"
                       href="[% mkurl('', {long_facet => long_facets.merge([long_key])}) %]#facets" rel="nofollow" vocab="">
                       [% l("More") %]
@@ -147,7 +147,7 @@ FOR facet IN sorted_facets;
                 [% END %]
             </span>
             </div>
-            
+
         </div> <!-- box_wrapper -->
     </div> <!-- facet_box_temp -->
 [% END %]
index 60db23f..0cfd2b7 100755 (executable)
@@ -9,10 +9,10 @@
         <div class="zero_search_hits_main">
             <p>[% qhtml = CGI.param('query') | html;
                   IF ctx.bookbag;
-                      wbbag = ctx.bookbag.name | html;
-                      fmt_bookbag = '<span class="lowhits-bookbag-name">' _ wbbag _ '</span>';
+               wbbag = ctx.bookbag.name | html;
+               fmt_bookbag = '<span class="lowhits-bookbag-name">' _ wbbag _ '</span>';
                        IF is_advanced OR is_special;
-                         l('Sorry, no entries were found for your search within [_1].', fmt_bookbag);
+                  l('Sorry, no entries were found for your search within [_1].', fmt_bookbag);
                        ELSE;
                           l('Sorry, no entries were found for [_1] within [_2].', '<q>' _ qhtml _ '</q>', fmt_bookbag);
                        END;
         [% INCLUDE "opac/parts/result/lowhits_purchase.tt2" %]
             <p>
                 <strong>[% l('Keyword Search Tips') %]</strong><br />
-               [% i18n_advsearch = l('Advanced Search');
+        [% i18n_advsearch = l('Advanced Search');
                    l('Try changing to [_1].', '<strong>' _ i18n_advsearch _ '</strong>') %]
             </p>
             <p>
                 <strong>[% l('Adjacency') %]</strong><br />
                 [% l('Multiple words are not searched together as a phrase. They will ' _
-                    'be found in various parts of the record. To search for a phrase, enclose your ' _
-                    'search terms in quotation marks.') %]<br />
-               [% i18n_searchphrase = l('garcia marquez');
+             'be found in various parts of the record. To search for a phrase, enclose your ' _
+             'search terms in quotation marks.') %]<br />
+        [% i18n_searchphrase = l('garcia marquez');
                    l('(example: [_1])', '<strong>&quot;' _ i18n_searchphrase _ '&quot;</strong>') %]
             </p>
             <p>
                 <strong>[% l('Truncation') %]</strong><br />
                 [% l('Words may be right-hand truncated using an asterisk. Use a single asterisk * ' _
-                    'to truncate any number of characters.') %]<br />
-               [% i18n_searchtrunc = l('environment* agency');
+             'to truncate any number of characters.') %]<br />
+        [% i18n_searchtrunc = l('environment* agency');
                    l('(example: [_1])', '<strong>' _ i18n_searchtrunc _ '</strong>') %]
             </p>
             <p>
                 <strong>[% l('Anchored Searching') %]</strong><br />
                 [% l('You may use ^ and $ to indicate "phrase begins with" and ' _
-                    '"phrase ends with," respectively, within a search phrase ' _
-                    'enclosed in quotation marks.') %]<br />
-               [% i18n_searchbegins = l('harry');
-                  i18n_searchends = l('stone');
+             '"phrase ends with," respectively, within a search phrase ' _
+             'enclosed in quotation marks.') %]<br />
+        [% i18n_searchbegins = l('harry');
+           i18n_searchends = l('stone');
                    l('(examples: [_1] for phrases that begin with the term [_2]. ' _
                      '[_3] for phrases that end in [_4].)',
-                    '<strong>&quot;^' _ i18n_searchbegins _ '&quot;</strong>', '<em>' _ i18n_searchbegins _ '</em>',
-                    '<strong>&quot;' _ i18n_searchends _ '$&quot;</strong>', '<em>' _ i18n_searchends _ '</em>') %]
+             '<strong>&quot;^' _ i18n_searchbegins _ '&quot;</strong>', '<em>' _ i18n_searchbegins _ '</em>',
+             '<strong>&quot;' _ i18n_searchends _ '$&quot;</strong>', '<em>' _ i18n_searchends _ '</em>') %]
             </p>
             [% INCLUDE "opac/parts/result/lowhits_purchase.tt2" %]
         </div>
index 6c0c9d3..d2676a5 100755 (executable)
@@ -1,7 +1,7 @@
 [% BLOCK results_count_header %]
-<div class="results_header_nav1 text-center py-4">
+<div class="results_header_nav1 py-4">
     [%- INCLUDE "opac/parts/pref_lib_display.tt2" %]
-    
+
     <nav aria-label="Page navigation">
                 <ul class='start_end_links_span pagination d-inline-flex'>
 
                         IF page > 0;
                             href = mkurl('', {page => page - 1});
                     -%]
-                    <li class="page-item"><a class='page-link [% class %]' href='[% href %]' 
+                    <li class="page-item"><a class='page-link [% class %]' href='[% href %]'
                         title='[% l("Previous page") %]'><span class="nav_arrow_fix">&#9668;</span> <span class="paginateText"> [% l('Previous') %]</span> </a></li>
                     [%- END;
 
                         # show links to 4 previous pages, the current page, and 3 more pages.
                         added = 0;
-                        pageitr = page - 5; 
+                        pageitr = page - 5;
                         IF page_count > 1; # no need to paginate 1 page
                     -%]
-                    
+
                     [%-
                                 WHILE (pageitr = pageitr + 1) < page_count;
                                     IF pageitr < 0; NEXT; END;
@@ -33,7 +33,7 @@
                                     IF added == 5; LAST; END;
                                 END;
                     -%]
-                    
+
                     [%- END;
 
                         class = 'search_page_nav_link';
                         IF (page + 1) < page_count;
                             href = mkurl('', {page => page + 1});
                     -%]
-                    <li class="page-item"><a class='page-link [% class %]' href='[% href %]' 
+                    <li class="page-item"><a class='page-link [% class %]' href='[% href %]'
                         title='[% l("Next page") %]'>
                         <span class="paginateText">[% l('Next') %] </span><span class="nav_arrow_fix">&#9658;</span></a></li>
                     [%- END; -%]
                 </ul>
                 </nav>
-    
+
     <span class="result_number">
                 [%~ IF ctx.hit_count == ctx.pagable_limit; ctx.hit_count = ctx.hit_count _ '+'; END ~%]
                 [%~ |l('<span class="result_count_number">' _ ctx.result_start _'</span>',
index c394f7c..7cffdcc 100755 (executable)
@@ -11,7 +11,7 @@
 %]
 <div class="row">
     <div class="col-12">
-    [% PROCESS "opac/parts/result/paginate.tt2" %] 
+    [% PROCESS "opac/parts/result/paginate.tt2" %]
     [% ctx.results_count_header = PROCESS results_count_header;
         ctx.results_count_header %]
     </div>
@@ -29,7 +29,7 @@
                 <span id="selected_records_summary">
                 <a href="[% mkurl(ctx.opac_root _ '/mylist') %]" class="no-dec" rel="nofollow" vocab="">
                     <span id="selected_records_count">[% ctx.mylist.size %]
-                    
+
                     </span>
                             [% l('selected') %]
                 </a></span>
@@ -38,7 +38,7 @@
             </div>
             [% END %]
 
-            
+
                 [%  FOR rec IN ctx.records;
                     attrs = {};
                     attrs.marc_xml = rec.marc_xml;
@@ -55,7 +55,7 @@
                         IF rec.mmr_id;
                             IF rec.mr_constituent_count > 1;
                                 # metarecords link to record list page
-                                record_url_path = ctx.opac_root _ '/results'; 
+                                record_url_path = ctx.opac_root _ '/results';
                                 add_parms = {metarecord => rec.mmr_id};
                                 del_parms = ['page'];
                             ELSE;
                             END;
                             hold_type = 'M';
                         ELSE;
-                        record_url_path = ctx.opac_root _ '/record/' _ rec.bre_id; 
+                        record_url_path = ctx.opac_root _ '/record/' _ rec.bre_id;
                         add_parms = { badges => rec.badges.join(',') };
                         del_parms = ['quux'];
                         hold_type = 'T';
                         END; -%]
-                        
+
                     <div class="row" style="border-top: 1px solid grey;">
-                 
+
                     <!--Count&Checkboxes-->
                         <div class="col-lg-1">
                             <div class="results_row_count"> [% IF !ctx.is_meta; %]
                                     class="result_record_selector" value="[% rec.bre_id %]" />
                                 [% END %]
                             </div>
-                        </div> 
+                        </div>
                         <!--Cover Image-->
-                        <div class='my-auto col-lg-2 text-center' id="result[% rec.bre_id %]">
+                        <div class='col-sm-auto text-center' id="result[% rec.bre_id %]">
                             <a href="[% mkurl(record_url_path, add_parms, del_parms); %]"><img alt="[% attrs.title | html;%]"
-                            id='item_jacket[% rec.bre_id %]' class='my-2' 
+                            id='item_jacket[% rec.bre_id %]' class='my-2'
                             src='[% ctx.media_prefix %]/opac/extras/ac/jacket/large/r/[% rec.bre_id | uri %]' style="max-height:150px;" /></a><br />
-                        </div>       
+                        </div>
                             <!--Info-->
-                        <div class='result_table_title_cell col-lg-9'>
-                            <dRecord Holdings Summaryiv class="row h-100">
+                        <div class='result_table_title_cell col'>
+                            <div class="row align-items-start">
                                 <div class="result_metadata col-md-8 col-12">
                                     [% IF rec.mmr_id %]
                                     <abbr class="unapi-id" title='tag:[% ctx.hostname %],[% date.format(date.now, '%Y') %]:metabib-metarecord/[% rec.mmr_id %]'></abbr>
                                     <span class="mx-2">
                                         [%- IF attrs.format_label; %]
                                             [% FOR format IN attrs.all_formats %]
-                                                <img alt="[% format.label | html %]" 
-                                                    src="[% format.icon %]" /> 
+                                                <img alt="[% format.label | html %]"
+                                                    src="[% format.icon %]" />
                                                 [% format.label | html %]
                                             [% END %]
                                         [%- END %]
-                                       
+
                                         [%- UNLESS show_detail_view;
                                             IF attrs.pubdate;
                                                 pubdate_clean = attrs.pubdate | html;
                                                 l(" ([_1])", pubdate_clean);
                                             ELSIF attrs.copyright;
                                                 copyright_clean = attrs.copyright | html;
-                                                l(" ([_1])", copyright_clean);                                                                
+                                                l(" ([_1])", copyright_clean);
                                             END;
                                         END -%]
                                     </span>
                                         [% alt.value | html %]
                                     </div>
                                         [%- END; END; -%]
-  
+
                                     <div>
                                     [% IF attrs.author; %]
                                         <a  title="[% l("Perform an Author Search") %]"
                                             class="record_author"
-                                            href="[%- 
+                                            href="[%-
                                             authorquery = attrs.author | replace('[#"^$\+\-,\.:;&|\[\]()]', ' ');
                                             mkurl(ctx.opac_root _ '/results', {qtype => 'author', query => authorquery}, general_search_parms.merge(expert_search_parms, browse_search_parms, facet_search_parms))
                                             -%]" rel="nofollow" vocab="">[% IF attrs.hl.author; attrs.hl.author; ELSE; attrs.author | html; END %]</a>
-                                    [% END; %]
+                                    [% END %]
+
 
-                                    
                                             [%-
                                             FOR entry IN attrs.graphic_authors;
                                                 FOR alt IN entry.graphic;
                                         </div>
                                         [%- END; END; -%]
                                     </div>
-                                                    
-                                      
-                                                    
+
+
+
                                         [% IF rec.popularity > 0.0 AND ctx.hide_badge_scores != 'true' %]
                                         <div><span><strong>[% l('Popularity:') %]</strong> [% rec.popularity %] / 5.0</span></div>
                                         [% END %]
-                                        <table 
+                                        <table
                                             role="presentation"
                                             title="[% l('Record Holdings Summary') %]"
                                             class="table_no_border_space table_no_border results_info_table container-fluid">
-                                       
+
 
                                             [%- IF show_detail_view -%]
                                             [% IF args.holdings.size > 0 %]
                                             <tr class='result_table_title_cell'>
-                                                <td valign='top'><strong>[% l('Call number:') %]</strong></td> 
+                                                <td valign='top'><strong>[% l('Call number:') %]</strong></td>
                                                 <td>[% args.holdings.0.label | html %]</td>
                                             </tr>
                                             [% END %]
                                                 END;
                                             %]
                                             <tr  class='result_table_title_cell container-fluid'>
-                                                <td>
+                                                <td colspan="2">
                                                     <table role="presentation" title="[% l('Record Holdings Details') %]" class='container-fluid table table-hover mt-4 miniTable holdingsTable'>
                                                         <thead>
                                                             <tr>
                                             [%- has_parts = 'false'; END; %]
                                         [% END %] <!-- END detail_record_view -->
                                     </table>
-                                    [% 
+                                    [%
                                         IF ebook_api.enabled == 'true';
                                             INCLUDE "opac/parts/ebook_api/avail.tt2";
                                         END;
                                     END; %]
                                     [% IF rec.user_circulated %]
                                     <div class="result_item_circulated">
-                                    <i class="fas fa-book-reader"></i>  
+                                    <i class="fas fa-book-reader" aria-hidden="true"></i>
                                     <span>[% l('I have checked this item out before') %]</span>
                                     </div>
                                     [% END %]
                                             <div class="result-bookbag-item-note">[% note.note | html %]</div>
                                         [% END %]
                                     [% END %]
-                                
+
                                 </div>
 
 
                                 <div class="col-md-4">
-                                    <div class="result_table_utils row vertMid">
+                                    <div class="result_table_utils row">
                                         <div class="btn-group-vertical mx-auto my-2" >
                                         [%- search_ou = ctx.search_ou;
                                             num_holdable_copies = attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size || 0;
                                             del_parms = del_parms.merge(['query', 'bool', 'qtype', 'contains', '_adv']);
                                             add_parms.import({query => ctx.naive_query_scrub(ctx.user_query)});
                                         END; %]
-                                        
+
 
 
                                         <!--Place Hold Button -->
                                         <div class="btn btn-action text-left">
-                                                <a href="[% mkurl(ctx.opac_root _ '/place_hold', add_parms, del_parms) %]" 
+                                                <a href="[% mkurl(ctx.opac_root _ '/place_hold', add_parms, del_parms) %]"
                                                     [% html_text_attr('title', l('Place Hold on [_1]', attrs.title)) %]
                                                     class="no-dec" rel="nofollow" vocab="">
-                                                    <i class="fas fa-check"></i>
+                                                    <i class="fas fa-check" aria-hidden="true"></i>
                                                     <span class="result_place_hold">[% l('Place Hold') %]</span>
                                                 </a>
                                         </div>
                                                 {title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'checkout'},
                                                 ['query','tag','subfield','term','_special','sort','page']) %]"
                                                 [% html_text_attr('title', l('Check Out [_1]', attrs.title)) %]
-                                                    class="no-dec" rel="nofollow" vocab=""><i class="fas fa-atlas"></i><span class="result_place_hold">[% l('Check Out E-Item') %]</span></a>
+                                                    class="no-dec" rel="nofollow" vocab=""><i class="fas fa-atlas" aria-hidden="true"></i> <span class="result_place_hold">[% l('Check Out E-Item') %]</span></a>
                                         </div>
                                         <div class="btn btn-action text-left">
                                             <a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_place_hold',
                                                 {title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'place_hold'},
                                                 ['query','tag','subfield','term','_special','sort','page']) %]"
                                                 [% html_text_attr('title', l('Place Hold on [_1]', attrs.title)) %]
-                                                    class="no-dec btn btn-primary btn-sm" rel="nofollow" vocab=""><i class="fas fa-book-reader"></i><span class="result_place_hold">[% l('Place Hold on E-Item') %]</span></a>
+                                                    class="no-dec" rel="nofollow" vocab=""><i class="fas fa-book-reader" aria-hidden="true"></i> <span class="result_place_hold">[% l('Place Hold on E-Item') %]</span></a>
                                         </div>
                                         [%- END -%]
 
                                                     data-recid="[% rec.id %]" data-action="add"
                                                     class="mylist_action [% IF ctx.mylist.grep('^' _ rec.id _ '$').size %]hidden[% END %]"
                                                     title="[% l("Add [_1] to basket", attrs.title) %]" rel="nofollow" vocab="">
-                                                    <i class="fas fa-shopping-basket"></i>
+                                                    <i class="fas fa-shopping-basket" aria-hidden="true"></i>
                                                     [% l("Add to basket") %]
                                                 </a>
-                                                
+
                                                 <a href="[% delhref %]" id="mylist_delete_[% rec.id %]"
                                                     data-recid="[% rec.id %]" data-action="delete"
                                                     class="mylist_action text-left [% IF !ctx.mylist.grep('^' _ rec.id _ '$').size %]hidden[% END %]"
                                                     title="[% l("Remove [_1] from basket", attrs.title) %]" rel="nofollow" vocab="">
-                                                    <i class="fas fa-minus-circle"></i>
+                                                    <i class="fas fa-minus-circle" aria-hidden="true"></i>
                                                     [% l("Remove from basket") %]
                                                 </a>
                                                 </div>
                                         [% IF ENV.OILS_CONTENT_CAFE_USER %]
                                         [% ident = attrs.isbn_clean || attrs.upc %]
                                             <div type="button" class="btn btn-action">
-                                                <a target='_blank' 
+                                                <a target='_blank'
                                                     [% html_text_attr('title', l('Reviews and More for [_1]', attrs.title)) %]
-                                                    href="[% ctx.ext_proto %]://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=[%- 
+                                                    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" rel="nofollow" vocab="">
-                                                    <i class="fas fa-star"></i>
+                                                    <i class="fas fa-star" aria-hidden="true"></i>
                                                     <span class="results_reviews">[% l('Reviews &amp; More') %]</span>
                                                 </a>
                                             </div>
                                         </div>
                                         </div>
                                     </div>
-                                </dRecord>
+                                </div>
                             </div></div>
-                      
+
                 [%- IF ENV.OILS_CHILIFRESH_ACCOUNT %]
-               
+
                         <span class="chili_review" id="isbn_[% attrs.isbn_clean | html %]"> </span>
-                   
+
                         <div id="chili_review_[% attrs.isbn_clean | html %]" style="display: none;" align="center"></div>
-                    
+
                 [%- END %]
                     [% END %]
-           
+
     </div>
 
 
index b11ac1c..b9eae7d 100755 (executable)
@@ -29,7 +29,7 @@ END;
 
  %]
 
-<div id="search-wrapper">
+<div id="search-wrapper" class="container-fluid">
     [% UNLESS took_care_of_form -%]
     <form action="[% ctx.opac_root %]/results" method="get">
     [%- END %]
@@ -42,12 +42,12 @@ END;
     <div class="m-5">
     <div class="row">
      <!--Keyword-->
-       <div class="col-xs-12 col-sm-12 col-lg-6 col-xl-3">
+        <div class="col-sm-12 col-md">
         <span class='search_box_wrapper'>
             [%- # autosuggest breaks accessibility, as the aria-label
                 # attribute is removed when the Dijit is created. :(  %]
             <label id="search_box_label" for="search_box" class="w-100">[% l('Search: ') %]
-            <input class="form-control form-control-lg" type="text" id="search_box" name="query" aria-label="[%
+            <input class="form-control form-control-sm" type="text" id="search_box" name="query" aria-label="[%
                     l('Enter search query:');
                 %]" value="[% is_advanced ? ctx.naive_query_scrub(ctx.user_query) : CGI.param('query') | html %]"
                 [%- IF use_autosuggest.enabled == "t" %]
@@ -62,71 +62,72 @@ END;
             </label>
         </span>
         </div>
-        
+
         <!--Type-->
-        <div class="col-xs-12 col-sm-12 col-lg-6 col-xl-2">
+        <div class="col-sm-12 col-md">
         <label id="search_qtype_label" for="qtype" class="w-100">
-        [%- 
+        [%-
             l('Type: ');
             INCLUDE "opac/parts/qtype_selector.tt2" id="qtype";
         -%]
         </label>
         </div>
-        
+
+
+        <!-- Force next columns to break to new line below md breakpoint -->
+        <div class="w-100 d-block d-md-none"></div>
+
          <!--Format-->
-        <div class="col-xs-12 col-sm-12 col-lg-6 col-xl-2">
+        <div class="col-sm-12 col-md">
         <label id="search_itype_label" for="search_itype_selector" class="w-100">
         [%-
             l('Format: ');
             IF search.basic_config.type == 'attr';
                 INCLUDE "opac/parts/coded_value_selector.tt2"
-                    attr=search.basic_config.group none_ok=1 
+                    attr=search.basic_config.group none_ok=1
                     id='search_itype_selector'
                     none_label=search.basic_config.none_label;
             ELSIF search.basic_config.type == 'filter';
                 INCLUDE "opac/parts/filter_group_selector.tt2"
-                    filter_group=search.basic_config.group none_ok=1 
+                    filter_group=search.basic_config.group none_ok=1
                     id='search_itype_selector'
+                    class='form-control form-control-sm'
                     none_label=search.basic_config.none_label;
             END;
         -%]
         </label>
         </div>
-        
+
          <!--Library-->
-        <div class="col-xs-12 col-sm-12 col-lg-6 col-xl-2">
+        <div class="col-sm-12 col-md">
         <label id="search_locg_label" for="search_org_selector" class="w-100">
-        [%- 
+        [%-
             l('Library: ');
             select_lib_label = l("Select search library");
-            INCLUDE build_org_selector arialabel=select_lib_label 
+            INCLUDE build_org_selector arialabel=select_lib_label
               id='search_org_selector' show_loc_groups=1
         -%]
         </label>
         </div>
-         <div class="col-xs-12 col-sm-12 col-lg-12 col-xl-3">
-            <div class="vertMid text-center">
-            <input id="detail" type="hidden" name="detail_record_view" value="[% show_detail_view %]"/>
-            <button id='search-submit-go' type="submit" class="btn btn-opac m-2"
-                onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden";[% IF ctx.depth_sel_button AND NOT took_care_of_form %] $("search-submit-go-depth").className="hidden";[% END %]}, 2000)'><i class="fas fa-search"></i> [% l('Search') %]</button>
-            [%- IF ctx.depth_sel_button AND NOT took_care_of_form %]
-            <button id='search-submit-go-depth' type="submit" value="[% ctx.depth_sel_depth %]" name="depth" class="[% #ctx.depth_sel_button_class %] btn btn-opac m-2"
-                onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden"; $("search-submit-go-depth").className="hidden";}, 2000)' title="[% ctx.depth_sel_tooltip | html %]"><i class="fas fa-globe"></i> [% ctx.depth_sel_button_label | html %]</button>
-            [%- END %]
-            <img id='search-submit-spinner' src='[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]' style='height:16px;width:16px;' class='hidden' alt='[% l("Search In Progress") %]'/>
-            </div>
-          
-            </div>
-      </div>
-     
-           
-          
-      
-     
+
+        <!-- Force next columns to break to new line below md breakpoint -->
+        <div class="w-100 d-block d-md-none"></div>
+
+        <div class="col-auto ml-auto ml-md-1">
+        <input id="detail" type="hidden" name="detail_record_view" value="[% show_detail_view %]"/>
+        <button id='search-submit-go' type="submit" class="btn btn-sm btn-opac"
+            onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden";[% IF ctx.depth_sel_button AND NOT took_care_of_form %] $("search-submit-go-depth").className="hidden";[% END %]}, 2000)'><i class="fas fa-search" aria-hidden="true"></i> [% l('Search') %]</button>
+        </div>
+        [%- IF ctx.depth_sel_button AND NOT took_care_of_form %]
+        <div class="col-auto mr-auto mr-md-1">
+        <button id='search-submit-go-depth' type="submit" value="[% ctx.depth_sel_depth %]" name="depth" class="[% #ctx.depth_sel_button_class %] btn btn-sm btn-opac"
+            onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden"; $("search-submit-go-depth").className="hidden";}, 2000)' title="[% ctx.depth_sel_tooltip | html %]"><i class="fas fa-globe" aria-hidden="true"></i> [% ctx.depth_sel_button_label | html %]</button>
+        [%- END %]
+        <img id='search-submit-spinner' src='[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]' style='height:16px;width:16px;' class='hidden' alt='[% l("Search In Progress") %]'/>
+        </div>
+
     </div>
-    
-  
-            
+
     [% IF ctx.bookbag %]
     <div id="search-only-bookbag-container" class="text-center">
         <input type="checkbox" id="search-only-bookbag" name="bookbag"
@@ -185,7 +186,7 @@ END;
         </div>
         [% END %]
     [% END %]
-   
+
 
     <script>
     function getAdvLimits() {
index ec43f26..babbf16 100755 (executable)
 
     <div id="collapseOne" class="collapse" aria-labelledby="headRecent" data-parent="#accordion">
       <div class="card-body">
-               [% FOR s IN ctx.saved_searches %]
-               <ul>
-               <li><a href="[% ctx.opac_root %]/results?query=[% s | uri %]&amp;_adv=1">[% s | html %]</a></li>
-               </ul>
+          [% FOR s IN ctx.saved_searches %]
+          <ul>
+              <li><a href="[% ctx.opac_root %]/results?query=[% s | uri %]&amp;_adv=1">[% s | html %]</a></li>
+          </ul>
             [% END %]
       </div>
     </div>
   </div>
 </div>
-  
-   
+
+
 [% END %]
index 4a667d0..3631ccc 100755 (executable)
@@ -1,8 +1,8 @@
 [%- IF ctx.maintenance_message -%]
 <div class="alert alert-[% ctx.maintenance_type %] alert-dismissible mb-0 text-center" role="alert">
-       <button type="button" class="close" data-dismiss="alert" aria-label="Close">
-       <span aria-hidden="true">&times;</span>
-       </button>
+    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+        <span aria-hidden="true">&times;</span>
+      </button>
 [% ctx.maintenance_message %]
 </div>
 [%- END -%]
index 9af65c6..8d95987 100755 (executable)
@@ -4,39 +4,38 @@
   <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
     <span class="navbar-toggler-icon"></span>
   </button>
-  <div class="collapse navbar-collapse" id="navbarNav" style="height:auto !important;">
+  <div class="collapse navbar-collapse" id="navbarNav">
   <!--Left Links-->
-  <div class="row w-100">
-  <div class="col-12">
+
+
    <ul class="navbar-nav nav-fl px-3">
-       <!--Link 1-->
+      <!--Link 1-->
       <li class="nav-item">
         <a class="nav-link" href="[% ctx.link_one %]">Example Link 1<span class="sr-only">(current)</span></a>
       </li>
-       <!--Link 2-->
+        <!--Link 2-->
       <li class="nav-item">
         <a class="nav-link" href="[% ctx.link_two %]">Example Link 2</a>
       </li>
-       <!--Link 3-->
+        <!--Link 3-->
       <li class="nav-item">
         <a class="nav-link" href="[% ctx.link_three %]">Example Link 3</a>
       </li>
-       <!--Link 4-->
+        <!--Link 4-->
       <li class="nav-item">
         <a class="nav-link" href="[% ctx.link_four %]">Example Link 4</a>
       </li>
     </ul>
     <!--Right Links-->
     <ul class="navbar-nav ml-auto nav-fr px-3">
-       <!--If not signed in, show sign in button-->
+      <!--If not signed in, show sign in button-->
     [% IF !ctx.user %]
-       <li class="nav-item">
-                [% IF ctx.page != 'login' ;%] 
-           <a href="#exampleModal" data-toggle="modal" data-target="#exampleModal" class="nav-link login"> 
-           [% ELSE ;%] <a href="https://test.nflibrary.ca/eg/opac/login" class="nav-link login">
-            [% END; %] [% l('My Account') %] </a>
-       </li>
+        <li class="nav-item">
+           [% IF ctx.page != 'login' %]
+           <a href="#loginModal" data-toggle="modal" data-target="#loginModal" class="nav-link login">
+           [% ELSE %] <a href="https://test.nflibrary.ca/eg/opac/login" class="nav-link login">
+            [% END %] [% l('My Account') %] </a>
+        </li>
       <!--User is signed in-->
     [% ELSE %]
     <li><div class="dropdown-divider"></div></li>
                       [% END %]
                       [% l('Messages') %]
             </a>
-       </li>
-       <!--My Account-->
-       <li class="nav-item">
+        </li>
+        <!--My Account-->
+        <li class="nav-item">
          <a class="nav-link" href="[% mkurl(ctx.opac_root _ '/myopac/main', {}, ['single', 'message_id', 'sort','sort_type']) %]">[% l('My Account') %]</a>
-       </li>
-       <!--Lists Link-->
-       <li class="nav-item">
+        </li>
+        <!--Lists Link-->
+        <li class="nav-item">
         <a class="nav-link" href="[% mkurl(ctx.opac_root _ '/myopac/lists', {}, ['single', 'message_id']) %]">[% l('My Lists') %]</a>
-       </li>
-       <!--Logout-->
-       <li class="nav-item">
+        </li>
+        <!--Logout-->
+        <li class="nav-item">
         <a class="nav-link" href="[% mkurl(ctx.opac_root _ '/logout', {}, 1) %]" id="logout_link">[% l('Logout') %]</a>
-       </li>
+        </li>
       [% END %]
       <!--must end ul and div no matter the user state-->
     </ul>
        </div>
-       
-               
-      </div>     
-        </div>
+
+
+
          </nav>
-  
+
 
index c7758a2..59d4763 100755 (executable)
@@ -1,31 +1,28 @@
-<nav class="navbar navbar-expand-lg navbar-light secondary-nav">
-<div class="row mx-auto">
-<div class="col-12">
-    <ul class="navbar-nav nav-fl px-3 d-flex">
-        <li class="nav-item mx-2">
-            [% IF ctx.page != 'home'; %]
-            <a href="[% mkurl(ctx.opac_root _ '/home') %]" class="search_catalog_lbl">[%l('Basic Search')%]</a>
-            [% ELSE %]
-            <span class="search_catalog_lbl">[%l('Basic Search')%]</span>
-            [% END %]
-        </li>
-        <li class="nav-item mx-2">
-            [% IF ctx.page != 'browse'; %]
-            <a href="[% mkurl(ctx.opac_root _ '/browse', {}, expert_search_parms.merge(general_search_parms, facet_search_parms, ['fi:has_browse_entry'])) %]" class="browse_the_catalog_lbl">[% l('Browse the Catalog') %]</a>
-            [% ELSE %]
-            <span class="browse_the_catalog_lbl">[%l('Browse the Catalog')%]</span>
-            [% END %]
-        </li>
-        <li class="nav-item mx-2">
-            [% IF ctx.page != 'advanced'; %]
-            <a href="[% mkurl(ctx.opac_root _ '/advanced', {},  expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]" id="home_adv_search_link" class="adv_search_catalog_lbl">[% l('Advanced Search') %]</a>
-            [% ELSE %]
-            <span class="adv_search_catalog_lbl">[%l('Advanced Search')%]</span>
-            [% END %]
-        </li>
-    </ul>
+<div class="container-fluid">
+<div class="row">
+<div class="col">
+    <nav class="nav secondary-nav">
+        [% IF ctx.page != 'home'; %]
+        <a href="[% mkurl(ctx.opac_root _ '/home') %]" class="nav-link search_catalog_lbl">[%l('Basic Search')%]</a>
+        [% ELSE %]
+        <a href="[% mkurl(ctx.opac_root _ '/home') %]" class="nav-link active search_catalog_lbl">[%l('Basic Search')%]</a>
+        [% END %]
+
+        [% IF ctx.page != 'browse'; %]
+        <a href="[% mkurl(ctx.opac_root _ '/browse', {}, expert_search_parms.merge(general_search_parms, facet_search_parms, ['fi:has_browse_entry'])) %]" class="nav-link browse_the_catalog_lbl">[% l('Browse the Catalog') %]</a>
+        [% ELSE %]
+        <a href="[% mkurl(ctx.opac_root _ '/browse', {}, expert_search_parms.merge(general_search_parms, facet_search_parms, ['fi:has_browse_entry'])) %]" class="nav-link active browse_the_catalog_lbl">[% l('Browse the Catalog') %]</a>
+        [% END %]
+
+        [% IF ctx.page != 'advanced'; %]
+        <a href="[% mkurl(ctx.opac_root _ '/advanced', {},  expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]" id="home_adv_search_link" class="nav-link adv_search_catalog_lbl">[% l('Advanced Search') %]</a>
+        [% ELSE %]
+        <a href="[% mkurl(ctx.opac_root _ '/advanced', {},  expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]" id="home_adv_search_link" class="nav-link active adv_search_catalog_lbl">[% l('Advanced Search') %]</a>
+        [% END %]
+    </nav>
+</div>
+    <div class="col-auto">
+        [% INCLUDE 'opac/parts/cart_nav.tt2' %]
     </div>
-    
 </div>
-[% INCLUDE 'opac/parts/cart_nav.tt2' %]
-</nav>
\ No newline at end of file
+</div>
\ No newline at end of file
index 1021f9e..1137ebb 100755 (executable)
@@ -8,7 +8,7 @@
 [% INCLUDE "opac/parts/searchbar.tt2" %]
 </div>
 
-[%  
+[%
     uuid = ctx.page_args.0;
     msg_map = {
         SUCCESS => l('Password has been reset'),
@@ -16,7 +16,7 @@
         NOT_ACTIVE => l('This was not an active password reset request. Your password has not been reset.'),
         NOT_STRONG => l('The password you chose was not considered complex enough to protect your account. Your password has not been reset.'),
         TWO_PASSWORDS => l('Please enter and repeat your new password.'),
-        REQUEST_SUCCESS => l('Your user name or barcode has been submitted for a password reset. ' _ 
+        REQUEST_SUCCESS => l('Your user name or barcode has been submitted for a password reset. ' _
             'If a matching account with an email address is found, you will soon receive an email at that address with further instructions for resetting your password.')
     }
 %]
@@ -29,8 +29,8 @@
             [% IF stat == 'SUCCESS' %]
                 <p><a href='[% mkurl(ctx.opac_root _ '/myopac/main', {}, 1) %]'>[% l('Log in to My Account') %]</a>
             [% ELSE %]
-           
-     
+
+
             <form method="post">
                 <input type='hidden' name='uuid' value='[% uuid | html %]'/>
                 <div class="form-group row">
@@ -41,9 +41,9 @@
                         <label for="pwd2" class="col-sm-6 col-form-label">[% l('Re-enter new password:') %]</label>
                         <input type="password" class="form-control col-sm-6" name="pwd2"/>
                         </div>
-                   
-                            <button name="submit" class="btn btn-confirm" id="submitButton" type="submit"><i class="fas fa-save"></i> [% l('Submit') %]</button>
-                        
+
+                            <button name="submit" class="btn btn-confirm" id="submitButton" type="submit"><i class="fas fa-save" aria-hidden="true"></i> [% l('Submit') %]</button>
+
             </form>
             [% END %]
         [% ELSIF !ctx.pwreset.status %]
                     <label for="username" class="col-sm-6 col-form-label">[% l('User name:') %] </label>
                     <input type="text" class="form-control col-sm-6" id="username" name="username"/>
                     </div>
-               
+
                 [% IF ctx.get_org_setting(ctx.physical_loc || ctx.aou_tree.id, 'circ.password_reset_request_requires_matching_email') %]
                  <div class="form-group row">
                <label for="email" class="col-sm-6 col-form-label">[% l('Email address associated with the account:') %] </label>
                     <input type="text" class="form-control col-sm-6" name="email"/><br/>
                     </div>
                 [% END %]
-           
-            <button name="submit" id="submitButton" class="btn btn-confirm" type="submit"><i class="fas fa-save"></i> [% l('Submit') %]</button>
+
+            <button name="submit" id="submitButton" class="btn btn-confirm" type="submit"><i class="fas fa-save" aria-hidden="true"></i> [% l('Submit') %]</button>
         </form>
         [% END %]
     </div>
index 5709e66..f4aaeb7 100755 (executable)
@@ -6,7 +6,7 @@
     END;
     ctx.page_title = l("Place Hold") %]
     <h2 class="sr-only">[% l('Hold Placement') %]</h2>
-    [% INCLUDE "opac/parts/searchbar.tt2" %]    
+    [% INCLUDE "opac/parts/searchbar.tt2" %]
     <div id="content-wrapper">
         <div class="container">
             [% IF ctx.hold_attempt_made %]
index b023c88..1b88f47 100755 (executable)
@@ -5,7 +5,7 @@
     canon = ctx.proto _ '://' _ ctx.hostname _ mkurl('', {}, 1);
     ctx.metalinks.push('<link rel="canonical" href="' _ canon  _ '" />');
     ctx.metalinks.push('<meta property="og:url" content="' _ canon  _ '" />');
-    IF CGI.param("expand"); basic_search = "f"; END;    
+    IF CGI.param("expand"); basic_search = "f"; END;
 -%]
     <span class="sr-only">[% l('Record Details') %]</span>
     [% INCLUDE "opac/parts/searchbar.tt2" %]
index 88cf88c..70da6d2 100755 (executable)
@@ -7,22 +7,25 @@
     <br class="clear-both" />
     <div id="content-wrapper" class="content-wrapper-record-page">
         <div id='main-content'>
-            <br/>
             [% IF ctx.user.email %]
-            <h2 class='success'>[% l('Your email has been queued for delivery to [_1]', ctx.user.email ) %]</h2>
+            <div class="alert alert-success" role="alert">
+                <h2>[% l('Your email has been queued for delivery to [_1]', ctx.user.email ) %]</h2>
+            </div>
             [% ELSE %]
-            <h2 class='error'>
+            <div class="alert alert-danger" role="alert">
+            <h2>
                 [% here_link_text = "<a href=\"${ctx.opac_root}/myopac/update_email?return_to_referer=1\">";
-                   here_link_text = here_link_text _ l("here");
+                   here_link_text = here_link_text _ l("Set your email address here");
                    here_link_text = here_link_text _ "</a>";
-                   l('Your account does not currently have an email address set. Set your email address [_1]', here_link_text) %]
+                   l('Your account does not currently have an email address set. [_1]', here_link_text) %]
             </h2>
+            </div>
             [% END %]
             <br/>
             [% IF ctx.redirect_to %]
-            <p>[ <a href="[% ctx.redirect_to | html %]">[% l("Return") %]</a> ] </p>
+            <p><a class="btn btn-outline-primary" href="[% ctx.redirect_to | html %]">[% l("Return") %]</a>  </p>
             [% ELSE %]
-            <p>[ <a href="[% mkurl(ctx.opac_root  _ '/record/' _ ctx.bre_id) %]">[% l("Back to Record") %]</a> ]</p>
+            <p><a class="btn btn-outline-primary" href="[% mkurl(ctx.opac_root  _ '/record/' _ ctx.bre_id) %]">[% l("Back to Record") %]</a></p>
             [% END %]
             <div class="common-full-pad"></div>
         </div>
index 90df4b9..40eb721 100755 (executable)
@@ -5,21 +5,21 @@
     ctx.page_title = l("Request Library Card");
 
 # for privacy, reload the page after (default) 5 minutes
-refresh_time = ctx.register.settings.refresh_timeout || 300; 
+refresh_time = ctx.register.settings.refresh_timeout || 300;
 ctx.refresh = refresh_time _ '; ' _ ctx.opac_root _ '/home';
 
-# some useful variables and MACROs for display, 
+# some useful variables and MACROs for display,
 # field validation, and added info display
 
 ctx_org = ctx.physical_loc || ctx.search_ou || ctx.aou_tree.id;
 
-# list of the registration fields to (potentially) 
+# list of the registration fields to (potentially)
 # display in the order they should be shown
 
 # post_code is the only field below that is required in the database and
 # post_code is only required if an address is created.
 # To prevent any of these fields from showing locally, regardless org unit
-# settings, simply remove the fields from this list.  In the case of 
+# settings, simply remove the fields from this list.  In the case of
 # addresses, if all address fields are removed, no attempt at creating
 # an address will be made (and post_code will no longer be required).
 
@@ -50,7 +50,7 @@ register_fields = [
 <div id="content-wrapper">
     <div id="main-content-register" class="container">
         <h1>[% l('Request a Library Card')%]</h1>
-        <span class="validate">&bigstar; = Required Field</span> 
+        <span class="validate">&bigstar; = Required Field</span>
         <hr/>
 
         [% IF ctx.register.success %]
@@ -60,8 +60,8 @@ register_fields = [
             [% IF ctx.register.username_taken %]
             <p>
                 [% |l %]
-                Note: The selected username may be in use by another patron.  
-                You may select another username when finalizing your 
+                Note: The selected username may be in use by another patron.
+                You may select another username when finalizing your
                 registration or in the online catalog.
                 [% END %]
             </p>
@@ -69,7 +69,7 @@ register_fields = [
 
             <br/>
             <p>
-                <a href="[% ctx.opac_root %]/home" 
+                <a href="[% ctx.opac_root %]/home"
                     class="btn btn-confirm">[% l('Return to the Catalog') %]</a>
             </p>
 
@@ -79,14 +79,14 @@ register_fields = [
 
             <br/>
             <p>
-                <a href="[% ctx.opac_root %]/home" 
+                <a href="[% ctx.opac_root %]/home"
                     class="btn btn-confirm">[% l('Return to the Catalog') %]</a>
             </p>
 
         [% ELSE %]
 
         [% IF ctx.user %]
-            <!-- if the user is logged in, make it 
+            <!-- if the user is logged in, make it
                 clear we are tracking the requestor -->
             <h4>[% l('New account requested by [_1] [_2] [_3] [_4] [_5]',
                     ctx.user.prefix, ctx.user.first_given_name,
@@ -101,8 +101,8 @@ register_fields = [
                     <td width="30">
                         <label for='stgu.home_ou'>[% l('Home Library') %]</label>
                     </td>
-                    <td width="50">[% INCLUDE build_org_selector 
-                            name='stgu.home_ou' 
+                    <td width="50">[% INCLUDE build_org_selector
+                            name='stgu.home_ou'
                             value=value || ctx_org
                             can_have_users_only=1
                             valid_org_list=ctx.register.valid_orgs
@@ -115,7 +115,7 @@ register_fields = [
                         </span>
                         [% END %]
                 </tr>
-                
+
 [%
 # <=== shifting code left for readability
 
@@ -126,7 +126,7 @@ FOR field_def IN register_fields;
     orig_name = fname;
 
     field_path = fclass _ "." _ fname;
-    
+
     IF fname.match('^pref_');
         # Preferred name fields adopt most visibility, etc.
         # settings from the primary name counterparts.
@@ -145,7 +145,7 @@ FOR field_def IN register_fields;
         show = show || require;
         require = 0; # pref name values never required
     END;
-     
+
     NEXT UNLESS require OR show;
 %]
 <tr>
@@ -162,13 +162,13 @@ FOR field_def IN register_fields;
         </div>
     </div>
     [% ELSE; %]
-        <input 
-               class='form-control'
+        <input
+            class='form-control'
             type='text'
             id='[% field_path %]'
             name='[% field_path %]'
             value='[% value || CGI.param(field_path) | html %]' [% IF require %]required[% END %]/>
-     [% END; %]  
+     [% END %]
         <div class="invalid-feedback">
           Please enter a [% field_def.label | html %]
         </div>
@@ -220,10 +220,10 @@ FOR field_def IN register_fields;
                     [% END %]
                     <tr>
                         <td colspan='3' class="text-center py-4">
-                            <a href="[% ctx.opac_root %]/home" 
+                            <a href="[% ctx.opac_root %]/home"
                                 class="btn btn-confirm">[% l('Go Back') %]</a>
-                            <input type="submit" 
-                                value="[% l('Submit Registration') %]" 
+                            <input type="submit"
+                                value="[% l('Submit Registration') %]"
                                 class="btn btn-confirm" />
                         </td>
                     </tr>
@@ -252,7 +252,7 @@ FOR field_def IN register_fields;
   }, false);
 })();
 
-$(document).ready(function(){         
+$(document).ready(function(){
    $('.datepicker').datepicker({
         weekStart: 1,
         autoclose: true,
index 53f08f9..540c32a 100755 (executable)
           <br/>
           [% END %]
         [% END %]
-        <div [%- IF ctx.metarecord %]class="hidden"[%- ELSE %]class="container"[%- END %]>
+        <div [%- IF ctx.metarecord %]class="hidden"[%- ELSE %]class="container-fluid"[%- END %]>
+
             <div id="results_header_inner">
-               
+
                 <div id="refine_hits" class="btn btn-secondary"><a onclick="getFacety();">[% l('Refine these results') %]</a></div>
                 <div id="return_to_hits" class="results_header_btns"><a onclick="getResulty();">[% l('Back to results') %]</a></div>
-               
 
 
+            <div class="row">
+            <div class="col">
                 <div class="search-options text-center">
                     <div class="mx-auto">
                         <!-- ===== Drop Down ===== -->
                         <div class="search-option my-2">
-                               <label for="opac.result.sort">[% l('Sort Results') %]</label>
-                               [% INCLUDE "opac/parts/filtersort.tt2" value=CGI.param('sort') submit_on_change=1 class="form-control" %]
+                        <label for="opac.result.sort">[% l('Sort Results') %]</label>
+                            [% INCLUDE "opac/parts/filtersort.tt2" value=CGI.param('sort') submit_on_change=1 class="form-control" %]
                         </div>
                         [%- IF show_more_details.default != 'hide' -%]
 
                         <!-- ===== Buttons ===== -->
-                       <div class="search-option my-2">
-                               [% IF show_detail_view %]
-                               <a href="[% mkurl('', {detail_record_view => 0}) %]" class="btn btn-sm btn-secondary">[% l('Show Fewer Details') %]</a> [% ELSE %]
-                               <a href="[% mkurl('', {detail_record_view => 1}) %]" class="btn btn-sm btn-secondary">[% l('Show More Details') %]</a>
-                               [% END %]
-                       </div>
-                       [%- END -%]
+                        <div class="search-option my-2">
+                            [% IF show_detail_view %]
+                            <a href="[% mkurl('', {detail_record_view => 0}) %]" class="btn btn-sm btn-secondary">[% l('Show Fewer Details') %]</a> [% ELSE %]
+                            <a href="[% mkurl('', {detail_record_view => 1}) %]" class="btn btn-sm btn-secondary">[% l('Show More Details') %]</a>
+                            [% END %]
+                        </div>
+                        [%- END -%]
                          [% IF (is_advanced AND NOT is_special) AND CGI.param('qtype') %]
                         <div class="search-option my-2">
                             <span id="refine_search_link"> <a class="btn btn-secondary btn-sm" href="[% mkurl(ctx.opac_root _ '/advanced') %]">[%
                         </div>
                         [% END %]
                     </div>
+                </div>
+            </div>
+            </div>
 
-
+            <div class="row">
+            <div class="col">
                     <!-- ===== Checkboxes ===== -->
-                    <div class="search-check text-center mb-3">
+                    <div class="search-check">
+
                      [%- IF !search.no_highlight %]
-                        <div class="search-filter form-check m-2">        
-                            <label for="no_highlight" class="form-check-label">
-                            <input class="form-check-input" type="checkbox" id="no_highlight" name="no_highlight" value="1"
+
+                        <div class="search-filter m-2">
+                            <label for="no_highlight">
+                            <input type="checkbox" id="no_highlight" name="no_highlight" value="1"
                                 onchange="search_modifier_onchange('no_highlight', this, true)"
                                 [% CGI.param('no_highlight').size ? ' checked="checked"' : '' %] />
                             [% l('Disable Highlighting') %]
                             </label>
                         </div>
-                        [% END; %]
-                        <div class="search-filter form-check m-2">
-                           <label for="limit_to_available" class="form-check-label">
-                               <input class="form-check-input" type="checkbox" id="limit_to_available" name="modifier" value="available"
+                        [% END %]
+
+                        <div class="search-filter m-2">
+                            <label for="limit_to_available">
+                            <input type="checkbox" id="limit_to_available" name="modifier" value="available"
                             onchange="search_modifier_onchange('available', this, true)"
                             [% CGI.param('modifier').grep('available').size ? ' checked="checked"' : '' %] />
-                               [% l('Limit to Available Items') %]
-                           </label>
+                            [% l('Limit to Available Items') %]
+                            </label>
                         </div>
                         [% IF NOT metarecords.disabled %]
-                       <div class="search-filter form-check m-2">
-                        <label for="metabib_search_modifier" class="form-check-label">
-                            <input class="form-check-input" type="checkbox" id="metabib_search_modifier"
+
+                        <div class="search-filter m-2">
+                        <label for="metabib_search_modifier">
+                            <input type="checkbox" id="metabib_search_modifier"
                                 name="modifier" value="metabib"
                                 onchange="search_modifier_onchange('metabib', this, true)"
                                 [% CGI.param('modifier').grep('metabib').size ? ' checked="checked"' : '' %] />
                             [% l('Group By Formats and Editions') %]
                         </label>
-                       </div>
+                        </div>
                     [% END %]
                     [% IF ctx.depth_sel_checkbox %]
-                    <div class="search-filter form-check m-2">
-                       <label class="form-check-label" for="depth_sel" title="[% ctx.depth_sel_tooltip | html %]">
-                               <input class="form-check-input" type="checkbox" id="depth_sel" name="depth" value="[% ctx.depth_sel_depth %]"
+
+                    <div class="search-filter m-2">
+                        <label for="depth_sel" title="[% ctx.depth_sel_tooltip | html %]">
+                            <input type="checkbox" id="depth_sel" name="depth" value="[% ctx.depth_sel_depth %]"
                             onchange="this.form.submit()"
                             [% CGI.param('depth') == ctx.depth_sel_depth ? ' checked="checked"' : '' %] />
-                               [% ctx.depth_sel_checkbox_label | html %]
-                       </label>
+                            [% ctx.depth_sel_checkbox_label | html %]
+                        </label>
                     </div>
                     [% END %]
                     [% IF ctx.exclude_electronic_checkbox %]
-                                <div class="search-filter form-check m-2">
-                       <label class="form-check-label" for='opac.result.excludeelec'>
-                        <input class="form-check-input" type='checkbox' id='opac.result.excludeelec' name="fi:-search_format" value="electronic"
+
+                        <div class="search-filter m-2">
+                        <label for='opac.result.excludeelec'>
+                        <input type='checkbox' id='opac.result.excludeelec' name="fi:-search_format" value="electronic"
                             onchange="exclude_onchange(this)"
                             [%- CGI.param('fi:-search_format').grep('electronic').size ? ' checked="checked"' : '' %] />
                         [% l("Exclude Electronic Resources") %]
-                       </label>
-                    </div>
+                        </label>
+                        </div>
                     [% END %]
                    </div>
-                </div>
-
+                   </div>
 
             </div>
+            </div>
+            </div>
         </div>
     </div>
     </form>
     <div class="mx-5">
-            <div id="results-page">
+        <div class="row">
+            <div id="results-page" class="col">
                 [%- IF (ctx.depth_sel_checkbox OR ctx.depth_sel_button) AND CGI.param('depth') == ctx.depth_sel_depth AND ctx.depth_sel_resultshint %]
                 <div id="results-page-depth-hint">[% ctx.depth_sel_resultshint | html %]</div>
                 [%- END %]
                     (ctx.records.size ? "table.tt2" : "lowhits.tt2");
                 INCLUDE $path %]
             </div>
+        </div>
     </div>
 [%- END %]
index 8fdea97..9ad8853 100755 (executable)
@@ -21,7 +21,7 @@
              <br />
              <input type="submit" class="fixed" value="[% l('OK') %]" />
              </form>
-            <div class="common-full-pad"></div>        
+            <div class="common-full-pad"></div>
         </div>
     </div>
 [%- END %]