From 267d60fec555e6fed2342c058dcd630019e72c85 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Mon, 4 Jun 2012 15:55:50 -0400 Subject: [PATCH] kcls/kpac 2.2 initial template integration Signed-off-by: Bill Erickson --- Open-ILS/src/templates_kcls/opac/advanced.tt2 | 30 ++ Open-ILS/src/templates_kcls/opac/cnbrowse.tt2 | 21 ++ Open-ILS/src/templates_kcls/opac/home.tt2 | 16 + Open-ILS/src/templates_kcls/opac/login.tt2 | 27 ++ Open-ILS/src/templates_kcls/opac/mylist.tt2 | 20 ++ .../templates_kcls/opac/myopac/circ_history.tt2 | 106 ++++++ Open-ILS/src/templates_kcls/opac/myopac/circs.tt2 | 155 +++++++++ .../templates_kcls/opac/myopac/hold_history.tt2 | 90 ++++++ Open-ILS/src/templates_kcls/opac/myopac/holds.tt2 | 232 ++++++++++++++ .../src/templates_kcls/opac/myopac/holds/edit.tt2 | 117 +++++++ Open-ILS/src/templates_kcls/opac/myopac/lists.tt2 | 194 +++++++++++ Open-ILS/src/templates_kcls/opac/myopac/main.tt2 | 172 ++++++++++ .../src/templates_kcls/opac/myopac/main_pay.tt2 | 57 ++++ .../templates_kcls/opac/myopac/main_pay_init.tt2 | 15 + .../opac/myopac/main_payment_form.tt2 | 189 +++++++++++ .../templates_kcls/opac/myopac/main_payments.tt2 | 61 ++++ Open-ILS/src/templates_kcls/opac/myopac/prefs.tt2 | 356 +++++++++++++++++++++ .../templates_kcls/opac/myopac/prefs_notify.tt2 | 128 ++++++++ .../templates_kcls/opac/myopac/prefs_settings.tt2 | 100 ++++++ .../templates_kcls/opac/myopac/receipt_email.tt2 | 21 ++ .../templates_kcls/opac/myopac/receipt_print.tt2 | 25 ++ .../templates_kcls/opac/myopac/update_email.tt2 | 24 ++ .../templates_kcls/opac/myopac/update_password.tt2 | 33 ++ .../templates_kcls/opac/myopac/update_username.tt2 | 29 ++ .../templates_kcls/opac/parts/advanced/expert.tt2 | 29 ++ .../opac/parts/advanced/global_row.tt2 | 52 +++ .../templates_kcls/opac/parts/advanced/numeric.tt2 | 28 ++ .../templates_kcls/opac/parts/advanced/search.tt2 | 203 ++++++++++++ .../src/templates_kcls/opac/parts/anon_list.tt2 | 65 ++++ Open-ILS/src/templates_kcls/opac/parts/banner.tt2 | 0 Open-ILS/src/templates_kcls/opac/parts/base.tt2 | 22 ++ .../src/templates_kcls/opac/parts/chilifresh.tt2 | 20 ++ .../opac/parts/coded_value_selector.tt2 | 32 ++ Open-ILS/src/templates_kcls/opac/parts/config.tt2 | 71 ++++ .../src/templates_kcls/opac/parts/filtersort.tt2 | 16 + Open-ILS/src/templates_kcls/opac/parts/footer.tt2 | 10 + .../templates_kcls/opac/parts/goog_analytics.tt2 | 14 + Open-ILS/src/templates_kcls/opac/parts/header.tt2 | 73 +++++ .../opac/parts/hold_error_messages.tt2 | 39 +++ .../src/templates_kcls/opac/parts/hold_status.tt2 | 31 ++ .../src/templates_kcls/opac/parts/homesearch.tt2 | 96 ++++++ Open-ILS/src/templates_kcls/opac/parts/js.tt2 | 41 +++ .../src/templates_kcls/opac/parts/login/form.tt2 | 154 +++++++++ .../src/templates_kcls/opac/parts/login/help.tt2 | 12 + .../opac/parts/login/password_hint.tt2 | 5 + .../src/templates_kcls/opac/parts/misc_util.tt2 | 99 ++++++ .../src/templates_kcls/opac/parts/myopac/base.tt2 | 37 +++ .../templates_kcls/opac/parts/myopac/main_base.tt2 | 102 ++++++ .../opac/parts/myopac/main_refund_policy.tt2 | 27 ++ .../opac/parts/myopac/prefs_base.tt2 | 60 ++++ .../opac/parts/myopac/prefs_hints.tt2 | 4 + .../src/templates_kcls/opac/parts/org_selector.tt2 | 34 ++ .../src/templates_kcls/opac/parts/place_hold.tt2 | 81 +++++ .../opac/parts/place_hold_result.tt2 | 113 +++++++ .../src/templates_kcls/opac/parts/printnav.tt2 | 25 ++ .../templates_kcls/opac/parts/qtype_selector.tt2 | 17 + .../templates_kcls/opac/parts/record/authors.tt2 | 51 +++ .../templates_kcls/opac/parts/record/awards.tt2 | 32 ++ .../src/templates_kcls/opac/parts/record/body.tt2 | 56 ++++ .../opac/parts/record/cn_details.tt2 | 91 ++++++ .../templates_kcls/opac/parts/record/cnbrowse.tt2 | 61 ++++ .../templates_kcls/opac/parts/record/copyinfo.tt2 | 68 ++++ .../templates_kcls/opac/parts/record/extras.tt2 | 78 +++++ .../templates_kcls/opac/parts/record/issues.tt2 | 67 ++++ .../templates_kcls/opac/parts/record/series.tt2 | 16 + .../templates_kcls/opac/parts/record/subjects.tt2 | 70 ++++ .../templates_kcls/opac/parts/record/summary.tt2 | 256 +++++++++++++++ .../opac/parts/record/summaryplus.tt2 | 19 ++ .../templates_kcls/opac/parts/result/facets.tt2 | 129 ++++++++ .../templates_kcls/opac/parts/result/lowhits.tt2 | 94 ++++++ .../opac/parts/result/lowhits_purchase.tt2 | 6 + .../templates_kcls/opac/parts/result/paginate.tt2 | 59 ++++ .../src/templates_kcls/opac/parts/result/table.tt2 | 217 +++++++++++++ .../src/templates_kcls/opac/parts/searchbar.tt2 | 78 +++++ Open-ILS/src/templates_kcls/opac/parts/tips.tt2 | 11 + Open-ILS/src/templates_kcls/opac/parts/topnav.tt2 | 107 +++++++ .../src/templates_kcls/opac/parts/topnav_links.tt2 | 13 + .../src/templates_kcls/opac/parts/topnav_logo.tt2 | 2 + .../src/templates_kcls/opac/password_reset.tt2 | 72 +++++ Open-ILS/src/templates_kcls/opac/place_hold.tt2 | 20 ++ Open-ILS/src/templates_kcls/opac/record.tt2 | 15 + Open-ILS/src/templates_kcls/opac/results.tt2 | 83 +++++ 82 files changed, 5601 insertions(+) create mode 100644 Open-ILS/src/templates_kcls/opac/advanced.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/cnbrowse.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/home.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/login.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/mylist.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/circ_history.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/circs.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/hold_history.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/holds.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/holds/edit.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/lists.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/main.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/main_pay.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/main_pay_init.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/main_payment_form.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/main_payments.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/prefs.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/prefs_notify.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/prefs_settings.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/receipt_email.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/receipt_print.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/update_email.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/update_password.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/myopac/update_username.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/advanced/expert.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/advanced/global_row.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/advanced/numeric.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/advanced/search.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/anon_list.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/banner.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/base.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/chilifresh.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/coded_value_selector.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/config.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/filtersort.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/footer.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/goog_analytics.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/header.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/hold_error_messages.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/hold_status.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/homesearch.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/js.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/login/form.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/login/help.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/login/password_hint.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/misc_util.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/myopac/base.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/myopac/main_base.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/myopac/main_refund_policy.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/myopac/prefs_base.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/myopac/prefs_hints.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/org_selector.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/place_hold.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/place_hold_result.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/printnav.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/qtype_selector.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/authors.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/awards.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/body.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/cn_details.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/cnbrowse.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/copyinfo.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/extras.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/issues.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/series.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/subjects.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/summary.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/record/summaryplus.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/result/facets.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/result/lowhits.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/result/lowhits_purchase.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/result/paginate.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/result/table.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/searchbar.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/tips.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/topnav.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/topnav_links.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/parts/topnav_logo.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/password_reset.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/place_hold.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/record.tt2 create mode 100644 Open-ILS/src/templates_kcls/opac/results.tt2 diff --git a/Open-ILS/src/templates_kcls/opac/advanced.tt2 b/Open-ILS/src/templates_kcls/opac/advanced.tt2 new file mode 100644 index 0000000000..23066bf72e --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/advanced.tt2 @@ -0,0 +1,30 @@ +[% 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" %] +
+ [% INCLUDE "opac/parts/printnav.tt2" %] +
+
+ + + +
+
+
+
+
+
+ [% 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 %] +
+
+
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/cnbrowse.tt2 b/Open-ILS/src/templates_kcls/opac/cnbrowse.tt2 new file mode 100644 index 0000000000..6e0ad0bb18 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/cnbrowse.tt2 @@ -0,0 +1,21 @@ +[% # 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"; + WRAPPER "opac/parts/base.tt2"; + INCLUDE "opac/parts/topnav.tt2"; + ctx.page_title = l("Call Number Browse"); %] +
+ [% INCLUDE "opac/parts/printnav.tt2" %] + [% INCLUDE "opac/parts/searchbar.tt2" %] +
+
+
+
+ [% INCLUDE "opac/parts/record/cnbrowse.tt2" %] +
+
+
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/home.tt2 b/Open-ILS/src/templates_kcls/opac/home.tt2 new file mode 100644 index 0000000000..fa64e65503 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/home.tt2 @@ -0,0 +1,16 @@ +[% PROCESS "opac/parts/header.tt2"; + WRAPPER "opac/parts/base.tt2"; + INCLUDE "opac/parts/topnav.tt2"; + ctx.page_title = l("Home") %] +
+ [% INCLUDE "opac/parts/printnav.tt2" %] + [% INCLUDE "opac/parts/searchbar.tt2" %] +
+
+
+
+ [% INCLUDE "opac/parts/homesearch.tt2" %] +
+
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/login.tt2 b/Open-ILS/src/templates_kcls/opac/login.tt2 new file mode 100644 index 0000000000..b5741e2c92 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/login.tt2 @@ -0,0 +1,27 @@ +[% PROCESS "opac/parts/header.tt2"; + WRAPPER "opac/parts/base.tt2"; + INCLUDE "opac/parts/topnav.tt2"; + ctx.page_title = l("Account Login") %] +
+ [% INCLUDE "opac/parts/printnav.tt2" %] + [% INCLUDE "opac/parts/searchbar.tt2" %] +
+
+
+ [% INCLUDE "opac/parts/login/form.tt2" %] +
+ +
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/mylist.tt2 b/Open-ILS/src/templates_kcls/opac/mylist.tt2 new file mode 100644 index 0000000000..ac24efd385 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/mylist.tt2 @@ -0,0 +1,20 @@ +[% 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("Record Detail") %] +
+ [% INCLUDE "opac/parts/printnav.tt2" %] + [% INCLUDE "opac/parts/searchbar.tt2" %] +
+
+
+ [% IF ctx.mylist.size; + INCLUDE "opac/parts/anon_list.tt2"; + ELSE %] +
[% l("You have not created a list yet."); %]
+ [% END %] +
+
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/circ_history.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/circ_history.tt2 new file mode 100644 index 0000000000..47d1a4a1ea --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/circ_history.tt2 @@ -0,0 +1,106 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "circs" + limit = ctx.circ_history_limit; + offset = ctx.circ_history_offset; +%] + +
+ +
+
+ +
+
+ +
+
+
+ +
+ [% l('Previously Checked Out Items') %] + + + [%# TODO: get total to prevent paging off then end of the list.. %] + + + + [% l('Export List') %] + +
+
+ + [% IF ctx.circs.size < 1 %] +
+ [% l('There are no items in your circulation history.') %] +
+ [% ELSE %] + +
+ + + + + + + + + + + + + [% FOR circ IN ctx.circs; + attrs = {marc_xml => circ.marc_xml}; + PROCESS get_marc_attrs args=attrs; %] + + + + + + + + + [% END %] + +
+ [% l('Title') %] / + [% l('Author') %] + + [% l('Checkout Date') %] + + [% l('Due Date') %] + + [% l('Date Returned') %] + + [% l('Barcode') %] + + [% l('Call Number') %] +
+ [% attrs.title | html %] + [% IF attrs.author %] / + [% attrs.author | html %] + [% END %] + + [% date.format(ctx.parse_datetime(circ.circ.xact_start),DATE_FORMAT); %] + + [% date.format(ctx.parse_datetime(circ.circ.due_date),DATE_FORMAT); %] + + [% + IF circ.circ.checkin_time; + IF circ.circ.stop_fines == 'RENEW'; + l('renewed'); + ELSE; + date.format(ctx.parse_datetime(circ.circ.checkin_time),DATE_FORMAT); + END; + ELSE; %] + * + [% END; %] + [% circ.circ.target_copy.barcode | html %][% circ.circ.target_copy.call_number.label | html %]
+
+ [% END %] +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/circs.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/circs.tt2 new file mode 100644 index 0000000000..a079f8395f --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/circs.tt2 @@ -0,0 +1,155 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "circs" %] +
+ +
+
+ +
+
+ +
+
+
+ +
+ [% l('Current Items Checked Out') %] + + [% l('Export List') %] + +
+
+ [% IF ctx.circs.size < 1 %] +
+ [% l('You have no items checked out.') %] +
+ [% ELSE %] + [% IF ctx.success_renewals %] +
+ [% l("Successfully renewed [_1] item(s)", ctx.success_renewals) %] +
+ [% END %] + [% IF ctx.failed_renewals %] +
+ [% l("Failed to renew [_1] item(s)", ctx.failed_renewals) %] +
+ [% END %] +
+
+
+ + +
+ + + + + + + + + +
+ + + + Title + / + + Author + + + Renews
Left +
+
+ Due Date + + barcode + + call number +
+ +
+
+ + [% FOR circ IN ctx.circs; + attrs = {marc_xml => circ.marc_xml}; + PROCESS get_marc_attrs args=attrs; %] + + + + + [% + due_date = ctx.parse_datetime(circ.circ.due_date); + due_class = (date.now > date.format(due_date, '%s')) ? 'error' : ''; + %] + + + + + [% IF circ.renewal_response AND + circ.renewal_response.textcode != 'SUCCESS' %] + + + + [% END; + END %] +
+ + + [% attrs.title | html %] + [% IF attrs.author %] / + [% attrs.author | html %] + [% END %] + + [% circ.circ.renewal_remaining %] + + [% date.format(due_date, DATE_FORMAT) %] + + [% circ.circ.target_copy.barcode | html %] + + [% circ.circ.target_copy.call_number.label | html %] +
[%# XXX colspan="0" does not work in IE %] + + [% (circ.renewal_response.desc || circ.renewal_response.payload.fail_part || circ.renewal_response.textcode) | html %] + +
+
+
+
+
+ [% END %] +
+
+
[% l("Other Circulations") %]
+ + + + + + + + + + + + +
[% l("Circulating Library") %][% l("Circulation Type") %][% l("Please return by ...") %]
+ + +
+
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/hold_history.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/hold_history.tt2 new file mode 100644 index 0000000000..548cf3ea52 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/hold_history.tt2 @@ -0,0 +1,90 @@ +[% 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; +%] + +
+ +
+
+ +
+
+ +
+
+
+ +
+ [% l("Previously Held Items") %] + + + [%# TODO: get total to prevent paging off then end of the list.. %] + + + + Export List + +
+
+ +
+ [% IF ctx.holds.size < 1 %] +
+ [% l('No holds found.') %] +
+ [% ELSE %] + + + + + + + + + + + + [% FOR hold IN ctx.holds; + attrs = {marc_xml => hold.marc_xml}; + PROCESS get_marc_attrs args=attrs; + ahr = hold.hold.hold %] + + + + + + + + + + [% END %] + +
[% l('Title') %][% l('Author') %][% l('Format') %][% l('Date Placed') %][% l('Pickup Location') %]
+ + + + +
+ [% IF attrs.format_icon %] + [% attrs.format_label | html %] + [% END %] +
+
+ [% date.format(ctx.parse_datetime(ahr.request_time), DATE_FORMAT) %] + + [% ctx.get_aou(ahr.pickup_lib).name | html %] +
+ [% END %] +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/holds.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/holds.tt2 new file mode 100644 index 0000000000..807f22d1c8 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/holds.tt2 @@ -0,0 +1,232 @@ +[% 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" %] +
+ +
+
+ +
+
+ +
+
+
+ +
+ + [% IF CGI.param("available"); + l("Items Ready for Pickup"); + ELSE; + l("Current Items on Hold"); + END + %] + + + Export List + +
+
+
+
+ + + + + + + + +
+ + + + + Holds Help + + [% 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; + %] +
+ [% l("Show") %]     + [% IF CGI.param("available") %] + [% l('all') %] | + [% l("only available") %] + [% ELSE %] + [% l("all") %] | + [% l("only available") %] + [% END %]     + [% l("holds") %] + +
+ [% IF ctx.holds.size < 1 %] +
+ [% l('No holds found.') %] +
+ [% ELSE %] + + + + + + + + + + + + +
+ + + + Title + + + Author + + Format + + Pickup Location + ActivateCancel if not
filled by
Active + Status +
+
+ +
+ + + + [% FOR hold IN ctx.holds; + attrs = {marc_xml => hold.marc_xml}; + PROCESS get_marc_attrs args=attrs; + ahr = hold.hold.hold %] + + + + + + + + + + + + + [% END %] + +
+ + + + + + +
+ [% IF attrs.format_icon %] + [% attrs.format_label | html %] + [% END %] +
+
+ [% ctx.get_aou(ahr.pickup_lib).name | html %] + + + [% IF ahr.frozen == 't' AND + ahr.thaw_date; + date.format(ctx.parse_datetime(ahr.thaw_date), DATE_FORMAT); + END %] + + + [% IF ahr.expire_time; + date.format(ctx.parse_datetime(ahr.expire_time), DATE_FORMAT); + END %] + + + [% l(ahr.frozen == 'f' ? 'Active' : 'Suspended') %] + +
+ [% PROCESS get_hold_status hold=hold; %] +
+
+ Edit +
+ [% END %] +
+
+ + [% l("Are you sure you wish to cancel the selected holds?") %] + [% l("Are you sure you wish to suspend the selected holds? If an item has already been selected to fulfill the hold, it will not be suspended") %] + [% l("Are you sure you wish to activate the selected holds?") %] + [% l("Are you sure you wish to change the activate date for the selected holds?") %] + [% l("Select an automatic activation date. If no date is chosen, the holds will remain suspended until they are manually activated.") %] + + + +
[% l("Processing holds... This may take a moment.") %]
+ + + [% l("If you wish to cancel the selected hold, click OK, otherwise click Cancel.") %] + +
+
+
+ [% l("Select an automatic activation date. If no date is chosen, the holds will remain suspended until they are manually activated.") %] +
+

+ +

+

+ +

+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/holds/edit.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/holds/edit.tt2 new file mode 100644 index 0000000000..ae91431bf8 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/holds/edit.tt2 @@ -0,0 +1,117 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + PROCESS "opac/parts/hold_status.tt2"; + PROCESS "opac/parts/org_selector.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) : ''; +%] +
+
+ [% l('Editing Hold') %] +         + [% l('List all holds') %] +
+
+ [% IF hold %] +

[% attrs.title | html %]

+

[% attrs.author | html %]

+ [% IF attrs.format_icon %]

+ [% l('Format:') %] + [% attrs.format_label | html %] +

[% END %] +

+ [% l('Status') %]: [% hold.human_status %] +

+
+ + + + + + [% IF hold.hold.status < 3 %] + [%# The following actions cannot be performed on holds that + have already been captured... %] + + + + + + + + + + + + + + + [% END %] + + + + +
+ + + [% l('Pickup library') %] + + [% PROCESS build_org_selector + name='pickup_lib' value=ahr.pickup_lib can_have_vols_only=1 hold_pickup_lib=1 %] +
+ [% l('Cancel unless filled by') %] + + + + [% l('Enter date in MM/DD/YYYY format') %] + +
+ [% l('Active?') %] + + +
+ [% l('If suspended, activate on') %] + + + + [% l('Enter date in MM/DD/YYYY format') %] +
+ [% l('Cancel') %] + + +
+
+ [% ELSE; + l('Hold not found'); + END %] +
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/lists.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/lists.tt2 new file mode 100644 index 0000000000..32299a12fb --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/lists.tt2 @@ -0,0 +1,194 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "lists" %] +
+ + +
+ + + +
+

[% l('Create new list') %]

+ + + + + + +
+ + + + + + + [% l('Sharing Help') %] + + +       + [% l('Cancel') %] +
+
+ + [% INCLUDE "opac/parts/anon_list.tt2" %] + [% IF ctx.bookbags.size %] +
+ [% FOR bbag IN ctx.bookbags %] +
+
+
+
+ + [% IF bbag.pub != 't' %] + + + [% ELSE %] + + + [% END %] +
+
+
+
+ + + +
+
+
+ + [% IF bbag.pub == 't' %] + [% url = 'http://' _ ctx.hostname _ '/opac/extras/feed/bookbag/html-full/' _ bbag.id %] + [% bbag.name | html %] + [% ELSE %] + [% bbag.name | html %] + [% END %] + +
+
+ [% IF bbag.pub == 't'; %] + [% l('RSS Feed') %] + [% END %] +
+
+
+
+ + + + + + + + + + + + [% UNLESS bbag.items.size %] + + [% END %] + [% FOR item IN bbag.items; + rec_id = item.target_biblio_record_entry; + attrs = {marc_xml => ctx.bookbags_marc_xml.$rec_id}; + PROCESS get_marc_attrs args=attrs %] + + + + + + [% END %] + +
+ + + [% l('Title') %][% l('Author(s)') %] + + +
+ [% l("This list contains no items.") %] +
+ + + [% attrs.title | html %] + + [% attrs.author | html %] +
+
+

+
+ [% END %] +
+ [% END %] + +
+ [% l("This will remove the selected bookbag and all items contained within the bookbag. Are you sure you wish to continue?") %] +
+
[% l("You have not created any bookbags") %]
+
+ +
+ +[% |l %]Sharing a Bookbag means that the contents +of the Bookbag will be visible to others. +To see the public view of a shared Bookbag, +click on the Bookbag's name in the Bookbag list.[% END %] + + + [% l("Are you sure you wish to remove this bookbag item?") %] + + + [% l("Sharing this bookbag will allow the contents of the bookbag to be seen by others. Are you sure you wish to share this bookbag?") %] + + + [% l("Are you sure you wish to hide this bookbag?") %] + + + [% l("The Bookbag was successfully updated.") %] + + + [% l("Warning: Adding items to a bookbag creates a link between you and the items in the database. The contents of the bookbag are NOT publicly viewable unless the bookbag is shared. However, if you prefer not to have any link between your patron record and a particular item or items, we suggest that you do not place said items in a bookbag or that you avoid using bookbags all together. Thank you.") %] + + + [% l("Bookbags are...") %] + + + [% l("Bookbag successfully updated") %] + + +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/main.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/main.tt2 new file mode 100644 index 0000000000..363ffeb167 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/main.tt2 @@ -0,0 +1,172 @@ +[% 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"; +%] +
+ [% IF ctx.fines.circulation.size > 0 %] +
+ + + + + + + + + + + + + + + + + [% FOR f IN ctx.fines.circulation; + NEXT IF f.xact.balance_owed < 0; # XXX middle layer + 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 %] + + + + + + + + + + [% END %] + +
+ [% l("Fines") %] +
[% l("Title") %][% l("Author") %][% l("Checkout Date") %][% l("Due Date") %][% l("Date Returned") %][% l("Balance Owed") %] + + +
+ [% recid = f.xact.circulation.target_copy.call_number.record.id || f.xact.reservation.target_resource_type.record.id; + IF recid; %] + [% attrs.title | html %] + [% ELSE %] + [% attrs.title | html %] + [% END %] + + [% attrs.author | html %] + + [% ts = f.xact.circulation.xact_start || f.xact.reservation.start_time || 0; + IF ts; + date.format(ctx.parse_datetime(ts), DATE_FORMAT); + END %] + + [% ts = f.xact.circulation.due_date || f.xact.reservation.end_time || 0; + IF ts; + date.format(ctx.parse_datetime(ts), DATE_FORMAT); + END %] + + [% ts = f.xact.circulation.checkin_time || f.xact.reservation.return_time || 0; + IF ts; + date.format(ctx.parse_datetime(ts), DATE_FORMAT); + ELSE %] + + [% l('(fines accruing)') %] + [% END %] + + + [% money(f.xact.balance_owed) %] + + + +
+
+ [% END %] + + [% IF ctx.fines.grocery.size > 0 %] + +
+
+
+
+ + + + + + + + + + + + + + + + + [% FOR f IN ctx.fines.grocery %] + [% NEXT IF f.xact.balance_owed < 0 %] + + + + + + + + + + [% END %] + +
+ [% l("Other Fees") %] +
[% l("Transaction Start Time") %][% l("Last Payment Time") %][% l("Initial Amount Owed") %][% l("Total Amount Paid") %][% l("Balance Owed") %][% l("Billing Type") %] + + +
[% date.format( + ctx.parse_datetime(f.xact.xact_start), + DATE_FORMAT + ) %] + [% IF f.xact.last_payment_ts; + date.format( + ctx.parse_datetime( + f.xact.last_payment_ts + ), DATE_FORMAT + ); + END %] + [% money(f.xact.total_owed) %][% money(f.xact.total_paid) %] + + [% money(f.xact.balance_owed) %] + + [% f.xact.last_billing_type %] + +
+
+ [% END %] + [% UNLESS ctx.fines.grocery.size OR ctx.fines.circulation.size %] +
[% l('You have no current fines.') %]
+ [% ELSE %] +
+ +
+ [% END %] +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/main_pay.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/main_pay.tt2 new file mode 100644 index 0000000000..e02d956511 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/main_pay.tt2 @@ -0,0 +1,57 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "main"; + myopac_main_page = "pay" %] +
+ + [% IF ctx.payment_response.textcode %] +
+ + [% ctx.payment_response.desc || ctx.payment_response.textcode %] +
+ [% ctx.payment_response.note %] + [% ctx.payment_response.payload.error_message %] +
+

+ [% + 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); + %] +
+ [% l('Go back') %] + [% l('to try again or to cancel this payment attempt.') %] +

+ [% ELSE %] +

[% l('Your payment has been approved.') %]

+ [% IF ctx.printable_receipt.template_output; + print_args = []; + FOR p IN ctx.payment_response.payments; + print_args.push('payment=' _ p); + END %] +

[ [% l('Print receipt') %] ]

+ + [% ctx.printable_receipt.template_output.data %] + + [% ELSE %] +
+ [% 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 %] +
+ [% END %] +

[ [% + l("Back to Account Summary") %] ]

+ [% END %] +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/main_pay_init.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/main_pay_init.tt2 new file mode 100644 index 0000000000..835571070f --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/main_pay_init.tt2 @@ -0,0 +1,15 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "main"; + myopac_main_page = "pay" %] +
+ +
+ [% l('Processing...') %]

+ [% l('Processing your payment may take some time.') %]
+ [% l("Please do not Refresh or use your browser's Back button or your credit card may be charged more than once.") %]
+
+ +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/main_payment_form.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/main_payment_form.tt2 new file mode 100644 index 0000000000..60907a0745 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/main_payment_form.tt2 @@ -0,0 +1,189 @@ +[% 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 ctx.fines.balance_owed <= 0 %] +
+ [% l("You either have no fines to pay or you have selected fines whose " _ + "total is non-positive. We cannot process non-positive amounts.") %] +
+[% ELSE %] +
+ [% IF last_chance %] +

[% l("Are you sure you are ready to charge [_1] to your credit card?", money(ctx.fines.balance_owed)) %]

+
+ [% FOR k IN CGI.Vars; + NEXT UNLESS k; + FOR val IN CGI.param(k) %] + + [% END; END %] + + [% l('Cancel') %] + [% ELSE %] + + + [% FOR xact IN CGI.param('xact') %] + + [% END %] + [% FOR xact IN CGI.param('xact_misc') %] + + [% END %] + +
+

[% l('KCLS only accepts Visa or MasterCard') %]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [% INCLUDE "opac/parts/myopac/main_refund_policy.tt2" %] + +
[% l('Billing Information') %] +

[% l('Selected fines you are paying for:') %]

+ + + + + + + + + [% + 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 %] + + + + + [% + END; + FOR f IN ctx.fines.grocery; + NEXT IF CGI.param('xact_misc').size && + !CGI.param('xact_misc').grep(f.xact.id).size %] + + + + + [% END %] + +
[% l('Name') %][% l('Amount') %]
[% attrs.title | html %][% money(f.xact.balance_owed) %]
[% f.xact.last_billing_type | html %][% money(f.xact.balance_owed) %]
+
+
+ [% l('Total amount to pay:') %] + [% money(ctx.fines.balance_owed) %] +
+
+ [% | l('', '') %]Click [_1]Cancel[_2] to go back and (un)select other fines.[% END %] +
[% l('First Name') %]
[% l('Last Name') %]
[% l('Email Address') %] + + [% l("Update") %] +
[% l('Street Address') %]
[% l('City' )%]
[% l('State or Province') %]
[% l('ZIP or Postal Code') %]
[% l('Credit Card Information') %]
[% l('Credit Card #') %]
[% l('Security Code') %] + +
[% l('Exipration Month') %] + +
[% l('Expiration Year') %] + +
+ + [% l('Cancel') %] +
+ [% END %] +
+
+ +[% END %] +[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/main_payments.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/main_payments.tt2 new file mode 100644 index 0000000000..b191839981 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/main_payments.tt2 @@ -0,0 +1,61 @@ +[% 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; +%] + +
+
+ [% l('Payments History') %] + + + [%# TODO: get total to prevent paging off then end of the list.. %] + + +
+
+ + [% IF ctx.payments.size %] + + + + + + + + + [% FOR payment IN ctx.payments %] + + + + + + + [% END %] + +
[% l('Payment Date') %][% l('Payment For') %][% l('Amount') %][% l('Receipt') %]
[% date.format(ctx.parse_datetime(payment.mp.payment_ts), DATE_FORMAT) %][% + btype = payment.last_billing_type | html; + ptitle = payment.title | html; + (payment.xact_type == 'grocery') ? btype : ptitle + %][% money(payment.mp.amount) %] + [% IF payment.mp.payment_type == 'credit_card_payment' %] +
+ + +
+
+ + +
+ [% END %] +
+ [% ELSE %] +
[% l('You have no historical payments to display.') %]
+ [% END %] +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/prefs.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/prefs.tt2 new file mode 100644 index 0000000000..2db15e591d --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/prefs.tt2 @@ -0,0 +1,356 @@ +[% PROCESS "opac/parts/header.tt2"; + WRAPPER "opac/parts/myopac/prefs_base.tt2"; + myopac_page = "prefs"; + prefs_page = 'personal' %] + +
+
+ + + + + + +
+ [% l("Your account expired on") %] + ! + [% l("Please see a librarian to renew your account.") %]
+
+ +
+ + + + + + + + + + + + +
+ [% l("* Staff Notes *") %]
:

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [% IF ctx.user.ident_value %] + + + + + [% END %] + + + + + + + + + + + + + + + + + + + + + + + +
[% l("Name") %][% l( + HUMAN_NAME_FORMAT, + ctx.user.prefix, ctx.user.first_given_name, + ctx.user.second_given_name, ctx.user.family_name, + ctx.user.suffix + ) | html %]
+ [% l("Day Phone") %][% ctx.user.day_phone | html %][% l("Change") %]
+ + Enter New [% l("Day Phone") %]: + + + + + + + + + +
+ [% l("Evening Phone") %][% ctx.user.evening_phone | html %][% l("Change") %]
New + [% l("Evening Phone") %]: + + + +
+ [% l("Other Phone") %][% ctx.user.other_phone | html %][% l("Change") %]
Enter + New [% l("Other Phone") %]: + + + +
+
+
+ Username Help +
+
[% l("Username") %] +
[% ctx.user.usrname | html %][% l("Change") %]
[% l("Password") %][% l("(not shown)") %][% l("Change") %]
[% l("Email Address") %][% ctx.user.email | html %][% l('Change') %]
+ [% l("Primary Identification") %] + [% + # l('[_1] ([_2])', ctx.user.ident_value, ctx.user.ident_type.name) | html + # XXX uncomment the above line to show primary + # identification. With a minor tweak it could + # alternatively be shown but partially obscured. + %] +
+ [% l("Active Barcode") %][% ctx.user.card.barcode %]
+ [% l("Home Library") %][% ctx.user.home_ou.name | html %][% l("Change") %]
+ + New home library: + + + + + + + +
+ [% l("Account Creation Date") %] +

+
+
+ + + + + + + + + + [% + # cycle through the non-pending address. For each non-pending addr + # that has a corresponding pending addr, render the pending addr + # along the right inside it's own edit form + pending = {}; + regular = []; + edit_addr_id = CGI.param('edit_address'); + FOR addr IN ctx.user.addresses; + IF addr.pending == 't'; + replaces = addr.replaces; + pending.$replaces = addr; + ELSE; + regular.push(addr); + END; + END; + FOR addr IN regular; + cur_id = addr.id; + pending_addr = pending.$cur_id; + %] + + + + + [% IF pending_addr OR edit_addr_id == cur_id; + update_addr = pending_addr || addr %] + + [% END %] + + [% END %] + +
[% l("Addresses") %][% l("Pending Addresses") %]
+ + + + + + + + + + + [% IF ctx.get_org_setting(ctx.user.home_ou.id, 'opac.allow_pending_address') + AND !pending_addr AND edit_addr_id != cur_id %] + + + + [% END %] +
[% l("Address Type") %][% addr.address_type | html %]
[% l("Street") %][% addr.street1 | html %]
[% l("Street") %][% addr.street2 | html %]
[% l("City") %][% addr.city | html %]
[% l("County") %][% addr.county| html %]
[% l("State") %][% addr.state | html %]
[% l("Country") %][% addr.country | html %]
[% l("Zip") %][% addr.post_code | html %]
+ [% l('Edit Address') %] +
+
+
+ [% IF pending_addr %] + + [% ELSE %] + + [% END %] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[% l("Address Type") %]
[% l("Street") %]
[% l("Street") %]
[% l("City") %]
[% l("County") %]
[% l("State") %] +
[% l("Country") %]
[% l("Zip") %]
+ [% IF pending_addr; + url = mkurl('', {delete_pending => pending_addr.id}, 1); + ELSE; + url = mkurl('', {}, 1); + END %] + [% l('Discard Pending Address') %] +
[% l('Address changes will be verified by staff') %]
+
+
+
+ +[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/prefs_notify.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/prefs_notify.tt2 new file mode 100644 index 0000000000..91a3ce55a2 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/prefs_notify.tt2 @@ -0,0 +1,128 @@ +[% PROCESS "opac/parts/header.tt2"; + WRAPPER "opac/parts/myopac/prefs_base.tt2"; + myopac_page = "prefs_notify"; + prefs_page = 'notify' %] + + +
+ +
+ +
+ + + + + + + + [% IF optin.size == 0 %] + [% l('No notification preferences are configured') %] + [% END %] + [% FOR optin IN ctx.opt_in_settings %] + + + + + [% END %] + +
[% l('Notifation Type') %][% l('Enabled') %]
[% optin.cust.label | html %] + +
+
+ + + + + +[% END %] + + diff --git a/Open-ILS/src/templates_kcls/opac/myopac/prefs_settings.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/prefs_settings.tt2 new file mode 100644 index 0000000000..fc5f846956 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/prefs_settings.tt2 @@ -0,0 +1,100 @@ +[% PROCESS "opac/parts/header.tt2"; + WRAPPER "opac/parts/myopac/prefs_base.tt2"; + myopac_page = "prefs_notify"; + prefs_page = 'settings' %] + + +
+ +
+
+
+ +
+
+
+ + + + + [% IF ctx.updated_user_settings %] + + [% END %] + + + + + + + + + + + + + + + + + +
+
+ [% l('Account Successfully Updated') %] +
+
[% l("Search hits per page") %] +
+
+ [% l('Search Hits Help') %] +
+
+ [% setting = 'opac.hits_per_page' %] + +
[% l('Keep history of checked out items?') %] + [% setting = 'history.circ.retention_start' %] + +
[% l('Keep history of holds?') %] + [% setting = 'history.hold.retention_start' %] + +
+
+ [% INCLUDE "opac/parts/myopac/prefs_hints.tt2" %] +[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/receipt_email.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/receipt_email.tt2 new file mode 100644 index 0000000000..15b744f8cf --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/receipt_email.tt2 @@ -0,0 +1,21 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "prefs" %] + [% IF ctx.email_receipt_result; # result should be undef on success %] +
+ [% l('Error preparing receipt:') %] + + [% ctx.email_receipt_result.desc | html %] + +
+ [% ELSE %] +
+ [% l('Your receipt will be emailed to [_1]', ctx.user.email) | html %] +
+ [% END %] +

+ [ [% + l("Back to Payments History") %] ] +

+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/receipt_print.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/receipt_print.tt2 new file mode 100644 index 0000000000..fe6849502b --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/receipt_print.tt2 @@ -0,0 +1,25 @@ +[%# sic! no wrapper %] + + + [% l('Receipt') %] + + + [% IF ctx.printable_receipt.template_output %] + + [% ctx.printable_receipt.template_output.data %] + + [% ELSE %] +
+ [% l( + 'Error preparing receipt: [_1]', + (ctx.printable_receipt.textcode ? ctx.printable_receipt.textcode _ ' / ' _ ctx.printable_receipt.desc : 0) || + ctx.printable_receipt.error_output.data || + l('No receipt data returned from server') + ) | html %] +
+ [% END %] +
+

[ [% + l("Back to Payments History") %] ]

+ + diff --git a/Open-ILS/src/templates_kcls/opac/myopac/update_email.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/update_email.tt2 new file mode 100644 index 0000000000..827995976b --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/update_email.tt2 @@ -0,0 +1,24 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "prefs" %] +
+ +[% IF ctx.invalid_email %] +
+ [% l('The email address "[_1]" is invalid. Please try a different email address.', ctx.invalid_email) | html %] +
+[% END %] + +
+ [% IF CGI.param("return_to_referer") %] + + [% END %] + + + + +
[% l('Current Email') %][% ctx.user.email | html %]
[% l('New Email') %]
+
+ +[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/update_password.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/update_password.tt2 new file mode 100644 index 0000000000..c87fc5d71f --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/update_password.tt2 @@ -0,0 +1,33 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "prefs" %] + +
+ +[% IF ctx.password_invalid %] +
+ [% |l %] New password is invalid. Please try a different password. [% END %] +
+ +[% ELSIF ctx.password_nomatch %] +
+ [% |l %] Passwords do not match. [% END %] +
+ +[% ELSIF ctx.password_incorrect %] +
+ [% |l %] Your current password was not correct. [% END %] +
+[% END %] + +
+ + + + + +
[% l('Current Password') %]
[% l('New Password') %]
[% l('New Password Again') %]
+
+ +[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/myopac/update_username.tt2 b/Open-ILS/src/templates_kcls/opac/myopac/update_username.tt2 new file mode 100644 index 0000000000..8ff329e660 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/myopac/update_username.tt2 @@ -0,0 +1,29 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "prefs" %] +
+ +[% IF ctx.invalid_username %] +
+ [% l('"[_1]" is not a valid username. Usernames cannot have any spaces. Please try a different username.', ctx.invalid_username) | html %] +
+ +[% ELSIF ctx.username_exists %] +
+ [% bad_user = ctx.username_exists | html %] + [% | l(bad_user) %] + The username "[_1]" is taken. Please try a different username. + [% END %] +
+[% END %] + +
+ + + + +
[% l('Current Username') %][% ctx.user.usrname | html %]
[% l('New Username') %]
+
+ +[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/advanced/expert.tt2 b/Open-ILS/src/templates_kcls/opac/parts/advanced/expert.tt2 new file mode 100644 index 0000000000..935da519b9 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/advanced/expert.tt2 @@ -0,0 +1,29 @@ +
+
[% l("Expert Search") %]
+ + + + + + + + + + + + + + + + + + + + +
diff --git a/Open-ILS/src/templates_kcls/opac/parts/advanced/global_row.tt2 b/Open-ILS/src/templates_kcls/opac/parts/advanced/global_row.tt2 new file mode 100644 index 0000000000..f5b22ebeea --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/advanced/global_row.tt2 @@ -0,0 +1,52 @@ +[% + contains_options = [ + {value => 'contains', label => l('Contains')}, + {value => 'nocontains', label => l('Does not contain')}, + {value => 'phrase', label => l('Contains 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(['keyword']); END; + + FOR qtype IN qtypes; + c = contains.shift; + b = bools.shift; + q = queries.shift; %] + + + + + + + + + + + [% INCLUDE "opac/parts/qtype_selector.tt2" + query_type=qtype %] + + + + + [% IF loop.first %][% END %] + + + +[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/advanced/numeric.tt2 b/Open-ILS/src/templates_kcls/opac/parts/advanced/numeric.tt2 new file mode 100644 index 0000000000..f10d4aa6ac --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/advanced/numeric.tt2 @@ -0,0 +1,28 @@ +
+
[% l("Numeric Search") %]
+ + + + + + + + + +
+ + + +
+ +
+
diff --git a/Open-ILS/src/templates_kcls/opac/parts/advanced/search.tt2 b/Open-ILS/src/templates_kcls/opac/parts/advanced/search.tt2 new file mode 100644 index 0000000000..56ae6a5349 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/advanced/search.tt2 @@ -0,0 +1,203 @@ +
+ + + + + + + + + + + + + + + + +
+ + + + diff --git a/Open-ILS/src/templates_kcls/opac/parts/anon_list.tt2 b/Open-ILS/src/templates_kcls/opac/parts/anon_list.tt2 new file mode 100644 index 0000000000..89273a605e --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/anon_list.tt2 @@ -0,0 +1,65 @@ + [% IF ctx.mylist.size %] +
+
+
+ + + + + +
+ [% l('Temporary List') %] + + +
+
+
+
+ + + + + + + + + + + [% FOR item IN ctx.mylist; + attrs = {marc_xml => ctx.mylist_marc_xml.$item}; + PROCESS get_marc_attrs args=attrs %] + + + + + + [% END %] + +
+ + [% l('Title') %][% l('Author(s)') %] + + +
+ + [% attrs.title | html %][% attrs.author | html %]
+

+
+
+ [% END %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/banner.tt2 b/Open-ILS/src/templates_kcls/opac/parts/banner.tt2 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Open-ILS/src/templates_kcls/opac/parts/base.tt2 b/Open-ILS/src/templates_kcls/opac/parts/base.tt2 new file mode 100644 index 0000000000..47d1c4154c --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/base.tt2 @@ -0,0 +1,22 @@ + + + + + [% IF ctx.refresh %] + + [% ELSIF ctx.authtime %] + + [% END %] + + + [% l('Catalog - [_1]', ctx.page_title) %] + + [% INCLUDE 'opac/parts/goog_analytics.tt2' %] + + + [% content %] + [% INCLUDE 'opac/parts/footer.tt2' %] + [% INCLUDE 'opac/parts/js.tt2' %] + [% INCLUDE 'opac/parts/chilifresh.tt2' %] + + diff --git a/Open-ILS/src/templates_kcls/opac/parts/chilifresh.tt2 b/Open-ILS/src/templates_kcls/opac/parts/chilifresh.tt2 new file mode 100644 index 0000000000..d58b3f5b97 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/chilifresh.tt2 @@ -0,0 +1,20 @@ + + + +[% IF ENV.OILS_CHILIFRESH_URL AND ENV.OILS_CHILIFRESH_ACCOUNT + AND (ctx.page == 'rresult' OR ctx.page == 'record'); + chili_url = ENV.OILS_CHILIFRESH_URL; + IF CGI.https AND ENV.OILS_CHILIFRESH_HTTPS_URL; + chili_url = ENV.OILS_CHILIFRESH_HTTPS_URL; + END; +%] + + + + + + +[% END %] + diff --git a/Open-ILS/src/templates_kcls/opac/parts/coded_value_selector.tt2 b/Open-ILS/src/templates_kcls/opac/parts/coded_value_selector.tt2 new file mode 100644 index 0000000000..4315bc29fb --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/coded_value_selector.tt2 @@ -0,0 +1,32 @@ + +[%- + # If caller passes a list of possible attribute types, + # search all until we find some values + + IF !attr.size; attr = [attr]; END; + all_values = []; + attr_class = ''; + FOR attr_class IN attr; + all_values = ctx.search_ccvm('ctype', attr_class); + IF all_values.size > 0; LAST; END; + END; + name = name || "fi:" _ attr_class; + id = id || attr_class _ "_selector"; + values = values || CGI.param(name); +-%] + + + diff --git a/Open-ILS/src/templates_kcls/opac/parts/config.tt2 b/Open-ILS/src/templates_kcls/opac/parts/config.tt2 new file mode 100644 index 0000000000..696a99d794 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/config.tt2 @@ -0,0 +1,71 @@ +[% + +############################################################################## +# This file contains skin-level configuration settings. +# Many of these settings will probably migrate into actor.org_unit_settings. +############################################################################## + +############################################################################## +# 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 = 'false'; +google_analytics.code = 'UA-9999999-99'; + +############################################################################## +# Enable "Forgot your password?" prompt at login +############################################################################## +reset_password = 'true'; + +############################################################################## +# Misc. UI Settings +############################################################################## + +############################################################################## +# 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 => 'subject', facet_order => ['complete']} + {facet_class => 'series', facet_order => ['seriestitle']}, + {facet_class => 'identifier', facet_order => ['mattype']}, +]; + + +%] diff --git a/Open-ILS/src/templates_kcls/opac/parts/filtersort.tt2 b/Open-ILS/src/templates_kcls/opac/parts/filtersort.tt2 new file mode 100644 index 0000000000..664be17fc3 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/filtersort.tt2 @@ -0,0 +1,16 @@ + diff --git a/Open-ILS/src/templates_kcls/opac/parts/footer.tt2 b/Open-ILS/src/templates_kcls/opac/parts/footer.tt2 new file mode 100644 index 0000000000..9ab3ace033 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/footer.tt2 @@ -0,0 +1,10 @@ + + diff --git a/Open-ILS/src/templates_kcls/opac/parts/goog_analytics.tt2 b/Open-ILS/src/templates_kcls/opac/parts/goog_analytics.tt2 new file mode 100644 index 0000000000..e3e0ed8bf0 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/goog_analytics.tt2 @@ -0,0 +1,14 @@ + + diff --git a/Open-ILS/src/templates_kcls/opac/parts/header.tt2 b/Open-ILS/src/templates_kcls/opac/parts/header.tt2 new file mode 100644 index 0000000000..f23c3e779e --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/header.tt2 @@ -0,0 +1,73 @@ +[%- USE money = format(l('$%.2f')); + USE date; + USE CGI = CGI_utf8; + USE POSIX; + SET DATE_FORMAT = l('%m/%d/%Y'); + + PROCESS "opac/parts/config.tt2"; + + # Don't wrap in l() here; do that where this format string is actually used. + SET HUMAN_NAME_FORMAT = '[_1] [_2] [_3] [_4] [_5]'; + + is_advanced = CGI.param("_adv").size; + is_special = CGI.param("_special").size; + + # ----------------------------------------------------------------------------- + # mkurl( destination_page, params_to_set, params_to_clear ) + # + # Current page, updated params: + # mkurl('', {foo => 'bar', boo => 'baz'}); + # + # New page, one param is a list: + # mkurl('http://flarg.baz/squz', {foo => 'bar', boo => ['baz', 'faz']}); + # + # New page, clear all existing params before applying new ones: + # mkurl('/fuz/buster', {foo => 'bar', boo => 'baz'}, 1); + # + # Current page, clear 'some_param' from the existing params: + # mkurl('', {foo => 'bar', boo => 'baz'}, ['some_param']); + MACRO mkurl(page, params, clear_params) BLOCK; + + # clone the query string to avoid clobberation + cgi = CGI.new(CGI.query_string); + + # remove requested params + IF clear_params.0; # array + FOR p IN clear_params; cgi.delete(p); END; + ELSIF clear_params; + cgi.delete_all(); + END; + + # x and y are artifacts of using tags + # instead of true submit buttons, and their values are never used. + cgi.delete('x', 'y'); + + # apply user params + FOR k IN params.keys; + encoded = []; + max = params.$k.max; + list = (params.$k.0 OR max == -1) ? params.$k : [params.$k]; + IF list.size == 0; NEXT; END; + # CGI croaks on already-decoded strings. force-encode to be safe. + FOR p IN list; encoded.push(ctx.encode_utf8(p)); END; + foo = cgi.param("-name", k, "-values", encoded); + END; + + # for url brevity, remove any params that have no value + FOR p IN cgi.param; + val = cgi.param(p); + IF val == ''; cgi.delete(p); END; + END; + + IF page; + IF cgi.query_string; + page _ '?' _ cgi.query_string; + ELSE; + page; + END; + ELSE; + # staying on the current page + cgi.url("-path" => 1, "-query" => 1); + END; + END; +%] diff --git a/Open-ILS/src/templates_kcls/opac/parts/hold_error_messages.tt2 b/Open-ILS/src/templates_kcls/opac/parts/hold_error_messages.tt2 new file mode 100644 index 0000000000..e79e81df1b --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/hold_error_messages.tt2 @@ -0,0 +1,39 @@ +[% + # XXX It might be cleaner to move this into its own file or something. + # + # The following hash should have fail_parts as keys and user/patron-friendly + # strings as values. If the system returns an event with a fail_part when + # you attempt to place a hold and the fail part matches something in this + # hash, this is the message that will be displayed to the user. Wait until + # these are used to pass them through l() for i18n. + + FAIL_PART_MSG_MAP = { + "actor.usr.barred" => l("The patron is barred"), + "asset.copy.circulate" => l("The item does not circulate"), + "asset.copy_location.circulate" => l("Items from this shelving location do not circulate"), + "asset.copy.status" => l("The item cannot circulate at this time"), + "circ.holds.target_skip_me" => l("The item's circulation library does not fulfill holds"), + "config.circ_matrix_circ_mod_test" => l("The patron has too many items of this type checked out"), + "config.circ_matrix_test.available_copy_hold_ratio" => l("The available item-to-hold ratio is too low"), + "config.circ_matrix_test.circulate" => l("Circulation rules reject this item as non-circulatable"), + "config.circ_matrix_test.total_copy_hold_ratio" => l("The total item-to-hold ratio is too low"), + "config.hold_matrix_test.holdable" => l("Hold rules reject this item as unholdable"), + "config.hold_matrix_test.max_holds" => l("The patron has reached the maximum number of holds"), + "config.rule_age_hold_protect.prox" => l("The item is too new to transit this far"), + "no_item" => l("The system could not find this item"), + "no_ultimate_items" => l("The system could not find any items to match this hold request"), + "no_matchpoint" => l("System rules do not define how to handle this item"), + "no_user" => l("The system could not find this patron"), + "transit_range" => l("The item cannot transit this far") + }; + + + # This works like the above has, but instead of fail_parts for keys, use + # the textcode of the event. This will only be consulted for events + # that do not have a fail_part matching something in the above hash. + # Wait until these are used to pass them through l() for i18n. + + EVENT_MSG_MAP = { + "PATRON_EXCEEDS_FINES" => l("Patron has reached the maximum fine amount") + }; +%] diff --git a/Open-ILS/src/templates_kcls/opac/parts/hold_status.tt2 b/Open-ILS/src/templates_kcls/opac/parts/hold_status.tt2 new file mode 100644 index 0000000000..f2b3deb60c --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/hold_status.tt2 @@ -0,0 +1,31 @@ +[% BLOCK get_hold_status %] +
+ [% + IF hold.hold.status == 4 %] + [% l("Available"); %] [% + IF ahr.shelf_expire_time; + l('
Expires [_1]', + date.format(ctx.parse_datetime(ahr.shelf_expire_time), DATE_FORMAT)); + END; + END; + %] + [%# + + ELSIF hold.hold.estimated_wait AND hold.hold.estimated_wait > 0; + # estimated wait is delivered as seconds. + SET hwait = POSIX.ceil(hold.hold.estimated_wait / 86400); + l("Estimated wait: [quant,_1,day,days]", hwait); + + ELSIF hold.hold.status == 3; + l("In Transit"); + + ELSIF hold.hold.status < 3; + l("Waiting for copy"); + END + %] +
+
+ [% l('[_1] hold on [quant,_2,circulating copy,circulating copies]', + hold.hold.queue_position, hold.hold.potential_copies) %] +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/homesearch.tt2 b/Open-ILS/src/templates_kcls/opac/parts/homesearch.tt2 new file mode 100644 index 0000000000..81085a833f --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/homesearch.tt2 @@ -0,0 +1,96 @@ + + + + +
+
+

Work continues on the
KCLS Catalog.

+ KCLS is committed to providing you with
information on outstanding issues and pending improvements.

+ Learn more »

+
+ + + + + + +
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ + + + +
+
+ +
+
+
+ + + + + + + + + + + + +
Browse for:
booksmoviesdownloadswebsites
musicmagazinesdatabasesanswers
+
+
+
+ +
+
+ + Locations + +
+
+
diff --git a/Open-ILS/src/templates_kcls/opac/parts/js.tt2 b/Open-ILS/src/templates_kcls/opac/parts/js.tt2 new file mode 100644 index 0000000000..9358317c11 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/js.tt2 @@ -0,0 +1,41 @@ + + + + +[% IF ctx.is_staff %] + + [% IF ctx.page == 'record' %] + [% IF ctx.search_result_index >= 0 %] + + [% END %] + [% IF ctx.mfhd_summaries.size %] + + [% END %] + [% END %] +[%- END %] + +[% IF ENV.OILS_NOVELIST_URL AND ctx.page == 'record'; + url = ENV.OILS_NOVELIST_URL; + IF CGI.https; url = url.replace('^http:', 'https:'); END; %] + +[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/login/form.tt2 b/Open-ILS/src/templates_kcls/opac/parts/login/form.tt2 new file mode 100644 index 0000000000..8d800822c9 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/login/form.tt2 @@ -0,0 +1,154 @@ + + +[% IF ctx.login_failed_event %] +
+[% + IF ctx.login_failed_event.textcode == 'PATRON_CARD_INACTIVE'; + l("The barcode used to login is marked as inactive. Please contact your local library."); + ELSIF ctx.login_failed_event.textcode == 'PATRON_INACTIVE'; + l("This account has been deactivated. Please contact your local library."); + ELSE; + l("Login failed. The username or password provided was not valid. + Ensure Caps-Lock is off and try again or contact your local library."); + END; +%] +
+[% END %] + +
+
+
+ + + + + [% INCLUDE "opac/parts/login/help.tt2" %] + +
+
+
+
diff --git a/Open-ILS/src/templates_kcls/opac/parts/login/help.tt2 b/Open-ILS/src/templates_kcls/opac/parts/login/help.tt2 new file mode 100644 index 0000000000..a6d7ebbeb9 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/login/help.tt2 @@ -0,0 +1,12 @@ + + + [% l('Questions?') %] + +
+ [% l('Visit our FAQs section for answers to common questions about how to use your account.') %] +
+ + [% l('FAQs') %] + diff --git a/Open-ILS/src/templates_kcls/opac/parts/login/password_hint.tt2 b/Open-ILS/src/templates_kcls/opac/parts/login/password_hint.tt2 new file mode 100644 index 0000000000..a95b47fa78 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/login/password_hint.tt2 @@ -0,0 +1,5 @@ + + [% | l('
', '
') %] + If this is your first time logging in, please enter [_1] the last 4 digits of your phone number. [_2] Example: 0926 + [% END %] +
diff --git a/Open-ILS/src/templates_kcls/opac/parts/misc_util.tt2 b/Open-ILS/src/templates_kcls/opac/parts/misc_util.tt2 new file mode 100644 index 0000000000..ff988699d8 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/misc_util.tt2 @@ -0,0 +1,99 @@ +[% + # Extract MARC fields from XML + # get_marc_attrs( { marc_xml => doc } ) + BLOCK get_marc_attrs; + xml = args.marc_xml; + + args.isbns = []; + FOR isbn IN xml.findnodes('//*[@tag="020"]/*[@code="a"]'); + args.isbns.push(isbn.textContent); + END; + + args.upcs = []; + FOR upc IN xml.findnodes('//*[@tag="024"]/*[@code="a"]'); + args.upcs.push(upc.textContent); + END; + args.upc = args.upcs.0; # use first UPC as the default + args.issn = xml.findnodes('//*[@tag="022"]/*[@code="a"]').textContent; + args.title = xml.findnodes('//*[@tag="245"]/*[@code="a"]').textContent; + args.title_extended = ''; + FOR node IN xml.findnodes('//*[@tag="245"]/*'); + args.title_extended = args.title_extended _ ' ' _ node.textContent; + END; + args.author = xml.findnodes('//*[@tag="100"]/*[@code="a"]').textContent; + args.publisher = xml.findnodes('//*[@tag="260"]/*[@code="b"]').textContent; + args.pubdate = xml.findnodes('//*[@tag="260"]/*[@code="c"]').textContent; + args.edition = xml.findnodes('//*[@tag="250"]/*[@code="a"]').textContent || + xml.findnodes('//*[@tag="534"]/*[@code="b"]').textContent || + xml.findnodes('//*[@tag="775"]/*[@code="b"]').textContent; + phys = xml.findnodes( + '//*[@tag="300"]/*[@code="a" or @code="b" or @code="c" or @code="e"]' + ); + phys_content = []; + FOR p IN phys; phys_content.push(p.textContent); END; + args.phys_desc = phys_content.join(""); + + args.contents = xml.findnodes('//*[@tag="505"]').textContent; + + # capture all of the 520a's + args.summary = []; + FOR s IN xml.findnodes('//*[@tag="520"]/*[@code="a"]'); + args.summary.push(s.textContent); + END; + + # MARC Callnumber + args.marc_cn = xml.findnodes('//*[@tag="092" or @tag="099"]/*').textContent; + + # clean up the ISBN + args.isbn_clean = args.isbns.0.replace('\ .*', ''); + + # Extract the 856 URLs that are not otherwise represented by asset.uri's + args.online_res = []; + FOR node IN xml.findnodes('//*[@tag="856"]'); + IF node.findnodes('./*[@code="9" or @code="w" or @code="n"]'); NEXT; END; # asset.uri's + label = node.findnodes('./*[@code="z"]'); # XXX KCLS => y -> z + #notes = node.findnodes('./*[@code="z" or @code="3"]'); # XXX KCLS + FOR href IN node.findnodes('./*[@code="u"]'); + NEXT UNLESS href; + # it's possible for multiple $u's to exist within 1 856 tag. + # in that case, honor the label/notes data for the first $u, but + # leave any subsequent $u's as unadorned href's. + # use href/link/note keys to be consistent with args.uri's + args.online_res.push({ + href => href.textContent, + link => (loop.first AND label) ? label.textContent : href.textContent, + #note => (loop.first) ? notes.textContent : '' # XXX KCLS + note => '' + }); + END; + END; + + args.holdings = []; + FOR holding IN xml.findnodes('//*[local-name()="volumes"]/*[local-name()="volume"]'); + args.holdings.push( + holding.getAttribute('label') + ); + END; + + # Extract the copy count summary + count_type = (ctx.is_staff) ? 'staff' : 'public'; + xpath = '//*[local-name()="counts"]/*[local-name()="count"][@type="' _ count_type _ '"]'; + FOR node IN xml.findnodes(xpath); + args.copy_counts = {}; + FOR attr IN ['count', 'available', 'unshadow', 'transcendant']; + args.copy_counts.$attr = node.getAttribute(attr); + END; + END; + + # "mattype" == "custom marc format specifier" + FOR icon_style IN ['mattype', 'item_type']; + node = xml.findnodes( + '//*[local-name()="attributes"]/*[local-name()="field"][@name="' _ icon_style _ '"]'); + IF node AND node.textContent; + args.format_label = node.getAttribute('coded-value') + args.format_icon = ctx.media_prefix _ '/images/format_icons/' _ icon_style _ '/' _ node.textContent _ '.png'; + LAST; + END; + END; + END; +%] diff --git a/Open-ILS/src/templates_kcls/opac/parts/myopac/base.tt2 b/Open-ILS/src/templates_kcls/opac/parts/myopac/base.tt2 new file mode 100644 index 0000000000..6a4e839be4 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/myopac/base.tt2 @@ -0,0 +1,37 @@ +[% WRAPPER "opac/parts/base.tt2" %] + +[% myopac_pages = [ + {url => "main", name => "Account Summary"}, + {url => "circs", name => "Items Checked Out"}, + {url => "holds", name => "Holds"}, + {url => "prefs", name => "Account Preferences"}, + {url => "lists", name => "My Lists"} + ]; + skin_root = "../" +%] + [% INCLUDE "opac/parts/topnav.tt2" %] +
+ [% INCLUDE "opac/parts/printnav.tt2" %] + [% INCLUDE "opac/parts/searchbar.tt2" %] +
+
+
+
+ [%- FOREACH page IN myopac_pages; + IF page.url == myopac_page; + cls_which = "on"; + ctx.page_title = "Your Account - " _ page.name; + ELSE; + cls_which = "off"; + END -%] + + [% END %] +
+
+
+ [% content %] +
+
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/myopac/main_base.tt2 b/Open-ILS/src/templates_kcls/opac/parts/myopac/main_base.tt2 new file mode 100644 index 0000000000..87b2389be3 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/myopac/main_base.tt2 @@ -0,0 +1,102 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; +%] + +
+ +
+
[% l('Account Summary') %]
+
+ + + [% IF myopac_main_page == "payment_form" OR ( + !ctx.fines.circulation.size AND !ctx.fines.grocery.size + ) %] +
+ [% ELSE %] +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ [% l('Fines:') %] + + [% money(ctx.user_stats.fines.balance_owed) %] +
+ +
+
+ [% END %] + +
+
+
+
+ + + + + +
[% l("Items Currently Checked out ([_1])", ctx.user_stats.checkouts.total_out) %] + [% l("View All") %] +
+
+
+ + + + + +
[% l('Items Currently on Hold ([_1])', ctx.user_stats.holds.total) %] + [% l('View All') %] +
+
+
+ + + + + +
[% l('Items ready for pickup ([_1])', ctx.user_stats.holds.ready) %] + [% l('View All') %] +
+
+
+
+
+
+
+ [% IF myopac_main_page == 'main' %] + + + [% ELSE %] + + + [% END %] +
+
+ [% content %] +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/myopac/main_refund_policy.tt2 b/Open-ILS/src/templates_kcls/opac/parts/myopac/main_refund_policy.tt2 new file mode 100644 index 0000000000..937d167d3a --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/myopac/main_refund_policy.tt2 @@ -0,0 +1,27 @@ + + +
+ + Important! You must have a printed receipt to be + eligible for a refund on lost items (regulations allow + for no exceptions). + +
+
+ + To ensure your necessary receipt information is + not lost, enter your email address above and a + receipt will be emailed to you. Otherwise, make + certain you have a printed receipt in hand before + closing the payment receipt screen. + +
+ Refunds are not available for parts and pieces, overdue + fines, or items that do not display a specific title in + My Account. For a full list of refundable and + non-refundable items, visit + http://www.kcls.org/usingthelibrary/borrowing/refundable.cfm

+ This site uses VeriSign SSL encryption to ensure your + privacy. + + diff --git a/Open-ILS/src/templates_kcls/opac/parts/myopac/prefs_base.tt2 b/Open-ILS/src/templates_kcls/opac/parts/myopac/prefs_base.tt2 new file mode 100644 index 0000000000..1b641a6001 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/myopac/prefs_base.tt2 @@ -0,0 +1,60 @@ +[% PROCESS "opac/parts/header.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; %] + +
+
+
+ + [% IF prefs_page == 'personal' %] +
+ +
+ [% IF ctx.opt_in_settings.size > 0 %] +
+ +
+ [% END %] +
+ +
+ [% ELSIF prefs_page == 'notify' %] +
+ +
+
+ +
+
+ +
+ [% ELSE %] +
+ +
+ [% IF ctx.opt_in_settings.size > 0 %] +
+ +
+ [% END %] +
+ +
+ [% END %] +
+
+ +

+ +
+ [% l('Account Information and Preferences') %] + + [% l('Export List') %] + +
+ +
+ +[% content; %] + +
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/myopac/prefs_hints.tt2 b/Open-ILS/src/templates_kcls/opac/parts/myopac/prefs_hints.tt2 new file mode 100644 index 0000000000..bb7c6428c5 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/myopac/prefs_hints.tt2 @@ -0,0 +1,4 @@ +Try + Library Elf-to manage library materials! + diff --git a/Open-ILS/src/templates_kcls/opac/parts/org_selector.tt2 b/Open-ILS/src/templates_kcls/opac/parts/org_selector.tt2 new file mode 100644 index 0000000000..3a7e3183a4 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/org_selector.tt2 @@ -0,0 +1,34 @@ +[% + BLOCK build_org_selector_options; + disabled = ''; + selected = ''; + IF can_have_vols_only AND walker.ou_type.can_have_vols != 't'; + disabled = 'disabled="disabled"'; + ELSIF walker.id == value; + selected = 'selected="selected"'; + END; + IF (ctx.is_staff || walker.opac_visible == 't') AND + !(hold_pickup_lib AND ctx.get_org_setting(walker.id, 'opac.holds.org_unit_not_pickup_lib')); +%] + + [% FOR child IN walker.children; + PROCESS build_org_selector_options walker=child value=value; + END; + END; + END; + + # XXX TODO probably put this BLOCK somewhere else so it can be used widely. + # Org Unit Selector Widget : + # PROCESS build_org_selector id='selector-id' name='selector-name' + BLOCK build_org_selector; +%] + +[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/place_hold.tt2 b/Open-ILS/src/templates_kcls/opac/parts/place_hold.tt2 new file mode 100644 index 0000000000..a7514edfdb --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/place_hold.tt2 @@ -0,0 +1,81 @@ +[% PROCESS "opac/parts/misc_util.tt2"; + PROCESS "opac/parts/hold_error_messages.tt2"; +%] + +
+

[% l('Place Hold') %]

+
+ + [% + redirect = CGI.param('hold_source_page') || CGI.param('redirect_to') || CGI.referer; + # since we have to be logged in to get this far, return to a secure page + redirect = redirect.replace('^http:', 'https:') + %] + + + [% IF ctx.is_staff %] +

+ + +
[%# XXX multi-barcode users? %] + + + + +

+ [% END %] + + + + [% FOR hdata IN ctx.hold_data; + attrs = {marc_xml => hdata.marc_xml}; + PROCESS get_marc_attrs args=attrs %] + + + + [% END %] +
+ +
[% attrs.title_extended | html %]
+
+ +

+ [% l('Pickup location:') %] + [% PROCESS "opac/parts/org_selector.tt2"; + PROCESS build_org_selector name='pickup_lib' + value=ctx.default_pickup_lib id='pickup_lib' can_have_vols_only=1 hold_pickup_lib=1%] +

+

+ [% |l %]If you use the Traveling Library Center (TLC) and ABC Express + services, please select "Outreach" to have the item delivered + during your scheduled visit.[% END %] +

+ +        + [% l('Cancel') %] +
+

+

+ [% |l %]* If you need your item today, and it is checked in at your + library, please place your hold and then call your library to set it + aside. Placing a hold without calling the library will increase your + wait time.[% END %] +
[% l('Library phone numbers.') %] +

+

+ [% |l %]* For best possible service, we recommend keeping + a printed copy of your most recent holds list.[% END %] +

+
+ diff --git a/Open-ILS/src/templates_kcls/opac/parts/place_hold_result.tt2 b/Open-ILS/src/templates_kcls/opac/parts/place_hold_result.tt2 new file mode 100644 index 0000000000..12b1bea8ca --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/place_hold_result.tt2 @@ -0,0 +1,113 @@ +[% PROCESS "opac/parts/misc_util.tt2"; + PROCESS "opac/parts/hold_error_messages.tt2"; + override_possible = 0; + any_failures = 0; + any_success = 0; +%] + + + +
+

[% l('Place Hold') %]

+ +
+ + [% FOR k IN ctx.orig_params.keys %] + + [% END %] + + + + [% FOR hdata IN ctx.hold_data; + attrs = {marc_xml => hdata.marc_xml}; + PROCESS get_marc_attrs args=attrs %] + + + + + [% END %] +
+ [% + override = 0; + IF hdata.could_override || hdata.hold_local_alert; + override_possible = 1; + override = 1; + END; + %] + + +
[% attrs.title_extended | html %]
+
+ [% IF hdata.hold_success; + any_success = 1 %] + +
[% l("Hold was successfully placed"); %]
+ + [% ELSIF hdata.hold_failed; + any_failures = 1 %] + +
[% l("Hold was not successfully placed"); %]
+ [% IF hdata.hold_local_block %] +
[% l("There is already a copy available at your local library.") %]
+ [% ELSIF hdata.hold_failed_event || hdata.hold_local_alert %] +
+ [% l('Problem:') %] + + [% + fail_part_key = hdata.hold_failed_event.payload.fail_part; + event_key = hdata.hold_failed_event.textcode; + + # display: + FAIL_PART_MSG_MAP.$fail_part_key || + EVENT_MSG_MAP.$event_key || + l(hdata.hold_failed_event.desc) || + hdata.hold_failed_event.payload.fail_part || + hdata.hold_failed_event.textcode || + (hdata.hold_local_alert ? + l("There is already a copy available at your local library.") : + l("Unknown problem")) | html + %] + [% IF event_key == 'PERM_FAILURE' %] +
[% l('Permission: "[_1]"', hdata.hold_failed_event.ilsperm) | html %]
+ [% END %] +
+ [% IF hdata.hold_copy_available %] +

[% l('Find a copy in the shelving location, "[_1]."', locname) | html %]

+ [% END %] +
+ [% END; + END %] +
+
+
+
+ [% IF override_possible %] +
+ [% |l %]You have permission to override some of the failed holds.
+ Click Submit to override and place your hold on the selected items.[% END %] +
+ + + + + [% l('Return') %] + + [% ELSE %] + [% IF !any_success %] + + [% l('Cancel') %] + [% ELSE %] + + [% l('Return') %] + + [% END %] + [% END %] + +
+ diff --git a/Open-ILS/src/templates_kcls/opac/parts/printnav.tt2 b/Open-ILS/src/templates_kcls/opac/parts/printnav.tt2 new file mode 100644 index 0000000000..13a8f666f5 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/printnav.tt2 @@ -0,0 +1,25 @@ +
+
+
+ +
+ [% l('Back') %] + [% l('Homepage') %] + [% l('Print Page') %] + [% l('Help') %] + [% l('Forward') %] +
+ +
+
+
diff --git a/Open-ILS/src/templates_kcls/opac/parts/qtype_selector.tt2 b/Open-ILS/src/templates_kcls/opac/parts/qtype_selector.tt2 new file mode 100644 index 0000000000..2dcb40a065 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/qtype_selector.tt2 @@ -0,0 +1,17 @@ +[% query_types = [ + {value => "keyword", label => l("Keyword")}, + {value => "title", label => l("Title")}, + {value => "author", label => l("Author")}, + {value => "subject", label => l("Subject")}, + {value => "series", label => l("Series")}, + {value => "id|bibcn", label => l("Bib Call Number")} + {value => "identifier", label => l("ISBN/ISSN/Other")} +] %] + diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/authors.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/authors.tt2 new file mode 100644 index 0000000000..7304aeb7af --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/authors.tt2 @@ -0,0 +1,51 @@ +[% + +authors = [ + { + type => 'author', + label => l('Authors: '), + xpath => '//*[@tag="100"]|//*[@tag="110"]|//*[@tag="111"]' + }, { + type => 'added', + label => l('Added Authors: '), + xpath => '//*[@tag="700"]|//*[@tag="710"]|//*[@tag="711"]' + }, { + type => 'credits', + label => l('Credits: '), + xpath => '//*[@tag="100"]|//*[@tag="110"]|//*[@tag="111"]' + }, { + type => 'cast', + label => l('Cast: '), + xpath => '//*[@tag="508"]' + }, { + type => 'notes', + label => l('Author Notes: '), + xpath => '' # Comes from added content... + } +]; + +BLOCK build_author_links; + FOR node IN ctx.marc_xml.findnodes(xpath); + FOR subfield IN node.childNodes; + NEXT UNLESS subfield.nodeName == "subfield"; + code = subfield.getAttribute('code'); + NEXT UNLESS code.match('[a-z]'); + term = subfield.textContent | html; + '
' _ term _ ''; + END; + END; +END; +%] + +
+[% FOREACH author IN authors; + NEXT UNLESS author.xpath; + links = PROCESS build_author_links(xpath=author.xpath); + IF links.match('\S') %] + [% author.label | html %] +
[% links %]
+ [% END %] +[% END %] +
+ + diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/awards.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/awards.tt2 new file mode 100644 index 0000000000..fa8b4f6998 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/awards.tt2 @@ -0,0 +1,32 @@ +
+
+ + + [% l('Patron Reviews:') %] +
+ + +
+ + + [% IF 0 %] + [% l('Reviews:') %] +
+ [% END %] + + + [% IF ENV.OILS_NOVELIST_URL %] + [% l('Similar Books:') %] +
+
+
+
+
+
+
+
+
+ [% END %] +
+
+ diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/body.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/body.tt2 new file mode 100644 index 0000000000..8c7e77bac7 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/body.tt2 @@ -0,0 +1,56 @@ + +[% attrs = {marc_xml => ctx.marc_xml}; + PROCESS "opac/parts/misc_util.tt2"; + PROCESS get_marc_attrs args=attrs %] + +
+ + [% IF ctx.search_result_index >= 0 %] +
+
+ [% l('◄ Search Results') %] + + [% l('Showing Item [_1] of [_2]', ctx.search_result_index + 1, ctx.hit_count) %] + +
+
+ [% + IF ctx.prev_search_record; + prev_args = {}; + IF ctx.search_result_index % (ctx.page_size + 1) == 0; # first record in the page + prev_args.page = ctx.search_page - 1; + END; + ctx.prev_rec_url = mkurl(ctx.prev_search_record, prev_args); + %] + [% l('Previous') %] + [% END %] + + + + [% + IF ctx.next_search_record; + next_args = {}; + IF ctx.page_size == ctx.search_result_index + 1; + next_args.page = ctx.search_page + 1; + END; + ctx.next_rec_url = mkurl(ctx.next_search_record, next_args); + %] + [% l('Next') %] + [% END %] + +
+
+
+ [% END %] + +
+ [% l("This record has been deleted from the database. We recommend that you remove this title from any bookbags it may have been added to.") %] +
+ [% INCLUDE "opac/parts/record/summary.tt2" %] +
+ [% INCLUDE "opac/parts/record/extras.tt2" %] +
+ diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/cn_details.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/cn_details.tt2 new file mode 100644 index 0000000000..2865026a61 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/cn_details.tt2 @@ -0,0 +1,91 @@ + + + + + + +
+
+ [% l("print these details") %] + + + + + + + + + +
+ + + + + + + +
+ + [% l("Copy Note") %] + + + [% l("Copy Category") %] + + + : +
+
+
+
+ +[% l("Yes") %] +[% l("No") %] + +
+
+
+ +
+
+ + + + + + + + + + + + + + + + + +
[% l("Library") %]
[% l("Title") %]
[% l("Author") %]
[% l("Edition") %]
[% l("Publication Date") %]
[% l("Publisher") %]
[% l("Physical Description") %]
[% l("Call Number") %]
+
+
+
diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/cnbrowse.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/cnbrowse.tt2 new file mode 100644 index 0000000000..1b8364213d --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/cnbrowse.tt2 @@ -0,0 +1,61 @@ +[% + cnoffset = CGI.param('cnoffset'); + cnoffset = cnoffset.match('^\d+$') ? cnoffset : 0; # verify cnoffset is a sane value +%] + +
+
+
+ [% l("You are now browsing") %] + [% ctx.browsing_ou.name | html %] +
+ + + + + + + + + + [% tr_open = 0; FOR cn IN ctx.browsed_call_numbers %] + [%- IF loop.index % 3 == 0; tr_open = 1 %] + + [% END -%] + + [% IF loop.index % 3 == 2; tr_open = 0 %] + + [% END %] + [% END; IF tr_open %][% END %] + +
+ [% l("<< Previous Page") %] + [% l("Shelf Browser") %] + [% l("Next Page >>") %] +
+ [% rec_attrs = {marc_xml => cn.record.marc}; + PROCESS get_marc_attrs args=rec_attrs; + ident = rec_attrs.isbn_clean || rec_attrs.upc; + IF ident %] + + [% END %] +
[% cn.label | html %]
+ + [% IF rec_attrs.author %][% END %] +
[% cn.owning_lib.name | html %]
+
+
+
diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/copyinfo.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/copyinfo.tt2 new file mode 100644 index 0000000000..9d4673f120 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/copyinfo.tt2 @@ -0,0 +1,68 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + +
[% l("Library") %][% l("Callnumber") %] + [% l("Copy Location") %] + [% l("Actions") %] +
+
+ [% l("Print Call Numbers for this library") %] + + + + + +
+ [% l("Loading copy information...") %] +
+ +

+
[% l(" * There are no copies in this location") %]
+
+ diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/extras.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/extras.tt2 new file mode 100644 index 0000000000..2649148710 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/extras.tt2 @@ -0,0 +1,78 @@ +
+
+ + [% # Hidden extras are not yet implemented. Some may require JS + + # Let's see if we should hide the content cafe / simple summary content + hide_summary = 1; + IF attrs.summary.0; hide_summary = 0; ELSE; + # Expose content cafe if it's reasonable to do so. + # This approach only works when using embedded content cafe. + IF ENV.OILS_CONTENT_CAFE_USER; + ident = attrs.isbn_clean || attrs.upc; + IF ident; hide_summary = 0; END; + END; + END; + + extras = [ + {name => 'subjects', label => l('Subject')}, + {name => 'summaryplus', label => l('Summaries & More'), hide => hide_summary}, + {name => 'contents', label => l('Contents'), hide => !attrs.contents}, + {name => 'authors', label => l('Authors')}, + {name => 'series', label => l('Series')}, + {name => 'annotation', label => l('Annotation'), hide => 1}, + {name => 'awards', label => l('Awards, Reviews, & Suggested Reads')}, + {name => 'excerpt', label => l('Excerpt'), hide => 1}, + {name => 'issues', label => l('Issues Held'), hide => !(ctx.have_holdings_to_show || ctx.have_mfhd_to_show)}, + {name => 'preview', label => l('Preview'), hide => 1}, + {name => 'cnbrowse', label => l('Shelf Browser')}, + {name => 'copyinfo', label => l('Copy Summary'), hide => 1}, + {name => 'marchtml', label => l('MARC Record')} + ]; + + MACRO tab_is_active(tab) BLOCK; + exp_name = 'expand_' _ tab; + IF ctx.$exp_name OR ctx.expand_all; 1; END; + END; + + FOREACH extra IN extras; + IF extra.hide; NEXT; END; + name = extra.name; + %] +
+
+ +
+
+ [% IF tab_is_active(name); + IF name == 'marchtml'; + ctx.marchtml; + ELSIF name == 'contents'; + attrs.contents; + ELSE; + # Load the template for the selected extra + INCLUDE "opac/parts/record/${name}.tt2"; + END; + END; + %] +
+ [% END %] +
+ +
diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/issues.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/issues.tt2 new file mode 100644 index 0000000000..15e421493e --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/issues.tt2 @@ -0,0 +1,67 @@ +
+[% +base_expando = ctx.full_path _ "?expand=issues"; +FOREACH type IN ctx.holding_summaries.keys; + NEXT UNLESS ctx.holding_summaries.$type.size; + expanded = CGI.param('expand_holding_type') == type; %] +
+ [[% expanded ? '-' : '+' %]] + [% ctx.holding_summaries.$type.join(", ") %] + [% IF expanded %] + + [% FOR blob IN ctx.expanded_holdings %] + + + [% IF blob.has_units %] + + [% END %] + + [% END %] +
[% blob.issuance.label | html %] + [% l("Place Hold") %] +
+ [% END %] +
+[% END %] +[% IF ctx.mfhd_summaries.size; %] +
+ +[% + mfhd = { + basic_holdings = l('Volumes'), + basic_holdings_add = l('Additional Volume Information'), + supplement_holdings = l('Supplements'), + supplement_holdings_add = l('Additional Supplement Information'), + index_holdings = l('Indexes'), + index_holdings_add = l('Additional Index Information'), + online = l('Online'), + missing = l('Missing'), + incomplete = l('Incomplete'), + }; + + FOREACH serial IN ctx.mfhd_summaries; +%] + + + +[% + FOREACH type IN mfhd.keys; + NEXT UNLESS serial.$type.size; +%] + + + + + [% END %] + + + + [% END %] +
[% l('Holdings summary ([_1])', serial.location) %]
[% mfhd.$type %][% + FOR thing IN serial.$type; + thing.join(", "); + END %]
+
+[% END %] +
diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/series.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/series.tt2 new file mode 100644 index 0000000000..cdfe588f08 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/series.tt2 @@ -0,0 +1,16 @@ +[% + series_tags = ['440', '490', '800', '810', '811', '830', '694']; + loc = CGI.param('loc'); +%] + +
+ + [% FOR tag IN series_tags; %] +
+ [% FOR node IN ctx.marc_xml.findnodes('//*[@tag="' _ tag _ '"]/*') %] + [% IF !loop.first %] [% END %] + [% node.textContent | html %] + [% END %] + [% END; %] +
+
diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/subjects.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/subjects.tt2 new file mode 100644 index 0000000000..3d022313fb --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/subjects.tt2 @@ -0,0 +1,70 @@ +[% + subjects = [ + { + label => l('Subject: '), + xpath => '//*[@tag="600" or @tag="610" or @tag="611" or @tag="630" or @tag="650" or @tag="651"]' + }, { + label => l('Genre: '), + xpath => '//*[@tag="655"]|//*[@tag="659"]' + }, { + label => l('Topic Heading: '), + xpath => '//*[@tag="690"]' + }, { + label => l('Geographic Setting: '), + xpath => '//*[@tag="691"]' + }, { + label => l('Biographical Subject: '), + xpath => '//*[@tag="692"]' + }, { + label => l('Character Attributes: '), + xpath => '//*[@tag="693"]' + }, { + label => l('Setting: '), + xpath => '//*[@tag="698"]' + }, { + label => l('Time Period: '), + xpath => '//*[@tag="699"]' + } + ]; + + BLOCK render_subject; + loc = CGI.param('loc') | uri; + xpath = xpath || '//*[starts-with(@tag,"6")]'; + FOR node IN ctx.marc_xml.findnodes(xpath); + all_terms = []; + FOR subfield IN node.childNodes; + NEXT UNLESS subfield.nodeName == "subfield"; + code = subfield.getAttribute('code'); + NEXT UNLESS code.match('[a-z]'); + IF code.match('[vxyz]'); " — "; END; + # at this point, we actually have a partial term to use. + single_term = subfield.textContent | html; + all_terms.push(subfield.textContent); + total_term = all_terms.join(" ").replace('\s+$', '') | uri; + '' _ single_term _ ''; + END; + IF all_terms.size; "
"; END; + END; + END +%] + +
+ + [% any_subjects = 0; + FOREACH subj IN subjects; + content = PROCESS render_subject(xpath=subj.xpath); + IF content.match('\S'); + any_subjects = 1; %] + + + + + [% END; %] + [% END; %] + [% IF any_subjects == 0 %] + + [% END; %] +
+ [% subj.label %] +
[% content %]
[% l('No Subjects') %]
+
diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/summary.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/summary.tt2 new file mode 100644 index 0000000000..d12ab7a743 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/summary.tt2 @@ -0,0 +1,256 @@ +[% ctx.page_title = attrs.title | html %] + + + + + + + + + + + + +
+ [% ident = attrs.isbn_clean || attrs.upc; IF ident; %] + [% l('Image of item') %] + [% END %] +
+
+ + + + + +
+ [% attrs.title_extended | html %]
+ [% IF attrs.author %] + [% l("Author") %]: + [% attrs.author | html %] + [% END %] + [% IF attrs.online_res.size > 0 %] +
[% l("Online Resources") %]:
+ [% FOR uri IN attrs.online_res %] +
+ [% text = uri.link; IF uri.notes; text = text _ ' - ' _ uri.notes; END %] + [% text | html %] +
+ [% END %] + [% END %] +
+
+
+ +
+ [% + operation = ctx.mylist.grep(ctx.bre_id).size ? "delete" : "add"; + label = (operation == "add") ? l("Add to my list") : l("Remove from my list"); + %] +
+ +
+
+ +
+
+ +
+
+
+
+ [% IF attrs.format_icon %] + [% attrs.format_label %] + [% END %] +
+
+
+
+ + + + + + + + + + + + + + + + + + + +
+ [% IF attrs.isbns.0 %][% l("ISBN") %][% END %] + + [% FOR isbn IN attrs.isbns %][% IF !loop.first; %]
[% END; isbn | html ; END %] +
+ [% IF attrs.phys_desc %][% l("Physical Description") %][% END %] + [% attrs.phys_desc | html %]
+ [% IF attrs.marc_cn; l("Call Number"); END %] + [% attrs.marc_cn | html %] + [% IF attrs.edition; l("Edition"); END %] + [% attrs.edition | html %]
+ [% IF attrs.publisher; l("Publisher"); END %] + [% attrs.publisher | html %] + [% IF attrs.pubdate; l("Publication Date"); END %] + [% attrs.pubdate | html %]
+ + +
+
+ [% l("[quant,_1,Hold,Holds] with [quant,_2,total copy,total copies]", + ctx.record_hold_count, ctx.copy_summary.0.count) %] +
+
[% l('[quant,_1,Copy,Copies] available', ctx.copy_summary.0.available) %]
+
+ +
+
+

+ + + + + + + + + [% IF ctx.is_staff %] + + + + [% END %] + + + + + + [% last_cn = 0; + FOR copy_info IN ctx.copies %] + + + + + + [% IF ctx.is_staff %] + + + + [% END %] + + + + [% END %] + + [% IF ctx.copy_offset > 0; + new_offset = ctx.copy_offset - ctx.copy_limit; + IF new_offset < 0; new_offset = 0; END %] + + [% END %] + [% IF ctx.copies.size >= ctx.copy_limit %] + + [% END %] + + + + + + + + + +
[% l("Location") %][% l("Call Number") %][% l("Barcode") %][% l("Shelving Location") %][% l("Age Hold Protection") %][% l("Create Date") %][% l("Holdable?") %][% l("Status") %][% l("Due Date") %]
[% + # XXX KCLS-specific kludging + org_name = ctx.get_aou(copy_info.circ_lib).name; + dir = org_name | lower | replace('[^\w]', '') | + replace('.+320th', '320th'); %] + [% org_name %] + [% copy_info.call_number_label | html %][% copy_info.barcode | html %][% copy_info.copy_location | html %] + [% copy_info.age_protect ? + ctx.get_crahp(copy_info.age_protect).name : l('None') | html %] + [% date.format( + ctx.parse_datetime(copy_info.create_date), + DATE_FORMAT + ) %][% # Show copy/volume hold links to staff (without + # checking whether they have permissions to do those). + overall_holdable = (copy_info.holdable == 't' AND + copy_info.location_holdable == 't' AND + copy_info.status_holdable == 't'); + IF overall_holdable; + l("Place on"); %] + [% l("copy") %] + [% IF copy_info.call_number != last_cn; + last_cn = copy_info.call_number; + l(" / "); %] + [% l("volume") %] + [% END; + ELSE; + l("No"); + END %][% copy_info.copy_status | html %][% + IF copy_info.due_date; + date.format( + ctx.parse_datetime(copy_info.due_date), + DATE_FORMAT + ); + ELSE; + '-'; + END %]
+ « [% + l('Previous [_1]', ctx.copy_offset - new_offset) %] + + [% + l('Next [_1]', ctx.copy_limit) %] » +
+ [% more_copies_limit = 50 %] [%# TODO: config %] + [% IF ctx.copy_limit != more_copies_limit AND ctx.copies.size >= ctx.copy_limit %] + + [% ELSIF ctx.copy_limit == more_copies_limit %] + + [% END %] +
+ [% IF CGI.param('expand') == 'all' %] + + [% l('Collapse all tabs') %] + [% ELSE %] + + [% l('Expand all tabs') %] + [% END %] +
+ + + + diff --git a/Open-ILS/src/templates_kcls/opac/parts/record/summaryplus.tt2 b/Open-ILS/src/templates_kcls/opac/parts/record/summaryplus.tt2 new file mode 100644 index 0000000000..7796213fa8 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/record/summaryplus.tt2 @@ -0,0 +1,19 @@ +
+ [% IF attrs.summary %] +
+ [% l('Summary: ') %] + [% FOR sum IN attrs.summary %] + [% IF !loop.first; '
'; END %] + [% sum | html %] + [% END %] +
+ [% END %] + + + [% ident = attrs.isbn_clean || attrs.upc %] + +
+ diff --git a/Open-ILS/src/templates_kcls/opac/parts/result/facets.tt2 b/Open-ILS/src/templates_kcls/opac/parts/result/facets.tt2 new file mode 100644 index 0000000000..dd27dd9d27 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/result/facets.tt2 @@ -0,0 +1,129 @@ +
+[% + +close_facets = CGI.param('close_facet') || []; +selected_facets = CGI.param('facet') || []; + +# sorted list of search facets +sorted_facets = []; + +IF facet.display; + + # facet display configuration present. Traverse the + # configuration lists, find the matching facets from + # search facet data, and append them to the sorted + # list of facets. + + FOR display_chunk IN facet.display; + FOR display_field IN display_chunk.facet_order; + # find the matching facet in the facet data + FOR facet IN ctx.search_facets.values; + IF facet.cmf.field_class == display_chunk.facet_class + AND facet.cmf.name == display_field; + sorted_facets.push(facet); + END; + END; + END; + END; + +ELSE; + + # No facet display configuration is present. + # show all facets, sorted by name. + + # collect facet type labels for easier sorting + labels = []; + FOR facet IN ctx.search_facets.values; + labels.push(facet.cmf.label); + END; + + FOR facet_label IN labels.sort; + FOR facet IN ctx.search_facets.values; + IF facet.cmf.label == facet_label; + sorted_facets.push(facet); + END; + END; + END; +END; + +FOR facet IN sorted_facets; + fclass = facet.cmf.field_class; + fname = facet.cmf.name; + close_key = fclass _ fname %] + +
+
+ + + [% IF close_facets.grep(close_key).0; + new_close = []; + FOR fct IN close_facets; + IF fct != close_key; + new_close.push(fct); + END; + END; + expand_url = mkurl('', {close_facet => new_close}); + IF new_close.size == 0; + expand_url = mkurl('', {}, ['close_facet']); + END; + %] + [% l('Expand') %] + [% ELSE %] + [% l('Collapse') %] + [% END %] + +
[% facet.cmf.label %]
+
+ [% IF !close_facets.grep(close_key).0 %] +
+
+ [% FOR facet_data IN facet.data; + display_value = facet_data.value | html; + param_string = fclass _ '|' _ fname _ '[' _ facet_data.value _ ']'; + new_facets = []; + this_selected = 0; + FOR selected IN selected_facets; + IF selected == param_string; + this_selected = 1; + ELSE; + new_facets.push(selected); + END; + END; + IF this_selected; + # This facet is already selected by the user. + # Link removes the facet from the set of selected facets. + %] +
+
+ [% IF new_facets.size == 0 %] + [% display_value %] + [% ELSE %] + [% display_value %] + [% END %] +
+
([% facet_data.count %])
+
 
+
+ [% + ELSE; + # This facet is not currently selected. If selected, + # append this facet to the list of currently active facets. + %] + + [% END %] + [% END %] +
+
+ [% END %] +
+[% END %] +
+ diff --git a/Open-ILS/src/templates_kcls/opac/parts/result/lowhits.tt2 b/Open-ILS/src/templates_kcls/opac/parts/result/lowhits.tt2 new file mode 100644 index 0000000000..fe2d1608e8 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/result/lowhits.tt2 @@ -0,0 +1,94 @@ +
+
+
+

[% l('Sorry, no entries were found for') %] + [% IF is_advanced OR is_special; l('your search'); ELSE %] + [% CGI.param('query') | html %] + [% END %] +
+ [% l('Did you mean') %] + ? +

+ + + + + +
+ [% l('Other Possibilities:') %] +
+
+
+ [% INCLUDE "opac/parts/result/lowhits_purchase.tt2" %] +

+ Keyword Search Tips
+ Try changing to Advanced Search. +

+

+ Adjacency
+ Multiple words are not searched together as a phrase. They will + be found in various parts of the record. To search for a phrase, enclose your + search terms in quotation marks.
+ (example: "garcia marquez") +

+

+ Truncation
+ Words may be right-hand truncated using an asterisk. Use a single asterisk * + to truncate any number of characters.
+ (example: environment* agency) +

+

+ Anchored Searching
+ You may use ^ and $ to indicate "phrase begins with" and + "phrase ends with," respectively, within a search phrase + enclosed in quotation marks.
+ (examples: "^harry" for phrases that begin with + the term harry. + "stone$" for phrases that end in stone.) +

+
+
+
+
+
[% l("Few hits were returned for your search.") %]
+
[% l("Zero hits were returned for your search.") %]
+
+ + +
+ [% l("Maybe you meant:") %] + +
+ +
+ [% l("You will find more hits when searching all item formats:") %] + [% l("Search again with all formats?") %] +
+ +
+ [% l("You may also like to try these related searches:") %] +
+ +
+
+ +
+ [% l("You may also wish to expand your search range to:") %] + +
+ +
+ [% l("You can try searching the same terms by:") %] + [% l("title") %] + [% l("author") %] + [% l("subject") %] + [% l("series") %] + [% l("keyword") %] +
+
+
diff --git a/Open-ILS/src/templates_kcls/opac/parts/result/lowhits_purchase.tt2 b/Open-ILS/src/templates_kcls/opac/parts/result/lowhits_purchase.tt2 new file mode 100644 index 0000000000..cdfde4641c --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/result/lowhits_purchase.tt2 @@ -0,0 +1,6 @@ +

+ Still not finding what you are looking for?
+ Request that KCLS purchase the material you are looking for by making a + Purchase Request
+ Note: You must be logged in to make a Purchase Request
+

diff --git a/Open-ILS/src/templates_kcls/opac/parts/result/paginate.tt2 b/Open-ILS/src/templates_kcls/opac/parts/result/paginate.tt2 new file mode 100644 index 0000000000..6582c01bb8 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/result/paginate.tt2 @@ -0,0 +1,59 @@ +[% BLOCK results_count_header %] +
+ + + + + + +
[% l('Search Results') %] + [% |l(ctx.result_start, ctx.result_stop, ctx.hit_count) %] + Results [_1] - [_2] of [_3] + [% END %] + + [% |l(page + 1, page_count) %](page [_1] of [_2])[% END %] + + + + + [% class = 'search_page_nav_link'; + href = '#'; + IF page > 0; + href = mkurl('', {page => page - 1}); + ELSE; class = class _ ' invisible'; END; + %] + [% l('Previous') %] + + + [% # show links to 4 previous pages, the current page, and 3 more pages. + added = 0; + pageitr = page - 5; + IF page_count > 1; # no need to paginate 1 page + WHILE (pageitr = pageitr + 1) < page_count; + IF pageitr < 0; NEXT; END; + IF pageitr == page; %] + [% pageitr + 1%] + [% ELSE %] + [% pageitr + 1%] + [% END; + added = added + 1; + IF added == 8; LAST; END; + END; + END; + %] + + + [% class = 'search_page_nav_link'; + href = '#'; + IF (page + 1) < page_count; + href = mkurl('', {page => page + 1}); + ELSE; class = class _ ' invisible'; END; + %] + [% l('Next') %] + +
+
+[% END %] + diff --git a/Open-ILS/src/templates_kcls/opac/parts/result/table.tt2 b/Open-ILS/src/templates_kcls/opac/parts/result/table.tt2 new file mode 100644 index 0000000000..aa55f151fa --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/result/table.tt2 @@ -0,0 +1,217 @@ +[% PROCESS "opac/parts/misc_util.tt2"; + + ctx.result_start = 1 + ctx.page_size * page; + ctx.result_stop = ctx.page_size * (page + 1); + IF ctx.result_stop > ctx.hit_count; ctx.result_stop = ctx.hit_count; END; + + result_count = ctx.result_start; +%] +
+ +[% PROCESS "opac/parts/result/paginate.tt2" %] +[% ctx.results_count_header = PROCESS results_count_header; + ctx.results_count_header %] + +
+ + + + + + +
+
+ [% INCLUDE 'opac/parts/result/facets.tt2' %] +
+
+ + + [% FOR rec IN ctx.records; + attrs = {marc_xml => rec.marc_xml}; + PROCESS get_marc_attrs args=attrs %] + + + + [% END %] + +
+ + + + + + + + + + + + + + + + + + +
[% + result_count; result_count = result_count + 1 + %]. + [% ident = attrs.isbn_clean || attrs.upc; IF ident; %] + [% l('Image of item') %]
+ [% END %] +
+ +
+
+ [% attrs.author | html %] +    + [% attrs.pubdate | html %] +
+ + + + + + + [% IF CGI.param('detail_record_view') %] + + + + + + + + + + + + + + + + + + [% END %] + +
+ [% l('Call number:') %] + [% attrs.marc_cn | html %]
+ [% l('Publisher:') %] + [% attrs.publisher | html %]
+ [% l('ISBN:') %] + [% attrs.isbns.0 | html %]
+ [% l('Edition:') %] + [% attrs.edition | html %]
+ [% l('Phys. Desc.:') %] + + [% args.phys_desc | html %] +
+
+ [% l('[quant,_1,hold,holds] on first copy returned of [quant,_2,copy,copies]', + rec.hold_count, attrs.copy_counts.count) %] +
+ [% l('[quant,_1,copy,copies] available', attrs.copy_counts.available) %] +
+ [% IF rec.user_circulated %] +
+ [% l('Checked Out Before') %] + [% l('I have checked this item out before') %] +
+ [% END %] +
+
+ + + | + | + + + +
+
+ + [% IF attrs.format_icon %] + [% attrs.format_label | html %] + [% END %] + + + + + + + [% l("Browse in Google Books Search") %] + + + +
+
+ +
+ [% operation = ctx.mylist.grep(rec.id).size ? "delete" : "add"; + label = (operation == "add") ? l("Add to") : l("Remove from"); %] +
+ + +
+
+ +
+
+ +
+
+ [% IF ENV.OILS_CONTENT_CAFE_USER %] + + [% END %] +
+
+
+ + +
+ + +
+
+
+
+
+ [% ctx.results_count_header %] +
diff --git a/Open-ILS/src/templates_kcls/opac/parts/searchbar.tt2 b/Open-ILS/src/templates_kcls/opac/parts/searchbar.tt2 new file mode 100644 index 0000000000..8b089131c7 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/searchbar.tt2 @@ -0,0 +1,78 @@ +[% PROCESS "opac/parts/org_selector.tt2" %] + diff --git a/Open-ILS/src/templates_kcls/opac/parts/tips.tt2 b/Open-ILS/src/templates_kcls/opac/parts/tips.tt2 new file mode 100644 index 0000000000..f4e73ed08b --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/tips.tt2 @@ -0,0 +1,11 @@ + +
+
+
+ [% l("Click on a folder icon in the sidebar to access related quick searches") %] + [% l("If you don't find what you want try expanding your search using the range selector at the right of the search bar") %] +
+ [% l("Tip:") %] +
+
+ diff --git a/Open-ILS/src/templates_kcls/opac/parts/topnav.tt2 b/Open-ILS/src/templates_kcls/opac/parts/topnav.tt2 new file mode 100644 index 0000000000..763c57f9ea --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/topnav.tt2 @@ -0,0 +1,107 @@ +[% INCLUDE "opac/parts/banner.tt2" %] +[% IF !ctx.is_staff %] + +[% END %] +[% INCLUDE "opac/parts/topnav_links.tt2" %] diff --git a/Open-ILS/src/templates_kcls/opac/parts/topnav_links.tt2 b/Open-ILS/src/templates_kcls/opac/parts/topnav_links.tt2 new file mode 100644 index 0000000000..6ea4b4de7b --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/topnav_links.tt2 @@ -0,0 +1,13 @@ + diff --git a/Open-ILS/src/templates_kcls/opac/parts/topnav_logo.tt2 b/Open-ILS/src/templates_kcls/opac/parts/topnav_logo.tt2 new file mode 100644 index 0000000000..f9d4320790 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/parts/topnav_logo.tt2 @@ -0,0 +1,2 @@ + [% l('KCLS Logo') %] diff --git a/Open-ILS/src/templates_kcls/opac/password_reset.tt2 b/Open-ILS/src/templates_kcls/opac/password_reset.tt2 new file mode 100644 index 0000000000..beccb2abac --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/password_reset.tt2 @@ -0,0 +1,72 @@ +[% PROCESS "opac/parts/header.tt2"; + WRAPPER "opac/parts/base.tt2"; + INCLUDE "opac/parts/topnav.tt2"; + ctx.page_title = l('Library system password reset request form'); +%] +
+ [% INCLUDE "opac/parts/printnav.tt2" %] + [% INCLUDE "opac/parts/searchbar.tt2" %] +
+ +[% + uuid = ctx.page_args.0; + msg_map = { + SUCCESS => l('Password has been reset'), + NO_MATCH => l('Passwords did not match. Please try again'), + NOT_ACTIVE => l('This was not an active password reset request. Your password has not been reset.'), + NOT_STRONG => l('The password you chose was not considered complex enough to protect your account. Your password has not been reset.'), + TWO_PASSWORDS => l('Please enter and repeat your new password.'), + REQUEST_SUCCESS => l('Your user name or barcode has been submitted for a password reset. ' _ + 'If a matching account with an email address is found, you will soon receive an email at that address with further instructions for resetting your password.') + } +%] +
+
+
+

[% stat = ctx.pwreset.status; msg_map.$stat %]

+ [% IF uuid %] + [% IF stat == 'SUCCESS' %] +

[% l('Log in to My Account') %] + [% ELSE %] +

+ + + + + + + + + + + + + +
+ +
+
+ [% END %] + [% ELSIF !ctx.pwreset.status %] +

[% l('Please enter your user name or barcode to identify your library account and request a password reset') %]

+
+ + + + + + + + + +
+ [% IF ctx.get_org_setting(ctx.physical_loc || ctx.aou_tree.id, 'circ.password_reset_request_requires_matching_email') %] +
+ [% END %] + +
+ [% END %] +
+
+[% END %] + diff --git a/Open-ILS/src/templates_kcls/opac/place_hold.tt2 b/Open-ILS/src/templates_kcls/opac/place_hold.tt2 new file mode 100644 index 0000000000..bbe6951c33 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/place_hold.tt2 @@ -0,0 +1,20 @@ +[% PROCESS "opac/parts/header.tt2"; + WRAPPER "opac/parts/base.tt2"; + INCLUDE "opac/parts/topnav.tt2"; + ctx.page_title = l("Place Hold") %] +
+ [% INCLUDE "opac/parts/printnav.tt2" %] + [% INCLUDE "opac/parts/searchbar.tt2" %] +
+
+
+
+ [% IF ctx.hold_attempt_made %] + [% INCLUDE "opac/parts/place_hold_result.tt2" %] + [% ELSE %] + [% INCLUDE "opac/parts/place_hold.tt2" %] + [% END %] +
+
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/record.tt2 b/Open-ILS/src/templates_kcls/opac/record.tt2 new file mode 100644 index 0000000000..2507a4457d --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/record.tt2 @@ -0,0 +1,15 @@ +[% PROCESS "opac/parts/header.tt2"; + WRAPPER "opac/parts/base.tt2"; + INCLUDE "opac/parts/topnav.tt2"; + ctx.page_title = l("Record Detail") %] +
+ [% INCLUDE "opac/parts/printnav.tt2" %] + [% INCLUDE "opac/parts/searchbar.tt2" %] +
+
+
+ [% INCLUDE "opac/parts/record/body.tt2" %] +
+
+
+[% END %] diff --git a/Open-ILS/src/templates_kcls/opac/results.tt2 b/Open-ILS/src/templates_kcls/opac/results.tt2 new file mode 100644 index 0000000000..d19ee47f45 --- /dev/null +++ b/Open-ILS/src/templates_kcls/opac/results.tt2 @@ -0,0 +1,83 @@ +[% PROCESS "opac/parts/header.tt2"; + USE POSIX; + + WRAPPER "opac/parts/base.tt2"; + INCLUDE "opac/parts/topnav.tt2"; + + IF is_advanced || is_special; + ctx.page_title = l("Search Results"); + ELSE; + ctx.page_title = l("Search Results: ") _ CGI.param('query') | html; + END; + + page = CGI.param('page'); + page = page.match('^\d+$') ? page : 0; # verify page is a sane value + + page_count = ctx.page_size == 0 ? 1 : POSIX.ceil(ctx.hit_count / ctx.page_size); +%] +
+
+ [% INCLUDE "opac/parts/printnav.tt2" %] + [% INCLUDE "opac/parts/searchbar.tt2" took_care_of_form=1 %] +
+
+
+
+
+ [% l('Another Search') %] +
+
+ [% l('Advanced Search') %] +
+ [% IF ctx.mylist.size %] +
+ [% l('View My List') %] +
+ [% END %] +
+
[% l('Sort by') %]
+ [% INCLUDE "opac/parts/filtersort.tt2" value=CGI.param('sort') submit_on_change=1 %] +
+ + +
+ + + + +
+
+
+
+
+
+
+
+ [% path = "opac/parts/result/" _ + (ctx.records.size ? "table.tt2" : "lowhits.tt2"); + INCLUDE $path %] +
+
+
+
+[% END %] -- 2.11.0