return $self->load_myopac_payments if $path =~ m|opac/myopac/main_payments|;
return $self->load_myopac_pay_init if $path =~ m|opac/myopac/main_pay_init|;
return $self->load_myopac_pay if $path =~ m|opac/myopac/main_pay|;
+ return $self->load_myopac_main if $path =~ m|opac/myopac/charges|;
return $self->load_myopac_main if $path =~ m|opac/myopac/main|;
return $self->load_myopac_receipt_email if $path =~ m|opac/myopac/receipt_email|;
return $self->load_myopac_receipt_print if $path =~ m|opac/myopac/receipt_print|;
--- /dev/null
+/////////////////////DATEPICKER///////////////////////////////////////////
+ <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>
+
+/////////////////////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>
+</a>
+<!--This is needed to activate the tooltips on the page and is activated Globally by default in js.tt2-->
+<script>
+jQuery(document).ready(function(){
+ jQuery('[data-toggle="tooltip"]').tooltip();
+});
+</script>
+
<span class="sr-only">[% l('Advanced Search') %]</span>
<div class="container">
<div id="search-wrapper">
- [% IF pane == 'advanced' %]
- <h1 class="h1 text-center pt-3">Advanced Search</h1>
- <h2 class="text-center pt-3">Refine your search by filling out one or more fields to search by below.</h2>
- [% ELSIF pane == 'numeric' %]
- <h1 class="h1 text-center pt-3">Numeric Search</h1>
- <h2 class="text-center pt-3">Search by a field and numeric identifier.</h2>
- [% ELSIF pane == 'expert' %]
- <h1 class="h1 text-center pt-3">Expert Search</h1>
- <h2 class="text-center pt-3">Search the MARC record.</h2>
- [% END %]
<div class="mt-3">
<ul class="nav nav-tabs">
<li class="nav-item">
class="nav-link [% IF pane == 'expert' %]active[% END %]"
id="expert_search">[% l('Expert Search') %]</a>
</li>
+ </ul>
</div>
</div>
<div id="content-wrapper">
- <div id="main-content">
+ <div>
<div class="advanced_div">
[% IF pane == 'advanced' %]
[% INCLUDE "opac/parts/advanced/search.tt2" %]
[% INCLUDE "opac/parts/advanced/expert.tt2" %]
[% END %]
</div>
- <div class="common-full-pad"></div>
</div>
</div>
</div>
<h2 class="sr-only">[% l('Catalog Browse') %]</h2>
<div id="content-wrapper" class="my-5">
- <div id="main-content" class="container mx-auto w-75">
+ <div class="container mx-auto w-75">
<div id="browse-the-catalog">
<div id="browse-controls" class='row text-center'>
<form method="get" onsubmit="$('browse-submit-spinner').className = ''; return true" class="mx-auto">
arialabel=l('Select holding library') %]
[% l('Browse for [_1] starting with [_2] in [_3]', control_qtype, control_bterm, control_locg) %]
- <input id='search-submit-go' type="submit" value="[% l('Browse') %]" alt="[% l('Browse') %]" class="btn btn-confirm my-2"/>
+ <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"
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') %]" />
</form>
</div>
- <div class="row text-center my-5 border-top border-bottom">
+ <div class="row my-5 border-top border-bottom">
[% BLOCK browse_pager %]
- <div class="browse-pager col-12">
+ <div class="browse-pager text-center col-12">
<div class="mx-auto">
[% IF ctx.back_pivot %]
- <a class="btn btn-outline-primary 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 %]').className = '';">← [%l ('Back') %]</a>
[% END %]
[% IF ctx.pager_shortcuts;
current_qtype = CGI.param('qtype') || 'title' %]
class="hidden" style="width: 16px; height: 16px;"
alt="[% l('Search in progress icon') %]" />
[% IF ctx.forward_pivot %]
- <a class="btn btn-outline-primary 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 %]').className = '';">[%l ('Next') %] →</a>
[% END %]
[% PROCESS browse_pager id=1 %]
</div>
</div>
- <div class="common-full-pad"></div>
</div>
</div>
<span class="sr-only">[% l('Call Number Browse') %]</span>
[% INCLUDE "opac/parts/searchbar.tt2" %]
<div id="content-wrapper">
- <div id="main-content">
<div class="cnbrowse_div">
[% INCLUDE "opac/parts/record/cnbrowse.tt2" %]
</div>
- <div class="common-full-pad"></div>
- </div>
</div>
[% END %]
--- /dev/null
+/*
+Mini Table Styling
+*/
+@media
+only screen and (max-width: 650px) {
+ .miniTable{
+ width: 100% !important;
+ }
+
+ /* Force table to not be like tables anymore */
+ .miniTable table, .miniTable thead, .miniTable tbody, .miniTable th, .miniTable td, .miniTable tr
+ {
+ display: block;
+ }
+
+ .miniTable th{
+ display:none;
+ }
+
+ /* 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;
+ }
+
+
+ .miniTable td
+ {
+ 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;
+ 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 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(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 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(4):before { content: "Status"; 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(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(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(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(4):before { content: "Renewals Left"; 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(4):before { content: "Checkout Date"; display: flex; }
+ .circHistTable td:nth-of-type(5):before { content: "Due Date"; 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(4):before { content: "Local Call number"; 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; }
+ .ecircsTable td:nth-of-type(4):before { content: "Actions"; 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%;
+ }
+
+ .paginateText{
+ display:none;
+ }
+
+ .modal-dialog {
+ max-width: 600px !important;
+ }
+
+}/*Micro Tables End*/
+
+@media only screen and (max-width: 600px) {
+ input, select {
+ font-size: [% css_fonts.size_big %];
+ }
+ span .nav_arrow_fix {
+ display: none;
+ }
+ #header {
+ padding: 0px;
+ margin: 0px;
+ }
+ #homesearch_main_logo img {
+ width:75%;
+ }
+ #format_selector {
+ display:none;
+ }
+ #your-acct-login {
+ padding: 0px;
+ padding-top: 5px;
+ }
+ #your-acct-login a {
+ margin: 0px;
+ padding: 5px;
+ }
+ #topnav_logo {
+ margin: 0;
+ }
+ #topnav_logo img {
+ width: 200px;
+ }
+
+ #gold-links-holder {
+ display: none;
+ }
+ #simple-detail-view-links {
+ display: none;
+ }
+ #acct_tabs a, #acct_fines_tabs a {
+ [% IF rtl == 't' -%]
+ border-radius: 6px 0px 0px 6px;
+ margin: 0px 0px 0px 5px;
+ [% ELSE -%]
+ border-radius: 6px 6px 0px 0px;
+ margin: 0px 5px 0px 0px;
+ [% END -%]
+ padding: 2px 4px 3px 4px;
+ font-size: [% css_fonts.size_base %];
+ }
+ .bookbag-controls-title-block {
+ [% IF rtl == 't' -%]
+ clear:right;
+ [% ELSE -%]
+ clear:left;
+ [% END -%]
+ width:90%;
+ }
+ .bookbag-controls-button-block {
+ [% IF rtl == 't' -%]
+ clear:right;
+ [% ELSE -%]
+ clear:left;
+ [% END -%]
+ width;90%;
+ }
+ .bookbag-specific {
+ [% IF rtl == 't' -%]
+ margin-right: 0px;
+ [% ELSE -%]
+ margin-left: 0px;
+ [% END -%]
+ }
+ .bookbag-specific div.sort {
+ [% IF rtl == 't' -%]
+ float: right;
+ text-align: right;
+ [% ELSE -%]
+ float: left;
+ text-align: left;
+ [% END -%]
+ width: 95%;
+ margin: 5px 0px 5px 0px;
+ border: 1px solid [% css_colors.accent_light %];
+ padding:5px;
+ }
+ .bookbag-specific div.meta {
+ [% IF rtl == 't' -%]
+ float: right;
+ margin-right:0px;
+ text-align: right;
+ [% ELSE -%]
+ float: left;
+ margin-left:0px;
+ text-align: left;
+ [% END -%]
+ width: 95%;
+ margin-bottom:5px;
+ padding:5px;
+ }
+ #bbag-edit-name {
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float: left;
+ [% END -%]
+ width: 220px;
+ }
+ #bbag-edit-description {
+ width: 220px;
+ margin-top:5px;
+ }
+ .bbag-content {
+ padding:5px;
+ border:1px solid [% css_colors.accent_light %];
+ }
+ .bbag-action {
+ [% IF rtl == 't' -%]
+ margin-right:0px;
+ [% ELSE -%]
+ margin-left:0px;
+ [% END -%]
+ margin-bottom:5px;
+ }
+ .bbag-action-field {
+ width:230px;
+ }
+ .bookbag-specific div.sort select {
+ width:180px;
+ }
+ .bookbag-specific tr {
+ display: block;
+ border-bottom: 1px solid [% css_colors.border_standard %];
+ }
+ .bookbag-specific td.list_checkbox {
+ [% IF rtl == 't' -%]
+ padding-right: 0px !important;
+ [% ELSE -%]
+ padding-left: 0px !important;
+ [% END -%]
+ }
+ .bookbag-specific td.list_entry {
+ display: inline-block;
+ min-width: 5em;
+ [% IF rtl == 't' -%]
+ padding-right: 40% !important;
+ [% ELSE -%]
+ padding-left: 40% !important;
+ [% END -%]
+ }
+ .bookbag-specific td.list_entry:before {
+ content: attr(data-label);
+ position: absolute;
+ [% IF rtl == 't' -%]
+ right: 10px;
+ [% ELSE -%]
+ left: 10px;
+ [% END -%]
+ }
+ .bbag-navigate-list {
+ display: none;
+ }
+ .bbag-navigate-list-pages {
+ [% IF rtl == 't' -%]
+ text-align:left;
+ float:left;
+ [% ELSE -%]
+ text-align:right;
+ float:right;
+ [% END -%]
+ }
+ #dash_wrapper div {
+ background-color: transparent;
+ padding: 0px;
+ }
+ #dash_wrapper {
+ position: static;
+ top: auto;
+ }
+ #dash_wrapper .opac-button {
+ top: 0px;
+ }
+ .small_view_only, #filter_hits {
+ display: inline !important;
+ }
+ #dash_identity a {
+ [% IF rtl == 't' -%]
+ float:right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+ }
+
+ #holds_box form blockquote {
+ [% IF rtl == 't' -%]
+ margin-right: 10px;
+ margin-left: 2px;
+ [% ELSE -%]
+ margin-left: 10px;
+ margin-right: 2px;
+ [% END -%]
+ }
+ #holds_box form blockquote select {
+ width: 100%;
+ }
+ #myopac_sum_fines_placehold {
+ display:none;
+ }
+ #myopac_sum_fines {
+ display: none;
+ }
+ #list_description, #list_create_name {
+ width: 170px;
+ }
+ .results_header_lbl {
+ display: none;
+ }
+ .results_header_nav1 span.h1 {
+ display: none;
+ }
+ .preflib {
+ display: none;
+ }
+ .start_end_links_span {
+ display: block;
+ }
+ .invisible {
+ display: none;
+ }
+ .result_table_pic_header {
+ [% IF rtl == 't' -%]
+ padding-right: 0px !important;
+ padding-left: 5px;
+ [% ELSE -%]
+ padding-left: 0px !important;
+ padding-right: 5px;
+ [% END -%]
+ width: 0px !important;
+ margin: 0px;
+ }
+ .result_table_pic {
+ width: 55px;
+ padding: 0px;
+ margin: 0px;
+ }
+ tr[name=results_isbn_tr], tr[name=results_phys_desc_tr], tr[name=results_pub_tr] strong, .result_count {
+ display: none;
+ }
+ tr.result_table_title_cell[name=bib_cn_list] .result_holdings_table th:nth-child(4),
+ tr.result_table_title_cell[name=bib_cn_list] .result_holdings_table td:nth-child(4) {
+ display:none;
+ }
+ #results_header_bar {
+ background-color: inherit;
+ }
+ .results_header_btns a {
+ margin: 0.3em;
+ }
+ .adv_filter_results_hide {
+ display: none;
+ }
+ .adv_filter_results_show {
+ display: block;
+ }
+ .adv_filter_results_block_label {
+ display: block;
+ }
+ .adv_filter_results_group_wrapper {
+ display: block;
+ }
+ #main-content {
+ margin: 0 1px;
+ }
+ #rdetails_status thead {
+ display: none;
+ }
+ #rdetails_status tr {
+ display: block;
+ margin-top: 3px;
+ }
+ #rdetails_status td {
+ display: block;
+ padding: 1px;
+ }
+ .copy_details_row {
+ background-color: [% css_colors.accent_lightest %];
+ }
+ .copy_details_offers_row {
+ background-color: [% css_colors.accent_lightest %];
+ }
+ select#pickup_lib.search-wrapper-locg {
+ width: 100%;
+ }
+ #search-wrapper #search-box {
+ width: 85%;
+ padding-top: 5px;
+ }
+ #main-content-home {
+ padding: 0px;
+ margin: 0px;
+ }
+ /* Make use of full width in mobile mode */
+ .facet_box_wrapper .box_wrapper .box,
+ .facet_template .facet,
+ .facet_box_temp {
+ width: inherit;
+ }
+ .facet_template .count {
+ [% IF rtl == 't' -%]
+ padding-right: 1em;
+ [% ELSE -%]
+ padding-left: 1em;
+ [% END -%]
+ }
+ #facet_sidebar {
+ margin-top: 0.5em;
+ }
+ #adv_search_parent {
+ font-size: [% css_fonts.size_smaller %];
+ }
+ #adv_search_filters {
+ position: relative;
+ width: 300px;
+ }
+ #format_actions {
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float: left;
+ [% END -%]
+ }
+ .rdetail_aux_utils {
+ padding: 0px;
+ border: none;
+ }
+ .result_metadata {
+ width: inherit;
+ }
+ div#rdetail_actions_div {
+ float: none;
+ }
+ h2.rdetail_uris {
+ clear: both;
+ }
+ #metarecord_population {
+ overflow: hidden;
+ width: 100%;
+ }
+ .metarecord_population_span_link {
+ }
+ .metarecord_population_item_lang {
+ float: none;
+ }
+ .search_catalog_lbl {
+ [% IF rtl == 't' -%]
+ margin-right: 0;
+ [% ELSE -%]
+ margin-left: 0;
+ [% END -%]
+ white-space: nowrap;
+ }
+ .adv_search_catalog_lbl {
+ margin-top: 0;
+ white-space: nowrap;
+ }
+ .browse_the_catalog_lbl {
+ white-space: nowrap;
+ }
+ .mobile_hide {
+ display: none;
+ }
+ #dash_user {
+ display: block;
+ padding: 0.5em;
+ font-size: 18px;
+ text-align: center;
+ }
+ .dash_divider {
+ 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%;
+ }
+ .bookshelf table thead tr {
+ display: block;
+ }
+ #lowhits_help { width: inherit; }
+ #adv_search_tabs a{
+ font-size: [% css_fonts.size_small %];
+ margin: 2px 2px 0px 2px;
+ padding: 2px 2px 5px 2px;
+ [% IF rtl == 't' -%]
+ border-radius: 7px 0px 0px 7px;
+ [% ELSE -%]
+ border-radius: 7px 7px 0px 0px;
+ [% END -%]
+ }
+ #adv_global_tbody td {
+ border-bottom: thin solid [% css_colors.accent_light %];
+ }
+ #adv_global_addrow td {
+ border-bottom: none;
+ }
+ /* Force table to not be like tables anymore */
+ table#acct_checked_main_header thead tr th, table#acct_holds_main_header thead tr th, table#acct_checked_hist_header thead tr th, table#acct_holds_hist_header thead tr th, table#ebook_circs_main_table thead tr th, table#ebook_holds_main_table thead tr th {
+ display: none;
+ }
+ table#acct_checked_main_header tbody tr td, table#acct_holds_main_header tbody tr td, table#acct_checked_hist_header tbody tr td, table#acct_holds_hist_header tbody tr td, table#ebook_circs_main_table tbody tr td, table#ebook_holds_main_table tbody tr td {
+ display: block;
+ }
+
+ /* Hide table headers (but not display: none;, for accessibility) */
+ /* thead tr {
+ position: absolute;
+ top: -9999px;
+ [% IF rtl == 't' -%]
+ right: -9999px;
+ [% ELSE -%]
+ left: -9999px;
+ [% END -%]
+ }*/
+
+ table#acct_checked_main_header, table#acct_holds_main_header, table#acct_checked_hist_header, table#acct_holds_hist_header, table#ebook_circs_main_table, table#ebook_holds_main_table {
+ width: 90%;
+ }
+
+ table#acct_checked_main_header tr, table#acct_holds_main_header tr, table#acct_checked_hist_header tr { border: 1px solid #ddd; }
+
+ /* Holds history gets large white border to mimic header cell on other
+ account screens that provide visual cue for next title. We should do
+ the same for ebook tables too since we have no actions on those
+ tables. If actions get added, we should move those tables out of
+ 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_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" */
+ border: none;
+ border-bottom: 1px solid #eee;
+ position: relative;
+ [% IF rtl == 't' -%]
+ padding-right: 40%;
+ [% ELSE -%]
+ padding-left: 40%;
+ [% END -%]
+ }
+
+ table#acct_checked_main_header td:before, table#acct_holds_main_header td:before, table#acct_checked_hist_header td:before, table#acct_holds_hist_header td:before, table#ebook_circs_main_table td:before, table#ebook_holds_main_table td:before {
+ /* Now like a table header */
+ position: absolute;
+ /* Top/left values mimic padding */
+ top: 2px;
+ width: 40%;
+ [% IF rtl == 't' -%]
+ right: 2px;
+ padding-left: 10px;
+ [% ELSE -%]
+ left: 2px;
+ padding-right: 10px;
+ [% END -%]
+ white-space: nowrap;
+ }
+
+ table#acct_checked_main_header td:nth-of-type(1) { border-top: 5px solid #aaa; padding-top: 15px; background-color: #fff;}
+ table#acct_checked_main_header td:nth-of-type(2):before { content: "[% l('Title') %]";}
+ table#acct_checked_main_header td:nth-of-type(3):before { content: "[% l('Author') %]"; }
+ table#acct_checked_main_header td:nth-of-type(4):before { content: "[% l('Renewals Left') %]"; }
+ table#acct_checked_main_header td:nth-of-type(5):before { content: "[% l('Due Date') %]"; }
+ table#acct_checked_main_header td:nth-of-type(6):before { content: "[% l('Barcode') %]"; }
+ table#acct_checked_main_header td:nth-of-type(7):before { content: "[% l('Call number') %]"; }
+
+ table#acct_checked_hist_header td:nth-of-type(1) { border-top: 5px solid #aaa; padding-top: 15px; background-color: #fff;}
+ table#acct_checked_hist_header td:nth-of-type(2):before { content: "[% l('Title') %]";}
+ table#acct_checked_hist_header td:nth-of-type(3):before { content: "[% l('Author') %]"; }
+ table#acct_checked_hist_header td:nth-of-type(4):before { content: "[% l('Checkout Date') %]"; }
+ table#acct_checked_hist_header td:nth-of-type(5):before { content: "[% l('Due Date') %]"; }
+ table#acct_checked_hist_header td:nth-of-type(6):before { content: "[% l('Date Returned') %]"; }
+ table#acct_checked_hist_header td:nth-of-type(7):before { content: "[% l('Barcode') %]"; }
+ table#acct_checked_hist_header td:nth-of-type(8):before { content: "[% l('Call number') %]"; }
+
+ table#acct_holds_main_header td:nth-of-type(1) { border-top: 5px solid #aaa; padding-top: 15px; background-color: #fff;}
+ table#acct_holds_main_header td:nth-of-type(2):before { content: "[% l('Title') %]";}
+ table#acct_holds_main_header td:nth-of-type(3):before { content: "[% l('Author') %]"; }
+ table#acct_holds_main_header td:nth-of-type(4):before { content: "[% l('Format') %]"; }
+ table#acct_holds_main_header td:nth-of-type(5):before { content: "[% l('Pickup Location') %]"; }
+ table#acct_holds_main_header td:nth-of-type(6):before { content: "[% l('Cancel on') %]"; }
+ table#acct_holds_main_header td:nth-of-type(7):before { content: "[% l('Status') %]"; }
+ table#acct_holds_main_header td.hold_notes:before { content: "[% l('Notes') %]"; }
+
+ table#acct_holds_hist_header td:nth-of-type(1):before { content: "[% l('Title') %]";}
+ table#acct_holds_hist_header td:nth-of-type(2):before { content: "[% l('Author') %]"; }
+ table#acct_holds_hist_header td:nth-of-type(3):before { content: "[% l('Format') %]"; }
+ table#acct_holds_hist_header td:nth-of-type(4):before { content: "[% l('Pickup Location') %]"; }
+ table#acct_holds_hist_header td:nth-of-type(8):before { content: "[% l('Status') %]"; }
+
+ table#ebook_circs_main_table td:nth-of-type(1):before { content: "[% l('Title') %]"; }
+ table#ebook_circs_main_table td:nth-of-type(2):before { content: "[% l('Author') %]"; }
+ table#ebook_circs_main_table td:nth-of-type(3):before { content: "[% l('Due Date') %]"; }
+ table#ebook_circs_main_table td:nth-of-type(4):before { content: "[% l('Actions') %]"; }
+
+ table#ebook_holds_main_table td:nth-of-type(1):before { content: "[% l('Title') %]"; }
+ table#ebook_holds_main_table td:nth-of-type(2):before { content: "[% l('Author') %]"; }
+ table#ebook_holds_main_table td:nth-of-type(3):before { content: "[% l('Due Date') %]"; }
+ table#ebook_holds_main_table td:nth-of-type(4):before { content: "[% l('Actions') %]"; }
+
+
+
+ /*Want to see these in mobile ONLY */
+ .mobile_view{
+ display:block;
+ }
+
+ .mobile_search_lbl_clr{
+ color:[% css_colors.mobile_header_text %];
+ }
+}
+
+@media only screen and (min-width: 992px) {
+ .nav-fr{
+ float: right;
+ }
+ .nav-fl{
+ float: left;
+ }
+ #nav-divide{
+ display:none !important;
+ }
+}
+@media only screen and (max-width: 800px) {
+ .facet_sidebar_hidden, .result_block_hidden {
+ display: none;
+ }
+ .facet_sidebar_visible, .result_block_visible {
+ display: inline ! important;
+ }
+ #acct_select, #acct_prefs_select {
+ display: inline-block;
+ }
+ #acct_tabs, #acct_prefs_tabs {
+ display:none;
+ }
+ .radio-parts-selection { width: 90%; }
+ #list_description, #list_create_name {
+ width: 300px;
+ }
+}
rtl = ctx.get_i18n_l(ctx.eg_locale).rtl;
%]
+.adv_filters{
+
+ -moz-column-count: 4;
+ -moz-column-gap: 20px;
+ -webkit-column-count: 4;
+ -webkit-column-gap: 20px;
+ column-count: 4;
+ column-gap: 20px;
+ list-style: none;
+}
+
+.top-divide{
+ border-top: 1px solid rgba(0,0,0,.1);
+}
+
/*
Mini Table Styling
*/
}
}/*Micro Tables End*/
+ .my_nav .active{background-color:#afffbf;}.my_nav a{text-align:left !important; min-width:17em;border-radius: 0px;}.sumNum{
+ font-weight:700;
+}
+
+.coverImage{position: relative;}
+.carousel .glide__arrow{background: unset;}
+
/*
Novelist Styling
*/
border-radius: 1rem !important;
}
-#cnbrowse{
- width: 95%;
- text-align: center;
- padding: 15px;
-}
+
.cn_browse_item .card{
padding: 15px;
}
background-color:#e8e8e8;
}
-.red{
- color:red;
+.danger, .validate{
+ color: [% css_colors.text_alert %] !important;
}
+.danger{
+ font-weight: 600;
+ font-style: italic;
+}
+
+.success{
+ color: green !important;
+}
+.dropdown-menu{
+ border: 1px solid black;
+ box-shadow: 2px 2px #00000054;
+}
+.dropdown-item.active, .dropdown-item:active{
+ color : #000 !important;
+}
.login:focus{
outline:none;
}
min-height: 100vh;
}
body {
-height:100%;
-min-height: 100vh;
+ min-height: 100vh;
margin:0;
font-family: [% css_fonts.font_main %] !important;
font-size: [% css_fonts.size_base %];
height:18px;
}
*/
-h1 {
- margin:0;
- margin-bottom: 5px;
- font-size: [% css_fonts.size_biggest %];
- font-weight:normal;
-}
-h2 {
- font-size: [% css_fonts.size_bigger %];
- font-weight:bold;
+#adv_numeric_block{
+ max-width: 600px;
}
+
h2.graphic880 {
font-size: [% css_fonts.size_bigger %];
font-weight:normal;
display:inline-block;
}
-#dashboard, #dashboard_e {
- margin-top: 1em;
- height: 2em;
-}
-#dashboard span.dash-align a, #dashboard_e span.dash-align a {
- font-weight: bold;
- text-decoration: none;
-}
#dash_user {
font-weight: bold;
}
#adv_special_block {
- [% IF rtl == 't' -%]
- float: right;
- [%- ELSE %]
- float: left;
- [%- END %]
+
padding: 5px;
margin-top: 5px;
}
-#adv_search_submit {
- [% IF rtl == 't' -%]
- margin-right: 10px;
- [%- ELSE %]
- margin-left: 10px;
- [%- END %]
- position: relative;
-}
.checkbox_col {
width: 1%;
#content-wrapper {
background-color: [% css_colors.background %];
- min-height: 600px;
- height: auto;
+ height: auto;
display: grid;
}
margin:0;
}
-#holds_temp_parent tr td div {
- margin-top: 10px;
- margin-bottom: 10px;
-}
#holds_temp_parent tr td div.format_icon {
margin-top: 6px;
position: relative;
}
#record_basket_count_floater {
- background-color: [% css_colors.accent_lighter %];
+ background-color: #ddd;
position: absolute;
- top: -3px;
- right: -3px; /* relative to icon, so don't want to adjust for RTL */
+ top: 0px;
+ right: -10px;
z-index: 2;
+ text-align: center;
border-radius: 50%;
+ width: 20px;
}
#record_basket_count_floater a {
text-decoration: none;
[% END -%]
}
+.mylist_action:hover{
+ text-decoration: none;
+}
+
#myopac_summary_div p {
margin:0;
margin-bottom: 10px;
.facet_template .count {
text-align: right;
- color: [% css_colors.accent_mediumdark %];
+ color: [% css_colors.accent_dark %];
}
+.page-item.active .page-link {
+ background-color: #00593d;
+ border-color: #00593d;
+}
+.page-link
+{
+ color: #00593d;
+}
+
+.filter-header{
+ background-color: [% css_colors.bg_filter %];
+ color: [% css_colors.text_filter %];
+}
+
+.filter-header:hover{
+ background-color: [% css_colors.bg_filter_hover %];
+}
+
+.extra_header{
+ background-color: [% css_colors.bg_extras %];
+}
.facet_template_selected {
background-color: [% css_colors.accent_lighter2 %];
border: 1px solid [% css_colors.accent_medium %];
padding-left: 2em;
[% END -%]
}
-.expert-search-row { padding-top: 10px; }
#adv_expert_row label { font-weight: bold; }
.bookshelf tr.browse_border td {
#nav-divide{
display:none !important;
}
+
}
@media only screen and (max-width: 800px) {
+ .adv_options{
+ width: 100% !important;
+ }
.facet_sidebar_hidden, .result_block_hidden {
display: none;
}
float:left;
[% END -%]
}
- #dashboard, #dashboard_e {
- display: none;
- }
+
#holds_box form blockquote {
[% IF rtl == 't' -%]
margin-right: 10px;
font-weight: bold;
text-align: center;
}
+
+.fas, .far{
+ margin: 0px 3px;
+}
.carousel-entry {
max-width: 150px;
}
display: inline-block;
}
.carousel .glide__arrow--right {
- right: -5em;
+ right: -8em;
}
.carousel .glide__arrow--left {
- left: -5em;
+ left: -8em;
}
.search-filter{
margin: 0px 10px;
}
-.title{
- font-size: large;
-}
#homeLogo{
- opacity: 0.5;
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 */
background-repeat: no-repeat; /* Do not repeat the image */
background-size: contain; /* Resize the background image to cover the entire container */
- background-image: url("https://evergreen-ils.org/wp-content/uploads/2018/09/Evergreen-Final-Logo.png");
+ background-image: url("[% ctx.media_prefix %]/images/Evergreen-Final-Logo.png");
}
+
+.navbar-dark .navbar-nav .nav-link{
+ color: #fff !important;
+}
+
+.pref_table{
+ margin: 10px;
+}
+
+.checkCell{width:30px;}
+
+@media (min-width: 650px){
+.modal-dialog {
+ max-width: 600px !important;
+ }
+
+}
+
+.listTitleText{
+ width:33%;
+}
+
+.facet_box_wrapper .card-header{
+ background-color: [% css_colors.facets_back %];
+ color: [% css_colors.facets_text %];
+}
+
+.vertMid {
+ position: relative;
+ top: 50%;
+ transform: translateY(-50%);
+}
+
+.sumNum{
+ margin-right:5px;
+}
+
+.my_nav .dropdown-toggle::after{
+ margin: 5px 0px !important;
+ float: right;
+}
+
+.my_nav .fas, .mynav .far{
+ min-width:20px;
+}
+
+.adv_options{
+ width: 50%;
+}
\ No newline at end of file
ctx.page_title = l("Home") %]
<h2 class="sr-only">[% l('Catalog Home') %]</h2>
[% INCLUDE "opac/parts/searchbar.tt2" is_home_page=1 %]
- <div>
- <div>
+
[% INCLUDE "opac/parts/homesearch.tt2" %]
- </div>
- </div>
+
[%- END %]
--- /dev/null
+[%- PROCESS "opac/parts/header.tt2";
+ WRAPPER "opac/parts/base.tt2";
+ INCLUDE "opac/parts/topnav.tt2";
+ ctx.page_title = l("Library details: [_1]", ctx.library.name);
+ canon = ctx.proto _ '://' _ ctx.hostname _ mkurl('', {}, 1);
+ ctx.metalinks.push('<link rel="canonical" href="' _ canon _ '" />');
+ ctx.metalinks.push('<meta property="og:url" content="' _ canon _ '" />');
+ ctx.metalinks.push('<meta property="og:type" content="http://schema.org/Library" />');
+-%]
+ [%- INCLUDE "opac/parts/searchbar.tt2" %]
+ [%- INCLUDE "opac/parts/library/core_info.tt2"; %]
+[%- END; %]
--- /dev/null
+[%- PROCESS "opac/parts/header.tt2";
+ WRAPPER "opac/parts/base.tt2";
+ INCLUDE "opac/parts/topnav.tt2";
+ basic_search = "f";
+ ctx.page_title = l("Account Login") %]
+ <h2 class="sr-only">[% l('Account Login') %]</h2>
+ <div class='mobile_hide'>
+ [% INCLUDE "opac/parts/searchbar.tt2" %]
+ </div>
+ <div id="content-wrapper">
+ <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>
+ </div>
+[%- END %]
ctx.metalinks.push('<meta name="robots" content="noindex,follow">');
ctx.page_title = l("Record Detail") %]
<h2 class="sr-only">[% l('Basket') %]</h2>
- <div class="mobile_hide">
+ <div>
[% INCLUDE "opac/parts/searchbar.tt2" %]
</div>
- <div id="content-wrapper">
- <div id="main-content">
+ <div class="container">
+ <div>
[% IF ctx.mylist.size;
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 %]'">[% l('Return') %]</button>
+ <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>
[% END %]
- <div class="common-full-pad"></div>
</div>
</div>
+
[%- END %]
WRAPPER "opac/parts/base.tt2";
INCLUDE "opac/parts/topnav.tt2";
ctx.page_title = l("Confirm Clearing of Basket") %]
- <h2 class="sr-only">[% l('Confirm Clearing of Basket') %]</h2>
+
[% INCLUDE "opac/parts/searchbar.tt2" %]
- <div id="content-wrapper">
- <div id="main-content">
- <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 %]" />
- <input id="print_cart_submit" type="submit" name="submit"
- value="[% l('Confirm') %]" title="[% l('Confirm') %]"
- alt="[% l('Confirm') %]" class="btn btn-confirm" />
- <input type="reset" name="cancel" onclick="window.location='[% ctx.referer | html %]'" value="[% l('Cancel') %]" id="clear_basket_cancel" class="btn btn-deny" />
- </form>
- <div class="common-full-pad"></div>
- </div>
- </div>
+<div class="container">
+ <hr>
+ <h3>[% l('Confirm Clearing of Basket') %]</h3>
+ <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>
+ </form>
+</div>
[%- END %]
WRAPPER "opac/parts/base.tt2";
INCLUDE "opac/parts/topnav.tt2";
ctx.page_title = l("Confirm Basket Email") %]
- <h2 class="sr-only">[% l('Confirm Basket Email') %]</h2>
- [% INCLUDE "opac/parts/searchbar.tt2" %]
- <div id="content-wrapper">
- <div id="main-content">
- [% IF ctx.mylist.size %]
- <p class="big-strong">[% l('Please confirm that you want to email the [_1] titles in the basket.', ctx.mylist.size) %]
- <form method="post" action="[% mkurl(ctx.opac_root _ '/mylist/doemail', {}, 1) %]">
- <input type="hidden" name="redirect_to" value="[% ctx.referer %]" />
- <input type="checkbox" name="clear_basket" value="on" />
- <label for="clear_basket">[% l('Clear basket after emailing it.') %]</label>
- <br />
- <input id="print_cart_submit" type="submit" name="submit"
- value="[% l('Confirm') %]" title="[% l('Confirm') %]"
- alt="[% l('Confirm') %]" class="btn btn-confirm" />
- <input type="reset" name="cancel" onclick="window.location='[% ctx.referer | html %]'" value="[% l('Cancel') %]" id="clear_basket_cancel" class="btn btn-deny" />
- </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 %]'">[% l('Return') %]</button>
- [% END %]
- <div class="common-full-pad"></div>
+
+[% INCLUDE "opac/parts/searchbar.tt2" %]
+<div class="container top-divide">
+ [% IF ctx.mylist.size %]
+ <h3>[% l('Confirm Basket Email') %]</h3>
+ <p class="big-strong">[% l('Please confirm that you want to email the [_1] titles in the basket.', ctx.mylist.size) %]
+ <form method="post" action="[% mkurl(ctx.opac_root _ '/mylist/doemail', {}, 1) %]">
+ <input type="hidden" name="redirect_to" value="[% ctx.referer %]" />
+ <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">
+ [% l('Clear entire basket after email is sent.') %]
+ </label>
</div>
- </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>
+ </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>
+ [% END %]
+</div>
[%- END %]
WRAPPER "opac/parts/base.tt2";
INCLUDE "opac/parts/topnav.tt2";
ctx.page_title = l("Confirm Basket Printing") %]
- <h2 class="sr-only">[% l('Confirm Basket Printing') %]</h2>
[% INCLUDE "opac/parts/searchbar.tt2" %]
- <div id="content-wrapper">
- <div id="main-content">
- [% IF ctx.mylist.size %]
- <p class="big-strong">[% l('Please confirm that you want to print the [_1] titles in the basket.', ctx.mylist.size) %]
- <form method="post" action="[% mkurl(ctx.opac_root _ '/mylist/doprint', {}, 1) %]">
- <input type="hidden" name="redirect_to" value="[% ctx.referer %]" />
- <input type="checkbox" name="clear_cart" value="on" />
- <label for="clear_basket">[% l('Clear basket after printing it.') %]</label>
- <br />
- <input id="print_cart_submit" type="submit" name="submit"
- value="[% l('Confirm') %]" title="[% l('Confirm') %]"
- alt="[% l('Confirm') %]" class="btn btn-confirm" />
- <input type="reset" name="cancel" onclick="window.location='[% ctx.referer | html %]'" value="[% l('Cancel') %]" id="clear_basket_cancel" class="btn btn-deny" />
- </form>
- [% 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 %]'">[% l('Return') %]</button>
- [% END %]
- <div class="common-full-pad"></div>
- </div>
- </div>
+
+<div class="container">
+ [% IF ctx.mylist.size %]
+ <h3>[% l('Confirm Basket Printing') %]</h3>
+ <p class="big-strong">[% l('Please confirm that you want to print the [_1] titles in the basket.', ctx.mylist.size) %]
+ <form method="post" action="[% mkurl(ctx.opac_root _ '/mylist/doprint', {}, 1) %]">
+ <input type="hidden" name="redirect_to" value="[% ctx.referer %]" />
+ <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">
+ [% l('Clear entire basket after printing.') %]
+ </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>
+ </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>
+ [% END %]
+</div>
[%- END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";\r
+ PROCESS "opac/parts/misc_util.tt2";\r
+ WRAPPER "opac/parts/myopac/base.tt2";\r
+ myopac_page = "charges";\r
+ myopac_main_page = "main";\r
+ parent = "charges";\r
+ myopac_cc_allowed = 0;\r
+ IF (ctx.fines.grocery.size OR ctx.fines.circulation.size) AND ctx.get_org_setting(ctx.user.home_ou, 'credit.payments.allow') == 1;\r
+ myopac_cc_allowed = 1;\r
+ END\r
+%]\r
+[% IF myopac_cc_allowed; %]\r
+<form action="[% ctx.opac_root %]/myopac/main_payment_form#payment" method="get" id="selected_fines">\r
+[% END %]\r
+\r
+ [% IF ctx.fines.circulation.size > 0 %]\r
+ <div id='myopac_circ_trans_div'>\r
+ <div class="header_middle">\r
+ <span class="acct_fines_header">\r
+ <!-- Different heading when not able to pay -->\r
+ [% IF myopac_cc_allowed %]\r
+ [% l("Pay Selected Circulation Charges") %]\r
+ [% ELSE %] \r
+ [% l("Circulation Charges") %]\r
+ [% END %]\r
+ </span>\r
+ \r
+ </div>\r
+\r
+ \r
+ \r
+ <table id="acct_fines_main_header" class="table table-hover table-responsive table-bordered miniTable chargesMainTable" title="[% l('Items Checked Out') %]">\r
+ <thead>\r
+ \r
+ <tr>\r
+\r
+ [% IF myopac_cc_allowed %]\r
+ <th style="white-space:nowrap;">\r
+ <input id="pay_fines_box1" checked="checked"\r
+ type="checkbox" onclick="select_all_checkboxes('xact', this.checked)"\r
+ title="[% l('Click to (un)select all charges') %]" />\r
+ </th> \r
+ [% END %]\r
+ <th>[% l("Owed") %]</th>\r
+ <th>[% l("Billing Type") %]</th>\r
+ <th>[% l("Title") %]</th>\r
+ <th>[% l("Checkout") %]</th> \r
+ <th>[% l(" Due ") %]</th> \r
+ <th>\r
+ <span>[% l(" Returned/Renewed") %]</span>\r
+ <span>[% l(" Returned*") %]</span>\r
+ </th>\r
+ \r
+ </tr>\r
+ </thead>\r
+ <tbody id='myopac_circ_trans_tbody'>\r
+ [% FOR f IN ctx.fines.circulation;\r
+ attrs = {marc_xml => f.marc_xml};\r
+ IF f.marc_xml;\r
+ PROCESS get_marc_attrs args=attrs;\r
+ ELSIF f.xact.reservation;\r
+ attrs.title = f.xact.reservation.target_resource_type.name;\r
+ END %]\r
+ <tr id='myopac_circ_trans_row'>\r
+ [% IF myopac_cc_allowed %]\r
+ <td class="checkCell">\r
+ <input type="checkbox" checked="checked" \r
+ title="[% l('Pay this fine') %]" name="xact"\r
+ value="[% f.xact.id %]" class="fineCheck"/>\r
+ </td>\r
+ [% END %]\r
+ \r
+ <td>\r
+ <strong>\r
+ [% money(f.xact.balance_owed) %]\r
+ </strong>\r
+ <input class="fineAmount" value="[% f.xact.balance_owed %]" hidden />\r
+ </td>\r
+ \r
+ <td>\r
+ [% f.xact.last_billing_type %]\r
+ </td>\r
+ \r
+ <td>\r
+ [% recid = f.xact.circulation.target_copy.call_number.record.id || f.xact.reservation.target_resource_type.record.id;\r
+ IF recid; %]\r
+ <a href="[% mkurl(ctx.opac_root _ '/record/' _ recid,\r
+ {loc => ctx.search_ou}) %]">[% attrs.title | html %]</a>\r
+ [% ELSE %]\r
+ [% attrs.title | html %]\r
+ [% END %]\r
+ </td>\r
+ \r
+ <td name='myopac_circ_trans_start'>\r
+ [% ts = f.xact.circulation.xact_start || f.xact.reservation.start_time || 0;\r
+ IF ts;\r
+ date.format(ctx.parse_datetime(ts), DATE_FORMAT);\r
+ END %]\r
+ </td>\r
+ \r
+ <td name='myopac_circ_trans_due' >\r
+ [% ts = f.xact.circulation.due_date || f.xact.reservation.end_time || 0;\r
+ due_org = f.xact.circulation.circ_lib || f.xact.reservation.pickup_lib;\r
+ IF ts;\r
+ date.format(ctx.parse_datetime(ts, due_org), DATE_FORMAT);\r
+ END %]\r
+ </td>\r
+ \r
+ <td name='myopac_circ_trans_finished' >\r
+ [% ts = f.xact.circulation.checkin_time || f.xact.reservation.return_time || 0;\r
+ IF ts;\r
+ date.format(ctx.parse_datetime(ts), DATE_FORMAT);\r
+ ELSE %]\r
+ <!-- XXX TODO fines aren't really accruing\r
+ if circ has hit maxfines. more clarity\r
+ here? --> \r
+ <span class="danger">[% l('(fines accruing)') %]</span>\r
+ [% END %]\r
+ </td>\r
+ \r
+ </tr>\r
+ [% END %]\r
+ </tbody>\r
+ </table>\r
+ <!-- Disclaimer for mobile -->\r
+ <span class="mobile_view cc_disclaimer"> <strong>*</strong>Items may have been renewed. </span>\r
+ </div>\r
+ [% END %]\r
+\r
+ [% IF ctx.fines.grocery.size > 0 %]\r
+ <!-- Table for all non-circulation transactions -->\r
+ <div id='myopac_trans_div'>\r
+ <h3>\r
+ [% l("Charges On Your Account") %]\r
+ </h3>\r
+\r
+ [% IF myopac_cc_allowed %]\r
+ <div class="d-block d-md-none">\r
+ <input id="pay_fines_check" checked="checked"\r
+ type="checkbox" onclick="select_all_checkboxes('xact_misc', this.checked)"\r
+ aria-label="[% l('Check/Uncheck All') %]" /> \r
+ <label for="pay_fines_check">[% l('Check/Uncheck All') %]</label> \r
+ </div> \r
+ [% END %]\r
+ \r
+ <table id="acct_fees_main_header" class="table table-hover table-bordered miniTable chargesTable my-3" title="[% l('Other Fines and Fees') %]">\r
+ <thead>\r
+ <tr>\r
+ \r
+ [% IF myopac_cc_allowed %]\r
+ <th style="white-space:nowrap;">\r
+ <input id="pay_fines_box2" checked="checked"\r
+ type="checkbox" onclick="select_all_checkboxes('xact_misc', this.checked)"\r
+ aria-label="[% l('Check/Uncheck All') %]" />\r
+ </th>\r
+ [% END %]\r
+ <th >[% l("Owed") %]</th>\r
+ <th >[% l("Billing Type") %]</th>\r
+ <th >[% l("Note") %]</th>\r
+ <th >[% l("Date") %]</th>\r
+ \r
+\r
+ </tr>\r
+ </thead>\r
+ <tbody id='myopac_trans_tbody'>\r
+ [% c = 0; %]\r
+ [% FOR f IN ctx.fines.grocery %]\r
+ <tr class ='myopac_trans_row'>\r
+ [% c = c + 1; %]\r
+ [% IF myopac_cc_allowed %]\r
+ <td class="checkCell">\r
+ <label class="sr-only">Billing Number [% c %]</label>\r
+ <input aria-label="Pay This Bill" class="fineCheck" type="checkbox" name="xact_misc" value="[% f.xact.id %]" checked="checked" />\r
+ </td>\r
+ [% END %]\r
+ \r
+ <td class="danger">\r
+ <span class="sr-only">Amount Owed</span>\r
+ <strong>\r
+ [% money(f.xact.balance_owed) %]\r
+ </strong>\r
+ <input type="hidden" class="fineAmount" value="[% f.xact.balance_owed %]" hidden />\r
+ </td>\r
+ \r
+ <td>\r
+ <span class="sr-only">Billing For</span>\r
+ [% f.xact.last_billing_type %]\r
+ </td>\r
+ \r
+ <td>\r
+ [% IF f.xact.last_billing_note; %]\r
+ <span class="sr-only">Note</span>\r
+ [% f.xact.last_billing_note %]\r
+ [% END %]\r
+ </td>\r
+ \r
+ <td>\r
+ <span class="sr-only">Date of Billing</span>\r
+ [% date.format(ctx.parse_datetime(f.xact.xact_start),DATE_FORMAT) %]\r
+ </td>\r
+\r
+ </tr>\r
+ [% END %]\r
+ </tbody>\r
+ </table>\r
+ \r
+ </div>\r
+ [% END %]\r
+ [% UNLESS ctx.fines.grocery.size OR ctx.fines.circulation.size %]\r
+ <div>[% l('You have no current fines.') %]</div>\r
+ [% ELSIF myopac_cc_allowed %]\r
+ \r
+ <div class="my-3">\r
+ <button type="submit" value="[% l('Pay selected charges') %] - [% money(ctx.user_stats.fines.balance_owed) %]" title="[% l('Pay selected charges') %]" class="btn btn-confirm my-1"\r
+ id="selectPay"> <i class='fas fa-money-bill-wave'></i> [% l('Pay Selected Charges') %] - [% money(ctx.user_stats.fines.balance_owed) %]</button>\r
+ <button type="submit" class="btn btn-confirm my-1"><i class="fas fa-cash-register"></i> [% l('Pay All Charges') %] - [% money(ctx.user_stats.fines.balance_owed) %]</button>\r
+ </div>\r
+ [% END %]\r
+[% IF myopac_cc_allowed %]\r
+</form>\r
+[% END %]\r
+<script >\r
+$( document ).ready(function() {\r
+ $("input[type=checkbox]").click(function () {\r
+ var amount = 0;\r
+ $("td input:checked").each(function () {\r
+ var item = jQuery( this ).parent().parent().children("td").children(".fineAmount").attr("value");\r
+ item = parseFloat(item);\r
+ amount += item;\r
+ });\r
+ $("#total").val(amount);\r
+ $("#selectPay").html('<i class="fas fa-money-bill-wave"></i> Pay Selected Charges - $' + amount.toFixed(2));\r
+});\r
+});\r
+\r
+</script>\r
+[% END %]\r
+\r
+<!--Table functions ~ Running total of selected items for use in a Paypal module or where running total is needed-->\r
PROCESS "opac/parts/misc_util.tt2";
PROCESS "opac/parts/myopac/column_sort_support.tt2";
WRAPPER "opac/parts/myopac/base.tt2";
- myopac_page = "circs"
+ myopac_page = "circ_history"
+ parent="circs";
limit = ctx.circ_history_limit;
offset = ctx.circ_history_offset;
%]
-
-<h3 class="sr-only">[% l('History of Checked Out Items') %]</h3>
+<h3>[% l('History of Checked Out Items') %]</h3>
<div style="padding:0px;">
- <div>
- <ul class="nav nav-pills nav-fill">
- <li class="nav-item m-2">
- <a class="nav-link not_active_pill" href='[% mkurl('circs',{},1) %]'>[% l("Current Items Checked Out") %]</a>
- </li>
- [%- IF ebook_api.enabled == 'true' %]
- <li class="nav-item m-2">
- <a class="nav-link not_active_pill" href="[% mkurl('ebook_circs',{},1) %]">[% l("E-Items Currently Checked Out") %]</a>
- </li>
- [%- END %]
- <li class="nav-item m-2">
- <a class="nav-link active" href="#">[% l("Check Out History") %]</a>
- </li>
- </ul>
- </div>
-
[%
# In the sorting case, the size is the size of ALL the circ items. In the non-sorting case,
# the size is simply the size of the chunk passed in. See the TODO below for the still-lingering
no_next = ctx.circs.size < limit;
END;
%]
-<div class="my-4">
- <div class="header_middle">
- <span class="float-left">[% l('Previously Checked Out Items') %]</span>
- <span class='float-left' style='padding-left: 10px;'>
- <a href='[% mkurl('circ_history', {limit => limit, offset => (offset - limit)}) %]'
- [% IF offset == 0 %] class='invisible' [% END %]><span class="nav_arrow_fix">◄</span>[% l('Previous') %]</a>
- [%# TODO: get total to prevent paging off then end of the list.. %]
- <a href='[% mkurl('circ_history', {limit => limit, offset => (offset + limit)}) %]'
- [% IF no_next %] class='invisible' [% END %] >[% l('Next') %]<span class="nav_arrow_fix">►</span></a>
- </span>
- </div>
- <div class="clear-both"></div>
+<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"
- onsubmit="return confirm('[% l("Are you sure you wish to delete the selected item(s)?") %]');">
- <table cellpadding='0' cellspacing='0' class="item_list_padding">
- <tr>
- <td style="width:90%;">
- <select name="action" class="form-control">
- <option value="delete">[% l('Delete Selected Titles') %]</option>
- </select>
- </td>
-
- <td style="padding-left:9px;">
- <input type="submit"
- value="[% l('Go') %]"
- alt="[% l('Go') %]" title="[% l('Go') %]"
- class="btn btn-sm btn-confirm" />
- </td>
- <!--
- <td style="padding-left:5px;">
- <a href="#"><img alt="[% l('Deleting Help') %]"
- src="[% ctx.media_prefix %]/images/question-mark.png[% ctx.cache_key %]" /></a>
- </td>
- -->
- </tr>
- </table>
+ <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>
+ </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)}) %]'
+ class="btn btn-action" >[% l('Next') %]<span class="nav_arrow_fix">►</span></a>[% END %] </div>
+ </div>
<div id='checked_main'>
- <table title="[% l('History of Items Checked Out') %]" id="acct_checked_hist_header" class="table table-hover miniTable circHistTable my-3">
+ <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>
+ <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>
- <th class="checkbox_column">
- <input 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;}"/>
- </th>
+ <td class="checkCell">
+ <input 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;}" aria-label="[% l('Click to (un)select all items') %]"/>
+ </td>
<th>[% sort_head("sort_title", l("Title")) %]</th>
<th>[% sort_head("author", l("Author")) %]</th>
<th>[% sort_head("callnum", l("Call Number")) %]</th>
FOR circ IN circ_items; %]
<tr>
<td class="checkbox_column">
- <input type="checkbox" name="circ_id" value="[% circ.circ.id %]" />
+ <input type="checkbox" name="circ_id" value="[% circ.circ.id %]" aria-label="Select Item"/>
</td>
<td>
<a href="[% mkurl(ctx.opac_root _ '/record/' _
- circ.circ.target_copy.call_number.record.id, {}, 1) %]"
- name="[% l('Catalog record') %]"><span[%- deemphasize_class -%]>
+ 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>
</td>
<td>
+ [% IF circ.ATTRS.author %]
<a href="[% mkurl(ctx.opac_root _ '/results',
{qtype => 'author', query => circ.ATTRS.author.replace('[,\.:;]', '')},
1
) %]">[% circ.ATTRS.author | html %]</a>
+ [%END; %]
</td>
<td>[% circ.circ.target_copy.call_number.label | html %]</td>
<td>
[% IF circ.circ.checkin_time;
date.format(ctx.parse_datetime(circ.circ.checkin_time),DATE_FORMAT);
ELSE; %]
- <span style='color:blue;'>*</span><!-- meh -->
+ <span style='color:blue;'>Not Returned</span><!-- meh -->
[% END; %]
</td>
<td>[% circ.circ.target_copy.barcode | html %]</td>
[%- 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-sm btn-primary">[% l('Download CSV') %]</button>
+ <button type="submit" class="btn btn-action"><i class="fas fa-file-download"></i> [% l('Download CSV') %]</button>
[% END %]
</div>
</form>
--- /dev/null
+[%- PROCESS "opac/parts/misc_util.tt2";
+ USE CSVFilter 'csv';
+ USE date;
+ SET DATE_FORMAT = l('%m/%d/%Y'); -%]
+[%- l('Title') | csv -%]
+[%- l('Author') | csv -%]
+[%- l('Checkout Date') | csv -%]
+[%- l('Due Date') | csv -%]
+[%- l('Date Returned') | csv -%]
+[%- l('Barcode') | csv -%]
+[%- l('Call Number') | csv -%]
+[%- l('Format') | csv 'last' %]
+[% FOREACH circ IN ctx.csv.circs;
+ attrs = { marc_xml => circ.marc_xml };
+ PROCESS get_marc_attrs args=attrs;
+ formats = [];
+ FOR format IN attrs.all_formats;
+ formats.push(format.label);
+ END;
+-%]
+[%- IF circ.circ.target_copy.call_number.id == -1 -%]
+ [%- circ.circ.target_copy.dummy_title | csv -%]
+ [%- circ.circ.target_copy.dummy_author | csv -%]
+[%- ELSIF attrs.title -%]
+ [%- attrs.title | csv -%]
+ [%- attrs.author | csv -%]
+[%- END -%]
+[%- date.format(ctx.parse_datetime(circ.circ.xact_start), DATE_FORMAT) | csv-%]
+[%- date.format(ctx.parse_datetime(circ.circ.due_date), DATE_FORMAT) | csv -%]
+[%- IF circ.circ.checkin_time;
+ date.format(ctx.parse_datetime(circ.checkin_time), DATE_FORMAT) | csv;
+ ELSE; -%]
+,
+[%- END -%]
+[%- circ.circ.target_copy.barcode | csv -%]
+[%- circ.circ.target_copy.call_number.label | csv -%]
+[%- formats.join('+') | csv 'last' %]
+[% END -%]
PROCESS "opac/parts/myopac/column_sort_support.tt2";
WRAPPER "opac/parts/myopac/base.tt2";
myopac_page = "circs";
+ parent="circs";
%]
-<h3 class="sr-only">[% l('Current Items Checked Out') %]</h3>
+<h3>[% l('Current Items Checked Out') %]</h3>
<div id='myopac_checked_div'>
- <div>
- <ul class="nav nav-pills nav-fill">
- <li class="nav-item m-2">
- <a class="nav-link active" href='#'>[% l("Current Items Checked Out") %]</a>
- </li>
- [%- IF ebook_api.enabled == 'true' %]
- <li class="nav-item m-2">
- <a class="nav-link not_active_pill" href="[% mkurl('ebook_circs',{},1) %]">[% l("E-Items Currently Checked Out") %]</a>
- </li>
- [%- END %]
- <li class="nav-item active m-2">
- <a class="nav-link not_active_pill" href="[% mkurl('circ_history',{},1) %]">[% l("Check Out History") %]</a>
- </li>
- </ul>
- </div>
- <div class="my-4">
- <div class="header_middle">
- <span class="float-left">[% l('Current Items Checked Out') %]</span>
- </div>
- <div class="clear-both"></div>
+
+ <div>
+
[% IF ctx.circs.size < 1 %]
<div class="warning_box">[% l('You have no items checked out.') %]</div>
[% ELSE %]
<div id='checked_main'>
<form method="post" id="circ-form"
onsubmit="return confirm('[% l("Are you sure you wish to renew the selected item(s)?") %]');">
- <div class="row">
- <span class="col-md-11 my-2">
- <select class="form-control" name="action" title="[% l('Select Action') %]">
- <option value="renew">[% l('Renew Selected Titles') %]</option>
- </select>
- </span>
- <span class="col-md-1 my-2">
- <input type="submit"
- value="[% l('Go') %]"
- title="[% l('Go') %]"
- class="btn btn-confirm" />
- </span>
- <!-- <span style="padding-left:5px;">
- <a href="#"><img
- alt="[% l('Renewing Help') %]"
- title="[% l('Actions for checked out items') %]"
- src="[% ctx.media_prefix %]/images/question-mark.png[% ctx.cache_key %]" /></a>
- </span> -->
+ <div class="my-3">
+ <button name="action" class="btn btn-confirm" id="renew" value="renew" type="submit"><i class="fas fa-redo-alt"></i> Renew Selected</button>
</div>
+ <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>
<table id="acct_checked_main_header" title="[% l('Items Checked Out') %]"
- class="table table-hover miniTable circTable">
+ class="table table-hover table-bordered miniTable circTable">
<thead>
<tr>
- <th class="checkbox_column">
+ <td class="checkbox_column">
<input type="checkbox" id="check_all_checked"
- title="[% 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;}"
/>
- </th>
+ </td>
<th>[% sort_head("sort_title", l("Title")) %]</th>
<th>[% sort_head("author", l("Author")) %]</th>
<th>[% sort_head("renews", l("Renewals Left")) %]</th>
FOR circ IN circ_items; %]
<tr>
- <td class="checkbox_column" valign="top">
+ <td class="checkCell">
<input type="checkbox" name="circ"
- title="[% l('Item Selected') %]"
+ aria-label="[% l('Select Item') %]"
[% IF circ.circ.renewal_remaining < 1 %] disabled="disabled" [% END %]
value="[% circ.circ.id %]" />
</td>
- <td name="title">
+ <td>
<span class="sr-only">Title</span>
[% 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/' _
- circ.circ.target_copy.call_number.record.id, {}, 1) %]"
- name="[% l('Catalog record') %]"><span[%- deemphasize_class -%]>
+ 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>
[% END %]
</td>
- <td name="author">
+ <td>
[% IF circ.circ.target_copy.call_number.id == -1 %]
<span class="sr-only">Author</span>
[% circ.circ.target_copy.dummy_author | html %]
[% END %]
</td>
- <td name="renewals">
+ <td>
<span class="sr-only">Renewals Remaining</span>
[% circ.circ.renewal_remaining %]
</td>
due_date = ctx.parse_datetime(circ.circ.due_date, circ.circ.circ_lib);
due_class = (date.now > date.format(due_date, '%s')) ? 'error' : '';
%]
- <td name="due_date" class='[% due_class %]'>
+ <td class='[% due_class %]'>
<span class="sr-only">Due Date</span>
[% date.format(due_date, DATE_FORMAT) %]
</td>
- <td name="barcode">
+ <td>
<span class="sr-only">Barcode</span>
<span class="speak:spell-out;">[% circ.circ.target_copy.barcode | html %]</span>
</td>
- <td name="call_number">
+ <td>
<span class="sr-only">Call Number</span>
[% circ.circ.target_copy.call_number.label | html %]
</td>
[% IF ctx.get_org_setting(ctx.user.home_ou, 'opac.show_owning_lib_column'); %]
- <td name="lib">
+ <td>
[%- fleshed_ou = circ.circ.target_copy.call_number.owning_lib;
INCLUDE "opac/parts/library_name_link_from_ou.tt2";
%]
PROCESS "opac/parts/myopac/column_sort_support.tt2";
WRAPPER "opac/parts/myopac/base.tt2";
myopac_page = "ebook_checkout";
+ parent="circs";
%]
-<h3 class="sr-only">[% l('Check Out E-Item') %]</h3>
+<h3>[% l('Check Out E-Item') %]</h3>
<div id='myopac_checked_div'>
-
- <div class="header_middle">
- <span class="float-left">[% l('Check Out E-Item') %]</span>
- </div>
- <div class="clear-both"></div>
<div id="ebook_checkout_failed" class="warning_box hidden">[% l('E-item could not be checked out.') %]</div>
<div id="ebook_checkout_succeeded" class="success hidden">[% l('E-item successfully checked out.') %]</div>
<div id="ebook_spinner"><img src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]" alt="[% l("Loading...") %]"/></div>
<div id='ebook_circs_main' class="hidden">
<table id="ebook_circs_main_table"
title="[% l('Check Out E-Item') %]"
- class="table table-hover miniTable w-100 echeckoutTable">
+ class="table table-hover table-bordered miniTable w-100 echeckoutTable">
<thead>
<tr>
<th>[% l("Title") %]</th>
PROCESS "opac/parts/myopac/column_sort_support.tt2";
WRAPPER "opac/parts/myopac/base.tt2";
myopac_page = "ebook_circs";
+ parent="circs";
%]
-<h3 class="sr-only">[% l('E-Items Currently Checked Out') %]</h3>
+<h3>[% l('E-Items Currently Checked Out') %]</h3>
<div id='myopac_checked_div'>
-
- <div class="mb-3">
- <ul class="nav nav-pills nav-fill">
- <li class="nav-item m-2">
- <a class="nav-link not_active_pill" href='[% mkurl('circs',{},1) %]'>[% l("Current Items Checked Out") %]</a>
- </li>
- [%- IF ebook_api.enabled == 'true' %]
- <li class="nav-item m-2">
- <a class="nav-link active" href="[% mkurl('ebook_circs',{},1) %]">[% l("E-Items Currently Checked Out") %]</a>
- </li>
- [%- END %]
- <li class="nav-item active m-2">
- <a class="nav-link not_active_pill" href="[% mkurl('circ_history',{},1) %]">[% l("Check Out History") %]</a>
- </li>
- </ul>
- </div>
-
- <div class="header_middle">
- <span class="float-left">[% l('E-Items Currently Checked Out') %]</span>
- </div>
- <div class="clear-both"></div>
<div id="no_ebook_circs" class="warning_box hidden">[% l('You have no e-items checked out.') %]</div>
<div id="ebook_spinner"><img src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]" alt="[% l("Loading...") %]"/></div>
<div id='ebook_circs_main' class="hidden">
<table id="ebook_circs_main_table"
title="[% l('E-Items Currently Checked Out') %]"
- class="table table-hover miniTable w-100 ecircsTable">
+ class="table table-hover table-bordered miniTable w-100 ecircsTable">
<thead>
<tr>
<th>[% l("Title") %]</th>
PROCESS "opac/parts/myopac/column_sort_support.tt2";
WRAPPER "opac/parts/myopac/base.tt2";
myopac_page = "ebook_holds";
+ 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;
%]
-<h3 class="sr-only">[% l('My E-Item Holds') %]</h3>
+<h3>[% l('My E-Item Holds') %]</h3>
<div id='myopac_holds_div'>
-
- <div class="mb-3">
- <ul class="nav nav-pills nav-fill">
- <li class="nav-item m-2">
- <a href='[% mkurl('holds', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("Items on Hold") %]</a>
- </li>
- [% IF ebook_api.enabled == 'true' %]
- <li class="nav-item m-2">
- <a href='#' class="nav-link active">[% l("E-Items on Hold") %]</a>
- </li>
- <li class="nav-item m-2">
- <a href='[% mkurl('ebook_holds_ready', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("E-Items Ready for Checkout") %]</a>
- </li>
- [% END %]
- <li class="nav-item m-2">
- <a href='[% mkurl('hold_history', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("Holds History") %]</a>
- </li>
- </ul>
- </div>
- <div class="header_middle">
- <span class="float-left">[% l('E-Items on Hold') %]</span>
- </div>
- <div class="clear-both"></div>
<div id="no_ebook_holds" class="warning_box hidden">[% l('You have no e-item holds.') %]</div>
<div id="ebook_cancel_hold_failed" class="warning_box hidden">[% l('Hold could not be canceled.') %]</div>
<div id="ebook_cancel_hold_succeeded" class="success hidden">[% l('Your hold has been canceled.') %]</div>
<div id='ebook_holds_main' class="hidden">
<table id="ebook_holds_main_table"
title="[% l('E-Items on Hold') %]"
- class="table table-hover miniTable w-100 eholdsTable">
+ class="table table-hover table-bordered miniTable w-100 eholdsTable">
<thead>
<tr>
<th>[% l("Title") %]</th>
PROCESS "opac/parts/myopac/column_sort_support.tt2";
WRAPPER "opac/parts/myopac/base.tt2";
myopac_page = "ebook_holds_ready";
+ 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;
%]
-<h3 class="sr-only">[% l('E-Items Ready for Checkout') %]</h3>
+<h3>[% l('E-Items Ready for Checkout') %]</h3>
<div id='myopac_holds_div'>
- <div class="mb-3">
- <ul class="nav nav-pills nav-fill">
- <li class="nav-item m-2">
- <a href='[% mkurl('holds', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("Items on Hold") %]</a>
- </li>
- [% IF ebook_api.enabled == 'true' %]
- <li class="nav-item m-2">
- <a href='[% mkurl('ebook_holds', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("E-Items on Hold") %]</a>
- </li>
- <li class="nav-item m-2">
- <a href='#' class="nav-link active">[% l("E-Items Ready for Checkout") %]</a>
- </li>
- [% END %]
- <li class="nav-item m-2">
- <a href='[% mkurl('hold_history', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("Holds History") %]</a>
- </li>
- </ul>
- </div>
-
- <div class="header_middle">
- <span class="float-left">[% l('E-Items Ready for Checkout') %]</span>
- </div>
- <div class="clear-both"></div>
<div id="no_ebook_holds" class="warning_box hidden">[% l('You have no e-item holds ready to be checked out.') %]</div>
<div id="ebook_spinner"><img src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]" alt="[% l("Loading...") %]"/></div>
<div id='ebook_holds_main' class="hidden">
<table id="ebook_holds_main_table"
title="[% l('E-Items Ready for Checkout') %]"
- class="table table-hover miniTable w-100 eholdsreadyTable">
+ class="table table-hover table-bordered miniTable w-100 eholdsreadyTable">
<thead>
<tr>
<th>[% l("Title") %]</th>
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ PROCESS "opac/parts/hold_status.tt2";
+ PROCESS "opac/parts/myopac/column_sort_support.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "ebook_place_hold";
+%]
+
+<div id='myopac_holds_div'>
+ <h3>[% l('Place Hold on E-Item') %]</h3>
+ <div class="clear-both"></div>
+ <div id="ebook_place_hold_failed" class="warning_box hidden">[% l('Hold could not be placed.') %]</div>
+ <div id="ebook_place_hold_succeeded" class="success hidden">[% l('E-item is now on hold.') %]</div>
+ <div id="ebook_spinner"><img src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]" alt="[% l("Loading...") %]"/></div>
+ <div id='ebook_holds_main' class="hidden">
+ <table id="ebook_holds_main_table"
+ title="[% l('Place Hold on E-Item') %]"
+ class="table_no_border_space table_no_cell_pad item_list_padding">
+ <thead>
+ <tr>
+ <th>[% l("Title") %]</th>
+ <th>[% l("Author") %]</th>
+ <th>[% l("Expire Date") %]</th>
+ <th>[% l("Status") %]</th>
+ <th>[% l("Actions") %]</th>
+ </tr>
+ </thead>
+ <tbody id="ebook_holds_main_table_body"></tbody>
+ </table>
+ </div>
+</div>
+[% END %]
+
PROCESS "opac/parts/misc_util.tt2";
PROCESS "opac/parts/hold_status.tt2";
WRAPPER "opac/parts/myopac/base.tt2";
- myopac_page = "holds";
+ myopac_page = "hold_history";
+ parent="holds";
limit = ctx.hold_history_limit;
offset = ctx.hold_history_offset;
count = ctx.hold_history_ids.size;
%]
-<h3 class="sr-only">[% l('Holds History') %]</h3>
-<div id='myopac_holds_div'>
+<h3>[% l('Holds History') %]</h3>
+<div id='myopac_holds_div'>
+
+<div>
+ <div>
+ <div>
+ [% IF offset != 0 %]<a href='[% mkurl('hold_history', {limit => limit,offset => (offset - limit)}) %]'
+ ><span class="np_nav_link classic_link btn btn-action">◄[% l('Previous') %]</span></a> [% END %]
+ [% 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>
- <div>
- <ul class="nav nav-pills nav-justified">
- <li class="nav-item m-2">
- <a href='[% mkurl('holds',{},['limit','offset']) %]' class="nav-link not_active_pill">[% l("Items on Hold") %]</a>
- </li>
- [% IF ebook_api.enabled == 'true' %]
- <li class="nav-item m-2">
- <a href='[% mkurl('ebook_holds', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("E-Items on Hold") %]</a>
- </li>
- <li class="nav-item m-2">
- <a href='[% mkurl('ebook_holds_ready', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("E-Items Ready for Checkout") %]</a>
- </li>
- [% END %]
- <li class="nav-item m-2">
- <a href='#' class="nav-link active">[% l("Holds History") %]</a>
- </li>
- </ul>
- </div>
-
-
-<div class="my-4">
- <div class="header_middle">
- <span style="float:left;">[% l("Previously Held Items") %]</span>
- <span class='float-left' style='padding-left: 10px;'>
- <a href='[% mkurl('hold_history', {limit => limit,offset => (offset - limit)}) %]'
- [% IF offset == 0 %] class='invisible' [% END %]><span class="nav_arrow_fix">◄</span>[% l('Previous') %]</a>
- [% IF offset > 0 || count > limit;
- curpage = 0;
- WHILE curpage * limit < count;
- IF curpage * limit == offset;
- %]
- [% curpage + 1 %]
[%- ELSE %]
- <a href='[% mkurl('hold_history', {limit => limit, offset => (curpage * limit)}) %]'>[% curpage + 1 %]</a>
- [%- END;
- curpage = curpage + 1;
- END;
- END %]
- <a href='[% mkurl('hold_history', {limit => limit, offset => (offset + limit)}) %]'
- [% IF count <= limit + offset %] class='invisible' [% END %] >[% l('Next') %]<span class="nav_arrow_fix">►</span></a>
- </span>
- <span style="float:right;">
+ <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 %]
+
+
+
+ [% IF count > limit + offset %]<a href='[% mkurl('hold_history', {limit => limit, offset => (offset + limit)}) %]'
+ ><span class="np_nav_link classic_link btn btn-action">[% l('Next') %]►</span></a>[% END %]
+ </div>
+
+
+
+
+ <p 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; %]
+ </p>
+ <p style="float:right;">
<a class="hide_me" href="#">[% l('Export List') %]</a>
- </span>
+ </p>
</div>
- <div class="clear-both"></div>
<div id='holds_main'>
[% IF ctx.holds.size && ctx.holds.size < 1 %]
<big><strong>[% l('No holds found.') %]</strong></big>
</div>
[% ELSE %]
- <table id='acct_holds_hist_header' class='table table-hover miniTable holdHistoryTable' title="[% l('History of items on hold') %]">
+ <table id='acct_holds_hist_header' class='table table-hover table-bordered miniTable holdHistoryTable' title="[% l('History of items on hold') %]">
<thead>
<tr>
<th><span>[% l('Title') %]</span></th>
PROCESS get_marc_attrs args=attrs;
ahr = hold.hold.hold %]
- <tr name="acct_holds_temp">
+ <tr>
<td>
<span class="sr-only">Title</span>
</div>
</td>
<td>
+ [% IF attrs.author; %]
<span class="sr-only">Author</span>
<div>
+
<a href="[% mkurl(ctx.opac_root _ '/results',
{qtype => author, query => attrs.author.replace('[,\.:;]', '')}
) %]">[% attrs.author | html %]</a>
+
</div>
+ [% END %]
</td>
<td>
- <div class='format_icon'>
+ <div>
[% IF attrs.format_icon %]
- <img title="[% attrs.format_label | html %]" alt="[% attrs.format_label | html %]" src="[% attrs.format_icon %][% ctx.cache_key %]" />
+ <img alt="[% attrs.format_label | html %]" src="[% attrs.format_icon %][% ctx.cache_key %]" />
[% END %]
+ <span>[% attrs.format_label | html %]</span>
</div>
<span class="sr-only">Format [% attrs.format_label | html %]</span>
</td>
</td>
<td>
<span class="sr-only">Hold Status</span>
- <div name="acct_holds_status">
- [% PROCESS get_hold_status hold=hold; %]
+ <div> [% PROCESS get_hold_status hold=hold; %]
</div>
</td>
</tr>
PROCESS "opac/parts/myopac/column_sort_support.tt2";
WRAPPER "opac/parts/myopac/base.tt2";
myopac_page = "holds";
+ 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;
%]
-<h3 class="sr-only">[% l('My Holds') %]</h3>
-<div id='myopac_holds_div'>
- <div class="mb-3">
- <ul class="nav nav-pills nav-fill">
- <li class="nav-item m-2">
- <a href='#' class="nav-link active">[% l("Items on Hold") %]</a>
- </li>
- [% IF ebook_api.enabled == 'true' %]
- <li class="nav-item m-2">
- <a href='[% mkurl('ebook_holds', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("E-Items on Hold") %]</a>
- </li>
- <li class="nav-item m-2">
- <a href='[% mkurl('ebook_holds_ready', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("E-Items Ready for Checkout") %]</a>
- </li>
- [% END %]
- <li class="nav-item m-2">
- <a href='[% mkurl('hold_history', {}, ['limit','offset','available','sort','sort_type']) %]' class="nav-link not_active_pill">[% l("Holds History") %]</a>
- </li>
- </ul>
- </div>
- <div class="my-4">
- <div class="header_middle">
- <span id="acct_holds_header" style="float:left;">
- [% IF CGI.param("available");
+<h3> [% IF CGI.param("available");
l("Items Ready for Pickup");
ELSE;
l("Current Items on Hold");
END
- %]
- </span>
- </div>
- <div class="clear-both"></div>
+ %]</h3>
+<div>
<div id='holds_main'>
<form method="post">
- <div class="row">
- <span class="col-md-11 my-2">
- <select class="form-control" name="action" id="acct_holds_actions"
- title="[% l('Select your action for the selected holds') %]">
- <option id='myopac_holds_actions_none' value=''>
- -- [% l("Actions for selected holds") %] --
- </option>
- <option value='suspend'>[% l("Suspend") %]</option>
- <option value='activate'>[% l("Activate") %]</option>
- <!-- XXX maybe later <option value='thaw_date'>[% l("Set Active Date") %]</option> -->
- <option value='cancel'>[% l("Cancel") %]</option>
- </select>
- </span>
- <span class="col-md-1 my-2">
- <input type="submit" value="[% l('Go') %]"
- title="[% l('Go') %]" class="btn btn-confirm" />
- </span>
- </div>
-
<div class="row">
- <div class="col-3 text-left">
- <a href='[% mkurl('holds', {limit => limit,offset => (offset - limit)}) %]'
- [% IF offset <= 0 %] class='invisible' [% END %]><span class="np_nav_link classic_link btn btn-outline-primary">◄[% l('Previous') %]</span></a>
- [% IF offset > 0 || count > limit; curpage = 0; WHILE curpage * limit < count; IF curpage * limit == offset; %]
- [% curpage + 1 %]
- [%- ELSE %]
- <a href='[% mkurl('holds', {limit => limit, offset => (curpage * limit)}) %]' class="np_nav_link classic_link btn btn-outline-primary">[% curpage + 1 %]</a>
- [%- END; curpage = curpage + 1; END; END %]
- </div>
- <div class="col-6 text-center">
- <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>
-
- <span>
+ <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>
+ <p class="my-2">
[% IF CGI.param("available") -%]
<a href="[% mkurl('holds', {}, ['limit','offset','available']) %]">[% l('Show all holds') %]</a> |
<strong>[% l("Show only available holds") %]</strong>
<strong>[% l("Show all holds") %]</strong> |
<a href="[% mkurl('holds',{available => 1},['limit','offset']) %]">[% l("Show only available holds") %]</a>
[% END -%]
- </span>
- <a href="#">
- <img alt="[% l('Holds Help') %]" title="[% l('Actions for selected holds') %]" src="[% ctx.media_prefix %]/images/question-mark.png[% ctx.cache_key %]" />
- </a>
+ <span title="This option will show all items available for pickup." data-toggle="tooltip">
+ <i class="fas fa-question-circle"></i>
+ </span>
+ </p>
+
+ </div>
</div>
+ <div class="col-8">
+ [% IF offset != 0 %]<a href='[% mkurl('holds', {limit => limit,offset => (offset - limit)}) %]'
+ ><span class="np_nav_link classic_link btn btn-action">◄[% l('Previous') %]</span></a> [% END %]
- <div class="col-3 text-right">
- <a href='[% mkurl('holds', {limit => limit, offset => (offset + limit)}) %]'
- [% IF count <= limit + offset %] class='invisible' [% END %] ><span class="np_nav_link classic_link btn btn-outline-primary">[% l('Next') %]►</span></a>
+ [% 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('holds', {limit => limit, offset => (curpage * limit)}) %]' class="np_nav_link classic_link btn btn-action">[% curpage + 1 %]</a>
+ [%- END; curpage = curpage + 1; END; END %]
+ <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>
<table title="[% l('Items on Hold') %]"
- class="table table-hover miniTable activeHoldstable w-100 my-3">
+ class="table table-hover table-bordered miniTable activeHoldstable w-100 my-3">
<thead>
<tr>
- <th class="checkbox_column">
- <input type="checkbox" title="[% l('Select All Holds') %]"
+ <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;}"/>
- </th>
+ </td>
<th>[% sort_head("sort_title", l('Title')) %]</th>
<th>[% sort_head("author", l('Author')) %]</th>
<th>[% sort_head("format", l('Format')) %]</th>
<th>[% l('Cancel if not filled by') %]</th>
<th>[% l('Status') %]</th>
<th>[% l('Notes') %]</th>
+ <th>[% l('Edit') %]</th>
</tr>
</thead>
<tbody id="holds_temp_parent">
ahr = hold.hold.hold;
cnt = cnt + 1;
%]
- <tr name="acct_holds_temp"
- class="[% ahr.frozen == 't' ? ' inactive-hold' : '' %]">
+ <tr class="[% ahr.frozen == 't' ? ' inactive-hold' : '' %]">
<td class="checkbox_column">
<span class="sr-only">Hold Number [% cnt; %]</span>
<input type="checkbox" name="hold_id" value="[% ahr.id %]"
- [% html_text_attr('title', l('Select hold [_1]', attrs.title)) %]/>
+ aria-label="Select Hold"/>
</td>
<td>
<span class="sr-only">Title</span>
END; %]
<a href="[% mkurl(ctx.opac_root _ '/record/' _
- hold.hold.bre_id, {}, 1) %]"
- name="[% l('Catalog record') %]"><span[%- deemphasize_class -%]>
+ 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>
</div>
FOR format IN formats
%]
<span class="sr-only">[% format.label | html %]</span>
- <img title="[% format.label | html %]"
- alt="[% format.label | html %]" src="[% format.icon %][% ctx.cache_key %]" />
+ <img alt="[% format.label | html %]" src="[% format.icon %][% ctx.cache_key %]" />
[% END %]
</div>
</td>
</td>
<td>
<span class="sr-only">Status</span>
- <div name="acct_holds_status">
+ <div>
[% PROCESS get_hold_status hold=hold; %]
</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>
[% l('Edit') %]
</a>
</td>
[% END %]
</tbody>
</table>
- </div>
[% END %]
</form>
- </div></div>
+ </div>
</div>
[% END %]
expire_time = ahr.expire_time ? date.format(ctx.parse_datetime(ahr.expire_time), DATE_FORMAT) : '';
thaw_date = ahr.thaw_date ? date.format(ctx.parse_datetime(ahr.thaw_date), DATE_FORMAT) : '';
%]
-<h3 class="sr-only">[% l('Edit Hold') %]</h3>
-<div class="pad-bottom-five">
+
+<div>
<div class="header_middle">
- <span id="acct_holds_header float-left">[% l('Editing Hold') %]</span>
-
- <a href="[% ctx.opac_root %]/myopac/holds" class="float-right">[% l('List all holds') %]</a>
+ <h3>[% l('Edit Hold') %]</h3>
+ <a href="[% ctx.opac_root %]/myopac/holds" class="float-right"><i class="fas fa-list"></i> [% l('List all holds') %]</a>
</div>
+ <form method="post">
<div id="hold_editor" class="mt-4">
- [% IF hold;
- title = attrs.title;
+ [% IF hold; title = attrs.title;
IF ahr.hold_type == 'P';
title = l('[_1] ([_2])', title, hold.hold.part.label);
END
- %]<div class="my-4">
+ %]
+ <div class="my-4">
<h1>[% title | html %]</h1>
<h2>[% attrs.author | html %]</h2>
- [% IF attrs.format_icon %]<p>
- <strong>[% l('Format:') %]</strong>
+ [% IF attrs.format_icon %]
+ <strong>[% l('Format:') %]</strong>
<img src="[% attrs.format_icon %]" alt="[% attrs.format_label | html %]" title="[% attrs.format_label | html %]" />
- </p>[% END %]</div>
- <p>
- <strong>[% l('Status') %]</strong>: [% hold.human_status %]
- </p>
- <form method="post">
- <table id="hold_editor_table" >
- <tr>
- <th>
- <input type="hidden" name="action" value="edit" />
+ [% END %]
+ </div>
+
+ <div class="row">
+ <div class="col-12">
+ <strong>[% l('Status') %]</strong>: [% hold.human_status %]
+ </div>
+ <div class="col-12">
+ <input type="hidden" name="action" value="edit" />
<input type="hidden" name="hold_id"
value="[% ahr.id %]" />
[% l('Pickup library') %]
- </th>
- <td>
+
[% INCLUDE build_org_selector
name='pickup_lib' value=ahr.pickup_lib
can_have_vols_only=1 hold_pickup_lib=1 %]
- </td>
- </tr>
- [% IF hold.hold.status < 3 OR hold.hold.status == 7 %]
+ </div>
+ <div class="col-12">
+ [% IF hold.hold.status < 3 OR hold.hold.status == 7 %]
[%# The following actions cannot be performed on holds that
have already been captured... %]
- <tr>
- <th>
+
[% l('Cancel unless filled by') %]
- </th>
- <td>
- <input class="form-control" type="text" name="expire_time"
- value="[% expire_time | html %]" />
- <p><em>[% l('Enter date in MM/DD/YYYY format') %]</em></p>
- <!-- XXX TODO pick out a minimal, simple, reliable
- calendar widget that's not part of some giant,
- bloated framework and doesn't do anything at onload.
- -->
+
+ <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>
- </td>
- </tr>
- <tr>
- <th>
+
[% l('Active?') %]
- </th>
- <td>
+
<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>
- </td>
- </tr>
- <tr>
- <th>
+
[% l('If suspended, activate on') %]
- </th>
- <td>
- <input class="form-control" type="text" name="thaw_date"
- value="[% thaw_date | html %]" />
- <p><em>[% l('Enter date in MM/DD/YYYY format') %]</em></p>
- </td>
- </tr>
+
+ <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 %]
- <tr><td colspan='4'>
+ </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
hold_data=hold; END %]
- </td></tr>
- <tr>
- <td colspan="2" class="hold-editor-controls">
-
- <input type="submit" value="[% l('Submit') %]" class="btn btn-confirm" />
- <a href="[% ctx.opac_root %]/myopac/holds"><button
- class="btn btn-deny">[% l('Go Back') %]</button></a>
- </td>
- </tr>
- </table>
+ </div>
+ <div class="col-12">
+ <a href="[% ctx.opac_root %]/myopac/holds" class="btn btn-deny"><i class="fas fa-arrow-circle-left"></i> [% l('Go Back') %]</a>
+ <button class="btn btn-confirm m-2" type='submit'><i class="fas fa-save"></i> [% l('Save Changes') %]</button>
+ </div>
+ </div>
</form>
[% ELSE;
l('Hold not found');
END %]
</div>
</div>
+<script>
+ $('#datepicker').datepicker({
+ weekStart: 1,
+ autoclose: true,
+ todayHighlight: true,
+ });
+ $('#datepicker').datepicker("setDate", new Date());
+</script>
[% END %]
+
--- /dev/null
+[%- ctx.csv.template_output.data -%]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "lists/update"
+%]
+
+<!-- we should never see this page on success -->
+
+[% IF ctx.bucket_action_failed %]
+<div id='bookbag_udpate_failures'>
+ <h3>[% l("Problem with list management:") %]</h3>
+ <div>
+ [% IF ctx.bucket_action == 'create' %]
+ [% IF ctx.bucket_failure_noname %]
+ <h4 class="text-danger">[% l('A list name is required') %]</h4>
+ [% END %]
+ [% END %]
+ </div>
+ <div>
+ [% url = ctx.referer;
+ # The return link should return the user to the page where the edit
+ # failure occurred.
+ # mkurl() does not support 'page' params w/ existing CGI params.
+ # build the URL manually.
+ IF ctx.where_from;
+ from = ctx.where_from | uri;
+ IF url.match('\?');
+ url = url _ ';where_from=' _ from;
+ ELSE;
+ url = url _ '?where_from=' _ from;
+ END;
+ END; %]
+ <a class="btn btn-success" href="[% url %]"><i class="fas fa-undo"></i> [% l('Return') %]</a>
+ </div>
+</div>
+[% END %]
+[% END %]
"To see the public view of a shared list, " _
"click on the HTML View link in the Saved Lists section.");
%]
-<h3 class="sr-only">[% l('My Lists') %]</h3>
+
+
+<h3>[% l('My Lists') %]</h3>
<div id='myopac_bookbag_div' style="padding:5px;">
<!-- new list creation -->
<form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post" id="create_form">
- <h1>[% l('Create New List') %]</h1><a name="createnewlist"></a>
+ <h4>[% l('Create New List') %]</h4><a id="createnewlist"></a>
<table class="table" >
<tr>
<td class="list_create_table_label">
<label for="list_create_shared">[% l('Share this list?') %]</label>
</td>
<td class="px-3">
- <select class="form-control mini-control" name="shared" id="list_create_shared">
+ <select class="d-inline-block form-control mini-control" name="shared" id="list_create_shared">
<option value="0">[% l('No') %]
<option value="1">[% l('Yes') %]
</select>
-
- <a href="javascript:void(0);"
- onclick="alert('[% bb_publish_text %]')" >
- <img data-toggle="tooltip" data-placement="top" alt="[% l('Sharing Help') %]"
- [% html_text_attr('title', bb_publish_text) %]
- src="[% ctx.media_prefix %]/images/question-mark.png[% ctx.cache_key %]" />
- </a>
+ <span title="Allows the list to be shared through a link or RSS." data-toggle="tooltip">
+ <i class="fas fa-question-circle"></i>
+ </span>
</td>
</tr>
[% IF ctx.mylist.size %]
<label for="list_move_cart">[% l('Move contents of basket to this list?') %]</label>
</td>
<td>
- <select name="move_cart" id="list_move_cart">
+ <select class="d-inline-block form-control mini-control" name="move_cart" id="list_move_cart">
<option value="0">[% l('No') %]
<option value="1" [% IF CGI.param('move_cart_by_default') %]selected="selected"[% END%]>[% l('Yes') %]
</select>
<tr>
<td> </td>
<td class="list-create-table-buttons">
- <input type="reset"
- value="[% l('Cancel') %]"
- alt="[% l('Cancel') %]"
- class="btn btn-deny" />
-
- <input type="submit"
- value="[% l('Submit') %]"
- alt="[% l('Submit') %]"
- class="btn btn-confirm"/>
+ <button type="submit" class="btn btn-confirm"><i class="far fa-plus-square"></i> [% l('Create List') %]</button>
+
+ <button type="reset" class="btn btn-deny" ><i class="fas fa-ban"></i> [% l('Cancel') %]</button>
</td>
</tr>
</table>
</form>
- [% IF CGI.param('from_basket'); %]
+ [% IF CGI.param('from_basket'); %]
<h1>[% l("... from basket") %]</h1>
[% INCLUDE "opac/parts/anon_list.tt2" %]
[% ELSE %]
<h1>[% l("My Existing Basket and Lists") %]</h1>
[% INCLUDE "opac/parts/anon_list.tt2" %]
-
+
[% IF ctx.bookbags.size %]
<div class="header_middle">
<span class="float-left">[% l('Saved Lists') %]</span>
[%- END; -%]
[% END %]
</div>
- <div class="clear-both"></div>
<div id='acct_lists_prime'>
[% FOR bbag IN ctx.bookbags %]
<div>
<table class="table"><tr>
- <td width="30%">
+ <td class="listTitleText">
<div class="bookbag-controls-title-block">
[% baseurl = ctx.opac_root _ '/myopac/lists';
IF bbag.id != CGI.param("bbid");
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></h2>
+ <h2 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>
[% IF bbag.description %]<div class="bookbag-description">[% bbag.description | html %]</div>[% END %]
</div>
</td>
[% IF ctx.where_from %]
<input type="hidden" name="where_from" value="[% ctx.where_from %]" />
[% END %]
- <input class="fixed btn btn-secondary btn-sm m-1" type="submit" value="[% l('Add to this list') %]" />
+ <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>
</div>
</form>
[% END %]
[%- INCLUDE "opac/parts/preserve_params.tt2"; %]
[% IF bbag.pub != 't' %]
<input type="hidden" name="action" value="show" />
- <input class="class=fixed btn btn-secondary btn-sm m-1" type="submit" value="[% l('Share') %]" />
+ <button class="class=fixed btn btn-action btn-sm m-1" type="submit" ><i class="fas fa-share-square"></i> [% l('Share') %]</button>
[% ELSE %]
<input type="hidden" name="action" value="hide" />
- <input class="fixed btn btn-secondary btn-sm m-1" type="submit" value="[% l('Hide') %]" />
+ <button class="fixed btn btn-secondary btn-sm m-1" type="submit"><i class="fas fa-eye-slash"></i> [% l('Hide') %]</button>
[% END %]
</div>
</form>
- <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post" onsubmit="return confirm('[% l('Do you really want to delete this list?') %]')">
- <div class="bookbag-controls">
- <input type="hidden" name="list" value="[% bbag.id %]" />
- <input type="hidden" name="action" value="delete" />
- [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
- <input type="submit" value="[% l('Delete List') %]" class="btn btn-secondary btn-sm m-1"/>
- </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"; %]
- <input type="submit" value="[% l('Download CSV') %]" class="btn btn-secondary btn-sm m-1"/>
+ <button type="submit" class="btn btn-action btn-sm m-1"><i class="fas fa-file-download"></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" />
- <input type="submit" class="btn btn-secondary btn-sm m-1" value="[% l('Remove Default List') %]" />
+ <button type="submit" class="btn btn-danger btn-sm m-1"><i class="fas fa-minus-circle"></i> [% l('Remove Default List') %]</button>
[% ELSE %]
<input type="hidden" name="action" value="make_default" />
- <input type="submit" class="btn btn-secondary btn-sm m-1" value="[% l('Make Default List') %]" />
+ <button type="submit" class="btn btn-action btn-sm m-1"><i class="fas fa-th-list"></i> [% l('Make Default List') %]</button>
[% END %]
</div>
</form>
[% IF ctx.is_staff %]
<div class="bookbag-controls">
- <input
+ <button
type="submit"
onclick='
var path =
xulG
)'
value="[% l('Locate Z39.50 Matches') %]"
- />
+ ><i class="fas fa-external-link-alt"></i></button>
</div>
[% END %]
+ [% IF bbag.pub == 't'; %]
<div class="bookbag-controls">
- [% IF bbag.pub == 't'; %]
- <a class="btn btn-sm btn-secondary m-1" href='[%-
+
+ <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
)
- -%]'>[% l('View in Catalogue') %]</a>
- [% END %]
- [% IF bbag.pub == 't'; %]
- <a target='_blank' href='/opac/extras/feed/bookbag/rss2-full/[% bbag.id %]'><img
- alt="[% l('RSS Feed') %]" border="0"
- src="[% ctx.media_prefix %]/images/small-rss.png[% ctx.cache_key %]"/></a>
- [% END %]
+ -%]'><i class="fas fa-glasses"></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?') %]')">
+ <div class="bookbag-controls float-right">
+ <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>
+ </div>
+ </form>
</td>
</tr>
</table>
- <div class="clear-both pad-bottom-five"></div>
</div>
[% IF CGI.param("bbid") == bbag.id %]
- <div>
- [% IF bbag.items.size %]
- <div class="d-none">
- <form method="get" class="form-row">
- <label for="opac.result.sort" class="form-row">[% l("Sort list items by: ") %]
- [%- INCLUDE "opac/parts/preserve_params.tt2" params=['loc', 'query', 'qtype']; %]
- [% INCLUDE "opac/parts/filtersort.tt2"
- value=CGI.param('sort') mode='bookbag' class='form-control my-2' %]
- <input type="hidden" name="bbid"
- value="[% CGI.param('bbid') | html %]"/>
- <input type="submit" class="btn btn-confirm btn-sm my-2" value="[% l('Sort') %]" />
- </label>
- </form>
- </div>
- [% END %]
- <div>
- <form method="post">
- <input type="hidden" name="bbid" value="[% bbag.id %]" />
- <input type="hidden" name="action" value="editmeta" />
- <input type="hidden" name="limit" value="[% limit %]" />
- <input type="hidden" name="offset" value="[% offset %]" />
- [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
- <table title="Edit List Description" class="mx-auto">
- <th colspan="2" class="text-center"><strong>Edit List Description</strong></th>
- <tr>
- <td>
- <label for="bbag-edit-name">[% l('Name:') %]</label>
- </td>
- <td class="px-3">
- <input name="name" type="text" value="[% bbag.name | html %]" id="bbag-edit-name" class="form-control m-2" /></td>
- </tr>
- <tr>
- <td>
- <label for="bbag-edit-description">[% l('Description:') %]</label>
- </td>
- <td class="px-3">
- <textarea name="description" id="bbag-edit-description" class="form-control m-2">[% bbag.description | html %]</textarea>
- </td>
- </tr>
- <tr>
- <td colspan="2" >
- [% l("Save changes?") %]
- <input type="submit" class="btn btn-confirm btn-sm mx-3" value="[% l('Save') %]" />
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- <br class="clear-both" />
+
<div>
<h5 class="text-center my-2">List Items</h5>
<form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post" >
<div>
[% IF bbag.items.size %]
<div class="my-2">
- <select name="action" class="form-control float-left w-75">
- <option disabled="disabled" selected="selected">[% l('-- Actions for these items --') %]</option>
- <option value="place_hold">[% l('Place hold') %]</option>
- <option value="print">[% l('Print title details') %]</option>
- <option value="email">[% l('Email title details') %]</option>
- <option value="del_item">[% l('Remove from list') %]</option>
- </select>
- [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
- <input class="btn btn-confirm btn-sm m-1" type="submit" value="[% l('Go') %]" />
- [% IF CGI.param('list_none_selected') %]
- <span class="error">[% l('No items were selected') %]</span>
- [% END %]
+ <button name="action" class="btn btn-action" type="submit" value="place_hold" id="place_hold">[% l('Place hold') %]</button>
+ <button name="action" class="btn btn-action" type="submit" value="print">[% l('Print title details') %]</button>
+ <button name="action" class="btn btn-action" type="submit" value="email">[% l('Email title details') %]</button>
+ <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 %])
+ inputs[i].checked = this.checked;}"/>
+
+ <label for="check_all_list_items">[% l('Check/Uncheck All') %]</label>
+ </div>
<table class="table table-hover miniTable w-100 bookbagTable">
<thead>
<tr>
<td class="save-notes">
[%- INCLUDE "opac/parts/preserve_params.tt2"; %]
<input type="hidden" name="bbid" value="[% CGI.param('bbid') | html %]" />
- <input type="submit" class="btn btn-confirm" name="save_notes" value="[% l('Save Notes') %]" />
+ <button type="submit" class="btn btn-confirm" ><i class="fas fa-save"></i> [% l('Save Notes') %]</button>
</td>
</tr>
[% END %]
- </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>
[%- END; -%]
</div>
</div>
- <div class="clear-both"></div>
[% END %]
<br/>
-
+ </div></div>
</form>
</div>
[% END %]
[% END %]
</div>
[% END %][% END %]
-</div></div>
+</div>
+
[% END %]
[% PROCESS "opac/parts/header.tt2";
PROCESS "opac/parts/misc_util.tt2";
- WRAPPER "opac/parts/myopac/main_base.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
myopac_page = "main";
myopac_main_page = "main";
- myopac_cc_allowed = 0;
- IF (ctx.fines.grocery.size OR ctx.fines.circulation.size) AND ctx.get_org_setting(ctx.user.home_ou, 'credit.payments.allow') == 1;
- myopac_cc_allowed = 1;
- END
+ IF date.format(ctx.parse_datetime(ctx.user.expire_date), '%s') < date.format(date.now , '%s');
+ fmt_expire_date = date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT);
+ ctx.expired_card = "true";
+ END;
%]
-<h3 class="sr-only">[% l('My Account Summary') %]</h3>
-[% IF myopac_cc_allowed;
- # http://www.w3.org/TR/WCAG20-TECHS/H32.html
- # avoid forms w/ no submit action %]
-<form action="[% ctx.opac_root %]/myopac/main_payment_form#payment" method="get" id="selected_fines" class="my-3">
-[% END %]
-
- [% IF ctx.fines.circulation.size > 0 %]
- <div id='myopac_circ_trans_div'>
- <!--moved tables heading to outside of the table itself - took internal styling -->
- <div class="header_middle">
- <span class="acct_fines_header">
- <!-- Different heading when not able to pay -->
- [% IF myopac_cc_allowed %]
- [% l("Pay Selected Circulation Charges") %]
- [% ELSE %]
- [% l("Circulation Charges") %]
- [% END %]
- </span>
-
- </div>
-
- <table id="acct_fines_main_header" class="table table-hover miniTable chargesMainTable" title="[% l('Items Checked Out') %]">
- <thead>
-
- <tr>
- [% IF myopac_cc_allowed %]
- <th nowrap="nowrap" style="white-space:nowrap;">
- <input id="pay_fines_box1" checked="checked"
- type="checkbox" onclick="select_all_checkboxes('xact', this.checked)"
- title="[% l('Click to (un)select all charges') %]" />
- </th>
- [% END %]
- <th>[% l("Owed") %]</th>
- <th class="mobile_hide">[% l("Billing Type") %]</th>
- <th>[% l("Title") %]</th>
- <th class='mobile_hide'>[% l("Checkout") %]</th>
- <th>[% l(" Due ") %]</th>
- <th>
- <span class="mobile_hide">[% l(" Returned/Renewed") %]</span>
- <span class="mobile_view">[% l(" Returned*") %]</span>
- </th>
-
- </tr>
- </thead>
- <tbody id='myopac_circ_trans_tbody'>
- [% FOR f IN ctx.fines.circulation;
- attrs = {marc_xml => f.marc_xml};
- IF f.marc_xml;
- PROCESS get_marc_attrs args=attrs;
- ELSIF f.xact.reservation;
- attrs.title = f.xact.reservation.target_resource_type.name;
- END %]
- <tr id='myopac_circ_trans_row'>
- [% IF myopac_cc_allowed %]
- <td>
- <input type="checkbox" checked="checked"
- title="[% l('Pay this fine') %]" name="xact"
- value="[% f.xact.id %]" class="fineCheck"/>
- </td>
- [% END %]
-
- <td>
- <strong class="fineAmount" value="[% f.xact.balance_owed %]">
- [% money(f.xact.balance_owed) %]
- </strong>
- </td>
-
- <td class="mobile_hide">
- [% f.xact.last_billing_type %]
- </td>
-
- <td>
- [% recid = f.xact.circulation.target_copy.call_number.record.id || f.xact.reservation.target_resource_type.record.id;
- IF recid; %]
- <a href="[% mkurl(ctx.opac_root _ '/record/' _ recid,
- {loc => ctx.search_ou}) %]">[% attrs.title | html %]</a>
- [% ELSE %]
- [% attrs.title | html %]
+<div id='myopac_summary_div'>
+ <div>
+ <div id="acct_sum_block" class="container">
+ <h3>[% l('My Account Summary') %]</h3>
+ <div class="row">
+ <div class="col-12">
+ <span [% IF ctx.expired_card %]class="danger"[% END %]>
+ [% l("Account Expiration Date - ") %]
+ [% date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT) %]
+ </span>
+ </div>
+ <div class="col-12">
+ [% IF ctx.expired_card %]
+ <span>
+ <em>
+ [% l("<br>Your library card has expired.<br>Please contact a librarian to resolve this issue.", fmt_expire_date) %]
+ </em>
+ </span>
[% END %]
- </td>
-
- <td name='myopac_circ_trans_start' class='mobile_hide'>
- [% ts = f.xact.circulation.xact_start || f.xact.reservation.start_time || 0;
- IF ts;
- date.format(ctx.parse_datetime(ts), DATE_FORMAT);
- END %]
- </td>
-
- <td name='myopac_circ_trans_due' >
- [% ts = f.xact.circulation.due_date || f.xact.reservation.end_time || 0;
- due_org = f.xact.circulation.circ_lib || f.xact.reservation.pickup_lib;
- IF ts;
- date.format(ctx.parse_datetime(ts, due_org), DATE_FORMAT);
- END %]
- </td>
+ </div>
+ <br>
+ <div class="col-12">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/circs') %]"
+ title="[% l('View My Checked Out Items') %]">
+ [% l("Items Currently Checked out ([_1])", ctx.user_stats.checkouts.total_out) %]
+ </a>
+ </div>
+ <div class="col-12">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/holds') %]"
+ title="[% l('View My Holds') %]">
+ [% l('Items Currently on Hold ([_1])', ctx.user_stats.holds.total) %]
+ </a>
+ </div>
+ <div class="col-12">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/holds', {available => 1}) %]"
+ title="[% l('View My Holds Ready for Pickup') %]">
+ [% l('Items ready for pickup ([_1])', ctx.user_stats.holds.ready) %]
+ </a>
+ </div>
+ <br><br>
+
+ <div class="col-12">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_circs') %]"
+ title="[% l('View My Checked Out E-Items') %]">
+ [% l("E-Items Currently Checked out") %] (<span id="acct_sum_ebook_circ_total">-</span>)
+ </a>
+ </div>
+
+ <div class="col-12">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_holds') %]"
+ title="[% l('View My E-Items On Hold') %]">
+ [% l("E-Items Currently on Hold") %] (<span id="acct_sum_ebook_hold_total">-</span>)
+ </a>
+ </div>
- <td name='myopac_circ_trans_finished' >
- [% ts = f.xact.circulation.checkin_time || f.xact.reservation.return_time || 0;
- IF ts;
- date.format(ctx.parse_datetime(ts), DATE_FORMAT);
- ELSE %]
- <!-- XXX TODO fines aren't really accruing
- if circ has hit maxfines. more clarity
- here? -->
- <span class="alert">[% l('(fines accruing)') %]</span>
- [% END %]
- </td>
+ <div class="col-12">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_holds_ready') %]"
+ title="[% l('View My E-Items Ready for Pickup') %]">
+ [% l("E-Items ready for pickup") %] (<span id="acct_sum_ebook_hold_ready_total">-</span>)
+ </a>
+ </div>
+
+ </div>
- </tr>
- [% END %]
- </tbody>
- </table>
- <!-- Disclaimer for mobile -->
- <span class="mobile_view cc_disclaimer"> <strong>*</strong>Items may have been renewed. </span>
+ </div>
</div>
- [% END %]
+ [% content %]
+</div>
- [% IF ctx.fines.grocery.size > 0 %]
- <!-- Table for all non-circulation transactions -->
- <div id='myopac_trans_div'>
- <h2 class="acct_fines_header text-center">
- [% l("Charges On Your Account") %]
- </h2>
-
-
- <table id="acct_fees_main_header" class="table table-hover miniTable chargesTable my-3" title="[% l('Other Fines and Fees') %]">
- <thead>
- <tr>
-
- [% IF myopac_cc_allowed %]
- <th nowrap="nowrap" style="white-space:nowrap;">
- <input id="pay_fines_box2" checked="checked"
- type="checkbox" onclick="select_all_checkboxes('xact_misc', this.checked)"
- title="[% l('Click to (un)select all fines') %]" />
- </th>
- [% END %]
- <th >[% l("Owed") %]</th>
- <th >[% l("Billing Type") %]</th>
- <th >[% l("Note") %]</th>
- <th >[% l("Date") %]</th>
-
-
- </tr>
- </thead>
- <tbody id='myopac_trans_tbody'>
- [% c = 0; %]
- [% FOR f IN ctx.fines.grocery %]
- <tr id='myopac_trans_row'>
- [% c = c + 1; %]
- [% IF myopac_cc_allowed %]
- <td>
- <span class="sr-only">Billing Number [% c %]</span>
- <input class="fineCheck" type="checkbox" title='[% l("Pay this fine") %]' name="xact_misc" value="[% f.xact.id %]" checked="checked" />
- </td>
- [% END %]
-
- <td class="red">
- <span class="sr-only">Amount Owed</span>
- <strong class="fineAmount" value="[% f.xact.balance_owed %]">
- [% money(f.xact.balance_owed) %]
- </strong>
- </td>
-
- <td>
- <span class="sr-only">Billing For</span>
- [% f.xact.last_billing_type %]
- </td>
-
- <td>
- [% IF f.xact.last_billing_note; %]
- <span class="sr-only">Note</span>
- [% f.xact.last_billing_note %]
- [% END %]
- </td>
-
- <td>
- <span class="sr-only">Date of Billing</span>
- [% date.format(ctx.parse_datetime(f.xact.xact_start),DATE_FORMAT) %]
- </td>
-
- </tr>
- [% END %]
- </tbody>
- </table>
-
- </div>
- [% END %]
- [% UNLESS ctx.fines.grocery.size OR ctx.fines.circulation.size %]
- <div>[% l('You have no current fines.') %]</div>
- [% ELSIF myopac_cc_allowed %]
-
- <div class="my-3">
- <input type="submit"
- value="[% l('Pay selected charges') %] - [% money(ctx.user_stats.fines.balance_owed) %]"
- title="[% l('Pay selected charges') %]"
- class="btn btn-confirm my-1"
- id="selectPay"/>
- <form action="[% ctx.opac_root %]/myopac/main_payment_form" method="get"><input
- type="submit" title="[% l('Pay All Charges') %] "
- value="[% l('Pay All Charges') %] - [% money(ctx.user_stats.fines.balance_owed) %]" class="btn btn-confirm my-1" /></form>
- </div>
- [% END %]
-[% IF myopac_cc_allowed %]
-</form>
-[% END %]
[% END %]
-<!--Table functions ~ Running total of selected items for use in a Paypal module or where running total is needed-->
-<script>
-jQuery("input[type=checkbox]").click(function () {
- var amount = 0;
- jQuery("td input:checked").each(function () {
- var item = jQuery( this ).parent().parent().children("td").children(".fineAmount").attr("value");
- item = parseFloat(item);
- amount += item;
- });
- jQuery("#total").val(amount);
- jQuery("#selectPay").val('Pay selected charges - $' + amount.toFixed(2));
-});
-</script>
\ No newline at end of file
%]
<br/>
- <a href="[% mkurl(ctx.opac_root _ '/myopac/main', {}, 1) %]" class="btn btn-confirm">[% l('Account Home') %]</a>
- <a href="[% retry_url %]" class="btn btn-confirm">[% l('Try Payment Again') %]</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 %]
<p><big>[% l('Your payment has been approved.') %]</big>
<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;">[% l('Print receipt') %]</a></p>
+ onclick="try { print_node('printable-receipt'); } catch (e) { window.print(); } return false;"><i class="fas fa-print"></i> [% l('Print receipt') %]</a></p>
<hr>
<tt id="printable-receipt">
[% ctx.printable_receipt.template_output.data %]
) | html %]
</div>
[% END %]
- <p><a href="[% ctx.opac_root %]/myopac/main" class="btn btn-confirm">[%
- l("Back to Account Summary") %]</a></p>
+ <p><a href="[% ctx.opac_root %]/myopac/main" class="btn btn-confirm"><i class="fas fa-house-user"></i> [% l("Back to My Acccount") %]</a></p>
[% END %]
</div>
[% END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "main";
+ myopac_main_page = "pay" %]
+<div id="myopac_summary_div">
+
+ <div class="payment-processing">
+ [% l('Processing...') %] <br/><br/>
+ [% l('Processing your payment may take some time.') %]<br/>
+ [% l("Please do not Refresh or use your browser's Back button or your credit card may be charged more than once.") %]<br/>
+ </div>
+
+</div>
+[% END %]
[% PROCESS "opac/parts/header.tt2";
PROCESS "opac/parts/misc_util.tt2";
- WRAPPER "opac/parts/myopac/main_base.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
myopac_page = "main";
myopac_main_page = "payment_form";
"browser settings and try again.") %]
</noscript>
[% END %]
+<div class="container">
+<hr>
<div id="pay_fines_now"[% IF ctx.use_stripe %] class="hide_me"[% END %]>
[% IF last_chance %]
+ <h3>[% l("Confirm Payment") %]</h3>
- <p><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>
<form action="[% ctx.opac_root %]/myopac/main_pay_init" method="post">
[% FOR k IN CGI.Vars;
NEXT UNLESS k;
<input type="hidden" name="[% k | html %]" value="[% val | html %]" />
[% END; END %]
- <input type="submit" value="[% l('Submit') %]" class="btn btn-confirm"/>
- <a href="[% mkurl(ctx.opac_root _ '/myopac/main#selected_fines', {}, 1) %]" class="btn btn-deny">[% l('Cancel') %]</a>
-
+ <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 ") %]
+ <strong> [% l("[_1] ", money(ctx.fines.balance_owed))%]</strong>
+ [% l("to your credit card?") %]</big></p>
<table title="[% l('List of Transactions') %]" id="acct_fines_confirm_header"
- class="table_no_border_space table_no_cell_pad my-2">
+ class="table my-2">
<thead>
<tr>
<th>[% l('Charge/Fee') %]</th>
- <th>[% l('Amount') %]</th>
+ <th class="text-right"><span>[% l('Amount') %]</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
- <p style="padding-top: 2em;">
- <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>
- <input type="submit" value="[% l('Submit') %]" class="btn btn-confirm"/>
- <a href="[% mkurl(ctx.opac_root _ '/myopac/main#selected_fines', {}, 1) %]" class="btn btn-deny">[% l('Cancel') %]</a>
- [% ELSE %]
+ [% ELSE %]
<form method="post" id="payment_form" action='#payment'
[% IF ctx.use_stripe %]
<tr>
<td><label for="payment-first-name">[% l('First Name') %]</label></td>
- <td><input 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 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>
<input id="payment-email-addr" type="text"
value="[% ctx.user.email | html %]" disabled="disabled"
- readonly="readonly" class="form-control"/>
+ 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
[% l('Total amount:') %]
<strong>[% money(ctx.fines.balance_owed) %]</strong><br />
- <input type="submit" id="payment_submit" value="[% l('Next') %]" class="btn btn-confirm" />
- <a href="[% mkurl(ctx.opac_root _ '/myopac/main', {}, 1) %]" class="btn btn-deny">[% l('Cancel') %]</a>
+ <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>
<br/>
</div>
</td>
[% END %]
</form>
-</div>
+</div></div>
+
[% END %]
[% END %]
[% PROCESS "opac/parts/header.tt2";
- PROCESS "opac/parts/misc_util.tt2";
- WRAPPER "opac/parts/myopac/main_base.tt2";
- myopac_page = "main";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "main_payments";
myopac_main_page = "payments";
+ parent = "charges";
limit = ctx.payment_history_limit;
offset = ctx.payment_history_offset;
%]
-<h3 class="sr-only">[% l('Transaction Payments') %]</h3>
-<div class="my-3">
+<h3>[% l('Payment History') %]</h3>
+<div>
<div class="row my-2">
- <div class="col-3 text-left">
+ <div class="col-3 text-left">
+ [% IF offset != 0 %]
<a href='main_payments?limit=[% limit %]&offset=[% offset - limit %]'
- [% IF offset == 0 %] class='invisible' [% END %]><span class="np_nav_link classic_link btn btn-outline-primary">◄[% l('Previous') %]</span>
+ ><span class="np_nav_link classic_link btn btn-action">◄[% l('Previous') %]</span>
</a>
+ [% END %]
</div>
<div class="col-6">
- <h2 class="w-50 mx-auto">[% l('Payment History') %]</h2>
+
</div>
<div class="col-3 text-right">
+ [% IF ctx.payments.size > limit %]
<a href='main_payments?limit=[% limit %]&offset=[% offset + limit %]'
- [% IF ctx.payments.size < limit %] class='invisible' [% END %]><span class="np_nav_link classic_link btn btn-outline-primary">[% l('Next') %] ►</span>
- </a>
+ ><span class="np_nav_link classic_link btn btn-action">[% l('Next') %] ►</span>
+ </a>
+ [% END %]
+
</div>
</div>
- <div class="clear-both"></div>
[% IF ctx.payments.size %]
<table title="[% l('Payments') %]"
- class='table table-hover miniTable paymentTable' width='100%'>
+ class='table table-hover table-bordered miniTable paymentTable'>
<thead><tr>
<th>[% l('Payment Date') %]</th>
<th>[% l('Payment For') %]</th>
<span class="sr-only">Receipt Options: </span>
<form action="[% ctx.opac_root %]/myopac/receipt_print" method="post" class="d-inline m-1">
<input class="btn btn-sm btn-confirm my-1" type="hidden" name="payment" value="[% payment.mp.id %]" />
- <input class="btn btn-sm btn-confirm my-1" type="submit" value="[% l('Print') %]" />
+ <button class="btn btn-sm btn-action my-1" type="submit"><i class='fas fa-print'></i> Print</button>
</form>
<form action="[% ctx.opac_root %]/myopac/receipt_email" method="post" class="d-inline m-1">
<input class="btn btn-sm btn-confirm my-1" type="hidden" name="payment" value="[% payment.mp.id %]" />
- <input class="btn btn-sm btn-confirm my-1" type="submit" value="[% l('Email') %]" />
+ <button class="btn btn-sm btn-action my-1" type="submit" value="[% l('Email') %]"><i class="fas fa-envelope-open-text"></i> Email</button>
</form>
</td>
</tr>
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "messages";
+ limit = (ctx.patron_messages_limit.defined) ? ctx.patron_messages_limit : 20;
+ offset = (ctx.patron_messages_offset.defined) ? ctx.patron_messages_offset : 0;
+ count = (ctx.patron_messages_count.defined) ? ctx.patron_messages_count : 0;
+ display_single = (ctx.display_single_message.defined) ? ctx.display_single_message : 0;
+%]
+<h3 class="sr-only">[% l('My Messages') %]</h3>
+[% IF display_single;
+ PROCESS "opac/myopac/messages/single_message.tt2";
+ELSE;
+ PROCESS "opac/myopac/messages/list.tt2";
+END %]
+[% END %]
<div id="myopac_messages_div">
- <div class="header_middle">
- <span id="acct_messages_header" style="float:left;">[% l("Messages") %]</div>
- <span class='float-left' style='padding-left: 10px;'>
- <a href='[% mkurl('messages', { limit => limit, offset => (offset - limit)} ) %]'
- [% IF offset <= 0 %] class='invisible' [% END %]><span class="nav_arrow_fix">◄</span>[% l('Previous') %]</a>
+<h3>[% l("Messages") %]</h3>
+ <div>
+
+
+
+<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; %]
[% IF offset > 0 || count > limit;
curpage = 0;
WHILE curpage * limit < count;
IF curpage * limit == offset;
%]
- [% curpage + 1 %]
+ <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 %]
- <a href='[% mkurl('messages', {limit => limit, offset => (curpage * limit)}) %]'>[% curpage + 1 %]</a>
+ <li class="page-item"><a href="[% mkurl('messages', {limit => limit, offset => (curpage * limit)}) %]" class="btn page-link">[% curpage + 1%]</a></li>
+
[%- END;
curpage = curpage + 1;
END;
END %]
- <a href='[% mkurl('messages', {limit => limit, offset => (offset + limit)}) %]'
- [% IF count <= limit + offset %] class='invisible' [% END %] >[% l('Next') %]<span class="nav_arrow_fix">►</span></a>
- </span>
+ [% 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; %]
+</ul>
+
+
</div>
- <div class="clear-both"></div>
[% IF ctx.message_update_action.defined %]
[% IF ctx.message_update_changed > 0 %]
<div class="message-update-summary">
</div>
[% END %]
[% END %]
- <div class="clear-both"></div>
<div id="messages_main">
<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="row">
- <span class="col-md-11 my-2">
- <select class="form-control" name="action" id="acct_messages_actions"
- title="[% l('Select your action for the selected messages') %]">
- <option id="acct_messages_actions_none" value="">
- -- [% l('Actions for selected messages') %] --
- </option>
- <option value="mark_read">[% l('Mark As Read') %]</option>
- <option value="mark_unread">[% l('Mark As Unread') %]</option>
- <option value="mark_deleted">[% l('Delete') %]</option>
- </select>
- </span>
- <span class="col-md-1 my-2">
- <input type="submit"
- value="[% l('Go') %]"
- title="[% l('Go') %]"
- class="btn btn-confirm " />
- </span>
- <!-- <span style="padding-left:5px;">
- <a href="#"><img
- alt="[% l('Messages Help') %]"
- title="[% l('Actions for messages') %]"
- src="[% ctx.media_prefix %]/images/question-mark.png[% ctx.cache_key %]" /></a>
- </span> -->
+ <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>
</div>
[% IF count < 1 %]
<div class="warning_box">[% l('No messages found.') %]</div>
[% ELSE %]
+ <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>
<table id="acct_messages_main_header" title="[% l('Messages') %]"
- class="table table-hover miniTable messagesTable">
+ class="table table-hover table-bordered miniTable messagesTable">
<thead>
<tr>
- <th align="center" class="text-center">
- <input type="checkbox" title="[% l('Select All Messages') %]"
+ <td>
+ <input type="checkbox" aria-label="[% l('Select All Messages') %]"
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;}"/>
- </th>
+ </td>
<th>[% l('Date') %]</th>
<th>[% l('Library') %]</th>
<th>[% l('Subject') %]</th>
- <th></th>
+ <td></td>
</tr>
</thead>
<tbody>
[% FOR message IN ctx.patron_messages; %]
- <tr name="acct_message_row"
- [% IF !message.is_read %]class="unread-patron-message"[% END %]>
- <td align="center">
+ <tr [% IF !message.is_read %]class="unread-patron-message"[% END %]>
+ <td class="checkCell">
<span class="sr-only">Message Number [% count; %]</span>
<input type="checkbox" name="message_id" value="[% message.id %]"
- [% html_text_attr('title', l('Select message [_1]', message.title)) %]/>
+ [% html_text_attr('aria-label', l('Select message [_1]', message.title)) %]/>
</td>
<td>
<span class="sr-only">Date of Message</span>
</td>
<td>
<span class="sr-only">Message Options</span>
- <a href="[% mkurl('messages', { single => 1, message_id => message.id } ) %]" title="Read [% message.title | html %]">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"></i> Read</a>
</td>
</tr>
[% END %]
<div id="myopac_messages_div">
- <div class="header_middle">
- <span id="acct_messages_header" style="float:left;">[% l("Message") %]</div>
- </div>
- <div class="clear-both"></div>
+ <h3>[% l("Messages") %]</h3>
<div id="single_message_main">
<form method="post" id="messages-form" action="[% ctx.opac_root %]/myopac/messages" class="my-2">
<input type="hidden" name="message_id" value="[% ctx.patron_message_id %]" />
<input type="hidden" name="offset" value="[% offset %]" />
<input type="hidden" name="limit" value="[% limit %]" />
<span>
- <a href="[% mkurl('messages', {}, ['single', 'message_id']) %]" class="btn btn-confirm m-1">
+ <a href="[% mkurl('messages', {}, ['single', 'message_id']) %]" class="btn btn-action m-1">
+ <i class="fas fa-arrow-circle-left"></i>
[% l('Return to Message List') %]
</a>
- <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?") %]')">
- [% l('Delete') %]
- </button>
+
<button type="submit" name="action" value="mark_unread" class="btn btn-opac m-1">
+ <i class="fas fa-eye-slash"></i>
[% l('Mark Unread') %]
</button>
+ <button type="submit" name="action" value="mark_deleted" class="btn btn-danger m-1"
+ onclick="return confirm('[% l("Are you sure you wish to permanently delete this message?") %]')">
+ <i class="fas fa-trash-alt"></i>
+ [% l('Delete') %]
+ </button>
</span>
</form>
-
- <table title="[% l('Message') %]"
- class='light_border table'>
- <tbody id='myopac_message_tbody'>
- <tr>
- <td width='30%'
- class='color_4 light_border'>[% l("Date") %]</td>
- <td class='myopac_message_date'>[% date.format(ctx.parse_datetime(ctx.patron_messages.0.create_date), DATE_FORMAT); %]</td>
- </tr>
- <tr>
- <td width='30%'
- class='color_4 light_border'>[% l("Library") %]</td>
- <td class='myopac_message_library'>[% ctx.patron_messages.0.library | html %]</td>
- </tr>
- <tr>
- <td width='30%'
- class='color_4 light_border'>[% l("Subject") %]</td>
- <td class='myopac_message_subject'>[% ctx.patron_messages.0.title | html %]</td>
- </tr>
- <tr>
- <td width='30%'
- class='color_4 light_border'>[% l("Message") %]</td>
- <td class='myopac_message_message'>[% ctx.patron_messages.0.message | html %]</td>
- </tr>
- </tbody>
- </table>
+ <div class="row">
+ <div class="my-2 col-12">
+ <b>[% l("Date") %]</b>
+ <span class="mx-2">[% date.format(ctx.parse_datetime(ctx.patron_messages.0.create_date), DATE_FORMAT); %]</span>
+ </div>
+ <div class="my-2 col-12">
+ <b>[% l("Library") %]</b>
+ <span class="mx-2">[% ctx.patron_messages.0.library | html %]</span>
+ </div>
+ <div class="my-2 col-12">
+ <b>[% l("Subject") %]</b>
+ <span class="mx-2">[% ctx.patron_messages.0.title | html %]</span>
+ </div>
+ <div class="my-2 col-12">
+ <b>[% l("Message") %]</b>
+ <span class="mx-2">[% ctx.patron_messages.0.message | html %]</span>
+ </div>
+ </div>
</div>
</div>
[% PROCESS "opac/parts/header.tt2";
- WRAPPER "opac/parts/myopac/prefs_base.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
myopac_page = "prefs";
+ parent="prefs";
prefs_page = 'prefs' %]
-
-<h3 class="sr-only">[% l('Account Preferences') %]</h3>
+ <h3>[% l('Account Information and Preferences') %]</h3>
<div id="acct_info_main">
- <table width='70%' title="[% l('Account preference') %]"
- class='light_border table table-hover'>
+ <table title="[% l('Account preference') %]" class='light_border table table-hover'>
<tbody id='myopac_summary_tbody'>
<tr>
<td class='color_4 light_border'>[% l("Name") %]</td>
- <td width='50%' class='light_border'>[% l(
+ <td class='light_border'>[% l(
HUMAN_NAME_FORMAT,
ctx.user.prefix,
ctx.user.first_given_name,
</tr>
[% IF ctx.user.pref_first_given_name || ctx.user.pref_second_given_name || ctx.user.pref_family_name %]
<tr>
- <td width='30%'
- class='color_4 light_border'>[% l("Preferred Name") %]</td>
+ <td class='color_4 light_border'>[% l("Preferred Name") %]</td>
<td class='light_border'>[% l(
HUMAN_NAME_FORMAT,
[%- IF ctx.username_change_disallowed %]
<td></td>
[%- ELSE %]
- <td class='light_border'><a href='update_username'
- title="[% l('Change Username') %]">[% l("Change") %]</a></td>
+ <td class='light_border'><a class="btn btn-sm btn-action" href='update_username'
+ title="[% l('Change Username') %]"><i class="fas fa-user-cog"></i> [% l("Change") %]</a></td>
[%- END %]
</tr>
<tr>
[%- IF disable_password_change == 'true' %]
<span></span>
[%- ELSE %]
- <span class='light_border'><a href='update_password'
- title="[% l('Change Password') %]">[% l("Change") %]</a></span>
+ <span class='light_border'><a class="btn btn-sm btn-action" href='update_password'
+ title="[% l('Change Password') %]"><i class="fas fa-user-cog"></i> [% l("Change") %]</a></span>
[%- END %]
</td>
</tr>
[%- IF disable_email_change == 'true' %]
<span></span>
[%- ELSE %]
- <span class='light_border'><a href='update_email'
- title="[% l('Update Email Address') %]">[% l('Change') %]</a></span>
+ <span class='light_border'><a class="btn btn-sm btn-action" href='update_email'
+ title="[% l('Update Email Address') %]"><i class="fas fa-user-cog"></i> [% l('Change') %]</a></span>
[%- END %]
</td>
</tr>
<tr>
<td class='color_4 light_border'>[% l("Home Library") %]</td>
- <td class='light_border'>[% ctx.user.home_ou.name | html %]</td>
- <td></td>
+ <td class='light_border'>
+ [% ctx.get_aou(ctx.user.home_ou.parent_ou).name %]<br/>
+ [% 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.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;
+ '<a href="'; lib_url | html; '" property="url">'; lib_url; '</a>';
+ END;
+ %]
+ </td> <td></td>
</tr>
<tr>
<td class='color_4 light_border'>[% l("Account Creation Date") %]</td>
<td class='color_4 light_border'>[% l("Account Expiration Date") %]</td>
<td class='light_border'>
[%- IF date.format(ctx.parse_datetime(ctx.user.expire_date), '%s') < date.format(date.now , '%s'); -%]
- <span class="alert" style="font-weight:bold;">[% date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT) %]</span>
- </td>
+ <span class="danger">[% date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT) %]</span>
[% ELSE %]
[% date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT) %]
[% END %]
</table>
<br />
- <hr class='opac-auto-013' color="#DCDBDB" />
+ <hr />
<br />
<div class="header_middle mb-3">
cur_id = addr.id;
pending_addr = pending.$cur_id;
%]
- <div class="col-lg-6 col-12">
- <table width='100%' id='address_table' class='light_border' title="[% l('Addresses') %]">
+ <div class="col-lg-6 col-12">
+ <table class='table' title="[% l('Addresses') %]">
- <tbody>
+ <tbody>
<tr>
+ <td>
<!-- pending address form -->
[% IF pending_addr OR edit_addr_id == cur_id;
update_addr = pending_addr || addr %]
- <td>
+
<form method='post'>
[% IF pending_addr %]
<input type='hidden' name='pending_addr' value='[% pending_addr.id %]'/>
</tr>
[% END %]
<tr>
- <td><input type='submit' value="[% l('Save Changes') %]" class="btn btn-confirm btn-sm"/></td>
+ <td><button type='submit' class="btn btn-confirm "><i class="fas fa-save"></i> [% l('Save Changes') %]
+
+ </button></td>
<td>
[% params = (pending_addr) ? {delete_pending => pending_addr.id} : {} %]
- <a href="[% mkurl('', params, 1) %]" class="btn btn-deny btn-sm">[% l('Discard Pending Address') %]</a>
+ <a href="[% mkurl('', params, 1) %]" class="btn btn-deny "><i class="fas fa-trash-alt"></i> [% l('Discard Pending Address') %]</a>
</td>
</tr>
<tr><td colspan='2'><i>[% l('This address has a pending change.') %]</i></td></tr>
</table>
</form>
</td>
- </tr>
- </tbody>
- </table>
- </div>
- [% ELSE %]
- <div class="col-lg-6 col-12">
+ [% 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("Zip") %]</td><td>[% addr.post_code | html %]</td></tr>
[% 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 href='?edit_address=[% addr.id %]'>[% l('Edit Address') %]</a></td></tr>
+ <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>
- </div>
- [% END %] <!-- if pending_addr -->
+
+ </td>
+ [% END %]
+ </tr>
+ </tbody>
+ </table>
+ </div></div>
[% END %]
- </div>
- </div>
-</div>
+
[% END %]
[% PROCESS "opac/parts/header.tt2";
- WRAPPER "opac/parts/myopac/prefs_base.tt2";
- myopac_page = "prefs";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "prefs_my_lists";
+ parent="prefs";
prefs_page = 'prefs_my_lists' %]
- <h3 class="sr-only">[% l('List Preferences') %]</h3>
+ <h3>[% l('List Preferences') %]</h3>
<form method='post'>
<table class="full-width table" id="acct_search_main"
[%- setting = 'opac.lists_per_page' -%]
<tr >
- <td width='20%'><label for='[% setting %]'>[%l("Lists per page") %]</label></td>
+ <td><label for='[% setting %]'>[%l("Lists per page") %]</label></td>
<td>
- <select class="form-control mini-control" id='[% setting %]' name='[% setting %]'>
+ <select class="d-inline-block form-control mini-control" id='[% setting %]' name='[% setting %]'>
[% UNLESS ctx.user_setting_map.$setting;
ctx.user_setting_map.$setting = 10;
END;
selected='selected'[% END %]>[% val | html %]</option>
[% END %]
</select>
- <img alt="[% l('List Items Help') %]"
- src="[% ctx.media_prefix %]/images/question-mark.png[% ctx.cache_key %]"
- title="[% l('The number of lists displayed per page.') %]"
- />
+ <a href="#" title="Change the amount of lists shown in 'My Lists'." data-toggle="tooltip">
+ <i class="fas fa-question-circle"></i>
+ </a>
</td>
</tr>
[%- setting = 'opac.list_items_per_page' -%]
<tr >
- <td width='20%'><label for='[% setting %]'>[%l("List items per page") %]</label></td>
+ <td><label for='[% setting %]'>[%l("List items per page") %]</label></td>
<td>
- <select class="form-control mini-control" id='[% setting %]' name='[% setting %]'>
+ <select class="d-inline-block form-control mini-control" id='[% setting %]' name='[% setting %]'>
[% UNLESS ctx.user_setting_map.$setting;
ctx.user_setting_map.$setting = 10;
END;
selected='selected'[% END %]>[% val | html %]</option>
[% END %]
</select>
- <img alt="[% l('List Items Help') %]"
- src="[% ctx.media_prefix %]/images/question-mark.png[% ctx.cache_key %]"
- title="[% l('The number of list items displayed per page when viewing a selected list.') %]"
- />
+ <span title="Change the amount of items shown while viewing a 'My List'." data-toggle="tooltip">
+ <i class="fas fa-question-circle"></i>
+ </span>
</td>
</tr>
</tbody>
</table>
- <input type="submit" value="[% l('Save') %]" class="btn btn-confirm"/>
+ <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 %]
[% PROCESS "opac/parts/header.tt2";
- WRAPPER "opac/parts/myopac/prefs_base.tt2";
- myopac_page = "prefs";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "prefs_notify";
+ parent="prefs";
prefs_page = 'prefs_notify' %]
-<h3 class="sr-only">[% l('Notification Preferences') %]</h3>
+<h3>[% l('Notification Preferences') %]</h3>
<form method='post'>
[% setting = 'opac.hold_notify' %]
<input name='[% setting %]' type="hidden"
</tbody>
</table>
- <input type='submit' value="[% l('Save') %]" class="btn btn-confirm" />
+ <button type='submit' class="btn btn-confirm"><i class="fas fa-save"></i> [% l('Save') %]</button>
</form>
[% END %]
[% PROCESS "opac/parts/header.tt2";
PROCESS "opac/parts/org_selector.tt2";
- WRAPPER "opac/parts/myopac/prefs_base.tt2";
- myopac_page = "prefs";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "prefs_settings";
+ parent="prefs";
prefs_page = 'prefs_settings' %]
- <h3 class="sr-only">[% l('Search and History Preferences') %]</h3>
+ <h3>[% l('Search and History Preferences') %]</h3>
<form method='post' action="prefs_settings">
<br/>
[% l('Are you sure you wish to continue?') %]
<br>
- <a href="[% mkurl() %]" class="btn btn-deny">[% l('Cancel') %]</a>
+ <a href="[% mkurl() %]" class="btn btn-deny"><i class="fas fa-ban"></i> [% l('Cancel') %]</a>
<input type='hidden' name='history_delete_confirmed' value='1'/>
- <input type="submit" value="[% l('Confirm') %]" class="btn btn-confirm"/>
+ <button type="submit" class="btn btn-confirm"><i class="fas fa-check"></i> [% l('Confirm') %]</button>
</div>
</td></tr>
[% ELSIF ctx.updated_user_settings OR ctx.updated_waiver_entries %]
[%- setting = 'opac.hits_per_page' -%]
<tr >
- <td width='20%'><label for='[% setting %]'>[% l("Search hits per page") %]</label></td>
+ <td><label for='[% setting %]'>[% l("Search hits per page") %]</label></td>
<td>
- <select class="form-control mini-control" id='[% setting %]' name='[% setting %]'>
+ <select class="d-inline-block form-control mini-control" id='[% setting %]' name='[% setting %]'>
[% UNLESS ctx.user_setting_map.$setting;
ctx.user_setting_map.$setting = 10;
END;
selected='selected'[% END %]>[% val | html %]</option>
[% END %]
</select>
- <a href="#"><img alt="[% l('Search Hits Help') %]"
- src="[% ctx.media_prefix %]/images/question-mark.png[% ctx.cache_key %]"
- /></a>
+ <a href="#" title="Change the amount of results shown in a search while signed in." data-toggle="tooltip">
+ <i class="fas fa-question-circle"></i>
+ </a>
</td>
</tr>
[%- setting = 'opac.default_search_location'; -%]
<tr >
- <td width='20%'><label for='[% setting %]'>[% l("Preferred search location") %]</label></td>
+ <td><label for='[% setting %]'>[% l("Preferred search location") %]</label></td>
<td>
[%- thang = ctx.user.home_ou.id;
IF ctx.user_setting_map.$setting;
</tr>
[%- setting = 'opac.default_pickup_location'; -%]
<tr>
- <td width='20%'><label for='[% setting %]'>[% l("Preferred pickup location") %]</label></td>
+ <td><label for='[% setting %]'>[% l("Preferred pickup location") %]</label></td>
<td>
[%- thang = ctx.user.home_ou.id;
IF ctx.user_setting_map.$setting;
</tbody>
</table>
[% IF !ctx.confirm_history_delete %]
- <input type="submit" value="[% l('Save') %]" class="btn btn-confirm"/>
+ <button type="submit" class="btn btn-confirm"><i class="fas fa-save"></i> [% l('Save') %]</button>
[% END %]
</form>
[% INCLUDE "opac/parts/myopac/prefs_hints.tt2" %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "prefs" %]
+ [% IF ctx.email_receipt_result; # result should be undef on success %]
+ <div class="payment-error">
+ [% l('Error preparing receipt:') %]
+ <span title="[% ctx.email_receipt_result.textcode | html %]">
+ [% ctx.email_receipt_result.desc | html %]
+ </span>
+ </div>
+ [% ELSE %]
+ <div>
+ [% l('Your receipt will be emailed to [_1]', ctx.user.email) | html %]
+ </div>
+ [% END %]
+ <p>
+ [ <a href="[% ctx.opac_root %]/myopac/main_payments">[%
+ l("Back to Payments History") %]</a> ]
+ </p>
+[% END %]
--- /dev/null
+[%# sic! no wrapper %]
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>[% l('Receipt') %]</title>
+ </head>
+ <body onload="if (document.getElementById('printable-receipt')) window.print();">
+ [% IF ctx.printable_receipt.template_output %]
+ <tt id="printable-receipt">
+ [% ctx.printable_receipt.template_output.data %]
+ </tt>
+ [% ELSE %]
+ <div class="payment-error">
+ [% l(
+ 'Error preparing receipt: [_1]',
+ (ctx.printable_receipt.textcode ? ctx.printable_receipt.textcode _ ' / ' _ ctx.printable_receipt.desc : 0) ||
+ ctx.printable_receipt.error_output.data ||
+ l('No receipt data returned from server')
+ ) | html %]
+ </div>
+ [% END %]
+ <hr />
+ <p>[ <a href="[% ctx.opac_root %]/myopac/main_payments">[%
+ l("Back to Payments History") %]</a> ]</p>
+ </body>
+</html>
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "reservations";
+%]
+<h3 class="sr-only">[% l('Reservations') %]</h3>
+[% IF ctx.reservations.size %]
+ <table id="acct_reservations_main_header" class="table_no_border_space table_no_cell_pad item_list_padding">
+ <tr>
+ <th scope="col">[% l('Resource type') %]</th>
+ <th scope="col">[% l('Start time') %]</th>
+ <th scope="col">[% l('End time') %]</th>
+ <th scope="col">[% l('Pickup location') %]</th>
+ <th scope="col">[% l('Status') %]</th>
+ </tr>
+ [% FOREACH r IN ctx.reservations %]
+ <tr>
+ <td>[% r.resource_type_name %]</td>
+ <td>[% date.format(ctx.parse_datetime(r.start_time, r.pickup_lib), DATE_FORMAT _ ' %I:%M %p') %]</td>
+ <td>[% date.format(ctx.parse_datetime(r.end_time, r.pickup_lib), DATE_FORMAT _ ' %I:%M %p') %]</td>
+ <td><a href="../library/[% r.shortname %]">[% r.pickup_name %]</a></td>
+ <td>
+ [% IF r.cancel_time %]
+ [% l('Canceled') %]
+ [% ELSIF r.pickup_time %]
+ [% l('Checked Out') %]
+ [% ELSIF r.capture_time %]
+ [% l('Ready for Pickup') %]
+ [% ELSE %]
+ [% l('Reserved') %]
+ [% END %]
+ </td>
+ </tr>
+ [% END %]
+ </table>
+[% ELSE %]
+ [% l('You have no current reservations') %]
+[% END %]
+[% END %]
<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>
</table>
- <input value="[% l('Submit') %]" type='submit' class="btn btn-confirm m-2"/>
+ <button class="btn btn-confirm m-2" type='submit'><i class="fas fa-save"></i> [% l('Save Changes') %]</button>
</form>
</div>
[% END %]
<tr><td>[% l('New Password') %]</td><td><label><input class="form-control" type='password' name='new_pw' autocomplete='off'/></label></td></tr>
<tr><td>[% l('New Password Again') %]</td><td><label><input class="form-control" type='password' name='new_pw2'/></label></td></tr>
</table>
- <input value="[% l('Submit') %]" type='submit' class="btn btn-confirm"/>
+<button class="btn btn-confirm m-2" type='submit'><i class="fas fa-save"></i> [% l('Save Changes') %]</button>
</form>
</div>
[% END %]
--- /dev/null
+<div class="password_message">
+[% l('Note: The password must be at least 7 characters in length, contain at least one letter (a-z/A-Z), and contain at least one number.'); %]
+</div>
\ No newline at end of file
<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><td colspan='2' align='center'><input value="[% l('Submit') %]" class="btn btn-confirm m-2" type='submit'/></td></tr>
+ <tr><td colspan='2' align='center'><button class="btn btn-confirm m-2" type='submit'><i class="fas fa-save"></i> [% l('Save Changes') %]</button></td></tr>
</table>
</form>
--- /dev/null
+
+<script>
+
+ /* Checks to see if a given type of added content has data to show.
+ * The first arg to callback() is boolean indicating the presence of data */
+ function acIsAvailable(bre_id, type, callback) {
+ var url = '/opac/extras/ac/' + type + '/html/r/' + bre_id;
+ dojo.xhr('HEAD', {
+ url : url,
+ failOk : true, // http://bugs.dojotoolkit.org/ticket/11568
+ error : function(err) { callback(false, bre_id, type); },
+ load : function(result) { callback(true, bre_id, type); }
+ });
+ }
+
+ [%-
+ FOR type IN ctx.added_content.keys;
+ IF ctx.added_content.$type.status == '3' # status unknown %]
+
+ dojo.addOnLoad(function() {
+ var bre_id = '[% ctx.bre_id %]';
+ var type = '[% type %]';
+
+ acIsAvailable(bre_id, type, function(avail, bre_id, type) {
+ if (avail) {
+
+ [% IF CGI.param('expand') == 'addedcontent' %]
+
+ // if the content is available, un-hide the tab
+ dojo.removeClass(dojo.byId('ac:' + type), 'hidden');
+
+ [% ELSE %]
+ // if no default type is selected on the main tab link
+ // set one here, since we have available content
+
+ var link = dojo.query('[name=addedcontent]')[0];
+ var href = link.getAttribute('href');
+ if (!href.match('[\&;]ac=')) {
+ href = href.replace('#addedcontent', ';ac=' + type + '#addedcontent');
+ dojo.attr(link, 'href', href);
+ dojo.attr(dojo.query('[name=addedcontent_lbl]')[0], 'href', href);
+ }
+
+ [% END %]
+ }
+ });
+ });
+ [% END; # IF status unknown
+ END; # FOR type
+
+ ident = ctx.record_attrs.isbn_clean || ctx.record_attrs.upc;
+ IF ident;
+ -%]
+
+[%- IF ENV.OILS_NOVELIST_URL -%]
+ /* Load novelist content */
+ setTimeout( function() {
+ novSelect.loadContentForQuery(
+ {
+ ClientIdentifier : '[% ident %]',
+ ISBN : '[% ident %]',
+ version : '2.1'
+ },
+ '[% ENV.OILS_NOVELIST_PROFILE %]',
+ '[% ENV.OILS_NOVELIST_PASSWORD %]',
+ function(d){
+ // note if d.length == 0, there is no content to display
+ // hide the Loading... text
+ dojo.byId('novelist-loading').innerHTML = '';
+ }
+ )}, 100);
+[%- END; # Novelist -%]
+
+ [% END; # IF ident
+ %]
+</script>
<form action="[% ctx.opac_root %]/results" method="get">
- <div class="header_middle">[% l("Expert Search") %]</div>
+ <h1 class="text-center">Expert Search</h1>
+ <h2 class="text-center">Search the MARC record.</h2>
<input type="hidden" name="_special" value="1" />
<input id="detail" type="hidden" name="detail_record_view"
value="[% show_detail_view %]"/>
<tr id="adv_expert_row">
<td class="py-3">
<div class="row">
- <div class="col-2">
- <span class="d-inline-block" style="position:absolute;bottom:10px;">
- <a href="javascript:;" class="btn btn-remove btn-sm"
- title="[% l('Remove row') %]" alt="[% l('Remove row') %]"
- onclick='return killRowIfAtLeast(1, this.parentNode.parentNode);'>
- <span>[% l('X') %]</span></a>
- </span>
- </div>
+
<div class="col-3">
<span class="d-inline-block">
<label for="expert_tag">[% l("Tag:") %]</label>
<input class="form-control" id="expert_term" type="text" name="term" size="16" />
</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') %]"
+ onclick='return killRowIfAtLeast(1, this.parentNode.parentNode);'>
+ <i class="fas fa-times"></i></a>
+ </button>
+ </div>
</div>
</td>
</tr>
</tbody>
<tfoot>
<tr>
- <td class="py-3" colspan="7"><a class="btn btn-opac btn-sm" href="javascript:addExpertRow();">[% l("Add Search Row") %]</a></td>
+ <td><a class="btn btn-opac btn-sm" href="javascript:addExpertRow();"><i class="fas fa-plus-circle"></i> [% l("Add Search Row") %]</a></td>
</tr>
<tr>
- [%- lib_select_id = "expert_search_library"; -%]
- <td class="py-3" colspan="5" class="expert-search-row">
+ [%- lib_select_id = "adv_org_selector"; -%]
+ <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
</td>
</tr>
<tr>
- <td colspan="2" class="expert-search-row">
- <input type="submit" value="[% l('Search') %]"
- alt="[% l('Search') %]" title="[% l('Search') %]"
- class="btn btn-confirm" />
+ <td class="py-3">
+ <button type="submit" class="btn btn-confirm"><i class="fas fa-search"></i> [% l('Search') %]</button>
</td>
</tr>
</tfoot>
queries = CGI.param('query');
bools = CGI.param('bool');
qtypes = CGI.param('qtype');
- rowcount = 3;
+ rowcount = 2;
# scalar.merge treats the scalar as a 1-item array
WHILE queries.size < rowcount; queries = queries.merge(['']); END;
<div class="row">
<div class="col-2">
<!-- bool selector. hide for first row. safe to ignore first bool value in form submission -->
- <select title="[% l('Boolean search operator') %]"
+ <select aria-label="[% l('Boolean search operator') %]"
name='bool' [% IF loop.first %] class='d-none' [% ELSE %] class='form-control' [% END %]>
<option value='and' [% b == 'and' ? 'selected="selected"' : '' %]>[% l('And') %]</option>
<option value='or' [% b == 'or' ? 'selected="selected"' : '' %]>[% l('Or') %]</option>
</span>
</div>
<div class="col-3">
- <select class='form-control' title="[% l('Search phrase match strictness') %]"
+ <select class='form-control w-100' aria-label="[% l('Search phrase match strictness') %]"
name='contains'>
[% FOR o IN contains_options; -%]
<option value="[% o.value %]" [% c == o.value ? ' selected="selected"' : '' %]>[% o.label %]</option>
</select>
</div>
<div class="col-4">
- <input class="form-control" title="[% l('Search term') %]" aria-label="[% l('Search term') %]"
- type='text' size='18' name='query' value="[% q | html %]" x-webkit-speech [% IF loop.index == 0 %] autofocus [% END %] />
+ <input class="form-control" aria-label="[% l('Search term') %]"
+ type='text' size='18' name='query' value="[% q | html %]" [% IF loop.index == 0 %] autofocus [% END %] />
</div>
</div>
</td>
<td class="px-2">
- <a href="javascript:;" class="btn btn-remove btn-sm"
- title="[% l('Remove row') %]" alt="[% l('Remove row') %]"
+ <a href="javascript:;" class="btn btn-remove btn-sm" aria-label="Remove This Row"
+ title="[% l('Remove row') %]"
onclick='return killRowIfAtLeast(2, this);'>
- <span>[% l('X') %]</span>
+ <i class="fas fa-times"></i>
</a></td>
</tr>
[% END %]
<form action="[% ctx.opac_root %]/results" method="get">
- <div class="header_middle">[% l("Numeric Search") %]</div>
+ <h1 class="text-center">Numeric Search</h1>
+ <h2 class="text-center">Search by a field and numeric identifier.</h2>
<input type="hidden" name="contains" value="contains" />
<input type="hidden" name="_special" value="1" />
<input id="detail" type="hidden" name="detail_record_view"
value="[% show_detail_view %]"/>
<div id='adv_numeric_block' class='row'>
- <div class="col-md-6 col-xs-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="item_barcode">[% l('Item Barcode') %]</option>
</select>
</div>
- <div class="col-md-6 col-xs-12 my-3">
- <label for="numeric_qtype"><strong>[% l("Identifier:") %]</strong></label>
- <input class="form-control" type="text" name="query" size="16" autofocus placeholder='[% l("Identifier") %]' aria-label='[% l("Identifier") %]' />
+ <div class="col-12 my-3">
+ <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/>
- <div class="col-12 my-3 text-center">
- [%- lib_select_id="numeric_search_library" -%]
+ <div class="col-12 my-3">
+ [%- lib_select_id="adv_org_selector" -%]
<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
%]
</label>
<br/>
- <input type="submit" alt="[% l('Search') %]"
- value="[% l('Search') %]" class="btn btn-confirm mt-3" />
+
</div>
+ <div class="col-12 my-3">
+ <button type="submit" class="btn btn-confirm"><i class="fas fa-search"></i> [% l('Search') %]</button>
+
+ </div>
</div>
</form>
%]
<form action="[% ctx.opac_root %]/results" method="get">
<div id='adv_global_search' class='data_grid data_grid_center'>
- <div id='adv_search_rows' class="container mb-3">
- <!-- Contains the user-adda
- ble(?) rows to define search class, containment and text -->
- <div class="header_middle">[% l('Search Input') %]</div>
- <div valign='top' class='adv_global_input_container row'>
- <table role="presentation" class="mx-auto mb-5 col-lg-8">
+ <div id='adv_search_rows' class="container">
+ <h1 class="text-center">Advanced Search</h1>
+ <h2 class="text-center">Refine your search by filling out one or more fields to search by below.</h2>
+ <div class='adv_global_input_container row'>
+ <table role="presentation" id="adv_global_input_table" class="mx-auto col-12">
<tbody id="adv_global_tbody">
[% INCLUDE "opac/parts/advanced/global_row.tt2" %]
<!-- 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();'>[% 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"></i> [% l('Add Search Row') %]</a>
</td>
</tr>
</tbody>
</table>
</div>
- <div id='adv_search_submit' class="text-center">
- <input type="hidden" name="_adv" value="1" />
- <input id="detail" type="hidden" name="detail_record_view"
- value="[% show_detail_view %]"/>
- <span>
- <input id='search-submit-go' type="submit" value="[% l('Search') %]" title="[% l('Search') %]" class="btn btn-confirm"
- onclick='setTimeout(function(){$("search-submit-spinner").className=""; $("search-submit-go").className="hidden"}, 2000)'/>
- <img id='search-submit-spinner' src='/opac/images/progressbar_green.gif[% ctx.cache_key %]'
- class='hidden' alt="[% l('Search in progress icon') %]"/>
- </span>
-
- <a href="[% mkurl(ctx.opac_root _ '/advanced', {$loc_name => loc_value}, 1) %]"
- class="btn btn-deny">[% l('Clear Form') %]</a>
</div>
- </div>
-
-
- <div class="container">
- <div class="header_middle">[% l('Search Filters') %]</div>
-<div class='row'>
-[% FOR adv_chunk IN search.adv_config; NEXT IF adv_chunk.adv_hide || (adv_chunk.adv_special && adv_chunk.adv_special != 'copy_location'); %]
- <div class='col-xl-3 col-sm-6 col-md-4 col-xs-12 pt-3'>
- <div valign='top'[% IF adv_chunk.js_only %]
- id='adv_chunk_[% adv_chunk.adv_special %]'
- class='hidden mx-auto' [%ELSE%] class='mx-auto' [% END %]>
- <strong><label for="[% adv_chunk.id %]">
- [% adv_chunk.adv_label %] </label></strong><br />
-
-[% IF adv_chunk.adv_attr;
- INCLUDE "opac/parts/coded_value_selector.tt2"
- id=adv_chunk.id
- attr=adv_chunk.adv_attr multiple="multiple"
- size=adv_chunk.adv_size || search.default_adv_select_height || "4";
- ELSIF adv_chunk.adv_filter;
- 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; %]
-[% IF adv_chunk.adv_special == 'copy_location' %]
-<select id="adv_copy_location_selector"
- title="[% l('Select Shelving Location') %]"
- name="fi:locations" size="4" multiple="multiple" class="form-control">
- </select>
- [%END;%]</div></div>[%END;%]</div>
-
-
+ <div class="my-5">
+ <h3>Search Filters</h3>
+ <div>
+ [% FOR adv_chunk IN search.adv_config; NEXT IF adv_chunk.adv_hide || (adv_chunk.adv_special && adv_chunk.adv_special != 'copy_location'); %]
+ <div class="pt-3">
+ <div [% IF adv_chunk.js_only %] id='adv_chunk_[% adv_chunk.adv_special %]' class='hidden accordion' [%ELSE%] class='accordion' [% END %]>
+ <div class="card">
+ <div class="card-header p-0" id="[% adv_chunk.id %]_card">
+ <h4 class="mb-0">
+ <button type="button" class="btn filter-header w-100 text-left" data-toggle="collapse" data-target="#[% IF adv_chunk.id == 'adv_copy_location_selector'; 'adv_copy_location_selector_new'; ELSE; adv_chunk.id; END; %]" aria-expanded="true" aria-controls="[% IF adv_chunk.id == 'adv_copy_location_selector'; 'adv_copy_location_selector_new'; ELSE; adv_chunk.id; END; %]">
+ [% adv_chunk.adv_label %]
+ </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; %]
+ [% IF adv_chunk.adv_attr;
+ INCLUDE "opac/parts/check_value_selector.tt2"
+ id=adv_chunk.id
+ attr=adv_chunk.adv_attr multiple="multiple"
+ size=adv_chunk.adv_size || search.default_adv_select_height || "4";
+ ELSIF adv_chunk.adv_filter;
+ 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; %]
+ [% IF adv_chunk.id != 'adv_copy_location_selector';%]
+ </fieldset>
+ [% END; %]
+ </div>
+ </div>
+ </div></div>
+ </div>
+ [%END;%]
+ </div>
+ </div>
-<!--Bottom Content (Library/Pub Year/Sort and Limit/Format Checkboxes -->
- <div class="row">
-[% 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-md-4 col-sm-6 col-xs-12 pt-3'>
- <div valign='top'[% IF adv_chunk.js_only %]
- id='adv_chunk_[% adv_chunk.adv_special %]'
- class='hidden mx-auto' [%ELSE%] class='mx-auto' [% END %]>
- <strong><label for="[% adv_chunk.id %]">