This commit also renames the directory that contains the bootstrap-based OPAC. With
the OILSWebTemplatePath, several redundant files also can be safely removed.
Adds a release notes entry describing how to enable this OPAC in eg_vhosts.conf.
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Ruth Frasur <rfrasur@library.in.gov>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
# Templates will be loaded from the following paths in reverse order.
PerlAddVar OILSWebTemplatePath "@localstatedir@/templates"
+ #PerlAddVar OILSWebTemplatePath "@localstatedir@/templates-bootstrap" #Uncomment this line to use the new bootstrap OPAC
#PerlAddVar OILSWebTemplatePath "@localstatedir@/templates_localskin"
#-------------------------------------------------
--- /dev/null
+[%- PROCESS "opac/parts/header.tt2";
+ WRAPPER "opac/parts/base.tt2";
+ INCLUDE "opac/parts/topnav.tt2";
+ ctx.page_title = l("Advanced Search");
+ pane = CGI.param("pane") || "advanced";
+ loc = ctx.search_ou;
+
+ ctx.metalinks.push('<meta name="robots" content="noindex,follow">');
+-%]
+ <span class="sr-only">[% l('Advanced Search') %]</span>
+ <div class="container">
+ <div id="search-wrapper">
+ [% 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">
+ <a href="[% mkurl('', {pane => 'advanced'}) %]"
+ class="nav-link [% IF pane == 'advanced' %]active[% END %]"
+ id="adv_search">[% l('Advanced Search') %]</a>
+ </li>
+ <li class="nav-item">
+ <a href="[% mkurl('', {pane => 'numeric'}) %]"
+ class="nav-link [% IF pane == 'numeric' %]active[% END %]"
+ id="num_search">[% l('Numeric Search') %]</a>
+ </li>
+ <li class="nav-item">
+ <a href="[% mkurl('', {pane => 'expert'}) %]"
+ class="nav-link [% IF pane == 'expert' %]active[% END %]"
+ id="expert_search">[% l('Expert Search') %]</a>
+ </li>
+ </div>
+ </div>
+ <div id="content-wrapper">
+ <div id="main-content">
+ <div class="advanced_div">
+ [% IF pane == 'advanced' %]
+ [% INCLUDE "opac/parts/advanced/search.tt2" %]
+ [% ELSIF pane == 'numeric' %]
+ [% INCLUDE "opac/parts/advanced/numeric.tt2" %]
+ [% ELSIF pane == 'expert' %]
+ [% INCLUDE "opac/parts/advanced/expert.tt2" %]
+ [% END %]
+ </div>
+ <div class="common-full-pad"></div>
+ </div>
+ </div>
+ </div>
+[% END %]
--- /dev/null
+[%- # This is the bib and authority combined record browser.
+ ctx.page = "browse";
+
+ PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ PROCESS "opac/parts/org_selector.tt2";
+ WRAPPER "opac/parts/base.tt2";
+ INCLUDE "opac/parts/topnav.tt2";
+
+ ctx.page_title = l("Browse the Catalog");
+
+ blimit = CGI.param('blimit') || ctx.opac_hits_per_page || 10;
+
+ depart_list = ['blimit', 'bterm', 'bpivot'];
+ ctx.metalinks.push('<meta name="robots" content="noindex,follow">');
+ MACRO heading_use_label BLOCK;
+ SWITCH use;
+ CASE 'variant';
+ l('See');
+ CASE 'broader';
+ l('Broader term');
+ CASE 'narrower';
+ l('Narrower term');
+ CASE 'other';
+ l('Related term');
+ CASE;
+ l('See');
+ END;
+ END;
+%]
+
+ <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 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">
+ <input type="hidden" name="blimit"
+ value="[% blimit %]" />
+
+ [% control_qtype = INCLUDE "opac/parts/qtype_selector.tt2"
+ id="browse-search-class" browse_only=1 plural=1 %]
+
+ [% control_bterm = BLOCK %]<input type="text" name="bterm" id="browse-term"
+ aria-label="[% l('Browse term') %]"
+ value="[% CGI.param('bterm') | html %]" class="form-control" />[% END %]
+ [% control_locg = INCLUDE build_org_selector id='browse-context'
+ show_loc_groups=1
+ 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"/>
+ <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">
+ [% BLOCK browse_pager %]
+ <div class="browse-pager 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>
+ [% END %]
+ [% IF ctx.pager_shortcuts;
+ current_qtype = CGI.param('qtype') || 'title' %]
+ <span class="browse-shortcuts">
+ [% FOR shortcut IN ctx.pager_shortcuts %]
+ <a href="[% mkurl('', {qtype => current_qtype, bterm => shortcut.0}, ['bpivot','query']) %]">[% shortcut.1 %]</a>
+ [% END %]
+ </span>
+ [% END %]
+ <img id="browse-pager-spinner-[% id %]"
+ src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]"
+ class="hidden" style="width: 16px; height: 16px;"
+ alt="[% l('Search in progress icon') %]" />
+ [% 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>
+ [% END %]
+
+
+ </div>
+ </div>
+ [% END %]
+
+ [% PROCESS browse_pager id=0 %]
+
+ <div id="browse-results" class="col-12">
+ [% IF ctx.browse_error %]
+ <span class="browse-error">
+ [% l("An error occurred browsing records. " _
+ "Please try again in a moment or report the issue " _
+ "to library staff.") %]
+ </span>
+ [% ELSE %]
+ [% IF ctx.browse_leading_article_warning %]
+ <div class="browse-leading-article-warning">
+ [% l("Your browse term seems to begin with an article (a, an, the). You might get better results by omitting the article.") %]
+ [% IF ctx.browse_leading_article_alternative %]
+ <p>
+ [% alternative_link = BLOCK %]
+ <a href="[% mkurl('', {bterm => ctx.browse_leading_article_alternative}, ['bpivot']) %]">[% ctx.browse_leading_article_alternative | html %]</a>
+ [%- END; # alternative_link BLOCK
+ l("Did you mean [_1]?", alternative_link);
+ END # IF %]
+ </p>
+ </div>
+ [% END %]
+ <ul class="browse-result-list">
+ [% FOR result IN ctx.browse_results %]
+ <li class="browse-result">
+ <span class="browse-result-value[% result.row_number == 0 && !CGI.param('bpivot') ? ' browse-result-best-match' : '' %]">
+ [% IF result.sources > 0 %] <!-- bib-linked browse value -->
+ <a href="[% mkurl(
+ ctx.opac_root _ '/results', {
+ 'fi:has_browse_entry' => (result.browse_entry _ ',' _ result.fields)
+ }) %]">[% result.value | html %]</a>
+ <span class="browse-result-sources">([%
+ IF result.accurate == 'f';
+ l("At least"); " ";
+ END;
+ result.sources %])</span>
+ [% ELSE %] <!-- only authority links -->
+ [% result.value | html %]
+ [% END %]
+ </span>
+
+ [% FOR a IN result.authorities;
+ PROCESS authority_notes authority=a IF !sees.grep(a.id);
+ END %]
+ [% auth_headings_ul_added = 0; %]
+ [% seenit = {}; # for headings we've rendered
+ FOR a IN result.sees;
+ # We can go no further sans control_set.
+ NEXT UNLESS a.control_set;
+
+ # get_authority_fields is fast and cache-y.
+ acs = ctx.get_authority_fields(a.control_set);
+ FOR field_group IN a.headings;
+ field_id = field_group.keys.0;
+ field = acs.$field_id;
+ headings = field_group.values.0;
+ FOR h IN headings;
+ # We could display headings without
+ # links here when h.target is
+ # undef, if we wanted to, but note
+ # that h.target_count is only
+ # defined when h.target is.
+
+ IF h.target AND h.target_count AND result.list_authorities.grep('^' _ h.target _ '$').size == 0 AND h.main_entry;
+ id = h.target; NEXT IF seenit.$id; seenit.$id = 1;
+ IF !auth_headings_ul_added;
+ # only add a <ul> if we have at least one <li> (WCAG 2.0)
+ auth_headings_ul_added = 1; %]
+ <ul class="browse-result-authority-headings">
+ [% END %]
+
+ <li><span class="browse-result-authority-field-name">[% heading_use_label(use=h.type) %]</span>
+ <a href="[% mkurl(ctx.opac_root _ '/browse', {bterm => h.heading}, ['bpivot']) %]">[% h.heading | html %]</a>
+ <span class="browse-result-authority-bib-links">([% h.target_count %])</span>
+ </li>
+ [% END %]
+ [% END %]
+ [% END %]
+ [% END %]
+ [% FOR a IN result.authorities;
+ # We can go no further sans control_set.
+ NEXT UNLESS a.control_set;
+
+ # get_authority_fields is fast and cache-y.
+ acs = ctx.get_authority_fields(a.control_set);
+ FOR field_group IN a.headings;
+ field_id = field_group.keys.0;
+ field = acs.$field_id;
+ headings = field_group.values.0;
+ FOR h IN headings;
+ # We could display headings without
+ # links here when h.target is
+ # undef, if we wanted to, but note
+ # that h.target_count is only
+ # defined when h.target is.
+
+ IF h.target AND h.target_count AND result.list_sees.grep('^' _ h.target _ '$').size == 0 AND !h.main_entry AND ctx.get_cgf('opac.show_related_headings_in_browse').enabled == 't';
+ id = h.target; NEXT IF seenit.$id; seenit.$id = 1;
+ IF !auth_headings_ul_added;
+ # only add a <ul> if we have at least one <li> (WCAG 2.0)
+ auth_headings_ul_added = 1; %]
+ <ul class="browse-result-authority-headings">
+ [% END %]
+ <li><span class="browse-result-authority-field-name">[% heading_use_label(use=h.type) %]</span>
+ <a href="[% mkurl(ctx.opac_root _ '/results', {query => 'identifier|authority_id[' _ h.target _ ']'}) %]">[% h.heading | html %]</a>
+ <span class="browse-result-authority-bib-links">([% h.target_count %])</span>
+ </li>
+ [% END %]
+ [% END %]
+ [% END %]
+ [% END %]
+ [% IF auth_headings_ul_added %]</ul>[% END %]
+ </li>
+ [% END %]
+ </ul>
+ [% END %]
+ </div>
+
+ [% PROCESS browse_pager id=1 %]
+ </div>
+</div>
+ <div class="common-full-pad"></div>
+ </div>
+ </div>
+
+ [% BLOCK authority_notes;
+ # Displays public general notes (sometimes called "scope notes" ?)
+ FOR note IN authority.notes %]
+ <div class="browse-public-general-note">
+ <span class="browse-public-general-note-label">
+ [% l("Note:") %]
+ </span>
+ <span class="browse-public-general-note-body">
+ [% FOR piece IN note; piece | html; END %]
+ </span>
+ </div>
+ [% END;
+ END; # end of BLOCK authority_notes %]
+
+[% END %]
--- /dev/null
+[%- # This is the stand-alone call-number browser. This mainly wraps around
+ # the same guts as the "shelf browser" part of a record results page.
+
+ PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ ctx.metalinks.push('<meta name="robots" content="noindex,follow">');
+ WRAPPER "opac/parts/base.tt2";
+ INCLUDE "opac/parts/topnav.tt2";
+ ctx.page_title = l("Call Number Browse"); %]
+ <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
+[%-
+ PROCESS "opac/parts/css/colors.tt2";
+ PROCESS "opac/parts/css/fonts.tt2";
+ rtl = ctx.get_i18n_l(ctx.eg_locale).rtl;
+%]
+
+/*
+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;
+ }
+}/*Micro Tables End*/
+
+/*
+Novelist Styling
+*/
+
+.NovGroupHeader{
+ font-size: 16pt !important;
+ text-align: center;
+ font-weight: 600 !important;
+}
+
+.NovSectionHeader{
+ font-size: 16pt !important;
+ font-weight: 600 !important;
+}
+
+.NovSelectImageHeadingToggle{
+ font-size: 20px;
+
+}
+
+/*Novelist Styling End*/
+
+/* Buttons */
+
+.btn-confirm {
+ color: [% css_colors.button_confirm_text %];
+ background-color: [% css_colors.button_confirm %];
+ border-color: [% css_colors.button_confirm_border %];
+}
+
+.btn-confirm:hover {
+ color: [% css_colors.button_confirm_text %];
+ background-color: [% css_colors.button_confirm_hover %];
+ border-color: [% css_colors.button_confirm_border_hover %];
+}
+
+.btn-deny {
+ color: [% css_colors.button_deny_text %];
+ background-color: [% css_colors.button_deny %];
+ border-color: [% css_colors.button_deny_border_hover %];
+}
+
+.btn-deny:hover {
+ color: [% css_colors.button_deny_text %];
+ background-color: [% css_colors.button_deny_hover %];
+ border-color: [% css_colors.button_deny_border_hover %];
+}
+
+.btn-remove {
+ color: [% css_colors.button_remove_text %];
+ background-color: [% css_colors.button_remove %];
+ border-color: [% css_colors.button_remove_border %];
+}
+
+.btn-remove:hover {
+ color: [% css_colors.button_remove_text %];
+ background-color: [% css_colors.button_remove_hover %];
+ border-color: [% css_colors.button_remove_border_hover %];
+}
+
+.btn-opac{
+ color: [% css_colors.opac_button_text %] !important;
+ background-color: [% css_colors.opac_button %];
+ border-color: [% css_colors.opac_button_border %];
+}
+
+.btn-opac:hover{
+ color: [% css_colors.opac_button_text %];
+ background-color: [% css_colors.opac_button_hover %] !important;
+ border-color: [% css_colors.opac_button_border_hover %];
+}
+
+.btn-action{
+ color: [% css_colors.action_button_text %] !important;
+ background-color: [% css_colors.action_button %];
+ border-color: [% css_colors.action_button_border %];
+}
+
+.btn-action:hover{
+ color: [% css_colors.action_button_text %];
+ background-color: [% css_colors.action_button_hover %] !important;
+ border-color: [% css_colors.action_button_border_hover %];
+}
+.btn-action > a{
+ color: [% css_colors.action_button_text_anchors %];
+}
+
+
+.dash-link{
+ color: #fff;
+}
+
+.dash-clear{
+ color: [% css_colors.zero_count %] !important;
+}
+
+.dash-unclear{
+ color: [% css_colors.non_zero_count %] !important;
+}
+
+.remove_filter{
+ padding: .25rem .25rem !important;
+ font-size: .875rem;
+ line-height: 0.5;
+ border-radius: 1rem !important;
+}
+
+#cnbrowse{
+ width: 95%;
+ text-align: center;
+ padding: 15px;
+}
+.cn_browse_item .card{
+ padding: 15px;
+}
+#facets .card-header,#facets .card-header a {
+ background-color: [% css_colors.facets_back %];
+ color: [% css_colors.text_invert %]
+}
+
+.facet_template:hover{
+ background-color:#e8e8e8;
+}
+
+.red{
+ color:red;
+}
+
+.login:focus{
+ outline:none;
+}
+.browse-result-list{
+ list-style:none;
+}
+.not_active_pill{
+ border: 2px solid #007bff;
+ padding: 6px;
+ margin: 0 10px;
+}
+
+.mini-control{
+ max-width: 100px !important;
+}
+
+.card-body:empty{
+ display:none;
+}
+.min{
+ min-height:500px;
+}
+.container{
+
+}
+html{
+ height:100%;
+ min-height: 100vh;
+}
+body {
+height:100%;
+min-height: 100vh;
+ margin:0;
+ font-family: [% css_fonts.font_main %] !important;
+ font-size: [% css_fonts.size_base %];
+ /* background-color: [% css_colors.primary %]; */
+ [% IF rtl == 't' -%]
+ direction: rtl;
+ [%- END %]
+}
+
+button, input {
+ font-family: [% css_fonts.font_main %] !important;
+ font-size: [% css_fonts.size_base %];
+}
+
+img {
+ border: none;
+}
+
+#topnav_logo {
+ margin: 2em 0;
+}
+
+#homesearch_main_logo {
+ padding-top: 60px;
+ margin: auto;
+ width: 50%;
+}
+
+a {
+ color: [% css_colors.link %];
+}
+
+#search-wrapper input[type=text] {
+ margin:0;
+ padding:0;
+}
+
+#search-wrapper select, .results_header_lbl select {
+ border:1px solid [% css_colors.border_standard %];
+ margin:0;
+ padding:0;
+ width: 12em;
+}
+
+.searchbar {
+ font-weight: bold;
+ padding-top: 10px;
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ [%- ELSE %]
+ margin-left: 1em;
+ [%- END %]
+}
+
+.refine_search {
+ padding-bottom: 7px;
+ margin-left: 1em;
+}
+
+/*
+#search-wrapper select {
+ border:0px solid [% css_colors.border_dark %];
+ filter:alpha(opacity=0);
+ -khtml-opacity:0;
+ opacity:0;
+ padding:0;
+ margin:0;
+ 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;
+}
+
+h2.graphic880 {
+ font-size: [% css_fonts.size_bigger %];
+ font-weight:normal;
+}
+
+.hide_me, .hidden {
+ display: none;
+ visibility: hidden;
+}
+
+div.select-box-wrapper {
+ position:absolute;
+ padding-top:2px;
+ overflow:hidden;
+ [% IF rtl == 't' -%]
+ padding-right: 3px;
+ text-align:right;
+ [%- ELSE %]
+ padding-left:3px;
+ text-align:left;
+ [%- END %]
+}
+
+#dash_wrapper {
+ [% IF rtl == 't' -%]
+ margin-right: 0.5em;
+ [%- ELSE %]
+ margin-left: 0.5em;
+ [%- END %]
+}
+
+#dash_wrapper div {
+ background-color: [% css_colors.primary %];
+ border-radius: 5px;
+ padding: 0em 1em;
+}
+
+.dash_divider {
+ margin: 0 20px;
+ color: #fff;
+ 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;
+}
+
+#logout_link {
+ [% IF rtl == 't' -%]
+ right: 1px;
+ [%- ELSE %]
+ left: 1px;
+ [%- END %]
+}
+
+
+/*
+#dash_fines { color: [% css_colors.text_badnews %]; }
+the color contrast between "text_badnews" and "primary"
+is too low for WCAG compliance. Use "text_attention"
+for now until a better color is picked - if needed.
+*/
+
+#dash_wrapper #dash_user_message_button_container {
+ display: inline;
+ padding: 0;
+}
+#dash_wrapper #unread_message_count_floater {
+ position: absolute;
+ background-color: [% css_colors.text_alert %];
+ padding-left: 0.2em;
+ padding-right: 0.2em;
+ display: inline-block;
+ font-size: 95%;
+ border-radius: 0;
+ z-index: 2;
+ margin-top: 0.2em;
+ [% IF rtl == 't' -%]
+ margin-right: -1.5em;
+ [%- ELSE %]
+ margin-left: -1.5em;
+ [%- END %]
+}
+
+#header-wrap {
+ /* border-bottom: 5px solid [% css_colors.nav_separation %]; */
+ background-color: [% css_colors.header_primary_fade %];
+ background-image: -moz-linear-gradient([% css_colors.header_primary %], [% css_colors.header_primary_fade %]);
+ background-image: -o-linear-gradient([% css_colors.header_primary %], [% css_colors.header_primary_fade %]);
+ background-image: -webkit-linear-gradient([% css_colors.header_primary %], [% css_colors.header_primary_fade %]);
+ background-image: linear-gradient([% css_colors.header_primary %], [% css_colors.header_primary_fade %]);
+}
+#header {
+ color: [% css_colors.background %];
+ margin-left: 1em;
+ margin-right: 1em;
+ font-size: [% css_fonts.size_small %];
+}
+
+#header a {
+ color: [% css_colors.background %];
+}
+
+#header a:hover {
+ color: [% css_colors.text_invert %];
+ text-decoration: none;
+}
+
+#header-links {
+ color: [% css_colors.text_invert %];
+ font-size: [% css_fonts.size_small %];
+ font-weight: bold;
+ position: relative;
+ top:4px;
+
+}
+
+#header-links a {
+ color: [% css_colors.text_invert %];
+ display: block;
+ text-decoration: none;
+ [% IF rtl == 't' -%]
+ float: right;
+ margin-left: 22px;
+ [%- ELSE %]
+ float:left;
+ margin-right:22px;
+ [%- END %]
+}
+
+#header-links a:hover {
+ color: [% css_colors.text_invert %];
+ text-shadow: 0 0 0.2em [% css_colors.primary %], 0 0 0.2em [% css_colors.primary %];
+ text-decoration: none;
+}
+
+#header #header-links2 {
+ position:relative;
+ top:-8px;
+ color: [% css_colors.text_invert %];
+ padding-bottom: 15px;
+}
+
+#header #header-links2 a {
+ color: [% css_colors.text_invert %];
+}
+
+#header #header-links2 a:hover {
+ text-decoration: underline;
+}
+
+#your-acct-login {
+ padding-top:2em;
+}
+
+#gold-links {
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ padding-right: 0px;
+ [%- ELSE %]
+ margin-left: 1em;
+ padding-left:0px;
+ [%- END %]
+}
+
+#gold-links-home {
+ margin:auto;
+ [% IF rtl == 't' -%]
+ padding-right: 0px;
+ [%- ELSE %]
+ padding-left:0px;
+ [%- END %]
+}
+
+#gold-links-holder {
+ height: 24px;
+ background-color: [% css_colors.background_invert %];
+}
+
+#util-bar {
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ padding-right: 0px;
+ [%- ELSE %]
+ margin-left: 1em;
+ padding-left:0px;
+ [%- END %]
+ height:0px;
+}
+
+#search-wrapper {
+ /*border-bottom: 1px solid [% css_colors.border_standard %];*/
+ padding-bottom: 5px;
+ background-color: [% css_colors.background %];
+}
+
+#search-wrapper #breadcrumb {
+ margin-top:0px;
+ font-size: [% css_fonts.size_smaller %];
+ [% IF rtl == 't' -%]
+ float: right;
+ [%- ELSE %]
+ float:left;
+ [%- END %]
+}
+
+#search-wrapper #search-within {
+ margin-top:10px;
+ position:relative;
+ [% IF rtl == 't' -%]
+ float: left;
+ right: -173px;
+ [%- ELSE %]
+ float:right;
+ left:-173px;
+ [%- END %]
+}
+
+#search-wrapper #breadcrumb a {
+ color: [% css_colors.text %];
+}
+
+#search-wrapper #search_frm label {
+ font-size: [% css_fonts.size_smaller %];
+}
+
+#search-wrapper #search-box {
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ padding-right: 0px;
+ [%- ELSE %]
+ margin-left: 1em;
+ padding-left: 0px;
+ [%- END %]
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+
+#adv_search_tabs, #acct_tabs, #acct_fines_tabs, #acct_checked_tabs, #acct_holds_tabs, #acct_prefs_tabs, #results_header_inner{
+ [% IF rtl == 't' -%]
+ margin-right:2px;
+ [%- ELSE %]
+ margin-left: 2px;
+ [%- END %]
+ overflow: auto;
+}
+
+#adv_search_tabs a, #acct_tabs a, #acct_fines_tabs a, #acct_checked_tabs a, #acct_holds_tabs a, #acct_prefs_tabs a {
+ [% IF rtl == 't' -%]
+ float: right;
+ margin: 10px 0px 0px 7px;
+ border-radius: 10px 10px 0px 0px;
+ [%- ELSE %]
+ float: left;
+ margin: 10px 7px 0px 0px;
+ border-radius: 10px 10px 0px 0px;
+ [%- END %]
+ text-align: center;
+ vertical-align: middle;
+ display: block;
+ padding: 10px 0px 10px 0px;
+ font-weight: bold;
+ color: [% css_colors.text_invert %];
+ background-color: [% css_colors.control %];
+ font-weight: bold;
+ text-decoration: none;
+}
+
+#adv_search_tabs a, #acct_tabs a, #acct_fines_tabs a {
+ padding: 1em 1em 0.5em;
+}
+
+#adv_search_tabs a:hover, #acct_tabs a:hover, #acct_fines_tabs a:hover, #acct_checked_tabs a:hover, #acct_holds_tabs a:hover, #acct_prefs_tabs a:hover {
+ background-color: [% css_colors.primary %];
+ color: [% css_colors.text_invert %];
+ text-decoration: none;
+}
+
+#adv_search_filters {
+ position: relative;
+}
+#adv_search_rows {
+ border-bottom: none;
+}
+.adv_filter_block {
+ [% IF rtl == 't' -%]
+ float: right;
+ [%- ELSE %]
+ float: left;
+ [%- END %]
+ padding: 15px;
+ clear: both;
+}
+.adv_filter_block_item {
+ [% IF rtl == 't' -%]
+ float: right;
+ [%- ELSE %]
+ float: left;
+ [%- END %]
+ padding: 5px;
+}
+
+#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%;
+ [% IF rtl == 't' -%]
+ padding-right: 10px !important;
+ [%- ELSE %]
+ padding-left: 10px !important;
+ [%- END %]
+}
+
+#adv_search.on, #num_search.on, #expert_search.on {
+ color: [% css_colors.accent_darker %];
+ background-color: [% css_colors.background %];
+ text-decoration: none;
+}
+
+#adv_search_tabs a.acct-tab-on, #acct_tabs a.acct-tab-on, #acct_fines_tabs a.acct-tab-on {
+ color: [% css_colors.accent_darker %];
+ background-color: [% css_colors.background %];
+ text-decoration: none;
+}
+
+.acct-tab-off {
+ background-color: [% css_colors.control %];
+}
+
+#acct_checked_tabs a, #acct_holds_tabs a, #acct_prefs_tabs a {
+ margin-top: 0px;
+ font-size: [% css_fonts.size_smaller %];
+ color: [% css_colors.accent_darker %];
+ padding: 10px 10px 10px 10px;
+}
+
+#acct_checked_tabs div.selected a, #acct_holds_tabs div.selected a, #acct_prefs_tabs div.selected a {
+ background-color: [% css_colors.accent_lightest %];
+ color: [% css_colors.accent_darker %];
+}
+
+#acct_checked_tabs, #acct_holds_tabs, #acct_prefs_tabs {
+ padding-bottom: 12px;
+ color: [% css_colors.accent_medium %];
+}
+
+#acct_select, #acct_prefs_select {
+ display: none;
+}
+
+#mobile_acct_search_links {
+ background-color: [% css_colors.primary_fade %];
+}
+
+.rdetail_header {
+ [% IF rtl == 't' -%]
+ padding: 5px 0px 6px 7px;
+ margin-right: 1em;
+ [%- ELSE %]
+ padding: 5px 7px 6px 0px;
+ margin-left: 1em;
+ [%- END %]
+ border-bottom: 1px dotted [% css_colors.accent_light %];
+}
+
+.rdetail_results a {
+ color:[% css_colors.primary_fade %];
+ font-weight:bold;
+ font-size: [% css_fonts.size_bigger %];
+}
+
+.rdetail_result_count {
+ color: [% css_colors.text %];
+ font-weight: normal;
+ display: inline-block;
+ [% IF rtl == 't' -%]
+ padding-right: 1em;
+ [%- ELSE %]
+ padding-left: 1em;
+ [%- END %]
+}
+
+.rdetail_result_nav {
+ font-weight:normal;
+ display: inline-block;
+ [% IF rtl == 't' -%]
+ padding-right: 1em;
+ [%- ELSE %]
+ padding-left: 1em;
+ [%- END %]
+}
+
+#rdetail_details_table {
+ margin-top: 15px;
+}
+
+#rdetail_image { border: none; }
+#rdetail_image_cell {
+ padding-top: 3px;
+ [% IF rtl == 't' -%]
+ padding-left: 10px;
+ [%- ELSE %]
+ padding-right: 10px;
+ [%- END %]
+}
+
+h2.rdetail_uris {
+ margin-top: 1em;
+}
+div.rdetail_uris {
+ padding: 0.5em 1em 0.5em 1em;
+ background-color: [% css_colors.accent_lighter2 %];
+}
+div.rdetail_uris ul li {
+ position: relative;
+ [% IF rtl == 't' -%]
+ right: 1em;
+ [%- ELSE %]
+ left: 1em;
+ [%- END %]
+}
+
+div.rdetail_show_copies {
+ margin-top: 1em;
+}
+
+div#rdetail_actions_div {
+ background-color: [% css_colors.background %];
+ [% IF rtl == 't' -%]
+ float: left;
+ [%- ELSE %]
+ float: right;
+ [%- END %]
+}
+
+span#rdetail_copy_counts {
+ display: inline-block;
+ vertical-align: top;
+ [% IF rtl == 't' -%]
+ border-left: thin;
+ margin-left: 1em;
+ padding-left: 1em;
+ [%- ELSE %]
+ border-right: thin;
+ margin-right: 1em;
+ padding-right: 1em;
+ [%- END %]
+}
+
+span#rdetail_hold_counts {
+ display: inline-block;
+ vertical-align: top;
+}
+span#rdetail_hold_counts p {
+ [% IF rtl == 't' -%]
+ padding-right: 2em;
+ [%- ELSE %]
+ padding-left: 2em;
+ [%- END %]
+}
+
+#rdetail_image_div {
+ [% IF rtl == 't' -%]
+ float: right;
+ margin-left: 1em;
+ [%- ELSE %]
+ float: left;
+ margin-right: 1em;
+ [%- END %]
+}
+
+.rdetail_aux_utils {
+ padding-bottom: 6px;
+ [% IF rtl == 't' -%]
+ border-right: 1px dotted [% css_colors.accent_light %];
+ padding-right:17px;
+ padding-left:70px;
+ [%- ELSE %]
+ border-left:1px dotted [% css_colors.accent_light %];
+ padding-left: 17px;
+ padding-right: 70px;
+ [%- END %]
+}
+
+div.place_hold {
+ border-bottom: 1px dotted [% css_colors.accent_light %];
+ padding-top: 10px;
+}
+
+div.toggle_list { padding-top: 6px; }
+
+div.share_record {
+ padding-top: 6px;
+ border-top: 1px dotted [% css_colors.accent_light %];
+}
+
+div.format_icon {
+ [% IF rtl == 't' -%]
+ float: left;
+ margin-left: 17px;
+ [%- ELSE %]
+ float: right;
+ margin-right: 17px;
+ [%- END %]
+}
+
+#metarecord_population {
+ overflow: hidden;
+ width: 40%;
+ padding-bottom: 10px;
+}
+
+.metarecord_population_span_link {
+ line-height: 20px;
+}
+
+.metarecord_population_format {
+ border-right: thin;
+ display: inline-block;
+ margin-right: 1em;
+ padding-right: 1em;
+ vertical-align: top;
+}
+
+.metarecord_population_item_lang {
+ display: inline-block;
+ vertical-align: top;
+}
+
+.metarecord_population_all {
+ padding-top:10px;
+}
+
+.results_aux_utils {
+ display: table-cell;
+}
+
+.result_util {
+ border-bottom: 1px dotted [% css_colors.accent_light %];
+ padding-top: 6px;
+ [% IF rtl == 't' -%]
+ padding-right: 1em;
+ [%- ELSE %]
+ padding-left: 1em;
+ [%- END %]
+}
+
+.results_reviews {
+ top: -5px;
+}
+
+#rdetail_copies {
+ padding-top: 1.5em;
+}
+
+#rdetails_status td {
+ [% IF rtl == 't' -%]
+ padding: 7px 13px 3px 0px;
+ [%- ELSE %]
+ padding: 7px 0px 3px 13px;
+ [%- END %]
+}
+
+#rdetails_status td[headers=copy_header_library],
+#rdetails_status td[headers=copy_header_shelfloc] {
+ white-space: normal;
+}
+
+#rdetails_status thead th {
+ [% IF rtl == 't' -%]
+ padding: 13px 13px 13px 0px;
+ text-align: right;
+ [%- ELSE %]
+ padding: 13px 0px 13px 13px;
+ text-align: left;
+ [%- END %]
+ background-color: [% css_colors.accent_lighter2 %];
+ font-size: [% css_fonts.size_smaller %];
+ font-weight: bold;
+}
+
+#rdetails_status tbody td {
+ [% IF rtl == 't' -%]
+ padding-right: 13px;
+ text-align: right;
+ [%- ELSE %]
+ padding-left: 13px;
+ text-align: left;
+ [%- END %]
+}
+#rdetails_status tbody td.copy_note {
+ color: [% css_colors.primary %];
+ text-wrap:normal;
+ white-space:pre-wrap !important;
+ word-wrap:normal;
+}
+
+#rdetails_status tbody td.copy_tag {
+ border-color: [% css_colors.primary %];
+ border-style: dashed;
+ border-width: 2px;
+}
+#rdetails_status tbody .copy_tag_value {
+ font-weight: bolder;
+}
+
+.rdetail_extras {
+ background-color: [% css_colors.primary_fade %];
+ border: 1px solid [% css_colors.primary %];
+ padding-top:1px;
+ clear:both;
+}
+
+#rdetail_extras_div {
+ margin: 1em 0;
+}
+
+.rdetail_extras_hr {
+ [% IF rtl == 't' -%]
+ margin-right: 1px;
+ margin-left: 1px;
+ [%- ELSE %]
+ margin-left: 1px;
+ margin-right: 1px;
+ [%- END %]
+ height: 1px;
+ background-color: [% css_colors.accent_light %];
+}
+
+.rdetail_extras_link {
+ padding: 6px 12px;
+ font-size: [% css_fonts.size_smaller %];
+ font-weight: bold;
+}
+
+.rdetail_extras_lbl {
+ color: [% css_colors.text_invert %];
+ text-decoration: none;
+}
+
+#rdetail_extras_expand, #rdetail_extras_collapse, #rdetail_locs_collapse {
+ [% IF rtl == 't' -%]
+ margin-right: 13px;
+ [%- ELSE %]
+ margin-left: 13px;
+ [%- END %]
+}
+
+#rdetail_locs_expand, #rdetail_locs_collapse {
+ [% IF rtl == 't' -%]
+ margin-right: 13px;
+ [%- ELSE %]
+ margin-left:13px;
+ [%- END %]
+ padding-bottom:3px;
+ margin-top:15px;
+}
+
+#rdetail_anotes_div .biography {
+ margin:0;
+}
+
+#gbp_extra, #gbp_arrow_down_link {
+ display: none;
+}
+
+.almost-content-wrapper {
+ background-color: [% css_colors.background %];
+}
+
+#content-wrapper {
+ background-color: [% css_colors.background %];
+ min-height: 600px;
+ height: auto;
+ display: grid;
+}
+
+.content-wrapper-record-page { top: -15px; position: relative; }
+
+#main-content-home {
+ [% IF rtl == 't' -%]
+ padding-right: 17px;
+ margin-right: 1em;
+ [%- ELSE %]
+ padding-left: 17px;
+ margin-left: 1em;
+ [%- END %]
+}
+#main-content {
+ [% IF rtl == 't' -%]
+ padding-right: 0px;
+ [%- ELSE %]
+ padding-left: 0px;
+ [%- END %]
+ margin: 0 1em;
+ clear: both;
+}
+
+#main-content-after-bar {
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ padding-right: 4px;
+ [%- ELSE %]
+ margin-left: 1em;
+ padding-left: 4px;
+ [%- END %]
+}
+
+#results-side-bar {
+ [% IF rtl == 't' -%]
+ float: right;
+ margin-left: 5px;
+ [%- ELSE %]
+ float: left;
+ margin-right: 5px;
+ [%- END %]
+ width: 174px;
+ background-color: [% css_colors.background %];
+}
+
+#main-content .login_boxes {
+ border: 1px solid [% css_colors.accent_lighter %];
+ background-color: [% css_colors.accent_lightest %];
+ background-image: -moz-linear-gradient(bottom, [% css_colors.accent_ultralight %] 15%, [% css_colors.accent_lightest %] 55%, [% css_colors.accent_ultralight %] 85%);
+ background-image: -ms-linear-gradient(bottom, [% css_colors.accent_ultralight %] 15%, [% css_colors.accent_lightest %] 55%, [% css_colors.accent_ultralight %] 85%);
+ background-image: -o-linear-gradient(bottom, [% css_colors.accent_ultralight %] 15%, [% css_colors.accent_lightest %] 55%, [% css_colors.accent_ultralight %] 85%);
+ background-image: -webkit-linear-gradient(bottom, [% css_colors.accent_ultralight %] 15%, [% css_colors.accent_lightest %] 55%, [% css_colors.accent_ultralight %] 85%);
+ background-image: linear-gradient(to bottom, [% css_colors.accent_ultralight %] 15%, [% css_colors.accent_lightest %] 55%, [% css_colors.accent_ultralight %] 85%);
+ color: [% css_colors.accent_darker %];
+}
+
+#main-content .login_boxes h1 {
+ font-weight: normal;
+ font-size: [% css_fonts.size_biggest %];
+ margin:0;
+}
+
+#main-content .left_brain {
+ [% IF rtl == 't' -%]
+ padding-right: 28px;
+ [% ELSE -%]
+ padding-left:28px;
+ [% END -%]
+ padding-top:25px;
+}
+
+#main-content .left_brain input[type=text], #main-content .left_brain input[type=password] {
+ width:167px;
+ margin:0;
+ padding:0;
+ background-color: [% css_colors.background %];
+ font-size: [% css_fonts.size_bigger %];
+ color: [% css_colors.text %];
+}
+
+#main-content .left_brain .input_bg {
+ [% IF rtl == 't' -%]
+ padding: 10px 13px 0px 10px;
+ [% ELSE -%]
+ padding:10px 10px 0px 13px;
+ [% END -%]
+ width:167px;
+ height:29px;
+}
+
+.login-help-box {
+ [% IF rtl == 't' -%]
+ float: right;
+ margin-right: 2em;
+ [% ELSE -%]
+ float: left;
+ margin-left: 2em;
+ [% END -%]
+ width: 200px;
+ text-align: center;
+}
+
+.login-help-button {
+ font-size: [% css_fonts.size_biggest %];
+ padding: 1.5em;
+}
+
+#login-failed-message {
+ font-size: [% css_fonts.size_bigger %];
+ font-weight: bold;
+ color: [% css_colors.text_alert %];
+ padding-top: 1em;
+}
+
+#holds_temp_parent td {
+ border-bottom:1px solid [% css_colors.border_standard %];
+}
+
+#holds_temp_parent input, #holds_temp_parent select {
+ 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;
+ margin-bottom: 6px;
+ float: none;
+}
+
+#results_header_bar {
+ background-color: [% css_colors.accent_medium %];
+ border-top:1px solid [% css_colors.accent_mediumdark %];
+ border-bottom:1px solid [% css_colors.accent_mediumdark %];
+}
+
+.results_header_lbl {
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float: left;
+ [% END -%]
+ font-weight: bold;
+ color: [% css_colors.text %];
+ /* this border is not visible, but it keeps these labels the same size
+ as the buttons */
+ border: 1px solid [% css_colors.accent_medium %];
+ background-color: [% css_colors.accent_medium %];
+ margin: 0.5em 0.3em;
+ padding: 0.3em;
+}
+/* we need a negative margin on the select to allow the containing <label>
+to determine the actual size of the element. By doing this, we can increase
+the odds that the buttons and the select will be the same size, and therefore
+collapse correctly when the window width decreases */
+.results_header_lbl select {
+ margin: -0.5em 0;
+}
+
+#limit_to_available {
+ vertical-align: middle;
+}
+
+.results_header_sel {
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+ margin:0;
+}
+
+
+
+.results_header_nav1 .h1 {
+ font-size: [% css_fonts.size_bigger %];
+ font-weight:bold;
+ color:[% css_colors.primary_fade %];
+}
+
+.table_no_border_space {
+ border-spacing: 0px;
+}
+.table_no_cell_pad td {
+ padding: 0px;
+}
+.table_no_border {
+ border-collapse: collapse;
+}
+
+#result_table_table {
+ margin-top:10px;
+}
+
+#result_table_div {
+ margin-top: 1em;
+}
+
+tr.result_table_row > td.results_row_count,
+tr.result_table_row > td.result_table_pic_header,
+tr.result_table_row > td.result_table_title_cell {
+ vertical-align: top;
+}
+
+.result_metadata {
+ [% IF rtl == 't' -%]
+ float: right;
+ padding-left: 2em;
+ [% ELSE -%]
+ float: left;
+ padding-right: 2em;
+ [% END -%]
+ width: 30em;
+}
+
+tr.result_table_row:nth-child(n+2) > td {
+ border-top: 1px solid [% css_colors.accent_lighter2 %];
+}
+
+tr.result_table_row > td.result_table_pic_header {
+ [% IF rtl == 't' -%]
+ padding-right: 1em;
+ [% ELSE -%]
+ padding-left: 1em;
+ [% END -%]
+ white-space: nowrap;
+ width: 78px;
+}
+
+/* styles for selecting records in the results set */
+.result_table_row_selected {
+ background-color: [% css_colors.item_selected %];
+}
+#selected_records_summary, #clear_basket {
+ margin-left: 5em;
+}
+
+/* styles for the basket */
+#record_basket {
+ [% IF rtl == 't' -%]
+ float: left;
+ margin-left: 5em;
+ [% ELSE; %]
+ float: right;
+ margin-right: 5em;
+ [% END; %]
+}
+#record_basket_icon {
+ [% IF rtl == 't' -%]
+ float: left;
+ margin-left: 2em;
+ [% ELSE; %]
+ float: right;
+ margin-right: 2em;
+ [% END; %]
+ position: relative;
+}
+#record_basket_count_floater {
+ background-color: [% css_colors.accent_lighter %];
+ position: absolute;
+ top: -3px;
+ right: -3px; /* relative to icon, so don't want to adjust for RTL */
+ z-index: 2;
+ border-radius: 50%;
+}
+#record_basket_count_floater a {
+ text-decoration: none;
+}
+#basket_actions {
+ [% IF rtl == 't' -%]
+ float: left;
+ [% ELSE; %]
+ float: right;
+ [% END; %]
+}
+#basket_actions select {
+ border-color: rgb(169, 169, 169);
+}
+
+.result_number {
+ [% IF rtl == 't' -%]
+ padding-right: 1em;
+ [% ELSE -%]
+ padding-left: 1em;
+ [% END -%]
+ white-space: nowrap;
+}
+
+.result_count_number {
+ font-weight: bold;
+}
+
+.result_table_subtable {
+ width: 100%;
+ padding-top: 1em;
+}
+
+div.result_table_utils_cont {
+ [% IF rtl == 't' -%]
+ text-align: right;
+ float: right;
+ [% ELSE -%]
+ text-align:left;
+ float: left;
+ [% END -%]
+}
+
+#myopac_summary_div p {
+ margin:0;
+ margin-bottom: 10px;
+}
+
+#acct_sum_checked_table td {
+ padding-bottom:5px;
+}
+
+.zero_search_hits_main {
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+ width:300px;
+ margin-top: 2ex;
+}
+.zero_search_hits_saved {
+ [% IF rtl == 't' -%]
+ float: right;
+ margin-left: 2em;
+ [% ELSE -%]
+ float:left;
+ margin-right: 2em;
+ [% END -%]
+ width:200px;
+ margin-top: 2ex;
+}
+
+#zero_search_hits p {
+ margin-top:0;
+}
+
+#zero_hits_term {
+ font-weight: bold;
+}
+
+#zero_search_hits #spell_check_link {
+}
+
+#zero_search_hits #zero_hits_suggestions {
+}
+
+#lowhits_help {
+ [% IF rtl == 't' -%]
+ float: left;
+ [% ELSE -%]
+ float: right;
+ [% END-%]
+ width: 353px;
+ background-color: [% css_colors.accent_light %];
+ padding: 10px;
+ margin-top: 7px;
+}
+
+.results_info_table td {
+ [% IF rtl == 't' -%]
+ padding-left: 10px;
+ [% ELSE -%]
+ padding-right: 10px;
+ [% END-%]
+}
+
+#myopac_holds_main_table {
+ border-collapse: collapse;
+}
+
+#myopac_holds_main_table td {
+ border: 1px solid [% css_colors.border_dark %];
+
+}
+
+.myopac-hold-available {
+ color: [% css_colors.text_greatnews %];
+ font-weight: bold;
+}
+
+.myopac-hold-suspended {
+ color: [% css_colors.text_badnews %];
+ font-weight: bold;
+}
+
+#myopac_prefs_div .data_grid {
+ border-collapse:collapse;
+}
+
+#myopac_prefs_div .data_grid td {
+ [% IF rtl == 't' -%]
+ padding: 6px 17px 7px 0px;
+ [% ELSE -%]
+ padding:6px 0px 7px 17px;
+ [% END -%]
+ background-color:[% css_colors.accent_ultralight %];
+ border-bottom:3px solid [% css_colors.background %];
+}
+
+.header_middle {
+ [% IF rtl == 't' -%]
+ padding: 0px 0px 0px 7px;
+ [% ELSE -%]
+ padding: 0px 7px 0px 0px;
+ [% END -%]
+ height:22px;
+ font-size: [% css_fonts.size_bigger %];
+ font-weight:bold;
+ color:[% css_colors.primary_header %];
+ /*border-bottom: 1px dotted [% css_colors.accent_light %];*/
+ clear: both;
+}
+
+.header_middle a {
+ font-weight: normal;
+}
+
+#acct_sum_block {
+ [% IF rtl == 't' -%]
+ float: right;
+ clear: right;
+ [% ELSE -%]
+ float: left;
+ clear: left;
+ [% END -%]
+}
+
+.acct_sum_table {
+ border-collapse: collapse;
+ background-color: [% css_colors.accent_ultralight %];
+}
+
+.acct_sum_table tr {
+ border-bottom: 2px solid white;
+}
+
+.acct_sum_table td {
+ padding: 1em;
+}
+
+.acct_sum_table a {
+ text-transform: none;
+ position:relative;
+ top:-1px;
+}
+
+.acct_sum_table .view_link {
+ font-weight: normal;
+}
+
+#myopac_sum_fines {
+ [% IF rtl == 't' -%]
+ float: left;
+ padding: 15px 23px 0px 0px;
+ [% ELSE -%]
+ float:right;
+ padding: 15px 0px 0px 23px;
+ [% END -%]
+ width: 177px;
+}
+
+.cc_logo_img
+{
+ width: 79%;
+ [% IF rtl == 't' -%]
+ padding-right: .5em;
+ [% ELSE -%]
+ padding-left: .5em;
+ [% END -%]
+}
+
+#myopac_sum_fines_placehold {
+ [% IF rtl == 't' -%]
+ float: left;
+ [% ELSE -%]
+ float: right;
+ [% END -%]
+ width: 177px;
+ height: 166px;
+}
+
+.acct_holds_temp td {
+ [% IF rtl == 't' -%]
+ text-align: right;
+ [% ELSE -%]
+ text-align: left;
+ [% END -%]
+}
+
+#acct_checked_tabs .align, #acct_holds_tabs .align, #acct_prefs_tabs .align {
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+}
+
+
+
+.acct_fines_header
+{
+ width: 100%;
+ padding-bottom:1em;
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+}
+
+/* tables for entering payment information */
+#acct_fines_main_header
+{
+ width: 100%;
+}
+
+/* tables for entering payment information */
+#billing_info_table
+{
+ width: auto;
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+ display:inline;
+ padding-left: 1em;
+ padding-right: 1em;
+}
+
+/* tables for entering payment information */
+#credit_card_info_table
+{
+ width: auto;
+ display: block;
+}
+
+/* tables for entering payment information */
+#billing_info_table td,
+#credit_card_info_table td
+{
+ [% IF rtl == 't' -%]
+ padding-right: .5em;
+ [% ELSE -%]
+ padding-left: .5em;
+ [% END -%]
+
+}
+
+/* div for the payment buttons with the total */
+#payment_actions
+{
+ width: auto;
+ display: block;
+ padding: 1em 0 0 1em;
+ text-align:center;
+}
+
+/* text to state what is seen on cc statement */
+.cc_disclaimer
+{
+ font-style:italic;
+ font-size: 90%;
+ color:[% css_colors.primary_fade %];
+}
+
+.hold_notes {
+ text-transform: none;
+ font-weight: normal;
+}
+
+
+
+#acct_list_header select, #acct_list_header_anon select {
+ font-weight:normal;
+ text-transform:none;
+}
+
+.search_catalog_lbl {
+ font-size: [% css_fonts.size_bigger %];
+}
+.adv_search_catalog_lbl {
+ font-size: [% css_fonts.size_bigger %];
+}
+
+.browse_the_catalog_lbl {
+ font-size: [% css_fonts.size_bigger %];
+}
+
+.lbl1 {
+ font-size: [% css_fonts.size_bigger %];
+ font-weight:bold;
+}
+
+.lbl2 {
+ font-size: [% css_fonts.size_smaller %];
+ font-weight:normal;
+ position:relative;
+ top:3px;
+ max-width:300px;
+}
+
+#fines_payments_wrapper {
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+.myopac_payments_table th {
+ [% IF rtl == 't' -%]
+ text-align: right; }
+ [% ELSE -%]
+ text-align: left;
+ [% END -%]
+}
+
+.myopac_payments_table thead th { border-bottom: 1px dashed [% css_colors.accent_darker %]; }
+.myopac_payments_table thead th:first-child { width: 8em; }
+.myopac_payments_table tbody tr:nth-child(odd) { background-color: [% css_colors.accent_lighter %]; }
+.myopac_payments_table form { display: inline; }
+.myopac_payments_table input[type="submit"] { padding: 1px; }
+
+.cc_header
+{
+ padding-top:1em;
+ background-color: [% css_colors.accent_lighter %];
+}
+
+.payment-error {
+ font-weight: bold; color: [% css_colors.text_alert %];
+ padding: 10px; border: 1px solid [% css_colors.accent_medium_dark %];
+}
+
+.payment-processing {
+ font-weight: bold;
+ color: [% css_colors.text_greatnews %];
+ font-size: [% css_fonts.size_bigger %];
+ padding: 10px; border: 1px solid [% css_colors.accent_medium_dark %];
+ text-align: center;
+}
+#adv_search_input { width: 100%; }
+#adv_search_parent {
+ margin-bottom:0px;
+}
+#search-submit-spinner {
+ height: 16px;
+ width: 16px;
+}
+div.adv_search_available {
+ margin-top: 1em;
+}
+
+#myopac_loading {
+ width:100%;
+ text-align:center;
+ padding-top:20px;
+ font-size: [% css_fonts.size_bigger %];
+ font-weight:bold;
+}
+
+.chili_link {
+ width:100px !important;
+ text-align: center !important;
+}
+
+.chili_review div.chili_link div {
+ margin: auto;
+}
+
+/* styling for advanced search filters that display with searchbar */
+
+#adv_filter_results_block h4 { display: inline; }
+
+#adv_filter_results_block {
+ margin-top: 6px;
+ text-align: center;
+}
+
+.adv_filter_results_block_label {
+ font-weight:bold;
+ [% IF rtl == 't' -%]
+ padding: 4px 12px 4px 0px;
+ [% ELSE -%]
+ padding: 4px 0px 4px 12px;
+ [% END -%]
+}
+
+.adv_filter_results_group {
+ font-size: 12px;
+ display: inline-block;
+ background-color: [% css_colors.accent_lighter2 %];
+ border-style: solid;
+ border-color: [% css_colors.accent_medium %];
+ border-width: 1px;
+ border-radius: 4px;
+ padding: 2px 4px 2px 4px;
+}
+
+.adv_filter_results_group_wrapper {
+ display: inline-block;
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ [% ELSE -%]
+ margin-left: 1em;
+ [% END -%]
+ margin-bottom: 8px;
+}
+
+.adv_filter_results_group_header {
+ display: inline-block;
+}
+
+.adv_filter_results_group_values {
+ display: inline;
+}
+
+.adv_search_result_filter {
+ display: inline-block;
+ font-size: 16px;
+}
+
+.remove_filter {
+ font-size: 16px;
+ [% IF rtl == 't' -%]
+ margin-right: 3px;
+ [% ELSE -%]
+ margin-left: 3px;
+ [% END -%]
+}
+
+a.remove_filter {
+ text-decoration: none;
+ color: [% css_colors.accent_dark %];
+}
+
+#filter_hits {
+ display: inline-block;
+}
+
+#refine_search_link {
+ display: inline-block;
+}
+
+[%- IF we_want_to_turn_on_facet_styling.defined; %]
+/* some facet styling */
+.facetClassContainer { margin: 2px; border: 1px solid [% css_colors.accent_light %]; }
+.facetClassLabelContainer { border: 1px solid [% css_colors.accent_light %]; }
+.facetClassLabel { font-weight: bold; text-align: center; }
+.facetFieldContainer { }
+.facetFieldLabel { padding-left: 2px; margin-top: 5px; margin-bottom: 5px; font-weight: bold; text-align: left; }
+.extraFacetFieldsWrapper { }
+.toggleExtraFacetFieldsButton { float: right; margin: 0px; padding: 0px; }
+.facetFieldLineCount {
+ display: inline-block;
+ border-right: 1px solid [% css_colors.accent_light %];
+ color: [% css_colors.accent_mediumdark %];
+ width: 3em;
+ margin-right: 3px
+}
+.facetField { border-top: 1px solid [% css_colors.accent_light %]; }
+.facetFields { padding-left: 5px; }
+.facetFieldLineValue { overflow: hidden; text-overflow: ellipsis; }
+[%- END -%]
+
+div#facet_sidebar {
+ [% IF rtl == 't' -%]
+ float: right;
+ margin-left: 1em;
+ [% ELSE -%]
+ float: left;
+ margin-right: 1em;
+ [% END-%]
+}
+
+.facet_box_temp {
+ padding-bottom:3px;
+}
+
+.facet_box_temp .header {
+ height: 2.3em;
+ background-color:[% css_colors.primary %];
+ border-top-left-radius: 5px;
+ border-top-right-radius: 5px;
+ font-weight:bold;
+ color:[% css_colors.text_invert %];
+ padding-top:4px;
+}
+
+.facet_box_temp.filter_box_temp .header {
+ background-color: [% css_colors.background_invert %] !important;
+}
+
+.filter_box_label {
+ color: [% css_colors.background_invert %];
+ font-weight:bold;
+ padding-top:4px;
+ padding-bottom:4px;
+ padding-left:12px;
+}
+
+.facet_box_temp .header .title {
+ [% IF rtl == 't' -%]
+ float: right;
+ padding-right: 12px;
+ [% ELSE -%]
+ float:left;
+ padding-left:12px;
+ [% END -%]
+ padding-top:6px;
+}
+
+/* in this context, where h4 is primarily for structure,
+ avoid the normal large font and margin for h4's */
+.facet_box_temp h4 {
+ font-size : 100%;
+ margin: 0px;
+}
+
+.facet_box_temp .header a.button {
+ [% IF rtl == 't' -%]
+ float: left;
+ padding-left: 6px;
+ [% ELSE -%]
+ float:right;
+ padding-right:6px;
+ [% END -%]
+ padding-top:6px;
+ color:[% css_colors.text_invert %];
+}
+
+.facet_box_wrapper .box_wrapper .box {
+ border-top:1px solid [% css_colors.border_standard %];
+ border-left:1px solid [% css_colors.border_standard %];
+ border-right:1px solid [% css_colors.border_standard %];
+ padding: 0 0.5em;
+ overflow: hidden;
+}
+
+.filter_box_wrapper {
+ margin-bottom: 3px;
+ padding: 2px;
+ border: 1px solid [% css_colors.background_invert %];
+ border-radius: 3px;
+ font-weight:bold;
+ padding-top:4px;
+}
+
+.facet_template {
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ display: table;
+ margin: 0.5em 0;
+ width: 100%;
+}
+
+.facet_template div {
+ display: table-cell;
+ padding: 2px;
+}
+
+.facet_template.filter_template div {
+ padding: 0px !important;
+}
+
+.facet_template .count {
+ text-align: right;
+ color: [% css_colors.accent_mediumdark %];
+}
+
+.facet_template_selected {
+ background-color: [% css_colors.accent_lighter2 %];
+ border: 1px solid [% css_colors.accent_medium %];
+}
+
+#footer-wrap {
+ /* border-top: 5px solid [% css_colors.nav_separation %]; */
+ background-color: [% css_colors.footer_primary %];
+ background-image: -moz-linear-gradient([% css_colors.footer_primary_fade %], [% css_colors.footer_primary %]);
+ background-image: -o-linear-gradient([% css_colors.footer_primary_fade %], [% css_colors.footer_primary %]);
+ background-image: -webkit-linear-gradient([% css_colors.footer_primary_fade %], [% css_colors.footer_primary %]);
+ background-image: linear-gradient([% css_colors.footer_primary_fade %], [% css_colors.footer_primary %]);
+ bottom: 0px;
+ width: 100%;
+}
+
+#footer {
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ [% ELSE -%]
+ margin-left: 1em;
+ [% END -%]
+ padding-top:5px;
+ padding-bottom: 10px;
+ font-size: [% css_fonts.size_small %];
+}
+
+
+#copyright_text, #footer_logo {
+ color: [% css_colors.footer_link %];
+ font-size: [% css_fonts.size_bigger %];
+}
+
+.color_4 {
+ font-weight: bold;
+}
+
+.advanced_div { padding-top: 15px; }
+#adv_global_search { width: 100%; }
+#adv_global_addrow td { padding-top: 7px; }
+[% IF rtl == 't' -%]
+#adv_global_addrow.td-search-left{text-align:right;}
+[% END -%]
+#adv_global_input_table { width: 100%; }
+#adv_global_input_table select { width: 7em; }
+.adv_adv_link {
+ font-size: [% css_fonts.size_smaller %];
+ color: [% css_colors.text_alert %];
+}
+#acct_prefs_header {
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float: left;
+ [% END -%]
+}
+.search_page_nav_link {
+ cursor: pointer;
+ [% IF rtl == 't' -%]
+ padding-right: 1em;
+ [% ELSE -%]
+ padding-left: 1em;
+ [% END -%]
+}
+#opac.result.sort { width: 160px; }
+.renew-summary, .message-update-summary { font-size: [% css_fonts.size_bigger %]; font-style: italic; margin: 0.5ex 0; }
+.failure-text {
+ [% IF rtl == 't' -%]
+ margin-right: 4em;
+ [% ELSE -%]
+ margin-left: 4em;
+ [% END -%]
+ font-style: italic;
+ color: [% css_colors.text_alert %];
+}
+.refine-controls { font-size: [% css_fonts.size_bigger %]; padding: 0.5ex 0; }
+#adv_search_refine input[type=text] { border: 1px inset [% css_colors.accent_light %] !important; }
+#adv_search_refine select { border: 1px inset [% css_colors.accent_light %] !important; }
+#adv_search_refine {
+ [% IF rtl == 't' -%]
+ padding-right: 5em;
+ [% ELSE -%]
+ padding-left: 5em;
+ [% END -%]
+ background-color: [% css_colors.accent_lighter2 %];
+ margin: 2ex 0;
+}
+.row-remover { position: relative; top: 1px; vertical-align: middle; }
+.subtle-button {
+ background-color: [% css_colors.background %];
+ color: [% css_colors.primary %]; text-decoration: none;
+ padding: 0; border: 0; margin: 0;
+ vertical-align: middle;
+}
+.subtle-button:hover { text-decoration: underline; cursor: pointer; }
+.no-dec:hover { text-decoration: none; }
+.pending-addr td { background-color: [% css_colors.background_alert %] !important; border: 0 !important; }
+
+#account-update-email table { text-align: center; padding: 20px; margin-top: 18px; border-collapse: collapse; }
+#account-update-email table td {
+ [% IF rtl == 't' -%]
+ text-align: right;
+ [% ELSE -%]
+ text-align: left;
+ [% END -%]
+ padding: 5px 15px 5px 15px;
+ border-bottom: 1px solid [% css_colors.accent_lighter %];
+}
+#account-update-email-error { font-size: [% css_fonts.size_biggest %]; padding: 10px; border:1px solid [% css_colors.border_standard %];}
+a.dash-link:hover { text-decoration: underline !important; }
+#list_create_table td { vertical-align: middle; padding: 0 8px; }
+#list_create_table {
+ background-color: [% css_colors.accent_light %];
+ padding-bottom: 4px;
+ margin-bottom: 10px;
+ border-bottom: 1px dotted [% css_colors.accent_medium %];
+ width: 100%;
+}
+.list_create_table_label {
+ width: 30%;
+}
+#list_description, #list_create_name {
+ width: 500px;
+}
+.list-create-table-buttons input[type=image] { margin-top: 2px; }
+.result_table_format_cell { padding: 0px 10px; text-align: center; }
+.results_row_count { font-weight: bold; }
+
+.fmt-note {
+ [% IF rtl == 't' -%]
+ padding-right: 1em !important;
+ [% ELSE -%]
+ padding-left: 1em !important;
+ [% END -%]
+ vertical-align: middle;
+}
+.hold-editor-controls { text-align: center; padding-top: 1em !important; }
+.hold-editor-controls a { padding-left: 2em; }
+
+.text-right {
+ [% IF rtl == 't' -%]
+ text-align: left;
+ [% ELSE -%]
+ text-align: right;
+ [% END -%]
+}
+.text-right-top {
+ [% IF rtl == 't' -%]
+ text-align: right;
+ [% ELSE -%]
+ vertical-align: top;
+ [% END -%]
+}
+.rdetail-author-div {
+ padding-bottom: 10px;
+ display: inline-block;
+}
+
+.invisible { visibility: hidden; }
+.rdetail-extras-summary { margin: 10px; }
+.staff-hold { background-color: [% css_colors.accent_lightest %]; }
+.expert-search tbody tr th {
+ [% IF rtl == 't' -%]
+ text-align: left;
+ padding-right: 2em;
+ [% ELSE -%]
+ text-align: right;
+ padding-left: 2em;
+ [% END -%]
+}
+.expert-search-row { padding-top: 10px; }
+#adv_expert_row label { font-weight: bold; }
+
+.bookshelf tr.browse_border td {
+ border-bottom: 1px dashed [% css_colors.accent_dark %];
+ font-size: 1px;
+ height: 1px;
+ padding-bottom: 1ex;
+}
+.cn_browse_item { padding: 2ex; }
+.results-paginator-list {
+ [% IF rtl == 't' -%]
+ padding-right: 1em;
+ [% ELSE -%]
+ padding-left: 1em;
+ [% END -%]
+}
+.results-paginator-selected { color: [% css_colors.text_alert %]; }
+.inactive-hold { background-color: [% css_colors.inactive_hold %]; }
+.unread-patron-message { font-weight: bold; }
+
+#hold-items-list td { padding: 5px; margin-bottom: 20px; }
+.hold-items-list-title {
+ font-size: [% css_fonts.size_bigger %];
+ margin-bottom: 20px;
+}
+.hold-items-list-problem { color: [% css_colors.text_alert %]; }
+
+.hold_success_links > span { margin: 0 2em; }
+
+.radio-parts-selection {
+ width: 75%;
+ margin-bottom: 20px;
+}
+
+.parts-radio-option {
+ display: inline-block;
+ width:15em;
+}
+
+.mr_holds_no_formats {
+ [% IF rtl == 't' -%]
+ margin-right: 25px;
+ [% ELSE -%]
+ margin-left: 25px;
+ [% END -%]
+ padding: 5px;
+ font-size: 110%;
+ font-weight: bold;
+ color: [% css_colors.text_invert %];
+ background-color: [% css_colors.primary %];
+}
+
+.holds_item_row_separator td {
+ border-top: 2px dashed [% css_colors.accent_medium %];
+}
+
+.big-strong {font-weight: bold; font-size: [% css_fonts.size_bigger %]; }
+
+.results_header_btns, .results_header_sel {
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+}
+
+/*
+ * .various_containers a = shortcut to putting .opac-button on every 'a' with
+ * the tradeoff of increased stylesheet complexity (TODO: rethink?)
+ */
+
+.opac-multiline-button > a,
+.opac-button, .results_header_btns a, #simple-detail-view-links a, .dash_account_buttons a {
+ color: [% css_colors.button_text %];
+ font-weight: bold;
+ text-decoration: none;
+ cursor: pointer !important;
+ border-radius: 5px;
+ border: 1px solid [% css_colors.primary %];
+ background-color: [% css_colors.primary_fade %];
+ margin: 0.5em;
+ padding: 0.3em;
+ display: inline-block;
+}
+
+.opac-multiline-button > a:hover,
+.opac-button:hover, .results_header_btns a:hover, #simple-detail-view-links a:hover, #dash_wrapper a.opac-button:hover {
+ background-color: [% css_colors.primary %];
+}
+
+.opac-button:disabled {
+ color: [% css_colors.accent_medium %];
+ cursor: pointer !important;
+ border: 1px solid [% css_colors.accent_light %];
+ background-color: [% css_colors.accent_lighter %];
+}
+
+/* Firefox adds its own special space to inputs; this gets us closer */
+button.opac-button::-moz-focus-inner, input.opac-button::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+.opac-button-header, #dash_wrapper .opac-button {
+ background-color: [% css_colors.control %];
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+ font-size: [% css_fonts.size_base %];
+}
+a.opac-button-header:hover, #dash_wrapper a.opac-button:hover {
+ border-color: [% css_colors.control %];
+}
+
+.opac-multiline-button > a {
+ display: inline-block;
+}
+
+#myopac_checked_div {
+ padding: 0px;
+}
+
+.rdetail-mfhd-head {
+ margin-top: 5px;
+ padding-top: 5px;
+ background-color: [% css_colors.table_heading %];
+}
+
+.rdetail-mfhd-type {
+ [% IF rtl == 't' -%]
+ padding-right: 1em;
+ [% ELSE -%]
+ padding-left: 1em;
+ [% END -%]
+}
+
+.rdetail-mfhd-bottom {
+ border-bottom: thin solid [% css_colors.border_dark %];
+ width: 100%;
+}
+
+#rdetail_record_details {
+ clear: both;
+ margin-top: 1em;
+}
+
+.rdetail_content {
+ [% IF rtl == 't' -%]
+ margin-right: 1.5em;
+ padding-right: 1.5em;
+ [% ELSE -%]
+ margin-left: 1.5em;
+ padding-left: 1.5em;
+ [% END -%]
+}
+
+.rdetail_content_type, .rdetail_subject_type {
+ vertical-align: top;
+ font-weight: bold;
+}
+
+.bookbag-item-row td { vertical-align: top; }
+
+.error { color: [% css_colors.text_alert %]; font-weight: bold; }
+.success {
+ color: [% css_colors.text_greatnews %];
+ font-weight: bold;
+}
+
+.rdetail_related_subjects {
+ margin-top: 1.5em;
+}
+
+.rdetail_related_series {
+ margin-top: 1.5em;
+}
+
+#rdetail_openurl {
+ margin-top: 1em;
+}
+
+.rdetail_openurl_entry {
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ padding-right: 1em;
+ [% ELSE -%]
+ margin-left: 1em;
+ padding-left: 1em;
+ [% END -%]
+}
+.bookbag-controls-holder { width: 100%; }
+.bookbag-controls-holder:nth-child(odd) { background-color: [% css_colors.accent_lighter2 %]; }
+.bookbag-controls-holder:nth-child(even) { background-color: [% css_colors.accent_lightest %]; }
+.bookbag-controls-holder .most {
+ [% IF rtl == 't' -%]
+ padding-right: 0;
+ margin-left: 5em;
+ [% ELSE -%]
+ padding-left: 0;
+ margin-right: 5em;
+ [% END -%]
+}
+.bookbag-controls-title-block {
+ [% IF rtl == 't' -%]
+ float:right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+ width:40%;
+}
+.bookbag-controls-button-block {
+ [% IF rtl == 't' -%]
+ float:right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+ width:50%;
+}
+h2.bookbag-name { margin-bottom: 0em; padding-bottom: 0em; }
+.bookbag-share .fixed { min-width: 4em; }
+.bookbag-specific {
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ [% ELSE -%]
+ margin-left: 1em;
+ [% END -%]
+}
+.bookbag-specific div.sort {
+ [% IF rtl == 't' -%]
+ float: right;
+ text-align: right;
+ margin-right: 15px;
+ [% ELSE -%]
+ float: left;
+ text-align: left;
+ margin-left: 15px;
+ [% END -%]
+ width: 40%;
+}
+.bookbag-specific div.meta {
+ background-color: [% css_colors.accent_light %];
+ [% IF rtl == 't' -%]
+ float: left;
+ text-align: left;
+ [% ELSE -%]
+ float: right;
+ text-align: right;
+ [% END -%]
+ width: 54%;
+ border: 1px solid [% css_colors.accent_light %];
+ padding: 5px;
+ margin-top: 5px;
+}
+#bbag-name-desc-form tr th { vertical-align: middle; }
+#bbag-name-desc-form .saver { vertical-align: middle; text-align: center; }
+.bookbag-description {
+ padding-top: 0em;
+ font-style: italic;
+ max-width: 40em;
+}
+.bbag-edit-desc-label {
+ [% IF rtl == 't' -%]
+ float:right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+ width:8em;
+}
+.bbag-edit-desc-save {
+ clear:both;
+ margin-bottom:10px;
+}
+#bbag-edit-description {
+ width: 20em;
+ [% IF rtl == 't' -%]
+ float:right;
+ [% ELSE -%]
+ float:left;
+ [% END -%]
+}
+#bbag-edit-name {
+ width: 20em;
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float: left;
+ [% END -%]
+}
+.bbag-action {
+ [% IF rtl == 't' -%]
+ margin-right: 15px;
+ [% ELSE -%]
+ margin-left: 15px;
+ [% END -%]
+}
+.bbag-navigate-list {
+ [% IF rtl == 't' -%]
+ padding-right: 32px;
+ float:right;
+ [% ELSE -%]
+ padding-left: 32px;
+ float:left;
+ [% END -%]
+}
+.bbag-navigate-list-pages {
+ [% IF rtl == 't' -%]
+ padding-right: 10px;
+ float:right;
+ [% ELSE -%]
+ padding-left: 10px;
+ float:left;
+ [% END -%]
+}
+textarea { font-family: sans-serif; }
+table.bookbag-specific {
+ border-right: 1px solid [% css_colors.accent_dark %];
+ border-bottom: 1px solid [% css_colors.accent_medium %];
+ margin-bottom: 2ex;
+ width: 100%;
+}
+.bookbag-share {
+ [% IF rtl == 't' -%]
+ float: right;
+ padding: 0px 10px 0px 0px;
+ [% ELSE -%]
+ float: left;
+ padding: 0px 0px 0px 10px;
+ [% END -%]
+}
+.bookbag-share .fixed { min-width: 6em; }
+.bookbag-controls {
+ [% IF rtl == 't' -%]
+ float: right;
+ padding: 0px 10px 0px 0px;
+ [% ELSE -%]
+ float: left;
+ padding: 0px 0px 0px 10px;
+ [% END -%]
+}
+.bookbag-specific td.list_checkbox {
+ [% IF rtl == 't' -%]
+ padding-right: 10px !important;
+ [% ELSE -%]
+ padding-left: 10px !important;
+ [% END -%]
+}
+.bookbag-specific td.list_entry {
+ min-width: 10em;
+ [% IF rtl == 't' -%]
+ padding-right: 5px !important;
+ [% ELSE -%]
+ padding-left: 5px !important;
+ [% END -%]
+}
+.bookbag-specific td.list_actions {
+ white-space: nowrap !important;
+}
+.bookbag-paginator-selected { color: [% css_colors.text_alert %]; }
+
+.list_is_empty {
+ padding: 8px 0px 6px 0px;
+ width: 100%;
+ border: 0;
+ font-size: [% css_fonts.size_bigger %];
+ text-align: center;
+ font-style: italic;
+}
+.save-notes { padding-bottom: 1.5ex; }
+
+.nonbreaking-wrapper {
+ display: inline-block;
+}
+
+/* Moved from semiauto.css */
+.adv_global_input_container {
+ border-bottom: none;
+ clear: both;
+}
+.opac-auto-013 {
+ border-bottom: none;
+ *height: 0px;
+}
+.adv_global_filter_sort {
+ border: none;
+ width: 100%;
+}
+.clear-both { clear: both; }
+.common-no-pad {
+ clear: both;
+ height: 0px;
+ margin: 0px;
+ padding: 0px;
+}
+.common-full-pad {
+ clear: both;
+ height: 15px;
+}
+.opac-alert { color: [% css_colors.text_alert %]; }
+.float-left {
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float: left;
+ [% END -%]
+}
+.float-right {
+ [% IF rtl == 't' -%]
+ float: left;
+ [% ELSE -%]
+ float: right;
+ [% END -%]
+}
+
+.saved-searches-header { width: 100%; font-weight: bold; font-size: [% css_fonts.size_bigger %]; }
+.saved-searches-header .button {
+ [% IF rtl == 't' -%]
+ float: left;
+ [% ELSE -%]
+ float: right;
+ width: 28px;
+ [% END -%]
+}
+.saved-searches-header .text {
+ [% IF rtl == 't' -%]
+ float: right;
+ padding-left: 1em;
+ [% ELSE -%]
+ float: left;
+ padding-right: 1em;
+ [% END -%]
+ margin: 0.5ex 0;
+}
+.saved-searches-header {font-weight: bold; font-size: [% css_fonts.size_bigger %]; }
+.saved-searches { border-bottom: 1px solid [% css_colors.accent_medium %]; padding-right: 1em; }
+#staff-saved-search { /* wraps .saved-searches-header and .saved-searches on the record page */
+ [% IF rtl == 't' -%]
+ border-left: 1px solid [% css_colors.accent_darker %];
+ [% ELSE -%]
+ border-right: 1px solid [% css_colors.accent_darker %];
+ [% END -%]
+}
+.result_item_circulated {
+ padding-top: 4px;
+}
+
+.result_item_circulated span {
+ position: relative;
+ top:-3px;
+ [% IF rtl == 't' -%]
+ right: 3px;
+ [% ELSE -%]
+ left:3px;
+ [% END -%]
+}
+
+#search-only-bookbag-container { margin: 2ex 0; font-weight: bold; }
+#result-bookbag-heading { text-align: center; margin: 2ex; }
+
+.result-bookbag-name { font-size: [% css_fonts.size_bigger %]; font-weight: bold; }
+.result-bookbag-description { font-size: [% css_fonts.size_bigger %]; font-style: italic; }
+.result-bookbag-item-note { font-style: italic; }
+.lowhits-bookbag-name { font-weight: bold; }
+.oils_AS { font-weight: bold; color: [% css_colors.text_match %]; }
+.oils_AS_match_term {
+ [% IF rtl == 't' -%]
+ text-align: right;
+ [% ELSE -%]
+ text-align: left;
+ [% END -%]
+ color: [% css_colors.text %];
+}
+.oils_AS_match_field {
+ font-size: [% css_fonts.size_smallest %]; padding: 0.65em 0;
+ [% IF rtl == 't' -%]
+ text-align: left;
+ [% ELSE -%]
+ text-align: right;
+ [% END -%]
+ color: [% css_colors.accent_medium %];
+}
+table.result_holdings_table {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+table.result_holdings_table thead tr {
+ background-color: [% css_colors.table_heading %];
+}
+table.result_holdings_table thead tr th {
+ font-weight: bold;
+}
+span.preflib {
+ margin: 0 2em 0 2em;
+}
+a.preflib_change {
+ vertical-align: super;
+ font-size: [% css_fonts.size_smaller %];
+ line-height: normal;
+ text-decoration: none;
+}
+.rdetail-holding-group {
+ [% IF rtl == 't' -%]
+ margin-right: 1.5em;
+ [% ELSE -%]
+ margin-left: 1.5em;
+ [% END -%]
+}
+.rdetail-holding-group span {
+ [% IF rtl == 't' -%]
+ margin-right: 1.5em;
+ [% ELSE -%]
+ margin-left: 1.5em;
+ [% END -%]
+}
+.rdetail-holding-group .paging {
+ [% IF rtl == 't' -%]
+ margin-right: 1.5em;
+ [% ELSE -%]
+ margin-left: 1.5em;
+ [% END -%]
+}
+#rdetail_deleted_exp {
+ font-weight: bold;
+ padding: 1em;
+ margin: 1em;
+ border: thick solid [% css_colors.border_alert %];
+}
+
+#ac_tab_wrapper { width : 100%; }
+.ac_tab {
+ [% IF rtl == 't' -%]
+ float: right;
+ padding-left: 10px;
+ [% ELSE -%]
+ float: left;
+ padding-right: 10px;
+ [% END -%]
+ font-size: [% css_fonts.size_big %];
+ padding: 5px;
+ border: 1px solid [% css_colors.primary_offset %];
+}
+.ac_tab_selected { background-color: [% css_colors.primary_offset %]; }
+.ac_tab_selected a { color: [% css_colors.text_invert %]; }
+#ac_content { clear: both; width: 100%; margin-top: 10px; }
+
+/* Popmenu styles used for making css menus. */
+.popmenu {
+ margin: 0;
+ padding: 0;
+}
+.popmenu li {
+ list-style: none;
+}
+.popmenu li a {
+ display: block;
+ padding: 3px 5px;
+}
+.popmenu li ul {
+ display: none;
+ width: 10em; /* Width to help Opera out */
+ background-color: [% css_colors.primary %];
+}
+.popmenu li:hover ul {
+ display: block;
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ border-color: [% css_colors.border_dark %];
+ border-width: 1px;
+ border-style: solid;
+}
+.popmenu li:hover li {
+ float: none;
+}
+.popmenu li:hover li a {
+ background-color: [% css_colors.primary %];
+ color: [% css_colors.accent_ultralight %];
+}
+.popmenu li li a:hover {
+ background-color: [% css_colors.accent_ultralight %];
+ color: [% css_colors.primary %];
+}
+/* Styles for the basket entry. */
+.popmenu li:hover li[class~="temporary"] a {
+ background-color: [% css_colors.primary %];
+ color: [% css_colors.accent_ultralight %];
+}
+.popmenu li li[class~="temporary"] a:hover {
+ background-color: [% css_colors.accent_ultralight %];
+ color: [% css_colors.primary %];
+}
+/* Styles for the default list entry. */
+.popmenu li:hover li[class~="default"] a {
+ background-color: [% css_colors.primary %];
+ color: [% css_colors.accent_ultralight %];
+}
+.popmenu li li[class~="default"] a:hover {
+ background-color: [% css_colors.accent_ultralight %];
+ color: [% css_colors.primary %];
+}
+/* Styles for the new list entry. */
+.popmenu li:hover li[class~="new"] a {
+ background-color: [% css_colors.primary %];
+ color: [% css_colors.accent_ultralight %];
+}
+.popmenu li li[class~="new"] a:hover {
+ background-color: [% css_colors.accent_ultralight %];
+ color: [% css_colors.primary %];
+}
+/* Style to add a divider on the menu. */
+.popmenu li li[class~="divider"] {
+ border-bottom-width: 1px;
+ border-bottom-color: [% css_colors.border_dark %];
+ border-bottom-style: solid;
+}
+
+
+
+
+#patron_usr_barcode_not_found {
+ font-weight: bold; color: [% css_colors.text_alert %];
+}
+
+.record_title {
+ font-weight: bold;
+}
+
+.record_author {
+ font-style: italic;
+}
+
+.password_message {
+ padding-top: 1em;
+ padding-bottom: 0.5em;
+ font-style: italic;
+}
+
+#maintenance_message {
+ padding: 5px;
+ width: 100%;
+ background-color: [% css_colors.text_alert %];
+ color: [% css_colors.text_invert %];
+ text-align: center;
+}
+
+#search-box > span {
+ margin: 0 1em;
+}
+.browse-error {
+ font-weight: bold;
+ font-color: #c00;
+}
+.browse-result-sources, .browse-result-authority-bib-links {
+ [% IF rtl == 't' -%]
+ margin-right: 1em;
+ [% ELSE -%]
+ margin-left: 1em;
+ [% END -%]
+}
+.browse-result-best-match {
+ font-weight: bold;
+}
+.browse-pager {
+ margin: 2ex 0;
+}
+.browse-result-list {
+ padding-bottom: 0.5ex;
+}
+.browse-shortcuts {
+ font-size: [% css_fonts.size_bigger %];
+}
+.browse-result-authority-field-name {
+ font-style: italic;
+ [% IF rtl == 't' -%]
+ margin-left: 1em;
+ [% ELSE -%]
+ margin-right: 1em;
+ [% END -%]
+}
+.browse-leading-article-warning {
+ font-style: italic;
+ font-size: [% css_fonts.size_big %];
+}
+.browse-public-general-note {
+ font-size: [% css_fonts.size_big %];
+}
+.browse-public-general-note-label { }
+.browse-public-general-note-institution {
+ font-style: normal;
+ font-weight: bold;
+}
+.browse-public-general-note-body {
+ font-style: italic;
+}
+
+.bib_peer_type {
+ font-weight: bold;
+}
+
+#main-content-register {
+ [% IF rtl == 't' -%]
+ margin-right: 40px;
+ [% ELSE -%]
+ margin-left: 40px;
+ [% END -%]
+ font-size: [% css_fonts.size_bigger %];
+}
+
+#main-content-register table {
+ padding: 20px;
+ margin-top: 18px;
+ border-collapse: collapse;
+}
+
+#main-content-register td {
+ [% IF rtl == 't' -%]
+ text-align: right;
+ [% ELSE -%]
+ text-align: left;
+ [% END -%]
+}
+
+#main-content-register td:not(:first-child) {
+ [% IF rtl == 't' -%]
+ padding-right: 20px;
+ [% ELSE -%]
+ padding-left: 20px;
+ [% END -%]
+}
+
+.patron-reg-invalid {
+ font-weight: bold;
+ color: red;
+ [% IF rtl == 't' -%]
+ padding-left: 10px;
+ [% ELSE -%]
+ padding-right: 10px;
+ [% END -%]
+}
+
+.result_footer_nav1 {
+ clear: both;
+}
+
+.small_view_only, #filter_hits, #refine_hits, #return_to_hits {
+ display: none;
+}
+
+.rdetail_authors_div {
+ margin-bottom: 1em;
+}
+
+#search_query_label, #search_qtype_label, #search_itype_label, #search_locg_label {
+ white-space: nowrap;
+ display: inline-block;
+}
+
+.result_table_title_cell {
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+
+.record_title {
+ font-size: [% css_fonts.size_bigger %];
+}
+
+/* styling for sms text call number */
+.sms_text pre {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: [% css_fonts.size_medium %];
+ background-color: [% css_colors.accent_lightest %];
+ padding: .5%;
+ /* Allow text to wrap */
+ white-space: pre-wrap; /* css-3 */
+ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+}
+
+.mobile_view {
+ display:none;
+}
+
+/* patron message center */
+#myopac_message_tbody {
+ vertical-align: top;
+}
+.myopac_message_message {
+ white-space: pre-wrap;
+}
+
+@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;
+ }
+}
+
+@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 -%]
+ }
+ #dashboard, #dashboard_e {
+ display: none;
+ }
+ #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 %];
+ }
+}
+
+
+/*
+For text which is visible only to screen readers.
+Borrowed from http://getbootstrap.com/css/#helper-classes-screen-readers
+See also http://webaim.org/techniques/css/invisiblecontent/
+*/
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+}
+
+/* Make added rows in Expert Search have bold labels like the initial row */
+label[for*=expert_]
+{
+ font-weight: bold;
+}
+
+.sort_deemphasize {
+ font-weight: lighter;
+ font-size: 70%;
+}
+
+#results-page-depth-hint {
+ text-align: center;
+ font-style: italic;
+}
+
+#clear-history-confirm {
+ font-weight: bold;
+ color: [% css_colors.text_badnews %];
+ padding: 10px;
+}
+
+/*Inline rules from other templates files*/
+
+.td-left{
+ [% IF rtl == 't' -%]
+ text-align:right;
+ [% ELSE -%]
+ text-align:left;
+ [% END -%]
+ width:100%;
+}
+.td-search-left{
+ [% IF rtl == 't' -%]
+ text-align:right;
+ [% ELSE -%]
+ text-align:left;
+ [% END -%]
+}
+#myopac_summary_div{padding:0px;}
+.div-left{
+ [% IF rtl == 't' -%]
+ float: right;
+ [% ELSE -%]
+ float: left;
+ [% END -%]
+}
+.td-right{
+ [% IF rtl == 't' -%]
+ text-align:left;
+ [% ELSE -%]
+ text-align:right;
+ [% END -%]
+}
+.login-form-left{
+ [% IF rtl == 't' -%]
+ float: right;
+ margin-left: 40px;
+ [% ELSE -%]
+ float: left;
+ margin-right: 40px;
+ [% END -%]
+ padding-bottom: 10px;
+}
+.hold-div{
+ [% IF rtl == 't' -%]
+ padding-right: 10px;
+ [% ELSE -%]
+ padding-left: 10px;
+ [% END -%]
+ padding-bottom: 15px;
+}
+.hold-span{font-weight: bold;}
+.padding-left-6{
+ [% IF rtl == 't' -%]
+ padding-right: 6px;
+ [% ELSE -%]
+ padding-left: 6px;
+ [% END -%]
+}
+.padding-left-10{
+ [% IF rtl == 't' -%]
+ padding-right:10px;
+ [% ELSE -%]
+ padding-left:10px;
+ [% END -%]
+}
+.padding-left-5{
+ [% IF rtl == 't' -%]
+ padding-right: 5px;
+ [% ELSE -%]
+ padding-left: 5px;
+ [% END -%]
+}
+
+/* Rules from metarecord_hold_filters.tt2 */
+
+.metarecord_filters{
+ padding: 5px;
+ margin-top: 5px;
+ border-bottom: 1px solid #333;
+ border-top: 1px solid #333; }
+.metarecord_filter_container{
+ [% IF rtl == 't' -%]
+ float : right;
+ margin-left: 10px;
+ [% ELSE -%]
+ float : left;
+ margin-right: 10px;
+ [% END -%]
+}
+.metarecord_filter_container select{padding: 2px;width: 13em; /* consistent w/ adv search selectors */}
+.metarecord_filter_header{padding-bottom: 5px;}
+
+/* Toggled items. */
+/* A block that is initially hidden and shown by clicking an anchor. */
+[id^="toggled-block-"]{
+ display: none;
+}
+[id^="toggled-block-"]:target{
+ display: block;
+}
+/* Inline text that is initially hidden and shown by clicking an anchor. Useful on a span. */
+[id^="toggled-inline-"]{
+ display: none;
+}
+[id^="toggled-inline-"]:target{
+ display: inline;
+}
+
+.oils_SH {
+ font-weight: bolder;
+ background-color: #99ff99;
+}
+
+.oils_SH.identifier {
+ font-weight: bolder;
+ background-color: #42b0f4;
+}
+.hold_note_title { font-weight: bold; }
+
+/*
+#acct_checked_main_header td, #acct_holds_main_header td, #acct_fines_main_header td, #acct_fines_confirm_header td, #acct_fees_main_header td,#acct_checked_hist_header td, #acct_holds_hist_header td, #acct_list_header td, #acct_list_header_anon td, #temp_list_holds td, #acct_messages_main_header td, #ebook_circs_main_table td, #ebook_holds_main_table td {
+ background-color: [% css_colors.background %];
+ padding: 10px;
+ border: 1px solid #d3d3d3;
+}
+
+#acct_checked_main_header th, #acct_holds_main_header th, #acct_fines_main_header th, #acct_fines_confirm_header th, #acct_fees_main_header th, #acct_checked_hist_header th, #acct_holds_hist_header th, #acct_list_header th, #acct_list_header_anon th, #temp_list_holds th, #acct_messages_main_header th, #ebook_holds_main_table th {
+ [% IF rtl == 't' -%]
+ text-align: right;
+ [% ELSE -%]
+ text-align: left;
+ [% END -%]
+ padding: 0px 10px 0px 10px;
+}
+#acct_checked_main_header, #acct_holds_main_header, #acct_fines_main_header, #acct_checked_hist_header, #acct_holds_hist_header, #acct_list_header, #acct_list_header_anon, #temp_list_holds, #acct_messages_main_header, #ebook_circs_main_table, #ebook_holds_main_table {
+ border-collapse: collapse;
+}
+
+#hold_editor h1 { font-size: [% css_fonts.size_bigger %]; font-weight: bold; }
+#hold_editor h2 { font-size: [% css_fonts.size_big %]; font-weight: normal; text-indent: 2em; font-style: italic; }
+#hold_editor h1, #hold_editor h2 { margin: 2px 0; }
+#hold_editor_table { background-color: [% css_colors.accent_lighter %]; padding: 0.5em; }
+#hold_editor_table th {
+ [% IF rtl == 't' -%]
+ text-align: left;
+ padding-left: 1em;
+ [% ELSE -%]
+ text-align: right;
+ padding-right: 1em;
+ [% END -%]
+}
+#hold_editor_table td { padding: 0.25em 0; }
+*/
+
+
+/*
+ Carousels
+*/
+
+.carousel {
+ width: 40%;
+ margin: 0 auto;
+}
+.carousel-title {
+ font-size: 150%;
+ font-weight: bold;
+ text-align: center;
+}
+.carousel-entry {
+ max-width: 150px;
+}
+.carousel-entry-image {
+ width: 100%;
+ height: auto;
+}
+.carousel .glide__arrow {
+ color: [% css_colors.button_text %];
+ font-weight: bold !important;
+ text-decoration: none !important;
+ cursor: pointer;
+ border-radius: 5px;
+ border: 1px solid [% css_colors.primary %];
+ background-color: [% css_colors.primary_fade %];
+ margin: 0.5em;
+ padding: 0.3em;
+ display: inline-block;
+}
+.carousel .glide__arrow--right {
+ right: -5em;
+}
+.carousel .glide__arrow--left {
+ left: -5em;
+}
+
+.search-filter{
+ display: inline;
+}
+
+
+
+.search-option{
+ display: inline-block;
+ 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");
+
+}
--- /dev/null
+[%- PROCESS "opac/parts/header.tt2";
+ WRAPPER "opac/parts/base.tt2";
+ INCLUDE "opac/parts/topnav.tt2";
+ ctx.metalinks.push('<link rel="canonical" href="' _ mkurl('', {}, 1) _ '" />');
+ 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";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/base.tt2";
+ INCLUDE "opac/parts/topnav.tt2";
+ 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">
+ [% INCLUDE "opac/parts/searchbar.tt2" %]
+ </div>
+ <div id="content-wrapper">
+ <div id="main-content">
+ [% 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>
+ [% END %]
+ <div class="common-full-pad"></div>
+ </div>
+ </div>
+[%- END %]
--- /dev/null
+[%- PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ 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>
+[%- END %]
--- /dev/null
+[%- PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ 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>
+ </div>
+ </div>
+[%- END %]
--- /dev/null
+[%- PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ 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>
+[%- END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ PROCESS "opac/parts/myopac/column_sort_support.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "circs"
+ limit = ctx.circ_history_limit;
+ offset = ctx.circ_history_offset;
+%]
+
+<h3 class="sr-only">[% 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
+ # bug.
+ sort_field = CGI.param('sort');
+ IF (sort_field);
+ no_next = ctx.circs.size - offset <= limit;
+ ELSE;
+ 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>
+
+ [% 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>
+ <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">
+ <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>
+ <th>[% sort_head("sort_title", l("Title")) %]</th>
+ <th>[% sort_head("author", l("Author")) %]</th>
+ <th>[% sort_head("callnum", l("Call Number")) %]</th>
+ <th>[% sort_head("checkout", l("Checkout Date")) %]</th>
+ <th>[% sort_head("due", l("Due Date")) %]</th>
+ <th>[% sort_head("returned", l("Date Returned")) %]</th>
+ <th>[% sort_head("barcode", l("Barcode")) %]</th>
+ </tr>
+ </thead>
+ <tbody>
+ [%# Copy the ctx.circs into a local array, then add a SORT field
+ that contains the value to sort on. Since we need the item attrs,
+ invoke it and save the result in ATTRS.
+ %]
+ [%
+ circ_items = ctx.circs; # Array assignment
+
+ FOR circ IN circ_items;
+ circ.ATTRS = {marc_xml => circ.marc_xml};
+ PROCESS get_marc_attrs args=circ.ATTRS;
+
+ SWITCH sort_field;
+
+ CASE "sort_title";
+ circ.SORTING = circ.ATTRS.sort_title;
+
+ CASE "author";
+ circ.SORTING = circ.ATTRS.author;
+
+ CASE "checkout";
+ circ.SORTING = circ.circ.xact_start;
+
+ CASE "due";
+ circ.SORTING = circ.circ.due_date;
+
+ CASE "returned";
+ circ.SORTING = circ.circ.checkin_time;
+
+ CASE "barcode";
+ circ.SORTING = circ.circ.target_copy.barcode;
+
+ CASE "callnum";
+ circ.SORTING = circ.circ.target_copy.call_number.label;
+
+ CASE;
+ sort_field = "";
+ END; # SWITCH
+ END; #FOR circ
+
+ IF (sort_field != "sort_title");
+ deemphasize_class = "";
+ ELSE;
+ deemphasize_class = " class=\"sort_deemphasize\"";
+ END;
+
+ # Apply sorting to circ_items
+ IF (sort_field);
+ circ_items = circ_items.sort("SORTING");
+ IF (CGI.param("sort_type") == "desc");
+ circ_items = circ_items.reverse;
+ END;
+
+ # Shorten the circ_items list per offset/limit/cout
+ hi = offset + limit - 1;
+ hi = hi > circ_items.max ? circ_items.max : hi;
+
+ circ_items = circ_items.slice(offset, hi);
+ END;
+
+ # circ_items list is now sorted. Traverse and dump the information.
+
+ FOR circ IN circ_items; %]
+ <tr>
+ <td class="checkbox_column">
+ <input type="checkbox" name="circ_id" value="[% circ.circ.id %]" />
+ </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.ATTRS.title.substr(0,circ.ATTRS.nonfiling_characters) | html %]</span>
+ [%- circ.ATTRS.title.substr(circ.ATTRS.nonfiling_characters) | html %]</a>
+ </td>
+ <td>
+ <a href="[% mkurl(ctx.opac_root _ '/results',
+ {qtype => 'author', query => circ.ATTRS.author.replace('[,\.:;]', '')},
+ 1
+ ) %]">[% circ.ATTRS.author | html %]</a>
+ </td>
+ <td>[% circ.circ.target_copy.call_number.label | html %]</td>
+ <td>
+ [% date.format(ctx.parse_datetime(circ.circ.xact_start),DATE_FORMAT); %]
+ </td>
+ <td>
+ [% IF circ.circ.source_circ;
+ date.format(ctx.parse_datetime(circ.circ.due_date, circ.circ.source_circ.circ_lib),DATE_FORMAT);
+ ELSE;
+ date.format(ctx.parse_datetime(circ.circ.due_date, ctx.user.home_ou),DATE_FORMAT);
+ END;
+ %]
+ </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 -->
+ [% END; %]
+ </td>
+ <td>[% circ.circ.target_copy.barcode | html %]</td>
+
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ </div>
+ </form>
+ <form action="[% mkurl(ctx.opac_root _ '/myopac/circ_history/export') %]" method="post">
+ <div>
+ [%- 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>
+ [% END %]
+ </div>
+ </form>
+ [% END %]
+</div></div>
+[% END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ PROCESS "opac/parts/myopac/column_sort_support.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "circs";
+%]
+<h3 class="sr-only">[% 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>
+ [% IF ctx.circs.size < 1 %]
+ <div class="warning_box">[% l('You have no items checked out.') %]</div>
+ [% ELSE %]
+ [% IF ctx.success_renewals %]
+ <div class="renew-summary">
+ [% l("Successfully renewed [_1] item(s)", ctx.success_renewals) %]
+ </div>
+ [% END %]
+ [% IF ctx.failed_renewals %]
+ <div class="renew-summary alert">
+ [% l("Failed to renew [_1] item(s)", ctx.failed_renewals) %]
+ </div>
+ [% END %]
+ <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>
+
+ <table id="acct_checked_main_header" title="[% l('Items Checked Out') %]"
+ class="table table-hover miniTable circTable">
+ <thead>
+ <tr>
+ <th class="checkbox_column">
+ <input type="checkbox" id="check_all_checked"
+ title="[% 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>
+ <th>[% sort_head("sort_title", l("Title")) %]</th>
+ <th>[% sort_head("author", l("Author")) %]</th>
+ <th>[% sort_head("renews", l("Renewals Left")) %]</th>
+ <th>[% sort_head("due", l("Due Date")) %]</th>
+ <th>[% sort_head("barcode", l("Barcode")) %]</th>
+ <th>[% sort_head("callnum", l("Call Number")) %]</th>
+ [% IF ctx.get_org_setting(ctx.user.home_ou, 'opac.show_owning_lib_column'); %]
+ <th>[% sort_head("lib", l("Owning Library")) %]</th>
+ [% column_count = 8;
+ ELSE ;
+ column_count = 7;
+ END; %]
+ </tr>
+ </thead>
+ <tbody>
+ [%# Copy the ctx.circs into a local array, then add a SORT field
+ that contains the value to sort on. Since we need the item attrs,
+ invoke it and save the result in ATTRS.
+ %]
+ [%
+ circ_items = ctx.circs; # Array assignment
+
+ sort_field = CGI.param('sort'); # unless changed below...
+
+ FOR circ IN circ_items;
+ circ.ATTRS = {marc_xml => circ.marc_xml};
+ PROCESS get_marc_attrs args=circ.ATTRS;
+
+ SWITCH sort_field;
+
+ CASE "sort_title";
+ circ.SORTING = circ.ATTRS.sort_title;
+
+ CASE "author";
+ circ.SORTING = circ.ATTRS.author;
+
+ CASE "renews";
+ circ.SORTING = circ.circ.renewal_remaining;
+
+ CASE "due";
+ circ.SORTING = circ.circ.due_date;
+
+ CASE "barcode";
+ circ.SORTING = circ.circ.target_copy.barcode;
+
+ CASE "callnum";
+ circ.SORTING = circ.circ.target_copy.call_number.label;
+ CASE "lib";
+ circ.SORTING = circ.circ.target_copy.call_number.owning_lib.name;
+
+ CASE;
+ sort_field = "";
+ END; # SWITCH
+ END; #FOR circ
+
+ IF (sort_field != "sort_title");
+ deemphasize_class = "";
+ ELSE;
+ deemphasize_class = " class=\"sort_deemphasize\"";
+ END;
+
+ # Apply sorting to circ_items
+ IF (sort_field);
+ circ_items = circ_items.sort("SORTING");
+ IF (CGI.param("sort_type") == "desc");
+ circ_items = circ_items.reverse;
+ END;
+ END;
+
+ # circ_items list is now sorted. Traverse and dump the information.
+
+ FOR circ IN circ_items; %]
+ <tr>
+ <td class="checkbox_column" valign="top">
+ <input type="checkbox" name="circ"
+ title="[% l('Item Selected') %]"
+ [% IF circ.circ.renewal_remaining < 1 %] disabled="disabled" [% END %]
+ value="[% circ.circ.id %]" />
+ </td>
+ <td name="title">
+ <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.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">
+ [% IF circ.circ.target_copy.call_number.id == -1 %]
+ <span class="sr-only">Author</span>
+ [% circ.circ.target_copy.dummy_author | html %]
+ [% ELSIF circ.ATTRS.author %]
+ <span class="sr-only">Author</span>
+ <a href="[% mkurl(ctx.opac_root _ '/results',
+ {qtype => 'author', query => circ.ATTRS.author.replace('[,\.:;]', '')},
+ 1
+ ) %]">[% circ.ATTRS.author | html %]</a>
+ [% ELSE %]
+
+ [% END %]
+ </td>
+ <td name="renewals">
+ <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 %]'>
+ <span class="sr-only">Due Date</span>
+ [% date.format(due_date, DATE_FORMAT) %]
+ </td>
+ <td name="barcode">
+ <span class="sr-only">Barcode</span>
+ <span class="speak:spell-out;">[% circ.circ.target_copy.barcode | html %]</span>
+ </td>
+ <td name="call_number">
+ <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">
+ [%- fleshed_ou = circ.circ.target_copy.call_number.owning_lib;
+ INCLUDE "opac/parts/library_name_link_from_ou.tt2";
+ %]
+ </td>
+ [% END; %]
+ </tr>
+ [% IF circ.renewal_response AND
+ circ.renewal_response.textcode != 'SUCCESS' %]
+ <tr>
+ <td colspan="[% column_count %]">[%# XXX colspan="0" does not work in IE %]
+ <span class="failure-text" title="[% circ.renewal_response.textcode | html %] / [% circ.renewal_response.fail_part | html %]">
+ [%
+ renew_fail_msg = '';
+ IF circ.renewal_response.textcode == 'TOTAL_HOLD_COPY_RATIO_EXCEEDED' OR
+ circ.renewal_response.textcode == 'AVAIL_HOLD_COPY_RATIO_EXCEEDED';
+ # the stock hold ratio message may not be patron friendly
+ renew_fail_msg = l('Item is needed for a hold');
+ ELSE;
+ renew_fail_msg = circ.renewal_response.desc ||
+ circ.renewal_response.fail_part ||
+ circ.renewal_response.textcode;
+ END;
+ renew_fail_msg | html;
+ %]
+ </span>
+ </td>
+ </tr>
+ [% END; %]
+
+ [% END; %]
+ </tbody>
+ </table>
+ </form>
+ </div>
+ [% END %]
+</div></div>
+[% END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ PROCESS "opac/parts/myopac/column_sort_support.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "ebook_checkout";
+%]
+<h3 class="sr-only">[% 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">
+ <thead>
+ <tr>
+ <th>[% l("Title") %]</th>
+ <th>[% l("Author") %]</th>
+ <th>[% l("Due Date") %]</th>
+ <th>[% l("Actions") %]</th>
+ </tr>
+ </thead>
+ <tbody id="ebook_circs_main_table_body"></tbody>
+ </table>
+ </div>
+</div>
+[% END %]
+
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ PROCESS "opac/parts/myopac/column_sort_support.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "ebook_circs";
+%]
+<h3 class="sr-only">[% 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">
+ <thead>
+ <tr>
+ <th>[% l("Title") %]</th>
+ <th>[% l("Author") %]</th>
+ <th>[% l("Due Date") %]</th>
+ <th>[% l("Actions") %]</th>
+ </tr>
+ </thead>
+ <tbody id="ebook_circs_main_table_body"></tbody>
+ </table>
+ </div>
+</div>
+[% END %]
--- /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_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>
+<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_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 on Hold') %]"
+ class="table table-hover miniTable w-100 eholdsTable">
+ <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 %]
--- /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_holds_ready";
+ 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>
+<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">
+ <thead>
+ <tr>
+ <th>[% l("Title") %]</th>
+ <th>[% l("Author") %]</th>
+ <th>[% l("Expire Date") %]</th>
+ <th>[% l("Actions") %]</th>
+ </tr>
+ </thead>
+ <tbody id="ebook_holds_main_table_body"></tbody>
+ </table>
+ </div>
+</div>
+[% END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ PROCESS "opac/parts/hold_status.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "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'>
+
+
+ <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 class="hide_me" href="#">[% l('Export List') %]</a>
+ </span>
+ </div>
+ <div class="clear-both"></div>
+
+ <div id='holds_main'>
+ [% IF ctx.holds.size && ctx.holds.size < 1 %]
+ <div class="warning_box">
+ <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') %]">
+ <thead>
+ <tr>
+ <th><span>[% l('Title') %]</span></th>
+ <th><span>[% l('Author') %]</span></th>
+ <th> <span>[% l('Format') %]</span></th>
+ <th><span>[% l('Pickup Location') %]</span> </th>
+ <th><span>[% l('Status') %]</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ [% FOR hold IN ctx.holds;
+ attrs = {marc_xml => hold.marc_xml};
+ PROCESS get_marc_attrs args=attrs;
+ ahr = hold.hold.hold %]
+
+ <tr name="acct_holds_temp">
+
+ <td>
+ <span class="sr-only">Title</span>
+ <div>
+ <a href="[% mkurl(ctx.opac_root _ '/record/' _ hold.hold.bre_id) %]">[% attrs.title | html %]</a>
+ </div>
+ </td>
+ <td>
+ <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>
+ </td>
+ <td>
+ <div class='format_icon'>
+ [% IF attrs.format_icon %]
+ <img title="[% attrs.format_label | html %]" alt="[% attrs.format_label | html %]" src="[% attrs.format_icon %][% ctx.cache_key %]" />
+ [% END %]
+ </div>
+ <span class="sr-only">Format [% attrs.format_label | html %]</span>
+ </td>
+ <td>
+ <span class="sr-only">Pickup Location</span>
+ [% ctx.get_aou(ahr.pickup_lib).name | html %]
+ </td>
+ <td>
+ <span class="sr-only">Hold Status</span>
+ <div name="acct_holds_status">
+ [% PROCESS get_hold_status hold=hold; %]
+ </div>
+ </td>
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ [% END %]
+ </div></div>
+</div>
+[% END %]
--- /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 = "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");
+ l("Items Ready for Pickup");
+ ELSE;
+ l("Current Items on Hold");
+ END
+ %]
+ </span>
+ </div>
+ <div class="clear-both"></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>
+ [% IF CGI.param("available") -%]
+ <a href="[% mkurl('holds', {}, ['limit','offset','available']) %]">[% l('Show all holds') %]</a> |
+ <strong>[% l("Show only available holds") %]</strong>
+ [% ELSE -%]
+ <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>
+ </div>
+
+ <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>
+ </div>
+ </div>
+
+ [% IF ctx.holds.size && ctx.holds.size < 1 %]
+ <div class="warning_box">[% l('No holds found.') %]</div>
+ [% ELSE %]
+ <table title="[% l('Items on Hold') %]"
+ class="table table-hover miniTable activeHoldstable w-100 my-3">
+ <thead>
+ <tr>
+ <th class="checkbox_column">
+ <input type="checkbox" title="[% l('Select All Holds') %]"
+ onclick="var inputs=document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i++) { if (inputs[i].name == 'hold_id' && !inputs[i].disabled) inputs[i].checked = this.checked;}"/>
+ </th>
+ <th>[% sort_head("sort_title", l('Title')) %]</th>
+ <th>[% sort_head("author", l('Author')) %]</th>
+ <th>[% sort_head("format", l('Format')) %]</th>
+ <th>[% l('Pickup Location') %]</th>
+ <th>[% l('Cancel if not filled by') %]</th>
+ <th>[% l('Status') %]</th>
+ <th>[% l('Notes') %]</th>
+ </tr>
+ </thead>
+ <tbody id="holds_temp_parent">
+
+ [%# Copy the ctx.holds into a local array, then add a SORT field
+ that contains the value to sort on. Since we need the item attrs,
+ invoke it and save the result in ATTRS.
+ %]
+ [%
+ hold_items = ctx.holds;
+
+ sort_field = CGI.param('sort');
+
+ FOR hold IN hold_items;
+ hold.ATTRS = {marc_xml => hold.marc_xml};
+ PROCESS get_marc_attrs args=hold.ATTRS;
+
+ SWITCH sort_field;
+
+ CASE "sort_title";
+ hold.SORTING = hold.ATTRS.sort_title;
+
+ CASE "author";
+ hold.SORTING = hold.ATTRS.author;
+
+ CASE "format";
+ hold.SORTING = hold.ATTRS.format_label;
+
+ CASE;
+ sort_field = "";
+ END; # SWITCH
+ END; #FOR hold
+
+ IF (sort_field != "sort_title");
+ deemphasize_class = "";
+ ELSE;
+ deemphasize_class = " class=\"sort_deemphasize\"";
+ END;
+
+ # Apply sorting to hold_items
+ IF (sort_field != "");
+ hold_items = hold_items.sort("SORTING");
+ IF (CGI.param("sort_type") == "desc");
+ hold_items = hold_items.reverse;
+ END;
+
+ # Shorten the hold_items list per offset/limit/count
+ hi = offset + limit - 1;
+ hi = hi > hold_items.max ? hold_items.max : hi;
+
+ hold_items = hold_items.slice(offset, hi);
+ END;
+
+ # hold_items list is now sorted. Traverse and dump the information.
+ cnt = 0;
+ FOR hold IN hold_items;
+ ahr = hold.hold.hold;
+ cnt = cnt + 1;
+ %]
+ <tr name="acct_holds_temp"
+ 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)) %]/>
+ </td>
+ <td>
+ <span class="sr-only">Title</span>
+ <div>
+ [% title = hold.ATTRS.title;
+ IF ahr.hold_type == 'P';
+ title = l('[_1] ([_2])', title, hold.hold.part.label);
+ END; %]
+
+ <a href="[% mkurl(ctx.opac_root _ '/record/' _
+ hold.hold.bre_id, {}, 1) %]"
+ name="[% l('Catalog record') %]"><span[%- deemphasize_class -%]>
+ [%- title.substr(0,hold.ATTRS.nonfiling_characters) | html %]</span>
+ [%- title.substr(hold.ATTRS.nonfiling_characters) | html %]</a>
+ </div>
+ </td>
+ <td>
+ <span class="sr-only">Author</span>
+ <div>
+ <a href="[% mkurl(ctx.opac_root _ '/results',
+ {qtype => 'author', query => hold.ATTRS.author.replace('[,\.:;]', '')},
+ 1
+ ) %]">[% hold.ATTRS.author | html %]</a>
+ </div>
+ </td>
+ <td>
+ <span class="sr-only">Format</span>
+ <div class="format_icon">
+ [%
+ formats = hold.ATTRS.all_formats;
+ IF ahr.hold_type == 'M';
+ # only show selected formats for metarecords
+ formats = [];
+ FOR ccvm IN hold.metarecord_selected_filters.icons;
+ NEXT IF ccvm.opac_visible == 'f';
+ format = {};
+ format.label = ccvm.search_label || ccvm.value;
+ format.icon = PROCESS get_ccvm_icon ccvm=ccvm;
+ formats.push(format);
+ END;
+ END;
+ 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 %]" />
+ [% END %]
+ </div>
+ </td>
+ <td>
+ <span class="sr-only">Pickup Location</span>
+ [% ctx.get_aou(ahr.pickup_lib).name | html %]
+ </td>
+ <td>
+ <span class="sr-only">Cancel if not filled by</span>
+ [% IF ahr.expire_time;
+ date.format(ctx.parse_datetime(ahr.expire_time), DATE_FORMAT);
+ END %]
+ </td>
+ <td>
+ <span class="sr-only">Status</span>
+ <div name="acct_holds_status">
+ [% PROCESS get_hold_status hold=hold; %]
+ </div>
+ </td>
+ <td class="hold_notes">
+ <span class="sr-only">Notes</span>
+ [%- FOREACH pubnote IN ahr.notes;
+ IF pubnote.pub == 't';
+ %]
+ <div class="hold_note">
+ <span class="hold_note_title">[% pubnote.title | html %]</span>
+ <br />
+ <span class="hold_note_body">[% pubnote.body | html %]</span>
+ </div>
+ [%- END; END; %]
+ </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)) %]>
+ [% l('Edit') %]
+ </a>
+ </td>
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ </div>
+ [% END %]
+ </form>
+ </div></div>
+</div>
+[% END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ PROCESS "opac/parts/hold_status.tt2";
+ PROCESS "opac/parts/org_selector.tt2";
+ PROCESS "opac/parts/metarecord_hold_filters.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "holds"; # in this case, just for tab coloring.
+
+ hold = ctx.holds.0;
+ ahr = hold.hold.hold;
+ attrs = {marc_xml => hold.marc_xml};
+ PROCESS get_marc_attrs args=attrs;
+ hold.human_status = PROCESS get_hold_status hold=hold;
+
+ # Do this up front to avoid verbosity later
+ 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 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>
+ </div>
+ <div id="hold_editor" class="mt-4">
+ [% IF hold;
+ title = attrs.title;
+ IF ahr.hold_type == 'P';
+ title = l('[_1] ([_2])', title, hold.hold.part.label);
+ END
+ %]<div class="my-4">
+ <h1>[% title | html %]</h1>
+ <h2>[% attrs.author | html %]</h2>
+ [% IF attrs.format_icon %]<p>
+ <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" />
+ <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 %]
+ [%# 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.
+ -->
+
+ </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') %]
+ </option>
+ <option value="t"[% ahr.frozen == 't' ? ' selected="selected"' : '' %]>
+ [% 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>
+ [% END %]
+
+ <tr><td colspan='4'>
+ [% 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>
+ </form>
+ [% ELSE;
+ l('Hold not found');
+ END %]
+ </div>
+</div>
+[% END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+ myopac_page = "lists"
+ limit = ctx.bookbags_limit;
+ offset = ctx.bookbags_offset;
+ item_page = ctx.bookbags_item_page;
+ bb_publish_text = l(
+"Sharing a list means that the contents " _
+"of the list will be visible to others. " _
+"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>
+<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>
+ <table class="table" >
+ <tr>
+ <td class="list_create_table_label">
+ <label for="list_create_name">[% l('Enter the name of the new list:') %]</label>
+ </td>
+ <td class="px-3 my-2">
+ [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
+ <input id="list_create_name" type="text" name="name" class="form-control"/>
+ <input type="hidden" name="action" value="create" class="form-control" />
+ [% IF ctx.add_rec %]
+ <input type="hidden" name="add_rec" value="[% ctx.add_rec %]" class="form-control" />
+ [% END %]
+ [% IF ctx.where_from %]
+ <input type="hidden" name="where_from" value="[% ctx.where_from %]" class="form-control" />
+ [% END %]
+ </td>
+ </tr>
+ <tr>
+ <td class="list_create_table_label">
+ <label for="list_description">[% l("List description (optional):") %]</label>
+ </td>
+ <td class="px-3">
+ <textarea name="description" id="list_description" class="form-control"></textarea>
+ </td>
+ </tr>
+ <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">
+ <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>
+ </td>
+ </tr>
+ [% IF ctx.mylist.size %]
+ <tr>
+ <td class="list_create_table_label">
+ <label for="list_move_cart">[% l('Move contents of basket to this list?') %]</label>
+ </td>
+ <td>
+ <select 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>
+ </td>
+ </tr>
+ [% END %]
+ <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"/>
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ [% 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>
+ [% IF limit < ctx.bookbag_count; %]
+ <span class='float-left' style='padding-left: 10px;'>
+ [%- IF offset > 0 -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ offset => (offset - limit)
+ }) %]'><span class="nav_arrow_fix">◄</span>[% l('Previous') %]</a>
+ [%- END; -%]
+ [%- IF (offset - (limit * 3)) >= 0 -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ offset => (offset - (limit * 3))
+ }) %]'>[% ((offset - (limit * 3)) / limit) + 1 %]</a>
+ [%- END; -%]
+ [%- IF (offset - (limit * 2)) >= 0 -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ offset => (offset - (limit * 2))
+ }) %]'>[% ((offset - (limit * 2)) / limit) + 1 %]</a>
+ [%- END; -%]
+ [%- IF (offset - limit) >= 0 -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ offset => (offset - limit)
+ }) %]'>[% ((offset - limit) / limit) + 1 %]</a>
+ [%- END; -%]
+ <span class="bookbag-paginator-selected" >[% (offset / limit) + 1 %]</span>
+ [%- IF (offset + limit) < ctx.bookbag_count -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ offset => (offset + limit)
+ }) %]'>[% ((offset + limit) / limit) + 1 %]</a>
+ [%- END; -%]
+ [%- IF (offset + (limit * 2)) < ctx.bookbag_count -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ offset => (offset + (limit * 2))
+ }) %]'>[% ((offset + (limit * 2)) / limit) + 1 %]</a>
+ [%- END; -%]
+ [%- IF (offset + (limit * 3)) < ctx.bookbag_count -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ offset => (offset + (limit * 3))
+ }) %]'>[% ((offset + (limit * 3)) / limit) + 1 %]</a>
+ [%- END; -%]
+ [%- IF (ctx.bookbag_count - offset) > limit; -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ offset => (offset + limit)
+ }) %]'>[% l('Next') %]<span class="nav_arrow_fix">►</span></a>
+ </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%">
+ <div class="bookbag-controls-title-block">
+ [% baseurl = ctx.opac_root _ '/myopac/lists';
+ IF bbag.id != CGI.param("bbid");
+ url = mkurl(baseurl,{bbid => bbag.id, item_page => 1},['edit_notes','sort']);
+ ltitle = l("Show items in list");
+ ELSE;
+ 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>
+ [% IF bbag.description %]<div class="bookbag-description">[% bbag.description | html %]</div>[% END %]
+ </div>
+ </td>
+
+ <td>
+ [% IF ctx.add_rec %]
+ <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update', {}, 1) %]" method="post">
+ <div class="bookbag-controls">
+ <input type="hidden" name="action" value="add_rec" />
+ <input type="hidden" name="list" value="[% bbag.id %]" />
+ <input type="hidden" name="add_rec" value="[% ctx.add_rec %]" />
+ [% 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') %]" />
+ </div>
+ </form>
+ [% END %]
+ <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post">
+ <div class="bookbag-share">
+ <input type="hidden" name="list" value="[% bbag.id %]" />
+ [%- 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') %]" />
+ [% ELSE %]
+ <input type="hidden" name="action" value="hide" />
+ <input class="fixed btn btn-secondary btn-sm m-1" type="submit" value="[% l('Hide') %]" />
+ [% 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"/>
+ </div>
+ </form>
+ [% setting = 'opac.default_list'; %]
+ <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post">
+ <div class="bookbag-controls">
+ <input type="hidden" name="list" value="[% bbag.id %]" />
+ [%- 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') %]" />
+ [% 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') %]" />
+ [% END %]
+ </div>
+ </form>
+ [% IF ctx.is_staff %]
+ <div class="bookbag-controls">
+ <input
+ type="submit"
+ onclick='
+ var path =
+ "oils://remote/xul/server/cat/bucketz39_dialog.xul";
+ window.openDialog(
+ xulG.url_prefix(path),
+ "bucketz39_dialog",
+ "width=800,height=500",
+ "[% ctx.user.id %]",
+ "[% ctx.authtoken %]",
+ "[% ctx.user.ws_ou %]",
+ "[% bbag.id %]",
+ xulG
+ )'
+ value="[% l('Locate Z39.50 Matches') %]"
+ />
+ </div>
+ [% END %]
+ <div class="bookbag-controls">
+ [% IF bbag.pub == 't'; %]
+ <a class="btn btn-sm btn-secondary 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 %]
+ </div>
+ </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" >
+ <input type="hidden" name="list" value="[% bbag.id %]" />
+ <input type="hidden" name="sort" value="[% CGI.param('sort') | uri %]" />
+ <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 %]
+ </div>
+ [% END %]
+
+ <div>
+ <table class="table table-hover miniTable w-100 bookbagTable">
+ <thead>
+ <tr>
+ <th class="list_checkbox">
+ <input type="checkbox"
+ onclick="var inputs=document.getElementsByTagName('input');
+ for (i = 0; i < inputs.length; i++) {
+ if (inputs[i].name == 'selected_item' && !inputs[i].disabled && inputs[i].getAttribute('bbag') == [% bbag.id %])
+ inputs[i].checked = this.checked;}"/>
+
+ </th>
+ <th class="list_entry">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/lists', {sort=> (CGI.param('sort') == 'titlesort' ? 'titlesort.descending' : 'titlesort')}) %]">[% l('Title') %]</a>
+ </th>
+ <th class="list_entry">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/lists', {sort=>(CGI.param('sort') == 'authorsort' ? 'authorsort.descending' : 'authorsort')}) %]">[% l('Author(s)') %]</a>
+ </th>
+ <th class='list_entry'>
+ [% l('Local Call Number') %]
+ </th>
+ <th class="list_entry">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/lists', {sort=>(CGI.param('sort') == 'pubdate' ? 'pubdate.descending' : 'pubdate')}) %]">[% l('Publication Date') %]</a>
+ </th>
+ <th class="list_entry">
+ [% l('Format') %]
+ </th>
+ <th class="list_entry">
+ [% l('Notes') %]
+ [% IF CGI.param("edit_notes") != bbag.id %]
+ | <a href="[% mkurl(ctx.opac_root _ '/myopac/lists', {edit_notes=> bbag.id}) %]">[% l('Edit') %]</a>
+ [% END %]
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ [% UNLESS bbag.items.size %]
+ <tr><td colspan="6" class="list_is_empty">
+ [% l("This list contains no items.") %]
+ </td></tr>
+ [% END %]
+ [% FOR item IN bbag.items;
+ rec_id = item.target_biblio_record_entry.id;
+ attrs = {marc_xml => ctx.bookbags_marc_xml.$rec_id};
+ PROCESS get_marc_attrs args=attrs %]
+ <tr class="bookbag-item-row">
+ <td class="list_checkbox">
+ <input type="checkbox" name="selected_item" value="[% item.id %]" bbag='[% bbag.id %]'/>
+ </td>
+ <td class="list_entry" data-label="[% l('Title') %]">
+ <a href="[% mkurl(ctx.opac_root _ '/record/' _ rec_id, {}, ['edit_notes', 'bbid']) %]">[% attrs.title | html %]</a>
+ </td>
+ <td class="list_entry" data-label="[% l('Author(s)') %]">
+ <a href="[%-
+ authorquery = attrs.author | replace('[,\.:;]', '');
+ mkurl(ctx.opac_root _ '/results', {qtype => 'author', query => authorquery}, ['page', 'bbid', 'edit_notes'])
+ -%]">[% attrs.author | html %]</a>
+ </td>
+ <td class="list_entry" data-label="[% l('Local Call Number') %]">
+ [%
+ copy = attrs.holdings.0;
+ IF copy;
+ # only show a relevant call number
+ copy_org = ctx.get_aou_by_shortname(copy.owner);
+ FOR ctx_org IN [ctx.pref_ou, ctx.search_ou, ctx.home_ou, ctx.physical_loc];
+ NEXT UNLESS ctx_org;
+ ctx_org = ctx.get_aou(ctx_org);
+ IF ctx.org_within_scope(ctx_org, copy_org, ctx_org.ou_type.depth);
+ l('[_1] ([_2])', copy.label, copy_org.name) | html;
+ LAST;
+ END;
+ END;
+ END;
+ %]
+ </td>
+ <td class="list_entry" data-label="[% l('Publication Date') %]">
+ [% attrs.pubdate | html %]
+ </td>
+ <td class="list_entry" data-label="[% l('Format') %]">
+ [% attrs.format_label | html %]
+ </td>
+ [% IF CGI.param("edit_notes") == bbag.id %]
+ <td class="list_entry" data-label="[% l('Notes') %]">
+ [% FOR note IN item.notes %]
+ <input type="text" name="note-[% note.id %]" value="[% note.note | html %]" />
+ [% END %]
+ <input type="text" name="item-[% item.id %]" />
+ </td>
+ [% ELSE %]
+ <td class="list_entry" data-label="[% l('Notes') %]">
+ [% FOR note IN item.notes %]
+ <div>[% note.note | html %]</div>
+ [% END %]
+ </td>
+ [% END %]
+ </tr>
+ [% END %]
+ [% IF CGI.param("edit_notes") == bbag.id %]
+ <tr class="mobile_hide">
+ <td colspan="6"><!-- All space left of notes column --></td>
+ <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') %]" />
+ </td>
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ </div>
+
+
+
+ </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>
+ <div class="bbag-navigate-list-pages">
+ [%- IF item_page > 1 -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ item_page => item_page - 1
+ }) %]'><span class="nav_arrow_fix">◄</span>[% l('Previous') %]</a>
+ [%- END; -%]
+
+ [%- IF (item_page - 3) >= 1 -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ item_page => item_page - 3
+ }) %]'>[% item_page - 3 %]</a>
+ [%- END; -%]
+ [%- IF (item_page - 2) >= 1 -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ item_page => item_page - 2
+ }) %]'>[% item_page - 2 %]</a>
+ [%- END; -%]
+ [%- IF (item_page - 1) >= 1 -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ item_page => item_page - 1
+ }) %]'>[% item_page - 1%]</a>
+ [%- END; -%]
+ <span class="bookbag-paginator-selected" >[% item_page %]</span>
+ [%- IF (item_page + 1) <= ctx.bb_page_count -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ item_page => item_page + 1
+ }) %]'>[% item_page + 1 %]</a>
+ [%- END; -%]
+ [%- IF (item_page + 2) <= ctx.bb_page_count -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ item_page => item_page + 2
+ }) %]'>[% item_page + 2 %]</a>
+ [%- END; -%]
+ [%- IF (item_page + 3) <= ctx.bb_page_count -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ item_page => item_page + 3
+ }) %]'>[% item_page + 3 %]</a>
+ [%- END; -%]
+
+ [%- IF (item_page + 1) <= ctx.bb_page_count; -%]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
+ item_page => item_page + 1
+ }) %]'>[% l('Next') %]<span class="nav_arrow_fix">►</span></a>
+ [%- END; -%]
+ </div>
+ </div>
+ <div class="clear-both"></div>
+ [% END %]
+ <br/>
+
+ </form>
+ </div>
+ [% END %]
+ [% END %]
+ </div>
+ [% END %][% END %]
+</div></div>
+[% END %]
+
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/main_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
+%]
+<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 %]
+ [% 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>
+
+ <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>
+
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ <!-- Disclaimer for mobile -->
+ <span class="mobile_view cc_disclaimer"> <strong>*</strong>Items may have been renewed. </span>
+ </div>
+ [% END %]
+
+ [% 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
--- /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">
+
+ [% IF ctx.payment_response.textcode %]
+ <div class="payment-error">
+ <span title="[% ctx.payment_response.textcode %]">
+ [% ctx.payment_response.desc || ctx.payment_response.textcode %]
+ </span><br />
+ [% ctx.payment_response.note %]
+ [% ctx.payment_response.payload.error_message | html %]
+ [% ctx.payment_response.payload.message | html %]
+ </div>
+ <p>
+ [%
+ url_args = {xact => [], xact_misc => []};
+ FOR k IN ['xact', 'xact_misc'];
+ FOR val IN CGI.param(k);
+ url_args.$k.push(val);
+ END;
+ END;
+ retry_url = mkurl(ctx.opac_root _ '/myopac/main_payment_form', url_args, 1);
+ %]
+ <br/>
+
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/main', {}, 1) %]" class="btn btn-confirm">[% l('Account Home') %]</a>
+ <a href="[% retry_url %]" class="btn btn-confirm">[% l('Try Payment Again') %]</a>
+ </p>
+ [% ELSE %]
+ <p><big>[% l('Your payment has been approved.') %]</big>
+ [% IF ctx.printable_receipt.template_output;
+ print_args = [];
+ FOR p IN ctx.payment_response.payments;
+ print_args.push('payment=' _ p);
+ END %]
+ <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>
+ <hr>
+ <tt id="printable-receipt">
+ [% ctx.printable_receipt.template_output.data %]
+ <br />
+ </tt>
+ <hr>
+ [% ELSE %]
+ <div class="payment-error">
+ [% l(
+ 'Error creating 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 %]
+ <p><a href="[% ctx.opac_root %]/myopac/main" class="btn btn-confirm">[%
+ l("Back to Account Summary") %]</a></p>
+ [% END %]
+</div>
+[% END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/main_base.tt2";
+ myopac_page = "main";
+ myopac_main_page = "payment_form";
+
+ last_chance = CGI.param("last_chance");
+
+ IF myopac_main_page == "payment_form" AND
+ ctx.get_org_setting(ctx.user.home_ou.id, 'credit.processor.stripe.enabled') AND ctx.get_org_setting(ctx.user.home_ou.id, 'credit.processor.default') == 'Stripe';
+ ctx.use_stripe = 1;
+ END %]
+
+<a name="payment"> </a>
+<h3 class="sr-only">[% l('Pay Charges') %]</h3>
+[% IF ctx.fines.balance_owed <= 0 %]
+<div>
+ [% l("The minimum amount you can pay is \$0.01.") %]
+</div>
+[% ELSE %]
+[% IF ctx.use_stripe %]
+<noscript>
+ [% l("Your browser does not have Javascript enabled, and we cannot " _
+ "process credit card payments without it. Please change your " _
+ "browser settings and try again.") %]
+</noscript>
+[% END %]
+<div id="pay_fines_now"[% IF ctx.use_stripe %] class="hide_me"[% END %]>
+ [% IF last_chance %]
+
+ <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;
+ FOR val IN CGI.param(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>
+
+ <table title="[% l('List of Transactions') %]" id="acct_fines_confirm_header"
+ class="table_no_border_space table_no_cell_pad my-2">
+ <thead>
+ <tr>
+ <th>[% l('Charge/Fee') %]</th>
+ <th>[% l('Amount') %]</th>
+ </tr>
+ </thead>
+ <tbody>
+ [%
+ FOR f IN ctx.fines.circulation;
+ NEXT IF CGI.param('xact').size &&
+ !CGI.param('xact').grep(f.xact.id).size;
+ 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>
+ <td>[% attrs.title | html %]</td>
+ <td class="text-right">[% money(f.xact.balance_owed) %]</td>
+ </tr>
+ [%
+ END;
+ FOR f IN ctx.fines.grocery;
+ NEXT IF CGI.param('xact_misc').size &&
+ !CGI.param('xact_misc').grep(f.xact.id).size %]
+ <tr>
+ <td>[% f.xact.last_billing_type | html %]</td>
+ <td class="text-right">[% money(f.xact.balance_owed) %]</td>
+ </tr>
+ [% END %]
+ </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 %]
+
+ <form method="post" id="payment_form" action='#payment'
+ [% IF ctx.use_stripe %]
+ onsubmit="return stripe_onsubmit();"
+ [% END %]
+ >
+ <input type="hidden" name="last_chance" value="1" />
+ [% FOR xact IN CGI.param('xact') %]
+ <input type="hidden" name="xact" value="[% xact | html %]" />
+ [% END %]
+ [% FOR xact IN CGI.param('xact_misc') %]
+ <input type="hidden" name="xact_misc" value="[% xact | html %]" />
+ [% END %]
+ [% IF ctx.use_stripe %]
+ <input type="hidden" name="stripe_token" id="stripe_token" />
+ [% END %]
+
+ <table id="billing_info_table" class="table table-hover">
+ <thead>
+ <th colspan='2'><strong>[% l('Billing Information') %]</strong></th>
+ </thead>
+ <tbody>
+
+ <tr>
+ <td><label for="payment-first-name">[% l('First Name') %]</label></td>
+ <td><input type="text" name="billing_first" id="payment-first-name"
+ value="[% ctx.user.first_given_name | html %]" 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"
+ value="[% ctx.user.family_name | html %]" class="form-control"/></td>
+ </tr>
+
+ <tr>
+ <td><label for="payment-email-addr">[% l('Email Address') %]</label></td>
+ <td>
+
+ <input id="payment-email-addr" type="text"
+ value="[% ctx.user.email | html %]" disabled="disabled"
+ readonly="readonly" class="form-control"/>
+ <a title="[% l('Update Email Address') %]"
+ href="[% ctx.opac_root %]/myopac/update_email?return_to_referer=1">[% l("Update") %]</a>
+ </td
+ </tr>
+ <tr>
+ <td><label for="payment-billing-address">[% l('Street Address') %]</label></td>
+ <td><input type="text" name="billing_address" id="payment-billing-address"
+ value="[% ctx.user.billing_address.street1 _ ctx.user.billing_address.street2 | html %]" class="form-control"/></td>
+ </tr>
+ <tr>
+ <td><label for="payment-billing-city">[% l('City' )%]</label></td>
+ <td><input type="text" name="billing_city" id="payment-billing-city"
+ value="[% ctx.user.billing_address.city | html %]" class="form-control"/></td>
+ </tr>
+ <tr>
+ <td><label for="payment-billing-state">[% l('State or Province') %]</label></td>
+ <td><input type="text" name="billing_state" id="payment-billing-state"
+ value="[% ctx.user.billing_address.state | html %]" class="form-control" /></td>
+ </tr>
+ <tr>
+ <td><label for="paymenet-billing-zip">[% l('Postal Code') %]</label></td>
+ [% USE zip=String(ctx.user.billing_address.post_code) %]
+ <td><input type="tel" pattern="[/^[a-zA-Z0-9 _-]{7}$/]*" maxlength="7" size="7" name="billing_zip" id="paymenet-billing-zip"
+ value="[% zip.truncate(5) %]" class="form-control"/></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table id="credit_card_info_table" class="table">
+ <thead>
+ <th colspan='2'><strong>[% l('Credit Card Information') %]</strong></th>
+ </thead>
+ <tbody>
+
+ <tr>
+ <td><label for="payment-credit-card">[% l('Credit Card #') %]</label></td>
+
+ <!-- Make type tel, which prompts for numbers in mobile -->
+ <td><input class="form-control" type="tel" pattern="[0-9]*" maxlength="16" id="payment-credit-card" required
+ [% IF ctx.use_stripe %]
+ data-stripe="number"
+ [% ELSE %]
+ name="number"
+ [% END %]
+ /></td>
+ </tr>
+ <tr>
+ <td><label for="payment-security-code">[% l('Security Code') %]</label></td>
+ <td>
+ <!-- Make type tel, which prompts for numbers in mobile -->
+ <input class="form-control" type="tel" pattern="[0-9]*" size="4" maxlength="5" id="payment-security-code"
+ [% IF ctx.use_stripe %]
+ data-stripe="cvc"
+ [% ELSE %]
+ name="cvv2"
+ [% END %]
+ /></td>
+ </tr>
+ <tr>
+ <td><label for="payment-expire-month">[% l('Expiration Month') %]</label></td>
+ <td>
+ <select class="form-control" id="payment-expire-month" required
+ [% IF ctx.use_stripe %]
+ data-stripe="exp_month"
+ [% ELSE %]
+ name="expire_month"
+ [% END %]
+ >
+ <option value="-1"></option>
+ <option value="01">[% l("January (1)") %]</option>
+ <option value="02">[% l("February (2)") %]</option>
+ <option value="03">[% l("March (3)") %]</option>
+ <option value="04">[% l("April (4)") %]</option>
+ <option value="05">[% l("May (5)") %]</option>
+ <option value="06">[% l("June (6)") %]</option>
+ <option value="07">[% l("July (7)") %]</option>
+ <option value="08">[% l("August (8)") %]</option>
+ <option value="09">[% l("September (9)") %]</option>
+ <option value="10">[% l("October (10)") %]</option>
+ <option value="11">[% l("November (11)") %]</option>
+ <option value="12">[% l("December (12)") %]</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="payment-expire-year">[% l('Expiration Year') %]</label></td>
+ <td>
+ <select class="form-control" id="payment-expire-year"
+ [%- IF ctx.use_stripe %]
+ data-stripe="exp_year"
+ [% ELSE %]
+ name="expire_year"
+ [% END -%]
+ >
+ [% year = date.format(date.now, '%Y');
+ y = year;
+ WHILE y < year + 10; # show ten years starting now %]
+ <option value="[% y %]">[% y %]</option>
+ [% y = y + 1; END %]
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td colspan='2'>
+ <div id="payment_actions">
+ [% 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>
+ <br/>
+ </div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ [% INCLUDE "opac/parts/myopac/main_refund_policy.tt2" %]
+
+ [% END %]
+ </form>
+</div>
+[% END %]
+[% END %]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/main_base.tt2";
+ myopac_page = "main";
+ myopac_main_page = "payments";
+ limit = ctx.payment_history_limit;
+ offset = ctx.payment_history_offset;
+%]
+
+<h3 class="sr-only">[% l('Transaction Payments') %]</h3>
+<div class="my-3">
+ <div class="row my-2">
+ <div class="col-3 text-left">
+ <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>
+ </a>
+ </div>
+ <div class="col-6">
+ <h2 class="w-50 mx-auto">[% l('Payment History') %]</h2>
+ </div>
+ <div class="col-3 text-right">
+ <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>
+ </div>
+ </div>
+ <div class="clear-both"></div>
+
+ [% IF ctx.payments.size %]
+ <table title="[% l('Payments') %]"
+ class='table table-hover miniTable paymentTable' width='100%'>
+ <thead><tr>
+ <th>[% l('Payment Date') %]</th>
+ <th>[% l('Payment For') %]</th>
+ <th>[% l('Amount') %]</th>
+ <th>[% l('Receipt') %]</th>
+ </tr></thead>
+ <tbody>
+ [% FOR payment IN ctx.payments %]
+ <tr>
+ <td><span class="sr-only">Payment Date: </span>[% date.format(ctx.parse_datetime(payment.mp.payment_ts), DATE_FORMAT) %]</td>
+ <td>
+ <span class="sr-only">Payment For: </span>
+ [%
+ btype = payment.last_billing_type | html;
+ ptitle = payment.title | html;
+ (payment.xact_type == 'grocery') ? btype : ptitle
+ %]
+ </td>
+ <td><span class="sr-only">Amount: </span>[% money(payment.mp.amount) %]</td>
+ <td>
+ <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') %]" />
+ </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') %]" />
+ </form>
+ </td>
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ [% ELSE %]
+ <div>[% l('You have no historical payments to display.') %]</div>
+ [% END %]
+</div>
+[% END %]
--- /dev/null
+<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>
+ [% IF offset > 0 || count > limit;
+ curpage = 0;
+ WHILE curpage * limit < count;
+ IF curpage * limit == offset;
+ %]
+ [% curpage + 1 %]
+ [%- ELSE %]
+ <a href='[% mkurl('messages', {limit => limit, offset => (curpage * limit)}) %]'>[% curpage + 1 %]</a>
+ [%- 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>
+ </div>
+ <div class="clear-both"></div>
+ [% IF ctx.message_update_action.defined %]
+ [% IF ctx.message_update_changed > 0 %]
+ <div class="message-update-summary">
+ [% IF ctx.message_update_action == 'mark_read';
+ l('Marked [_1] message(s) as read.', ctx.message_update_changed);
+ ELSIF ctx.message_update_action == 'mark_unread';
+ l('Marked [_1] message(s) as unread.', ctx.message_update_changed);
+ ELSIF ctx.message_update_action == 'mark_deleted';
+ l('Deleted [_1] message(s).', ctx.message_update_changed);
+ END
+ %]
+ </div>
+ [% END %]
+ [% IF ctx.message_update_failed > 0 %]
+ <div class="message-update-summary alert">
+ [% IF ctx.message_update_action == 'mark_read';
+ l('Failed to mark [_1] message(s) as read.', ctx.message_update_failed);
+ ELSIF ctx.message_update_action == 'mark_unread';
+ l('Failed to mark [_1] message(s) as unread.', ctx.message_update_failed);
+ ELSIF ctx.message_update_action == 'mark_unread';
+ l('Failed to delete [_1] message(s).', ctx.message_update_failed);
+ END
+ %]
+ </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>
+ [% IF count < 1 %]
+ <div class="warning_box">[% l('No messages found.') %]</div>
+ [% ELSE %]
+ <table id="acct_messages_main_header" title="[% l('Messages') %]"
+ class="table table-hover miniTable messagesTable">
+ <thead>
+ <tr>
+ <th align="center" class="text-center">
+ <input type="checkbox" title="[% 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>
+ <th>[% l('Date') %]</th>
+ <th>[% l('Library') %]</th>
+ <th>[% l('Subject') %]</th>
+ <th></th>
+ </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">
+ <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)) %]/>
+ </td>
+ <td>
+ <span class="sr-only">Date of Message</span>
+ [% date.format(ctx.parse_datetime(message.create_date), DATE_FORMAT); %]
+ </td>
+ <td>
+ <span class="sr-only">Library</span>
+ [% message.library | html %]
+ </td>
+ <td>
+ <span class="sr-only">Title of Message</span>
+ <a href="[% mkurl('messages', { single => 1, message_id => message.id } ) %]">[% message.title | html %]</a>
+ </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>
+ </td>
+ </tr>
+ [% END %]