- 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>
/////////////////////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>
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>
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 = '';">← [%l ('Back') %]</a>
+ <a class="btn btn-action btn-sm" href="[% mkurl('', {bpivot => ctx.back_pivot}) %]" onclick="$('#browse-pager-spinner-[% id %]').removeClass('hidden');">← [%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') %] →</a>
+ <a class="btn btn-action btn-sm" href="[% mkurl('', {bpivot => ctx.forward_pivot}) %]" onclick="$('#browse-pager-spinner-[% id %]').removeClass('hidden');">[%l ('Next') %] →</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>
/*
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; }
.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; }
.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; }
.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; }
.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;
#topnav_logo img {
width: 200px;
}
-
+
#gold-links-holder {
display: none;
}
float:left;
[% END -%]
}
-
+
#holds_box form blockquote {
[% IF rtl == 't' -%]
margin-right: 10px;
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%;
#adv_search_parent {
font-size: [% css_fonts.size_smaller %];
}
- #adv_search_filters {
- position: relative;
+ #adv_search_filters {
+ position: relative;
width: 300px;
}
#format_actions {
}
.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 -%]
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" */
}
@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) {
%]
.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; }
.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; }
.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; }
.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; }
.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;
}
}
.NovSectionHeader{
- font-size: 16pt !important;
+ font-size: 16pt !important;
font-weight: 600 !important;
}
.NovSelectImageHeadingToggle{
- font-size: 20px;
-
+ font-size: 20px;
+
}
/*Novelist Styling End*/
.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 %];
}
.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{
.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{
.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{
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 {
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;
}
*/
+#actions .btn-action {
+ text-align: left;
+}
+
#adv_numeric_block{
max-width: 600px;
}
}
-/*
+/*
#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.
*/
}
#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 %]);
font-weight: bold;
position: relative;
top:4px;
-
+
}
#header-links a {
height:0px;
}
+.search_box_wrapper {
+ padding-left: 1rem;
+}
+
#search-wrapper {
/*border-bottom: 1px solid [% css_colors.border_standard %];*/
padding-bottom: 5px;
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 %]
[%- 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;
}
background-color: [% css_colors.background %];
}
+#cartDropdown .dropdown-menu {
+
+}
+
#content-wrapper {
background-color: [% css_colors.background %];
height: auto;
padding-left: 0px;
[%- END %]
margin: 0 1em;
- clear: both;
+ clear: both;
}
#main-content-after-bar {
[%- 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 %];
}
+.results_header_nav1 {
+ text-align: center;
+}
.results_header_nav1 .h1 {
font-size: [% css_fonts.size_bigger %];
[% ELSE; %]
float: right;
margin-right: 5em;
- [% END; %]
+ [% END %]
}
#record_basket_icon {
[% IF rtl == 't' -%]
[% ELSE; %]
float: right;
margin-right: 2em;
- [% END; %]
+ [% END %]
position: relative;
}
#record_basket_count_floater {
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);
#myopac_holds_main_table td {
border: 1px solid [% css_colors.border_dark %];
-
+
}
.myopac-hold-available {
[% ELSE -%]
padding-left: .5em;
[% END -%]
-
+
}
/* div for the payment buttons with the total */
}
#fines_payments_wrapper {
- padding-left: 5px;
+ padding-left: 5px;
padding-right: 5px;
}
#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;
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;
}
}
#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 %]);
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 {
}
#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' -%]
.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;
}
.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 -%]
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 %];
}
.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;
height: 15px;
}
.opac-alert { color: [% css_colors.text_alert %]; }
+
.float-left {
[% IF rtl == 't' -%]
float: right;
padding: 3px 5px;
}
.popmenu li ul {
- display: none;
+ display: none;
width: 10em; /* Width to help Opera out */
background-color: [% css_colors.primary %];
}
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. */
border-bottom-color: [% css_colors.border_dark %];
border-bottom-style: solid;
}
-
+
.password_message {
padding-top: 1em;
padding-bottom: 0.5em;
- font-style: italic;
+ font-style: italic;
}
#maintenance_message {
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;
}
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;
#topnav_logo img {
width: 200px;
}
-
+
#gold-links-holder {
display: none;
}
float:left;
[% END -%]
}
-
+
#holds_box form blockquote {
[% IF rtl == 't' -%]
margin-right: 10px;
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%;
#adv_search_parent {
font-size: [% css_fonts.size_smaller %];
}
- #adv_search_filters {
- position: relative;
+ #adv_search_filters {
+ position: relative;
width: 300px;
}
#format_actions {
}
.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 -%]
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" */
}
-/*
+/*
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;
#clear-history-confirm {
font-weight: bold;
- color: [% css_colors.text_badnews %];
+ color: [% css_colors.text_badnews %];
padding: 10px;
}
/*
#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' -%]
.search-filter{
display: inline;
+ white-space: nowrap;
}
#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 */
color: #fff !important;
}
+.nav-link.active {
+ color: #000;
+}
+
.pref_table{
margin: 10px;
}
background-color: [% css_colors.facets_back %];
color: [% css_colors.facets_text %];
}
+.facet_box_wrapper .card-body {
+ padding: .5rem;
+}
.vertMid {
position: relative;
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;
+}
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 %]
<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 %]
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 %]
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>
<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 %]
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 %]
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 %]
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">◄</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>
%]
<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' && !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' && !inputs[i].disabled) inputs[i].checked = this.checked;}"
/>
</td>
[%# 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...
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;
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>
%]
<h3>[% l('Holds History') %]</h3>
-<div id='myopac_holds_div'>
-
+<div id='myopac_holds_div'>
+
<div>
<div>
<div>
[% 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 %]
ahr = hold.hold.hold %]
<tr>
-
+
<td>
<span class="sr-only">Title</span>
<div>
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') %]►</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' && !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' && !inputs[i].disabled) inputs[i].checked = this.checked;}"/>
</td>
[%# 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 %]
[% 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">
[% 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;
[% 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;
<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">
<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> </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">►</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' && !inputs[i].disabled && 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' && !inputs[i].disabled && 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' && !inputs[i].disabled && 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' && !inputs[i].disabled && 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>
[% l("E-Items ready for pickup") %] (<span id="acct_sum_ebook_hold_ready_total">-</span>)
</a>
</div>
-
+
</div>
-
+
</div>
</div>
- [% content %]
+ [% content %]
</div>
[% END %]
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 %]
FOR p IN ctx.payment_response.payments;
print_args.push('payment=' _ p);
END %]
- <a href="[% ctx.opac_root %]/myopac/receipt_print?[% print_args.join('&') %]"
+ <a href="[% ctx.opac_root %]/myopac/receipt_print?[% print_args.join('&') %]"
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>
[% ctx.printable_receipt.template_output.data %]
<br />
</tt>
- <hr>
+ <hr>
[% ELSE %]
<div class="payment-error">
[% l(
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>
[% 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 %]&offset=[% offset + limit %]'
><span class="np_nav_link classic_link btn btn-action">[% l('Next') %] ►</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 %]
<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
-<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">◄</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;
%]
<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">►</span></a></li>
-
-[% END; %]
+
+[% END %]
</ul>
-
+
</div>
[% IF ctx.message_update_action.defined %]
[% IF ctx.message_update_changed > 0 %]
<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>
<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' && !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 %]
<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>
<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>
<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 %]
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 %]
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 %]
<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 %]
<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>
[% 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>
<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>
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 %]
[% 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>
[% 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>
<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 %]
[% 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>
<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 %]
[% 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>
<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>
</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>
<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>
<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') %]"
<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 %]
<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>
INCLUDE build_org_selector id=lib_select_id show_loc_groups=1
%]
</label>
- <br/>
+ <br/>
</div>
<div class="col-12 my-3">
<!-- 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 %]>
<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" />
<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>
</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>
)
-%]">[% 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);
<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 %]&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>
[% END;%]
<h2 class="sr-only">[% l('Additional Resources') %]</h2>
[% INCLUDE 'opac/parts/footer.tt2' %]
-
+
[% INCLUDE 'opac/parts/js.tt2' %]
<script>
$(document).ready(function(){
[%- INCLUDE 'opac/parts/chilifresh.tt2' %]
[%- END %]
-
+
</body>
</html>
# 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";
<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>
-[%-
- # 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;
-%]
[% 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 = [];
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">
-[%- 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 %]"/>
-[%-
- # 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 = [];
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') %]
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');
##############################################################################
ctx.max_cart_size = 500;
##############################################################################
-# Display booking reservations tab in myopac
+# Display booking reservations tab in myopac
##############################################################################
ctx.show_reservations_tab = 'false';
#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');
##############################################################################
ctx.max_cart_size = 500;
##############################################################################
-# Display booking reservations tab in myopac
+# Display booking reservations tab in myopac
##############################################################################
ctx.show_reservations_tab = 'false';
[%
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",
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
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",
#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 = "",
};
-
+
%]
size_big = "110%",
size_bigger = "125%",
size_biggest = "150%"
- font_main = "Arial, Helvetica, sans-serif",
+ font_main = "Arial, Helvetica, sans-serif",
}
%]
-[%-
+[%-
# 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;
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;
-%]
-<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") %]'>
[% 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 © 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 %]
_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>
# 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;
[% BLOCK get_hold_status %]
-<div>
+<div>
[% IF hold.hold.status == 4 %]
<span class="myopac-hold-available">[% l("Available") %] </span>
[% IF ahr.shelf_expire_time %]
-<div id="homeLogo">
-
-</div>
+
+[%-
+ PROCESS "opac/parts/css/colors.tt2";
+%]
+
[% PROCESS carousels %]
-
+
<script src="[% ctx.media_prefix %]/js/ui/default/opac/simple.js[% ctx.cache_key %]"></script>
[% INCLUDE "opac/i18n_strings.tt2" %]
[% 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 %]
<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();
<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; -%]
[%- 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">
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;
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;
# 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;
[%- 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;
[%- 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 %]
%]
</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>
<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">
[% 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>
</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>
-<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>
<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>
<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>
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)
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>
</div>
</div>
[% END %]
-
+
</div>
[% END # metarecord_hold_filters_selector %]
-[%-
+[%-
# 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
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 -%]
[% 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 %]
-[%# 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)
%]
[%# 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
PROCESS "opac/parts/misc_util.tt2";
WRAPPER "opac/parts/myopac/base.tt2";
-
+
%]
[% END %]
[%
# 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]
#
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;
# 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"';
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');
# 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 = '';
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 %]>
[% ' ' FOR [0..pad_depth]; display_name | html %]
- </option>
+ </option>
[%- END %]
</select>
// 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;
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 %]" />
<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') %]
<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"
<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 %]
<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>
[% END %]
</table>
[% END %]
-
+
[% IF some_holds_allowed %]
[%- 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">
[% 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">