Move templates out of a web-served directory user/dbs/ttopac-move-templates
authorDan Scott <dan@coffeecode.net>
Thu, 30 Jun 2011 17:57:59 +0000 (13:57 -0400)
committerDan Scott <dan@coffeecode.net>
Thu, 30 Jun 2011 17:57:59 +0000 (13:57 -0400)
It has always been dicey to keep templates in the web-served
/openils/var/web directory; with the rise of config.tt2 it is past time
to get the templates out of there.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
430 files changed:
Open-ILS/examples/oils_web.xml.example
Open-ILS/src/Makefile.am
Open-ILS/src/templates/base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/claim_dialog.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/final_claim_dialog.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/info.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/inv_dialog.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/jubgrid.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/li_table.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/li_table_pager.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/notes.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/claim_eligible.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/list_currency_types.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/list_funding_sources.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/list_funds.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/view_fund.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/view_funding_source.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/view_provider.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/invoice/view.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/findbib.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/history.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/related.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/search.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/worksheet.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/bib_search.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/brief_record.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/from_bib.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/list.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/upload.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/user_request.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/view.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/create.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/edi_messages.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/events.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/history.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/item_table.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/search.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/view.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/receiving/process.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/search/unified.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/settings/li_attr.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/actor/user/register.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/actor/user/register_table.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/actor/user/trigger_events.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/capture.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/pickup.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/pull_list.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/reservation.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/return.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/cat/authority/list.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/audio_config.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/banner.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/circ_page.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/fines.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/holds_page.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/main.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/patron_login.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/payment.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/summary.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/cancel_reason.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/claim_event_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/claim_policy.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/claim_policy_action.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/claim_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/distribution_formula.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/edi_account.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/exchange_rate.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/fund_tag.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/invoice_item_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/invoice_payment_method.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/lineitem_alert.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/lineitem_marc_attr_def.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/provider.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/action/survey.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/action/survey/edit.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/action_trigger/event_definition.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/action_trigger/event_definition_data.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/asset/copy_location_order.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/asset/copy_template.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/biblio/monograph_part.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource_attr.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource_attr_map.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource_attr_value.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/acn_prefix.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/acn_suffix.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/actor_sip_fields.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/asset_sip_fields.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/barcode_completion.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/billing_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/circ_matrix_matchpoint.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/circ_matrix_weights.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/circ_modifier.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/coded_value_map.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/global_flag.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/hard_due_date.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/hard_due_date_values.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/hold_matrix_matchpoint.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/hold_matrix_weights.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/idl_field_doc.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/metabib_field.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/org_unit_setting_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/record_attr_definition.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/rule_age_hold_protect.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/rule_circ_duration.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/rule_max_fine.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/rule_recurring_fine.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/standing_penalty.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/usr_setting_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/weight_assoc.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/z3950_source.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/permission/grp_penalty_threshold.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/footer.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/header.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/menu.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/advanced.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/home.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/login.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/mylist.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/circ_history.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/circs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/hold_history.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/holds.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/holds/edit.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/lists.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/main.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/main_pay.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/main_payment_form.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/main_payments.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/prefs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/prefs_notify.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/prefs_settings.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/receipt_email.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/receipt_print.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/update_email.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/update_password.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/update_username.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/advanced/global_row.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/advanced/search.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/anon_list.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/chilifresh.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/cn_browse.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/coded_value_selector.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/config.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/filtersort.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/footer.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/header.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/homesearch.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/js.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/login/form.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/login/help.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/login/password_hint.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/misc_util.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/main_base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/main_refund_policy.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/prefs_base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/prefs_hints.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/org_selector.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/place_hold.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/printnav.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/qtype_selector.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/authors.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/awards.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/body.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/cn_details.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/copyinfo.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/extras.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/issues.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/refworks.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/subjects.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/summary.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/result/lowhits.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/result/lowhits_purchase.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/result/table.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/searchbar.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/tips.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/topnav.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/topnav_links.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/topnav_logo.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/place_hold.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/record.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/results.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/list_item.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/list_stream.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/list_subscription.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/print_routing_list_users.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/subscription.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/subscription/caption_and_pattern.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/subscription/distribution.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/subscription/issuance.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/attrs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/export.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/item_attrs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/marchtml.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/matches.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/profiles.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/progress.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/queue.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/queueselect.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/toolbar.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/upload.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/vandelay.tt2 [new file with mode: 0644]
Open-ILS/src/templates/login.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/myopac/main_refund_policy.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/footer.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/homesearch.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/login/help.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/myopac/prefs_hints.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/printnav.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/result/lowhits_purchase.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/topnav_links.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/topnav_logo.tt2 [new file with mode: 0644]
Open-ILS/web/templates/base.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/claim_dialog.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/final_claim_dialog.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/info.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/inv_dialog.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/jubgrid.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/li_table.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/li_table_pager.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/notes.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/claim_eligible.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/list_currency_types.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/list_funding_sources.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/list_funds.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/view_fund.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/view_funding_source.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/view_provider.tt2 [deleted file]
Open-ILS/web/templates/default/acq/invoice/view.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/findbib.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/history.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/related.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/search.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/worksheet.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/bib_search.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/brief_record.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/from_bib.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/list.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/upload.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/user_request.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/view.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/create.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/edi_messages.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/events.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/history.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/item_table.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/search.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/view.tt2 [deleted file]
Open-ILS/web/templates/default/acq/receiving/process.tt2 [deleted file]
Open-ILS/web/templates/default/acq/search/unified.tt2 [deleted file]
Open-ILS/web/templates/default/acq/settings/li_attr.tt2 [deleted file]
Open-ILS/web/templates/default/actor/user/register.tt2 [deleted file]
Open-ILS/web/templates/default/actor/user/register_table.tt2 [deleted file]
Open-ILS/web/templates/default/actor/user/trigger_events.tt2 [deleted file]
Open-ILS/web/templates/default/base.tt2 [deleted file]
Open-ILS/web/templates/default/booking/capture.tt2 [deleted file]
Open-ILS/web/templates/default/booking/pickup.tt2 [deleted file]
Open-ILS/web/templates/default/booking/pull_list.tt2 [deleted file]
Open-ILS/web/templates/default/booking/reservation.tt2 [deleted file]
Open-ILS/web/templates/default/booking/return.tt2 [deleted file]
Open-ILS/web/templates/default/cat/authority/list.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/audio_config.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/banner.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/circ_page.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/fines.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/holds_page.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/main.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/patron_login.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/payment.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/summary.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/cancel_reason.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/claim_event_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/claim_policy.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/claim_policy_action.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/claim_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/distribution_formula.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/edi_account.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/exchange_rate.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/fund_tag.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/invoice_item_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/invoice_payment_method.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/lineitem_alert.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/lineitem_marc_attr_def.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/provider.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/action/survey.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/action/survey/edit.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/action_trigger/event_definition.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/action_trigger/event_definition_data.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/asset/copy_location_order.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/asset/copy_template.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/biblio/monograph_part.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource_attr.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource_attr_map.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource_attr_value.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/acn_prefix.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/acn_suffix.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/actor_sip_fields.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/asset_sip_fields.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/barcode_completion.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/billing_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/circ_matrix_matchpoint.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/circ_matrix_weights.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/circ_modifier.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/coded_value_map.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/global_flag.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/hard_due_date.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/hard_due_date_values.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/hold_matrix_matchpoint.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/hold_matrix_weights.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/idl_field_doc.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/metabib_field.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/org_unit_setting_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/record_attr_definition.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/rule_age_hold_protect.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/rule_circ_duration.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/rule_max_fine.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/rule_recurring_fine.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/standing_penalty.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/usr_setting_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/weight_assoc.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/z3950_source.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/permission/grp_penalty_threshold.tt2 [deleted file]
Open-ILS/web/templates/default/footer.tt2 [deleted file]
Open-ILS/web/templates/default/header.tt2 [deleted file]
Open-ILS/web/templates/default/menu.tt2 [deleted file]
Open-ILS/web/templates/default/opac/advanced.tt2 [deleted file]
Open-ILS/web/templates/default/opac/home.tt2 [deleted file]
Open-ILS/web/templates/default/opac/login.tt2 [deleted file]
Open-ILS/web/templates/default/opac/mylist.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/circ_history.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/circs.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/hold_history.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/holds.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/holds/edit.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/lists.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/main.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/main_pay.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/main_payment_form.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/main_payments.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/prefs.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/prefs_notify.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/prefs_settings.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/receipt_email.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/receipt_print.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/update_email.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/update_password.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/update_username.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/advanced/global_row.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/advanced/search.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/anon_list.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/base.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/chilifresh.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/cn_browse.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/coded_value_selector.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/config.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/filtersort.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/footer.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/header.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/homesearch.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/js.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/login/form.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/login/help.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/login/password_hint.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/misc_util.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/base.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/main_base.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/main_refund_policy.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/prefs_base.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/prefs_hints.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/org_selector.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/place_hold.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/printnav.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/qtype_selector.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/authors.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/awards.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/body.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/cn_details.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/copyinfo.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/extras.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/issues.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/refworks.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/subjects.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/summary.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/result/lowhits.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/result/lowhits_purchase.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/result/table.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/searchbar.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/tips.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/topnav.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/topnav_links.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/topnav_logo.tt2 [deleted file]
Open-ILS/web/templates/default/opac/place_hold.tt2 [deleted file]
Open-ILS/web/templates/default/opac/record.tt2 [deleted file]
Open-ILS/web/templates/default/opac/results.tt2 [deleted file]
Open-ILS/web/templates/default/serial/list_item.tt2 [deleted file]
Open-ILS/web/templates/default/serial/list_stream.tt2 [deleted file]
Open-ILS/web/templates/default/serial/list_subscription.tt2 [deleted file]
Open-ILS/web/templates/default/serial/print_routing_list_users.tt2 [deleted file]
Open-ILS/web/templates/default/serial/subscription.tt2 [deleted file]
Open-ILS/web/templates/default/serial/subscription/caption_and_pattern.tt2 [deleted file]
Open-ILS/web/templates/default/serial/subscription/distribution.tt2 [deleted file]
Open-ILS/web/templates/default/serial/subscription/issuance.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/attrs.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/export.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/item_attrs.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/marchtml.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/matches.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/profiles.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/progress.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/queue.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/queueselect.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/toolbar.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/upload.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/vandelay.tt2 [deleted file]
Open-ILS/web/templates/login.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/myopac/main_refund_policy.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/footer.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/homesearch.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/login/help.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/myopac/prefs_hints.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/printnav.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/result/lowhits_purchase.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/topnav_links.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/topnav_logo.tt2 [deleted file]

index 0728082..9961490 100644 (file)
@@ -51,8 +51,7 @@
          It's possible to override individual or sets of templates by putting them into
          a path in front of the default template path -->
     <template_paths>
-        <!-- XXX we should really move these out of the default web root -->
-        <path>/openils/var/web/templates</path>
+        <path>/openils/var/templates</path>
     </template_paths>
 
     <handlers>
index e14f4c2..1ef6c9e 100644 (file)
@@ -168,6 +168,9 @@ uninstall-hook:
 ilscore-install:
        @echo $@
        $(MKDIR_P) $(DESTDIR)$(TEMPLATEDIR)
+       cp -r @srcdir@/templates/base.tt2 $(DESTDIR)$(TEMPLATEDIR)
+       cp -r @srcdir@/templates/login.tt2 $(DESTDIR)$(TEMPLATEDIR)
+       cp -r @srcdir@/templates/default $(DESTDIR)$(TEMPLATEDIR)
        cp -r @srcdir@/templates/marc $(DESTDIR)$(TEMPLATEDIR)
        cp -r @srcdir@/templates/password-reset $(DESTDIR)$(TEMPLATEDIR)
        @echo "Installing string templates to $(DESTDIR)$(TEMPLATEDIR)"
diff --git a/Open-ILS/src/templates/base.tt2 b/Open-ILS/src/templates/base.tt2
new file mode 100644 (file)
index 0000000..d4f4ebb
--- /dev/null
@@ -0,0 +1,27 @@
+[%- ctx.final_dtd = 
+    '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' -%]
+[%- IF !ctx.dtd; ctx.dtd = ctx.final_dtd; END -%]
+[% ctx.dtd %]
+<html xmlns='http://www.w3.org/1999/xhtml' lang='[% ctx.locale %]' xml:lang='[% ctx.locale %]'>
+    <head>
+        <title>[% ctx.page_title %]</title>
+        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+        <link rel='stylesheet' type='text/css'
+            href='[% ctx.media_prefix %]/css/skin/[% ctx.skin %].css' />
+        <link rel='stylesheet' type='text/css'
+            href='[% ctx.media_prefix %]/css/theme/[% ctx.skin %].css' />
+           <script language='javascript' src='/IDL2js' type='text/javascript'></script>
+        <script type="text/javascript">var djConfig = {parseOnLoad:true,isDebug:false};</script>
+        <script type="text/javascript" src="/js/dojo/dojo/dojo.js"></script>
+        <script type="text/javascript" src="[% ctx.media_prefix %]/js/dojo/dojo/openils_dojo.js"></script>
+        <script type="text/javascript" src="[% ctx.media_prefix %]/js/dojo/opensrf/md5.js"></script>
+        <script type="text/javascript">
+            var oilsBasePath = '[% ctx.base_path %]';
+        </script>
+        <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/base.js"></script>
+    </head>
+    <body class='tundra'>
+        [% INCLUDE login.tt2 %] <!-- shared login page -->
+        [% content %] <!-- Page body -->
+    </body>
+</html>
diff --git a/Open-ILS/src/templates/default/acq/common/claim_dialog.tt2 b/Open-ILS/src/templates/default/acq/common/claim_dialog.tt2
new file mode 100644 (file)
index 0000000..741a8a6
--- /dev/null
@@ -0,0 +1,60 @@
+<div style="width: 300px; height: 300px; overflow: auto;">
+    <script
+        src="[% ctx.media_prefix %]/js/ui/default/acq/common/claim_dialog.js">
+    </script>
+    <div><big>Claims</big></div>
+    <div>Against item:
+        <span id="acq-lit-li-claim-dia-li-title"></span>
+        (<span id="acq-lit-li-claim-dia-li-id"></span>)
+    </div>
+    <div id="acq-lit-li-claim-dia-show" class="hidden">
+        <ul id="acq-lit-li-claim-dia-lid-list">
+            <li name="lid">
+                <span name="barcode"></span> /
+                <span name="recvd"></span>
+                <ul name="claims">
+                    <li name="claim">
+                        <span name="type"></span>
+                        <a name="voucher"
+                            href="javascript:void(0);">Show Voucher</a>
+                    </li>
+                </ul>
+            </li>
+        </ul>
+        <hr />
+    </div>
+    <div id="acq-lit-li-claim-dia-initiate" class="hidden">
+        <div><big>Initiate New Claims</big></div>
+        <div id="acq-lit-li-claim-dia-lid-list-init">
+            <div name="lid_to_claim">
+                <input type="checkbox" name="claimable_lid" />
+                <label name="claimable_lid_label">
+                    <span name="barcode"></span> /
+                    <span name="recvd"></span>
+                </label>
+            </div>
+        </div>
+        <hr />
+        <div id="acqclet-display" class="hidden">
+            <div><big>Select Claim Action</big></div>
+            <table>
+                <tbody id="acqclet-tbody">
+                    <tr name="acqclet-template">
+                        <td>
+                            <input type="checkbox" name="acqclet-checkbox" />
+                        </td>
+                        <td style="padding-left: 1em;">
+                            <label name="acqclet-label">
+                                (${ou}) ${code} <em>${description}</em>
+                                <span style="color: #069;">
+                                    ${library_initiated}</span>
+                            </label>
+                        </td>
+                    </tr>
+                </tbody>
+            </table>
+            <hr />
+        </div>
+        <button id="acq-lit-li-claim-dia-claim">Claim selected</button>
+    </div>
+</div>
diff --git a/Open-ILS/src/templates/default/acq/common/final_claim_dialog.tt2 b/Open-ILS/src/templates/default/acq/common/final_claim_dialog.tt2
new file mode 100644 (file)
index 0000000..882741c
--- /dev/null
@@ -0,0 +1,8 @@
+<div id="acq-eligible-claim-controls">
+    <label for="acq-eligible-claim-type">Claim type:</label>
+    <span id="acq-eligible-claim-type"></span>
+    <label for="acq-eligible-claim-note">Note:</label>
+    <input dojoType="dijit.form.TextBox" id="acq-eligible-claim-note" />
+    <button id="acq-eligible-claim-submit">Claim</button>
+</div>
+
diff --git a/Open-ILS/src/templates/default/acq/common/info.tt2 b/Open-ILS/src/templates/default/acq/common/info.tt2
new file mode 100644 (file)
index 0000000..6fc5456
--- /dev/null
@@ -0,0 +1,24 @@
+[% which_lc = which | lower %]
+    <div id="acq-[% which_lc %]-info-div" class="hidden">
+        <div class="acq-menu-bar">
+            <div dojoType="dijit.form.Button" id="acq-[% which_lc %]-info-back-button">&#x2196; [% IF which == "Lit" %]Return[% ELSE %]Hide[% END %]</div>
+        </div>
+        <table>
+            <tbody id="acq-[% which_lc %]-info-tbody">
+                <tr id="acq-[% which_lc %]-info-row"><td name="label"/><td name="value"/></tr>
+            </tbody>
+        </table>
+[% IF which == "Lit" %]
+        <div class="hidden" id="acq-[% which_lc %]-info-related">
+            Show the <a name="rel_link" href="#"><span name="related_number"></span> lineitem(s)</a> related to the same bibliographic record.
+        </div>
+        <div style="margin-top:40px;">
+            <h3 id="acq-[% which_lc %]-marc-order-record-label">MARC Order Record</h3>
+            <h3 id="acq-[% which_lc %]-marc-real-record-label">MARC ILS Record</h3>
+            <div>
+                <div dojoType="dijit.form.Button" jsId="acq[% which %]EditOrderMarc" class="hidden">Edit MARC Order Record</div>
+            </div>
+            <div id="acq-[% which_lc %]-marc-div" style="margin-top:20px;"> </div>
+        </div>
+[% END %]
+    </div>
diff --git a/Open-ILS/src/templates/default/acq/common/inv_dialog.tt2 b/Open-ILS/src/templates/default/acq/common/inv_dialog.tt2
new file mode 100644 (file)
index 0000000..3bec75c
--- /dev/null
@@ -0,0 +1,30 @@
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/inv_dialog.js">
+</script>
+<big><strong>Choose invoice</strong></big>
+<table class="acq-link-invoice-dialog">
+    <tr>
+        <th>
+            <label for="acq-[% which %]-link-invoice-inv_ident">
+                Invoice #
+            </label>
+        </th>
+        <td>
+            <input id="acq-[% which %]-link-invoice-inv_ident"
+                dojoType="dijit.form.TextBox" />
+        </td>
+    </tr>
+    <tr>
+        <th>
+            <label for="acq-[% which %]-link-invoice-provider">Provider</label>
+        </th>
+        <td>
+            <span id="acq-[% which %]-link-invoice-provider"></span>
+        </td>
+    </tr>
+    <tr>
+        <td colspan="2" style="text-align: center;">
+            <button id="acq-[% which %]-link-invoice-link"
+                dojoType="dijit.form.Button" type="submit">Link</button>
+        </td>
+    </tr>
+</table>
diff --git a/Open-ILS/src/templates/default/acq/common/jubgrid.tt2 b/Open-ILS/src/templates/default/acq/common/jubgrid.tt2
new file mode 100644 (file)
index 0000000..ce13d56
--- /dev/null
@@ -0,0 +1,209 @@
+[%#-
+This template creates a split screen Dojo layout. The top frame
+of the screen holds a list of of JUBs, or titles. Clicking on a
+title in the top frame will load the purchase details for all the
+copies on order for that title into the bottom frame.
+
+To create a display for a set of JUBs, create a Dojo store and
+model for the set of JUBs, then place the following lines in your
+HTML where you want the display to appear:
+
+    <%namespace file='/oils/default/common/jubgrid.html' name='jubgrid'/>
+    ${jubgrid.jubgrid('dom_prefix', 'grid_jsid')}
+
+where 'dom_prefix' is a string that will be used as the prefix
+for the DOM notes that are created by this template, and
+'grid_jsid' is a valid JavaScript identifier that will name the
+DOM node to which the list of JUBs will be attached.  For example
+
+    ${jubgrid.jubgrid('oils-acq-picklist', 'pickListGrid', hideDetails)}
+
+will create a Dojo grid with the DOM id of
+
+    'oils-acq-picklist-JUB-grid'
+
+and a jsid of
+
+    pickListGrid
+
+To fill the grid with data, call the javascript function
+
+    JUBGrid.populate(grid_jsid, model)
+
+'grid_jsid' is the same javascript id that was used to
+instantiate the template, and model is a javascript variable
+pointing to the JUB model (and store) that you have created.
+-#%]
+
+[% UNLESS hide_details %]
+<div dojoType='dijit.layout.ContentPane' style='height:100%;'>
+[% END %]
+
+    <style type='text/css'>
+        .grid_container {width: 100%; height: 100%;}
+    </style>
+
+    <script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/common/jubgrid.js'> </script>
+    <script type="text/javascript" src='[% ctx.media_prefix %]/js/dojo/openils/CopyLocation.js'> </script>
+    <script type="text/javascript">
+    JUBGrid.getPO = function(rowIndex) {
+        var data = JUBGrid.jubGrid.model.getRow(rowIndex);
+        if (!(data && data.purchase_order)) return '';
+        return "<a href='[% ctx.base_path %]/acq/po/view/" + data.purchase_order+"'>"+data.purchase_order+"</a>";
+    }
+    JUBGrid.jubGridLayout = [{
+        //noscroll: true,
+        cells: [[
+            {name: 'ID', field: 'id', width:'auto'},
+            {name: 'Title', width: "180px", get:JUBGrid.getJUBTitle},
+            {name: 'Author', get:JUBGrid.getJUBAuthor, width:'auto'},
+            {name: 'ISBN', get:JUBGrid.getJUBIsbn, width:'auto'},
+            {name: 'Pubdate', get:JUBGrid.getJUBPubdate, width:'auto'},
+            {name: 'Actual Price', 
+                field:'actual_price',
+                get:JUBGrid.getJUBActualPrice,
+                editor:dojox.grid.editors.Dijit, width:'auto', 
+                editorClass: "dijit.form.CurrencyTextBox" 
+            },
+            {name: 'Estimated Price', 
+                field:'estimated_price',
+                get:JUBGrid.getJUBEstimatedPrice, width:'auto',
+                editor:dojox.grid.editors.Dijit, 
+                editorClass: "dijit.form.CurrencyTextBox" 
+            },
+            {name: 'Vendor', width:'auto',
+            field: 'provider', get:JUBGrid.getProvider,
+            editor:openils.editors.ProviderSelectEditor,
+           },
+            {name: 'No. Copies', field: 'item_count', width:'auto'},
+            {name: 'State', field: 'state', width:'auto'},
+            {name: 'PO', get:JUBGrid.getPO, width:'auto'}
+        ]]
+    }];
+
+    JUBGrid.jubDetailGridLayout = [{
+        cells: [[
+            {name:"ID", field:"id"},
+            {name:"Fund", field:"fund",
+                get:JUBGrid.getLIDFundCode,
+                editor: openils.editors.FundSelectEditor,
+            },
+            {name:"Branch", field:"owning_lib",
+                   get:JUBGrid.getLIDLibName,
+                   editor: openils.editors.OrgUnitSelectEditor
+               },
+            {name:"Barcode", field:"barcode", width:'auto',
+                editor:dojox.grid.editors.Dijit, 
+                editorClass: "dijit.form.TextBox" 
+               },
+            {name:"Call Number", field:"cn_label", width:'auto',
+                editor:dojox.grid.editors.Dijit, 
+                editorClass: "dijit.form.TextBox" 
+               },
+            {name:"Shelving Location", field:"location", width:'auto',
+                editor:openils.editors.CopyLocationSelectEditor,
+                get:JUBGrid.getCopyLocation
+               },
+            {name:"Receive Time", width:'auto',
+                get:JUBGrid.getRecvTime
+               },
+        ]]
+    }];
+
+    JUBGrid.jubDetailGridLayoutReadOnly = [{
+        cells: [[
+            {name:'ID', field:"id"},
+            {name:'Fund', field:"fund",
+             get:JUBGrid.getLIDFundCode,
+            },
+            {name:'Branch', field:"owning_lib",
+                   get:JUBGrid.getLIDLibName,
+               },
+           {name:'Barcode', field:"barcode", width:'auto'},
+            {name:'Call Number', field:"cn_label", width:'auto'},
+           {name:'Shelving Location', field:"location", 
+                width:'auto', get:JUBGrid.getCopyLocation},
+        ]]
+    }];
+    </script>
+
+[% UNLESS hide_details %]
+    <!-- button bar for lineitems -->
+    <script type="text/javascript">JUBGrid.showDetails = true;</script>
+    <div id="[% domprefix %]-container" class='container'
+        dojoType="dijit.layout.ContentPane" sizeMin="" sizeShare="">
+        <div dojoType="dijit.layout.ContentPane"
+             id='[% domprefix %]-jub-buttonbar'>
+            <button dojoType="dijit.form.Button" onclick="JUBGrid.approveJUB">
+                Approve Selected Titles
+            </button>
+            <button dojoType="dijit.form.Button" onclick="JUBGrid.removeSelectedJUBs">
+                Remove Selected Titles
+            </button>
+        </div>
+    </div>
+    <div style='height:40%;'>
+[% ELSE %]
+    <div style='height:100%;'>
+[% END %]
+        <div structure='JUBGrid.jubGridLayout' jsid='[% grid_jsid %]' class='grid_container'
+            dojoType='dojox.Grid' id="[% domprefix %]-JUB-grid">
+        </div>
+    </div>
+[% UNLESS hide_details %]
+    <!-- button bar for lineitem details -->
+    <div dojoType="dijit.layout.ContentPane" sizeMin="" sizeShare="" class='container'>
+        <div dojoType="dijit.layout.ContentPane" id='[% domprefix %]-details-buttonbar'>
+            <div dojoType="dijit.form.DropDownButton">
+                <span>New Copy</span>
+                <div dojoType="dijit.TooltipDialog" execute="JUBGrid.createLID(arguments[0]);">
+                    <script type='dojo/connect' event='onOpen'>
+                        new openils.User().buildPermOrgSelector('MANAGE_FUND', copyOwnerSelect);
+                        openils.acq.Fund.buildPermFundSelector('MANAGE_FUND', acqlidFund);
+                    </script>
+                    <table class="dijitTooltipTable">
+                        <tr>
+                            <td><label for="fund">Fund: </label></td>
+                            <td>
+                                <input dojoType="openils.widget.FundSelector"
+                                jsId="acqlidFund" searchAttr="name" autocomplete="true" name="fund"></input>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td><label for="owning_lib">Location: </label></td>
+                            <td><input dojoType="openils.widget.OrgUnitFilteringSelect"
+                                jsId="copyOwnerSelect"
+                                searchAttr="shortname"
+                                name="owning_lib" autocomplete="true"
+                                labelAttr="shortname"></input>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td colspan="2" align="center">
+                                <button dojotype="dijit.form.Button" type="submit">
+                                Create
+                                </button>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <button dojoType='dijit.form.Button' onclick='JUBGrid.deleteLID'>
+                Delete Selected Copy
+            </button>
+            <button dojoType='dijit.form.Button' onclick='JUBGrid.receiveLID'>
+                Mark Selected Copies Received
+            </button>
+        </div>
+    </div>
+    <!-- end button bar -->
+
+    <div style='height:40%;'>
+           <div class='grid_container'>
+            <div structure='JUBGrid.jubDetailGridLayout' jsid="JUBGrid.jubDetailGrid" dojoType="dojox.Grid"
+                id='[% domprefix %]-details-grid'>
+            </div>
+        </div>
+    </div>
+</div>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/common/li_table.tt2 b/Open-ILS/src/templates/default/acq/common/li_table.tt2
new file mode 100644 (file)
index 0000000..645a0ae
--- /dev/null
@@ -0,0 +1,469 @@
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/base64.js"> </script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/common/li_table.js'> </script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/claim_voucher.js'> </script>
+<div id='acq-lit-table-container'>
+    <div id='acq-lit-table-div' class='hidden'>
+
+        <!-- Lineitem (bib record) list -->
+        <table id='acq-lit-table' class='oils-generic-table'>
+            <thead>
+                <tr>
+                    <th colspan='0'>
+                        <table style='width:100%;'>
+                            <tr>
+                                <td>
+                                    <span>
+                                        <select id="acq-lit-li-actions-selector">
+                                            <option mask='*'  value='_'>--Actions--</option>
+                                            <option mask='sr' value='save_picklist'>Save Items To Selection List</option>
+                                            <option mask='pl' value='selector_ready'>Mark Ready for Selector</option>
+                                            <option mask='pl' value='order_ready'>Mark Ready for Order</option>
+                                            <option mask='*'  value='delete_selected'>Delete Selected Items</option>
+                                            <option mask='*'  value='add_brief_record'>Add Brief Record</option>
+                                            <option mask='*'  value='export_attr_list'>Export Single Attribute List</option>
+                                            <option mask='*'  value='batch_apply_funds'>Apply Funds to Selected Items</option>
+                                            <option mask='po' value='' disabled='disabled'>----PO----</option>
+                                            <option mask='sr|pl' value='create_order'>Create Purchase Order</option>
+                                            <option mask='po' value='create_assets'>Load Bibs and Items</option>
+                                            <option mask='po' value='cancel_lineitems'>Cancel Selected Lineitems</option>
+                                            <option mask='po' value='change_claim_policy'>Change Claim Policy</option>
+                                            <option mask='po' value='receive_po'>Mark Purchase Order as Received</option>
+                                            <option mask='po' value='rollback_receive_po'>Un-Receive Purchase Order</option>
+                                            <option mask='po' value='print_po'>Print Purchase Order</option>
+                                            <option mask='po' value='po_history'>View PO History</option>
+                                        </select>
+                                        <span id="acq-lit-export-attr-holder" class="hidden">
+                                            <input dojoType="dijit.form.FilteringSelect" id="acq-lit-export-attr" jsId="acqLitExportAttrSelector" labelAttr="description" searchAttr="description" />
+                                            <span dojoType="dijit.form.Button" jsId="acqLitExportAttrButton">Export List</span>
+                                        </span>
+                                        <span id="acq-lit-cancel-reason" class="hidden">
+                                            <span id="acq-lit-cancel-reason-selector"></span>
+                                            <span dojoType="dijit.form.Button" jsId="acqLitCancelLineitemsButton">Cancel Line Items</span>
+                                        </span>
+                                    </span>
+                                    <span id='acq-lit-generic-progress' class='hidden'>
+                                        <span dojoType="dijit.ProgressBar" style="width:300px" jsId="litGenericProgress"></span>
+                                    </span>
+                                </td>
+                                <td>
+                                    <div style='width:100%;text-align:right;'>
+                                        <span style='padding-right:15px;'>
+                                            <a href='javascript:void(0);' id='acq-lit-prev' style='visibility:hidden'>&#171; Previous</a>
+                                            <a href='javascript:void(0);' id='acq-lit-next' style='visibility:hidden'>Next &#187;</a>
+                                        </span>
+                                    </div>
+                                </td>
+                            </tr>
+                        </table>
+                    </th>
+                </tr>
+            </thead>
+            <tbody><tr><td colspan='0' style='height:20px;'/></tr></tbody>
+            <tbody style='font-weight:bold;border:1px solid #aaa;'>
+                <tr>
+                    <td><span><a id='acq-lit-select-toggle' href='javascript:void(0);'>&#x2713</a></span></td>
+                    <td>Line Items</td>
+                    <td>Items</td>
+                    <td>Notes</td>
+                    <td>Actions</td>
+                    <td>Status</td>
+                    <td>Estimated Price</td>
+                </tr>
+            </tbody>
+            <tbody id='acq-lit-tbody'>
+                <tr id='acq-lit-row' class='acq-lit-row'>
+                    <td name='selector'><input type='checkbox' name='selectbox'/></td>
+                    <td style='width:75%;'>
+                        <table style='width:100%;'>
+                            <tbody>
+                                <tr>
+                                    <td rowspan='3' style='width:43px;'><img style='width:40px;height:65px;' name='jacket'></td>
+                                    <td style='width:70%;font-weight:bold;'>
+                                        <span name="bib_origin" class="hidden">
+                                            <img src="/opac/images/book-icon.png" />
+                                        </span><a attr='title' href='javascript:void(0);'></a>
+                                    </td>
+                                    <td rowspan='2' style='text-align:right'>
+                                    </td>
+                                </tr>
+                                <tr class='acq-lit-alt-row'>
+                                    <td colspan='0'>
+                                        <span attr='author'></span>
+                                        <span attr='isbn'></span>
+                                        <span attr='issn'></span>
+                                        <span attr='edition'></span>
+                                        <span attr='pubdate'></span>
+                                        <span attr='publisher'></span>
+                                        <span name='source_label'></span>
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td colspan='0'>
+                                        <span name="liid"># </span> 
+                                        <span name="catalog" class='hidden'> | <a title='Show In Catalog' name="catalog_link" href="javascript:void(0);">&#x279F; catalog</a></span> 
+                                        <span name="link_to_catalog" class='hidden'> | <a title='Link To Catalog Record' name="link_to_catalog_link" href="javascript:void(0);">&#x27BE; link to catalog</a></span> 
+                                        <span name="worksheet"> | <a title='Generate Worksheet' name="worksheet_link" href="javascript:void(0);">&#x270D; worksheet</a></span>
+                                        <span name='pl' class='hidden'> | <a title='Select List' name='pl_link' href='javascript:void(0);'>&#x2756; </a></span>
+                                        <span name='po' class='hidden'> | <a title='Purchase Order' name='po_link' href='javascript:void(0);'>&#x2318; </a></span>
+                                    </td>
+                                </tr>
+                            </tbody>
+                        </table>
+                    </td>
+                    <td><a title='FOOOBAR' name='copieslink' href='javascript:void(0);'>Copies(<span name='count'>0</span>)</a></td>
+                    <td>
+                        <a name='noteslink' href='javascript:void(0);'>Notes(<span name='notes_count'>0</span>)</a><span name="notes_alert_flag"></span>
+                    </td>
+                    <td>
+                        <select name='actions'>
+                            <option name='action_none'>-- Actions --</option>
+                            <option name='action_mark_recv' disabled='disabled'>Mark Received</option>
+                            <option name='action_mark_unrecv' disabled='disabled'>Un-Receive</option>
+                            <option name='action_update_barcodes' disabled='disabled'>Update Barcodes</option>
+                            <option name='action_holdings_maint' disabled='disabled'>Holdings Maint.</option>
+                            <option name='action_new_invoice' disabled='disabled'>New Invoice</option>
+                            <option name='action_link_invoice' disabled='disabled'>Link to Invoice</option>
+                            <option name='action_view_invoice' disabled='disabled'>View Invoice(s)</option>
+                            <option name='action_view_claim_policy'>Apply Claim Policy</option>
+                            <option name='action_manage_claims' disabled='disabled'>Claims</option>
+                            <option name='action_view_history'>View History</option>
+                        </select>
+                    </td>
+                    <td><span name='li_state'></span></td>
+                    <td><input type='text' size='8' name='price'/></td>
+                </tr>
+            </tbody>
+        </table>
+    </div>
+
+    <!-- Bib record / Lineitem info table -->
+    [% INCLUDE "default/acq/common/info.tt2" which = "Lit" %]
+
+    <!-- Lineitem notes table -->
+    [% INCLUDE "default/acq/common/notes.tt2" which = "Lit" %]
+
+    <!-- Copies table -->
+    <div id='acq-lit-li-details' class='hidden'>
+        <h2>Copies</h2>
+
+        <div class='acq-lit-li-menu-bar'>
+            <table style='width:100%'>
+                <tr>
+                    <td class="acq-lit-li-menu-left">
+                        <div dojoType='dijit.form.Button' id='acq-lit-copies-back-button' scrollOnFocus='false'>&#x2196; Return</div>
+                        <span style='margin-left:10px;padding-left:10px;border-left:2px solid #aaa;'>
+                            Item Count: 
+                            <input dojoType='dijit.form.NumberTextBox' jsId='acqLitCopyCountInput'  
+                                constraints="{min:0,max:1000,places:0}" style='width:40px' value='0'></input> 
+                            <div dojoType='dijit.form.Button' jsId='acqLitAddCopyCount' scrollOnFocus='false'>Go</div>
+                        </span>
+                    </td>
+                    <td class="acq-lit-li-menu-right">
+                        <span>
+                            <div dojoType='dijit.form.Button' jsId='acqLitSaveCopies' scrollOnFocus='false'>Save Changes</div>
+                        </span>
+                        <span id='acq-lit-update-copies-progress' class='hidden'>
+                            <span dojoType="dijit.ProgressBar" style="width:300px" jsId="litUpdateCopiesProgress"></span>
+                        </span>
+                    </td>
+                </tr>
+            </table>
+        </div>
+
+        <table id='acq-lit-li-details-table'>
+            <tbody><tr><td class='acq-lit-table-spacer' colspan='0'/></tr></tbody>
+            <tbody style='font-weight:bold;'>
+                <tr>
+                    <td style='margin-top:30px;'>Owning Branch</td>
+                    <td>Shelving Location</td>
+                    <td>Collection Code</td>
+                    <td>Fund</td>
+                    <td>Circ Modifier</td>
+                    <td>Callnumber</td>
+                    <td colspan='0'></td>
+                </tr>
+            </tbody>
+            <tbody style='background-color:#ddd;'>
+                <tr id='acq-lit-li-details-batch-row'>
+                    <td><div name='owning_lib'></div></td>
+                    <td><div name='location'></div></td>
+                    <td><div name='collection_code'></div></td>
+                    <td><div name='fund'></div></td>
+                    <td><div name='circ_modifier'></div></td>
+                    <td><div name='cn_label'></div></td>
+                    <td colspan='3' style='text-align:left;'>
+                        <div dojoType='dijit.form.Button' jsId='acqLitBatchUpdateCopies' scrollOnFocus='false'>Batch Update</div>
+                    </td>
+                </tr>
+            </tbody>
+
+            <tbody><tr><td class='acq-lit-table-spacer' colspan='0'/></tr></tbody>
+
+            <tbody id='acq-lit-distrib-formula-tbody'>
+                <tr id='acq-lit-distrib-form-row'>
+                    <td colspan='0'>
+                        <span>Distribution Formulas</span>
+                        <div name='selector'></div>
+                        <div name='set_button'></div>
+                        <div name="reset_button"></div>
+                    </td>
+                </tr>
+            </tbody>
+
+            <tbody><tr><td class='acq-lit-table-spacer' colspan='0'/></tr></tbody>
+            <tbody id="acq-lit-distrib-applied-tbody" class="hidden">
+                <tr>
+                    <td colspan="5" id="acq-lit-distrib-applied-heading">
+                        Distribution formulas applied to this lineitem:
+                    </td>
+                </tr>
+                <tr id="acq-lit-distrib-applied-row" class="acq-lit-distrib-applied-row">
+                    <th></th>
+                    <td colspan="4"></td>
+                </tr>
+            </tbody>
+
+            <tbody><tr><td class='acq-lit-table-spacer' colspan='0'></td></tr></tbody>
+            <tbody style='font-weight:bold;'>
+                <tr>
+                    <td style='margin-top:30px;'>Owning Branch</td>
+                    <td>Shelving Location</td>
+                    <td>Collection Code</td>
+                    <td>Fund</td>
+                    <td>Circ Modifier</td>
+                    <td>Callnumber</td>
+                    <td>Barcode</td>
+                    <td>Notes</td>
+                    <td colspan='0'></td>
+                </tr>
+            </tbody>
+            <tbody id='acq-lit-li-details-tbody' class='oils-generic-table'>
+                <tr id='acq-lit-li-details-row'>
+                    <td><div name='owning_lib'></div></td>
+                    <td><div name='location'></div></td>
+                    <td><div name='collection_code'></div></td>
+                    <td><div name='fund'></div></td>
+                    <td><div name='circ_modifier'></div></td>
+                    <td><div name='cn_label'></div></td>
+                    <td><div name='barcode'></div></td>
+                    <td><div name='note'></div></td>
+                    <td><a href="javascript:void(0);" name="receive">Mark&nbsp;Received</a><a href="javascript:void(0);" name="unreceive">Un-Receive</a>&nbsp;<a href="javascript:void(0);" name="cancel">Cancel</a><span class="hidden" name="cancel_reason"></span>&nbsp;<a href="javascript:void(0);" name="claim">Claim</a></td>
+                    <td><div name='delete' dojoType='dijit.form.Button' style='color:red;' scrollOnFocus='false'>X</div></td>
+                </tr>
+            </tbody>
+        </table>
+    </div>
+
+
+    <!-- Copies table -->
+    <div id='acq-lit-real-copies-div' class='hidden'>
+        <h2>Copies</h2>
+
+        <div class='acq-lit-li-menu-bar'>
+            <table style='width:100%'>
+                <tr>
+                    <td style='text-align:left;'>
+                        <div dojoType='dijit.form.Button' id='acq-lit-real-copies-back-button' scrollOnFocus='false'>&#x2196; Return</div>
+                    </td>
+                    <td style='text-align:right;'>
+                        <span>
+                            <div dojoType='dijit.form.Button' jsId='acqLitSaveRealCopies' scrollOnFocus='false'>Save Changes</div>
+                        </span>
+                    </td>
+                </tr>
+            </table>
+        </div>
+
+        <table id='acq-lit-real-copies-table'>
+            <tbody style='font-weight:bold;'>
+                <tr>
+                    <td style='margin-top:30px;'>Owning Branch</td>
+                    <td>Shelving Location</td>
+                    <td>Circ Modifier</td>
+                    <td>Callnumber</td>
+                    <td>Barcode</td>
+                    <td colspan='0'></td>
+                </tr>
+            </tbody>
+            <tbody id='acq-lit-real-copies-tbody' class='oils-generic-table'>
+                <tr id='acq-lit-real-copies-row'>
+                    <td><div name='owning_lib'></div></td>
+                    <td><div name='location'></div></td>
+                    <td><div name='circ_modifier'></div></td>
+                    <td><div name='label'></div></td>
+                    <td><div name='barcode'></div></td>
+                </tr>
+            </tbody>
+        </table>
+    </div>
+
+    <div class="hidden">
+        <div jsId="acqLitLinkInvoiceDialog" dojoType="dijit.Dialog">
+            [% INCLUDE "default/acq/common/inv_dialog.tt2" which = "li" %]
+        </div>
+    </div>
+
+    <div class='hidden' id='acq-lit-progress-numbers'>
+        <table class='oils-generic-table'>
+            <tbody>
+                <tr>
+                    <td>Lineitems Processed</td>
+                    <td><span id='acq-pl-lit-li-processed'>0</span></td>
+                </tr>
+                <tr>
+                    <td>Items Processed</td>
+                    <td><span id='acq-pl-lit-lid-processed'>0</span></td>
+                </tr>
+                <tr>
+                    <td>Debits Encumbered</td>
+                    <td><span id='acq-pl-lit-debits-processed'>0</span></td>
+                </tr>
+                <tr>
+                    <td>Bib Records Imported</td>
+                    <td><span id='acq-pl-lit-bibs-processed'>0</span></td>
+                </tr>
+                <tr>
+                    <td>Bib Records Indexed</td>
+                    <td><span id='acq-pl-lit-indexed-processed'>0</span></td>
+                </tr>
+                <tr>
+                    <td>Copies Processed</td>
+                    <td><span id='acq-pl-lit-copies-processed'>0</span></td>
+                </tr>
+            </tbody>
+        </table>
+    </div>
+
+    <div class='hidden'>
+        <div dojoType='dijit.Dialog' jsId='acqLitPoCreateDialog'>
+            <table class='oils-generic-table'>
+                <tr>
+                    <td>Ordering Agency</td>
+                    <td><div name='ordering_agency' id='acq-lit-po-agency'></div></td>
+                </tr>
+                <tr>
+                    <td>Provider</td>
+                    <td><div name='provider' id='acq-lit-po-provider'></div></td>
+                </tr>
+                <tr>
+                    <td>Prepayment Required</td>
+                    <td><input id="acq-lit-po-prepay" name="prepayment_required" dojoType="dijit.form.CheckBox"/></td>
+                </tr>
+                <tr>
+                    <td>All Lineitems</td>
+                    <td><input checked='checked' name='create_from' value='all' dojoType='dijit.form.RadioButton'/></td>
+                </tr>
+                <tr>
+                    <td>Selected Lineitems</td>
+                    <td><input name='create_from' value='selected' dojoType='dijit.form.RadioButton'/></td>
+                </tr>
+                <tr>
+                    <td>Import Bibs and Create Copies</td>
+                    <td><input name='create_assets' dojoType='dijit.form.CheckBox'/></td>
+                </tr>
+                <tr>
+                    <td colspan='2'>
+                        <div dojoType='dijit.form.Button' type='submit' jsId='acqLitCreatePoSubmit'>Submit</div>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+
+    <div class="hidden">
+        <div dojoType="dijit.Dialog" jsId='acqLitSavePlDialog'>
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td colspan='2'>
+                        <input dojoType="dijit.form.RadioButton" name="which" type='radio' checked='checked' value='selected'/>
+                        <label for="name">Save selected</label>
+                        <input dojoType="dijit.form.RadioButton" name="which" type='radio' value='all'/>
+                        <label for="name">Save all</label>
+                    </td>
+                </tr>
+                <tr><td colspan='2'><hr/></td></tr>
+                <tr>
+                    <td><label for="new_name">Save as Selection List: </label></td>
+                    <td><input dojoType="dijit.form.TextBox" name="new_name"/></td>
+                </tr>
+                <tr>
+                    <td><label for="existing_pl">Add to Selection List: </label></td>
+                    <td>
+                        <input jsId="acqLitAddExistingSelect" dojoType="openils.widget.PCrudAutocompleteBox" fmclass="acqpl" searchAttr="name" name="existing_pl" />
+                    </td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <button dojoType='dijit.form.Button' type="submit" jsId='acqLitSavePlButton'>Save</button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+
+        <div dojoType="dijit.Dialog" jsId="lidCancelDialog">
+            <label for="acq-lit-lid-cancel-reason">Reason:</label>
+            <span id="acq-lit-lid-cancel-reason"></span>
+            <span dojoType="dijit.form.Button"
+                jsId="acqLidCancelButton">Cancel Copy</span>
+        </div>
+        <div dojoType="dijit.Dialog" jsId="liClaimPolicyDialog">
+            <label for="acq-lit-li-claim-policy">Claim policy:</label>
+            <span id="acq-lit-li-claim-policy"></span> &nbsp;
+            <span dojoType="dijit.form.Button"
+                jsId="liClaimPolicySave">Save</span>
+        </div>
+        <div dojoType="dijit.Dialog" jsId="liClaimDialog">
+            [% INCLUDE "default/acq/common/claim_dialog.tt2" %]
+        </div>
+        <div dojoType="dijit.Dialog" jsId="finalClaimDialog">
+            [% INCLUDE "default/acq/common/final_claim_dialog.tt2" %]
+        </div>
+        <div dojoType="dijit.Dialog" jsId="batchFundUpdateDialog" title="Batch Update Funds">
+            <div>
+                This will update the fund for all copies attached to these lineitems.<br/>
+                This will also update any existing encumbered or spent debits.
+            </div>
+            <br/>
+            <table class='oils-generic-table'>
+                <tr>
+                    <td>
+                        <span>Select a new fund:</span>
+                    </td>
+                    <td>
+                        <div id='acq-lit-batch-fund-selector'></div>
+                    </td>
+                </tr>
+                <tr>
+                    <td><button dojoType='dijit.form.Button' jsId='batchFundUpdateCancel'>Cancel</button></td>
+                    <td><button dojoType='dijit.form.Button' jsId='batchFundUpdateSubmit'>Submit</button></td>
+                </tr>
+            </table>
+        </div>
+    </div>
+
+    <div dojoType="dijit.Dialog" jsId='acqLitChangeLiStateDialog'>
+        <table class='dijitTooltipTable'>
+            <tr>
+                <td>
+                    <input dojoType="dijit.form.RadioButton" name="which" type='radio' checked='checked' value='selected'/>
+                    <label for="name">Mark selected</label>
+                    <input dojoType="dijit.form.RadioButton" name="which" type='radio' value='all'/>
+                    <label for="name">Mark all</label>
+                </td>
+            </tr>
+            <tr>
+                <td colspan='2' align='center'>
+                    <button dojoType='dijit.form.Button' type="submit" jsId='acqLitCancelLiStateButton'>Cancel</button>
+                    <button dojoType='dijit.form.Button' type="submit" jsId='acqLitSaveLiStateButton'>Go</button>
+                </td>
+            </tr>
+        </table>
+    </div>
+
+
+    <div class='hidden'>
+        <div dojoType='openils.widget.ProgressDialog' jsId='progressDialog'></div>
+    </div>
+
+</div>
+
diff --git a/Open-ILS/src/templates/default/acq/common/li_table_pager.tt2 b/Open-ILS/src/templates/default/acq/common/li_table_pager.tt2
new file mode 100644 (file)
index 0000000..bdae5b2
--- /dev/null
@@ -0,0 +1,17 @@
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/li_table_pager.js">
+</script>
+<div id="acq-litpager-controls">
+    <button id="acq-litpager-controls-prev" disabled="disabled">
+        &laquo; Prev
+    </button>
+    <span id="acq-litpager-controls-batch-range" class="hidden">
+        <span id="acq-litpager-controls-batch-start"></span> &mdash;
+        <span id="acq-litpager-controls-batch-end"></span>
+        <span id="acq-litpager-controls-total-holder" class="hidden">
+            of <span id="acq-litpager-controls-total"></span>
+        </span>
+    </span>
+    <button id="acq-litpager-controls-next" disabled="disabled">
+        Next &raquo;
+    </button>
+</div>
diff --git a/Open-ILS/src/templates/default/acq/common/notes.tt2 b/Open-ILS/src/templates/default/acq/common/notes.tt2
new file mode 100644 (file)
index 0000000..609cf6c
--- /dev/null
@@ -0,0 +1,62 @@
+[% which_lc = which | lower %]
+    <div id="acq-[% which_lc %]-notes-div" class="hidden">
+        <div class="acq-menu-bar">
+            <table style="width:100%">
+                <tr>
+                    <td style="text-align:left;">
+                        <div dojoType="dijit.form.Button" id="acq-[% which_lc %]-notes-back-button">&#x2196; Return</div>
+                    </td>
+                    <td style="text-align:right;">
+                        <div dojoType="dijit.form.DropDownButton">
+                            <span>New Note</span>
+                            <div dojoType="dijit.TooltipDialog">
+                                <div class="acq-notes-note-row">
+                                    <div jsId="acq[% which %]CreateNoteText" dojoType="dijit.form.Textarea" style="height:5em; width:25em;" name="note"></div>
+                                    <div style="margin: 8px 0;">
+                                        <div dojoType="dijit.form.CheckBox" jsId="acq[% which %]CreateNoteVendorPublic" name="vendor_public" id="acq-[% which_lc %]-create-note-vendor-public"></div><label for="acq-[% which_lc %]-create-note-vendor-public">Note is vendor-public</label>
+                                    </div>
+                                </div>
+                                <button jsId="acq[% which %]CreateNoteSubmit" dojoType="dijit.form.Button" type="submit">Create</button>
+                            </div>
+                        </div>
+[% IF which == "Lit" %]
+                        <div dojoType="dijit.form.DropDownButton">
+                            <span>New Alert</span>
+                            <div dojoType="dijit.TooltipDialog">
+                                <div class="acq-notes-note-row">
+                                    <label for="acq-lit-alert-alert-text">Choose alert code &nbsp;&nbsp;</label>
+                                    <input id="acq-lit-alert-alert-text" jsId="acqLitAlertAlertText" dojoType="dijit.form.FilteringSelect" labelAttr="code" searchAttr="code" required="true" />
+                                </div>
+                                <div class="acq-notes-note-row">
+                                    <label for="acq-lit-alert-value">Additional comments</label>
+                                    <div jsId="acqLitAlertNoteValue" id="acq-lit-alert-value" dojoType="dijit.form.Textarea" name="value"></div>
+                                </div>
+                                <button jsId="acqLitCreateAlertSubmit" dojoType="dijit.form.Button" type="submit">Create</button>
+                            </div>
+                        </div>
+[% END %]
+                    </td>
+                </tr>
+            </table>
+        </div>
+
+        <ol id="acq-[% which_lc %]-notes-tbody">
+            <li id="acq-[% which_lc %]-notes-row">
+                <table style="width:100%;" class="oils-generic-table">
+                    <tr>
+                        <td width="70%" align="left">
+                            <span name="vendor_public"></span>
+                            <span name="alert_code"></span>
+                            <span style="font-size:120%" name="value"></span>
+                        </td>
+                        <td align="right" style="padding-right:30px;">
+                            <span name="edit_time"></span>
+                            <span style="padding-left:4px;">
+                                <a name="delete" href="javascript:void(0);" style="color:red;">Delete</a>
+                            </span>
+                        </td>
+                    </tr>
+                </table>
+            </li>
+        </ol>
+    </div>
diff --git a/Open-ILS/src/templates/default/acq/financial/claim_eligible.tt2 b/Open-ILS/src/templates/default/acq/financial/claim_eligible.tt2
new file mode 100644 (file)
index 0000000..6df7fca
--- /dev/null
@@ -0,0 +1,57 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "Items Eligible For Claiming" %]
+<script type="text/javascript">var filter = "[% ctx.page_args.0 %]";</script>
+<div>
+    <h1>Items Eligible For Claiming</h1>
+    <div class="oils-acq-basic-roomy">
+        Show items ready to claim for:
+        <select
+            dojoType="openils.widget.OrgUnitFilteringSelect"
+            jsId="orderingAgency" searchAttr="shortname"
+            labelAttr="shortname"></select>
+        <span dojoType="openils.widget.ProgressDialog"
+            jsId="progressDialog"></span>
+    </div>
+    <div class="oils-acq-basic-roomy">
+        <button name="claim_submit">Claim selected items</button>
+    </div>
+    <table id="acq-eligible-li-table">
+        <thead>
+            <tr>
+                <th><input type="checkbox" name="selector_all" /></th>
+                <th>Items</th>
+            </tr>
+        </thead>
+        <tbody>
+            <tr><!-- item template -->
+                <td>
+                    <input type="checkbox" name="selector" />
+                </td>
+                <td>
+                    <div name="description"></div>
+                    <div name="lid_link_holder" class="hidden">
+                        [ <a href="javascript:void(0);"
+                            name="lid_link">Consider individual copies
+                            for claiming</a> ]
+                    </div>
+                </td>
+            </tr>
+            <tr><!-- empty template -->
+                <td colspan="2">
+                    <em>There were no items matching your search.</em>
+                </td>
+            </tr>
+        </tbody>
+    </table>
+    <div class="oils-acq-basic-roomy">
+        <button name="claim_submit">Claim selected items</button>
+    </div>
+</div>
+<div class="hidden">
+    <div dojoType="dijit.Dialog" jsId="finalClaimDialog">
+        [% INCLUDE "default/acq/common/final_claim_dialog.tt2" %]
+    </div>
+</div>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/financial/claim_eligible.js"> </script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/financial/claim_voucher.js"> </script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/financial/list_currency_types.tt2 b/Open-ILS/src/templates/default/acq/financial/list_currency_types.tt2
new file mode 100644 (file)
index 0000000..2b00688
--- /dev/null
@@ -0,0 +1,35 @@
+[% WRAPPER default/base.tt2 %]
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client" class='oils-header-panel'>
+    <div>Currency Type</div>
+    <div>
+        <button dojoType='dijit.form.Button' onClick='ctGrid.showCreateDialog()'>New Currency Type</button>
+        <button dojoType='dijit.form.Button' onClick='ctGrid.deleteSelected()'>Delete Selected</button>
+    </div>
+</div>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <table  jsId="ctGrid"
+            autoHeight='true'
+            dojoType="openils.widget.AutoGrid"
+            fieldOrder="['code', 'label']"
+            defaultCellWidth='25'
+            query="{code: '*'}"
+            fmClass='acqct'
+            editOnEnter='true'>
+    </table>
+</div>
+
+<script type="text/javascript">
+    dojo.require('dijit.layout.ContentPane');
+    dojo.require('dijit.form.Button');
+    dojo.require('openils.widget.AutoGrid');
+    dojo.require('openils.Util');
+    openils.Util.addOnLoad(
+        function() {
+            ctGrid.loadAll({order_by:{acqct : 'code'}});
+        }
+    );
+</script>
+
+[% END %]
+
+
diff --git a/Open-ILS/src/templates/default/acq/financial/list_funding_sources.tt2 b/Open-ILS/src/templates/default/acq/financial/list_funding_sources.tt2
new file mode 100644 (file)
index 0000000..2a5d91d
--- /dev/null
@@ -0,0 +1,51 @@
+[% WRAPPER 'default/base.tt2' %]
+
+<!-- The main grid lives here -->
+<script type="text/javascript">
+    function getName(rowIndex, item) {
+        if(!item) return '';
+        var name = this.grid.store.getValue(item, 'name');
+        var id = this.grid.store.getValue(item, 'id');
+        // weird hack to pass the data we need to the formatter which is now required for HTML cell values
+        return id + ':' + name;
+    }
+
+    function formatName(value) {
+        if(value) {
+            var vals = value.split(/:/);
+            return '<a href="[% ctx.base_path %]/acq/funding_source/view/'+vals[0]+'">'+vals[1]+'</a>';
+        }
+    }
+</script>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+    <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+        <div>Funding Sources</div>
+        <div>
+            <button dojoType='dijit.form.Button' onClick='fsGrid.showCreateDialog()'>New Funding Source</button>
+            <button dojoType='dijit.form.Button' onClick='fsGrid.deleteSelected()'>Delete Selected</button>
+        </div>
+    </div>
+
+    <table  jsId="fsGrid"
+            dojoType="openils.widget.AutoGrid"
+            fieldOrder="['id', 'name', 'owner', 'code', 'currency_type', 'balance']"
+            query="{name: '*'}"
+            defaultCellWidth='"auto"'
+            fmClass='acqfs'
+            editOnEnter='true'>
+        <thead>
+            <tr>
+                <th field="name" get='getName' formatter='formatName'/>
+                <th field="owner" get='getOrgInfo'/>
+                <th field="balance" get='getBalanceInfo'/>
+            </tr>
+        </thead>
+    </table>
+</div>
+
+<!-- load the page-specific JS -->
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/list_funding_sources.js'></script>
+
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/financial/list_funds.tt2 b/Open-ILS/src/templates/default/acq/financial/list_funds.tt2
new file mode 100644 (file)
index 0000000..4211e17
--- /dev/null
@@ -0,0 +1,162 @@
+[% WRAPPER 'default/base.tt2' %]
+[% ctx.page_title = 'Funds' %]
+
+<!-- load the page-specific JS -->
+<script type="text/javascript">
+    function getFundName(rowIndex, item) {
+        if (!item) return null;
+        return {
+            "name": this.grid.store.getValue(item, "name"),
+            "id": this.grid.store.getValue(item, "id")
+        };
+    }
+
+    function formatName(value) {
+        if (!value) return ""; // XXX
+
+        var link = "<a href='/eg/acq/financial/view_fund/" +
+            value.id + "'>" +
+            value.name + "</a>";
+
+        /* TODO: add another element here to which we can attach a tooltip
+           showing tags */
+        return link;
+    }
+
+    function createNewFund() {
+        /* Set the display constraints before drawing the edit dialog;
+           introduce Y2K and Y2K2C problem */
+        lfGrid.overrideWidgetArgs = {year: { dijitArgs: {constraints : {min: 2000, max: 2200, pattern : '####'}}}};
+        lfGrid.showCreateDialog();
+    }
+
+</script>
+
+<table style='width:100%;'>
+    <tr>
+        <!-- TODO CSS -->
+        <td style='text-align:left;font-size:130%;font-weight: bold;'>Funds</td>
+        <td style='text-align:right;width:90%;'>
+
+            <button dojoType='dijit.form.Button' onClick='createNewFund()'>New Fund</button>
+            <button dojoType='dijit.form.Button' onClick='lfGrid.deleteSelected()'>Delete Selected</button>
+
+            <div dojoType="dijit.form.DropDownButton">
+                <span>Fund Propagation &amp; Rollover</span>
+                <div dojoType="dijit.TooltipDialog" execute="performRollover(arguments[0]);">
+                    <table class='dijitTooltipTable' id='oils-acq-rollover-tooltip-table'>
+                        <tr>
+                            <td colspan='2'>
+                                <div style='width:400px;'>
+                                Propagation creates new funds for the subsequent fiscal year based on the
+                                funds for the selected fiscal year.  Only funds with the propagate setting
+                                enabled will be affected.  No money or encumbrances are altered
+                                during this process.
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td><label for="rollover">Perform Fiscal Year Close-out Operation: </label></td>
+                            <td>
+                                <input dojoType="dijit.form.CheckBox" name="rollover"> </input>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td colspan='2'>
+                                <div style='width:400px;'>
+                                The year end close out operation moves encumbrances from the selected fiscal
+                                year to the analogous funds in the subsequent fiscal year and it deactivates
+                                funds for the selected fiscal year.  Additionally, for all funds that have
+                                the "Rollover" setting enabled, this process will move all unspent money to
+                                the analogous fund in the subsequent fiscal year.
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>Context Org Unit:</td>
+                            <td><span id='oils-acq-rollover-ctxt-org'></span></td>
+                        </tr>
+                        <tr>
+                            <td>Include Funds for Descendant Org Units:</td>
+                            <td><input dojoType=dijit.form.CheckBox name='child_orgs'/></td>
+                        </tr>
+                        <tr>
+                            <td><label for="dry_run">Dry Run: </label></td>
+                            <td>
+                                <input dojoType="dijit.form.CheckBox" name="dry_run" checked='checked'> </input>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td colspan='2'>
+                                <div style='width:400px;'>
+                                When Dry Run is selected, the system will generate a summary of
+                                the changes that would occur during the selected operation(s).
+                                No data will be changed.
+                                </div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td colspan='2' align='center'>
+                                <button dojoType=dijit.form.Button type="submit">Process</button>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+        </td>
+    </tr>
+</table>
+
+<div class="oils-acq-basic-roomy">
+    <span>Context Org Unit</span>
+    <select
+        dojoType="openils.widget.OrgUnitFilteringSelect"
+        jsId="contextOrgSelector"
+        searchAttr="shortname"
+        labelAttr="shortname">
+    </select>
+
+    <span>Year</span>
+    <select dojoType="dijit.form.FilteringSelect"
+        jsId="fundFilterYearSelect"
+        labelAttr="year"
+        searchAttr="year">
+    </select>
+
+    <div dojoType='dijit.form.Button' jsId='refreshButton'>Refresh</div>
+</div>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <div id='acq-fund-list-rollover-summary-wrapper'>
+        <div id='acq-fund-list-rollover-summary' class='hidden'>
+            <div id='acq-fund-list-rollover-summary-header'> </div>
+            <ul>
+                <li id='acq-fund-list-rollover-summary-dry-run'>These changes have <span class='oils-notify-text'>not</span> been committed yet.</li>
+                <li id='acq-fund-list-rollover-summary-funds'></li>
+                <li id='acq-fund-list-rollover-summary-rollover-amount'></li>
+            </ul>
+        </div>
+    </div>
+</div>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <table  jsId="lfGrid"
+            dojoType="openils.widget.AutoGrid"
+            fieldOrder="['id', 'name', 'code', 'year', 'org', 'currency_type', 'combined_balance']"
+            requiredFields="['name', 'code', 'year', 'org', 'currency_type']"
+            query="{id: '*'}"
+            defaultCellWidth='"auto"'
+            fmClass='acqf'
+            showPaginator='true'
+            editOnEnter='true'>
+        <thead>
+            <tr>
+                <th field="name" get="getFundName" formatter="formatName"></th>
+                <th field="combined_balance" name="Combined Balance" get="getBalanceInfo"></th>
+            </tr>
+        </thead>
+    </table>
+</div>
+<div dojoType="openils.widget.ProgressDialog" jsId="progressDialog"></div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/list_funds.js'> </script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/financial/view_fund.tt2 b/Open-ILS/src/templates/default/acq/financial/view_fund.tt2
new file mode 100644 (file)
index 0000000..a1fcc3d
--- /dev/null
@@ -0,0 +1,257 @@
+[% WRAPPER 'default/base.tt2' %]
+<script type="text/javascript"> var fundID = [% ctx.page_args.0 %] </script>
+
+<div id='oils-acq-list-header' class='container'>
+    <div id='oils-acq-list-header-label'>Fund Details</div>
+</div>
+
+<div class='oils-acq-actions-div' style='margin:8px;'> <!-- XXX CSS -->
+    <!-- Dropdown menu for creating a new funding source credit -->
+    <div dojoType="dijit.form.DropDownButton">
+        <span>Create Allocation</span>
+        <div dojoType="dijit.TooltipDialog" execute="createAllocation(arguments[0]);">
+            <script type='dojo/connect' event='onOpen'>
+                openils.acq.FundingSource.createStore(
+                    function(store) {
+                        fundingSourceSelector.store = 
+                            new dojo.data.ItemFileReadStore({data:store});
+                            fundingSourceSelector.setValue(store.items[0].code);
+                    }, 
+                    'MANAGE_FUNDING_SOURCE'
+                );
+            </script>
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td><label for="amount">Funding Source: </label></td>
+                    <td>
+                        <input jsId='fundingSourceSelector' name="funding_source" 
+                               dojoType="dijit.form.FilteringSelect" searchAttr='code' labelAttr='code'>
+                        </input>
+                    </td>
+                </tr>
+                <tr>
+                    <td><label for="amount">Amount: </label></td>
+                    <td>
+                        <input dojoType="dijit.form.CurrencyTextBox" name="amount"> </input>
+                    </td>
+                </tr>
+
+                <!-- Percent-based allocations are not supported.  Will implement or remove later.
+                <tr>
+                    <td><label for="amount">Percent: </label></td>
+                    <td>
+                        <input 
+                             dojoType="dijit.form.NumberTextBox" 
+                             constraints="{min:0,max:100}" 
+                             promptMessage="Please enter an amount between 0 and 100"
+                             name="percent"> 
+                        </input>
+                    </td>
+                </tr>
+                -->
+
+                <tr>
+                    <td><label for="note">Note: </label></td>
+                    <td>
+                        <input dojoType="dijit.form.TextBox" name="note"> </input>
+                    </td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <button dojoType="dijit.form.Button" type="submit">Apply</button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div> 
+    <div dojoType="dijit.form.DropDownButton">
+        <span>Transfer Money</span>
+        <div jsId="xferDialog" dojoType="dijit.TooltipDialog">
+            <script type="dojo/connect" event="onOpen">
+                /* If a fund is selected (from a previous time that the
+                user popped open this dialog), unselect it. Wouldn't want to
+                accidentally encourage a transfer that the user didn't mean. */
+                xferManager.clearFundSelector();
+                xferManager.setFundName(fund);
+            </script>
+            <table id="oils-acq-fund-xfer-table">
+                <tr>
+                    <th>
+                        <label for="oils-acq-fund-xfer-o-amount">
+                            Source amount<br />
+                            <em>Amount to transfer from<br />
+                                <span id="oils-acq-fund-xfer-name-fund"></span>
+                            </em>
+                        </label>
+                    </th>
+                    <td>
+                        <input dojoType="dijit.form.CurrencyTextBox"
+                            id="oils-acq-fund-xfer-o-amount"
+                            name="o_amount" />
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        <label for="oils-acq-fund-xfer-d-selector">
+                            Destination fund
+                        </label>
+                    </th>
+                    <td>
+                        <span id="oils-acq-fund-xfer-d-selector"></span>
+                    </td>
+                </tr>
+                <tr id="oils-acq-fund-xfer-dest-amount" class="hidden">
+                    <th>
+                        <label for="oils-acq-fund-xfer-d-selector">
+                            Destination amount
+                        </label>
+                    </th>
+                    <td>
+                        <div class="oils-acq-basic-roomy">
+                            <input id="oils-acq-fund-xfer-same-o-d"
+                                dojoType="dijit.form.CheckBox" checked="checked"
+                                value="1" name="same_o_d" />
+                            <label for="oils-acq-fund-xfer-same-o-d">
+                                Same as source amount?
+                            </label>
+                        </div>
+                        <div class="oils-acq-basic-roomy">
+                            <input id="oils-acq-fund-xfer-d-amount"
+                                dojoType="dijit.form.CurrencyTextBox"
+                                name="d_amount" disabled="disabled" />
+                        </div>
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        <label for="oils-acq-fund-xfer-note">Note</label>
+                    </th>
+                    <td>
+                        <input dojoType="dijit.form.TextBox" name="note"
+                            id="oils-acq-fund-xfer-note" />
+                    </td>
+                </tr>
+                <tr>
+                    <td colspan="2" id="oils-acq-fund-xfer-submit-row">
+                        <button onclick="xferManager.submit();"
+                            dojoType="dijit.form.Button" type="submit">
+                            Transfer
+                        </button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+</div>
+
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+    <div dojoType="dijit.layout.TabContainer">
+
+        <!-- Fund Summary -->
+        <div dojoType="dijit.layout.ContentPane" 
+             class='oils-acq-detail-content-pane' title="Summary" selected='true'>
+            
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top"> 
+                <div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:600px;'> 
+                    <table jsId="fundGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}" rowSelector='20px'> 
+                        <thead> 
+                            <tr> 
+                                <th field="id">ID</th> 
+                                <th field="name">Name</th> 
+                                <th field="code">Code</th> 
+                                <th field="currency_type">Currency Type</th> 
+                                <th field="org" get='getOrgInfo'>Owner</th> 
+                                <th field="combined_balance" get='getSummaryInfo'>Balance</th> 
+                                <th field="allocation_total" get='getSummaryInfo'>Total Allocated</th>
+                                <th field="spent_balance" get='getSummaryInfo'>Spent Balance</th>
+                                <th field="debit_total" get='getSummaryInfo'>Total Debits</th>
+                                <th field="spent_total" get='getSummaryInfo'>Total Spent</th>
+                                <th field="encumbrance_total" get='getSummaryInfo'>Total Encumbered</th>
+                            </tr> 
+                        </thead> 
+                    </table>     
+                </div>
+            </div>
+        </div>
+
+        <!-- Fund Allocations -->
+        <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Allocations">
+            <script type='dojo/connect' event='onShow'>loadAllocationGrid();</script>
+            
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top"> 
+                <div dojoType="dijit.layout.ContentPane" layoutAlign="client"> 
+
+                    <table 
+                        jsId="fundAllocationGrid" 
+                        autoHeight='true'
+                        dojoType="openils.widget.AutoGrid"
+                        fieldOrder="['funding_source', 'amount', 'create_time', 'allocator', 'note']"
+                        suppressFields="['id', 'fund']"
+                        defaultCellWidth='"auto"'
+                        fmClass="acqfa"
+                        query="{id: '*'}"
+                        showPaginator='true'>
+
+                        <thead>
+                            <tr>
+                                <th field='funding_source' get='getFundingSource' formatter='formatFundingSource'/>
+                            </tr>
+                        </thead>
+                    </table>
+                </div> 
+            </div> 
+        </div>
+
+        <!--- Fund Debits -->
+        <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Debits">
+            <script type='dojo/connect' event='onShow'>loadDebitGrid();</script>
+            
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top" style='height:600px;'> 
+                <button dojoType="dijit.form.Button" onClick="fundDebitGrid.refresh();">Refresh Grid</button>
+                <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+                    <table 
+                        jsId="fundDebitGrid" 
+                        autoHeight='true'
+                        dojoType="openils.widget.AutoGrid"
+                        fieldOrder="['amount', 'encumbrance', 'debit_type', 'origin_amount', 'origin_currency_type']"
+                        suppressFields="['id', 'fund']"
+                        defaultCellWidth='"auto"'
+                        fmClass="acqfdeb"
+                        query="{id: '*'}"
+                        showPaginator='true'>
+                    </table>
+                </div> 
+            </div> 
+        </div>
+
+        <div dojoType="dijit.layout.ContentPane" class="oils-acq-detail-content-pane" title="Tags">
+            <script type="dojo/connect" event="onShow">
+                tagManager.displayFund(fund);
+            </script>
+            <div id="oils-acq-tag-manager-display"></div>
+            <div id="oils-acq-tag-manager-add">
+                <div dojoType="dijit.form.DropDownButton">
+                    <span>Add Tag</span>
+                    <div dojoType="dijit.TooltipDialog">
+                        <select dojoType="dijit.form.FilteringSelect"
+                            jsId="tagSelector">
+                        </select>
+                        <button onclick="tagManager.addMapping(
+                            fund, new acqft().fromStoreItem(tagSelector.item)
+                        );" type="submit" dojoType="dijit.form.Button">
+                            Add
+                        </button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!-- load the page-specific JS -->
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/tag_manager.js"></script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/view_fund.js'></script>
+
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/financial/view_funding_source.tt2 b/Open-ILS/src/templates/default/acq/financial/view_funding_source.tt2
new file mode 100644 (file)
index 0000000..55a372d
--- /dev/null
@@ -0,0 +1,173 @@
+[% WRAPPER 'default/base.tt2' %]
+<script type="text/javascript"> var fundingSourceID = [% ctx.page_args.0 %]; </script>
+
+<div id='oils-acq-list-header' class='container'>
+    <div id='oils-acq-list-header-label'>Funding Source Details</div>
+</div>
+
+<div class='oils-acq-actions-div' style='margin:8px;'> <!-- XXX CSS -->
+
+    <!-- Dropdown menu for creating a new funding source credit -->
+    <div dojoType="dijit.form.DropDownButton">
+        <span>Apply Credit</span>
+        <div dojoType="dijit.TooltipDialog" execute="applyFSCredit(arguments[0]);">
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td><label for="amount">Amount: </label></td>
+                    <td>
+                        <input dojoType="dijit.form.CurrencyTextBox" name="amount"> </input>
+                    </td>
+                </tr>
+                <tr>
+                    <td><label for="note">Note: </label></td>
+                    <td>
+                        <input dojoType="dijit.form.TextBox" name="note"> </input>
+                    </td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <button dojoType=dijit.form.Button type="submit">Apply</button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div> 
+    <div dojoType="dijit.form.DropDownButton">
+        <span>Allocate to Fund</span>
+        <div dojoType="dijit.TooltipDialog" execute="applyFSAllocation(arguments[0]);">
+            <script type='dojo/connect' event='onOpen'>
+                openils.acq.Fund.createStore(
+                    function(store) {
+                        fundingSourceFundSelector.store = 
+                            new dojo.data.ItemFileReadStore({data:store});
+                        fundingSourceFundSelector.setValue(store.items[0].code);
+                    }, 'MANAGE_FUND'
+                );
+            </script>
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td><label for="amount">Fund: </label></td>
+                    <td>
+                        <input jsId='fundingSourceFundSelector' name="fund" 
+                            dojoType="dijit.form.FilteringSelect" searchAttr='code' labelAttr='code'>
+                        </input>
+                    </td>
+                </tr>
+                <tr>
+                    <td><label for="amount">Amount: </label></td>
+                    <td>
+                        <input dojoType="dijit.form.CurrencyTextBox" name="amount"> </input>
+                    </td>
+                </tr>
+                <!-- Percent-based allocations are not supported.  Will implement or remove later.
+                <tr>
+                    <td><label for="amount">Percent: </label></td>
+                    <td>
+                        <input 
+                            dojoType="dijit.form.NumberTextBox" 
+                            constraints="{min:0,max:100}" 
+                            promptMessage="Please enter an amount between 0 and 100"
+                            name="percent"> 
+                        </input>
+                    </td>
+                </tr>
+                -->
+                <tr>
+                    <td><label for="note">Note: </label></td>
+                    <td>
+                        <input dojoType="dijit.form.TextBox" name="note"> </input>
+                    </td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <button dojoType=dijit.form.Button type="submit">Apply</button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div> 
+</div>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+    <div dojoType="dijit.layout.TabContainer">
+
+        <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Summary" selected='true'>
+            <script type='dojo/connect' event='onShow'>loadFSGrid();</script>
+
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top"> 
+                <div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:600px;'> 
+                    <table jsId="fundingSourceGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}" rowSelector='20px'> 
+                        <thead> 
+                            <tr> 
+                                <th field="id">ID</th> 
+                                <th field="name" width='auto'>Name</th> 
+                                <th field="code">Code</th> 
+                                <th field="balance" get='getSummaryInfo'>Balance</th>
+                                <th field="credit_total" get='getSummaryInfo'>Total Credits</th>
+                                <th field="allocation_total" get='getSummaryInfo'>Total Debits</th>
+                                <th field="currency_type">Currency Type</th> 
+                                <th field="owner" width='auto' get='getOrgInfo'>Owner</th>
+                            </tr> 
+                        </thead> 
+                    </table>     
+                </div> 
+            </div>               
+        </div>
+        <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Credits">
+            <script type='dojo/connect' event='onShow'>loadCreditGrid(); </script> 
+
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top"> 
+                <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+                    <table 
+                        jsId="fsCreditGrid"
+                        autoheight="true"
+                        dojoType="openils.widget.AutoGrid"
+                        fieldOrder="['amount', 'effective_date', 'deadline_date', 'note']"
+                        suppressFields="['id', 'funding_source']"
+                        defaultCellWidth='"auto"'
+                        fmClass="acqfscred"
+                        query="{id: '*'}"
+                        showPaginator='true'>
+                    </table>
+                </div> 
+            </div> 
+        </div>
+
+        <!-- Fund Allocations -->
+        <div dojoType="dijit.layout.ContentPane" class='oils-acq-detail-content-pane' title="Allocations">
+            <script type='dojo/connect' event='onShow'>loadAllocationGrid();</script>
+            
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top"> 
+                <div dojoType="dijit.layout.ContentPane" layoutAlign="client"> 
+
+                    <table 
+                        jsId="fsAllocationGrid" 
+                        autoHeight='true'
+                        dojoType="openils.widget.AutoGrid"
+                        fieldOrder="['fund', 'amount', 'create_time', 'allocator', 'note']"
+                        suppressFields="['id', 'funding_source']"
+                        defaultCellWidth='"auto"'
+                        fmClass="acqfa"
+                        query="{id: '*'}"
+                        showPaginator='true'>
+
+                        <thead>
+                            <tr>
+                                <th field='fund' get='getFund' formatter='formatFund'/>
+                            </tr>
+                        </thead>
+                    </table>
+                </div> 
+            </div> 
+        </div>
+
+    </div>
+</div>
+
+<!-- load the page-specific JS -->
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/view_funding_source.js'> </script>
+
+[% END %]
+
diff --git a/Open-ILS/src/templates/default/acq/financial/view_provider.tt2 b/Open-ILS/src/templates/default/acq/financial/view_provider.tt2
new file mode 100644 (file)
index 0000000..f37911e
--- /dev/null
@@ -0,0 +1,118 @@
+[% WRAPPER default/base.tt2 %]
+<script type="text/javascript">var providerId = [% ctx.page_args.0 %]</script>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+    <div dojoType="dijit.layout.TabContainer">
+
+        <div dojoType="dijit.layout.ContentPane" 
+                class='oils-acq-detail-content-pane' title="Summary" selected='true' style='height:400px;'>
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top"> 
+                <div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:600px;'> 
+                    <table jsId="providerGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}" rowSelector='20px'> 
+                        <thead> 
+                            <tr> 
+                                <th field="id">ID</th> 
+                                <th field="name" width='auto'>Name</th> 
+                                <th field="code">Code</th> 
+                                <th field="owner" get='getOrgInfo'>Owner</th> 
+                                <th field="currency_type">Currency Type</th> 
+                            </tr> 
+                        </thead> 
+                    </table>     
+                </div> 
+            </div>             
+        </div>
+
+        <div dojoType="dijit.layout.ContentPane" 
+                class='oils-acq-detail-content-pane' title="Order Record Format" style='height:400px;'>
+
+            <div class='oils-acq-actions-div' style='margin:8px;'>
+
+                <!-- 
+                    Dropdown menu for creating a new order record data type
+                -->
+                <div dojoType="dijit.form.DropDownButton">
+                    <span>Create Order Record Field</span>
+                    <div dojoType="dijit.TooltipDialog" execute="createOrderRecordField(arguments[0]);">
+                        <script type='dojo/connect' event='onOpen'>setORDesc();</script>
+                        <table class='dijitTooltipTable'>
+                            <tr>
+                                <td><label for="code">Code: </label></td>
+                                <td>
+                                    <select id='oils-acq-provider-or-code' name="code" dojoType="dijit.form.ComboBox">
+                                        <script type='dojo/connect' event='onChange'>setORDesc();</script>
+                                        <option value='fund_code'>Fund Code</option>
+                                        <option value='shelving_location'>Shelving Location</option>
+                                        <option value='quantity'>Quantity</option>
+                                        <option value='order_date'>Order Date</option>
+                                        <option value='volume_count'>Volume Count </option>
+                                        <option value='currency_type'>Currency Type</option>
+                                        <option value='internal_notes'>Internal Notes </option>
+                                        <option value='vendor_notes'>Vendor Notes</option>
+                                        <option value='estimated_price'>Estimated Price</option>
+                                    </select>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><label for="description">Description: </label></td>
+                                <td><input id='oils-acq-provider-or-desc' dojoType="dijit.form.TextBox" name="description"> </input></td>
+                            </tr>
+                            <tr>
+                                <td><label for="amount">Tag: </label></td>
+                                <td><input dojoType="dijit.form.TextBox" name="tag"></input></td>
+                            </tr>
+                            <tr>
+                                <td><label for="amount">Subfield: </label></td>
+                                <td><input dojoType="dijit.form.TextBox" name="subfield"></input></td>
+                            </tr>
+                            <tr>
+                                <td><label for="ident">Identifer Field?: </label></td>
+                                <td>
+                                    <select dojoType="dijit.form.FilteringSelect" name="ident">
+                                        <option value='f' selected='selected'>False</option>
+                                        <option value='t'>True</option>
+                                    </select>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><label for="amount">XPath (advanced): </label></td>
+                                <td><input dojoType="dijit.form.TextBox" name="xpath"></input></td>
+                            </tr>
+                            <tr>
+                                <td colspan='2' align='center'>
+                                    <button dojoType='dijit.form.Button' type="submit">Apply</button>
+                                </td>
+                            </tr>
+                        </table>
+                    </div>
+                </div> 
+
+                <!--
+                    Delete order record data types button
+                -->
+                <button dojoType="dijit.form.Button" onclick='deleteORDataFields();'>
+                    Delete Selected
+                </button>
+            </div>
+
+            <script type='dojo/connect' event='onShow'>loadPADGrid();</script>
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top"> 
+                <div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:600px;'> 
+                    <table jsId="padGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}" rowSelector='20px'> 
+                        <thead> 
+                            <tr> 
+                                <th field="id">ID</th> 
+                                <th field="code" width='auto'>Code</th> 
+                                <th field="description" width='auto'>Description</th>                                 
+                                <th field="tag" get='getTag'>Tag</th> 
+                                <th field="subfield" get='getSubfield'>Subfield</th> 
+                                <th field="xpath" width='auto'>XPath</th> 
+                            </tr> 
+                        </thead> 
+                    </table>     
+                </div> 
+            </div>             
+        </div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/financial/view_provider.js'></script>
+[% END %]
+
diff --git a/Open-ILS/src/templates/default/acq/invoice/view.tt2 b/Open-ILS/src/templates/default/acq/invoice/view.tt2
new file mode 100644 (file)
index 0000000..05920f5
--- /dev/null
@@ -0,0 +1,137 @@
+[% WRAPPER 'default/base.tt2' %]
+[% ctx.page_title = 'Invoicing' %]
+<script type="text/javascript">var invoiceId = '[% ctx.page_args.0 %]';</script>
+<div dojoType="dijit.layout.ContentPane" style="height:100%">
+
+    <div dojoType="dijit.layout.ContentPane" layoutAlign="client" class='oils-header-panel'>
+        <div> Invoice </div>
+        <div> </div>
+    </div>
+
+    <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+        <div id='acq-view-invoice-div'/>
+    </div>
+
+    <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+        <table class='oils-acq-invoice-table'>
+            <thead/>
+            <tbody id='acq-invoice-entry-header' class='hidden'>
+                <tr>
+                    <td colspan='0'>
+                        <h3>Bibliographic Items</h3>
+                    </td>
+                </tr>
+            </tbody>
+            <!-- acq.invoice_entry -->
+            <thead id='acq-invoice-entry-thead' class='hidden'>
+                <tr>
+                    <th colspan='2'>Title Details</th>
+                    <th class='acq-invoice-center-col'>#&nbsp;Invoiced&nbsp;/&nbsp;#&nbsp;Paid</th>
+                    <th class='acq-invoice-center-col'>Billed</th>
+                    <th class='acq-invoice-paid-col'>Paid</th>
+                    <th class='acq-invoice-center-col hide-complete'>Detach</th>
+                </tr>
+            </thead>
+            <tbody id='acq-invoice-entry-tbody' class='hidden'>
+                <tr id='acq-invoice-entry-template' class='acq-invoice-row'>
+                    <td colspan='2'>
+                        <div name='title_details'></div>
+                        <div name='note'></div>
+                    </td>
+                    <td class='acq-invoice-center-col'>
+                        <span name='inv_item_count'></span>&nbsp;/&nbsp;<span name='phys_item_count'></span>
+                    </td>
+                    <td class='acq-invoice-billed-col'><div name='cost_billed'/></td>
+                    <td class='acq-invoice-paid-col'><div name='amount_paid'/></td>
+                    <td class='acq-invoice-center-col hide-complete'><a href='javascript:void(0);' name='detach'>Detach</a></td>
+                </tr>
+            </tbody>
+            <tbody>
+                <tr>
+                    <td  style='margin-top:15px;' colspan='0'>
+                        <h3>Direct Charges, Taxes, Fees, etc.</h3>
+                    </td>
+                </tr>
+            </tbody>
+            <!-- acq.invoice_item -->
+            <thead>
+                <tr>
+                    <th>Charge Type</th>
+                    <th class='acq-invoice-center-col'>Fund</th>
+                    <th>Title/Description</th>
+                    <th class='acq-invoice-center-col'>Billed</th>
+                    <th class='acq-invoice-paid-col'>Paid</th>
+                    <th class='acq-invoice-center-col hide-complete'>Delete</th>
+                </tr>
+            </thead>
+            <tbody id='acq-invoice-item-tbody'>
+                <tr id='acq-invoice-item-template' class='acq-invoice-row acq-invoice-item-row'>
+                    <td><div name='inv_item_type'/></td>
+                    <td class='acq-invoice-center-col'><div name='fund'/></td>
+                    <td><div name='title'/></td>
+                    <td class='acq-invoice-center-col' class='acq-invoice-billed-col'><div name='cost_billed'/></td>
+                    <td class='acq-invoice-paid-col'><div name='amount_paid'/></td>
+                    <td class='acq-invoice-center-col hide-complete'><a href='javascript:void(0);' name='delete'>Delete</a></td>
+                </tr>
+            </tbody>
+            <tbody class='hide-complete'>
+                <tr>
+                    <td colspan='0'>
+                        <a href='javascript:void(0);' id='acq-invoice-new-item'>Add Charge...</a>
+                    </td>
+                </tr>
+            </tbody>
+            <tbody>
+                <tr>
+                    <td style='margin-top:15px;' colspan='0'> 
+                        <h3> </h3>
+                    </td>
+                </tr>
+            </tbody>
+            <thead>
+                <tr>
+                    <th colspan='3'/>
+                    <th class='acq-invoice-center-col' class='acq-invoice-billed-col'>Total</th>
+                    <th class='acq-invoice-paid-col'>Total</th>
+                    <th class='acq-invoice-center-col' class='acq-invoice-balance-col'>Balance</th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <td colspan='3' style='text-align:right;'>
+                        <button jsId='invoiceSaveButton' class='hide-complete'
+                            dojoType='dijit.form.Button' onclick='saveChanges();'>Save</button>
+                        <button jsId='invoiceProrateButton' class='hide-complete'
+                            dojoType='dijit.form.Button' onclick='saveChanges(true);'>Save &amp; Prorate</button>
+                        <button jsId='invoiceCloseButton' class='hide-complete'
+                            dojoType='dijit.form.Button' onclick='saveChanges(false, true);'>Save &amp; Close</button>
+                        <span class='hidden' id='acq-invoice-reopen-button-wrapper'>
+                            <button jsId='invoiceReopenButton' 
+                                dojoType='dijit.form.Button' onclick='saveChanges(false, false, true);'>Reopen Invoice</button>
+                        </span>
+                    </td>
+                    <td class='acq-invoice-center-col'><div jsId='totalInvoicedBox' dojoType='dijit.form.CurrencyTextBox' style='width:9em;'/></td>
+                    <td class='acq-invoice-paid-col'><div jsId='totalPaidBox' dojoType='dijit.form.CurrencyTextBox' style='width:9em;'/></td>
+                    <td class='acq-invoice-center-col'><div jsId='balanceOwedBox' dojoType='dijit.form.CurrencyTextBox' style='width:9em;'/></td>
+                </tr>
+            </tbody>
+        </table>
+    </div>
+</div>
+<div dojoType='openils.widget.ProgressDialog' jsId='progressDialog'/>
+<div jsId='extraItemsDialog' dojoType="dijit.Dialog" title="Extra Items">
+    <div dojoType="dijit.layout.ContentPane" style='text-align:center;'>
+        <div id='acq-invoice-extra-copies-message'></div>
+        <br/>
+        Select a fund for the new items: <div id='acq-invoice-extra-copies-fund'></div>
+        <br/><br/>
+        <br/><br/>
+        <span style='padding-right: 10px;'>
+            <button dojoType='dijit.form.Button' jsId='extraCopiesCancel'>Cancel</button>
+        </span>
+        <button dojoType='dijit.form.Button' jsId='extraCopiesGo'>Add New Items</button>
+    </div>
+</div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/invoice/common.js'> </script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/invoice/view.js'> </script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/lineitem/findbib.tt2 b/Open-ILS/src/templates/default/acq/lineitem/findbib.tt2
new file mode 100644 (file)
index 0000000..c2269c1
--- /dev/null
@@ -0,0 +1,73 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "Locate Bib Record" %]
+<script type="text/javascript">
+    function iterateSubfields(item) {
+        var out = '';
+        dojo.query('subfield', item).forEach(
+            function(item) { out += item.textContent + ' '; } );
+        return out;
+    }
+</script>
+
+<div id='acq-findbib-search' style='margin:30px; border:1px solid #333; text-align:center;'>
+    <input dojoType='dijit.form.TextBox' jsId='searchQuery' style='width:500px;'></input>
+    <button dojoType='dijit.form.Button' onclick='doSearch'>Search</button>
+</div>
+
+<div style='width:100%; ' id='acq-findbib-container'>
+    <div id='acq-findbib-template' style='border-bottom:1px solid #333; padding:10px;'>
+        <div style='font-weight:bold;'>
+            <div type='opac/slot-data' query='datafield[tag=245]'>
+                <script type='opac/slot-format'>return iterateSubfields(item)</script>
+            </div>
+        </div>
+        <div style='margin-left:20px;'>
+            <div>
+                <div type='opac/slot-data' query='datafield[tag=100]'>
+                    <script type='opac/slot-format'>return iterateSubfields(item)</script>
+                </div>
+            </div>
+            <div>
+                <span><a name='view-marc' href='javascript:void(0);'>View MARC</a></span>
+                <span><a name='select-rec' href='javascript:void(0);'>Select</a></span>
+                <span type='opac/slot-data' query='datafield[tag=020]'>
+                    <script type='opac/slot-format'>return iterateSubfields(item)</script>
+                </span> 
+                <span type='opac/slot-data' query='datafield[tag=024]'>
+                    <script type='opac/slot-format'>return iterateSubfields(item)</script>
+                </span> 
+                <span type='opac/slot-data' query='datafield[tag=022]'>
+                    <script type='opac/slot-format'>return iterateSubfields(item)</script>
+                </span>
+                <span type='opac/slot-data' query='datafield[tag=260] subfield[code=c]'></span>
+            </div>
+        </div>
+    </div>
+</div>
+
+<style>
+    #marc-div {
+        position: fixed;
+        top:100px;
+        right:10px;
+        left:200px;
+        bottom:100px;
+        border: 3px solid #333;
+        -moz-border-radius: 5px;
+        padding: 30px;
+        text-align:center;
+        background: #FFF;
+        overflow: auto;
+    }
+</style>
+
+<div id='marc-div' class='hidden'>
+    <button dojoType='dijit.form.Button' onclick='openils.Util.hide("marc-div");'>Hide</button>
+    <div style='text-align:left;'>
+        <div id='marc-html-div'/>
+    </div>
+</div>
+<div jsId='progressDialog' dojoType='openils.widget.ProgressDialog' message='Searching....'/>
+
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/lineitem/findbib.js"></script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/lineitem/history.tt2 b/Open-ILS/src/templates/default/acq/lineitem/history.tt2
new file mode 100644 (file)
index 0000000..4a363df
--- /dev/null
@@ -0,0 +1,30 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "Lineitem History" %]
+<h1>Lineitem History</h1>
+<br/>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <table  jsId="lhGrid"
+            autoHeight='true'
+            dojoType="openils.widget.AutoGrid"
+            defaultCellWidth="'auto'"
+            fieldOrder="['audit_time', 'state', 'picklist', 'purchase_order', 'provider', 'estimated_unit_price', 'claim_policy', 'create_time', 'edit_time', 'creator', 'editor', 'selector']"
+            query="{audit_id: '*'}"
+            suppressFields='["id", "audit_id", "marc", "audit_action"]'
+            fmClass='acqlih'
+            editOnEnter='true'
+            editReadOnly='true'
+            showPaginator='true'>
+    </table>
+</div>
+
+<script type="text/javascript">
+    dojo.require('openils.Util');
+    dojo.require('openils.widget.AutoGrid');
+    var liId = "[% ctx.page_args.0 %]";
+    openils.Util.addOnLoad(
+        function() {
+            lhGrid.loadAll({order_by : {acqlih :  'audit_time DESC'}}, {id : liId});
+        }
+    );
+</script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/lineitem/related.tt2 b/Open-ILS/src/templates/default/acq/lineitem/related.tt2
new file mode 100644 (file)
index 0000000..6d47ec9
--- /dev/null
@@ -0,0 +1,52 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "Related Lineitems" %]
+<script type="text/javascript">var targetId = "[% ctx.page_args.0 %]";</script>
+<h1>Related Lineitems</h1>
+<div id="acq-related-mini">
+    <script type="text/javascript">
+        function iterateSubfields(item) {
+            var out = '';
+            dojo.query('subfield', item).forEach(
+                function(item) { out += item.textContent + ' '; } );
+            return out;
+        }
+    </script>
+    <ul id="acq-related-mini-display">
+        <li>
+            <div type='opac/slot-data' query='datafield[tag=245]'>
+                <script type='opac/slot-format'>return iterateSubfields(item)</script>
+            </div>
+        </li>
+        <li>
+            <div type='opac/slot-data' query='datafield[tag=100] subfield[code=a]'/>
+        </li>
+        <li>
+            <div type='opac/slot-data' query='datafield[tag=020]'>
+                <script type='opac/slot-format'>return iterateSubfields(item)</script>
+            </div> 
+            <div type='opac/slot-data' query='datafield[tag=024]'>
+                <script type='opac/slot-format'>return iterateSubfields(item)</script>
+            </div> 
+            <div type='opac/slot-data' query='datafield[tag=022]'>
+                <script type='opac/slot-format'>return iterateSubfields(item)</script>
+            </div>
+        </li>
+        <li>
+            <div type='opac/slot-data' query='datafield[tag=260] subfield[code=c]'/>
+        </li>
+    </ul>
+
+    <div id="acq-related-li-create-holder">
+        <button jsId="addToPlButton" dojoType="dijit.form.Button">
+            Add to Selection List
+        </button>
+        <button jsId="createPoButton" dojoType="dijit.form.Button">
+            Create Purchase Order
+        </button>
+    </div>
+
+</div>
+[% INCLUDE "default/acq/common/info.tt2" which = "Related" %]
+[% INCLUDE "default/acq/common/li_table.tt2" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/lineitem/related.js"></script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/lineitem/search.tt2 b/Open-ILS/src/templates/default/acq/lineitem/search.tt2
new file mode 100644 (file)
index 0000000..f2cf8ad
--- /dev/null
@@ -0,0 +1,115 @@
+[% WRAPPER 'default/base.tt2' %]
+[% ctx.page_title = 'Lineitem Search' %]
+<!-- later: "[% ctx.page_args.0 %]" -->
+<div id="oils-acq-li-search-form-holder" class="hidden">
+    <h1 class="oils-acq-li-search">Lineitem Search</h1>
+    <form dojoType="dijit.form.Form" action="" method=""
+        id="oils-acq-li-search-form" jsId="searchForm">
+        <script type="dojo/method" event="onSubmit">
+            doSearch(this.getValues());
+            return false; /* no redirect */
+        </script>
+
+        <div class="oils-acq-li-search-form-row">
+            <label class="oils-acq-li-search" for="state_selector">
+                Lineitem state
+            </label>
+            <input class="oils-acq-li-search" name="state"
+                dojoType="dijit.form.FilteringSelect" required="false"
+                id="state_selector" jsId="stateSelector"
+                labelAttr="description" searchAttr="description"
+                />
+            <label class="oils-acq-li-search" for="agency_selector">
+                PO ordering agency
+            </label>
+            <input class="oils-acq-li-search" id="agency_selector" />
+        </div>
+        <div class="oils-acq-li-search-form-row">
+            <input class="oils-acq-li-search" dojoType="dijit.form.RadioButton"
+                name="attr_search_type" jsId="attrSearchTypeNone"
+                id="attr_search_type_none" value="none" checked="checked"
+                onChange="toggleAttrSearchType(this.value, this.checked);" />
+            <label for="attr_search_type_none" class="oils-acq-li-search">
+                No further attributes to search by
+            </label>
+        </div>
+        <div class="oils-acq-li-search-form-row">
+            <!-- the "style" attribute on this input seems to be necessary as
+                I can't get the same effect from CSS for some reason -->
+            <input class="oils-acq-li-search" dojoType="dijit.form.RadioButton"
+                name="attr_search_type" jsId="attrSearchTypeScalar"
+                id="attr_search_type_scalar" value="scalar"
+                style="vertical-align: top;"
+                onChange="toggleAttrSearchType(this.value, this.checked);" />
+            <label for="attr_search_type_scalar" class="oils-acq-li-search">
+                Search by attribute values
+            </label>
+            <div id="oils-acq-li-search-attr-scalar" class="hidden">
+<!--            <div class="oils-acq-li-search-conjunction">
+                    <em>Show results for which:</em><br />
+                    <input dojoType="dijit.form.RadioButton"
+                        id="scalar_search_conjuction_or"
+                        name="scalar_search_conjunction" value="or"
+                        checked="checked" class="oils-acq-li-search" />
+                    <label for="scalar_search_conjuction_or"
+                        class="oils-acq-li-search">ANY of the following terms match</label>
+                    <br />
+                    <input dojoType="dijit.form.RadioButton"
+                        id="scalar_search_conjuction_and"
+                        name="scalar_search_conjunction" value="and"
+                        class="oils-acq-li-search" />
+                    <label for="scalar_search_conjuction_and"
+                        class="oils-acq-li-search">ALL of the following terms match</label>
+                </div> -->
+                <div class="oils-acq-li-search-scalar hidden"
+                    id="oils-acq-li-search-scalar-template">
+                    <input class="oils-acq-li-search" name="def" />
+                    <input class="oils-acq-li-search" name="value" />
+                    <a class="oils-acq-li-search" title="Remove this row"
+                        href="javascript:void(0);" />(X)</a>
+                </div>
+                <div id="oils-acq-li-search-scalar-adder">
+                    <span dojoType="dijit.form.Button"
+                        class="oils-acq-li-search"
+                        onclick="scalarAttrSearchManager.add();">
+                        Add more search terms
+                    </span>
+                    <span dojoType="dijit.form.Button"
+                        class="oils-acq-li-search"
+                        onclick="scalarAttrSearchManager.newBrief();">
+                        New brief record like this
+                    </span>
+                </div>
+            </div>
+        </div>
+        <div class="oils-acq-li-search-form-row">
+            <input class="oils-acq-li-search" dojoType="dijit.form.RadioButton"
+                name="attr_search_type" jsId="attrSearchTypeArray"
+                id="attr_search_type_array" value="array"
+                onChange="toggleAttrSearchType(this.value, this.checked);" />
+            <label for="attr_search_type_array" class="oils-acq-li-search">
+                Provide a file of search terms
+            </label>
+            <div id="oils-acq-li-search-attr-array" class="hidden">
+                <input class="oils-acq-li-search"
+                    name="array_def" dojoType="dijit.form.FilteringSelect"
+                    jsId="attrArrayDefSelector"
+                    labelAttr="description" searchAttr="description" />
+                <span class="oils-acq-li-search">
+                    <span id="records-up">0</span> term(s) prepared for search
+                </span>
+                <span class="oils-acq-li-search" dojoType="dijit.form.Button"
+                    onClick="loadTermsFromFile();">Add file</span>
+                <span class="oils-acq-li-search" dojoType="dijit.form.Button"
+                    onClick="clearTerms();">Clear loaded search terms</span>
+            </div>
+        </div>
+        <div class="oils-acq-li-search-form-row"
+            id="oils-acq-li-search-attr-submit">
+            <span dojoType="dijit.form.Button" type="submit">Search</span>
+        </div>
+    </form>
+</div>
+[% INCLUDE 'default/acq/common/li_table.tt2' %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/lineitem/search.js"></script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/lineitem/worksheet.tt2 b/Open-ILS/src/templates/default/acq/lineitem/worksheet.tt2
new file mode 100644 (file)
index 0000000..1882237
--- /dev/null
@@ -0,0 +1,11 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "Lineitem Worksheet" %]
+<script type="text/javascript">var liId = "[% ctx.page_args.0 %]";</script>
+<h1>Lineitem Worksheet</h1>
+<br/>
+<div id="acq-worksheet-contents"></div>
+<div class='hidden'>
+    <div jsId='progressDialog' dojoType='openils.widget.ProgressDialog' message='Loading Worksheet...'/>
+</div>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/lineitem/worksheet.js"></script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/picklist/bib_search.tt2 b/Open-ILS/src/templates/default/acq/picklist/bib_search.tt2
new file mode 100644 (file)
index 0000000..f80d978
--- /dev/null
@@ -0,0 +1,74 @@
+[% WRAPPER 'default/base.tt2' %]
+<style type="text/css">
+    @import "[% ctx.media_prefix %]/js/dojo/dojox/form/resources/CheckedMultiSelect.css";
+</style>
+
+<script type="text/javascript">
+    var searchOffset = 0;
+</script>
+
+<div id='oils-acq-search-block' class='container'>
+
+    <form dojoType='dijit.form.Form' action='' method=''>
+        <script type="dojo/method" event="onSubmit">
+            doSearch(this.getValues());
+            return false; /* don't redirect */
+        </script>
+        <div id='oils-acq-search-sources-block'>
+            <div id='oils-acq-search-sources-label'>Search Sources</div>
+            <select style='overflow-y:auto;' id='oils-acq-search-source-select' 
+                    multiple='true' jsId="bibSourceSelect" dojoType="dojox.form.CheckedMultiSelect">
+                <option selected='selected' value='native-evergreen-catalog'>Evergreen Catalog</option>
+            </select>
+        </div>
+        <div id='oils-acq-search-form-block'>
+            <div id='oils-acq-search-fields-label'>Search Fields</div>
+            <div id='oils-acq-search-fields'>
+            </div>
+            <table>
+                <tbody id='oils-acq-search-fields-tbody'>
+                    <tr id='oils-acq-search-fields-template'>
+                        <td name='label'> </td>
+                        <td name='input'> </td>
+                    </tr>
+                    <tr id='oils-acq-seach-fields-count-row'>
+                        <td name='label'>Hits Per Source</td>
+                        <td><input name='limit'
+                            dojoType='dijit.form.NumberSpinner'
+                            constraints='{min:5,max:50}'
+                            value='10'></input>
+                        </td>
+                    </tr>
+                    <tr id='oils-acq-search-fields-submit-block'>
+                        <td><div dojoType='dijit.form.Button' type='submit'>Submit</div></td>
+                        <td><div dojoType='dijit.form.Button' onclick='clearSearchForm()'>Clear Form</div></td>
+                    </tr>
+                </tbody>
+            </table>
+        </div>
+    </form>
+</div>
+
+<div id='oils-acq-pl-search-results'>
+    <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+        <div>Search Results</div>
+        <div>
+            <div id='oils-acq-update-li-progress' class='hidden'>
+                <div dojoType="dijit.ProgressBar" style="width:300px" jsId="liUpdateProgress"></div>
+            </div>
+            <div dojoType='dijit.form.Button' onClick='showDiv("oils-acq-search-block");'>New Search</div>
+        </div>
+    </div>
+    <div dojoType='dijit.layout.ContentPane' layoutAlign='client'>
+        [% INCLUDE 'default/acq/common/li_table.tt2' %]
+    </div>
+</div>
+
+<div id='oils-acq-pl-loading' style='width:100%;margin-top:100px;display:none;text-align:center'>
+    <img src='[% ctx.media_prefix %]/opac/images/progressbar_green.gif'/>
+</div>
+
+<script type="text/javascript">dojo.style('oils-acq-pl-search-results', 'display', 'none');</script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/bib_search.js'></script>
+[% END %]
+
diff --git a/Open-ILS/src/templates/default/acq/picklist/brief_record.tt2 b/Open-ILS/src/templates/default/acq/picklist/brief_record.tt2
new file mode 100644 (file)
index 0000000..4f8156b
--- /dev/null
@@ -0,0 +1,35 @@
+[% WRAPPER 'default/base.tt2' %]
+<h1>New Brief Record</h1><br/>
+<form dojoType='dijit.form.Form'>
+    <script type='dojo/method' event='onSubmit'>
+        return saveBriefRecord(this.getValues());
+    </script>
+    <table class='oils-generic-table'>
+        <tbody id='acq-brief-record-tbody'>
+            <tr id='acq-brief-record-pl-row'>
+                <td>Add To Selection List</td>
+                <td><select dojoType='dijit.form.ComboBox' jsId='plSelector'/></td>
+            </tr>
+            <tr id='acq-brief-record-po-row'>
+                <td>Adding to Purchase Order</td>
+                <td><input dojoType='dijit.form.TextBox' jsId='poNumber' disabled='disabled'/></td>
+            </tr>
+            <tr id='acq-brief-record-row'>
+                <td><div name='name'/></td>
+                <td><div name='widget'/></td>
+            </tr>
+        </tbody>
+        <tbody>
+            <tr>
+                <td><button dojoType='dijit.form.Button' type='submit'>Save Record</button></td>
+                <!--
+                <td><button dojoType='dijit.form.Button' type='submit' jsId='marcEditButton'>Edit MARC</button></td>
+                -->
+            </tr>
+        </tbody>
+    </table>
+</form>
+
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/brief_record.js'> </script>
+
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/picklist/from_bib.tt2 b/Open-ILS/src/templates/default/acq/picklist/from_bib.tt2
new file mode 100644 (file)
index 0000000..0a422ec
--- /dev/null
@@ -0,0 +1,24 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "Items by Bibliographic ID" %]
+<div id="acq-frombib-upload-box">
+    <div class="oils-acq-basic-roomy">
+        Provide one or more CSV files whose first columns
+        contain Evergreen bibliographic record IDs.
+    </div>
+    <div class="oils-acq-basic-roomy">
+        <span id="acq-frombib-upload"></span>
+    </div>
+    <div id="acq-frombib-begin-holder" class="oils-acq-basic-roomy hidden">
+        <button id="acq-frombib-begin" onclick="beginSearch();">
+            Retrieve records
+        </button>
+    </div>
+</div>
+<div id="acq-frombib-reload-box" class="oils-acq-basic-roomy hidden">
+    <button onclick="location.href=location.href;">Begin a new search</button>
+</div>
+<hr />
+[% INCLUDE "default/acq/common/li_table_pager.tt2" %]
+[% INCLUDE "default/acq/common/li_table.tt2" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/picklist/from_bib.js"> </script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/picklist/list.tt2 b/Open-ILS/src/templates/default/acq/picklist/list.tt2
new file mode 100644 (file)
index 0000000..217cbb6
--- /dev/null
@@ -0,0 +1,107 @@
+[% WRAPPER 'default/base.tt2' %]
+[% ctx.page_title = 'Selection Lists' %]
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <div id='oils-acq-list-header' class='container'>
+        <div id='oils-acq-picklist-my-list-header'>
+            <div id='oils-acq-list-header-label'>My Selection Lists</div>
+        </div>
+    </div>
+</div>
+
+<div class='oils-acq-actions-div' dojoType="dijit.layout.ContentPane" layoutAlign="client">
+
+    <div dojoType="dijit.form.DropDownButton">
+        <span>New Selection List</span>
+        <div dojoType="dijit.TooltipDialog" execute="createPL(arguments[0]);">
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td><label for="name">Name:</label></td>
+                    <td><input dojoType="dijit.form.TextBox" name="name"/></td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <button dojoType='dijit.form.Button' type="submit">Create</button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+
+    <div dojoType="dijit.form.DropDownButton">
+        <span>Clone Selected</span>
+        <div dojoType="dijit.TooltipDialog" execute="cloneSelectedPl(arguments[0]);">
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td><label for="name">New Name:</label></td>
+                    <td><input dojoType="dijit.form.TextBox" name="name"/></td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <button dojoType='dijit.form.Button' type="submit">Clone</button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+
+    <div dojoType="dijit.form.DropDownButton">
+        <span>Merge Selected</span>
+        <div dojoType="dijit.TooltipDialog" execute="mergeSelectedPl(arguments[0]);" jsId='plMergeDialog'>
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td><label for="name">Choose the Lead Selection List:</label></td>
+                    <td><input jsId='plMergeLeadSelector' dojoType="dijit.form.FilteringSelect" name="lead"/></td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <button dojoType='dijit.form.Button' type="submit">Merge</button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+    <button dojoType="dijit.form.Button" onclick="deleteFromGrid();">Delete Selected</button>
+</div>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <table 
+            autoHeight='true'
+            jsId="plListGrid" 
+            dojoType="openils.widget.AutoGrid" 
+            query="{id: '*'}" 
+            fieldOrder="['name', 'owner', 'entry_count', 'create_time', 'edit_time']"
+            suppressFields="['editor', 'creator']"
+            query="{id: '*'}"
+            defaultCellWidth='"auto"'
+            fmClass='acqpl'
+            showPaginator='true'
+            editOnEnter='true'>
+        <thead>
+            <tr>
+                <th field="name" formatter='formatName'/>
+                <th field="owner" get='getOwnerName'/>
+                <th field="entry_count">Entry Count</th>
+            </tr>
+        </thead>
+    </table>
+    <div class='hidden'>
+        <div jsId='progressDialog' dojoType='openils.widget.ProgressDialog'/>
+    </div>
+</div>
+
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/view_list.js'></script>
+
+<script type="text/javascript">
+    function formatName(inDatum) {
+        for(var i in plCache){
+            var pl = plCache[i];
+            var id = pl.id();
+            if (inDatum  == pl.name()){
+                return '<a href="[% ctx.base_path %]/acq/picklist/view/'+id+'">'+inDatum+'</a>';
+            }
+        }
+    }
+</script>
+
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/picklist/upload.tt2 b/Open-ILS/src/templates/default/acq/picklist/upload.tt2
new file mode 100644 (file)
index 0000000..b05ddc0
--- /dev/null
@@ -0,0 +1,97 @@
+[% WRAPPER 'default/base.tt2' %]
+
+<h1>Upload</h1><br/>
+<form id="acq-pl-upload-form" enctype="multipart/form-data">
+    <input type='hidden' name='ses' id='acq-pl-upload-ses'/>
+    <table class='oils-generic-table'>
+        <tbody>
+            <tr>
+                <td>Create Purchase Order</td>
+                <td>
+                    <input dojoType='dijit.form.CheckBox' name='create_po'></input>
+                </td>
+            </tr>
+            <tr>
+                <td>Activate Purchase Order</td>
+                <td>
+                    <input dojoType='dijit.form.CheckBox' name='activate_po'></input>
+                </td>
+            </tr>
+            <tr>
+                <!-- XXX CHECK IMPORT PERMS TO ENABLE -->
+                <td>Load Bibs and Items into the ILS</td>
+                <td>
+                    <input dojoType='dijit.form.CheckBox' name='create_assets'></input>
+                </td>
+            </tr>
+            <tr>
+                <td>Provider</td>
+                <td><div id='acq-pl-upload-provider'></div></td>
+            </tr>
+            <tr id='acq-pl-upload-agency-row'>
+                <td>Context Org Unit</td>
+                <td><div id='acq-pl-upload-agency'></div></td>
+            </tr>
+            <tr id='acq-pl-upload-picklist'>
+                <td>Add to Selection List</td>
+                <td>
+                    <select jsId='acqPlUploadPlSelector' dojoType='dijit.form.ComboBox'></select>
+                </td>
+            </tr>
+            <tr>
+                <td>Records File</td>
+                <td><input size='36' type="file" name="marc_upload"></input></td>
+            </tr>
+            <tr>
+                <td align='center' colspan='2'>
+                    <button dojoType="dijit.form.Button" onClick="acqUploadRecords()">Upload</button>
+                </td>
+            </tr>
+        </tbody>
+    </table>
+
+    <br/>
+    <br/>
+    <div id="acq-pl-upload-progress" class='hidden'>
+        <div id='acq-pl-upload-progress-bar'>
+            <div dojoType="dijit.ProgressBar" style="width:300px" indeterminate="true"></div>
+        </div>
+        <div>
+            <table class='oils-generic-table'>
+                <tbody>
+                    <tr>
+                        <td>Lineitems Processed</td>
+                        <td><span id='acq-pl-upload-li-processed'>0</span></td>
+                    </tr>
+                    <tr>
+                        <td>Items Processed</td>
+                        <td><span id='acq-pl-upload-lid-processed'>0</span></td>
+                    </tr>
+                    <tr>
+                        <td>Debits Encumbered</td>
+                        <td><span id='acq-pl-upload-debits-processed'>0</span></td>
+                    </tr>
+                    <tr>
+                        <td>Bib Records Imported</td>
+                        <td><span id='acq-pl-upload-bibs-processed'>0</span></td>
+                    </tr>
+                    <tr>
+                        <td>Bib Records Indexed</td>
+                        <td><span id='acq-pl-upload-indexed-processed'>0</span></td>
+                    </tr>
+                    <tr>
+                        <td>Copies Created</td>
+                        <td><span id='acq-pl-upload-copies-processed'>0</span></td>
+                    </tr>
+                </tbody>
+                <tbody id='acq-pl-upload-complete' class='hidden'>
+                    <tr><td colspan='2'>Upload Complete!</td></tr>
+                    <tr><td colspan='2'><a id='acq-pl-upload-complete-po'>View Purchase Order</a></td></tr>
+                    <tr><td colspan='2'><a id='acq-pl-upload-complete-pl'>View Selection List</a></td></tr>
+                </tbody>
+            </table>
+        </div>
+    </div>
+</form>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/upload.js'> </script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/picklist/user_request.tt2 b/Open-ILS/src/templates/default/acq/picklist/user_request.tt2
new file mode 100644 (file)
index 0000000..02e3683
--- /dev/null
@@ -0,0 +1,66 @@
+[% WRAPPER 'default/base.tt2' %]
+[% ctx.page_title = 'Patron Requests' %]
+<script type="text/javascript">var reqId = '[% ctx.page_args.0 %]';</script>
+
+    <div dojoType="dijit.layout.StackContainer" id="stackContainer" doLayout="false">
+        <!-- *** List View ********************************************************************************* -->
+        <div dojoType="dijit.layout.ContentPane">
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+                <div>[% ctx.page_title %]</div>
+            </div>
+            <div>
+                <span>Context Org Unit</span>
+                <select 
+                    dojoType="openils.widget.OrgUnitFilteringSelect" 
+                    jsId='contextOrgSelector'
+                    searchAttr='shortname' 
+                    labelAttr='shortname'> 
+                </select>
+            </div>
+            <table  jsId="rGrid"
+                    dojoType="openils.widget.AutoGrid"
+                    query="{id: '*'}"
+                    suppressFields='["id", "usr", "pickup_lib", "holdable_formats", "phone_notify", "email_notify", "lineitem", "eg_bib", "max_fee", "cancel_reason"]'
+                    fieldOrder='["title", "author", "isxn", "article_title", "article_pages", "request_type", "volume", "pubdate", "publisher", "location", "other_info", "mentioned"]'
+                    fmClass='aur'
+                    editStyle='pane'
+                    autoHeight='true'
+                    defaultCellWidth='"auto"'
+                    suppressFields="['id']"
+                    showPaginator='true'
+                    showColumnPicker='true'
+                    columnPickerPrefix='"acq.picklist.user_request"'>
+                    <thead>
+                        <tr>
+                            <th field='title' get='getTitle' formatter='formatTitle'/>
+                        </tr>
+                    </thead>
+            </table>
+        </div>
+        <!-- *** Detail View ********************************************************************************* -->
+        <div dojoType="dijit.layout.ContentPane" style="height: 100%;">
+            <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+                <div>Patron Request</div>
+                <div>
+                    <button dojoType="dijit.form.Button" onClick="location.href=oilsBasePath+'/acq/picklist/user_request'">[% ctx.page_title %]</button>
+                    <button dojoType="dijit.form.Button" onClick="fooPicklist()"><span id="add_to_picklist">Add to Selection List</span><span id="view_picklist">View Selection List</span></button>
+                    <button dojoType="dijit.form.Button" onClick="setNoHold()">Set No Hold</button>
+                    <span dojoType="dijit.form.DropDownButton">
+                        <span>Cancel Request</span>
+                        <span dojoType="dijit.TooltipDialog">
+                            <label for="acq-ur-cancel-reason">
+                                Reason:
+                            </label>
+                            <span id="acq-ur-cancel-reason"></span>
+                            <button jsId="acqUrCancelReasonSubmit"
+                                dojoType="dijit.form.Button"
+                                type="submit">Cancel Request</button>
+                        </span>
+                    </span>
+                </div>
+            </div>
+            <div id="detail_content_pane" />
+        </div>
+    </div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/user_request.js'></script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/picklist/view.tt2 b/Open-ILS/src/templates/default/acq/picklist/view.tt2
new file mode 100644 (file)
index 0000000..dcb693d
--- /dev/null
@@ -0,0 +1,20 @@
+[% WRAPPER 'default/base.tt2' %]
+[% ctx.page_title = 'Selection List' %]
+<div dojoType="dijit.layout.ContentPane" style="height:100%">
+    <div class='container'>
+        <div id='oils-acq-picklist-header'>
+            Selection list <span id='oils-acq-picklist-name'> </span>
+            <div class='oils-acq-picklist-attributes'>
+                <div>Create date: <span id="oils-acq-picklist-attr-cdate"></span></div>
+                <div>Last updated: <span id="oils-acq-picklist-attr-edate"></span></div>
+                <div>Selector: <span id="oils-acq-picklist-attr-owner"></span></div>
+                <div>Entry Count: <span id="oils-acq-picklist-attr-count"></span></div>
+            </div>
+        </div>
+    </div>
+    <script type="text/javascript">var plId = '[% ctx.page_args.0 %]';</script>
+    [% INCLUDE 'default/acq/common/li_table.tt2' %]
+</div>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/picklist/view.js'></script>
+[% END %]
+
diff --git a/Open-ILS/src/templates/default/acq/po/create.tt2 b/Open-ILS/src/templates/default/acq/po/create.tt2
new file mode 100644 (file)
index 0000000..5dde850
--- /dev/null
@@ -0,0 +1,5 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "Create Purchase Order" %]
+<h1>Create Purchase Order</h1>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/po/create.js"> </script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/po/edi_messages.tt2 b/Open-ILS/src/templates/default/acq/po/edi_messages.tt2
new file mode 100644 (file)
index 0000000..76c2101
--- /dev/null
@@ -0,0 +1,46 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "EDI Messages" %]
+[% IF ctx.page_args.0 %]
+<h1>EDI Messages (Purchase Order [% ctx.page_args.0 %])</h1>
+[% ELSE %]
+<h1>EDI Messages</h1>
+[% END  %]
+<br/>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <table  jsId="edimGrid"
+            autoHeight='true'
+            dojoType="openils.widget.AutoGrid"
+            defaultCellWidth="'auto'"
+            query="{id: '*'}"
+            [% IF ctx.page_args.0 %]
+            fieldOrder="['message_type', 'status', 'create_time', 'translate_time', 'process_time', 'error_time', 'error', 'account', 'remote_file']"
+            suppressFields="['id', 'edi', 'jedi', 'purchase_order']"
+            [% ELSE %]
+            fieldOrder="['purchase_order', 'message_type', 'status', 'create_time', 'translate_time', 'process_time', 'error_time', 'error', 'account', 'remote_file']"
+            suppressFields="['id', 'edi', 'jedi']"
+            [% END  %]
+            editStyle='pane'
+            fmClass='acqedim'
+            editOnEnter='true'
+            editReadOnly='true'
+            showPaginator='true'>
+    </table>
+</div>
+
+<script type="text/javascript">
+    dojo.require('openils.Util');
+    dojo.require('openils.widget.AutoGrid');
+    dojo.require('openils.widget.Textarea');
+
+    var poId = "[% ctx.page_args.0 %]";
+    openils.Util.addOnLoad(
+        function() {
+            if (poId) {
+                edimGrid.loadAll({order_by : {acqedim :  'create_time DESC'}}, {purchase_order : poId});
+            } else  {
+                edimGrid.loadAll({order_by : {acqedim :  'create_time DESC'}});
+            }
+        }
+    );
+</script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/po/events.tt2 b/Open-ILS/src/templates/default/acq/po/events.tt2
new file mode 100644 (file)
index 0000000..a06fc89
--- /dev/null
@@ -0,0 +1,64 @@
+[% WRAPPER default/base.tt2 %]
+
+<!-- grid -->
+
+ <div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+        <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class="oils-header-panel">
+            <div>PO Triggered Events</div>
+            <div>
+                <button dojoType="dijit.form.Button" onClick="eventGrid.cancelSelected()">Cancel Selected</button>
+                <button dojoType="dijit.form.Button" onClick="eventGrid.resetSelected()">Reset Selected</button>
+            </div>
+        </div>
+        <div class="oils-acq-basic-form-div">
+            <span>
+                <label for="state">State</label>
+                <select name="state"
+                    dojoType="dijit.form.FilteringSelect"
+                    jsId="eventStateSelect"
+                    searchAttr="name"
+                    labelAttr="name"></select>
+            </span>
+            <span>
+                <label for="orgUnit">Context Org Unit</label>
+                <select name="orgUnit" 
+                    dojoType="openils.widget.OrgUnitFilteringSelect" 
+                    jsId="eventContextOrgSelect"
+                    searchAttr="shortname" 
+                    labelAttr="shortname"></select>
+            </span>
+            <span>
+                <label for="startDate">Start Date Range</label>
+                <input name="startDate"
+                    type="text"
+                    dojoType="dijit.form.DateTextBox"
+                    jsId="eventStartDatePicker" />
+            </span>
+            <span>
+                <label for="endDate">End Date Range</label>
+                <input name="endDate"
+                    type="text"
+                    dojoType="dijit.form.DateTextBox"
+                    jsId="eventEndDatePicker" />
+            </span>
+            <button dojoType="dijit.form.Button" onClick="eventGrid.doSearch()">Search</button>
+        </div>
+        <table  jsId="eventGrid"
+                dojoType="openils.widget.AutoGrid"
+                query="{id: '*'}"
+                fmClass="atev"
+                suppressFields="['update_process','user_data','template_output','error_output','async_output','event_def']"
+                defaultCellWidth="'auto'"
+                editOnEnter="false">
+            <thead>
+                <tr>
+                    <th field="target" formatter="format_po_link">Purchase Order</th>
+                </tr>
+            </thead>
+        </table>
+    </div>
+</div>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/po/events.js"> </script>
+[% END %]
+
+
diff --git a/Open-ILS/src/templates/default/acq/po/history.tt2 b/Open-ILS/src/templates/default/acq/po/history.tt2
new file mode 100644 (file)
index 0000000..2b3c5d0
--- /dev/null
@@ -0,0 +1,30 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "PO History" %]
+<h1>Purchase Order History</h1>
+<br/>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <table  jsId="pohGrid"
+            autoHeight='true'
+            dojoType="openils.widget.AutoGrid"
+            defaultCellWidth="'auto'"
+            fieldOrder="['audit_time', 'name', 'state', 'ordering_agency', 'provider', 'create_time', 'edit_time', 'order_date', 'creator', 'editor', 'owner']"
+            query="{audit_id: '*'}"
+            suppressFields='["id", "audit_id", "audit_action"]'
+            fmClass='acqpoh'
+            editOnEnter='true'
+            editReadOnly='true'
+            showPaginator='true'>
+    </table>
+</div>
+
+<script type="text/javascript">
+    dojo.require('openils.Util');
+    dojo.require('openils.widget.AutoGrid');
+    var poId = "[% ctx.page_args.0 %]";
+    openils.Util.addOnLoad(
+        function() {
+            pohGrid.loadAll({order_by : {acqpoh :  'audit_time DESC'}}, {id : poId});
+        }
+    );
+</script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/po/item_table.tt2 b/Open-ILS/src/templates/default/acq/po/item_table.tt2
new file mode 100644 (file)
index 0000000..1948b6d
--- /dev/null
@@ -0,0 +1,34 @@
+<div id="acq-po-item-table" class="hidden">
+    <h3>Direct Charges, Taxes, Fees, etc.</h3>
+    <table>
+        <thead id="acq-po-item-table-headings">
+            <tr>
+                <th>Charge Type</th>
+                <th>Fund</th>
+                <th>Title/Description</th>
+                <th>Author</th>
+                <th>Note</th>
+                <th>Estimated Cost</th>
+                <th><!-- Delete --></th>
+            </tr>
+        </thead>
+        <tbody id="acq-po-item-table-items">
+            <tr>
+                <td name="inv_item_type" em="12"></td>
+                <td name="fund" em="10"></td>
+                <td name="title" em="12"></td>
+                <td name="author" em="8"></td>
+                <td name="note" em="12"></td>
+                <td name="estimated_cost" em="8"></td>
+                <td><button name="delete">X</button></td>
+            </tr>
+        </tbody>
+    </table>
+    <div id="acq-po-item-table-i-am-empty" class="hidden">
+        <em>There are no miscellanea attached to this purchase order.</em>
+    </div>
+    <div id="acq-po-item-table-controls">
+        <button id="acq-po-item-table-new-charge">New Charge</button> &nbsp;
+        <button id="acq-po-item-table-save-new">Save New Charges</button>
+    </div>
+</div>
diff --git a/Open-ILS/src/templates/default/acq/po/search.tt2 b/Open-ILS/src/templates/default/acq/po/search.tt2
new file mode 100644 (file)
index 0000000..de8bd1d
--- /dev/null
@@ -0,0 +1,143 @@
+[% WRAPPER default/base.tt2 %]
+[% ctx.page_title = 'Purchase Orders' %]
+<script type="text/javascript">
+    var poIds = function(s) {
+        return s == "" ? undefined :
+            s.split(",").map(function(t) { return Number(t); });
+    }("[% ctx.page_args.0 %]");
+</script>
+<div id='oils-acq-list-header' class='container'>
+    <div id='oils-acq-list-header-label'>PO Search</div>
+</div>
+
+<div id="oils-acq-po-heading-template" class="hidden">
+    <span>Purchase Order: <a attr="name"></a></span>
+    <span>Total Lineitems: <span attr="lineitem_count"></span></span>
+    <span>Total Encumbered: $<span attr="amount_encumbered"></span></span>
+    <span>Total Spent: $<span attr="amount_spent"></span></span>
+    <span>Total Copies: <span attr="copies"></span></span>
+    <span>Status: <span attr="state"></span></span>
+    <span><a class="hidden" attr="activator" href="javascript:void(0);">Activate Order</a></span>
+</div>
+
+<script type="text/javascript">
+    function formatId(id) {
+        if(id) return '<a href="[% ctx.base_path %]/acq/po/view/' + id + '">'+id;
+    }
+</script>
+
+
+<form dojoType='dijit.form.Form' action='' method='' id='oils-acq-po-search-form'>
+
+    <script type="dojo/method" event="onSubmit">
+        doSearch(this.getValues());
+        return false; /* don't redirect */
+    </script>
+
+    <div class='oils-acq-basic-form-div'>
+
+        <label for='id'>ID</label>
+        <input dojoType='dijit.form.NumberTextBox' name='id'> </input>
+
+        <label for='provider'>Provider</label>
+        <input id='po-search-provider-selector'/>
+
+        <label for='state'>State</label></td>
+        <script type="text/javascript">
+            dojo.require('dojo.data.ItemFileReadStore');
+            var stateStore = new dojo.data.ItemFileReadStore({
+                data : {
+                    identifier:"value",
+                    label: "name",
+                    items: [
+                        /* FIXME This is probably not the correct final list of 
+                        possible states */
+                        {name:"New", value:'new'},
+                        {name:"In Process", value:'in-process'},
+                        {name:"Pending", value:'pending'},
+                        {name:"On order", value:'on-order'}
+                    ]
+                }
+            });
+        </script>
+        <input dojoType='dijit.form.FilteringSelect' 
+            name='state' 
+            required='false' 
+            store='stateStore' 
+            labelAttr='name' 
+            valueAttr='value' 
+            searchAttr='name'/>
+
+        <label for='ordering_agency'>Ordering Agency</label>
+        <input id='po-search-agency-selector'/>
+
+        <span dojoType='dijit.form.Button' type='submit'>Search</span>
+    </div>
+    <div class="oils-acq-basic-form-div">
+        <input dojoType="dijit.form.CheckBox" value="1" name="metapo_view"
+            id="metapo_view" type="checkbox" />
+        <label for="metapo_view">Show results as a virtual combined PO</label>
+    </div>
+</form>
+<br/>
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client" id="holds_po_grid">
+    <table 
+            id="po-grid" 
+            autoHeight='true'
+            jsId="poGrid" 
+            dojoType="openils.widget.AutoGrid" 
+            query="{id: '*'}" 
+            fieldOrder="['id', 'owner', 'ordering_agency', 'provider', 'create_time', 'edit_time', 'state']"
+            suppressFields="['owner', 'editor', 'creator']"
+            query="{id: '*'}"
+            defaultCellWidth='"auto"'
+            showSequenceFields='true'
+            showPaginator='true'
+            fmClass='acqpo'> 
+        <thead> 
+            <tr> 
+                <th field="id" formatter='formatId'>ID</th> 
+                <!--
+                <th field="owner" get='getPOOwner'/>
+                -->
+            </tr> 
+        </thead> 
+    </table>     
+    <div comment='dojo-needs-me'></div>
+</div>
+<div id="oils-acq-holds-metapo-summary" class="hidden">
+    <table id="oils-acq-metapo-summary">
+        <thead>
+            <tr>
+                <th colspan="2">Results Summary</th>
+            </tr>
+        </thead>
+        <tbody>
+            <tr>
+                <th>Total Purchase Orders:</th>
+                <td id="oils-acq-metapo-summary-po"></td>
+            </tr>
+            <tr>
+                <th>Total Lineitems:</th>
+                <td id="oils-acq-metapo-summary-lineitem_count"></td>
+            </tr>
+            <tr>
+                <th>Total Copies:</th>
+                <td id="oils-acq-metapo-summary-copies"></td>
+            </tr>
+            <tr>
+                <th>Total Encumbered:</th>
+                <td>$<span id="oils-acq-metapo-summary-amount_encumbered"></span></td>
+            </tr>
+            <tr>
+                <th>Total Spent:</th>
+                <td>$<span id="oils-acq-metapo-summary-amount_spent"></span></td>
+            </tr>
+        </tbody>
+    </table>
+</div>
+[% INCLUDE 'default/acq/common/li_table.tt2' %]
+
+<!-- load the page-specific JS -->
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/po/search.js'> </script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/po/view.tt2 b/Open-ILS/src/templates/default/acq/po/view.tt2
new file mode 100644 (file)
index 0000000..bfbc776
--- /dev/null
@@ -0,0 +1,138 @@
+[% WRAPPER 'default/base.tt2' %]
+[% ctx.page_title = "Purchase Order" %]
+<div dojoType="dijit.layout.ContentPane" style="height:100%">
+    <div>
+        <div id='oils-acq-picklist-header'>
+            <big>
+                Purchase Order (<span id="acq-po-view-state"></span>) 
+            </big>
+            <span id='acq-po-activated-on' class='hidden'></span>
+            <table class="oils-generic-table acq-po-info">
+                <tr>
+                    <th>ID</th><td><a id="acq-po-view-id"/></td>
+                    <th>Prepayment Required?</th>
+                    <td><span id="acq-po-view-prepay"/></td>
+                </tr>
+                <tr>
+                    <th>Name</th>
+                    <td><a id="acq-po-view-name" href="javascript:void(0);"
+                        onclick="updatePoName()"></a></td>
+                    <th>Activatable?</th>
+                    <td>
+                        <span id="acq-po-activate-checking"></span>
+                        <a class="hidden" id="acq-po-activate-link" href="javascript:void(0);" onclick="activatePo()">Activate Order</a>
+                    </td>
+                </tr>
+                <tr>
+                    <th>Provider</th>
+                    <td><span id="acq-po-view-provider"/></td>
+                    <th>Notes</th>
+                    <td>
+                        <a href="javascript:void(0);"
+                            id="acq-po-view-notes"></a>
+                    </td>
+                </tr>
+                <tr>
+                    <th>Total Lineitems</th>
+                    <td><span id="acq-po-view-total-li"/></td>
+                    <th>EDI Messages</th>
+                    <td>
+                        <a href="javascript:void(0);"
+                            id="acq-po-view-edi-messages"></a>
+                    </td>
+                </tr>
+                <tr>
+                    <th>Total Estimated</th>
+                    <td>$<span id="acq-po-view-total-estimated"/></td>
+                    <th>History</th>
+                    <td>
+                        <a class="hidden" href="javascript:void(0);"
+                            id="acq-po-view-history">View</a>
+                    </td>
+                </tr>
+                <tr>
+                    <th>Total Encumbered</th>
+                    <td>$<span id="acq-po-view-total-enc"/></td>
+                    <th>Invoicing</th>
+                    <td id="acq-po-invoice-stuff" class="hidden">
+                        <button dojoType="dijit.form.Button"
+                            id="acq-po-view-invoice-link">
+                            View Invoices
+                            (<span id="acq-po-view-invoice-count"></span>)
+                        </button> &nbsp;
+                        <button dojoType="dijit.form.Button"
+                            id="acq-po-create-invoice-link">
+                            Create Invoice
+                        </button> &nbsp;
+                        <button dojoType="dijit.form.DropDownButton">
+                            <span>Link Invoice</span>
+                            <div dojoType="dijit.TooltipDialog"
+                                id="acq-po-link-invoice">
+                                <script type="dojo/connect" event="onOpen">
+                                    if (!invoiceLinkDialogManager) {
+                                        invoiceLinkDialogManager =
+                                            new InvoiceLinkDialogManager(
+                                                "po", PO
+                                            );
+                                    }
+                                </script>
+                                [% INCLUDE "default/acq/common/inv_dialog.tt2"
+                                    which = "po" %]
+                            </div>
+                        </button>
+                    </td>
+                </tr>
+                <tr>
+                    <th>Total Spent</th>
+                    <td>$<span id="acq-po-view-total-spent"/></td>
+                    <th id="acq-po-cancel-label"></th>
+                    <td>
+                        <span id="acq-po-view-cancel-reason"></span>
+                        <span id="acq-po-choose-cancel-reason" class="hidden">
+                            <span dojoType="dijit.form.DropDownButton">
+                                <span>Cancel order</span>
+                                <span dojoType="dijit.TooltipDialog">
+                                    <label for="acq-po-cancel-reason">
+                                        Reason:
+                                    </label>
+                                    <span id="acq-po-cancel-reason"></span>
+                                    <button jsId="acqPoCancelReasonSubmit"
+                                        dojoType="dijit.form.Button"
+                                        type="submit">Cancel order</button>
+                                </span>
+                            </span>
+                        </span>
+                    </td>
+                </tr>
+                <tr>
+                    <td colspan='3'>
+                        <a class="hidden" id="acq-po-split" href="javascript:void(0);"
+                            onclick="if (confirm(localeStrings.CONFIRM_SPLIT_PO)) splitPo();">
+                            Split Order by Lineitems
+                        </a>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+    <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/base64.js"></script>
+    <script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/po/view_po.js'></script>
+    <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/po/item_table.js"></script>
+    <script type="text/javascript">
+        var poId = "[% ctx.page_args.1 %]";
+        var liFocus = "[% ctx.page_args.0 %]";
+        if (liFocus && !poId) {
+            poId = liFocus;
+            liFocus = null;
+        }
+    </script>
+    [% INCLUDE 'default/acq/common/li_table.tt2' %]
+    [% INCLUDE "default/acq/common/notes.tt2" which = "Po" %]
+    <div class='hidden' id='acq-po-no-lineitems'>
+        <button type='dijit.form.Button' onclick='location.href = oilsBasePath + "/acq/picklist/brief_record?po=" + poId'>
+            Add Brief Record
+        </button>
+    </div>
+    [% INCLUDE "default/acq/po/item_table.tt2" %]
+</div>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/receiving/process.tt2 b/Open-ILS/src/templates/default/acq/receiving/process.tt2
new file mode 100644 (file)
index 0000000..2604d7c
--- /dev/null
@@ -0,0 +1,38 @@
+[% WRAPPER default/base.tt2 %]
+    <h1>Receiving Processing</h1><br/>
+    <div id='oils-acq-recv-search-block' class='container'>
+        <form dojoType='dijit.form.Form' action='' method=''>
+            <script type="dojo/method" event="onSubmit">
+                doSearch(this.getValues());
+                return false; /* don't redirect */
+            </script>
+            <table class='oils-acq-basic-form-table'>
+                <tr>
+                    <td><label for='identifier'>Identifier</label></td>
+                    <td>
+                        <input dojoType='dijit.form.TextBox' name='identifier'/>
+                    </td>
+                </tr>
+                <tr>
+                    <td><label for="name">Ordering Agency:</label></td>
+                    <td>
+                        <input dojoType="openils.widget.OrgUnitFilteringSelect" jsId='orderingAgencySelect'
+                            searchAttr="shortname" name="ordering_agency" autocomplete="true" labelAttr='shortname'> </input>
+                    </td>
+                </tr>
+                <tr>
+                    <td colspan='2'><div dojoType='dijit.form.Button' type='submit'>Search</div></td>
+                </tr>
+            </table>
+        </form>
+    </div>
+    <div dojoType="dijit.ProgressBar" style="width:300px" jsId="searchProgress" id="searchProgress"></div>
+    <script type="text/javascript">dojo.style('searchProgress', 'visibility', 'hidden');</script>
+    <div id='oils-acq-recv-grid' style='height:100%'>
+        [% grid_jsid = 'liGrid'; domprefix = 'oils-acq-recv' %]
+        [% INCLUDE 'default/acq/common/jubgrid.tt2' %]
+    </div>
+    <script type="text/javascript">dojo.style('oils-acq-recv-grid', 'visibility', 'hidden');</script>
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/receiving/process.js'> </script>
+[% END %]
+
diff --git a/Open-ILS/src/templates/default/acq/search/unified.tt2 b/Open-ILS/src/templates/default/acq/search/unified.tt2
new file mode 100644 (file)
index 0000000..1d3f369
--- /dev/null
@@ -0,0 +1,246 @@
+[% WRAPPER "default/base.tt2" %]
+[% ctx.page_title = "Acquisitions Search" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/base64.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/search/unified.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/search/invoice.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/search/picklist.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/search/purchase_order.js"></script>
+<div id="acq-unified-body" class="hidden">
+    <div id="acq-unified-heading">
+        <span id="acq-unified-heading-actual">Acquisitions Search</span>
+        <span id="acq-unified-heading-controls">
+            <button id="acq-unified-hide-form" onclick="hideForm();">
+                Hide Search Form
+            </button>
+            <button id="acq-unified-reveal-form" onclick="revealForm();"
+                class="hidden">
+                Reveal Search Form
+            </button>
+        </span>
+        <div style="clear: both;"><!-- layout; don't remove --></div>
+    </div>
+    <div id="acq-unified-form">
+        <div>
+            <label for="acq-unified-result-type">Search for</label>
+            <select id="acq-unified-result-type">
+                <option value="lineitem">line items</option>
+                <option value="lineitem_and_bib">
+                    line items &amp; catalog records
+                </option>
+                <option value="picklist">selection lists</option>
+                <option value="purchase_order">purchase orders</option>
+                <option value="invoice">invoices</option>
+            </select>
+            <label for="acq-unified-conjunction">matching</label>
+            <select id="acq-unified-conjunction">
+                <option value="and">all</option>
+                <option value="or">any</option>
+            </select>
+            <label for="acq-unified-conjunction">
+                of the following terms:
+            </label>
+        </div>
+        <div id="acq-unified-terms">
+            <table id="acq-unified-terms-table">
+                <tbody id="acq-unified-terms-tbody">
+                    <tr id="acq-unified-terms-row-tmpl"
+                        class="acq-unified-terms-row">
+                        <td name="selector"
+                            class="acq-unified-terms-selector"></td>
+                        <td name="match"
+                            class="acq-unified-terms-match">
+                            <select>
+                                <option value="">is</option>
+                                <option value="__not">is NOT</option>
+                                <option value="__fuzzy" disabled="disabled">
+                                    contains
+                                </option>
+                                <option value="__not,__fuzzy"
+                                    disabled="disabled">
+                                    does NOT contain
+                                </option>
+                                <option value="__lte" disabled="disabled">
+                                    is on or BEFORE
+                                </option>
+                                <option value="__gte" disabled="disabled">
+                                    is on or AFTER
+                                </option>
+                                <option value="__in" disabled="disabled">
+                                    matches a term from a file
+                                </option>
+                            </select>
+                        </td>
+                        <td name="widget"
+                            class="acq-unified-terms-widget"></td>
+                        <td name="remove"
+                            class="acq-unified-terms-remove"></td>
+                    </tr>
+                </tbody>
+            </table>
+        </div>
+        <div id="acq-unified-add-term">
+            <button onclick="termManager.addRow()">Add Search Term</button>
+        </div>
+        <div>
+            <button
+                onclick="resultManager.go(termManager.buildSearchObject())">
+                Search
+            </button>
+        </div>
+    </div>
+    <div id="acq-unified-results-purchase_order" class="hidden">
+        <div class="acq-unified-result-specific-controls">
+            <button onclick="dijit.byId('acq-unified-po-grid').refresh();">
+                Refresh Grid
+            </button>
+        </div>
+        <table
+            id="acq-unified-po-grid"
+            autoHeight="true"
+            dojoType="openils.widget.AutoGrid"
+            query="{id: '*'}"
+            fieldOrder="['name', 'owner', 'ordering_agency', 'provider',
+                'create_time', 'edit_time', 'state']"
+            suppressFields="['owner', 'editor', 'creator']"
+            defaultCellWidth="'auto'"
+            showPaginator="true"
+            fmClass="acqpo">
+            <thead>
+                <tr>
+                    <th field="name" get="getName" formatter="formatPoName">
+                        Name
+                    </th>
+                </tr>
+            </thead>
+        </table>
+    </div>
+    <div id="acq-unified-results-picklist" class="hidden">
+        <div class="acq-unified-result-specific-controls">
+            <button dojoType="dijit.form.Button"
+                onClick="dijit.byId('acq-unified-pl-grid').refresh();">
+                Refresh Grid
+            </button>
+            <div dojoType="dijit.form.DropDownButton">
+                <span>New Selection List</span>
+                <div dojoType="dijit.TooltipDialog"
+                    execute="createPl(arguments[0]);">
+                    <table class="dijitTooltipTable">
+                        <tr>
+                            <td><label for="name">Name:</label></td>
+                            <td><input dojoType="dijit.form.TextBox"
+                                name="name"/></td>
+                        </tr>
+                        <tr>
+                            <td colspan="2" align="center">
+                                <button dojoType="dijit.form.Button"
+                                    type="submit">Create</button>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div dojoType="dijit.form.DropDownButton">
+                <span>Clone Selected</span>
+                <div dojoType="dijit.TooltipDialog"
+                    execute="cloneSelectedPl(arguments[0]);">
+                    <table class="dijitTooltipTable">
+                        <tr>
+                            <td><label for="name">New Name:</label></td>
+                            <td><input dojoType="dijit.form.TextBox"
+                                name="name"/></td>
+                        </tr>
+                        <tr>
+                            <td colspan="2" align="center">
+                                <button dojoType="dijit.form.Button"
+                                    type="submit">Clone</button>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div dojoType="dijit.form.DropDownButton">
+                <span>Merge Selected</span>
+                <div dojoType="dijit.TooltipDialog"
+                    execute="mergeSelectedPl(arguments[0]);"
+                    jsId="plMergeDialog">
+                    <script type="dojo/connect" event="onOpen">
+                        loadLeadPlSelector();
+                    </script>
+                    <table class="dijitTooltipTable">
+                        <tr>
+                            <td><label for="name">Choose the Lead
+                                 Selection List:</label></td>
+                             <td><input jsId="plMergeLeadSelector"
+                                 dojoType="dijit.form.FilteringSelect"
+                                 name="lead" /></td>
+                        </tr>
+                        <tr>
+                            <td colspan="2" align="center">
+                                <button dojoType="dijit.form.Button"
+                                    type="submit">Merge</button>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <button dojoType="dijit.form.Button"
+                onclick="deleteSelectedPl();">Delete Selected</button>
+        </div>
+        <table
+            id="acq-unified-pl-grid"
+            autoHeight="true"
+            dojoType="openils.widget.AutoGrid"
+            query="{id: '*'}"
+            fieldOrder="['name', 'owner', 'entry_count',
+                'create_time', 'edit_time']"
+            suppressFields="['editor', 'creator']"
+            defaultCellWidth="'auto'"
+            showPaginator="true"
+            fmClass="acqpl">
+            <thead>
+                <tr>
+                    <th field="name" get="getName" formatter="formatPlName">
+                        Name
+                    </th>
+                    <th field="owner" get="getPlOwnerName">Owner</th>
+                    <th field="entry_count">Entry Count</th>
+                </tr>
+            </thead>
+        </table>
+    </div>
+    <div id="acq-unified-results-invoice" class="hidden">
+        <div class="acq-unified-result-specific-controls">
+            <button onclick="dijit.byId('acq-unified-inv-grid').refresh();">
+                Refresh Grid
+            </button>
+            <button onclick="printInvoiceVouchers();">
+                Print Selected Invoices
+            </button>
+        </div>
+        <table
+            id="acq-unified-inv-grid"
+            autoHeight="true"
+            dojoType="openils.widget.AutoGrid"
+            query="{id: '*'}"
+            fieldOrder="['inv_ident', 'receiver', 'provider', 'shipper']"
+            defaultCellWidth="'auto'"
+            showPaginator="true"
+            fmClass="acqinv">
+            <thead>
+                <tr>
+                    <th field="inv_ident" get="getInvIdent"
+                        formatter="formatInvIdent"></th>
+                </tr>
+            </thead>
+        </table>
+    </div>
+    <div id="acq-unified-results-no_results" class="hidden">
+        There are no results from your search.
+    </div>
+    <div id="acq-unified-results-lineitem" class="hidden">
+        [% INCLUDE "default/acq/common/li_table_pager.tt2" %]
+        [% INCLUDE "default/acq/common/li_table.tt2" %]
+    </div>
+    <div jsId='progressDialog' dojoType='openils.widget.ProgressDialog'/>
+</div>
+[% END %]
diff --git a/Open-ILS/src/templates/default/acq/settings/li_attr.tt2 b/Open-ILS/src/templates/default/acq/settings/li_attr.tt2
new file mode 100644 (file)
index 0000000..357a047
--- /dev/null
@@ -0,0 +1,74 @@
+[% WRAPPER default/base.tt2 %]
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top">
+    <div dojoType="dijit.form.DropDownButton">
+        <span>Lineitem Attribute Attribute</span>
+        <div dojoType="dijit.TooltipDialog" execute="createOrderRecordField(arguments[0]);">
+            <script type='dojo/connect' event='onOpen'>//setORDesc();</script>
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td><label for="code">Code:</label></td>
+                    <td><input dojoType='dijit.form.TextBox' name='code'/></td>
+                </tr>
+                <tr>
+                    <td><label for="description">Description: </label></td>
+                    <td><input id='oils-acq-provider-or-desc' dojoType="dijit.form.TextBox" name="description"> </input></td>
+                </tr>
+                <tr>
+                    <td><label for="amount">Tag: </label></td>
+                    <td><input dojoType="dijit.form.TextBox" name="tag"></input></td>
+                </tr>
+                <tr>
+                    <td><label for="amount">Subfield: </label></td>
+                    <td><input dojoType="dijit.form.TextBox" name="subfield"></input></td>
+                </tr>
+                <tr>
+                    <td><label for="ident">Identifer Field?: </label></td>
+                    <td>
+                        <select dojoType="dijit.form.FilteringSelect" name="ident">
+                            <option value='f' selected='selected'>False</option>
+                            <option value='t'>True</option>
+                        </select>
+                    </td>
+                </tr>
+                <tr>
+                    <td><label for="amount">XPath (advanced): </label></td>
+                    <td><input dojoType="dijit.form.TextBox" name="xpath"></input></td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <button dojoType=dijit.form.Button type="submit">Apply</button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+    <script type="text/javascript">
+        var liAttrGridLayout = [{
+            cells : [[
+                {name: 'ID', field: 'id'},
+                {name: 'Code', field:'code', width:'auto'},
+                {name: 'Description', field: "description", width:'auto'}, 
+                {name: 'Tag', get:getTag},
+                {name: 'Subfield', get:getSubfield},
+                {name: 'Identifier', field:'ident'},
+                {name: 'XPath', field:'xpath', width:'auto'}
+            ]]
+        }];
+    </script>
+    <div dojoType="dijit.layout.TabContainer">
+        <div dojoType="dijit.layout.ContentPane" 
+                class='oils-acq-detail-content-pane' title="MARC Attributes" style='height:600px;'>
+            <script type='dojo/connect' event='onShow'>loadMarcAttrGrid();</script>
+            <div jsId='liMarcAttrGrid' dojoType="dojox.Grid" structure='liAttrGridLayout'> </div>
+        </div>
+        <div dojoType="dijit.layout.ContentPane" 
+                class='oils-acq-detail-content-pane' title="Generated Attributes" style='height:600px;'>
+            <script type='dojo/connect' event='onShow'>loadGeneratedAttrGrid();</script>
+            <div jsId='liGeneratedAttrGrid' dojoType="dojox.Grid" structure='liAttrGridLayout'> </div>
+        </div>
+    </div>
+</div>
+
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/acq/settings/li_attr.js'></script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/actor/user/register.tt2 b/Open-ILS/src/templates/default/actor/user/register.tt2
new file mode 100644 (file)
index 0000000..a821020
--- /dev/null
@@ -0,0 +1,73 @@
+[% ctx.page_title = 'User Editor' %]
+[% WRAPPER default/base.tt2 %]
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/actor/user/register.js'></script>
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/register.css" />
+
+<div dojoType="dijit.form.Form" id="myForm" jsId="myForm" encType="multipart/form-data" action="" method="">
+    <script type="dojo/method" event="onSubmit">
+        /* we don't want to use the form action, but uEditSave and UEditSaveClone from the Save buttons.  We
+            do want to use the Form's validation features, which we do from within UEditSave, etc. */
+        return false;
+    </script>
+    <table>
+        [% INCLUDE default/actor/user/register_table.tt2 %]
+    </table>
+</div>
+
+<div id='uedit-save-div'>
+    <button dojoType='dijit.form.Button' jsId='saveButton' onClick='uEditSave' scrollOnFocus='false'></button>
+    <button dojoType='dijit.form.Button' jsId='saveCloneButton' onClick='uEditSaveClone' scrollOnFocus='false'></button>
+    <div id='require-toggle'>
+        <a href='javascript:uEditToggleRequired(1);' id='uedit-show-required'>Show Only Required Fields</a><br id='uedit-show-required-br'/>
+        <a href='javascript:uEditToggleRequired(2);' id='uedit-show-suggested'>Show Suggested Fields</a><br id='uedit-show-suggested-br'/>
+        <a href='javascript:uEditToggleRequired(0);' id='uedit-show-all' class='hidden'>Show All Fields</a>
+    </div>
+</div>
+
+<!-- context help widget -->
+<a class='hidden' id='uedit-help-template'><img src='/opac/images/advancedsearch-icon.png'></img></a>
+<fieldset id='uedit-help-div' class='hidden'>
+    <legend id='uedit-help-field'/>
+    <div id='uedit-help-text'/>
+</fieldset>
+
+<!-- duplicate patron search results -->
+<div id='uedit-dupe-div' class='hidden'>
+    <div><a href='javascript:void(0);' id='uedit-dupe-names-link'></a></div>
+    <div><a href='javascript:void(0);' id='uedit-dupe-email-link'></a></div>
+    <div><a href='javascript:void(0);' id='uedit-dupe-ident-link'></a></div>
+    <div><a href='javascript:void(0);' id='uedit-dupe-phone-link'></a></div>
+    <div><a href='javascript:void(0);' id='uedit-dupe-address-link'></a></div>
+</div>
+
+<div class='hidden'>
+    <span id='true' style='color:green;'>&#x2713;</span>
+    <span id='false' style='color:red;'>&#x2717;</span>
+    <div dojoType='dijit.Dialog' jsId='allCardsDialog'>
+        <table class='oils-generic-table' style='margin:10px;'>
+            <thead>
+                <tr>
+                    <th>Barcode</th>
+                    <th>Active</th>
+                </tr>
+            </thead>
+            <tbody id='uedit-all-cards-tbody'>
+                <tr id='uedit-all-cards-tr-template'>
+                    <td><div name='barcode'></div></td>
+                    <td><div name='active'></div></td>
+                </tr>
+            </tbody>
+            <tbody>
+                <tr>
+                    <td colspan='2' style='text-align:center;'>
+                        <button dojoType='dijit.form.Button' onClick='allCardsDialog.hide()' scrollOnFocus='false'>Close</button>
+                    </td>
+                </tr>
+            </tbody>
+        </table>
+    </div>
+</div>
+
+
+[% END %]
+
diff --git a/Open-ILS/src/templates/default/actor/user/register_table.tt2 b/Open-ILS/src/templates/default/actor/user/register_table.tt2
new file mode 100644 (file)
index 0000000..5528252
--- /dev/null
@@ -0,0 +1,112 @@
+<tbody id='uedit-tbody'>
+    <tr fmclass='ac' fmfield='barcode' required='required'>
+        <td/><td/><td/>
+        <td>
+            <button dojoType='dijit.form.Button' jsId='replaceBarcode' scrollOnFocus='false'></button>
+            <span id='uedit-dupe-barcode-warning' style='color:red; font-weight:bold' class='hidden'>
+            </span>
+        </td>
+        <td id='uedit-all-barcodes' class='hidden'>
+            <button dojoType='dijit.form.Button' jsId='allCards' scrollOnFocus='false'></button>
+        </td>
+    </tr>
+    <tr fmclass='au' fmfield='usrname' required='required'>
+        <td/><td/><td/>
+        <td>
+            <span id='uedit-dupe-username-warning' style='color:red; font-weight:bold' class='hidden'>
+            </span>
+        </td>
+    </tr>
+    <tr fmclass='au' fmfield='passwd' required='required'>
+        <td/><td/><td/>
+        <td>
+            <button dojoType='dijit.form.Button' jsId='generatePassword' scrollOnFocus='false' tabIndex='-1'></button>
+        </td>
+    </tr>
+    <tr fmclass='au' fmfield='passwd2' required='required'><td/><td id='verifyPassword'></td><td/></tr>
+    <tr fmclass='au' fmfield='first_given_name' required='required'/>
+    <tr fmclass='au' fmfield='second_given_name'/>
+    <tr fmclass='au' fmfield='family_name' required='required'/>
+    <tr fmclass='au' fmfield='suffix'/>
+    <tr fmclass='au' fmfield='alias'/>
+    <tr fmclass='au' fmfield='dob'/>
+    <tr fmclass='au' fmfield='juvenile'/>
+    <tr fmclass='au' fmfield='ident_type' required='required'/>
+    <tr fmclass='au' fmfield='ident_value'/>
+    <tr fmclass='au' fmfield='ident_value2'><td/><td id='parentGuardian'></td></tr>
+    <tr fmclass='au' fmfield='email'/>
+    <tr fmclass='au' fmfield='day_phone'/>
+    <tr fmclass='au' fmfield='evening_phone'/>
+    <tr fmclass='au' fmfield='other_phone'/>
+    <tr fmclass='au' fmfield='home_ou' required='required'/>
+    <tr fmclass='au' fmfield='profile' required='required'/>
+    <tr fmclass='au' fmfield='expire_date' required='required'/>
+    <tr fmclass='au' fmfield='net_access_level' required='required'/>
+    <tr fmclass='au' fmfield='active'/>
+    <tr fmclass='au' fmfield='barred'/>
+    <tr fmclass='au' fmfield='master_account'/>
+    <tr fmclass='au' fmfield='claims_returned_count' wclass='dijit.form.NumberSpinner' wconstraints="{min:0,places:0}" wvalue='0'/>
+    <tr fmclass='au' fmfield='claims_never_checked_out_count' wclass='dijit.form.NumberSpinner' wconstraints="{min:0,places:0}" wvalue='0'/>
+    <tr fmclass='au' fmfield='alert_message' wclass='dijit.form.Textarea' wstyle='height:5em'/>
+
+    <tr class='divider hidden' id='uedit-settings-divider'><td colspan='0' id='userSettings'></td></tr>
+    <tr class='hidden' id='uedit-user-setting-template'>
+        <td/>
+        <td><span name='label'></span></td>
+        <td><div name='widget'></div></td>
+    </tr>
+
+    <!-- Address -->
+    <tr name='uedit-addr-divider' class='divider' type='addr-template' required='show'>
+        <td colspan='2' name='addressHeader'></td>
+        <td>
+            <span name='mailingAddress'></span><input type='radio' name='mailing_address'>
+            <span name='billingAddress'></span><input type='radio' name='billing_address'>
+            <button dojoType='dijit.form.Button' scrollOnFocus='false' name='delete-button' class='uedit-addr-del-button'>X</button>
+        </td>
+    </tr>
+
+    <tr name='uedit-addr-pending-row' type='addr-template' class='pending-addr-row hidden'>
+        <td colspan='3'>
+            <span style='padding-right:10px;' name='addressPending'></span>
+            <button dojoType='dijit.form.Button' scrollOnFocus='false'  name='approve-button'></button>
+            <div name='replaced-addr-div'>
+                <div name='replaced-addr'></div>
+            </div>
+        </td>
+    </tr>
+
+    <tr name='uedit-addr-owner-row' type='addr-template' class='pending-addr-row hidden'>
+        <td colspan='3'>
+            <span style='padding-right:10px;' name='address-already-owned'></span>
+            <a href='javascript:void(0);'  name='addr-owner'></a>
+        </td>
+    </tr>
+
+
+    <tr fmclass='aua' fmfield='address_type' type='addr-template' required='required'/>
+    <tr fmclass='aua' fmfield='post_code' type='addr-template' required='required'/>
+    <tr fmclass='aua' fmfield='street1' type='addr-template' required='required'/>
+    <tr fmclass='aua' fmfield='street2' type='addr-template' required='show'/>
+    <tr fmclass='aua' fmfield='city' type='addr-template' required='required'/>
+    <tr fmclass='aua' fmfield='county' type='addr-template' required='show'/>
+    <tr fmclass='aua' fmfield='state' type='addr-template' required='required'/>
+    <tr fmclass='aua' fmfield='country' type='addr-template' required='required'/>
+    <tr fmclass='aua' fmfield='valid' type='addr-template' required='show'/>
+    <tr fmclass='aua' fmfield='within_city_limits' type='addr-template' required='show'/>
+
+    <tr id='new-addr-row' class='newaddr-row' required='show'>
+        <td colspan='0' style='text-align:center;'>
+            <button dojoType='dijit.form.Button' onClick='uEditNewAddr' scrollOnFocus='false' name='addressNew'></button>
+        </td>
+    </tr>
+
+    <!-- stat cats -->
+    <tr class='divider' id='stat-cat-divider' required='suggested'><td colspan='0' id='statCats'></td></tr>
+    <tr id='stat-cat-row-template' required='suggested'><td class='uedit-help'/><td name='name'/><td name='widget'/></tr>
+
+    <!-- surveys -->
+    <tr id='survey-row-template' class='divider' required='suggested'><td colspan='0' name='name'/></tr>
+    <tr id='survey-question-row-template' required='suggested'><td class='uedit-help'/><td name='question'/><td name='answers'/></tr>
+</tbody>
+
diff --git a/Open-ILS/src/templates/default/actor/user/trigger_events.tt2 b/Open-ILS/src/templates/default/actor/user/trigger_events.tt2
new file mode 100644 (file)
index 0000000..d17cfac
--- /dev/null
@@ -0,0 +1,29 @@
+[% ctx.page_title = 'Events' %]
+[% WRAPPER default/base.tt2 %]
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/actor/user/trigger_events.js'></script>
+<script type="text/javascript">patronId = '[% ctx.page_args.0 %]'</script>
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+    <div>User Events</div>
+    <div>
+        <button dojoType='dijit.form.Button' onClick='evtCancelSelected()'>Cancel Selected Events</button>
+    </div>
+</div>
+
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:100%;'> 
+    <table jsId="evtGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}">
+        <thead> 
+            <tr> 
+                <th field="event_def" get='getField' width='auto'>Event Def.</th> 
+                <th field="hook" get='getField' width='auto'>Hook</th> 
+                <th field="reactor" get='getField' width='auto'>Reactor</th> 
+                <th field="validator" get='getField' width='auto'>Validator</th> 
+                <th field="target" get='getField' width='auto'>Target</th> 
+                <th field="state" get='getField' width='auto'>State</th> 
+            </tr> 
+        </thead> 
+    </table>     
+</div>
+
+[% END %]
diff --git a/Open-ILS/src/templates/default/base.tt2 b/Open-ILS/src/templates/default/base.tt2
new file mode 100644 (file)
index 0000000..0570b12
--- /dev/null
@@ -0,0 +1,39 @@
+[% WRAPPER 'base.tt2' %]
+<script type="text/javascript">
+ dojo.require("dijit.layout.LayoutContainer");
+ dojo.require("dijit.layout.ContentPane");
+</script>
+
+<!-- define the basic page structure -->
+<div id="oils-base-body-block" class="tundra" dojoType="dijit.layout.LayoutContainer"> 
+    <div id="oils-base-header-block" dojoType="dijit.layout.ContentPane" layoutAlign="top">
+
+        <!-- Hide the non-xul menu for now.  
+             Will probably remove at some point since it's perpetually out 
+             of sync and exists solely as a development tool
+
+        <div id='oils-base-header-menu-block'>
+            [%# INCLUDE default/menu.tt2 #%]
+        </div>
+        -->
+
+        <div id='oils-base-header-auto-login-block'>
+            [% INCLUDE default/header.tt2 %]
+        </div>
+    </div>
+    <div id="oils-base-main-block" dojoType="dijit.layout.LayoutContainer" layoutAlign="client">
+        <!--
+        <div id="oils-base-navigate-block" dojoType="dijit.layout.ContentPane" layoutAlign="left">
+        </div>
+        -->
+        <div id="oils-base-content-block" dojoType="dijit.layout.ContentPane" layoutAlign="client">
+            [% content %]
+        </div>
+    </div>
+    <!--
+    <div id="oils-base-footer-block">
+        [% INCLUDE default/footer.tt2 %]
+    </div>
+    -->
+</div>
+[% END %]
diff --git a/Open-ILS/src/templates/default/booking/capture.tt2 b/Open-ILS/src/templates/default/booking/capture.tt2
new file mode 100644 (file)
index 0000000..79d7e4e
--- /dev/null
@@ -0,0 +1,21 @@
+[% WRAPPER "default/base.tt2" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/common.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/capture.js"></script>
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/booking.css" id="booking_stylesheet_link" />
+<script type="text/javascript">openils.Util.addOnLoad(my_init);</script>
+<div id="auto_l10n_start_here">
+<!-- XXX This interface will probably go away soon in favor of merging its
+behavior into the regular checkin/process/capture interface. -->
+    <h1 class="AUTO_capture_heading booking"></h1>
+    <form class="nice_vertical_padding"
+        onsubmit="attempt_capture(); return false">
+        <label for="resource_barcode" class="AUTO_resource_barcode"></label>
+        <input id="resource_barcode" onfocus="clear_for_next();" />
+        <input type="button" class="AUTO_ATTR_VALUE_capture"
+            onclick="attempt_capture();" />
+        <span id="result_display"></span>
+    </form>
+    <div class="nice_vertical_padding" id="capture_info_top"></div>
+    <div class="nice_vertical_padding" id="capture_info_bottom"></div>
+</div>
+[% END %]
diff --git a/Open-ILS/src/templates/default/booking/pickup.tt2 b/Open-ILS/src/templates/default/booking/pickup.tt2
new file mode 100644 (file)
index 0000000..8cff3fa
--- /dev/null
@@ -0,0 +1,78 @@
+[% WRAPPER "default/base.tt2" %]
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/booking.css" />
+<div id="auto_l10n_start_here">
+    <h1 class="booking AUTO_h1"></h1>
+    <div class="nice_vertical_padding" id="contains_barcode_control">
+        <form id="lookup" onsubmit="return act(this);">
+            <label for="patron_barcode" class="AUTO_patron_barcode"></label>
+            <input id="patron_barcode" name="patron_barcode" />
+            <input type="submit" class="AUTO_ATTR_VALUE_go" />
+        </form>
+    </div>
+    <div class="nice_vertical_padding" id="contains_patron_info">
+        <div id="patron_info"></div>
+    </div>
+    <div class="nice_vertical_padding" id="contains_ready_bresv">
+        <h3 class="booking AUTO_ready_bresv"></h3>
+        <div class="AUTO_no_ready_bresv" id="no_ready_bresv"></div>
+        <table id="ready_bresv" jsId="ready_bresv"
+            dojoType="dojox.grid.DataGrid" query="{id: '*'}"
+            rowSelector="20px" autoHeight="true" width="auto">
+            <thead>
+                <tr><!-- FIXME: i18n problem: init_auto_l10n() runs
+                        too late to take care of the below elements. -->
+                    <th width="35%" field="type">Title</th>
+                    <th width="25%" field="resource">Barcode</th>
+                    <th width="20%" field="start_time">Start time</th>
+                    <th width="20%" field="end_time">End time</th>
+                </tr>
+            </thead>
+        </table>
+        <div class="nice_vertical_padding" id="controls_ready_bresv">
+            <form>
+                <input type="button" id="pickup_button"
+                    class="AUTO_ATTR_VALUE_pickup"
+                    onclick="p.act_on_selected('pickup', 'ready');" />
+            </form>
+        </div>
+    </div>
+    <div class="nice_vertical_padding" id="contains_out_bresv">
+        <hr />
+        <h3 class="booking AUTO_out_bresv"></h3>
+        <div class="AUTO_no_out_bresv" id="no_out_bresv"></div>
+        <table id="out_bresv" jsId="out_bresv"
+            dojoType="dojox.grid.DataGrid" query="{id: '*'}"
+            rowSelector="20px" autoHeight="true" width="auto">
+            <thead>
+                <tr><!-- FIXME: i18n problem: init_auto_l10n() runs
+                        too late to take care of the below elements. -->
+                    <th width="35%" field="type">Title</th>
+                    <th width="25%" field="resource">Barcode</th>
+                    <th width="20%" field="pickup_time">Pickup time</th>
+                    <th width="20%" field="end_time">Due time</th>
+                </tr>
+            </thead>
+        </table>
+    </div>
+    <div class="nice_vertical_padding" id="contains_misc_controls">
+        <hr />
+        <form>
+            <input type="button" class="AUTO_ATTR_VALUE_reset"
+                onclick="p.reset();" />
+        </form>
+    </div>
+</div>
+
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/common.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/populator.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/pickup.js"></script>
+<script type="text/javascript">
+    dojo.require("dojox.grid.DataGrid");
+    openils.Util.addOnLoad(my_init);
+
+    function act(f) {
+        p.populate({"patron": f.patron_barcode.value});
+        return false; /* Always. */
+    }
+</script>
+[% END %]
diff --git a/Open-ILS/src/templates/default/booking/pull_list.tt2 b/Open-ILS/src/templates/default/booking/pull_list.tt2
new file mode 100644 (file)
index 0000000..d4f6765
--- /dev/null
@@ -0,0 +1,49 @@
+[% WRAPPER "default/base.tt2" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/common.js"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/booking/pull_list.js"></script>
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/booking.css" />
+<script type="text/javascript">openils.Util.addOnLoad(my_init);</script>
+<div id="auto_l10n_start_here">
+    <h1 class="booking AUTO_pull_list_title"></h1>
+    <form onsubmit="populate_pull_list(this); return false;">
+        <div id="owning_lib_selector_row" class="nice_vertical_padding">
+            <label for="owning_lib_selector" class="AUTO_owning_lib_selector">
+            </label>
+            <select dojoType="openils.widget.OrgUnitFilteringSelect"
+                id="owning_lib_selector" jsId="owning_lib_selector"
+                searchAttr="shortname" labelAttr="shortname"></select>
+        </div>
+        <div id="interval_input_row" class="nice_vertical_padding">
+            <label for="interval_in_days" class="AUTO_interval_in_days"></label>
+
+            <!-- XXX Hardcoded values (like the ones below) are bad. -->
+            <input id="interval_in_days" name="interval_in_days"
+                value="5" maxlength="2" />
+
+        </div>
+        <input type="submit" class="AUTO_ATTR_VALUE_fetch" />
+    </form>
+    <hr />
+    <div id="table_goes_here" class="nice_vertical_padding">
+        <table id="the_table" width="100%">
+            <thead>
+                <tr>
+                    <th width="25%" class="AUTO_th_title_or_name"></th>
+                    <th width="10%" class="AUTO_th_barcode"></th>
+                    <th width="15%" class="AUTO_th_call_number"></th>
+                    <th width="10%" class="AUTO_th_copy_location"></th>
+                    <th width="40%" class="AUTO_th_resv_details"></th>
+                </tr>
+            </thead>
+            <tbody id="the_table_body">
+            </tbody>
+        </table>
+        <div id="print_holder" class="nice_vertical_padding">
+            <!-- XXX Print button probably won't stay right here -->
+            <input type="button" class="AUTO_ATTR_VALUE_print"
+                onclick="window.print();" /><!-- XXX too simplistic? -->
+        </div>
+    </div>
+    <div id="no_results" class="AUTO_no_results"></div>
+</div>
+[% END %]
diff --git a/Open-ILS/src/templates/default/booking/reservation.tt2 b/Open-ILS/src/templates/default/booking/reservation.tt2
new file mode 100644 (file)
index 0000000..5eb4a1d
--- /dev/null
@@ -0,0 +1,118 @@
+[% WRAPPER "default/base.tt2" %]
+<link rel="stylesheet" type="text/css" href="[% ctx.media_prefix %]/css/skin/[% ctx.skin %]/booking.css" />
+<div id="auto_l10n_start_here">
+    <div id="brt_search_block" class="container">
+        <h1 class="booking AUTO_choose_a_brt"></h1>
+        <form onsubmit="return false;">
+            <div id="select_noncat_brt_block">
+                <div id="brt_selector_here" class="nice_vertical_padding"></div>
+                <div class="nice_vertical_padding">
+                    <input type="button" class="AUTO_ATTR_VALUE_next"
+                        onclick="init_resv_iface_sel(); return false"
+                        />
+                </div>
+                <hr />
+                <div class="nice_vertical_padding AUTO_or" id="or"></div>
+            </div>
+            <div id="arbitrary_resource_block">
+                <label for="arbitrary_resource" class="AUTO_arbitrary_resource">
+                </label>
+                <input id="arbitrary_resource" name="arbitrary_resource" />
+                <input type="button"
+                    onclick="init_resv_iface_arb(); return false;"
+                    class="AUTO_ATTR_VALUE_next" />
+                <p class="AUTO_explain_bookable"></p>
+            </div>
+        </form>
+    </div>
+
+    <div id="brt_reserve_block" class="container">
+        <form onsubmit="return false;">
+            <div id="brsrc_available_outer">
+                <h1 class="booking" id="brsrc_list_header"></h1>
+                <!-- I'm reluctantly hardcoding the size attribute below to 12
+                    since you can't get the behavior of the size attribute with
+                    anything in CSS. -->
+                <select id="brsrc_list" name="brsrc_list" multiple="multiple"
+                    size="12"></select>
+                <div id="contain_patron_barcode" class="nice_vertical_padding">
+                    <label class="AUTO_patron_barcode"
+                        for="patron_barcode" /></label>
+                    <input name="patron_barcode" id="patron_barcode"
+                        onchange="update_bresv_grid();" />
+                </div>
+                <div id="pickup_lib_selector_row" class="nice_vertical_padding">
+                    <label for="pickup_lib_selector"
+                        class="AUTO_pickup_lib_selector"></label>
+                    <select dojoType="openils.widget.OrgUnitFilteringSelect"
+                        id="pickup_lib_selector" jsId="pickup_lib_selector"
+                        searchAttr="shortname" labelAttr="shortname"></select>
+                </div>
+                <div class="nice_vertical_padding">
+                    <span class="two_buttons">
+                        <input type="button"
+