Remove /default/ from template paths
authorBill Erickson <berick@esilibrary.com>
Thu, 1 Sep 2011 14:58:03 +0000 (10:58 -0400)
committerBill Erickson <berick@esilibrary.com>
Thu, 1 Sep 2011 14:58:03 +0000 (10:58 -0400)
The original goal of having a /default/ component to the template path
was to support alternate skins.  However, Template Toolkit supports
alternate skins through a more elegant mechanism of providing template
overlays via template path configuration.  In other words, skin files
will be differentiated by the location of their root path and not
because they live in a different skin directory inside the main
template root.

Because of this, the /default/ component in the template path serves
no purpose and generally just gets in the way.

As a part of this, EGWeb.pm no longer inserts the skin name into the
template file path.

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

index 8226be7..156d871 100644 (file)
@@ -46,8 +46,6 @@ sub handler {
     return $stat unless $stat == Apache2::Const::OK;
     return Apache2::Const::DECLINED unless $template;
 
-    $template = $ctx->{skin} . "/$template";
-
     my $text_handler = set_text_handler($ctx, $r);
 
     my $tt = Template->new({
@@ -187,9 +185,8 @@ sub find_template {
     my $r = shift;
     my $base = shift;
     my $ctx = shift;
-    my $skin = $ctx->{skin};
     my $path = $r->uri;
-    $path =~ s/$base//og;
+    $path =~ s/$base\/?//og;
     my @parts = split('/', $path);
     my $template = '';
     my $page_args = [];
@@ -221,7 +218,7 @@ sub find_template {
         while(@parts) {
             last unless $localpath;
             for my $tpath (@{$ctx->{template_paths}}) {
-                my $fpath = "$tpath/$skin/$localpath.$ext";
+                my $fpath = "$tpath/$localpath.$ext";
                 $r->log->debug("egweb: looking at possible template $fpath");
                 if(-r $fpath) {
                     $template = "$localpath.$ext";
diff --git a/Open-ILS/src/templates/acq/common/claim_dialog.tt2 b/Open-ILS/src/templates/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/acq/common/final_claim_dialog.tt2 b/Open-ILS/src/templates/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/acq/common/info.tt2 b/Open-ILS/src/templates/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/acq/common/inv_dialog.tt2 b/Open-ILS/src/templates/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/acq/common/jubgrid.tt2 b/Open-ILS/src/templates/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/acq/common/li_table.tt2 b/Open-ILS/src/templates/acq/common/li_table.tt2
new file mode 100644 (file)
index 0000000..268e987
--- /dev/null
@@ -0,0 +1,473 @@
+<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 "acq/common/info.tt2" which = "Lit" %]
+
+    <!-- Lineitem notes table -->
+    [% INCLUDE "acq/common/notes.tt2" which = "Lit" %]
+
+    <!-- Copies table -->
+    <div id='acq-lit-li-details' class='hidden'>
+
+        <div id='acq-lit-copies-li-summary'></div>
+
+        <h3>Add/Edit Items</h3>
+        <hr/>
+
+        <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>
+                        <span style='margin-left:10px;padding-left:10px;border-left:2px solid #aaa;'>
+                            <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>
+
+        <hr/>
+        <table id='acq-lit-distrib-formula-table'>
+            <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 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>
+        <table>
+
+        <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'></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>Receiver</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><div name='receiver'></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 "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 "acq/common/claim_dialog.tt2" %]
+        </div>
+        <div dojoType="dijit.Dialog" jsId="finalClaimDialog">
+            [% INCLUDE "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/acq/common/li_table_pager.tt2 b/Open-ILS/src/templates/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/acq/common/notes.tt2 b/Open-ILS/src/templates/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/acq/financial/claim_eligible.tt2 b/Open-ILS/src/templates/acq/financial/claim_eligible.tt2
new file mode 100644 (file)
index 0000000..fc87842
--- /dev/null
@@ -0,0 +1,57 @@
+[% WRAPPER "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 "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/acq/financial/list_currency_types.tt2 b/Open-ILS/src/templates/acq/financial/list_currency_types.tt2
new file mode 100644 (file)
index 0000000..dfa5d2d
--- /dev/null
@@ -0,0 +1,35 @@
+[% WRAPPER 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/acq/financial/list_funding_sources.tt2 b/Open-ILS/src/templates/acq/financial/list_funding_sources.tt2
new file mode 100644 (file)
index 0000000..432c471
--- /dev/null
@@ -0,0 +1,51 @@
+[% WRAPPER '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/acq/financial/list_funds.tt2 b/Open-ILS/src/templates/acq/financial/list_funds.tt2
new file mode 100644 (file)
index 0000000..dca2a0a
--- /dev/null
@@ -0,0 +1,162 @@
+[% WRAPPER '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/acq/financial/view_fund.tt2 b/Open-ILS/src/templates/acq/financial/view_fund.tt2
new file mode 100644 (file)
index 0000000..7eb63e3
--- /dev/null
@@ -0,0 +1,257 @@
+[% WRAPPER '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/acq/financial/view_funding_source.tt2 b/Open-ILS/src/templates/acq/financial/view_funding_source.tt2
new file mode 100644 (file)
index 0000000..6ab5794
--- /dev/null
@@ -0,0 +1,173 @@
+[% WRAPPER '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/acq/financial/view_provider.tt2 b/Open-ILS/src/templates/acq/financial/view_provider.tt2
new file mode 100644 (file)
index 0000000..6fdc425
--- /dev/null
@@ -0,0 +1,118 @@
+[% WRAPPER 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/acq/invoice/view.tt2 b/Open-ILS/src/templates/acq/invoice/view.tt2
new file mode 100644 (file)
index 0000000..0ddca25
--- /dev/null
@@ -0,0 +1,137 @@
+[% WRAPPER '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/acq/lineitem/findbib.tt2 b/Open-ILS/src/templates/acq/lineitem/findbib.tt2
new file mode 100644 (file)
index 0000000..7eedc44
--- /dev/null
@@ -0,0 +1,73 @@
+[% WRAPPER "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/acq/lineitem/history.tt2 b/Open-ILS/src/templates/acq/lineitem/history.tt2
new file mode 100644 (file)
index 0000000..d4743a7
--- /dev/null
@@ -0,0 +1,30 @@
+[% WRAPPER "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/acq/lineitem/related.tt2 b/Open-ILS/src/templates/acq/lineitem/related.tt2
new file mode 100644 (file)
index 0000000..487baaf
--- /dev/null
@@ -0,0 +1,71 @@
+[% WRAPPER "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="addToPoButton" dojoType="dijit.form.Button">
+            Add to Purchase Order
+        </button>
+        <button jsId="createPoButton" dojoType="dijit.form.Button">
+            Create Purchase Order
+        </button>
+    </div>
+
+    <div class="hidden">
+        <div dojoType="dijit.Dialog" jsId='addToPoDialog'>
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td><label>Enter the PO #: </label></td>
+                    <td><input jsId='addToPoInput' dojoType="dijit.form.TextBox" /></td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <button dojoType='dijit.form.Button' jsId='addToPoSave' type="submit">Save</button>
+                    </td>
+                </tr>
+            </table>
+        </div>
+    </div>
+
+</div>
+[% INCLUDE "acq/common/info.tt2" which = "Related" %]
+[% INCLUDE "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/acq/lineitem/search.tt2 b/Open-ILS/src/templates/acq/lineitem/search.tt2
new file mode 100644 (file)
index 0000000..730f910
--- /dev/null
@@ -0,0 +1,115 @@
+[% WRAPPER '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 '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/acq/lineitem/worksheet.tt2 b/Open-ILS/src/templates/acq/lineitem/worksheet.tt2
new file mode 100644 (file)
index 0000000..58548f6
--- /dev/null
@@ -0,0 +1,11 @@
+[% WRAPPER "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/acq/picklist/bib_search.tt2 b/Open-ILS/src/templates/acq/picklist/bib_search.tt2
new file mode 100644 (file)
index 0000000..dd7e83c
--- /dev/null
@@ -0,0 +1,74 @@
+[% WRAPPER '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 '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/acq/picklist/brief_record.tt2 b/Open-ILS/src/templates/acq/picklist/brief_record.tt2
new file mode 100644 (file)
index 0000000..9e10102
--- /dev/null
@@ -0,0 +1,35 @@
+[% WRAPPER '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/acq/picklist/from_bib.tt2 b/Open-ILS/src/templates/acq/picklist/from_bib.tt2
new file mode 100644 (file)
index 0000000..4cd61e0
--- /dev/null
@@ -0,0 +1,24 @@
+[% WRAPPER "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 "acq/common/li_table_pager.tt2" %]
+[% INCLUDE "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/acq/picklist/list.tt2 b/Open-ILS/src/templates/acq/picklist/list.tt2
new file mode 100644 (file)
index 0000000..1fd98a6
--- /dev/null
@@ -0,0 +1,107 @@
+[% WRAPPER '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/acq/picklist/upload.tt2 b/Open-ILS/src/templates/acq/picklist/upload.tt2
new file mode 100644 (file)
index 0000000..31b7620
--- /dev/null
@@ -0,0 +1,97 @@
+[% WRAPPER '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/acq/picklist/user_request.tt2 b/Open-ILS/src/templates/acq/picklist/user_request.tt2
new file mode 100644 (file)
index 0000000..3622a60
--- /dev/null
@@ -0,0 +1,66 @@
+[% WRAPPER '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/acq/picklist/view.tt2 b/Open-ILS/src/templates/acq/picklist/view.tt2
new file mode 100644 (file)
index 0000000..a209c3e
--- /dev/null
@@ -0,0 +1,20 @@
+[% WRAPPER '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 '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/acq/po/create.tt2 b/Open-ILS/src/templates/acq/po/create.tt2
new file mode 100644 (file)
index 0000000..01473d2
--- /dev/null
@@ -0,0 +1,5 @@
+[% WRAPPER "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/acq/po/edi_messages.tt2 b/Open-ILS/src/templates/acq/po/edi_messages.tt2
new file mode 100644 (file)
index 0000000..c936616
--- /dev/null
@@ -0,0 +1,46 @@
+[% WRAPPER "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/acq/po/events.tt2 b/Open-ILS/src/templates/acq/po/events.tt2
new file mode 100644 (file)
index 0000000..03c183e
--- /dev/null
@@ -0,0 +1,64 @@
+[% WRAPPER 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/acq/po/history.tt2 b/Open-ILS/src/templates/acq/po/history.tt2
new file mode 100644 (file)
index 0000000..ad92007
--- /dev/null
@@ -0,0 +1,30 @@
+[% WRAPPER "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/acq/po/item_table.tt2 b/Open-ILS/src/templates/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/acq/po/search.tt2 b/Open-ILS/src/templates/acq/po/search.tt2
new file mode 100644 (file)
index 0000000..ff3a1c1
--- /dev/null
@@ -0,0 +1,143 @@
+[% WRAPPER 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 '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/acq/po/view.tt2 b/Open-ILS/src/templates/acq/po/view.tt2
new file mode 100644 (file)
index 0000000..55f6679
--- /dev/null
@@ -0,0 +1,138 @@
+[% WRAPPER '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 "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 'acq/common/li_table.tt2' %]
+    [% INCLUDE "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 "acq/po/item_table.tt2" %]
+</div>
+[% END %]
diff --git a/Open-ILS/src/templates/acq/receiving/process.tt2 b/Open-ILS/src/templates/acq/receiving/process.tt2
new file mode 100644 (file)
index 0000000..17ff83c
--- /dev/null
@@ -0,0 +1,38 @@
+[% WRAPPER 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 '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/acq/search/unified.tt2 b/Open-ILS/src/templates/acq/search/unified.tt2
new file mode 100644 (file)
index 0000000..68e7dcd
--- /dev/null
@@ -0,0 +1,246 @@
+[% WRAPPER "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 "acq/common/li_table_pager.tt2" %]
+        [% INCLUDE "acq/common/li_table.tt2" %]
+    </div>
+    <div jsId='progressDialog' dojoType='openils.widget.ProgressDialog'/>
+</div>
+[% END %]
diff --git a/Open-ILS/src/templates/acq/settings/li_attr.tt2 b/Open-ILS/src/templates/acq/settings/li_attr.tt2
new file mode 100644 (file)
index 0000000..d096f96
--- /dev/null
@@ -0,0 +1,74 @@
+[% WRAPPER 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/actor/user/register.tt2 b/Open-ILS/src/templates/actor/user/register.tt2
new file mode 100644 (file)
index 0000000..71f0f4e
--- /dev/null
@@ -0,0 +1,73 @@
+[% ctx.page_title = 'User Editor' %]
+[% WRAPPER 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 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/actor/user/register_table.tt2 b/Open-ILS/src/templates/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/actor/user/trigger_events.tt2 b/Open-ILS/src/templates/actor/user/trigger_events.tt2
new file mode 100644 (file)
index 0000000..ec0c2f4
--- /dev/null
@@ -0,0 +1,29 @@
+[% ctx.page_title = 'Events' %]
+[% WRAPPER 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 %]
index d4f4ebb..8a7d682 100644 (file)
@@ -1,27 +1,39 @@
 [%- ctx.final_dtd = 
-    '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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 %]
+<!-- note: after vandelay strings are ported to l('...'), we can remove the DTD conditional -->
 <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' />
+        <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>
         <script type="text/javascript">
-            var oilsBasePath = '[% ctx.base_path %]';
+            dojo.require("dijit.layout.LayoutContainer");
+            dojo.require("dijit.layout.ContentPane");
         </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 -->
+        <div id="oils-base-body-block" class="tundra" dojoType="dijit.layout.LayoutContainer"> 
+            <div id="oils-base-header-block" dojoType="dijit.layout.ContentPane" layoutAlign="top">
+                <div id='oils-base-header-auto-login-block'>
+                    [% INCLUDE header.tt2 %]
+                </div>
+            </div>
+            <div id="oils-base-main-block" dojoType="dijit.layout.LayoutContainer" layoutAlign="client">
+                <div id="oils-base-content-block" dojoType="dijit.layout.ContentPane" layoutAlign="client">
+                    [% content %]
+                </div>
+            </div>
+        </div>
     </body>
 </html>
diff --git a/Open-ILS/src/templates/booking/capture.tt2 b/Open-ILS/src/templates/booking/capture.tt2
new file mode 100644 (file)
index 0000000..2e02d9c
--- /dev/null
@@ -0,0 +1,21 @@
+[% WRAPPER "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/booking/pickup.tt2 b/Open-ILS/src/templates/booking/pickup.tt2
new file mode 100644 (file)
index 0000000..d8784c9
--- /dev/null
@@ -0,0 +1,78 @@
+[% WRAPPER "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/booking/pull_list.tt2 b/Open-ILS/src/templates/booking/pull_list.tt2
new file mode 100644 (file)
index 0000000..002855f
--- /dev/null
@@ -0,0 +1,49 @@
+[% WRAPPER "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/booking/reservation.tt2 b/Open-ILS/src/templates/booking/reservation.tt2
new file mode 100644 (file)
index 0000000..5888049
--- /dev/null
@@ -0,0 +1,118 @@
+[% WRAPPER "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"
+    &nbs