- 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">
[% l('Yes, by Phone') %]
</label>
</div>
-
+
<p>
<label>[% l('Phone Number:') %]<input type="text" class="form-control" name="phone_notify" [% setting = 'opac.default_phone';
IF ctx.user_setting_map.$setting; %] value='[% ctx.user_setting_map.$setting | html %]'
ELSE;
l('Suspend these holds?');
END %]
- <a href="#" title="[% l('A suspended hold will retain its place in the queue, but will not be fulfilled until it has been activated.') %]" data-toggle="tooltip">
- <i class="fas fa-question-circle"></i>
+ <a href="#" aria-label="[% l('A suspended hold will retain its place in the queue, but will not be fulfilled until it has been activated.') %]" title="[% l('A suspended hold will retain its place in the queue, but will not be fulfilled until it has been activated.') %]" data-toggle="tooltip">
+ <i class="fas fa-question-circle" aria-hidden="true"></i>
</a>
</label>
</div>
[% END %]
-
-
-
-
- <a class="btn btn-sm btn-action m-2" id="actDateToggle" href="#toggled-block-suspend" onclick="return toggleActivationDate();"><i class="fas fa-calendar"></i> [% l('Set activation date') %]</a>
+
+
+
+
+ <a class="btn btn-sm btn-action m-2" id="actDateToggle" href="#toggled-block-suspend" onclick="return toggleActivationDate();"><i class="fas fa-calendar" aria-hidden="true"></i> [% l('Set activation date') %]</a>
</div>
<blockquote id="toggled-block-suspend">
<label for="thaw_date">[% l('Activate on') %]
</div>
</div>
</blockquote>
-
+
[% IF CGI.param('from_basket') %]
-
+
<div class="form-check m-2">
<input class="form-check-input" type="checkbox" value="" id="clear_cart" />
<label class="form-check-label" for="clear_cart">
</label>
</div>
[% END %]
- [% IF NOT metarecords.disabled AND ctx.hold_data.size == 1 %]
+ [% IF NOT metarecords.disabled AND ctx.hold_data.size == 1 %]
[% IF CGI.param('hold_type') == 'T' AND hdata.record.metarecord AND !hdata.part_required %]
<!-- Grab the bre_id so that we can restore it if user accidentally clicks advanced options -->
[% bre_id = hdata.target.id %]
- <a id='advanced_hold_link' class="m-2 btn btn-sm btn-primary"
- href="[% mkurl('', {hold_type => 'M', hold_target => hdata.record.metarecord.id, bre_id => bre_id}) %]"><i class="fas fa-cog"></i>
+ <a id='advanced_hold_link' class="btn btn-sm btn-link"
+ href="[% mkurl('', {hold_type => 'M', hold_target => hdata.record.metarecord.id, bre_id => bre_id}) %]"><i class="fas fa-cog" aria-hidden="true"></i>
[% l('Advanced Hold Options') %]</a>
[% END %]
[% IF CGI.param('hold_type') == 'M' AND CGI.param('bre_id') %]
<input type="hidden" name="bre_id" value="[% CGI.param('bre_id') %]" />
- <a id='basic_hold_link' class="m-2 btn btn-sm btn-primary"
- href="[% mkurl('', {hold_target => CGI.param('bre_id'), hold_type => 'T'}) %]"><i class="fas fa-cog"></i>
+ <a id='basic_hold_link' class="btn btn-sm btn-link"
+ href="[% mkurl('', {hold_target => CGI.param('bre_id'), hold_type => 'T'}) %]"><i class="fas fa-cog" aria-hidden="true"></i>
[% l('Basic Hold Options') %]</a>
[% END %]
[% IF hdata.metarecord_filters.formats.size OR # should this be size > 1
<div class="py-3">
<button id="place_hold_submit" type="submit" name="submit" class="btn btn-confirm" ><i class="fas fa-check"></i> [% l('Submit') %]</button>
[% END # some_holds_allowed %]
- <button type="reset" name="cancel" onclick="window.location='[% redirect | html %]'" id="holds_cancel" class="btn btn-deny"><i class="fas fa-ban"></i> [% l('Cancel') %]</button>
+ <button type="reset" name="cancel" onclick="window.location='[% redirect | html %]'" id="holds_cancel" class="btn btn-deny"><i class="fas fa-ban" aria-hidden="true"></i> [% l('Cancel') %]</button>
</div>
</form>
</div>
PROCESS get_marc_attrs args=attrs %]
<tr>
<td>
- [%
+ [%
override = 0;
IF hdata.could_override || hdata.hold_local_alert;
override_possible = 1;
END;
%]
[% IF override %]
- <input
+ <input
type="checkbox" name="hold_target" value="[% hdata.target.id | html %]"
- checked='checked' />
- [% END %]
+ checked='checked' />
+ [% END %]
</td>
<td>
-
+
[% IF hdata.parts %]
<input type='hidden' name='part' value='[% hdata.selected_part || '' %]'/>
[% END %]
-
+
[% IF hdata.hold_success %]
<h5 class="success"><i class="fas fa-check-circle"></i> [% l("Hold was successfully placed for: "); %]</h5>
- [%
+ [%
title = attrs.title_extended;
IF hdata.selected_part AND hdata.parts AND hdata.parts.size > 0;
FOREACH part IN hdata.parts;
END;
END;
%]
-
+
<div class='hold-items-list-title'><p>[% title | html %]</p></div>
<div>
[% IF hdata.frozen %]
-
+
[% l("Hold is suspended") %]
[% IF hdata.thaw_date %]
<br/>
[% l("Reactivate on [_1]", date.format(ctx.parse_datetime(hdata.thaw_date), DATE_FORMAT));
END %]
-
+
[% END %]
</div>
[% IF ctx.is_staff %]
[% |l %]You have permission to override some of the failed holds. Click Submit to override and place your hold on the selected items.[% END %]
</div>
<span>
- <button id="place_hold_submit" type="submit" name="submit" class="btn btn-confirm"><i class="fas fa-save"></i> [% l('Submit') %]</button>
+ <button id="place_hold_submit" type="submit" name="submit" class="btn btn-confirm"><i class="fas fa-save" aria-hidden="true"></i> [% l('Submit') %]</button>
</span>
[% END %]
-
- [% IF any_failures OR ctx.general_hold_error %]
- <span><a class="btn btn-confirm" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-arrow-circle-left"></i> [% l('Back To Search') %]</a></span>
- <a class="btn btn-deny" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-times"></i> [% l('Cancel') %]</a>
+ [% IF any_failures OR ctx.general_hold_error %]
+ <span><a class="btn btn-confirm" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-arrow-circle-left" aria-hidden="true"></i> [% l('Back To Search') %]</a></span>
+ <a class="btn btn-deny" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-times" aria-hidden="true"></i> [% l('Cancel') %]</a>
[% ELSE %]
<div class='hold_success_links'>
- <span><a class="btn btn-confirm" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-arrow-circle-left"></i> [% l('Back To Search') %]</a></span>
+ <span><a class="btn btn-confirm" href="[% CGI.param('redirect_to') || CGI.referer | html %]"><i class="fas fa-arrow-circle-left" aria-hidden="true"></i> [% l('Back To Search') %]</a></span>
[% IF ctx.is_staff %]
[% IF CGI.param('hold_type') == 'C';
hold_type_label = l('copy');
<span class="preflib">[%
l('Preferred library: [_1]', '<span class="bold">' _ ctx.get_aou(ctx.pref_ou).name _ '</span>');
IF NOT ctx.is_staff %]<a href="[% mkurl(ctx.opac_root _ '/myopac/prefs_settings')
- %]" class="preflib_change" title="[% l("Change preferred library"); %]">[% l('?') %]</a>[% END; %]
+ %]" class="preflib_change" title="[% l("Change preferred library"); %]">[% l('?') %]</a>[% END %]
</span>
-[%- END; %]
+[%- END %]
-[%-
+[%-
UNLESS params;
params = ['locg', 'loc', 'query', 'qtype', 'sort'];
END;
END;
-%]
-<select aria-label="[% l('Select query type:') %]" class="form-control w-100" name="[% name || 'qtype' %]"[% IF id; ' id="'; id ; '"' ; END -%]>
+<select class="form-control w-100" name="[% name || 'qtype' %]"[% IF id; ' id="'; id ; '"' ; END -%]
+ title="[% l('Select query type:') %]">
[% query_type = query_type || CGI.param('qtype') || search.default_qtypes.0;
FOR qt IN query_types;
NEXT IF browse_only AND NOT qt.browse -%]
-<div class='rdetail_extras_div'>
+<div class='rdetail_extras_div'>
-[%
+[%
ac_types = {
reviews => l('Reviews'),
anotes => l('Author Notes'),
};
selected_type = CGI.param('ac');
-
+
# For each type of added content, render the link if it's known to have
- # content, do not render the link if it's known to not have content. If
+ # content, do not render the link if it's known to not have content. If
# the content status is unknown, render the link, but hide the link via CSS
# if dojo is enabled. If dojo is not enabled, render and display the link.
%]
<div id='ac_tab_wrapper'>
- [%
+ [%
all_hidden = 1;
FOR type IN ac_types.keys;
tab_class = 'ac_tab';
- SET tab_class = tab_class _ ' ac_tab_selected' IF type == selected_type;
+ SET tab_class = tab_class _ ' ac_tab_selected' IF type == selected_type;
IF ctx.added_content.$type.status != '2'; # no content
all_hidden = 0;
IF ctx.added_content.$type.status == '3' AND want_dojo; # status unknown
</div>
<div id='ac_content'>
- [%
- IF selected_type;
+ [%
+ IF selected_type;
content = ctx.added_content.$selected_type.content;
IF content;
content;
-[%-
+[%-
PROCESS "opac/parts/relators.tt2";
author_cnt = 0;
authors = [
{
- type => 'author',
+ type => 'author',
label => l('Author'),
xpath => '//*[@tag="100"]|//*[@tag="110"]|//*[@tag="111"]'
}, {
- type => 'added',
+ type => 'added',
label => l('Added Author'),
xpath => '//*[@tag="700"]|//*[@tag="710"]|//*[@tag="711"]'
}, {
- type => 'cast',
+ type => 'cast',
label => l('Cast'),
xpath => '//*[@tag="511"][@ind1="1"]'
}, {
- type => 'notes',
+ type => 'notes',
label => l('Author Notes: '),
xpath => '' # Comes from added content...
}
END;
END;
url = mkurl(ctx.opac_root _ '/results', {query => qterm.replace('^\s*(.*?)\s*$', '$1'), qtype => 'author'}, stop_parms.merge(expert_search_parms, general_search_parms, browse_search_parms, facet_search_parms));
- tlabel = tlabels.join(', ');
- tlabels = [];
+ tlabel = tlabels.join(', ');
+ tlabels = [];
author_type = (tlabel || label) | html;
-
+
# schema.org changes
IF type == 'author';
IF tag.substr(1,2) == '10' && args.schema.itemtype && args.schema.itemtype.match('MusicAlbum');
<div class='rdetail_authors_div'>
[%- FOREACH author IN authors;
- NEXT UNLESS author.xpath;
+ NEXT UNLESS author.xpath;
authlist = [];
PROCESS build_author_links(
xpath=author.xpath, label=author.label, type=author.type
-<div class='rdetail_extras_div'>
+<div class='rdetail_extras_div'>
<!-- Chilifresh patron reviews -->
- [% IF ENV.OILS_CHILIFRESH_URL %]
+ [% IF ENV.OILS_CHILIFRESH_URL %]
<strong>[% l('Patron Reviews:') %]</strong>
<div style="margin-bottom:20px;">
<span class="chili_review" id="isbn_[% attrs.isbn_clean | html %]"> </span>
</div>
[% END %]
<!-- Novelist suggestions-->
- [% IF ENV.OILS_NOVELIST_URL %]
+ [% IF ENV.OILS_NOVELIST_URL %]
<div id='novelist-loading'>
<h3 class="text-center">[% l('Loading Recommendations...') %]</h3>
<div class="progress">
</div>
<div data-novelist-novelistselect="[% attrs.isbn_clean || attrs.upc %]"></div>
[% END %]
-
+
</div>
-[%
+[%
cnoffset = CGI.param('cnoffset');
cnoffset = cnoffset.match('^-?\d+$') ? cnoffset : 0; # verify cnoffset is a sane value
%]
<div class='cn_browser'>
- <div id='cn_browse_div'>
+ <div id='cn_browse_div'>
<p class='color_4 h5'>
[% l("You are now browsing [_1]", ctx.browsing_ou.name) | html %]
</p>
- <br>
- <table class="w-100">
- <tr>
- <td class="text-left">
- <a class='btn btn-action'
- href="[% mkurl('', {cnoffset => cnoffset - 1}) %]#cnbrowse">[% l("<< Previous Page") %]</a>
- </td>
- <td colspan='1' class="h3 text-center">[% l("Shelf Browser") %]</td>
- <td class="text-right">
- <a class='btn btn-action'
- href="[% mkurl('', {cnoffset => cnoffset + 1}) %]#cnbrowse">[% l("Next Page >>") %]</a>
- </td>
- </tr>
+
+ <div class="row">
+ <div class="col-3">
+ <a class='np_nav_link classic_link btn btn-outline-primary' href="[% mkurl('', {cnoffset => cnoffset - 1}) %]#cnbrowse">[% l("<< Previous Page") %]</a>
+ </div>
+
+ <div class="col-6 text-center">
+ <h3>[% l("Shelf Browser") %]</h3>
+ </div>
+
+ <div class="col-3 text-right">
+ <a class='np_nav_link classic_link btn btn-outline-primary' href="[% mkurl('', {cnoffset => cnoffset + 1}) %]#cnbrowse">[% l("Next Page >>") %]</a>
+ </div>
+ </div>
+
+ <hr />
+
+ <table class='data_grid bookshelf'>
<tbody>
[%- tr_open = 0;
PROCESS get_library;
<tr class='cn_browse_row'>
[% END -%]
<td class='cn_browse_item'>
- <div class="card">
+ <div class="card">
[% rec_attrs = {marc_xml => cn.record.marc};
PROCESS get_marc_attrs args=rec_attrs; %]
- <a href="[% mkurl(ctx.opac_root _ '/record/' _ cn.record.id, {$loc_name => loc_value}, 1) %]"><img height='60' width='50'
- class='cn_browse_info'
+ <a href="[% mkurl(ctx.opac_root _ '/record/' _ cn.record.id, {$loc_name => loc_value}, 1) %]"><img height='60' width='50'
+ class='cn_browse_info'
[% img_alt(l('Go to record [_1]', rec_attrs.title)) %]
src="[% ctx.media_prefix %]/opac/extras/ac/jacket/small/r/[% cn.record.id | uri %]" /></a>
<div class='cn_browse_info bold'>[% cn.label | html %]</div>
}, {
label => l('Source of Description Note: '),
xpath => '//*[@tag="588"]'
- }
+ }
];
BLOCK render_contents;
title="[% l('Show copies at [_1]', ou_name) | html; %]">
[%- l('(Show)'); %]</a>
[%- END; %]
- </li>
+ </li>
[%- depth = depth + 1;
END;
<ul><li>
<span class="bib_peer_type">[% bib.peer_type.name | html %]</span>:
<a href="[% mkurl(ctx.opac_root _ '/record/' _ bib.target_copy.call_number.record) %]">
- <span class="bib_peer_title">[% peer.title | html %]</span> /
+ <span class="bib_peer_title">[% peer.title | html %]</span> /
<span class="bib_peer_author">[% peer.author | html %]</span>
</a>
</li></ul>
<link property="businessFunction" href="http://purl.org/goodrelations/v1#LeaseOut">
<meta property="price" content="0.00">
</td>[% END %]
- <td><span property="sku">[% callnum | html %]</span> [% IF ctx.get_org_setting(CGI.param('loc')
- OR ctx.aou_tree.id, 'sms.enable') == 1 %](<a href="[% mkurl(ctx.opac_root _ '/sms_cn',
+ <td><span property="sku">[% callnum | html %]</span> [% IF ctx.get_org_setting(CGI.param('loc')
+ OR ctx.aou_tree.id, 'sms.enable') == 1 %](<a href="[% mkurl(ctx.opac_root _ '/sms_cn',
{copy_id => copy_info.id}) %];rec=[%- ctx.bre_id -%]" rel="nofollow" vocab="">Text</a>)[% END %]</td>
[%- IF has_parts == 'true' %]
<td>[% copy_info.part_label | html %]</td>
[% IF ctx.is_staff %]
[%- IF ctx.is_browser_staff %]
<a target="_blank" href="[% ctx.base_path %]/staff/cat/item/[% copy_info.id %]">[% l('view') %]</a>
- [% IF ctx.has_perm('UPDATE_COPY', copy_info.circ_lib)
+ [% IF ctx.has_perm('UPDATE_COPY', copy_info.circ_lib)
OR ctx.has_perm('UPDATE_COPY', copy_info.call_number_owning_lib) %]
<span> | </span>
<a target="_blank" href="[% ctx.base_path %]/staff/cat/item/[% copy_info.id %]/edit">[% l('edit') %]</a>
<a onclick="xulG.new_tab(xulG.urls.XUL_COPY_STATUS, {}, {'from_item_details_new': true, 'barcodes': ['[%- copy_info.barcode | html | replace('\'', '\\\'') -%]']})"
href="javascript:;">[% l('view') %]</a>
[%# if the user can edit copies, show the copy edit link %]
- [% IF ctx.has_perm('UPDATE_COPY', copy_info.circ_lib)
+ [% IF ctx.has_perm('UPDATE_COPY', copy_info.circ_lib)
OR ctx.has_perm('UPDATE_COPY', copy_info.call_number_owning_lib) %]
<span> | </span>
- <a href="javascript:;"
+ <a href="javascript:;"
onclick="xulG.volume_item_creator({copy_id : [% copy_info.id %]})">
[% l(' edit') %]
</a>
[% copy_info.age_protect ?
ctx.get_crahp(copy_info.age_protect).name : l('None') | html %]
</td>
- <td>[%
+ <td>[%
IF ctx.get_org_setting(copy_info.circ_lib, 'circ.holds.age_protect.active_date') == 1;
disp_date = copy_info.active_date ? copy_info.active_date : copy_info.create_date;
ELSE;
disp_date = copy_info.create_date;
END;
-
+
IF disp_date;
date.format(
ctx.parse_datetime(disp_date),
param_sep = l(" / ");
# Only staff get to place copy or volume holds
- IF ctx.is_staff;
+ IF ctx.is_staff;
hold_link = '<a href="' _
mkurl(ctx.opac_root _ '/place_hold', {
hold_target => copy_info.id,
hold_source_page => mkurl()
}) _ '">' _ l('Copy hold') _ '</a>';
IF copy_info.call_number != last_cn;
- last_cn = copy_info.call_number;
+ last_cn = copy_info.call_number;
hold_link = hold_link _ param_sep;
hold_link = hold_link _ '<a href="' _
mkurl(ctx.opac_root _ '/place_hold', {
IF serial_holdings;
hold_link = hold_link _ param_sep;
END;
- END;
- IF serial_holdings;
+ END;
+ IF serial_holdings;
hold_link = hold_link _
'<a class="rdetail-issue-place-hold" href="' _
mkurl(ctx.opac_root _ '/place_hold', {
hold_type => 'I',
hold_source_page => mkurl()
}) _ '" rel="nofollow" vocab="">' _ l('Issue hold') _ '</a>';
- END;
+ END;
hold_link;
- ELSE;
+ ELSE;
l("Not holdable");
END %]</td>
[%- END %]
[%- END; # FOR copy_info
%]
- [%- IF ctx.copy_offset > 0 AND NOT serial_holdings;
- new_offset = ctx.copy_offset - ctx.copy_limit;
+ [%- IF ctx.copy_offset > 0 AND NOT serial_holdings;
+ new_offset = ctx.copy_offset - ctx.copy_limit;
IF new_offset < 0; new_offset = 0; END %]
[%- IF copies.size >= ctx.copy_limit AND NOT serial_holdings AND (ctx.copy_offset + ctx.copy_limit < total_copies) %]
- <tr class="offset">
- [%- IF ctx.copy_offset > 0 AND NOT serial_holdings;
- new_offset = ctx.copy_offset - ctx.copy_limit;
- IF new_offset < 0; new_offset = 0; END %]
- <td>
+ <tr class="offset">
+ [%- IF ctx.copy_offset > 0 AND NOT serial_holdings;
+ new_offset = ctx.copy_offset - ctx.copy_limit;
+ IF new_offset < 0; new_offset = 0; END %]
+ <td>
<a href="[% mkurl('', {copy_offset => new_offset, copy_limit => ctx.copy_limit}) %]">« [%
l('Previous [_1]', ctx.copy_offset - new_offset) %]</a>
- </td>
- [%- END %]
- [%- IF copies.size >= ctx.copy_limit AND NOT serial_holdings AND (ctx.copy_offset + ctx.copy_limit < total_copies) %]
- <td>
- <a href="[% mkurl('', {copy_offset => ctx.copy_offset + ctx.copy_limit, copy_limit => ctx.copy_limit}) %]">[%
+ </td>
+ [%- END %]
+ [%- IF copies.size >= ctx.copy_limit AND NOT serial_holdings AND (ctx.copy_offset + ctx.copy_limit < total_copies) %]
+ <td>
+ <a href="[% mkurl('', {copy_offset => ctx.copy_offset + ctx.copy_limit, copy_limit => ctx.copy_limit}) %]">[%
l('Next [_1]', ctx.copy_limit) %] »</a>
- </td>
- [%- END %]
+ </td>
+ [%- END %]
</tr>
[%- END %]
[%- END %]
[% IF NOT serial_holdings && ctx.copy_limit < total_copies -%]
- <tr class="not_serial">
- <td>
- [%- more_copies_limit = 50 %] [%# TODO: config %]
- [%- IF ctx.copy_limit != more_copies_limit AND copies.size >= ctx.copy_limit AND ctx.copy_limit < total_copies %]
- <div class="rdetail_show_copies">
- <img src="[% ctx.media_prefix %]/images/plus_sign.png[% ctx.cache_key %]" alt="[% l('Show more copies icon') %]"/>
- <a href="[% mkurl('', {copy_limit => more_copies_limit, copy_offset => 0}) %]">[% l('Show more copies') %]</a>
- </div>
- [%- ELSIF ctx.copy_limit == more_copies_limit %]
- <div class="rdetail_show_copies">
- <img src="[% ctx.media_prefix %]/images/minus_sign.png[% ctx.cache_key %]" alt="[% l('Show fewer copies icon') %]"/>
- <a href="[% mkurl('', {copy_limit => 0, copy_offset => 0}) %]">[% l('Show fewer copies') %]</a>
- </div>
- [%- END %]
- </td>
- </tr>
- [%- END %]
+ <tr class="not_serial">
+ <td>
+ [%- more_copies_limit = 50 %] [%# TODO: config %]
+ [%- IF ctx.copy_limit != more_copies_limit AND copies.size >= ctx.copy_limit AND ctx.copy_limit < total_copies %]
+ <div class="rdetail_show_copies">
+ <a href="[% mkurl('', {copy_limit => more_copies_limit, copy_offset => 0}) %]"><i class="fas fa-plus-square"></i> [% l('Show more copies') %]</a>
+ </div>
+ [%- ELSIF ctx.copy_limit == more_copies_limit %]
+ <div class="rdetail_show_copies">
+ <a href="[% mkurl('', {copy_limit => 0, copy_offset => 0}) %]"><i class="fas fa-minus-square"></i> [% l('Show fewer copies') %]</a>
+ </div>
+ [%- END %]
+ </td>
+ </tr>
+ [%- END %]
</tbody>
</table>
-[% END; %]
+[% END %]
arrow_down = '▼';
%]
<div>
- <div id='rdetail_extras_div' class="card-columns row" style='width: 100%;'>
+ <div id='rdetail_extras_div' class="card-columns row" style='width: 100%;'>
[%
IF ctx.google_books_preview;
label = l('Google Preview');
IF attrs.summaries.0; hide_summary = 0; ELSE;
# Expose content cafe if it's reasonable to do so.
# This approach only works when using embedded content cafe.
- IF ENV.OILS_CONTENT_CAFE_USER;
- ident = attrs.isbn_clean || attrs.upc;
+ IF ENV.OILS_CONTENT_CAFE_USER;
+ ident = attrs.isbn_clean || attrs.upc;
IF ident; hide_summary = 0; END;
END;
END;
END;
extras = [
- {name => 'summaryplus', label => l('Summaries & More'), hide => hide_summary},
- {name => 'annotation', label => l('Annotation'), hide => 1},
- {name => 'awards', label => l('Awards, Reviews, & Suggested Reads')},
+ {name => 'summaryplus', label => l('Summaries & More'), hide => hide_summary},
+ {name => 'annotation', label => l('Annotation'), hide => 1},
+ {name => 'awards', label => l('Awards, Reviews, & Suggested Reads')},
{name => 'excerpt', label => l('Excerpt'), hide => 1},
{name => 'issues', label => l('Issues Held'), hide => !(ctx.have_holdings_to_show || ctx.have_mfhd_to_show)},
- {name => 'preview', label => l('Preview'), hide => 1},
+ {name => 'preview', label => l('Preview'), hide => 1},
{name => 'addedcontent', label => l('Additional Content'), hide => hide_ac}, # hide if all content is known to not exist
{name => 'cnbrowse', label => l('Shelf Browser')},
{name => 'marchtml', label => l('MARC Record')}
];
FOREACH extra IN extras;
- IF extra.hide; NEXT; END;
+ IF extra.hide; NEXT; END;
name = extra.name;
%]
<div class="card border-secondary col-12 p-0">
- [%
+ [%
IF tab_is_active(name);
href = mkurl('', {}, ['expand', 'ac']);
arrow = arrow_down;
ELSE;
IF name == 'addedcontent' AND default_ac;
- href = mkurl('', {expand => name, ac => default_ac}) _ '#' _ name;
+ href = mkurl('', {expand => name, ac => default_ac}) _ '#' _ name;
ELSE;
- href = mkurl('', {expand => name}) _ '#' _ name;
+ href = mkurl('', {expand => name}) _ '#' _ name;
END;
arrow = arrow_right;
END;
%]
<a id='[% name %]' href='[% href %]' class="text-white" rel="nofollow" vocab="" style="text-decoration:none;">
<div class="card-header extra_header">
-
+
<span>[% arrow %] [% extra.label | html %]</span>
+ </a>
</div>
- </a>
[% IF tab_is_active(name); %]
<div class='card-body'>
-
+
[% IF name == 'marchtml';
ctx.marchtml;
ELSE;
END;
-%]
</div>
- [% END; %]
+ [% END %]
</div>
[% END %]
</div>
<tr>
<td class="rdetail-mfhd-foot" colspan="2"> </td>
</tr>
- [% END; %]
+ [% END %]
[% END %]
</tbody></table>
</div>
[% IF ctx.search_result_index.defined && ctx.search_result_index >= 0 %]
-<div class="row pt-2">
-
-
+<div class="col pt-2">
+ <div class="row">
<div class="col-3">
- <div>
+ <div>
[%
IF ctx.prev_search_record;
prev_args = {};
- IF ctx.search_page > 0 AND
+ IF ctx.search_page > 0 AND
ctx.search_result_index % ((ctx.page_size * ctx.search_page)) == 0; # first record in the page
prev_args.page = ctx.search_page - 1;
END;
href='[% ctx.prev_rec_url %]'><span class="nav_arrow_fix">◄</span> <span class="d-none d-md-inline-block">[% l('Previous') %]</span></a>
[% END %]
</div>
- </div>
+ </div>
<div class="col-6 text-center">
- <span>
- <a class="btn btn-confirm" href='[% mkurl(ctx.opac_root _ '/results', {}, stop_parms); %]#result[% ctx.bre_id %]'>[% l('Back To Results') %]</a>
- <!-- stash these in JS for the web staff client to find -->
- <script>
- window.search_result_hit_count = [% ctx.hit_count %];
- window.search_result_index = [% ctx.search_result_index %];
- </script>
- </span>
+ <span>
+ <a class="btn btn-confirm" href='[% mkurl(ctx.opac_root _ '/results', {}, stop_parms); %]#result[% ctx.bre_id %]'>[% l('Back To Results') %]</a>
+ <!-- stash these in JS for the web staff client to find -->
+ <script>
+ window.search_result_hit_count = [% ctx.hit_count %];
+ window.search_result_index = [% ctx.search_result_index %];
+ </script>
+ </span>
<br>
<span>
- [% l('Showing Item [_1] of [_2]', ctx.search_result_index + 1, ctx.hit_count) %]
+ [% l('Showing Item [_1] of [_2]', ctx.search_result_index + 1, ctx.hit_count) %]
</span>
<br>
<span>
- [%- INCLUDE "opac/parts/pref_lib_display.tt2" %]
+ [%- INCLUDE "opac/parts/pref_lib_display.tt2" %]
</span>
-
+
</div>
<div class="col-3 text-right">
- <div>
- [%
+ <div>
+ [%
IF ctx.next_search_record;
next_args = {};
IF (ctx.page_size * (ctx.search_page + 1)) == ctx.search_result_index + 1;
<a class='np_nav_link classic_link btn btn-action' title='[% l("Next Record") %]'
href='[% ctx.next_rec_url %]'><span class="d-none d-md-inline-block">[% l('Next') %]</span> <span class="nav_arrow_fix">►</span></a>
[% END %]
- </div>
+ </div>
+ </div>
</div>
</div>
[% END %]
ou_name = ctx.get_aou(loc).name | uri;
# Generate the gross RefWorks URL, based on parameters from config.tt2
- rw_uri = ctx.refworks.url _
+ rw_uri = ctx.refworks.url _
'/express/expressimport.asp?vendor=' _
ou_name _
'&filter=MARC+Format&database=All+MARC+Formats&' _
'encoding=65001&url=http%3A%2F%2F' _
- CGI.server_name _
- '/opac/extras/supercat/marctxt/record/' _
+ CGI.server_name _
+ '/opac/extras/supercat/marctxt/record/' _
ctx.bre_id;
%]
<div class="rdetail_aux_utils rdetail_refworks">
-[%-
- series_tags = ['440', '490', '800', '810', '811', '830', '694'];
+[%-
+ series_tags = ['440', '490', '800', '810', '811', '830', '694'];
loc = ctx.search_ou;
BLOCK render_series;
hl_field = attrs.hl_field;
FOREACH s IN attrs.hl_display_fields.series_title;
search_term = s.value.replace('[#"^$\+\-,\.:;&|\[\]()]', ' ').replace('\s+$', '') | html;
-
+
url = mkurl(ctx.opac_root _ '/results',
{ qtype=>'series', query=>search_term }, stop_parms.merge(expert_search_parms, general_search_parms, browse_search_parms, facet_search_parms)
);
single_term = subfield.textContent | html;
all_terms.push(subfield.textContent.replace('[#"^$\+\-,\.:;&|\[\]()]', ' '));
total_term = all_terms.join(" ").replace('\s+$', '');
-
+
url = mkurl(ctx.opac_root _ '/results',
{ qtype=>'series', query=>total_term }, stop_parms.merge(expert_search_parms, general_search_parms, browse_search_parms, facet_search_parms)
);
END;
results.push(series);
END;
- END;
+ END;
END;
FOR entry IN results;
-%]
-[%
+[%
subjects = [
{
display_field => 'subject',
</tr>
</tbody>
</table>
-[%
+[%
ELSE;
content = PROCESS render_subject(s=subj);
IF content.match('\S');
-
+
</div>
</div>
[%- INCLUDE "opac/parts/record/authors.tt2" %]
<div>
<button id="btnMore" data-toggle="collapse" data-target="#demo"
- class="btn btn-action text-left btn-sm my-3"><i class="fas fa-info-circle"></i> More Details</button>
+ class="btn btn-action btn-sm my-3"><i class="fas fa-info-circle" aria-hidden="true"></i> More Details</button>
<div id="demo" class="collapse">
<h2 id='rdetail_record_details'>[% l("Record details") %]</h2>
<ul class="list-unstyled">
</div>
</div>
-
+
</div>
<script>jQuery('#demo').on('hidden.bs.collapse', function () {
- jQuery('#btnMore').html("<i class='fas fa-info-circle'></i> More Details");
+ jQuery('#btnMore').html("<i class='fas fa-info-circle' aria-hidden='true'></i> More Details");
})
jQuery('#demo').on('shown.bs.collapse', function () {
- jQuery('#btnMore').html("<i class='fas fa-info-circle'></i> Less Details");
+ jQuery('#btnMore').html("<i class='fas fa-info-circle' aria-hidden='true'></i> Less Details");
})
</script>
</div>
<!--rdetail_title_div-->
- <div class="col-lg-4 text-right">
- <div class="mx-auto btn-group btn-group-vertical text-left dropright mt-3">
+ <div class="col-lg-4">
+ <div id="actions" class="mx-auto btn-group btn-group-vertical dropright mt-3">
[%- search_ou = ctx.search_ou;
IF ctx.place_unfillable ||
( attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size
&& (ctx.holds_block.enabled != 'true' || !attrs.org_copy_counts.$search_ou.available)
)
%]
- <div class="btn btn-action text-left">
- <a href="[% mkurl(ctx.opac_root _ '/place_hold',
+ <div class="btn btn-action">
+ <a href="[% mkurl(ctx.opac_root _ '/place_hold',
{hold_target => ctx.bre_id, hold_type => 'T', hold_source_page => mkurl()}, stop_parms) %]"
class="no-dec">
- <span class="place_hold"><i class="fas fa-check"></i> [% l('Place Hold') %]</span></a>
+ <span class="place_hold"><i class="fas fa-check" aria-hidden="true"></i> [% l('Place Hold') %]</span></a>
</div>
[%- END -%]
[%- IF ebook_api.enabled == 'true' && args.ebook %]
- <div class="btn btn-action text-left">
+ <div class="btn btn-action">
<div id="[%- ctx.bre_id -%]_ebook_checkout" class="rdetail_aux_utils ebook_action hidden">
<a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_checkout',
{title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'checkout'}, stop_parms) %]"
class="no-dec" rel="nofollow" vocab="">
- <span class="place_hold"><i class="fas fa-check"></i> [% l('Check Out E-Item') %]</span></a>
+ <span class="place_hold"><i class="fas fa-check" aria-hidden="true"></i> [% l('Check Out E-Item') %]</span></a>
</div>
</div>
- <div class="btn btn-action text-left">
+ <div class="btn btn-action">
<div id="[%- ctx.bre_id -%]_ebook_place_hold" class="rdetail_aux_utils ebook_action hidden">
<a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_place_hold',
{title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'place_hold'}, stop_parms) %]"
class="no-dec" rel="nofollow" vocab="">
- <span class="place_hold"><i class="fas fa-check"></i> [% l('Place Hold on E-Item') %]</span></a>
+ <span class="place_hold"><i class="fas fa-check" aria-hidden="true"></i> [% l('Place Hold on E-Item') %]</span></a>
</div>
</div>
[%- END -%]
- <div class="btn btn-action text-left">
+ <div class="btn btn-action">
[% operation = ctx.mylist.grep('^' _ ctx.bre_id _ '$').size ? "delete" : "add";
addhref = mkurl(ctx.opac_root _ '/mylist/add', {record => ctx.bre_id}, stop_parms);
delhref = mkurl(ctx.opac_root _ '/mylist/delete', {record => ctx.bre_id}, stop_parms);
label = (operation == "add") ? l("Add to Basket") : l("Remove from Basket");
%]
- <a href="[% addhref %]" id="mylist_add_[% ctx.bre_id %]"
+ <a href="[% addhref %]" id="mylist_add_[% ctx.bre_id %]"
data-recid="[% ctx.bre_id %]" data-action="add"
class="no-dec mylist_action [% IF ctx.mylist.grep('^' _ ctx.bre_id _ '$').size %]hidden[% END %]"
title="[% l(" Add [_1] to basket", attrs.title) %]" rel="nofollow" vocab="">
- <i class="fas fa-shopping-basket"></i>
+ <i class="fas fa-shopping-basket" aria-hidden="true"></i>
[% l("Add to basket") %]
</a>
- <a href="[% delhref %]" id="mylist_delete_[% ctx.bre_id %]"
+ <a href="[% delhref %]" id="mylist_delete_[% ctx.bre_id %]"
data-recid="[% ctx.bre_id %]" data-action="delete"
class="mylist_action [% IF !ctx.mylist.grep('^' _ ctx.bre_id _ '$').size %]hidden[% END %]"
title="[% l(" Remove [_1] from basket", attrs.title) %]" rel="nofollow" vocab="">
- <i class="fas fa-minus-circle"></i>
+ <i class="fas fa-minus-circle" aria-hidden="true"></i>
[% l("Remove from basket") %]
</a>
</div>
[% IF ctx.mylist.size %]
- <div class="btn btn-action text-left">
+ <div class="btn btn-action">
[%- IF ctx.user; %]
- <a href="[% mkurl(ctx.opac_root _ '/myopac/lists') %]" class="no-dec" rel="nofollow" vocab=""><i class="fas fa-glasses"></i> [% l(' View Basket') %]</a>
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/lists') %]" class="no-dec" rel="nofollow" vocab=""><i class="fas fa-glasses" aria-hidden="true"></i> [% l(' View Basket') %]</a>
[%- ELSE %]
- <a href="[% mkurl(ctx.opac_root _ '/mylist') %]" class="no-dec" rel="nofollow" vocab=""><i class="fas fa-glasses"></i> [% l(' View My Basket') %]</a>
+ <a href="[% mkurl(ctx.opac_root _ '/mylist') %]" class="no-dec" rel="nofollow" vocab=""><i class="fas fa-glasses" aria-hidden="true"></i> [% l(' View My Basket') %]</a>
[%- END %]
</div>
[% END %]
-
+
[% IF !ctx.is_staff %]
[% IF ctx.user; %]
[% INCLUDE "opac/parts/bookbag_actions.tt2"; %]
- [% END; %]
+ [% END %]
[% END %]
-
- <div class="btn btn-action text-left">
- <i class="fas fa-envelope-open-text"></i>
+
+ <div class="btn btn-action">
+ <i class="fas fa-envelope-open-text" aria-hidden="true"></i>
<a href="[% mkurl(ctx.opac_root _ '/record/print/' _ ctx.bre_id) %]" class="no-dec" rel="nofollow"
vocab="">[% l('Print') %]</a> /
<a href="[% mkurl(ctx.opac_root _ '/record/email/' _ ctx.bre_id) %]" class="no-dec" rel="nofollow"
[%- INCLUDE 'opac/parts/record/refworks.tt2' %]
[%- END %]
[% IF !ctx.is_staff %]
- <div class="btn btn-action text-left">
+ <div class="btn btn-action">
<a href="[% mkurl('', {locg =>CGI.param('locg'), copy_depth =>CGI.param('copy_depth')}, 1) %]"
class="no-dec">
- <i class="fas fa-link"></i>
+ <i class="fas fa-link" aria-hidden="true"></i>
[% l('Permalink') %]
</a>
</div>
[% END %]
[% IF !search.no_highlight %]
- <div class="btn btn-action text-left">
+ <div class="btn btn-action">
[% IF CGI.param('no_highlight') %]
<a href="[% mkurl('', {}, ['no_highlight']) %]" class="no-dec">
[% ELSE %]
<a href="[% mkurl('', {no_highlight => '1'}) %]" class="no-dec">
[% END %]
- <i class="fas fa-highlighter"></i>
+ <i class="fas fa-highlighter" aria-hidden="true"></i>
[% CGI.param('no_highlight') ? l('Enable Highlighting') : l('Disable Highlighting') %]
</a>
</div>
[% END %]
[%- IF ctx.is_staff %]
- <div class="btn btn-action text-left">
+ <div class="btn btn-action">
<a href="[% ctx.media_prefix %]/opac/extras/ac/clearcache/all/r/[% ctx.bre_id | uri %]"
class="no-dec" target="_blank">
- <i class="fas fa-sync-alt"></i>
+ <i class="fas fa-sync-alt" aria-hidden="true"></i>
[% l('Clear Added Content Cache') %]
</a>
</div>
[%- END %]
-
+
</div>
-
+
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
-
+
<div class="float-right">
-
+
<h2 class="text-right">[% l('Holds') %]</h2>
<p class="text-right">
[%
ctx.record_hold_count, ctx.copy_summary.$count_entry.count)
%]
</p>
-
+
</div>
[%-
-<div class='rdetail_extras_div'>
+<div class='rdetail_extras_div'>
[%- IF attrs.summary %]
<div class='rdetail-extras-summary'>
<strong>[% l('Summary: ') %]</strong>
[%- IF ENV.OILS_CONTENT_CAFE_USER %]
<!-- Embedded content cafe iframe -->
[% ident = attrs.isbn_clean || attrs.upc %]
- <iframe width="100%" height="400" frameborder="0"
- src="[% ctx.ext_proto %]://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=[%-
+ <iframe width="100%" height="400" frameborder="0"
+ src="[% ctx.ext_proto %]://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=[%-
ENV.OILS_CONTENT_CAFE_USER %]&Password=[% ENV.OILS_CONTENT_CAFE_PASS %]&ItemKey=[% ident | uri %]&Options=Y" >
</iframe>
[%- END %]
</div>
<a class="button remove_filter btn btn-deny btn-sm"
title="[% l('Remove [_1] filter', (crad.description || crad.label)) %]"
- aria-label="[% l('Remove [_1] filter', (crad.description || crad.label)) %]"
+ aria-label="[% l('Remove [_1] filter', (crad.description || crad.label)) %]"
href="[% mkurl('', {}, [remove_filter]) %]" rel="nofollow" vocab=""><span class="text-white">×</span> </a>
</div>
</div>
title="[% l('Remove location filter') %]"
href="[% mkurl('', {}, ['fi:locations']) %]" rel="nofollow" vocab=""> <span class="text-white">×</span></a>
</div>
- </div>
+ </div>
[%- END; # IF locations -%]
[%- IF pubdate_filters.grep('^' _ filter.name _ '$').size;
org_unit = ctx.get_aou(attrs.plib_copy_counts.$depth.org_unit);
ou_name = org_unit.name;
UNLESS displayed_ous.exists(ou_name);
-
+
%]
[%- IF attrs.plib_copy_counts.$depth.count > 0 AND (
hiding_disabled OR ctx.org_within_hiding_scope(org_unit.id)) %]
<div class="container-fluid my-3">
<div class="facet_box_wrapper row">
-[%
+[%
long_facets = CGI.param('long_facet') || [];
selected_facets = CGI.param('facet') || [];
IF facet.display;
- # facet display configuration present. Traverse the
- # configuration lists, find the matching facets from
- # search facet data, and append them to the sorted
+ # facet display configuration present. Traverse the
+ # configuration lists, find the matching facets from
+ # search facet data, and append them to the sorted
# list of facets.
FOR display_chunk IN facet.display;
FOR display_field IN display_chunk.facet_order;
# find the matching facet in the facet data
FOR facet IN ctx.search_facets.values;
- IF facet.cmf.field_class == display_chunk.facet_class
+ IF facet.cmf.field_class == display_chunk.facet_class
AND facet.cmf.name == display_field;
sorted_facets.push(facet);
END;
END;
END;
-ELSE;
+ELSE;
# No facet display configuration is present.
# show all facets, sorted by name.
# collect facet type labels for easier sorting
- labels = [];
+ labels = [];
FOR facet IN ctx.search_facets.values;
labels.push(facet.cmf.label);
END;
-
+
# We used to do a sort here, but now that's handled in EGCatLoader.
sorted_facets = ctx.search_facets.values;
END;
<div id="facets" class="col-xs-12 col-sm-12 col-md-6 col-lg-3">
<div class="card">
<div class="card-header">
- <h4 class="title text-center">[% facet.cmf.label %]</h4>
+ <h4 class="title text-center">[% facet.cmf.label %]</h4>
<span class="float-right">
[% IF long_facets.grep(long_key).0;
new_long = [];
[% l("Fewer") %]
</a>
[% ELSIF facet.data.size > DEFAULT_DISPLAY_COUNT %]
- <a class="button"
+ <a class="button"
title="[% l('Show More [_1] Entries', facet.cmf.label) %]"
href="[% mkurl('', {long_facet => long_facets.merge([long_key])}) %]#facets" rel="nofollow" vocab="">
[% l("More") %]
new_facets = [];
this_selected = 0;
FOR selected IN selected_facets;
- IF selected == param_string;
- this_selected = 1;
+ IF selected == param_string;
+ this_selected = 1;
ELSE;
new_facets.push(selected);
END;
display_count_by_cmf.$fid = display_count_by_cmf.$fid + 1;
IF this_selected;
- # This facet is already selected by the user.
+ # This facet is already selected by the user.
# Link removes the facet from the set of selected facets.
- %]
+ %]
<div class="facet_template facet_template_selected">
<div class="facet">
[% IF new_facets.size == 0 %]
</div>
<div class="count">([% facet_data.count; IF facet_data.count == (ctx.superpage + 1) * ctx.superpage_size; '+'; END %])</div>
</div>
- [%
+ [%
ELSE;
- # This facet is not currently selected. If selected,
+ # This facet is not currently selected. If selected,
# append this facet to the list of currently active facets.
%]
<div class="facet_template">
</div>
<div class="count">([% facet_data.count %])</div>
</div>
-
+
[% END %]
[% END %]
</div>
<div class="container-fluid my-3">
<div class="facet_box_wrapper row">
-[%
+[%
long_facets = CGI.param('long_facet') || [];
selected_facets = CGI.param('facet') || [];
IF facet.display;
- # facet display configuration present. Traverse the
- # configuration lists, find the matching facets from
- # search facet data, and append them to the sorted
+ # facet display configuration present. Traverse the
+ # configuration lists, find the matching facets from
+ # search facet data, and append them to the sorted
# list of facets.
FOR display_chunk IN facet.display;
FOR display_field IN display_chunk.facet_order;
# find the matching facet in the facet data
FOR facet IN ctx.search_facets.values;
- IF facet.cmf.field_class == display_chunk.facet_class
+ IF facet.cmf.field_class == display_chunk.facet_class
AND facet.cmf.name == display_field;
sorted_facets.push(facet);
END;
END;
END;
-ELSE;
+ELSE;
# No facet display configuration is present.
# show all facets, sorted by name.
# collect facet type labels for easier sorting
- labels = [];
+ labels = [];
FOR facet IN ctx.search_facets.values;
labels.push(facet.cmf.label);
END;
-
+
# We used to do a sort here, but now that's handled in EGCatLoader.
sorted_facets = ctx.search_facets.values;
END;
fid = facet.cmf.id;
long_key = fclass _ fname %]
- <div class="w-100">
+ <div class="facet-card w-100">
<div class="card">
<div class="card-header">
- <span class="title text-center">[% facet.cmf.label %]</span>
-
+ <span class="title text-center">[% facet.cmf.label %]</span>
+
</div>
<div class="card-body">
<div>
new_facets = [];
this_selected = 0;
FOR selected IN selected_facets;
- IF selected == param_string;
- this_selected = 1;
+ IF selected == param_string;
+ this_selected = 1;
ELSE;
new_facets.push(selected);
END;
display_count_by_cmf.$fid = display_count_by_cmf.$fid + 1;
IF this_selected;
- # This facet is already selected by the user.
+ # This facet is already selected by the user.
# Link removes the facet from the set of selected facets.
- %]
+ %]
<div class="facet_template facet_template_selected">
<div class="facet">
[% IF new_facets.size == 0 %]
</div>
<div class="count">([% facet_data.count; IF facet_data.count == (ctx.superpage + 1) * ctx.superpage_size; '+'; END %])</div>
</div>
- [%
+ [%
ELSE;
- # This facet is not currently selected. If selected,
+ # This facet is not currently selected. If selected,
# append this facet to the list of currently active facets.
%]
<div class="facet_template">
</div>
<div class="count">([% facet_data.count %])</div>
</div>
-
+
[% END %]
-
+
[% END %]</div>
<span class="float-right">
[% IF long_facets.grep(long_key).0;
[% l("Fewer") %]
</a>
[% ELSIF facet.data.size > DEFAULT_DISPLAY_COUNT %]
- <a class="button"
+ <a class="button"
title="[% l('Show More [_1] Entries', facet.cmf.label) %]"
href="[% mkurl('', {long_facet => long_facets.merge([long_key])}) %]#facets" rel="nofollow" vocab="">
[% l("More") %]
[% END %]
</span>
</div>
-
+
</div> <!-- box_wrapper -->
</div> <!-- facet_box_temp -->
[% END %]
<div class="zero_search_hits_main">
<p>[% qhtml = CGI.param('query') | html;
IF ctx.bookbag;
- wbbag = ctx.bookbag.name | html;
- fmt_bookbag = '<span class="lowhits-bookbag-name">' _ wbbag _ '</span>';
+ wbbag = ctx.bookbag.name | html;
+ fmt_bookbag = '<span class="lowhits-bookbag-name">' _ wbbag _ '</span>';
IF is_advanced OR is_special;
- l('Sorry, no entries were found for your search within [_1].', fmt_bookbag);
+ l('Sorry, no entries were found for your search within [_1].', fmt_bookbag);
ELSE;
l('Sorry, no entries were found for [_1] within [_2].', '<q>' _ qhtml _ '</q>', fmt_bookbag);
END;
[% INCLUDE "opac/parts/result/lowhits_purchase.tt2" %]
<p>
<strong>[% l('Keyword Search Tips') %]</strong><br />
- [% i18n_advsearch = l('Advanced Search');
+ [% i18n_advsearch = l('Advanced Search');
l('Try changing to [_1].', '<strong>' _ i18n_advsearch _ '</strong>') %]
</p>
<p>
<strong>[% l('Adjacency') %]</strong><br />
[% l('Multiple words are not searched together as a phrase. They will ' _
- 'be found in various parts of the record. To search for a phrase, enclose your ' _
- 'search terms in quotation marks.') %]<br />
- [% i18n_searchphrase = l('garcia marquez');
+ 'be found in various parts of the record. To search for a phrase, enclose your ' _
+ 'search terms in quotation marks.') %]<br />
+ [% i18n_searchphrase = l('garcia marquez');
l('(example: [_1])', '<strong>"' _ i18n_searchphrase _ '"</strong>') %]
</p>
<p>
<strong>[% l('Truncation') %]</strong><br />
[% l('Words may be right-hand truncated using an asterisk. Use a single asterisk * ' _
- 'to truncate any number of characters.') %]<br />
- [% i18n_searchtrunc = l('environment* agency');
+ 'to truncate any number of characters.') %]<br />
+ [% i18n_searchtrunc = l('environment* agency');
l('(example: [_1])', '<strong>' _ i18n_searchtrunc _ '</strong>') %]
</p>
<p>
<strong>[% l('Anchored Searching') %]</strong><br />
[% l('You may use ^ and $ to indicate "phrase begins with" and ' _
- '"phrase ends with," respectively, within a search phrase ' _
- 'enclosed in quotation marks.') %]<br />
- [% i18n_searchbegins = l('harry');
- i18n_searchends = l('stone');
+ '"phrase ends with," respectively, within a search phrase ' _
+ 'enclosed in quotation marks.') %]<br />
+ [% i18n_searchbegins = l('harry');
+ i18n_searchends = l('stone');
l('(examples: [_1] for phrases that begin with the term [_2]. ' _
'[_3] for phrases that end in [_4].)',
- '<strong>"^' _ i18n_searchbegins _ '"</strong>', '<em>' _ i18n_searchbegins _ '</em>',
- '<strong>"' _ i18n_searchends _ '$"</strong>', '<em>' _ i18n_searchends _ '</em>') %]
+ '<strong>"^' _ i18n_searchbegins _ '"</strong>', '<em>' _ i18n_searchbegins _ '</em>',
+ '<strong>"' _ i18n_searchends _ '$"</strong>', '<em>' _ i18n_searchends _ '</em>') %]
</p>
[% INCLUDE "opac/parts/result/lowhits_purchase.tt2" %]
</div>
[% BLOCK results_count_header %]
-<div class="results_header_nav1 text-center py-4">
+<div class="results_header_nav1 py-4">
[%- INCLUDE "opac/parts/pref_lib_display.tt2" %]
-
+
<nav aria-label="Page navigation">
<ul class='start_end_links_span pagination d-inline-flex'>
IF page > 0;
href = mkurl('', {page => page - 1});
-%]
- <li class="page-item"><a class='page-link [% class %]' href='[% href %]'
+ <li class="page-item"><a class='page-link [% class %]' href='[% href %]'
title='[% l("Previous page") %]'><span class="nav_arrow_fix">◄</span> <span class="paginateText"> [% l('Previous') %]</span> </a></li>
[%- END;
# show links to 4 previous pages, the current page, and 3 more pages.
added = 0;
- pageitr = page - 5;
+ pageitr = page - 5;
IF page_count > 1; # no need to paginate 1 page
-%]
-
+
[%-
WHILE (pageitr = pageitr + 1) < page_count;
IF pageitr < 0; NEXT; END;
IF added == 5; LAST; END;
END;
-%]
-
+
[%- END;
class = 'search_page_nav_link';
IF (page + 1) < page_count;
href = mkurl('', {page => page + 1});
-%]
- <li class="page-item"><a class='page-link [% class %]' href='[% href %]'
+ <li class="page-item"><a class='page-link [% class %]' href='[% href %]'
title='[% l("Next page") %]'>
<span class="paginateText">[% l('Next') %] </span><span class="nav_arrow_fix">►</span></a></li>
[%- END; -%]
</ul>
</nav>
-
+
<span class="result_number">
[%~ IF ctx.hit_count == ctx.pagable_limit; ctx.hit_count = ctx.hit_count _ '+'; END ~%]
[%~ |l('<span class="result_count_number">' _ ctx.result_start _'</span>',
%]
<div class="row">
<div class="col-12">
- [% PROCESS "opac/parts/result/paginate.tt2" %]
+ [% PROCESS "opac/parts/result/paginate.tt2" %]
[% ctx.results_count_header = PROCESS results_count_header;
ctx.results_count_header %]
</div>
<span id="selected_records_summary">
<a href="[% mkurl(ctx.opac_root _ '/mylist') %]" class="no-dec" rel="nofollow" vocab="">
<span id="selected_records_count">[% ctx.mylist.size %]
-
+
</span>
[% l('selected') %]
</a></span>
</div>
[% END %]
-
+
[% FOR rec IN ctx.records;
attrs = {};
attrs.marc_xml = rec.marc_xml;
IF rec.mmr_id;
IF rec.mr_constituent_count > 1;
# metarecords link to record list page
- record_url_path = ctx.opac_root _ '/results';
+ record_url_path = ctx.opac_root _ '/results';
add_parms = {metarecord => rec.mmr_id};
del_parms = ['page'];
ELSE;
END;
hold_type = 'M';
ELSE;
- record_url_path = ctx.opac_root _ '/record/' _ rec.bre_id;
+ record_url_path = ctx.opac_root _ '/record/' _ rec.bre_id;
add_parms = { badges => rec.badges.join(',') };
del_parms = ['quux'];
hold_type = 'T';
END; -%]
-
+
<div class="row" style="border-top: 1px solid grey;">
-
+
<!--Count&Checkboxes-->
<div class="col-lg-1">
<div class="results_row_count"> [% IF !ctx.is_meta; %]
class="result_record_selector" value="[% rec.bre_id %]" />
[% END %]
</div>
- </div>
+ </div>
<!--Cover Image-->
- <div class='my-auto col-lg-2 text-center' id="result[% rec.bre_id %]">
+ <div class='col-sm-auto text-center' id="result[% rec.bre_id %]">
<a href="[% mkurl(record_url_path, add_parms, del_parms); %]"><img alt="[% attrs.title | html;%]"
- id='item_jacket[% rec.bre_id %]' class='my-2'
+ id='item_jacket[% rec.bre_id %]' class='my-2'
src='[% ctx.media_prefix %]/opac/extras/ac/jacket/large/r/[% rec.bre_id | uri %]' style="max-height:150px;" /></a><br />
- </div>
+ </div>
<!--Info-->
- <div class='result_table_title_cell col-lg-9'>
- <dRecord Holdings Summaryiv class="row h-100">
+ <div class='result_table_title_cell col'>
+ <div class="row align-items-start">
<div class="result_metadata col-md-8 col-12">
[% IF rec.mmr_id %]
<abbr class="unapi-id" title='tag:[% ctx.hostname %],[% date.format(date.now, '%Y') %]:metabib-metarecord/[% rec.mmr_id %]'></abbr>
<span class="mx-2">
[%- IF attrs.format_label; %]
[% FOR format IN attrs.all_formats %]
- <img alt="[% format.label | html %]"
- src="[% format.icon %]" />
+ <img alt="[% format.label | html %]"
+ src="[% format.icon %]" />
[% format.label | html %]
[% END %]
[%- END %]
-
+
[%- UNLESS show_detail_view;
IF attrs.pubdate;
pubdate_clean = attrs.pubdate | html;
l(" ([_1])", pubdate_clean);
ELSIF attrs.copyright;
copyright_clean = attrs.copyright | html;
- l(" ([_1])", copyright_clean);
+ l(" ([_1])", copyright_clean);
END;
END -%]
</span>
[% alt.value | html %]
</div>
[%- END; END; -%]
-
+
<div>
[% IF attrs.author; %]
<a title="[% l("Perform an Author Search") %]"
class="record_author"
- href="[%-
+ href="[%-
authorquery = attrs.author | replace('[#"^$\+\-,\.:;&|\[\]()]', ' ');
mkurl(ctx.opac_root _ '/results', {qtype => 'author', query => authorquery}, general_search_parms.merge(expert_search_parms, browse_search_parms, facet_search_parms))
-%]" rel="nofollow" vocab="">[% IF attrs.hl.author; attrs.hl.author; ELSE; attrs.author | html; END %]</a>
- [% END; %]
+ [% END %]
+
-
[%-
FOR entry IN attrs.graphic_authors;
FOR alt IN entry.graphic;
</div>
[%- END; END; -%]
</div>
-
-
-
+
+
+
[% IF rec.popularity > 0.0 AND ctx.hide_badge_scores != 'true' %]
<div><span><strong>[% l('Popularity:') %]</strong> [% rec.popularity %] / 5.0</span></div>
[% END %]
- <table
+ <table
role="presentation"
title="[% l('Record Holdings Summary') %]"
class="table_no_border_space table_no_border results_info_table container-fluid">
-
+
[%- IF show_detail_view -%]
[% IF args.holdings.size > 0 %]
<tr class='result_table_title_cell'>
- <td valign='top'><strong>[% l('Call number:') %]</strong></td>
+ <td valign='top'><strong>[% l('Call number:') %]</strong></td>
<td>[% args.holdings.0.label | html %]</td>
</tr>
[% END %]
END;
%]
<tr class='result_table_title_cell container-fluid'>
- <td>
+ <td colspan="2">
<table role="presentation" title="[% l('Record Holdings Details') %]" class='container-fluid table table-hover mt-4 miniTable holdingsTable'>
<thead>
<tr>
[%- has_parts = 'false'; END; %]
[% END %] <!-- END detail_record_view -->
</table>
- [%
+ [%
IF ebook_api.enabled == 'true';
INCLUDE "opac/parts/ebook_api/avail.tt2";
END;
END; %]
[% IF rec.user_circulated %]
<div class="result_item_circulated">
- <i class="fas fa-book-reader"></i>
+ <i class="fas fa-book-reader" aria-hidden="true"></i>
<span>[% l('I have checked this item out before') %]</span>
</div>
[% END %]
<div class="result-bookbag-item-note">[% note.note | html %]</div>
[% END %]
[% END %]
-
+
</div>
<div class="col-md-4">
- <div class="result_table_utils row vertMid">
+ <div class="result_table_utils row">
<div class="btn-group-vertical mx-auto my-2" >
[%- search_ou = ctx.search_ou;
num_holdable_copies = attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size || 0;
del_parms = del_parms.merge(['query', 'bool', 'qtype', 'contains', '_adv']);
add_parms.import({query => ctx.naive_query_scrub(ctx.user_query)});
END; %]
-
+
<!--Place Hold Button -->
<div class="btn btn-action text-left">
- <a href="[% mkurl(ctx.opac_root _ '/place_hold', add_parms, del_parms) %]"
+ <a href="[% mkurl(ctx.opac_root _ '/place_hold', add_parms, del_parms) %]"
[% html_text_attr('title', l('Place Hold on [_1]', attrs.title)) %]
class="no-dec" rel="nofollow" vocab="">
- <i class="fas fa-check"></i>
+ <i class="fas fa-check" aria-hidden="true"></i>
<span class="result_place_hold">[% l('Place Hold') %]</span>
</a>
</div>
{title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'checkout'},
['query','tag','subfield','term','_special','sort','page']) %]"
[% html_text_attr('title', l('Check Out [_1]', attrs.title)) %]
- class="no-dec" rel="nofollow" vocab=""><i class="fas fa-atlas"></i><span class="result_place_hold">[% l('Check Out E-Item') %]</span></a>
+ class="no-dec" rel="nofollow" vocab=""><i class="fas fa-atlas" aria-hidden="true"></i> <span class="result_place_hold">[% l('Check Out E-Item') %]</span></a>
</div>
<div class="btn btn-action text-left">
<a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_place_hold',
{title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'place_hold'},
['query','tag','subfield','term','_special','sort','page']) %]"
[% html_text_attr('title', l('Place Hold on [_1]', attrs.title)) %]
- class="no-dec btn btn-primary btn-sm" rel="nofollow" vocab=""><i class="fas fa-book-reader"></i><span class="result_place_hold">[% l('Place Hold on E-Item') %]</span></a>
+ class="no-dec" rel="nofollow" vocab=""><i class="fas fa-book-reader" aria-hidden="true"></i> <span class="result_place_hold">[% l('Place Hold on E-Item') %]</span></a>
</div>
[%- END -%]
data-recid="[% rec.id %]" data-action="add"
class="mylist_action [% IF ctx.mylist.grep('^' _ rec.id _ '$').size %]hidden[% END %]"
title="[% l("Add [_1] to basket", attrs.title) %]" rel="nofollow" vocab="">
- <i class="fas fa-shopping-basket"></i>
+ <i class="fas fa-shopping-basket" aria-hidden="true"></i>
[% l("Add to basket") %]
</a>
-
+
<a href="[% delhref %]" id="mylist_delete_[% rec.id %]"
data-recid="[% rec.id %]" data-action="delete"
class="mylist_action text-left [% IF !ctx.mylist.grep('^' _ rec.id _ '$').size %]hidden[% END %]"
title="[% l("Remove [_1] from basket", attrs.title) %]" rel="nofollow" vocab="">
- <i class="fas fa-minus-circle"></i>
+ <i class="fas fa-minus-circle" aria-hidden="true"></i>
[% l("Remove from basket") %]
</a>
</div>
[% IF ENV.OILS_CONTENT_CAFE_USER %]
[% ident = attrs.isbn_clean || attrs.upc %]
<div type="button" class="btn btn-action">
- <a target='_blank'
+ <a target='_blank'
[% html_text_attr('title', l('Reviews and More for [_1]', attrs.title)) %]
- href="[% ctx.ext_proto %]://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=[%-
+ href="[% ctx.ext_proto %]://contentcafe2.btol.com/ContentCafeClient/ContentCafe.aspx?UserID=[%-
ENV.OILS_CONTENT_CAFE_USER %]&Password=[%-
ENV.OILS_CONTENT_CAFE_PASS %]&ItemKey=[% ident | uri %]&Options=Y" rel="nofollow" vocab="">
- <i class="fas fa-star"></i>
+ <i class="fas fa-star" aria-hidden="true"></i>
<span class="results_reviews">[% l('Reviews & More') %]</span>
</a>
</div>
</div>
</div>
</div>
- </dRecord>
+ </div>
</div></div>
-
+
[%- IF ENV.OILS_CHILIFRESH_ACCOUNT %]
-
+
<span class="chili_review" id="isbn_[% attrs.isbn_clean | html %]"> </span>
-
+
<div id="chili_review_[% attrs.isbn_clean | html %]" style="display: none;" align="center"></div>
-
+
[%- END %]
[% END %]
-
+
</div>
%]
-<div id="search-wrapper">
+<div id="search-wrapper" class="container-fluid">
[% UNLESS took_care_of_form -%]
<form action="[% ctx.opac_root %]/results" method="get">
[%- END %]
<div class="m-5">
<div class="row">
<!--Keyword-->
- <div class="col-xs-12 col-sm-12 col-lg-6 col-xl-3">
+ <div class="col-sm-12 col-md">
<span class='search_box_wrapper'>
[%- # autosuggest breaks accessibility, as the aria-label
# attribute is removed when the Dijit is created. :( %]
<label id="search_box_label" for="search_box" class="w-100">[% l('Search: ') %]
- <input class="form-control form-control-lg" type="text" id="search_box" name="query" aria-label="[%
+ <input class="form-control form-control-sm" type="text" id="search_box" name="query" aria-label="[%
l('Enter search query:');
%]" value="[% is_advanced ? ctx.naive_query_scrub(ctx.user_query) : CGI.param('query') | html %]"
[%- IF use_autosuggest.enabled == "t" %]
</label>
</span>
</div>
-
+
<!--Type-->
- <div class="col-xs-12 col-sm-12 col-lg-6 col-xl-2">
+ <div class="col-sm-12 col-md">
<label id="search_qtype_label" for="qtype" class="w-100">
- [%-
+ [%-
l('Type: ');
INCLUDE "opac/parts/qtype_selector.tt2" id="qtype";
-%]
</label>
</div>
-
+
+
+ <!-- Force next columns to break to new line below md breakpoint -->
+ <div class="w-100 d-block d-md-none"></div>
+
<!--Format-->
- <div class="col-xs-12 col-sm-12 col-lg-6 col-xl-2">
+ <div class="col-sm-12 col-md">
<label id="search_itype_label" for="search_itype_selector" class="w-100">
[%-
l('Format: ');
IF search.basic_config.type == 'attr';
INCLUDE "opac/parts/coded_value_selector.tt2"
- attr=search.basic_config.group none_ok=1
+ attr=search.basic_config.group none_ok=1
id='search_itype_selector'
none_label=search.basic_config.none_label;
ELSIF search.basic_config.type == 'filter';
INCLUDE "opac/parts/filter_group_selector.tt2"
- filter_group=search.basic_config.group none_ok=1
+ filter_group=search.basic_config.group none_ok=1
id='search_itype_selector'
+ class='form-control form-control-sm'
none_label=search.basic_config.none_label;
END;
-%]
</label>
</div>
-
+
<!--Library-->
- <div class="col-xs-12 col-sm-12 col-lg-6 col-xl-2">
+ <div class="col-sm-12 col-md">
<label id="search_locg_label" for="search_org_selector" class="w-100">
- [%-
+ [%-
l('Library: ');
select_lib_label = l("Select search library");
- INCLUDE build_org_selector arialabel=select_lib_label
+ INCLUDE build_org_selector arialabel=select_lib_label
id='search_org_selector' show_loc_groups=1
-%]
</label>
</div>
- <div class="col-xs-12 col-sm-12 col-lg-12 col-xl-3">
- <div class="vertMid text-center">
- <input id="detail" type="hidden" name="detail_record_view" value="[% show_detail_view %]"/>
- <button id='search-submit-go' type="submit" class="btn btn-opac m-2"
- onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden";[% IF ctx.depth_sel_button AND NOT took_care_of_form %] $("search-submit-go-depth").className="hidden";[% END %]}, 2000)'><i class="fas fa-search"></i> [% l('Search') %]</button>
- [%- IF ctx.depth_sel_button AND NOT took_care_of_form %]
- <button id='search-submit-go-depth' type="submit" value="[% ctx.depth_sel_depth %]" name="depth" class="[% #ctx.depth_sel_button_class %] btn btn-opac m-2"
- onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden"; $("search-submit-go-depth").className="hidden";}, 2000)' title="[% ctx.depth_sel_tooltip | html %]"><i class="fas fa-globe"></i> [% ctx.depth_sel_button_label | html %]</button>
- [%- END %]
- <img id='search-submit-spinner' src='[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]' style='height:16px;width:16px;' class='hidden' alt='[% l("Search In Progress") %]'/>
- </div>
-
- </div>
- </div>
-
-
-
-
-
+
+ <!-- Force next columns to break to new line below md breakpoint -->
+ <div class="w-100 d-block d-md-none"></div>
+
+ <div class="col-auto ml-auto ml-md-1">
+ <input id="detail" type="hidden" name="detail_record_view" value="[% show_detail_view %]"/>
+ <button id='search-submit-go' type="submit" class="btn btn-sm btn-opac"
+ onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden";[% IF ctx.depth_sel_button AND NOT took_care_of_form %] $("search-submit-go-depth").className="hidden";[% END %]}, 2000)'><i class="fas fa-search" aria-hidden="true"></i> [% l('Search') %]</button>
+ </div>
+ [%- IF ctx.depth_sel_button AND NOT took_care_of_form %]
+ <div class="col-auto mr-auto mr-md-1">
+ <button id='search-submit-go-depth' type="submit" value="[% ctx.depth_sel_depth %]" name="depth" class="[% #ctx.depth_sel_button_class %] btn btn-sm btn-opac"
+ onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden"; $("search-submit-go-depth").className="hidden";}, 2000)' title="[% ctx.depth_sel_tooltip | html %]"><i class="fas fa-globe" aria-hidden="true"></i> [% ctx.depth_sel_button_label | html %]</button>
+ [%- END %]
+ <img id='search-submit-spinner' src='[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]' style='height:16px;width:16px;' class='hidden' alt='[% l("Search In Progress") %]'/>
+ </div>
+
</div>
-
-
-
+
[% IF ctx.bookbag %]
<div id="search-only-bookbag-container" class="text-center">
<input type="checkbox" id="search-only-bookbag" name="bookbag"
</div>
[% END %]
[% END %]
-
+
<script>
function getAdvLimits() {
<div id="collapseOne" class="collapse" aria-labelledby="headRecent" data-parent="#accordion">
<div class="card-body">
- [% FOR s IN ctx.saved_searches %]
- <ul>
- <li><a href="[% ctx.opac_root %]/results?query=[% s | uri %]&_adv=1">[% s | html %]</a></li>
- </ul>
+ [% FOR s IN ctx.saved_searches %]
+ <ul>
+ <li><a href="[% ctx.opac_root %]/results?query=[% s | uri %]&_adv=1">[% s | html %]</a></li>
+ </ul>
[% END %]
</div>
</div>
</div>
</div>
-
-
+
+
[% END %]
[%- IF ctx.maintenance_message -%]
<div class="alert alert-[% ctx.maintenance_type %] alert-dismissible mb-0 text-center" role="alert">
- <button type="button" class="close" data-dismiss="alert" aria-label="Close">
- <span aria-hidden="true">×</span>
- </button>
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+ <span aria-hidden="true">×</span>
+ </button>
[% ctx.maintenance_message %]
</div>
[%- END -%]
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
- <div class="collapse navbar-collapse" id="navbarNav" style="height:auto !important;">
+ <div class="collapse navbar-collapse" id="navbarNav">
<!--Left Links-->
- <div class="row w-100">
- <div class="col-12">
-
+
+
<ul class="navbar-nav nav-fl px-3">
- <!--Link 1-->
+ <!--Link 1-->
<li class="nav-item">
<a class="nav-link" href="[% ctx.link_one %]">Example Link 1<span class="sr-only">(current)</span></a>
</li>
- <!--Link 2-->
+ <!--Link 2-->
<li class="nav-item">
<a class="nav-link" href="[% ctx.link_two %]">Example Link 2</a>
</li>
- <!--Link 3-->
+ <!--Link 3-->
<li class="nav-item">
<a class="nav-link" href="[% ctx.link_three %]">Example Link 3</a>
</li>
- <!--Link 4-->
+ <!--Link 4-->
<li class="nav-item">
<a class="nav-link" href="[% ctx.link_four %]">Example Link 4</a>
</li>
</ul>
<!--Right Links-->
<ul class="navbar-nav ml-auto nav-fr px-3">
- <!--If not signed in, show sign in button-->
+ <!--If not signed in, show sign in button-->
[% IF !ctx.user %]
- <li class="nav-item">
- [% IF ctx.page != 'login' ;%]
- <a href="#exampleModal" data-toggle="modal" data-target="#exampleModal" class="nav-link login">
- [% ELSE ;%] <a href="https://test.nflibrary.ca/eg/opac/login" class="nav-link login">
- [% END; %] [% l('My Account') %] </a>
- </li>
+ <li class="nav-item">
+ [% IF ctx.page != 'login' %]
+ <a href="#loginModal" data-toggle="modal" data-target="#loginModal" class="nav-link login">
+ [% ELSE %] <a href="https://test.nflibrary.ca/eg/opac/login" class="nav-link login">
+ [% END %] [% l('My Account') %] </a>
+ </li>
<!--User is signed in-->
[% ELSE %]
<li><div class="dropdown-divider"></div></li>
[% END %]
[% l('Messages') %]
</a>
- </li>
- <!--My Account-->
- <li class="nav-item">
+ </li>
+ <!--My Account-->
+ <li class="nav-item">
<a class="nav-link" href="[% mkurl(ctx.opac_root _ '/myopac/main', {}, ['single', 'message_id', 'sort','sort_type']) %]">[% l('My Account') %]</a>
- </li>
- <!--Lists Link-->
- <li class="nav-item">
+ </li>
+ <!--Lists Link-->
+ <li class="nav-item">
<a class="nav-link" href="[% mkurl(ctx.opac_root _ '/myopac/lists', {}, ['single', 'message_id']) %]">[% l('My Lists') %]</a>
- </li>
- <!--Logout-->
- <li class="nav-item">
+ </li>
+ <!--Logout-->
+ <li class="nav-item">
<a class="nav-link" href="[% mkurl(ctx.opac_root _ '/logout', {}, 1) %]" id="logout_link">[% l('Logout') %]</a>
- </li>
+ </li>
[% END %]
<!--must end ul and div no matter the user state-->
</ul>
</div>
-
-
- </div>
- </div>
+
+
+
</nav>
-
+
-<nav class="navbar navbar-expand-lg navbar-light secondary-nav">
-<div class="row mx-auto">
-<div class="col-12">
- <ul class="navbar-nav nav-fl px-3 d-flex">
- <li class="nav-item mx-2">
- [% IF ctx.page != 'home'; %]
- <a href="[% mkurl(ctx.opac_root _ '/home') %]" class="search_catalog_lbl">[%l('Basic Search')%]</a>
- [% ELSE %]
- <span class="search_catalog_lbl">[%l('Basic Search')%]</span>
- [% END %]
- </li>
- <li class="nav-item mx-2">
- [% IF ctx.page != 'browse'; %]
- <a href="[% mkurl(ctx.opac_root _ '/browse', {}, expert_search_parms.merge(general_search_parms, facet_search_parms, ['fi:has_browse_entry'])) %]" class="browse_the_catalog_lbl">[% l('Browse the Catalog') %]</a>
- [% ELSE %]
- <span class="browse_the_catalog_lbl">[%l('Browse the Catalog')%]</span>
- [% END %]
- </li>
- <li class="nav-item mx-2">
- [% IF ctx.page != 'advanced'; %]
- <a href="[% mkurl(ctx.opac_root _ '/advanced', {}, expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]" id="home_adv_search_link" class="adv_search_catalog_lbl">[% l('Advanced Search') %]</a>
- [% ELSE %]
- <span class="adv_search_catalog_lbl">[%l('Advanced Search')%]</span>
- [% END %]
- </li>
- </ul>
+<div class="container-fluid">
+<div class="row">
+<div class="col">
+ <nav class="nav secondary-nav">
+ [% IF ctx.page != 'home'; %]
+ <a href="[% mkurl(ctx.opac_root _ '/home') %]" class="nav-link search_catalog_lbl">[%l('Basic Search')%]</a>
+ [% ELSE %]
+ <a href="[% mkurl(ctx.opac_root _ '/home') %]" class="nav-link active search_catalog_lbl">[%l('Basic Search')%]</a>
+ [% END %]
+
+ [% IF ctx.page != 'browse'; %]
+ <a href="[% mkurl(ctx.opac_root _ '/browse', {}, expert_search_parms.merge(general_search_parms, facet_search_parms, ['fi:has_browse_entry'])) %]" class="nav-link browse_the_catalog_lbl">[% l('Browse the Catalog') %]</a>
+ [% ELSE %]
+ <a href="[% mkurl(ctx.opac_root _ '/browse', {}, expert_search_parms.merge(general_search_parms, facet_search_parms, ['fi:has_browse_entry'])) %]" class="nav-link active browse_the_catalog_lbl">[% l('Browse the Catalog') %]</a>
+ [% END %]
+
+ [% IF ctx.page != 'advanced'; %]
+ <a href="[% mkurl(ctx.opac_root _ '/advanced', {}, expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]" id="home_adv_search_link" class="nav-link adv_search_catalog_lbl">[% l('Advanced Search') %]</a>
+ [% ELSE %]
+ <a href="[% mkurl(ctx.opac_root _ '/advanced', {}, expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]" id="home_adv_search_link" class="nav-link active adv_search_catalog_lbl">[% l('Advanced Search') %]</a>
+ [% END %]
+ </nav>
+</div>
+ <div class="col-auto">
+ [% INCLUDE 'opac/parts/cart_nav.tt2' %]
</div>
-
</div>
-[% INCLUDE 'opac/parts/cart_nav.tt2' %]
-</nav>
\ No newline at end of file
+</div>
\ No newline at end of file
[% INCLUDE "opac/parts/searchbar.tt2" %]
</div>
-[%
+[%
uuid = ctx.page_args.0;
msg_map = {
SUCCESS => l('Password has been reset'),
NOT_ACTIVE => l('This was not an active password reset request. Your password has not been reset.'),
NOT_STRONG => l('The password you chose was not considered complex enough to protect your account. Your password has not been reset.'),
TWO_PASSWORDS => l('Please enter and repeat your new password.'),
- REQUEST_SUCCESS => l('Your user name or barcode has been submitted for a password reset. ' _
+ REQUEST_SUCCESS => l('Your user name or barcode has been submitted for a password reset. ' _
'If a matching account with an email address is found, you will soon receive an email at that address with further instructions for resetting your password.')
}
%]
[% IF stat == 'SUCCESS' %]
<p><a href='[% mkurl(ctx.opac_root _ '/myopac/main', {}, 1) %]'>[% l('Log in to My Account') %]</a>
[% ELSE %]
-
-
+
+
<form method="post">
<input type='hidden' name='uuid' value='[% uuid | html %]'/>
<div class="form-group row">
<label for="pwd2" class="col-sm-6 col-form-label">[% l('Re-enter new password:') %]</label>
<input type="password" class="form-control col-sm-6" name="pwd2"/>
</div>
-
- <button name="submit" class="btn btn-confirm" id="submitButton" type="submit"><i class="fas fa-save"></i> [% l('Submit') %]</button>
-
+
+ <button name="submit" class="btn btn-confirm" id="submitButton" type="submit"><i class="fas fa-save" aria-hidden="true"></i> [% l('Submit') %]</button>
+
</form>
[% END %]
[% ELSIF !ctx.pwreset.status %]
<label for="username" class="col-sm-6 col-form-label">[% l('User name:') %] </label>
<input type="text" class="form-control col-sm-6" id="username" name="username"/>
</div>
-
+
[% IF ctx.get_org_setting(ctx.physical_loc || ctx.aou_tree.id, 'circ.password_reset_request_requires_matching_email') %]
<div class="form-group row">
<label for="email" class="col-sm-6 col-form-label">[% l('Email address associated with the account:') %] </label>
<input type="text" class="form-control col-sm-6" name="email"/><br/>
</div>
[% END %]
-
- <button name="submit" id="submitButton" class="btn btn-confirm" type="submit"><i class="fas fa-save"></i> [% l('Submit') %]</button>
+
+ <button name="submit" id="submitButton" class="btn btn-confirm" type="submit"><i class="fas fa-save" aria-hidden="true"></i> [% l('Submit') %]</button>
</form>
[% END %]
</div>
END;
ctx.page_title = l("Place Hold") %]
<h2 class="sr-only">[% l('Hold Placement') %]</h2>
- [% INCLUDE "opac/parts/searchbar.tt2" %]
+ [% INCLUDE "opac/parts/searchbar.tt2" %]
<div id="content-wrapper">
<div class="container">
[% IF ctx.hold_attempt_made %]
canon = ctx.proto _ '://' _ ctx.hostname _ mkurl('', {}, 1);
ctx.metalinks.push('<link rel="canonical" href="' _ canon _ '" />');
ctx.metalinks.push('<meta property="og:url" content="' _ canon _ '" />');
- IF CGI.param("expand"); basic_search = "f"; END;
+ IF CGI.param("expand"); basic_search = "f"; END;
-%]
<span class="sr-only">[% l('Record Details') %]</span>
[% INCLUDE "opac/parts/searchbar.tt2" %]
<br class="clear-both" />
<div id="content-wrapper" class="content-wrapper-record-page">
<div id='main-content'>
- <br/>
[% IF ctx.user.email %]
- <h2 class='success'>[% l('Your email has been queued for delivery to [_1]', ctx.user.email ) %]</h2>
+ <div class="alert alert-success" role="alert">
+ <h2>[% l('Your email has been queued for delivery to [_1]', ctx.user.email ) %]</h2>
+ </div>
[% ELSE %]
- <h2 class='error'>
+ <div class="alert alert-danger" role="alert">
+ <h2>
[% here_link_text = "<a href=\"${ctx.opac_root}/myopac/update_email?return_to_referer=1\">";
- here_link_text = here_link_text _ l("here");
+ here_link_text = here_link_text _ l("Set your email address here");
here_link_text = here_link_text _ "</a>";
- l('Your account does not currently have an email address set. Set your email address [_1]', here_link_text) %]
+ l('Your account does not currently have an email address set. [_1]', here_link_text) %]
</h2>
+ </div>
[% END %]
<br/>
[% IF ctx.redirect_to %]
- <p>[ <a href="[% ctx.redirect_to | html %]">[% l("Return") %]</a> ] </p>
+ <p><a class="btn btn-outline-primary" href="[% ctx.redirect_to | html %]">[% l("Return") %]</a> </p>
[% ELSE %]
- <p>[ <a href="[% mkurl(ctx.opac_root _ '/record/' _ ctx.bre_id) %]">[% l("Back to Record") %]</a> ]</p>
+ <p><a class="btn btn-outline-primary" href="[% mkurl(ctx.opac_root _ '/record/' _ ctx.bre_id) %]">[% l("Back to Record") %]</a></p>
[% END %]
<div class="common-full-pad"></div>
</div>
ctx.page_title = l("Request Library Card");
# for privacy, reload the page after (default) 5 minutes
-refresh_time = ctx.register.settings.refresh_timeout || 300;
+refresh_time = ctx.register.settings.refresh_timeout || 300;
ctx.refresh = refresh_time _ '; ' _ ctx.opac_root _ '/home';
-# some useful variables and MACROs for display,
+# some useful variables and MACROs for display,
# field validation, and added info display
ctx_org = ctx.physical_loc || ctx.search_ou || ctx.aou_tree.id;
-# list of the registration fields to (potentially)
+# list of the registration fields to (potentially)
# display in the order they should be shown
# post_code is the only field below that is required in the database and
# post_code is only required if an address is created.
# To prevent any of these fields from showing locally, regardless org unit
-# settings, simply remove the fields from this list. In the case of
+# settings, simply remove the fields from this list. In the case of
# addresses, if all address fields are removed, no attempt at creating
# an address will be made (and post_code will no longer be required).
<div id="content-wrapper">
<div id="main-content-register" class="container">
<h1>[% l('Request a Library Card')%]</h1>
- <span class="validate">★ = Required Field</span>
+ <span class="validate">★ = Required Field</span>
<hr/>
[% IF ctx.register.success %]
[% IF ctx.register.username_taken %]
<p>
[% |l %]
- Note: The selected username may be in use by another patron.
- You may select another username when finalizing your
+ Note: The selected username may be in use by another patron.
+ You may select another username when finalizing your
registration or in the online catalog.
[% END %]
</p>
<br/>
<p>
- <a href="[% ctx.opac_root %]/home"
+ <a href="[% ctx.opac_root %]/home"
class="btn btn-confirm">[% l('Return to the Catalog') %]</a>
</p>
<br/>
<p>
- <a href="[% ctx.opac_root %]/home"
+ <a href="[% ctx.opac_root %]/home"
class="btn btn-confirm">[% l('Return to the Catalog') %]</a>
</p>
[% ELSE %]
[% IF ctx.user %]
- <!-- if the user is logged in, make it
+ <!-- if the user is logged in, make it
clear we are tracking the requestor -->
<h4>[% l('New account requested by [_1] [_2] [_3] [_4] [_5]',
ctx.user.prefix, ctx.user.first_given_name,
<td width="30">
<label for='stgu.home_ou'>[% l('Home Library') %]</label>
</td>
- <td width="50">[% INCLUDE build_org_selector
- name='stgu.home_ou'
+ <td width="50">[% INCLUDE build_org_selector
+ name='stgu.home_ou'
value=value || ctx_org
can_have_users_only=1
valid_org_list=ctx.register.valid_orgs
</span>
[% END %]
</tr>
-
+
[%
# <=== shifting code left for readability
orig_name = fname;
field_path = fclass _ "." _ fname;
-
+
IF fname.match('^pref_');
# Preferred name fields adopt most visibility, etc.
# settings from the primary name counterparts.
show = show || require;
require = 0; # pref name values never required
END;
-
+
NEXT UNLESS require OR show;
%]
<tr>
</div>
</div>
[% ELSE; %]
- <input
- class='form-control'
+ <input
+ class='form-control'
type='text'
id='[% field_path %]'
name='[% field_path %]'
value='[% value || CGI.param(field_path) | html %]' [% IF require %]required[% END %]/>
- [% END; %]
+ [% END %]
<div class="invalid-feedback">
Please enter a [% field_def.label | html %]
</div>
[% END %]
<tr>
<td colspan='3' class="text-center py-4">
- <a href="[% ctx.opac_root %]/home"
+ <a href="[% ctx.opac_root %]/home"
class="btn btn-confirm">[% l('Go Back') %]</a>
- <input type="submit"
- value="[% l('Submit Registration') %]"
+ <input type="submit"
+ value="[% l('Submit Registration') %]"
class="btn btn-confirm" />
</td>
</tr>
}, false);
})();
-$(document).ready(function(){
+$(document).ready(function(){
$('.datepicker').datepicker({
weekStart: 1,
autoclose: true,
<br/>
[% END %]
[% END %]
- <div [%- IF ctx.metarecord %]class="hidden"[%- ELSE %]class="container"[%- END %]>
+ <div [%- IF ctx.metarecord %]class="hidden"[%- ELSE %]class="container-fluid"[%- END %]>
+
<div id="results_header_inner">
-
+
<div id="refine_hits" class="btn btn-secondary"><a onclick="getFacety();">[% l('Refine these results') %]</a></div>
<div id="return_to_hits" class="results_header_btns"><a onclick="getResulty();">[% l('Back to results') %]</a></div>
-
+ <div class="row">
+ <div class="col">
<div class="search-options text-center">
<div class="mx-auto">
<!-- ===== Drop Down ===== -->
<div class="search-option my-2">
- <label for="opac.result.sort">[% l('Sort Results') %]</label>
- [% INCLUDE "opac/parts/filtersort.tt2" value=CGI.param('sort') submit_on_change=1 class="form-control" %]
+ <label for="opac.result.sort">[% l('Sort Results') %]</label>
+ [% INCLUDE "opac/parts/filtersort.tt2" value=CGI.param('sort') submit_on_change=1 class="form-control" %]
</div>
[%- IF show_more_details.default != 'hide' -%]
<!-- ===== Buttons ===== -->
- <div class="search-option my-2">
- [% IF show_detail_view %]
- <a href="[% mkurl('', {detail_record_view => 0}) %]" class="btn btn-sm btn-secondary">[% l('Show Fewer Details') %]</a> [% ELSE %]
- <a href="[% mkurl('', {detail_record_view => 1}) %]" class="btn btn-sm btn-secondary">[% l('Show More Details') %]</a>
- [% END %]
- </div>
- [%- END -%]
+ <div class="search-option my-2">
+ [% IF show_detail_view %]
+ <a href="[% mkurl('', {detail_record_view => 0}) %]" class="btn btn-sm btn-secondary">[% l('Show Fewer Details') %]</a> [% ELSE %]
+ <a href="[% mkurl('', {detail_record_view => 1}) %]" class="btn btn-sm btn-secondary">[% l('Show More Details') %]</a>
+ [% END %]
+ </div>
+ [%- END -%]
[% IF (is_advanced AND NOT is_special) AND CGI.param('qtype') %]
<div class="search-option my-2">
<span id="refine_search_link"> <a class="btn btn-secondary btn-sm" href="[% mkurl(ctx.opac_root _ '/advanced') %]">[%
</div>
[% END %]
</div>
+ </div>
+ </div>
+ </div>
-
+ <div class="row">
+ <div class="col">
<!-- ===== Checkboxes ===== -->
- <div class="search-check text-center mb-3">
+ <div class="search-check">
+
[%- IF !search.no_highlight %]
- <div class="search-filter form-check m-2">
- <label for="no_highlight" class="form-check-label">
- <input class="form-check-input" type="checkbox" id="no_highlight" name="no_highlight" value="1"
+
+ <div class="search-filter m-2">
+ <label for="no_highlight">
+ <input type="checkbox" id="no_highlight" name="no_highlight" value="1"
onchange="search_modifier_onchange('no_highlight', this, true)"
[% CGI.param('no_highlight').size ? ' checked="checked"' : '' %] />
[% l('Disable Highlighting') %]
</label>
</div>
- [% END; %]
- <div class="search-filter form-check m-2">
- <label for="limit_to_available" class="form-check-label">
- <input class="form-check-input" type="checkbox" id="limit_to_available" name="modifier" value="available"
+ [% END %]
+
+ <div class="search-filter m-2">
+ <label for="limit_to_available">
+ <input type="checkbox" id="limit_to_available" name="modifier" value="available"
onchange="search_modifier_onchange('available', this, true)"
[% CGI.param('modifier').grep('available').size ? ' checked="checked"' : '' %] />
- [% l('Limit to Available Items') %]
- </label>
+ [% l('Limit to Available Items') %]
+ </label>
</div>
[% IF NOT metarecords.disabled %]
- <div class="search-filter form-check m-2">
- <label for="metabib_search_modifier" class="form-check-label">
- <input class="form-check-input" type="checkbox" id="metabib_search_modifier"
+
+ <div class="search-filter m-2">
+ <label for="metabib_search_modifier">
+ <input type="checkbox" id="metabib_search_modifier"
name="modifier" value="metabib"
onchange="search_modifier_onchange('metabib', this, true)"
[% CGI.param('modifier').grep('metabib').size ? ' checked="checked"' : '' %] />
[% l('Group By Formats and Editions') %]
</label>
- </div>
+ </div>
[% END %]
[% IF ctx.depth_sel_checkbox %]
- <div class="search-filter form-check m-2">
- <label class="form-check-label" for="depth_sel" title="[% ctx.depth_sel_tooltip | html %]">
- <input class="form-check-input" type="checkbox" id="depth_sel" name="depth" value="[% ctx.depth_sel_depth %]"
+
+ <div class="search-filter m-2">
+ <label for="depth_sel" title="[% ctx.depth_sel_tooltip | html %]">
+ <input type="checkbox" id="depth_sel" name="depth" value="[% ctx.depth_sel_depth %]"
onchange="this.form.submit()"
[% CGI.param('depth') == ctx.depth_sel_depth ? ' checked="checked"' : '' %] />
- [% ctx.depth_sel_checkbox_label | html %]
- </label>
+ [% ctx.depth_sel_checkbox_label | html %]
+ </label>
</div>
[% END %]
[% IF ctx.exclude_electronic_checkbox %]
- <div class="search-filter form-check m-2">
- <label class="form-check-label" for='opac.result.excludeelec'>
- <input class="form-check-input" type='checkbox' id='opac.result.excludeelec' name="fi:-search_format" value="electronic"
+
+ <div class="search-filter m-2">
+ <label for='opac.result.excludeelec'>
+ <input type='checkbox' id='opac.result.excludeelec' name="fi:-search_format" value="electronic"
onchange="exclude_onchange(this)"
[%- CGI.param('fi:-search_format').grep('electronic').size ? ' checked="checked"' : '' %] />
[% l("Exclude Electronic Resources") %]
- </label>
- </div>
+ </label>
+ </div>
[% END %]
</div>
- </div>
-
+ </div>
</div>
+ </div>
+ </div>
</div>
</div>
</form>
<div class="mx-5">
- <div id="results-page">
+ <div class="row">
+ <div id="results-page" class="col">
[%- IF (ctx.depth_sel_checkbox OR ctx.depth_sel_button) AND CGI.param('depth') == ctx.depth_sel_depth AND ctx.depth_sel_resultshint %]
<div id="results-page-depth-hint">[% ctx.depth_sel_resultshint | html %]</div>
[%- END %]
(ctx.records.size ? "table.tt2" : "lowhits.tt2");
INCLUDE $path %]
</div>
+ </div>
</div>
[%- END %]
<br />
<input type="submit" class="fixed" value="[% l('OK') %]" />
</form>
- <div class="common-full-pad"></div>
+ <div class="common-full-pad"></div>
</div>
</div>
[%- END %]