--- /dev/null
+[%
+ contains_options = [
+ {value => 'contains', label => l('Contains')},
+ {value => 'nocontains', label => l('Does not contain')},
+ {value => 'phrase', label => l('Contains phrase')},
+ {value => 'starts', label => l('Begins with phrase')}
+ {value => 'exact', label => l('Matches exactly')},
+ ];
+ contains = CGI.param('contains');
+ queries = CGI.param('query');
+ bools = CGI.param('bool');
+ qtypes = CGI.param('qtype');
+ rowcount = 3;
+
+ # scalar.merge treats the scalar as a 1-item array
+ WHILE queries.size < rowcount; queries = queries.merge(['']); END;
+ WHILE bools.size < rowcount; bools = bools.merge(['and']); END;
+ WHILE qtypes.size < rowcount; qtypes = qtypes.merge(search.default_qtypes.${qtypes.size} ? [search.default_qtypes.${qtypes.size}] : ['keyword']); END;
+
+ FOR qtype IN qtypes;
+ c = contains.shift;
+ b = bools.shift;
+ q = queries.shift; %]
+
+<!-- tag the second row so the bool column won't be hidden -->
+<tr[% IF loop.index == 1 %] id="adv_global_row"[% END %]>
+ <td align='left' width='100%'>
+
+ <!-- bool selector. hide for first row. safe to ignore first bool value in form submission -->
+ <select title="[% l('Boolean search operator') %]"
+ name='bool' style='width: auto' [% IF loop.first %] class='invisible' [% END %]>
+ <option value='and' [% b == 'and' ? 'selected="selected"' : '' %]>[% l('And') %]</option>
+ <option value='or' [% b == 'or' ? 'selected="selected"' : '' %]>[% l('Or') %]</option>
+ </select>
+
+ <!-- keyword, subject, etc. selector -->
+ <span class="qtype_selector_margin">
+ [% INCLUDE "opac/parts/qtype_selector.tt2"
+ query_type=qtype %]
+ </span>
+
+ <select title="[% l('Search phrase match strictness') %]"
+ name='contains' style='margin-right: 7px;'>
+ [% FOR o IN contains_options; -%]
+ <option value="[% o.value %]" [% c == o.value ? ' selected="selected"' : '' %]>[% o.label %]</option>
+ [% END %]
+ </select>
+ <input title="[% l('Search term') %]"
+ type='text' size='18' name='query' value="[% q | html %]" x-webkit-speech [% IF loop.index == 0 %] autofocus [% END %] />
+ <a href="javascript:;" class="row-remover"
+ title="[% l('Remove row') %]" alt="[% l('Remove row') %]"
+ onclick='return killRowIfAtLeast(2, this);'>
+ <img src="[% ctx.media_prefix %]/images/expert_row_close_btn.png"
+ alt="[% l('Remove row') %]"/>
+ </a>
+ </td>
+</tr>
+[% END %]
--- /dev/null
+[%
+
+##############################################################################
+# This file contains skin-level configuration settings.
+# Many of these settings will probably migrate into actor.org_unit_settings.
+##############################################################################
+
+##############################################################################
+# Holds blocking
+##############################################################################
+# Prevent the "Place hold" link from being displayed if a copy is available.
+# This is not perfect, given the umpteen different types of holds that are
+# possible, but addresses the major use case for libraries that don't want
+# to fetch copies from the shelves.
+ctx.holds_block.enabled = 'false';
+
+##############################################################################
+# RefWorks configuration
+##############################################################################
+# RefWorks is a Web-based citation manager
+ctx.refworks.enabled = 'false';
+
+# Base URL for RefWorks
+ctx.refworks.url = 'http://www.refworks.com';
+
+# Some sites have a hosted RefWorks instance at a different URL;
+# in addition, you might want to proxy access to RefWorks - for example:
+# ctx.refworks.url = 'http://librweb.laurentian.ca/login?url=http://refworks.scholarsportal.info';
+
+##############################################################################
+# OpenURL resolution
+##############################################################################
+# Evergreen provides the ability to point at an OpenURL resolver to find
+# electronic resources for a given ISSN or ISBN. Currently, only the SFX
+# resolver is supported.
+#
+# You must enable the open-ils.resolver instance in opensrf.xml to use
+# this feature.
+##############################################################################
+
+openurl.enabled = 'false';
+openurl.baseurl = 'http://sfx.example.com/instance';
+
+##############################################################################
+# Google Analytics support
+##############################################################################
+# You can enable Google Analytics support in Evergreen by entering a
+# valid Google Analytics code and changing 'false' to 'true'
+##############################################################################
+google_analytics.enabled = 'true';
+google_analytics.code = 'UA-9999999-99';
+
+##############################################################################
+# Enable "Forgot your password?" prompt at login
+##############################################################################
+reset_password = 'true';
+
+##############################################################################
+# Hide various options from user preferences that you might not want to expose
+# if you rely on centralized authentication via open-ils.auth_proxy, like LDAP
+#
+# Username changes can be disabled by the opac.lock_usernames OU setting.
+##############################################################################
+disable_password_change = 'false';
+disable_email_change = 'false';
+
+##############################################################################
+# Some libraries do not do notifications by phone; if not true, then this
+# hides the user preference for phone notifications as well as the phone
+# notification portion of the hold dialogue
+##############################################################################
+allow_phone_notifications = 'true';
+
+##############################################################################
+# Format of parts selection on Place Holds screen
+# Set to true to use radio buttons for parts selection on the Place Holds
+# screen. The default behavior is to to display them in a select menu.
+#############################################################################
+enable.radio.parts = 'false';
+
+##############################################################################
+# Misc. UI Settings
+##############################################################################
+# Option for full details as a default, esp. impt. for e-content
+# that uses resolver plumbing. Valid values are 'true', 'false' and 'hide'.
+# Setting this to 'true' shows full details by default but allows the link
+# to appear for 'Show Fewer Details'. The 'hide' option shows full details
+# and also suppresses the link from displaying at all.
+show_more_details.default = 'false';
+
+##############################################################################
+# Size of the jacket image to display on the record detail summary.
+# Sizes vary depending on added content provider.
+# Options are "small", "medium", and "large"
+record.summary.jacket_size = 'medium';
+
+##############################################################################
+# Define the order in which facets are displayed. Only facets listed here
+# will be displayed. To show all facets sorted by name, comment out this
+# setting.
+# facet.display = [] # show no facets
+facet.display = [
+ {facet_class => 'author', facet_order => ['personal', 'corporate']},
+ {facet_class => 'subject', facet_order => ['topic']},
+ {facet_class => 'identifier', facet_order => ['genre']},
+ {facet_class => 'series', facet_order => ['seriestitle']},
+ {facet_class => 'subject', facet_order => ['name', 'geographic']}
+];
+facet.default_display_count = 5;
+
+##############################################################################
+# Define the advanced search limiters and labels.
+# Each entry is put into a table cell.
+# adv_label is the (translated) label for the limiter
+# adv_attr is an array of possible limiters, the first one that has any
+# values will be used
+# adv_filter is the same as adv_attr, but for search filter groups
+# adv_size lets you set the height of the adv_attr or adv_filter select box.
+# if adv_size < 1, the box height is set to the number of options in it.
+# adv_break will end the current row. If specified with a label/attr it
+# will do so *after* that limiter.
+# adv_special will drop in a special entry:
+# lib_selector will put the search library box (with limit to available)
+# pub_year will put the publication year box
+# sort_selector will put the sort results selector
+# id DOM id used for linking labels to form controls. They are pinned
+# here instead of auto-generated (from the attr type, for example)
+# for consistency.
+
+search.adv_config = [
+ {adv_label => l("Item Type"), adv_attr => ["mattype", "item_type"], id => 'adv_selector_item_type'},
+ {adv_label => l("Item Form"), adv_attr => "item_form", id => 'adv_selector_item_form'},
+ {adv_label => l("Language"), adv_attr => "item_lang", id => 'adv_selector_item_lang'},
+ {adv_label => l("Audience"), adv_attr => ["audience_group", "audience"], id => 'adv_selector_audience', adv_break => 1},
+ {adv_label => l("Video Format"), adv_attr => "vr_format", id => 'adv_selector_video_format'},
+ {adv_label => l("Bib Level"), adv_attr => "bib_level", id => 'adv_selector_bib_level'},
+ {adv_label => l("Literary Form"), adv_attr => "lit_form", id => 'adv_selector_lit_form'},
+ {adv_label => l("Shelving Location"), adv_special => "copy_location", id => 'adv_copy_location_selector', js_only => 1, adv_break => 1},
+ {adv_label => l("Search Library"), adv_special => "lib_selector", id => 'adv_org_selector'},
+ {adv_label => l("Publication Year"), adv_special => "pub_year", id => 'adv_selector_pub_year'},
+ {adv_label => l("Sort Results"), adv_special => "sort_selector", id => 'adv_selector_sort_results'},
+];
+
+# Set the default height of the select boxes. Defaults to 4.
+#search.default_adv_select_height = 4;
+
+##############################################################################
+# For each search box the default "query type" value can be specified here
+# This is the actual backend value, not the label
+# Also note that including more than the row count entries won't add rows
+# The first entry should be used as a default for "basic" search as well
+
+search.default_qtypes = ['keyword','title','author'];
+
+##############################################################################
+# Basic Search Box definition
+# This allows selection of what, exactly, basic search uses for a selection
+# box. Previously it was hardcoded to use an attr box of mattype or item_type.
+#
+# type can be "attr" or "filter"
+# group is the attr or filter entries you want to check for
+# none_label is the label for the default nothing selected entry.
+
+search.basic_config = {
+ type => 'attr',
+ group => [ctx.get_cgf('opac.format_selector.attr').value, 'item_type'],
+ none_label => l("All Formats"),
+};
+
+##############################################################################
+# Show Google Book Previews
+# Set to 1 or 'true' to enable
+ctx.google_books_preview = 0;
+
+##############################################################################
+
+# Set a maintenance message to display in the catalogue
+#
+# ctx.maintenance_message = "The system will not be available February 29, 2104.";
+
+##############################################################################
+# Depth Button/Checkbox
+# Recommendation: Do not enable button for basic search without enabling the
+# checkbox for the results page
+ctx.depth_sel_checkbox = 1; # Results Page Checkbox Toggle
+ctx.depth_sel_button = 1; # Basic Search Submit Button
+ctx.depth_sel_depth = 0; # Depth to set to
+ctx.depth_sel_button_label = l('All Libraries');
+ctx.depth_sel_button_class = 'opac-button';
+ctx.depth_sel_checkbox_label = l('Show Results from All Libraries');
+ctx.depth_sel_tooltip = l('Select this option to expand your results to all libraries while retaining the priority of your selected library\'s holdings.');
+ctx.depth_sel_resultshint = l('Showing results from all libraries');
+
+##############################################################################
+# Exclude Electronic Resources Checkbox
+# One setting for both the advanced search page and the results bar.
+# Off by default; set to 1 to display.
+ctx.exclude_electronic_checkbox = 0;
+
+##############################################################################
+# Metarecords configuration
+# metarecords.disabled = 1; # disable all metarecord access points
+##############################################################################
+
+##############################################################################
+# Local date format (uses POSIX strftime() formatting)
+# See http://www.template-toolkit.org/docs/modules/Template/Plugin/Date.html
+# DATE_FORMAT = '%Y-%m-%d'; # for 2014-06-31 format
+##############################################################################
+
+##############################################################################
+# Local time format (uses POSIX strftime() formatting)
+# See http://www.template-toolkit.org/docs/modules/Template/Plugin/Date.html
+# TIME_FORMAT = '%H:%M:%S'; # for 16:32:32 (24 hour) format
+# TIME_FORMAT = '%H:%M'; # for 16:32 (24 hour) format
+##############################################################################
+
+%]
--- /dev/null
+[% PROCESS "opac/parts/header.tt2";
+ PROCESS "opac/parts/misc_util.tt2";
+ WRAPPER "opac/parts/myopac/base.tt2";
+%]
+
+<div id='myopac_summary_div' style="padding:0px;">
+
+ <div style="float:left;">
+ <div class="header_middle">[% l('Account Summary') %]</div>
+ </div>
+
+ <!-- fines summary along the right of the page -->
+ [% IF myopac_main_page == "payment_form" OR (
+ !ctx.fines.circulation.size AND !ctx.fines.grocery.size
+ ) %]
+ <div id="myopac_sum_fines_placehold"></div>
+ [% ELSE %]
+ <div id="myopac_sum_fines">
+ [% l('Fines:') %]
+ <span class='[% ctx.user_stats.fines.balance_owed ? "alert" : ""%]'>
+ [% money(ctx.user_stats.fines.balance_owed) %]
+ </span><br />
+ [% IF (ctx.fines.grocery.size OR ctx.fines.circulation.size) AND ctx.get_org_setting(ctx.user.home_ou, 'credit.payments.allow') == 1 %]
+ <form action="[% ctx.opac_root %]/myopac/main_payment_form" method="get"><input
+ type="submit" title="[% l('Pay Fines') %]"
+ value="[% l('Pay Fines') %]" class="pos-rel-top-5 opac-button" /></form>
+ [% END %]
+ </div>
+ [% END %]
+
+ <div>
+ <div id="acct_sum_block">
+ <div style="padding:10px 0px;">
+ [%- IF date.format(ctx.parse_datetime(ctx.user.expire_date), '%s') >= date.format(date.now , '%s');
+ fmt_expire_date = date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT);
+ %]
+ <span class="success">[% l("Your library card expires on [_1].", fmt_expire_date) %]</span>
+ [% END %]
+
+ [%- IF date.format(ctx.parse_datetime(ctx.user.expire_date), '%s') < date.format(date.now , '%s');
+ fmt_expire_date = date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT);
+ %]
+ <span class="alert">[% l("Your library card expired on [_1]. Please contact a librarian to resolve this issue.", fmt_expire_date) %]</span>
+ [% END %]
+ </div>
+ <table class="acct_sum_table" title="[% l('Account Summary') %]">
+ <tr>
+ <td>[% l("Account Expiration Date") %]</td>
+ <td align="right">
+ [% date.format(ctx.parse_datetime(ctx.user.expire_date), DATE_FORMAT) %]
+ </td>
+ </tr>
+ <tr>
+ <td>[% l("Items Currently Checked out ([_1])", ctx.user_stats.checkouts.total_out) %]</td>
+ <td align="right">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/circs') %]"
+ title="[% l('View My Checked Out Items') %]">
+ [% l("View All") %]
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <td>[% l('Items Currently on Hold ([_1])', ctx.user_stats.holds.total) %]</td>
+ <td align="right">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/holds') %]"
+ title="[% l('View My Holds') %]">
+ [% l('View All') %]
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <td>[% l('Items ready for pickup ([_1])', ctx.user_stats.holds.ready) %]</td>
+ <td align="right">
+ <a href="[% mkurl(ctx.opac_root _ '/myopac/holds', {available => 1}) %]"
+ title="[% l('View My Holds Ready for Pickup') %]">
+ [% l('View All') %]
+ </a>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="clear-both"></div>
+
+ <div id='fines_payments_wrapper'>
+ <div id='acct_fines_tabs'>
+ [% IF myopac_main_page == 'main' %]
+ <a href='#' class="acct-tab-on">[% l("Fines") %]</a>
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/main_payments') %]' class="acct-tab-off">[% l("Payments") %]</a>
+ [% ELSE %]
+ <a href='[% mkurl(ctx.opac_root _ '/myopac/main') %]' class="acct-tab-off">[% l("Fines") %]</a>
+ <a href='#' class="acct-tab-on">[% l("Payments") %]</a>
+ [% END %]
+ </div>
+ </div>
+ [% content %]
+</div>
+[% END %]