Merge remote branch 'working/user/shadowspar/ttopac-altcleanup' into template-toolkit...
authorBill Erickson <berick@esilibrary.com>
Wed, 3 Aug 2011 14:51:52 +0000 (10:51 -0400)
committerBill Erickson <berick@esilibrary.com>
Wed, 3 Aug 2011 14:51:52 +0000 (10:51 -0400)
690 files changed:
Open-ILS/examples/apache/eg_vhost.conf
Open-ILS/examples/fm_IDL.xml
Open-ILS/examples/oils_sip.xml.example
Open-ILS/examples/oils_web.xml.example
Open-ILS/src/Makefile.am
Open-ILS/src/c-apps/oils_sql.c
Open-ILS/src/extras/Makefile.install
Open-ILS/src/extras/ils_events.xml
Open-ILS/src/javascript/backend/catalog/fixed_fields.js
Open-ILS/src/perlmods/MANIFEST
Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Cat/Authority.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/CopyLocations.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Search.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Authority.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/CDBI.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/CDBI/biblio.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/dbi.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/SuperCat.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Vandelay.pm
Open-ILS/src/perlmods/lib/OpenILS/SIP/Patron.pm
Open-ILS/src/perlmods/lib/OpenILS/SIP/Transaction/Checkin.pm
Open-ILS/src/perlmods/lib/OpenILS/SIP/Transaction/Checkout.pm
Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD.pm
Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Holding.pm
Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/test/mfhd.t
Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/test/mfhddata2.txt [new file with mode: 0644]
Open-ILS/src/perlmods/lib/OpenILS/Utils/TagURI.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGWeb.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGWeb/I18NFilter.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/Redirect.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/SuperCat.pm
Open-ILS/src/perlmods/lib/Template/Plugin/ResolverResolver.pm [new file with mode: 0644]
Open-ILS/src/sql/Pg/000.functions.general.sql
Open-ILS/src/sql/Pg/002.functions.config.sql
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/005.schema.actors.sql
Open-ILS/src/sql/Pg/011.schema.authority.sql
Open-ILS/src/sql/Pg/012.schema.vandelay.sql
Open-ILS/src/sql/Pg/020.schema.functions.sql
Open-ILS/src/sql/Pg/030.schema.metabib.sql
Open-ILS/src/sql/Pg/090.schema.action.sql
Open-ILS/src/sql/Pg/100.circ_matrix.sql
Open-ILS/src/sql/Pg/300.schema.staged_search.sql
Open-ILS/src/sql/Pg/800.fkeys.sql
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/990.schema.unapi.sql
Open-ILS/src/sql/Pg/999.functions.global.sql
Open-ILS/src/sql/Pg/reporter-schema.sql
Open-ILS/src/sql/Pg/upgrade/0526.schema.upgrade-dep-tracking.sql
Open-ILS/src/sql/Pg/upgrade/0568.schema.cache_visibility_speed_boost.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0569.schema.unapi-auri-fix.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0570.schema.fix-authsort.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0571.schema.facet_normalizer.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0572.schema.vandelay-record-matching-and-quality.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0573.schema.staff_search_find_no_copies.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0574.data.hold_pull_list_template.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0575.schema.authority-control-sets.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0576.fix_maintain_901_quoting.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0577.schema.vandelay-item-import-copy-loc-ancestors.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0578.schema.part_holds_bib_report.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0579.schema.fix_checkout_overrides.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0580.schema.aou_parent_protec.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0581.schema.opac_renewal_reuse_circ_lib.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0582.schema.aging_circ_view.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0583.schema.aging_circ_view.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0584.data.org-setting-ui.circ.billing.uncheck_bills_and_unfocus_payment_box.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0585.checkout_fills_related_hold_exact_match.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0586.data.persistent_login_default_perm.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0587.maintain_control_numbers_with_OCLC_awareness.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/0588.schema.replace_field-default-value.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/XXXX.data.opac_payment_history_age_limit.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/XXXY.data.config.metabib_field.lccn.sql [new file with mode: 0644]
Open-ILS/src/templates/base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/claim_dialog.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/final_claim_dialog.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/info.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/inv_dialog.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/jubgrid.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/li_table.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/li_table_pager.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/common/notes.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/claim_eligible.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/list_currency_types.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/list_funding_sources.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/list_funds.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/view_fund.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/view_funding_source.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/financial/view_provider.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/invoice/view.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/findbib.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/history.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/related.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/search.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/lineitem/worksheet.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/bib_search.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/brief_record.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/from_bib.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/list.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/upload.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/user_request.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/picklist/view.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/create.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/edi_messages.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/events.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/history.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/item_table.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/search.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/po/view.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/receiving/process.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/search/unified.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/acq/settings/li_attr.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/actor/user/register.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/actor/user/register_table.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/actor/user/trigger_events.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/capture.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/pickup.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/pull_list.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/reservation.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/booking/return.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/cat/authority/list.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/audio_config.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/banner.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/circ_page.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/fines.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/holds_page.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/main.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/patron_login.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/payment.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/circ/selfcheck/summary.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/cancel_reason.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/claim_event_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/claim_policy.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/claim_policy_action.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/claim_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/distribution_formula.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/edi_account.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/exchange_rate.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/fund_tag.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/invoice_item_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/invoice_payment_method.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/lineitem_alert.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/lineitem_marc_attr_def.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/acq/provider.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/action/survey.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/action/survey/edit.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/action_trigger/event_definition.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/action_trigger/event_definition_data.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/asset/copy_location_order.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/asset/copy_template.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/biblio/monograph_part.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource_attr.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource_attr_map.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource_attr_value.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/booking/resource_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/cat/authority/browse_axis.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/cat/authority/browse_axis_authority_field_map.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/cat/authority/control_set.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/cat/authority/control_set_authority_field.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/cat/authority/control_set_bib_field.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/cat/authority/thesaurus.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/acn_prefix.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/acn_suffix.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/actor_sip_fields.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/asset_sip_fields.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/barcode_completion.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/billing_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/circ_matrix_matchpoint.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/circ_matrix_weights.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/circ_modifier.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/coded_value_map.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/global_flag.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/hard_due_date.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/hard_due_date_values.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/hold_matrix_matchpoint.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/hold_matrix_weights.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/idl_field_doc.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/metabib_field.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/org_unit_setting_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/record_attr_definition.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/rule_age_hold_protect.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/rule_circ_duration.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/rule_max_fine.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/rule_recurring_fine.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/standing_penalty.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/usr_setting_type.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/weight_assoc.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/config/z3950_source.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/permission/grp_penalty_threshold.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/vandelay/match_set.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/conify/global/vandelay/match_set_tree.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/footer.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/header.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/menu.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/advanced.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/cnbrowse.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/home.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/login.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/mylist.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/circ_history.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/circs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/hold_history.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/holds.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/holds/edit.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/lists.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/main.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/main_pay.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/main_payment_form.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/main_payments.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/prefs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/prefs_notify.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/prefs_settings.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/receipt_email.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/receipt_print.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/update_email.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/update_password.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/myopac/update_username.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/advanced/expert.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/advanced/global_row.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/advanced/numeric.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/advanced/search.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/anon_list.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/chilifresh.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/coded_value_selector.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/config.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/filtersort.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/footer.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/header.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/hold_error_messages.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/homesearch.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/js.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/login/form.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/login/help.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/login/password_hint.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/misc_util.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/main_base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/main_refund_policy.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/prefs_base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/myopac/prefs_hints.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/org_selector.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/place_hold.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/printnav.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/qtype_selector.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/authors.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/awards.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/body.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/cn_details.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/cnbrowse.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/copyinfo.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/extras.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/issues.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/refworks.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/subjects.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/summary.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/record/summaryplus.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/result/lowhits.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/result/lowhits_purchase.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/result/table.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/searchbar.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/tips.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/topnav.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/topnav_links.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/parts/topnav_logo.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/place_hold.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/record.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/opac/results.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/list_item.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/list_stream.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/list_subscription.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/print_routing_list_users.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/subscription.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/subscription/caption_and_pattern.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/subscription/distribution.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/serial/subscription/issuance.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/attrs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/export.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/import_errors.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/item_attrs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/marchtml.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/matches.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/profiles.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/progress.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/queue.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/queueselect.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/toolbar.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/inc/upload.tt2 [new file with mode: 0644]
Open-ILS/src/templates/default/vandelay/vandelay.tt2 [new file with mode: 0644]
Open-ILS/src/templates/login.tt2 [new file with mode: 0644]
Open-ILS/src/templates/password-reset/request-form.tt2
Open-ILS/src/templates/password-reset/reset-form.tt2
Open-ILS/src/templates_kcls/default/opac/myopac/main_refund_policy.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/footer.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/homesearch.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/login/help.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/myopac/prefs_hints.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/printnav.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/result/lowhits_purchase.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/topnav_links.tt2 [new file with mode: 0644]
Open-ILS/src/templates_kcls/default/opac/parts/topnav_logo.tt2 [new file with mode: 0644]
Open-ILS/web/Makefile.am
Open-ILS/web/css/skin/default/acq.css
Open-ILS/web/css/skin/default/opac/semiauto.css
Open-ILS/web/css/skin/default/opac/style.css
Open-ILS/web/css/skin/default/vandelay.css
Open-ILS/web/js/dojo/MARC/FixedFields.js [new file with mode: 0644]
Open-ILS/web/js/dojo/MARC/Record.js
Open-ILS/web/js/dojo/fieldmapper/Fieldmapper.js
Open-ILS/web/js/dojo/openils/AuthorityControlSet.js [new file with mode: 0644]
Open-ILS/web/js/dojo/openils/acq/nls/acq.js
Open-ILS/web/js/dojo/openils/authority/nls/authority.js
Open-ILS/web/js/dojo/openils/vandelay/TreeDndSource.js [new file with mode: 0644]
Open-ILS/web/js/dojo/openils/vandelay/TreeStoreModel.js [new file with mode: 0644]
Open-ILS/web/js/dojo/openils/vandelay/nls/match_set.js [new file with mode: 0644]
Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js
Open-ILS/web/js/dojo/openils/widget/AutoGrid.js
Open-ILS/web/js/ui/default/acq/common/li_table.js
Open-ILS/web/js/ui/default/cat/authority/list.js
Open-ILS/web/js/ui/default/conify/global/cat/authority/common.js [new file with mode: 0644]
Open-ILS/web/js/ui/default/conify/global/vandelay/match_set.js [new file with mode: 0644]
Open-ILS/web/js/ui/default/opac/simple.js
Open-ILS/web/js/ui/default/opac/staff.js
Open-ILS/web/js/ui/default/vandelay/vandelay.js
Open-ILS/web/opac/common/js/config.js
Open-ILS/web/opac/extras/circ/alt_holds_print.html
Open-ILS/web/opac/extras/circ/alt_holds_print.js
Open-ILS/web/opac/locale/en-US/lang.dtd
Open-ILS/web/opac/locale/en-US/opac.dtd
Open-ILS/web/opac/locale/en-US/vandelay.dtd
Open-ILS/web/opac/skin/craftsman/css/default.css [deleted file]
Open-ILS/web/opac/skin/craftsman/css/layout.css [deleted file]
Open-ILS/web/opac/skin/craftsman/js/rdetail.js [deleted file]
Open-ILS/web/opac/skin/craftsman/js/result_common.js [deleted file]
Open-ILS/web/opac/skin/craftsman/js/search_bar.js [deleted file]
Open-ILS/web/opac/skin/craftsman/js/sidebar.js [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/advanced/adv_global_row.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/advanced/advanced_global.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/body.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/altcanvas.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/cn_browse.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/css_common.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/fonts.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/holds.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/libselect.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/login.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/logo.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/orgtree.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/searchbar.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/sidebar.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/statusbar.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/common/tips.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/footer.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/home/homesearch.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/home/index_body.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/page_cnbrowse.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/page_myopac.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/page_rdetail.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/rdetail/rdetail_cn_details.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/rdetail/rdetail_copyinfo.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/rdetail/rdetail_extras.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/rdetail/rdetail_summary.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/result/filtersort.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/result/result_info.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/result/result_lowhits.xml [deleted file]
Open-ILS/web/opac/skin/craftsman/xml/result/result_table.xml [deleted file]
Open-ILS/web/opac/skin/default/css/layout.css
Open-ILS/web/opac/skin/default/js/advanced.js
Open-ILS/web/opac/skin/default/js/authbrowse.js [new file with mode: 0644]
Open-ILS/web/opac/skin/default/js/holds.js
Open-ILS/web/opac/skin/default/js/result_common.js
Open-ILS/web/opac/skin/default/xml/common/holds.xml
Open-ILS/web/opac/skin/default/xml/common/js_common.xml
Open-ILS/web/opac/skin/default/xml/common/sidebar.xml
Open-ILS/web/opac/skin/default/xml/page_authbrowse.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/rdetail/rdetail_extras.xml
Open-ILS/web/opac/skin/default/xml/result/result_table.xml
Open-ILS/web/opac/skin/default/xml/setenv.xml
Open-ILS/web/opac/theme/craftsman/css/colors.css [deleted file]
Open-ILS/web/opac/theme/default/css/colors.css
Open-ILS/web/templates/base.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/claim_dialog.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/final_claim_dialog.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/info.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/inv_dialog.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/jubgrid.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/li_table.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/li_table_pager.tt2 [deleted file]
Open-ILS/web/templates/default/acq/common/notes.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/claim_eligible.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/list_currency_types.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/list_funding_sources.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/list_funds.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/view_fund.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/view_funding_source.tt2 [deleted file]
Open-ILS/web/templates/default/acq/financial/view_provider.tt2 [deleted file]
Open-ILS/web/templates/default/acq/invoice/view.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/findbib.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/history.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/related.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/search.tt2 [deleted file]
Open-ILS/web/templates/default/acq/lineitem/worksheet.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/bib_search.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/brief_record.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/from_bib.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/list.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/upload.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/user_request.tt2 [deleted file]
Open-ILS/web/templates/default/acq/picklist/view.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/create.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/edi_messages.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/events.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/history.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/item_table.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/search.tt2 [deleted file]
Open-ILS/web/templates/default/acq/po/view.tt2 [deleted file]
Open-ILS/web/templates/default/acq/receiving/process.tt2 [deleted file]
Open-ILS/web/templates/default/acq/search/unified.tt2 [deleted file]
Open-ILS/web/templates/default/acq/settings/li_attr.tt2 [deleted file]
Open-ILS/web/templates/default/actor/user/register.tt2 [deleted file]
Open-ILS/web/templates/default/actor/user/register_table.tt2 [deleted file]
Open-ILS/web/templates/default/actor/user/trigger_events.tt2 [deleted file]
Open-ILS/web/templates/default/base.tt2 [deleted file]
Open-ILS/web/templates/default/booking/capture.tt2 [deleted file]
Open-ILS/web/templates/default/booking/pickup.tt2 [deleted file]
Open-ILS/web/templates/default/booking/pull_list.tt2 [deleted file]
Open-ILS/web/templates/default/booking/reservation.tt2 [deleted file]
Open-ILS/web/templates/default/booking/return.tt2 [deleted file]
Open-ILS/web/templates/default/cat/authority/list.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/audio_config.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/banner.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/circ_page.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/fines.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/holds_page.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/main.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/patron_login.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/payment.tt2 [deleted file]
Open-ILS/web/templates/default/circ/selfcheck/summary.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/cancel_reason.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/claim_event_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/claim_policy.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/claim_policy_action.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/claim_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/distribution_formula.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/edi_account.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/exchange_rate.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/fund_tag.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/invoice_item_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/invoice_payment_method.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/lineitem_alert.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/lineitem_marc_attr_def.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/acq/provider.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/action/survey.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/action/survey/edit.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/action_trigger/event_definition.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/action_trigger/event_definition_data.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/asset/copy_location_order.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/asset/copy_template.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/biblio/monograph_part.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource_attr.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource_attr_map.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource_attr_value.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/booking/resource_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/acn_prefix.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/acn_suffix.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/actor_sip_fields.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/asset_sip_fields.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/barcode_completion.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/billing_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/circ_matrix_matchpoint.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/circ_matrix_weights.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/circ_modifier.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/coded_value_map.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/global_flag.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/hard_due_date.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/hard_due_date_values.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/hold_matrix_matchpoint.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/hold_matrix_weights.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/idl_field_doc.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/org_unit_setting_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/record_attr_definition.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/rule_age_hold_protect.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/rule_circ_duration.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/rule_max_fine.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/rule_recurring_fine.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/standing_penalty.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/usr_setting_type.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/weight_assoc.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/config/z3950_source.tt2 [deleted file]
Open-ILS/web/templates/default/conify/global/permission/grp_penalty_threshold.tt2 [deleted file]
Open-ILS/web/templates/default/footer.tt2 [deleted file]
Open-ILS/web/templates/default/header.tt2 [deleted file]
Open-ILS/web/templates/default/menu.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/base.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/common.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/home.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/login.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/marc_attrs.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/myopac/_links.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/myopac/bookbags.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/myopac/circs.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/myopac/fines.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/myopac/holds.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/myopac/main.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/myopac/prefs.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/myopac/update_email.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/place_hold.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/record.tt2 [deleted file]
Open-ILS/web/templates/default/opac-poc/results.tt2 [deleted file]
Open-ILS/web/templates/default/opac/advanced.tt2 [deleted file]
Open-ILS/web/templates/default/opac/home.tt2 [deleted file]
Open-ILS/web/templates/default/opac/login.tt2 [deleted file]
Open-ILS/web/templates/default/opac/mylist.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/circ_history.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/circs.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/hold_history.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/holds.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/holds/edit.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/lists.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/main.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/main_pay.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/main_payment_form.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/main_payments.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/prefs.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/prefs_notify.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/prefs_settings.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/receipt_email.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/receipt_print.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/update_email.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/update_password.tt2 [deleted file]
Open-ILS/web/templates/default/opac/myopac/update_username.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/advanced/global_row.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/advanced/search.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/anon_list.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/base.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/chilifresh.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/cn_browse.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/coded_value_selector.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/filtersort.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/footer.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/header.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/homesearch.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/js.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/login/form.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/login/help.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/login/password_hint.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/misc_util.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/base.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/main_base.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/main_refund_policy.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/prefs_base.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/myopac/prefs_hints.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/org_selector.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/place_hold.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/printnav.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/qtype_selector.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/authors.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/awards.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/body.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/cn_details.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/copyinfo.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/extras.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/issues.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/subjects.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/record/summary.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/result/lowhits.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/result/lowhits_purchase.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/result/table.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/searchbar.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/tips.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/topnav.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/topnav_links.tt2 [deleted file]
Open-ILS/web/templates/default/opac/parts/topnav_logo.tt2 [deleted file]
Open-ILS/web/templates/default/opac/place_hold.tt2 [deleted file]
Open-ILS/web/templates/default/opac/record.tt2 [deleted file]
Open-ILS/web/templates/default/opac/results.tt2 [deleted file]
Open-ILS/web/templates/default/serial/list_item.tt2 [deleted file]
Open-ILS/web/templates/default/serial/list_stream.tt2 [deleted file]
Open-ILS/web/templates/default/serial/list_subscription.tt2 [deleted file]
Open-ILS/web/templates/default/serial/print_routing_list_users.tt2 [deleted file]
Open-ILS/web/templates/default/serial/subscription.tt2 [deleted file]
Open-ILS/web/templates/default/serial/subscription/caption_and_pattern.tt2 [deleted file]
Open-ILS/web/templates/default/serial/subscription/distribution.tt2 [deleted file]
Open-ILS/web/templates/default/serial/subscription/issuance.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/attrs.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/export.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/item_attrs.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/marchtml.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/matches.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/profiles.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/progress.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/queue.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/queueselect.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/toolbar.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/inc/upload.tt2 [deleted file]
Open-ILS/web/templates/default/vandelay/vandelay.tt2 [deleted file]
Open-ILS/web/templates/login.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/myopac/main_refund_policy.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/footer.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/homesearch.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/login/help.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/myopac/prefs_hints.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/printnav.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/result/lowhits_purchase.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/topnav_links.tt2 [deleted file]
Open-ILS/web/templates_kcls/default/opac/parts/topnav_logo.tt2 [deleted file]
Open-ILS/xul/staff_client/Makefile.am
Open-ILS/xul/staff_client/chrome/content/OpenILS/data.js
Open-ILS/xul/staff_client/chrome/content/cat/opac.js
Open-ILS/xul/staff_client/chrome/content/main/constants.js
Open-ILS/xul/staff_client/chrome/content/main/menu.js
Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul
Open-ILS/xul/staff_client/chrome/content/main/menu_frame_overlay.xul
Open-ILS/xul/staff_client/chrome/content/util/browser.js
Open-ILS/xul/staff_client/chrome/content/util/fancy_prompt.xul
Open-ILS/xul/staff_client/chrome/content/util/list.js
Open-ILS/xul/staff_client/chrome/content/util/print.js
Open-ILS/xul/staff_client/chrome/content/util/sound.js
Open-ILS/xul/staff_client/chrome/locale/en-US/offline.properties
Open-ILS/xul/staff_client/server/admin/transit_list.js
Open-ILS/xul/staff_client/server/admin/work_log.js
Open-ILS/xul/staff_client/server/cat/bib_brief.js
Open-ILS/xul/staff_client/server/cat/bib_brief.xul
Open-ILS/xul/staff_client/server/cat/bib_brief_overlay.js
Open-ILS/xul/staff_client/server/cat/bib_brief_overlay.xul
Open-ILS/xul/staff_client/server/cat/bib_brief_vertical.xul
Open-ILS/xul/staff_client/server/cat/bibs_abreast.js
Open-ILS/xul/staff_client/server/cat/copy_browser.js
Open-ILS/xul/staff_client/server/cat/copy_browser.xul
Open-ILS/xul/staff_client/server/cat/copy_buckets.js
Open-ILS/xul/staff_client/server/cat/copy_buckets.xul
Open-ILS/xul/staff_client/server/cat/copy_buckets_overlay.xul
Open-ILS/xul/staff_client/server/cat/copy_editor.js
Open-ILS/xul/staff_client/server/cat/copy_summary.xul
Open-ILS/xul/staff_client/server/cat/marc_new.xul
Open-ILS/xul/staff_client/server/cat/marcedit.js
Open-ILS/xul/staff_client/server/cat/record_buckets.js
Open-ILS/xul/staff_client/server/cat/spine_labels.js
Open-ILS/xul/staff_client/server/cat/util.js
Open-ILS/xul/staff_client/server/cat/volume_copy_creator.js
Open-ILS/xul/staff_client/server/cat/volume_editor.js
Open-ILS/xul/staff_client/server/cat/volume_editor.xul
Open-ILS/xul/staff_client/server/cat/z3950.js
Open-ILS/xul/staff_client/server/cat/z3950.xul
Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.js
Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.xul
Open-ILS/xul/staff_client/server/circ/checkin.js
Open-ILS/xul/staff_client/server/circ/checkin_overlay.xul
Open-ILS/xul/staff_client/server/circ/checkout.js
Open-ILS/xul/staff_client/server/circ/copy_details.xul
Open-ILS/xul/staff_client/server/circ/copy_status.js
Open-ILS/xul/staff_client/server/circ/copy_status.xul
Open-ILS/xul/staff_client/server/circ/copy_status_overlay.xul
Open-ILS/xul/staff_client/server/circ/in_house_use.js
Open-ILS/xul/staff_client/server/circ/renew.js
Open-ILS/xul/staff_client/server/circ/util.js
Open-ILS/xul/staff_client/server/index.xhtml
Open-ILS/xul/staff_client/server/locale/en-US/cat.properties
Open-ILS/xul/staff_client/server/locale/en-US/circ.properties
Open-ILS/xul/staff_client/server/locale/en-US/patron.properties
Open-ILS/xul/staff_client/server/patron/bill2.js
Open-ILS/xul/staff_client/server/patron/bill2.xul
Open-ILS/xul/staff_client/server/patron/display.js
Open-ILS/xul/staff_client/server/patron/hold_details.js
Open-ILS/xul/staff_client/server/patron/holds.js
Open-ILS/xul/staff_client/server/patron/items.js
Open-ILS/xul/staff_client/server/patron/place_hold.js [new file with mode: 0644]
Open-ILS/xul/staff_client/server/patron/place_hold.xul [new file with mode: 0644]
Open-ILS/xul/staff_client/server/patron/standing_penalties.js
Open-ILS/xul/staff_client/server/patron/util.js
Open-ILS/xul/staff_client/server/serial/manage_dists.js
Open-ILS/xul/staff_client/server/serial/manage_items.js
Open-ILS/xul/staff_client/server/serial/manage_subs.js
Open-ILS/xul/staff_client/server/skin/circ.css
Open-ILS/xul/staff_client/server/skin/custom.js.example
README

index e8ca3ec..48a259c 100644 (file)
@@ -20,6 +20,8 @@ RedirectMatch 301 ^/$ /opac/en-US/skin/default/xml/index.xml
 #    # OILSRedirectDepth defaults to the depth of the branch that the OPAC was directed to
 #    #PerlSetVar OILSRedirectDepth "0"
 #    #PerlSetVar OILSRedirectLocale "en-US"
+#    # Use the template-toolkit opac
+#    #PerlSetVar OILSRedirectTpac "true"
 #    allow from all
 #</LocationMatch>
 
@@ -118,13 +120,12 @@ RewriteRule . - [E=locale:%1]
 
     # Specify the initial script URL for Novelist (containing account credentials, etc.)
     #SetEnv OILS_NOVELIST_URL
-    
+    #
 
     # Uncomment to force SSL any time a patron is logged in.  This protects 
     # authentication tokens.  Left commented out for backwards compat for now.
     #SetEnv OILS_OPAC_FORCE_LOGIN_SSL 1
 
-
     # If set, the skin uses the combined JS file at $SKINDIR/js/combined.js
     #SetEnv OILS_OPAC_COMBINED_JS 1
 
@@ -566,6 +567,13 @@ RewriteRule ^/openurl$ ${openurl:%1} [NE,PT]
     # Expire the HTML quickly since we're loading dynamic data for each page
     ExpiresActive On
     ExpiresByType text/html "access plus 5 seconds"
+    
+    # For use with embedded Content Cafe content
+    #SetEnv OILS_CONTENT_CAFE_USER 123
+    #SetEnv OILS_CONTENT_CAFE_PASS 456
+    # Consider copying/moving other added content configs 
+    # (e.g. NOVELIST) into here or to an outer container shared by
+    # both /opac and /eg/opac since some are used in both places
 </Location>
 
 
index f9b824b..9b224df 100644 (file)
@@ -148,6 +148,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Replace Specification" name="replace_spec" reporter:datatype="text"/>
                        <field reporter:label="Remove Specification" name="strip_spec" reporter:datatype="text"/>
                        <field reporter:label="Preserve Specification" name="preserve_spec" reporter:datatype="text"/>
+                       <field reporter:label="Min. Quality Ratio" name="lwm_ratio" reporter:datatype="float"/>
                </fields>
                <links>
                        <link field="owner" reltype="has_a" key="id" map="" class="aou"/>
@@ -186,6 +187,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Import Item ID" name="id" reporter:datatype="id"/>
                        <field reporter:label="Import Record" name="record" reporter:datatype="link"/>
                        <field reporter:label="Attribute Definition" name="definition" reporter:datatype="link"/>
+                       <field reporter:label="Import Error" name="import_error" reporter:datatype="link"/>
+                       <field reporter:label="Import Error Detail" name="error_detail" reporter:datatype="text"/>
+                       <field reporter:label="Final Target Copy" name="imported_as" reporter:datatype="link"/>
+                       <field reporter:label="Import Time" name="import_time" reporter:datatype="timestamp"/>
                        <field reporter:label="Owning Library" name="owning_lib" reporter:datatype="int"/>
                        <field reporter:label="Circulating Library" name="circ_lib" reporter:datatype="int"/>
                        <field reporter:label="Call Number" name="call_number" reporter:datatype="text"/>
@@ -207,8 +212,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="OPAC Visible" name="opac_visible" reporter:datatype="bool"/>
                </fields>
                <links>
+                       <link field="import_error" reltype="has_a" key="code" map="" class="vie"/>
                        <link field="record" reltype="has_a" key="id" map="" class="vqbr"/>
                        <link field="definition" reltype="has_a" key="id" map="" class="viiad"/>
+                       <link field="imported_as" reltype="has_a" key="id" map="" class="acp"/>
                </links>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
                        <actions>
@@ -275,11 +282,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Name" name="name" reporter:datatype="text" oils_persist:i18n="true"/>
                        <field reporter:label="Complete" name="complete" reporter:datatype="bool"/>
                        <field reporter:label="Type" name="queue_type" reporter:datatype="text"/>
+                       <field reporter:label="Match Set" name="match_set" reporter:datatype="link"/>
                        <field reporter:label="Item Import Attribute Definition" name="item_attr_def" reporter:datatype="link"/>
                </fields>
                <links>
                        <link field="owner" reltype="has_a" key="id" map="" class="aou"/>
                        <link field="item_attr_def" reltype="has_a" key="id" map="" class="viiad"/>
+                       <link field="match_set" reltype="has_a" key="id" map="" class="vms"/>
                </links>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
                        <actions>
@@ -291,6 +300,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                </permacrud>
        </class>
 
+       <class id="vie" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="vandelay::import_error" oils_persist:tablename="vandelay.import_error" reporter:label="Import/Overlay Error Definitions">
+               <fields oils_persist:primary="code">
+                       <field reporter:label="Error Code" name="code" reporter:selector="description" reporter:datatype="id"/>
+                       <field reporter:label="Description" name="description" reporter:datatype="text" oils_persist:i18n="true"/>
+               </fields>
+               <links>
+                       <link field="owner" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="item_attr_def" reltype="has_a" key="id" map="" class="viiad"/>
+                       <link field="match_set" reltype="has_a" key="id" map="" class="vms"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <retrieve/>
+                       </actions>
+               </permacrud>
+       </class>
+
        <class id="vqbr" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="vandelay::queued_bib_record" oils_persist:tablename="vandelay.queued_bib_record" reporter:label="Queued Bib Record">
                <fields oils_persist:primary="id" oils_persist:sequence="vandelay.queued_record_id_seq">
                        <field reporter:label="Record ID" name="id" reporter:datatype="id"/>
@@ -300,16 +326,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Queue" name="queue" reporter:datatype="link"/>
                        <field reporter:label="Bib Source" name="bib_source" reporter:datatype="link"/>
                        <field reporter:label="Final Target Record" name="imported_as" reporter:datatype="link"/>
+                       <field reporter:label="Import Error" name="import_error" reporter:datatype="link"/>
+                       <field reporter:label="Import Error Detail" name="error_detail" reporter:datatype="text"/>
                        <field reporter:label="Purpose" name="purpose" reporter:datatype="text"/>
                        <field reporter:label="Attributes" name="attributes" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Matches" name="matches" oils_persist:virtual="true" reporter:datatype="link"/>
+                       <field reporter:label="Import Items" name="import_items" oils_persist:virtual="true" reporter:datatype="link"/>
+                       <field reporter:label="Quality" name="quality" reporter:datatype="int"/>
                </fields>
                <links>
+                       <link field="import_error" reltype="has_a" key="code" map="" class="vie"/>
                        <link field="queue" reltype="has_a" key="id" map="" class="vbq"/>
                        <link field="bib_source" reltype="has_a" key="id" map="" class="cbs"/>
                        <link field="imported_as" reltype="has_a" key="id" map="" class="bre"/>
             <link field="attributes" reltype="has_many" key="record" map="" class="vqbra"/>
             <link field="matches" reltype="has_many" key="queued_record" map="" class="vbm"/>
+            <link field="import_items" reltype="has_many" key="record" map="" class="vii"/>
                </links>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
                        <actions>
@@ -328,7 +360,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Description" name="description" reporter:datatype="text" oils_persist:i18n="true"/>
                        <field reporter:label="XPath" name="xpath" reporter:datatype="text"/>
                        <field reporter:label="Remove RegExp" name="remove" reporter:datatype="text"/>
-                       <field reporter:label="Is Identifier?" name="ident" reporter:datatype="bool"/>
                </fields>
                <links/>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
@@ -366,14 +397,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                <fields oils_persist:primary="id" oils_persist:sequence="vandelay.bib_match_id_seq">
                        <field reporter:label="Match ID" name="id" reporter:datatype="id"/>
                        <field reporter:label="Queued Record" name="queued_record" reporter:datatype="link"/>
-                       <field reporter:label="Matched Attribute" name="matched_attr" reporter:datatype="link"/>
                        <field reporter:label="Evergreen Record" name="eg_record" reporter:datatype="link"/>
-                       <field reporter:label="Field Type" name="field_type" reporter:datatype="text"/>
+                       <field reporter:label="Quality" name="quality" reporter:datatype="text"/>
+                       <field reporter:label="Match Score" name="match_score" reporter:datatype="text"/>
                </fields>
                <links>
                        <link field="queued_record" reltype="has_a" key="id" map="" class="vqbr"/>
                        <link field="eg_record" reltype="has_a" key="id" map="" class="bre"/>
-                       <link field="matched_attr" reltype="has_a" key="id" map="" class="vqbra"/>
                </links>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
                        <actions>
@@ -392,9 +422,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Name" name="name" reporter:datatype="text" oils_persist:i18n="true"/>
                        <field reporter:label="Complete" name="complete" reporter:datatype="bool"/>
                        <field reporter:label="Type" name="queue_type" reporter:datatype="text"/>
+                       <field reporter:label="Match Set" name="match_set" reporter:datatype="link"/>
                </fields>
                <links>
                        <link field="owner" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="match_set" reltype="has_a" key="id" map="" class="vms"/>
                </links>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
                        <actions>
@@ -414,11 +446,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="MARC" name="marc" reporter:datatype="text"/>
                        <field reporter:label="Queue" name="queue" reporter:datatype="link"/>
                        <field reporter:label="Final Target Record" name="imported_as" reporter:datatype="link"/>
+                       <field reporter:label="Import Error" name="import_error" reporter:datatype="link"/>
+                       <field reporter:label="Import Error Detail" name="error_detail" reporter:datatype="text"/>
                        <field reporter:label="Purpose" name="purpose" reporter:datatype="text"/>
                        <field reporter:label="Attributes" name="attributes" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Matches" name="matches" oils_persist:virtual="true" reporter:datatype="link"/>
+                       <field reporter:label="Quality" name="quality" reporter:datatype="int"/>
                </fields>
                <links>
+                       <link field="import_error" reltype="has_a" key="code" map="" class="vie"/>
                        <link field="queue" reltype="has_a" key="id" map="" class="vaq"/>
                        <link field="imported_as" reltype="has_a" key="id" map="" class="are"/>
             <link field="attributes" reltype="has_many" key="record" map="" class="vqara"/>
@@ -441,7 +477,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Description" name="description" reporter:datatype="text" oils_persist:i18n="true"/>
                        <field reporter:label="XPath" name="xpath" reporter:datatype="text"/>
                        <field reporter:label="Remove RegExp" name="remove" reporter:datatype="text"/>
-                       <field reporter:label="Is Identifier?" name="ident" reporter:datatype="bool"/>
                </fields>
                <links/>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
@@ -479,13 +514,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                <fields oils_persist:primary="id" oils_persist:sequence="vandelay.authority_match_id_seq">
                        <field reporter:label="Match ID" name="id" reporter:datatype="id"/>
                        <field reporter:label="Queued Record" name="queued_record" reporter:datatype="link"/>
-                       <field reporter:label="Matched Attribute" name="matched_attr" reporter:datatype="link"/>
                        <field reporter:label="Evergreen Record" name="eg_record" reporter:datatype="link"/>
+                       <field reporter:label="Quality" name="quality" reporter:datatype="int"/>
                </fields>
                <links>
                        <link field="queued_record" reltype="has_a" key="id" map="" class="vqbr"/>
                        <link field="eg_record" reltype="has_a" key="id" map="" class="bre"/>
-                       <link field="matched_attr" reltype="has_a" key="id" map="" class="vqbra"/>
                </links>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
                        <actions>
@@ -497,6 +531,93 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                </permacrud>
        </class>
 
+       <class id="vms" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="vandelay::match_set" oils_persist:tablename="vandelay.match_set" reporter:label="Record Matching Definition Set">
+               <fields oils_persist:primary="id" oils_persist:sequence="vandelay.match_set_id_seq">
+                       <field reporter:label="Match Set ID" name="id" reporter:datatype="id"/>
+                       <field reporter:label="Name" name="name" reporter:datatype="text"/>
+                       <field reporter:label="Owning Library" name="owner" reporter:datatype="link"/>
+                       <field reporter:label="Match Set Type" name="mtype" reporter:datatype="text"/>
+               </fields>
+               <links>
+                       <link field="owner" reltype="has_a" key="id" map="" class="aou"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="ADMIN_IMPORT_MATCH_SET" context_field="owner"/>
+                               <retrieve permission="ADMIN_IMPORT_MATCH_SET" context_field="owner"/>
+                               <update permission="ADMIN_IMPORT_MATCH_SET" context_field="owner"/>
+                               <delete permission="ADMIN_IMPORT_MATCH_SET" context_field="owner"/>
+                       </actions>
+               </permacrud>
+       </class>
+
+       <class id="vmsp" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="vandelay::match_set_point" oils_persist:tablename="vandelay.match_set_point" reporter:label="Record Matching Definition">
+               <fields oils_persist:primary="id" oils_persist:sequence="vandelay.match_set_point_id_seq">
+                       <field reporter:label="Match Definition ID" name="id" reporter:datatype="id"/>
+                       <field reporter:label="Expression Tree Parent" name="parent" reporter:datatype="link"/>
+                       <field reporter:label="Match Set" name="match_set" reporter:datatype="link"/>
+                       <field reporter:label="Boolean Operator" name="bool_op" reporter:datatype="text"/>
+                       <field reporter:label="Coded Field" name="svf" reporter:datatype="link"/>
+                       <field reporter:label="Tag" name="tag" reporter:datatype="text"/>
+                       <field reporter:label="Subfield" name="subfield" reporter:datatype="text"/>
+            <field reporter:label="Negate" name="negate"  reporter:datatype="bool"/>
+                       <field reporter:label="Importance" name="quality" reporter:datatype="int"/>
+                       <field reporter:label="Expression Tree Children" name="children" oils_persist:virtual="true" reporter:datatype="link"/>
+               </fields>
+               <links>
+                       <link field="parent" reltype="has_a" key="id" map="" class="vmsp"/>
+                       <link field="match_set" reltype="has_a" key="id" map="" class="vms"/>
+                       <link field="svf" reltype="has_a" key="id" map="" class="crad"/>
+                       <link field="children" reltype="has_many" key="parent" map="" class="vmsp"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="ADMIN_IMPORT_MATCH_SET">
+                    <context link="match_set" field="owner"/>
+                               </create>
+                               <retrieve permission="ADMIN_IMPORT_MATCH_SET">
+                    <context link="match_set" field="owner"/>
+                               </retrieve>
+                               <update permission="ADMIN_IMPORT_MATCH_SET">
+                    <context link="match_set" field="owner"/>
+                               </update>
+                               <delete permission="ADMIN_IMPORT_MATCH_SET">
+                    <context link="match_set" field="owner"/>
+                               </delete>
+                       </actions>
+               </permacrud>
+       </class>
+
+       <class id="vmsq" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="vandelay::match_set_quality" oils_persist:tablename="vandelay.match_set_quality" reporter:label="Record Quality Metric">
+               <fields oils_persist:primary="id" oils_persist:sequence="vandelay.match_set_quality_id_seq">
+                       <field reporter:label="Quality Metric ID" name="id" reporter:datatype="id"/>
+                       <field reporter:label="Match Set" name="match_set" reporter:datatype="link"/>
+                       <field reporter:label="Record Attribute" name="svf" reporter:datatype="text"/>
+                       <field reporter:label="Tag" name="tag" reporter:datatype="text"/>
+                       <field reporter:label="Subfield" name="subfield" reporter:datatype="text"/>
+                       <field reporter:label="Value" name="value" reporter:datatype="text"/>
+                       <field reporter:label="Quality" name="quality" reporter:datatype="int"/>
+               </fields>
+               <links>
+                       <link field="match_set" reltype="has_a" key="id" map="" class="vms"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="ADMIN_IMPORT_MATCH_SET">
+                    <context link="match_set" field="owner"/>
+                               </create>
+                               <retrieve permission="ADMIN_IMPORT_MATCH_SET">
+                    <context link="match_set" field="owner"/>
+                               </retrieve>
+                               <update permission="ADMIN_IMPORT_MATCH_SET">
+                    <context link="match_set" field="owner"/>
+                               </update>
+                               <delete permission="ADMIN_IMPORT_MATCH_SET">
+                    <context link="match_set" field="owner"/>
+                               </delete>
+                       </actions>
+               </permacrud>
+       </class>
 
        <class id="auoi" controller="open-ils.cstore" oils_obj:fieldmapper="actor::usr_org_unit_opt_in" oils_persist:tablename="actor.usr_org_unit_opt_in" reporter:label="User Sharing Opt-in">
                <fields oils_persist:primary="id" oils_persist:sequence="actor.usr_org_unit_opt_in_id_seq">
@@ -1636,6 +1757,144 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <link field="item" reltype="has_a" key="id" map="" class="ccbi"/>
                </links>
        </class>
+
+       <class id="acs" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="authority::control_set" oils_persist:tablename="authority.control_set" reporter:label="Authority Control Set" oils_persist:field_safe="true">
+               <fields oils_persist:primary="id" oils_persist:sequence="authority.control_set_id_seq">
+                       <field reporter:label="Control Set ID" name="id" reporter:datatype="id" reporter:selector="name"/>
+                       <field reporter:label="Name" name="name" reporter:datatype="text" oils_persist:i18n="true" oils_obj:required="true" />
+                       <field reporter:label="Description" name="description" reporter:datatype="text" oils_persist:i18n="true" />
+                       <field reporter:label="Controlling Authority Fields" name="authority_fields" reporter:datatype="link" oils_persist:virtual="true"/>
+                       <field reporter:label="Thesauri" name="thesauri" reporter:datatype="link" oils_persist:virtual="true"/>
+               </fields>
+               <links>
+                       <link field="authority_fields" reltype="has_many" key="control_set" map="" class="acsaf"/>
+                       <link field="thesauri" reltype="has_many" key="control_set" map="" class="at"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="CREATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <retrieve/>
+                               <update permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <delete permission="DELETE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                       </actions>
+               </permacrud>
+       </class>
+
+       <class id="acsaf" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="authority::control_set_authority_field" oils_persist:tablename="authority.control_set_authority_field" reporter:label="Authority Control Set Authority Field" oils_persist:field_safe="true">
+               <fields oils_persist:primary="id" oils_persist:sequence="authority.control_set_authority_field_id_seq">
+                       <field reporter:label="Control Set Authority Field ID" name="id" reporter:datatype="id" reporter:selector="name"/>
+                       <field reporter:label="Main Entry" name="main_entry" reporter:datatype="link"/>
+                       <field reporter:label="Control Set" name="control_set" reporter:datatype="link"/>
+                       <field reporter:label="Tag" name="tag" reporter:datatype="text" oils_obj:required="true" oils_obj:validate="^.{3}$"/>
+                       <field reporter:label="Subfield List" name="sf_list" reporter:datatype="text" />
+                       <field reporter:label="Name" name="name" reporter:datatype="text" oils_persist:i18n="true" oils_obj:required="true" />
+                       <field reporter:label="Description" name="description" reporter:datatype="text" oils_persist:i18n="true" />
+                       <field reporter:label="Subordinate Entries" name="sub_entries" reporter:datatype="link" oils_persist:virtual="true"/>
+                       <field reporter:label="Controlled Bib Fields" name="bib_fields" reporter:datatype="link" oils_persist:virtual="true"/>
+                       <field reporter:label="Thesauri" name="thesauri" reporter:datatype="link" oils_persist:virtual="true"/>
+                       <field reporter:label="Browse Axis Maps" name="axis_maps" reporter:datatype="link" oils_persist:virtual="true"/>
+               </fields>
+               <links>
+                       <link field="axis_maps" reltype="has_many" key="field" map="" class="abaafm"/>
+                       <link field="control_set" reltype="has_a" key="id" map="" class="acs"/>
+                       <link field="bib_fields" reltype="has_many" key="authority_field" map="" class="acsbf"/>
+                       <link field="thesauri" reltype="has_many" key="control_set" map="" class="at"/>
+                       <link field="main_entry" reltype="has_a" key="id" map="" class="acsaf"/>
+                       <link field="sub_entries" reltype="has_many" key="main_entry" map="" class="acsaf"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="CREATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <retrieve/>
+                               <update permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <delete permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                       </actions>
+               </permacrud>
+       </class>
+
+       <class id="acsbf" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="authority::control_set_bib_field" oils_persist:tablename="authority.control_set_bib_field" reporter:label="Authority Control Set Bib Field" oils_persist:field_safe="true">
+               <fields oils_persist:primary="id" oils_persist:sequence="authority.control_set_bib_field_id_seq">
+                       <field reporter:label="Controlled Bib Field ID" name="id" reporter:datatype="id" reporter:selector="name"/>
+                       <field reporter:label="Controlling Authority Field" name="authority_field" reporter:datatype="link"/>
+                       <field reporter:label="Tag" name="tag" reporter:datatype="text" oils_obj:required="true" oils_obj:validate="^.{3}$"/>
+               </fields>
+               <links>
+                       <link field="authority_field" reltype="has_a" key="id" map="" class="acsaf"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="CREATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <retrieve/>
+                               <update permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <delete permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                       </actions>
+               </permacrud>
+       </class>
+
+       <class id="at" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="authority::thesaurus" oils_persist:tablename="authority.thesaurus" reporter:label="Authority Thesaurus" oils_persist:field_safe="true">
+               <fields oils_persist:primary="code">
+                       <field reporter:label="Thesaurus Code" name="code" reporter:datatype="id" reporter:selector="name"/>
+                       <field reporter:label="Control Set" name="control_set" reporter:datatype="link"/>
+                       <field reporter:label="Name" name="name" reporter:datatype="text" oils_persist:i18n="true" oils_obj:required="true" />
+                       <field reporter:label="Description" name="description" reporter:datatype="text" oils_persist:i18n="true" />
+               </fields>
+               <links>
+                       <link field="control_set" reltype="has_a" key="id" map="" class="acs"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="CREATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <retrieve/>
+                               <update permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <delete permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                       </actions>
+               </permacrud>
+       </class>
+
+       <class id="aba" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="authority::browse_axis" oils_persist:tablename="authority.browse_axis" reporter:label="Authority Browse Axis" oils_persist:field_safe="true">
+               <fields oils_persist:primary="code">
+                       <field reporter:label="Code" name="code" reporter:datatype="id" reporter:selector="name" oils_obj:validate="^\S+$"/>
+                       <field reporter:label="Name" name="name" reporter:datatype="text" oils_persist:i18n="true" oils_obj:required="true"/>
+                       <field reporter:label="Sorter Attribute" name="sorter" reporter:datatype="link"/>
+                       <field reporter:label="Description" name="description" reporter:datatype="text"/>
+                       <field reporter:label="Authority Fields" name="fields" reporter:datatype="link" oils_persist:virtual="true"/>
+                       <field reporter:label="Authority Field Maps" name="maps" reporter:datatype="link" oils_persist:virtual="true"/>
+               </fields>
+               <links>
+                       <link field="sorter" reltype="has_a" key="name" map="" class="crad"/>
+                       <link field="fields" reltype="has_many" key="axis" map="field" class="abaafm"/>
+                       <link field="maps" reltype="has_many" key="axis" map="" class="abaafm"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="CREATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <retrieve/>
+                               <update permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                               <delete permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                       </actions>
+               </permacrud>
+       </class>
+
+    <class id="abaafm" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="authority::browse_axis_authority_field_map" oils_persist:tablename="authority.browse_axis_authority_field_map" reporter:label="Authority Browse Axis Field Map" oils_persist:field_safe="true">
+        <fields oils_persist:primary="id" oils_persist:sequence="authority.browse_axis_authority_field_map_id_seq">
+            <field reporter:label="Axis Authority Field Map ID" name="id" reporter:datatype="id"/>
+            <field reporter:label="Authority Field" name="field" oils_obj:required="true" reporter:datatype="link"/>
+            <field reporter:label="Axis" name="axis" reporter:datatype="link" oils_obj:required="true"/>
+        </fields>
+        <links>
+            <link field="field" reltype="has_a" key="id" map="" class="acsaf"/>
+            <link field="axis" reltype="has_a" key="code" map="" class="aba"/>
+        </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="CREATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                <retrieve/>
+                <update permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+                <delete permission="UPDATE_AUTHORITY_CONTROL_SET" global_required="true"/>
+            </actions>
+        </permacrud>
+    </class>
+
        <class id="are" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="authority::record_entry" oils_persist:tablename="authority.record_entry" reporter:label="Authority Record Entry">
                <fields oils_persist:primary="id" oils_persist:sequence="authority.record_entry_id_seq">
                        <field name="active" reporter:datatype="bool"/>
@@ -1648,12 +1907,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field name="last_xact_id" />
                        <field name="marc" />
                        <field name="source" />
+                       <field reporter:label="Control Set" name="control_set" reporter:datatype="link"/>
                        <field reporter:label="Owner" name="owner"  reporter:datatype="org_unit"/>
                        <field name="fixed_fields" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field name="notes" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field name="bib_links" oils_persist:virtual="true" reporter:datatype="link"/>
                </fields>
                <links>
+                       <link field="control_set" reltype="has_a" key="id" map="" class="acs"/>
                        <link field="owner" reltype="has_a" key="id" map="" class="aou"/>
                        <link field="editor" reltype="has_a" key="id" map="" class="au"/>
                        <link field="creator" reltype="has_a" key="id" map="" class="au"/>
@@ -1676,9 +1937,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field name="id" />
                        <field name="record" />
                        <field name="record_status" />
+                       <field name="thesaurus" />
                </fields>
                <links>
                        <link field="record" reltype="has_a" key="id" map="" class="are"/>
+                       <link field="thesaurus" reltype="might_have" key="code" map="" class="at"/>
                </links>
        </class>
        <class id="abl" controller="open-ils.cstore" oils_obj:fieldmapper="authority::bib_linking" oils_persist:tablename="authority.bib_linking" reporter:label="Authority-Bibliographic Record Link">
index 8adecf8..fa1e19d 100644 (file)
                     <event>COPY_ALERT_MESSAGE</event>
                 </checkout_override>
 
+                <!-- If uncommented, SIP2 checkins will capture local holds as transits, instead of marking as ready for pickup. -->
+                <!--
+                <checkin_hold_as_transit>1</checkin_hold_as_transit>
+                -->
+
                 <!-- If uncommented, overrides the legacy_script_support value in opensrf.xml for SIP. -->
                 <!--
                 <legacy_script_support>false</legacy_script_support>
index 0728082..9961490 100644 (file)
@@ -51,8 +51,7 @@
          It's possible to override individual or sets of templates by putting them into
          a path in front of the default template path -->
     <template_paths>
-        <!-- XXX we should really move these out of the default web root -->
-        <path>/openils/var/web/templates</path>
+        <path>/openils/var/templates</path>
     </template_paths>
 
     <handlers>
index e14f4c2..1ef6c9e 100644 (file)
@@ -168,6 +168,9 @@ uninstall-hook:
 ilscore-install:
        @echo $@
        $(MKDIR_P) $(DESTDIR)$(TEMPLATEDIR)
+       cp -r @srcdir@/templates/base.tt2 $(DESTDIR)$(TEMPLATEDIR)
+       cp -r @srcdir@/templates/login.tt2 $(DESTDIR)$(TEMPLATEDIR)
+       cp -r @srcdir@/templates/default $(DESTDIR)$(TEMPLATEDIR)
        cp -r @srcdir@/templates/marc $(DESTDIR)$(TEMPLATEDIR)
        cp -r @srcdir@/templates/password-reset $(DESTDIR)$(TEMPLATEDIR)
        @echo "Installing string templates to $(DESTDIR)$(TEMPLATEDIR)"
index 3f8157d..b79c579 100644 (file)
@@ -2765,16 +2765,25 @@ static char* searchFieldTransformPredicate( const ClassInfo* class_info, osrfHas
                right_parens = ")";
        }
 
+       const char* right_percent = "";
+       const char* real_op       = op;
+
+       if( !strcasecmp( op, "startwith") ) {
+               real_op = "like";
+               right_percent = "|| '%'";
+       }
+
        growing_buffer* sql_buf = buffer_init( 32 );
 
        buffer_fadd(
                sql_buf,
-               "%s%s %s %s %s %s%s",
+               "%s%s %s %s %s%s %s%s",
                left_parens,
                field_transform,
-               op,
+               real_op,
                left_parens,
                value,
+               right_percent,
                right_parens,
                right_parens
        );
index 2a3afa7..f008ef3 100644 (file)
@@ -246,9 +246,12 @@ CPAN_MODULES_SAFE = \
 CPAN_MODULES_MARC = \
        Business::ISBN \
        Business::ISBN::Data \
-    MARC::Charset \
-    MARC::File::XML \
-    Net::Z3950::ZOOM
+       MARC::Charset \
+       MARC::File::XML \
+       Net::Z3950::ZOOM
+
+CPAN_MODULES_MARC_RECORD = \
+       MARC::Record
 
 CPAN_MODULES_FORCE = \
        Class::DBI::Frozen::301
@@ -273,7 +276,7 @@ squeeze: install_pgsql_client_debs_90  install_extra_debs_squeeze
 generic_debian:  install_debs test_for_libdbi_pkg install debian_sys_config install_cpan_force
 
 ubuntu-lucid: lucid generic_ubuntu
-lucid: install_pgsql_client_debs_90 install_extra_debs
+lucid: install_pgsql_client_debs_90 install_extra_debs install_cpan_marc_record
 generic_ubuntu: install_debs test_for_libdbi_pkg install debian_sys_config install_cpan_more install_cpan_safe install_cpan_force
 
 # - COMMON TARGETS ---------------------------------------------------------
@@ -286,9 +289,12 @@ install_cpan_more:
        for m in $(CPAN_MODULES_MORE); do perl -MCPAN -e "install \"$$m\";"; done
 
 # Install the CPAN modules for MARC functionality
-install_cpan_marc: 
+install_cpan_marc: install_cpan_marc_record
        for m in $(CPAN_MODULES_MARC); do perl -MCPAN -e "install \"$$m\";"; done
 
+install_cpan_marc_record:
+       for m in $(CPAN_MODULES_MARC_RECORD); do perl -MCPAN -e "install \"$$m\";"; done
+
 install_cpan_force:
        for m in $(CPAN_MODULES_FORCE); do \
                echo "force install $$m" | perl -MCPAN -e shell ;\
index 0eb3f8a..ee68f72 100644 (file)
        <event code='1234' textcode='ITEM_DEPOSIT_PAID'>
                <desc xml:lang="en-US"></desc>
        </event>
+       <event code='1235' textcode='INVALID_USER_XACT_ID'>
+        <desc xml:lang="en-US">While you were trying to make payments, this account's transaction history changed.  Please go back and try again.</desc>
+       </event>
 
 
 
index 4e7871c..6a67b65 100644 (file)
 
 var rec_type = {
-        BKS : { Type : /[at]{1}/,      BLvl : /[acdm]{1}/ },
-       SER : { Type : /[a]{1}/,        BLvl : /[bsi]{1}/ },
-       VIS : { Type : /[gkro]{1}/,     BLvl : /[abcdmsi]{1}/ },
-       MIX : { Type : /[p]{1}/,        BLvl : /[cdi]{1}/ },
-       MAP : { Type : /[ef]{1}/,       BLvl : /[abcdmsi]{1}/ },
-       SCO : { Type : /[cd]{1}/,       BLvl : /[abcdmsi]{1}/ },
-       REC : { Type : /[ij]{1}/,       BLvl : /[abcdmsi]{1}/ },
-       COM : { Type : /[m]{1}/,        BLvl : /[abcdmsi]{1}/ }
+    BKS : { Type : /[at]{1}/,    BLvl : /[acdm]{1}/ },
+    SER : { Type : /[a]{1}/,    BLvl : /[bsi]{1}/ },
+    VIS : { Type : /[gkro]{1}/,    BLvl : /[abcdmsi]{1}/ },
+    MIX : { Type : /[p]{1}/,    BLvl : /[cdi]{1}/ },
+    MAP : { Type : /[ef]{1}/,    BLvl : /[abcdmsi]{1}/ },
+    SCO : { Type : /[cd]{1}/,    BLvl : /[abcdmsi]{1}/ },
+    REC : { Type : /[ij]{1}/,    BLvl : /[abcdmsi]{1}/ },
+    COM : { Type : /[m]{1}/,    BLvl : /[abcdmsi]{1}/ },
+    AUT : { Type : /[z]{1}/,    BLvl : /.{1}/ },
+    MFHD : { Type : /[uvxy]{1}/,  BLvl : /.{1}/ }
 };
 
 var ff_pos = {
-       Ctry : {
-               _8 : {
-                       BKS : {start : 15, len : 3, def : ' ' },
-                       SER : {start : 15, len : 3, def : ' ' },
-                       VIS : {start : 15, len : 3, def : ' ' },
-                       MIX : {start : 15, len : 3, def : ' ' },
-                       MAP : {start : 15, len : 3, def : ' ' },
-                       SCO : {start : 15, len : 3, def : ' ' },
-                       REC : {start : 15, len : 3, def : ' ' },
-                       COM : {start : 15, len : 3, def : ' ' },
-               }
-       },
-       Lang : {
-               _8 : {
-                       BKS : {start : 35, len : 3, def : ' ' },
-                       SER : {start : 35, len : 3, def : ' ' },
-                       VIS : {start : 35, len : 3, def : ' ' },
-                       MIX : {start : 35, len : 3, def : ' ' },
-                       MAP : {start : 35, len : 3, def : ' ' },
-                       SCO : {start : 35, len : 3, def : ' ' },
-                       REC : {start : 35, len : 3, def : ' ' },
-                       COM : {start : 35, len : 3, def : ' ' },
-               }
-       },
-       MRec : {
-               _8 : {
-                       BKS : {start : 38, len : 1, def : ' ' },
-                       SER : {start : 38, len : 1, def : ' ' },
-                       VIS : {start : 38, len : 1, def : ' ' },
-                       MIX : {start : 38, len : 1, def : ' ' },
-                       MAP : {start : 38, len : 1, def : ' ' },
-                       SCO : {start : 38, len : 1, def : ' ' },
-                       REC : {start : 38, len : 1, def : ' ' },
-                       COM : {start : 38, len : 1, def : ' ' },
-               }
-       },
-       DtSt : {
-               _8 : {
-                       BKS : {start : 6, len : 1, def : ' ' },
-                       SER : {start : 6, len : 1, def : 'c' },
-                       VIS : {start : 6, len : 1, def : ' ' },
-                       MIX : {start : 6, len : 1, def : ' ' },
-                       MAP : {start : 6, len : 1, def : ' ' },
-                       SCO : {start : 6, len : 1, def : ' ' },
-                       REC : {start : 6, len : 1, def : ' ' },
-                       COM : {start : 6, len : 1, def : ' ' },
-               }
-       },
-       Type : {
-               ldr : {
-                       BKS : {start : 6, len : 1, def : 'a' },
-                       SER : {start : 6, len : 1, def : 'a' },
-                       VIS : {start : 6, len : 1, def : 'g' },
-                       MIX : {start : 6, len : 1, def : 'p' },
-                       MAP : {start : 6, len : 1, def : 'e' },
-                       SCO : {start : 6, len : 1, def : 'c' },
-                       REC : {start : 6, len : 1, def : 'i' },
-                       COM : {start : 6, len : 1, def : 'm' },
-               }
-       },
-       Ctrl : {
-               ldr : {
-                       BKS : {start : 8, len : 1, def : ' ' },
-                       SER : {start : 8, len : 1, def : ' ' },
-                       VIS : {start : 8, len : 1, def : ' ' },
-                       MIX : {start : 8, len : 1, def : ' ' },
-                       MAP : {start : 8, len : 1, def : ' ' },
-                       SCO : {start : 8, len : 1, def : ' ' },
-                       REC : {start : 8, len : 1, def : ' ' },
-                       COM : {start : 8, len : 1, def : ' ' },
-               }
-       },
-       BLvl : {
-               ldr : {
-                       BKS : {start : 7, len : 1, def : 'm' },
-                       SER : {start : 7, len : 1, def : 's' },
-                       VIS : {start : 7, len : 1, def : 'm' },
-                       MIX : {start : 7, len : 1, def : 'c' },
-                       MAP : {start : 7, len : 1, def : 'm' },
-                       SCO : {start : 7, len : 1, def : 'm' },
-                       REC : {start : 7, len : 1, def : 'm' },
-                       COM : {start : 7, len : 1, def : 'm' },
-               }
-       },
-       Desc : {
-               ldr : {
-                       BKS : {start : 18, len : 1, def : ' ' },
-                       SER : {start : 18, len : 1, def : ' ' },
-                       VIS : {start : 18, len : 1, def : ' ' },
-                       MIX : {start : 18, len : 1, def : ' ' },
-                       MAP : {start : 18, len : 1, def : ' ' },
-                       SCO : {start : 18, len : 1, def : ' ' },
-                       REC : {start : 18, len : 1, def : ' ' },
-                       COM : {start : 18, len : 1, def : ' ' },
-               }
-       },
-       ELvl : {
-               ldr : {
-                       BKS : {start : 17, len : 1, def : ' ' },
-                       SER : {start : 17, len : 1, def : ' ' },
-                       VIS : {start : 17, len : 1, def : ' ' },
-                       MIX : {start : 17, len : 1, def : ' ' },
-                       MAP : {start : 17, len : 1, def : ' ' },
-                       SCO : {start : 17, len : 1, def : ' ' },
-                       REC : {start : 17, len : 1, def : ' ' },
-                       COM : {start : 17, len : 1, def : ' ' },
-               }
-       },
-       TMat : {
-               _8 : {
-                       VIS : {start : 33, len : 1, def : ' ' },
-               },
-               _6 : {
-                       VIS : {start : 16, len : 1, def : ' ' },
-               }
-       },
-       Indx : {
-               _8 : {
-                       BKS : {start : 31, len : 1, def : '0' },
-                       MAP : {start : 31, len : 1, def : '0' },
-               },
-               _6 : {
-                       BKS : {start : 14, len : 1, def : '0' },
-                       MAP : {start : 14, len : 1, def : '0' },
-               }
-       },
-       Date1 : {
-               _8 : {
-                       BKS : {start : 7, len : 4, def : ' ' },
-                       SER : {start : 7, len : 4, def : ' ' },
-                       VIS : {start : 7, len : 4, def : ' ' },
-                       MIX : {start : 7, len : 4, def : ' ' },
-                       MAP : {start : 7, len : 4, def : ' ' },
-                       SCO : {start : 7, len : 4, def : ' ' },
-                       REC : {start : 7, len : 4, def : ' ' },
-                       COM : {start : 7, len : 4, def : ' ' },
-               },
-       },
-       Date2 : {
-               _8 : {
-                       BKS : {start : 11, len : 4, def : ' ' },
-                       SER : {start : 11, len : 4, def : '9' },
-                       VIS : {start : 11, len : 4, def : ' ' },
-                       MIX : {start : 11, len : 4, def : ' ' },
-                       MAP : {start : 11, len : 4, def : ' ' },
-                       SCO : {start : 11, len : 4, def : ' ' },
-                       REC : {start : 11, len : 4, def : ' ' },
-                       COM : {start : 11, len : 4, def : ' ' },
-               },
-       },
-       LitF : {
-               _8 : {
-                       BKS : {start : 33, len : 1, def : '0' },
-               },
-               _6 : {
-                       BKS : {start : 16, len : 1, def : '0' },
-               }
-       },
-       Biog : {
-               _8 : {
-                       BKS : {start : 34, len : 1, def : ' ' },
-               },
-               _6 : {
-                       BKS : {start : 17, len : 1, def : ' ' },
-               }
-       },
-       Ills : {
-               _8 : {
-                       BKS : {start : 18, len : 4, def : ' ' },
-               },
-               _6 : {
-                       BKS : {start : 1, len : 4, def : ' ' },
-               }
-       },
-       Fest : {
-               _8 : {
-                       BKS : {start : 30, len : 1, def : '0' },
-               },
-               _6 : {
-                       BKS : {start : 13, len : 1, def : '0' },
-               }
-       },
-       Conf : {
-               _8 : {
-                       BKS : {start : 24, len : 4, def : ' ' },
-                       SER : {start : 25, len : 3, def : ' ' },
-               },
-               _6 : {
-                       BKS : {start : 7, len : 4, def : ' ' },
-                       SER : {start : 8, len : 3, def : ' ' },
-               }
-       },
-       GPub : {
-               _8 : {
-                       BKS : {start : 28, len : 1, def : ' ' },
-                       SER : {start : 28, len : 1, def : ' ' },
-                       VIS : {start : 28, len : 1, def : ' ' },
-                       MAP : {start : 28, len : 1, def : ' ' },
-                       COM : {start : 28, len : 1, def : ' ' },
-               },
-               _6 : {
-                       BKS : {start : 11, len : 1, def : ' ' },
-                       SER : {start : 11, len : 1, def : ' ' },
-                       VIS : {start : 11, len : 1, def : ' ' },
-                       MAP : {start : 11, len : 1, def : ' ' },
-                       COM : {start : 11, len : 1, def : ' ' },
-               }
-       },
-       Audn : {
-               _8 : {
-                       BKS : {start : 22, len : 1, def : ' ' },
-                       SER : {start : 22, len : 1, def : ' ' },
-                       VIS : {start : 22, len : 1, def : ' ' },
-                       SCO : {start : 22, len : 1, def : ' ' },
-                       REC : {start : 22, len : 1, def : ' ' },
-                       COM : {start : 22, len : 1, def : ' ' },
-               },
-               _6 : {
-                       BKS : {start : 5, len : 1, def : ' ' },
-                       SER : {start : 5, len : 1, def : ' ' },
-                       VIS : {start : 5, len : 1, def : ' ' },
-                       SCO : {start : 5, len : 1, def : ' ' },
-                       REC : {start : 5, len : 1, def : ' ' },
-                       COM : {start : 5, len : 1, def : ' ' },
-               }
-       },
-       Form : {
-               _8 : {
-                       BKS : {start : 23, len : 1, def : ' ' },
-                       SER : {start : 23, len : 1, def : ' ' },
-                       VIS : {start : 29, len : 1, def : ' ' },
-                       MIX : {start : 23, len : 1, def : ' ' },
-                       MAP : {start : 29, len : 1, def : ' ' },
-                       SCO : {start : 23, len : 1, def : ' ' },
-                       REC : {start : 23, len : 1, def : ' ' },
-               },
-               _6 : {
-                       BKS : {start : 6, len : 1, def : ' ' },
-                       SER : {start : 6, len : 1, def : ' ' },
-                       VIS : {start : 12, len : 1, def : ' ' },
-                       MIX : {start : 6, len : 1, def : ' ' },
-                       MAP : {start : 12, len : 1, def : ' ' },
-                       SCO : {start : 6, len : 1, def : ' ' },
-                       REC : {start : 6, len : 1, def : ' ' },
-               }
-       },
-       'S/L' : {
-               _8 : {
-                       SER : {start : 34, len : 1, def : '0' },
-               },
-               _6 : {
-                       SER : {start : 17, len : 1, def : '0' },
-               }
-       },
-       'Alph' : {
-               _8 : {
-                       SER : {start : 33, len : 1, def : ' ' },
-               },
-               _6 : {
-                       SER : {start : 16, len : 1, def : ' ' },
-               }
-       },
+    Ctry : {
+        _8 : {
+            BKS : {start : 15, len : 3, def : ' ' },
+            SER : {start : 15, len : 3, def : ' ' },
+            VIS : {start : 15, len : 3, def : ' ' },
+            MIX : {start : 15, len : 3, def : ' ' },
+            MAP : {start : 15, len : 3, def : ' ' },
+            SCO : {start : 15, len : 3, def : ' ' },
+            REC : {start : 15, len : 3, def : ' ' },
+            COM : {start : 15, len : 3, def : ' ' },
+        }
+    },
+    Lang : {
+        _8 : {
+            BKS : {start : 35, len : 3, def : ' ' },
+            SER : {start : 35, len : 3, def : ' ' },
+            VIS : {start : 35, len : 3, def : ' ' },
+            MIX : {start : 35, len : 3, def : ' ' },
+            MAP : {start : 35, len : 3, def : ' ' },
+            SCO : {start : 35, len : 3, def : ' ' },
+            REC : {start : 35, len : 3, def : ' ' },
+            COM : {start : 35, len : 3, def : ' ' },
+        }
+    },
+    MRec : {
+        _8 : {
+            BKS : {start : 38, len : 1, def : ' ' },
+            SER : {start : 38, len : 1, def : ' ' },
+            VIS : {start : 38, len : 1, def : ' ' },
+            MIX : {start : 38, len : 1, def : ' ' },
+            MAP : {start : 38, len : 1, def : ' ' },
+            SCO : {start : 38, len : 1, def : ' ' },
+            REC : {start : 38, len : 1, def : ' ' },
+            COM : {start : 38, len : 1, def : ' ' },
+        }
+    },
+    DtSt : {
+        _8 : {
+            BKS : {start : 6, len : 1, def : ' ' },
+            SER : {start : 6, len : 1, def : 'c' },
+            VIS : {start : 6, len : 1, def : ' ' },
+            MIX : {start : 6, len : 1, def : ' ' },
+            MAP : {start : 6, len : 1, def : ' ' },
+            SCO : {start : 6, len : 1, def : ' ' },
+            REC : {start : 6, len : 1, def : ' ' },
+            COM : {start : 6, len : 1, def : ' ' },
+        }
+    },
+    Type : {
+        ldr : {
+            BKS : {start : 6, len : 1, def : 'a' },
+            SER : {start : 6, len : 1, def : 'a' },
+            VIS : {start : 6, len : 1, def : 'g' },
+            MIX : {start : 6, len : 1, def : 'p' },
+            MAP : {start : 6, len : 1, def : 'e' },
+            SCO : {start : 6, len : 1, def : 'c' },
+            REC : {start : 6, len : 1, def : 'i' },
+            COM : {start : 6, len : 1, def : 'm' },
+            AUT : {start : 6, len : 1, def : 'z' },
+            MFHD : {start : 6, len : 1, def : 'y' }
+
+        }
+    },
+    Ctrl : {
+        ldr : {
+            BKS : {start : 8, len : 1, def : ' ' },
+            SER : {start : 8, len : 1, def : ' ' },
+            VIS : {start : 8, len : 1, def : ' ' },
+            MIX : {start : 8, len : 1, def : ' ' },
+            MAP : {start : 8, len : 1, def : ' ' },
+            SCO : {start : 8, len : 1, def : ' ' },
+            REC : {start : 8, len : 1, def : ' ' },
+            COM : {start : 8, len : 1, def : ' ' },
+        }
+    },
+    BLvl : {
+        ldr : {
+            BKS : {start : 7, len : 1, def : 'm' },
+            SER : {start : 7, len : 1, def : 's' },
+            VIS : {start : 7, len : 1, def : 'm' },
+            MIX : {start : 7, len : 1, def : 'c' },
+            MAP : {start : 7, len : 1, def : 'm' },
+            SCO : {start : 7, len : 1, def : 'm' },
+            REC : {start : 7, len : 1, def : 'm' },
+            COM : {start : 7, len : 1, def : 'm' },
+        }
+    },
+    Desc : {
+        ldr : {
+            BKS : {start : 18, len : 1, def : ' ' },
+            SER : {start : 18, len : 1, def : ' ' },
+            VIS : {start : 18, len : 1, def : ' ' },
+            MIX : {start : 18, len : 1, def : ' ' },
+            MAP : {start : 18, len : 1, def : ' ' },
+            SCO : {start : 18, len : 1, def : ' ' },
+            REC : {start : 18, len : 1, def : ' ' },
+            COM : {start : 18, len : 1, def : ' ' },
+        }
+    },
+    Item : {
+        ldr : {
+            MFHD : {start : 18, len : 1, def : 'i' }
+        }
+    },
+    ELvl : {
+        ldr : {
+            BKS : {start : 17, len : 1, def : ' ' },
+            SER : {start : 17, len : 1, def : ' ' },
+            VIS : {start : 17, len : 1, def : ' ' },
+            MIX : {start : 17, len : 1, def : ' ' },
+            MAP : {start : 17, len : 1, def : ' ' },
+            SCO : {start : 17, len : 1, def : ' ' },
+            REC : {start : 17, len : 1, def : ' ' },
+            COM : {start : 17, len : 1, def : ' ' },
+            AUT : {start : 17, len : 1, def : 'n' },
+            MFHD : {start : 17, len : 1, def : 'u' }
+        }
+    },
+    TMat : {
+        _8 : {
+            VIS : {start : 33, len : 1, def : ' ' },
+        },
+        _6 : {
+            VIS : {start : 16, len : 1, def : ' ' },
+        }
+    },
+    Indx : {
+        _8 : {
+            BKS : {start : 31, len : 1, def : '0' },
+            MAP : {start : 31, len : 1, def : '0' },
+        },
+        _6 : {
+            BKS : {start : 14, len : 1, def : '0' },
+            MAP : {start : 14, len : 1, def : '0' },
+        }
+    },
+    Date1 : {
+        _8 : {
+            BKS : {start : 7, len : 4, def : ' ' },
+            SER : {start : 7, len : 4, def : ' ' },
+            VIS : {start : 7, len : 4, def : ' ' },
+            MIX : {start : 7, len : 4, def : ' ' },
+            MAP : {start : 7, len : 4, def : ' ' },
+            SCO : {start : 7, len : 4, def : ' ' },
+            REC : {start : 7, len : 4, def : ' ' },
+            COM : {start : 7, len : 4, def : ' ' },
+        },
+    },
+    Date2 : {
+        _8 : {
+            BKS : {start : 11, len : 4, def : ' ' },
+            SER : {start : 11, len : 4, def : '9' },
+            VIS : {start : 11, len : 4, def : ' ' },
+            MIX : {start : 11, len : 4, def : ' ' },
+            MAP : {start : 11, len : 4, def : ' ' },
+            SCO : {start : 11, len : 4, def : ' ' },
+            REC : {start : 11, len : 4, def : ' ' },
+            COM : {start : 11, len : 4, def : ' ' },
+        },
+    },
+    LitF : {
+        _8 : {
+            BKS : {start : 33, len : 1, def : '0' },
+        },
+        _6 : {
+            BKS : {start : 16, len : 1, def : '0' },
+        }
+    },
+    Biog : {
+        _8 : {
+            BKS : {start : 34, len : 1, def : ' ' },
+        },
+        _6 : {
+            BKS : {start : 17, len : 1, def : ' ' },
+        }
+    },
+    Ills : {
+        _8 : {
+            BKS : {start : 18, len : 4, def : ' ' },
+        },
+        _6 : {
+            BKS : {start : 1, len : 4, def : ' ' },
+        }
+    },
+    Fest : {
+        _8 : {
+            BKS : {start : 30, len : 1, def : '0' },
+        },
+        _6 : {
+            BKS : {start : 13, len : 1, def : '0' },
+        }
+    },
+    Conf : {
+        _8 : {
+            BKS : {start : 24, len : 4, def : ' ' },
+            SER : {start : 25, len : 3, def : ' ' },
+        },
+        _6 : {
+            BKS : {start : 7, len : 4, def : ' ' },
+            SER : {start : 8, len : 3, def : ' ' },
+        }
+    },
+    GPub : {
+        _8 : {
+            BKS : {start : 28, len : 1, def : ' ' },
+            SER : {start : 28, len : 1, def : ' ' },
+            VIS : {start : 28, len : 1, def : ' ' },
+            MAP : {start : 28, len : 1, def : ' ' },
+            COM : {start : 28, len : 1, def : ' ' },
+        },
+        _6 : {
+            BKS : {start : 11, len : 1, def : ' ' },
+            SER : {start : 11, len : 1, def : ' ' },
+            VIS : {start : 11, len : 1, def : ' ' },
+            MAP : {start : 11, len : 1, def : ' ' },
+            COM : {start : 11, len : 1, def : ' ' },
+        }
+    },
+    Audn : {
+        _8 : {
+            BKS : {start : 22, len : 1, def : ' ' },
+            SER : {start : 22, len : 1, def : ' ' },
+            VIS : {start : 22, len : 1, def : ' ' },
+            SCO : {start : 22, len : 1, def : ' ' },
+            REC : {start : 22, len : 1, def : ' ' },
+            COM : {start : 22, len : 1, def : ' ' },
+        },
+        _6 : {
+            BKS : {start : 5, len : 1, def : ' ' },
+            SER : {start : 5, len : 1, def : ' ' },
+            VIS : {start : 5, len : 1, def : ' ' },
+            SCO : {start : 5, len : 1, def : ' ' },
+            REC : {start : 5, len : 1, def : ' ' },
+            COM : {start : 5, len : 1, def : ' ' },
+        }
+    },
+    Form : {
+        _8 : {
+            BKS : {start : 23, len : 1, def : ' ' },
+            SER : {start : 23, len : 1, def : ' ' },
+            VIS : {start : 29, len : 1, def : ' ' },
+            MIX : {start : 23, len : 1, def : ' ' },
+            MAP : {start : 29, len : 1, def : ' ' },
+            SCO : {start : 23, len : 1, def : ' ' },
+            REC : {start : 23, len : 1, def : ' ' },
+        },
+        _6 : {
+            BKS : {start : 6, len : 1, def : ' ' },
+            SER : {start : 6, len : 1, def : ' ' },
+            VIS : {start : 12, len : 1, def : ' ' },
+            MIX : {start : 6, len : 1, def : ' ' },
+            MAP : {start : 12, len : 1, def : ' ' },
+            SCO : {start : 6, len : 1, def : ' ' },
+            REC : {start : 6, len : 1, def : ' ' },
+        }
+    },
+    'S/L' : {
+        _8 : {
+            SER : {start : 34, len : 1, def : '0' },
+        },
+        _6 : {
+            SER : {start : 17, len : 1, def : '0' },
+        }
+    },
+    'Alph' : {
+        _8 : {
+            SER : {start : 33, len : 1, def : ' ' },
+        },
+        _6 : {
+            SER : {start : 16, len : 1, def : ' ' },
+        }
+    },
+    "GeoDiv" : {
+        "_8" : {
+            "AUT" : {"start" : 6, "len" : 1, "def" : ' ' }
+        }
+    },
+    "Roman" : {
+        "_8" : {
+            "AUT" : {"start" : 7, "len" : 1, "def" : ' ' }
+        }
+    },
+    "CatLang" : {
+        "_8" : {
+            "AUT" : {"start" : 8, "len" : 1, "def" : ' ' }
+        }
+    },
+    "Kind" : {
+        "_8" : {
+            "AUT" : {"start" : 9, "len" : 1, "def" : ' ' }
+        }
+    },
+    "Rules" : {
+        "_8" : {
+            "AUT" : {"start" : 10, "len" : 1, "def" : ' ' }
+        }
+    },
+    "SHSys" : {
+        "_8" : {
+            "AUT" : {"start" : 11, "len" : 1, "def" : ' ' }
+        }
+    },
+    "SerType" : {
+        "_8" : {
+            "AUT" : {"start" : 12, "len" : 1, "def" : ' ' }
+        }
+    },
+    "SerNum" : {
+        "_8" : {
+            "AUT" : {"start" : 13, "len" : 1, "def" : ' ' }
+        }
+    },
+    "HeadMain" : {
+        "_8" : {
+            "AUT" : {"start" : 14, "len" : 1, "def" : ' ' }
+        }
+    },
+    "HeadSubj" : {
+        "_8" : {
+            "AUT" : {"start" : 15, "len" : 1, "def" : ' ' }
+        }
+    },
+    "HeadSer" : {
+        "_8" : {
+            "AUT" : {"start" : 16, "len" : 1, "def" : ' ' }
+        }
+    },
+    "TypeSubd" : {
+        "_8" : {
+            "AUT" : {"start" : 17, "len" : 1, "def" : ' ' }
+        }
+    },
+    "TypeGov" : {
+        "_8" : {
+            "AUT" : {"start" : 28, "len" : 1, "def" : ' ' }
+        }
+    },
+    "RefEval" : {
+        "_8" : {
+            "AUT" : {"start" : 29, "len" : 1, "def" : ' ' }
+        }
+    },
+    "RecUpd" : {
+        "_8" : {
+            "AUT" : {"start" : 31, "len" : 1, "def" : ' ' }
+        }
+    },
+    "NameDiff" : {
+        "_8" : {
+            "AUT" : {"start" : 32, "len" : 1, "def" : ' ' }
+        }
+    },
+    "Level" : {
+        "_8" : {
+            "AUT" : {"start" : 33, "len" : 1, "def" : ' ' }
+        }
+    },
+    "ModRec" : {
+        "_8" : {
+            "AUT" : {"start" : 38, "len" : 1, "def" : ' ' }
+        }
+    },
+    "CatSrc" : {
+        "_8" : {
+            "AUT" : {"start" : 39, "len" : 1, "def" : ' ' }
+        }
+    }
 };
 
index 3641b6f..3ffc27b 100644 (file)
@@ -126,6 +126,7 @@ lib/OpenILS/SIP/Transaction.pm
 lib/OpenILS/SIP/Transaction/Checkin.pm
 lib/OpenILS/SIP/Transaction/Checkout.pm
 lib/OpenILS/SIP/Transaction/Renew.pm
+lib/Template/Plugin/ResolverResolver.pm
 lib/OpenILS/Template/Plugin/Unicode.pm
 lib/OpenILS/Template/Plugin/WebSession.pm
 lib/OpenILS/Template/Plugin/WebUtils.pm
index 25334fa..c6eef0e 100644 (file)
@@ -3507,7 +3507,13 @@ sub really_delete_user {
     my $e = new_editor(authtoken => $auth, xact => 1);
     return $e->die_event unless $e->checkauth;
     my $user = $e->retrieve_actor_user($user_id) or return $e->die_event;
+    # No deleting yourself - UI is supposed to stop you first, though.
+    return $e->die_event unless $e->requestor->id != $user->id;
     return $e->die_event unless $e->allowed('DELETE_USER', $user->home_ou);
+    # Check if you are allowed to mess with this patron permission group at all
+    my $session = OpenSRF::AppSession->create( "open-ils.storage" );
+    my $evt = group_perm_failed($session, $e->requestor, $user);
+    return $e->die_event($evt) if $evt;
     my $stat = $e->json_query(
         {from => ['actor.usr_delete', $user_id, $dest_user_id]})->[0] 
         or return $e->die_event;
index 1995edf..696a446 100644 (file)
@@ -194,7 +194,7 @@ sub count_linked_bibs {
 
     my $editor = new_editor();
 
-    my $link_count;
+    my $link_count = [];
     my @clean_records;
     for my $auth ( @$records ) {
         # Protection against SQL injection? Might be overkill.
@@ -226,4 +226,124 @@ sub count_linked_bibs {
     return $link_count;
 }
 
+__PACKAGE__->register_method(
+    "method" => "retrieve_acs",
+    "api_name" => "open-ils.cat.authority.control_set.retrieve",
+    "api_level" => 1,
+    "stream" => 1,
+    "argc" => 2,
+    "signature" => {
+        "desc" => q/Retrieve authority.control_set objects with fleshed
+        thesauri and authority fields/,
+        "params" => [
+            {"name" => "limit",  "desc" => "limit (optional; default 15)", "type" => "number"},
+            {"name" => "offset",  "desc" => "offset doptional; default 0)", "type" => "number"},
+            {"name" => "focus",  "desc" => "optionally make sure the acs object with ID matching this value comes at the top of the result set (only works with offset 0)", "type" => "number"}
+        ]
+    }
+);
+
+# XXX I don't think this really needs to be protected by perms, or does it?
+sub retrieve_acs {
+    my $self = shift;
+    my $client = shift;
+
+    my ($limit, $offset, $focus) = map int, @_;
+
+    $limit ||= 15;
+    $offset ||= 0;
+    $focus ||= undef;
+
+    my $e = new_editor;
+    my $order_by = [
+        {"class" => "acs", "field" => "name"}
+    ];
+
+    # Here is the magic that let's us say that a given acsaf
+    # will be our first result.
+    unshift @$order_by, {
+        "class" => "acs", "field" => "id",
+        "transform" => "numeric_eq", "params" => [$focus],
+        "direction" => "desc"
+    } if $focus;
+
+    my $sets = $e->search_authority_control_set([
+        {"id" => {"!=" => undef}}, {
+            "flesh" => 1,
+            "flesh_fields" => {"acs" => [qw/thesauri authority_fields/]},
+            "order_by" => $order_by,
+            "limit" => $limit,
+            "offset" => $offset
+        }
+    ]) or return $e->die_event;
+
+    $e->disconnect;
+
+    $client->respond($_) foreach @$sets;
+    return undef;
+}
+
+__PACKAGE__->register_method(
+    "method" => "retrieve_acsaf",
+    "api_name" => "open-ils.cat.authority.control_set_authority_field.retrieve",
+    "api_level" => 1,
+    "stream" => 1,
+    "argc" => 2,
+    "signature" => {
+        "desc" => q/Retrieve authority.control_set_authority_field objects with
+        fleshed bib_fields and axes/,
+        "params" => [
+            {"name" => "limit",  "desc" => "limit (optional; default 15)", "type" => "number"},
+            {"name" => "offset",  "desc" => "offset (optional; default 0)", "type" => "number"},
+            {"name" => "control_set",  "desc" => "optionally constrain by value of acsaf.control_set field", "type" => "number"},
+            {"name" => "focus", "desc" => "optionally make sure the acsaf object with ID matching this value comes at the top of the result set (only works with offset 0)"}
+        ]
+    }
+);
+
+sub retrieve_acsaf {
+    my $self = shift;
+    my $client = shift;
+
+    my ($limit, $offset, $control_set, $focus) = map int, @_;
+
+    $limit ||= 15;
+    $offset ||= 0;
+    $control_set ||= undef;
+    $focus ||= undef;
+
+    my $e = new_editor;
+    my $where = {
+        "control_set" => ($control_set ? $control_set : {"!=" => undef})
+    };
+    my $order_by = [
+        {"class" => "acsaf", "field" => "main_entry", "direction" => "desc"},
+        {"class" => "acsaf", "field" => "id"}
+    ];
+
+    unshift @$order_by, {
+        "class" => "acsaf", "field" => "id",
+        "transform" => "numeric_eq", "params" => [$focus],
+        "direction" => "desc"
+    } if $focus;
+
+    my $fields = $e->search_authority_control_set_authority_field([
+        $where, {
+            "flesh" => 2,
+            "flesh_fields" => {
+                "acsaf" => ["bib_fields", "axis_maps"],
+                "abaafm" => ["axis"]
+            },
+            "order_by" => $order_by,
+            "limit" => $limit,
+            "offset" => $offset
+        }
+    ]) or return $e->die_event;
+
+    $e->disconnect;
+
+    $client->respond($_) foreach @$fields;
+    return undef;
+}
+
 1;
index f5cc14c..fba805a 100644 (file)
@@ -1275,6 +1275,9 @@ sub handle_mark_damaged {
         my $ses = OpenSRF::AppSession->create('open-ils.trigger');
         $ses->request('open-ils.trigger.event.autocreate', 'checkout.damaged', $circ, $circ->circ_lib);
 
+        my $evt2 = OpenILS::Utils::Penalty->calculate_penalties($e, $circ->usr->id, $e->requestor->ws_ou);
+        return $evt2 if $evt2;
+
         return undef;
 
     } else {
index 0b36f40..b569ffd 100644 (file)
@@ -14,6 +14,7 @@ my %scripts;
 my $script_libs;
 my $legacy_script_support = 0;
 my $booking_status;
+my $opac_renewal_use_circ_lib;
 
 sub determine_booking_status {
     unless (defined $booking_status) {
@@ -534,6 +535,9 @@ my @AUTOLOAD_FIELDS = qw/
     skip_rental_fee
     use_booking
     generate_lost_overdue
+    clear_expired
+    retarget_mode
+    hold_as_transit
 /;
 
 
@@ -764,9 +768,12 @@ sub mk_env {
                my $card = $e->search_actor_card({barcode => $self->patron_barcode})->[0] 
                        or return $self->bail_on_events(OpenILS::Event->new('ACTOR_USER_NOT_FOUND'));
 
-               $patron = $e->search_actor_user([{card => $card->id}, $flesh])->[0]
+               $patron = $e->retrieve_actor_user($card->usr)
                        or return $self->bail_on_events(OpenILS::Event->new('ACTOR_USER_NOT_FOUND'));
 
+        # Use the card we looked up, not the patron's primary, for card active checks
+        $patron->card($card);
+
     } else {
         if( my $copy = $self->copy ) {
 
@@ -1171,11 +1178,11 @@ sub run_indb_circ_test {
         $logger->info("circulator: circ policy test found matchpoint built via rows " . $results->[0]->{buildrows});
         $self->circ_matrix_matchpoint($self->editor->retrieve_config_circ_matrix_matchpoint($mp));
         $self->circ_matrix_matchpoint->duration_rule($self->editor->retrieve_config_rules_circ_duration($results->[0]->{duration_rule}));
-        if($results->[0]->{renewals}) {
+        if(defined($results->[0]->{renewals})) {
             $self->circ_matrix_matchpoint->duration_rule->max_renewals($results->[0]->{renewals});
         }
         $self->circ_matrix_matchpoint->recurring_fine_rule($self->editor->retrieve_config_rules_recurring_fine($results->[0]->{recurring_fine_rule}));
-        if($results->[0]->{grace_period}) {
+        if(defined($results->[0]->{grace_period})) {
             $self->circ_matrix_matchpoint->recurring_fine_rule->grace_period($results->[0]->{grace_period});
         }
         $self->circ_matrix_matchpoint->max_fine_rule($self->editor->retrieve_config_rules_max_fine($results->[0]->{max_fine_rule}));
@@ -1677,8 +1684,17 @@ sub handle_checkout_holds {
 # ------------------------------------------------------------------------------
 # If the circ.checkout_fill_related_hold setting is turned on and no hold for
 # the patron directly targets the checked out item, see if there is another hold 
-# (with hold_type T or V) for the patron that could be fulfilled by the checked 
-# out item.  Fulfill the oldest hold and only fulfill 1 of them.
+# for the patron that could be fulfilled by the checked out item.  Fulfill the
+# oldest hold and only fulfill 1 of them.
+# 
+# For "another hold":
+#
+# First, check for one that the copy matches via hold_copy_map, ensuring that
+# *any* hold type that this copy could fill may end up filled.
+#
+# Then, if circ.checkout_fill_related_hold_exact_match_only is not enabled, look
+# for a Title (T) or Volume (V) hold that matches the item. This allows items
+# that are non-requestable to count as capturing those hold types.
 # ------------------------------------------------------------------------------
 sub find_related_user_hold {
     my($self, $copy, $patron) = @_;
@@ -1694,6 +1710,40 @@ sub find_related_user_hold {
         select => {ahr => ['id']}, 
         from => {
             ahr => {
+                ahcm => {
+                    field => 'hold',
+                    fkey => 'id'
+                }
+            }
+        }, 
+        where => {
+            '+ahr' => {
+                usr => $patron->id,
+                fulfillment_time => undef,
+                cancel_time => undef,
+               '-or' => [
+                    {expire_time => undef},
+                    {expire_time => {'>' => 'now'}}
+                ]
+            },
+            '+ahcm' => {
+                target_copy => $self->copy->id
+            },
+        },
+        order_by => {ahr => {request_time => {direction => 'asc'}}},
+        limit => 1
+    };
+
+    my $hold_info = $e->json_query($args)->[0];
+    return $e->retrieve_action_hold_request($hold_info->{id}) if $hold_info;
+    return undef if $U->ou_ancestor_setting_value(        
+        $self->circ_lib, 'circ.checkout_fills_related_hold_exact_match_only', $e);
+
+    # find the oldest unfulfilled hold that has not yet hit the holds shelf.
+    $args = {
+        select => {ahr => ['id']}, 
+        from => {
+            ahr => {
                 acp => {
                     field => 'id', 
                     fkey => 'current_copy',
@@ -1736,7 +1786,7 @@ sub find_related_user_hold {
         limit => 1
     };
 
-    my $hold_info = $e->json_query($args)->[0];
+    $hold_info = $e->json_query($args)->[0];
     return $e->retrieve_action_hold_request($hold_info->{id}) if $hold_info;
     return undef;
 }
@@ -2237,6 +2287,9 @@ sub check_transit_checkin_interval {
         )->[0]
     ); 
 
+    # transit from X to X for whatever reason has no min interval
+    return if $self->transit->source == $self->transit->dest;
+
     my $seconds = OpenSRF::Utils->interval_to_seconds($interval);
     my $t_start = DateTime::Format::ISO8601->new->parse_datetime(cleanse_ISO8601($self->transit->source_send_time));
     my $horizon = $t_start->add(seconds => $seconds);
@@ -2246,6 +2299,73 @@ sub check_transit_checkin_interval {
         if $horizon > DateTime->now;
 }
 
+# Retarget local holds at checkin
+sub checkin_retarget {
+    my $self = shift;
+    return unless $self->retarget_mode =~ m/retarget/; # Retargeting?
+    return unless $self->is_checkin; # Renewals need not be checked
+    return if $self->capture eq 'nocapture'; # Not capturing holds anyway? Move on.
+    return if $self->is_precat; # No holds for precats
+    return unless $self->circ_lib == $self->copy->circ_lib; # Item isn't "home"? Don't check.
+    return unless $self->copy->holdable; # Not holdable, shouldn't capture holds.
+    # Specifically target items that are likely new (by status ID)
+    unless ($self->retarget_mode =~ m/\.all/) {
+        my $status = $U->copy_status($self->copy->status)->id;
+        return unless $status == OILS_COPY_STATUS_IN_PROCESS;
+    }
+
+    # Fetch holds for the bib
+    my ($result) = $holdcode->method_lookup('open-ils.circ.holds.retrieve_all_from_title')->run(
+                    $self->editor->authtoken,
+                    $self->title->id,
+                    {
+                        capture_time => undef, # No touching captured holds
+                        frozen => 'f', # Don't bother with frozen holds
+                        pickup_lib => $self->circ_lib # Only holds actually here
+                    }); 
+
+    # Error? Skip the step.
+    return if exists $result->{"ilsevent"};
+
+    # Assemble holds
+    my $holds = [];
+    foreach my $holdlist (keys %{$result}) {
+        push @$holds, @{$result->{$holdlist}};
+    }
+
+    return if scalar(@$holds) == 0; # No holds, no retargeting
+
+    # Loop over holds in request-ish order
+    # Stage 1: Get them into request-ish order
+    # Also grab type and target for skipping low hanging ones
+    $result = $self->editor->json_query({
+        "select" => { "ahr" => ["id", "hold_type", "target"] },
+        "from" => { "ahr" => { "au" => { "fkey" => "usr",  "join" => "pgt"} } },
+        "where" => { "id" => $holds },
+        "order_by" => [
+            { "class" => "pgt", "field" => "hold_priority"},
+            { "class" => "ahr", "field" => "cut_in_line", "direction" => "desc", "transform" => "coalesce", "params" => ['f']},
+            { "class" => "ahr", "field" => "selection_depth", "direction" => "desc"},
+            { "class" => "ahr", "field" => "request_time"}
+        ]
+    });
+
+    # Stage 2: Loop!
+    if (ref $result eq "ARRAY" and scalar @$result) {
+        foreach (@{$result}) {
+            # Copy level, but not this copy?
+            next if ($_->{hold_type} eq 'C' or $_->{hold_type} eq 'R' or $_->{hold_type} eq 'F'
+                and $_->{target} != $self->copy->id);
+            # Volume level, but not this volume?
+            next if ($_->{hold_type} eq 'V' and $_->{target} != $self->volume->id);
+            # So much for easy stuff, attempt a retarget!
+            my $tresult = $U->storagereq('open-ils.storage.action.hold_request.copy_targeter', undef, $_->{id}, $self->copy->id);
+            if(ref $tresult eq "ARRAY" and scalar @$tresult) {
+                last if(exists $tresult->[0]->{found_copy} and $tresult->[0]->{found_copy});
+            }
+        }
+    }
+}
 
 sub do_checkin {
     my $self = shift;
@@ -2256,6 +2376,7 @@ sub do_checkin {
         unless $self->copy;
 
     $self->check_transit_checkin_interval;
+    $self->checkin_retarget;
 
     # the renew code and mk_env should have already found our circulation object
     unless( $self->circ ) {
@@ -2422,7 +2543,7 @@ sub do_checkin {
     
             $logger->debug("circulator: circlib=$circ_lib, workstation=".$self->circ_lib);
     
-            if( $circ_lib == $self->circ_lib) {
+            if( $circ_lib == $self->circ_lib and not ($self->hold_as_transit and $self->remote_hold) ) {
                 # copy is where it needs to be, either for hold or reshelving
     
                 $self->checkin_handle_precat();
@@ -2559,6 +2680,10 @@ sub checkin_check_holds_shelf {
         $U->copy_status($self->copy->status)->id ==
             OILS_COPY_STATUS_ON_HOLDS_SHELF;
 
+    # Attempt to clear shelf expired holds for this copy
+    $holdcode->method_lookup('open-ils.circ.hold.clear_shelf.process')->run($self->editor->authtoken, $self->circ_lib, $self->copy->id)
+        if($self->clear_expired);
+
     # find the hold that put us on the holds shelf
     my $holds = $self->editor->search_action_hold_request(
         { 
@@ -2580,7 +2705,7 @@ sub checkin_check_holds_shelf {
     $logger->info("circulator: we found a captured, un-fulfilled hold [".
         $hold->id. "] for copy ".$self->copy->barcode);
 
-    if( $hold->pickup_lib == $self->circ_lib ) {
+    if( $hold->pickup_lib == $self->circ_lib and not $self->hold_as_transit ) {
         $logger->info("circulator: hold is for here .. we're done: ".$self->copy->barcode);
         return 1;
     }
@@ -2720,7 +2845,7 @@ sub attempt_checkin_hold_capture {
 
     return 0 if $self->bail_out;
 
-    if( $hold->pickup_lib == $self->circ_lib ) {
+    if( $hold->pickup_lib == $self->circ_lib && not $self->hold_as_transit ) {
 
         # This hold was captured in the correct location
         $copy->status(OILS_COPY_STATUS_ON_HOLDS_SHELF);
@@ -2888,8 +3013,9 @@ sub process_received_transit {
 
     my $transit = $self->transit;
 
-    if( $transit->dest != $self->circ_lib ) {
+    if( $transit->dest != $self->circ_lib or ($self->hold_as_transit && $transit->copy_status == OILS_COPY_STATUS_ON_HOLDS_SHELF) ) {
         # - this item is in-transit to a different location
+        # - Or we are capturing holds as transits, so why create a new transit?
 
         my $tid = $transit->id; 
         my $loc = $self->circ_lib;
@@ -3313,6 +3439,20 @@ sub do_renew {
     $self->renewal_remaining( $circ->renewal_remaining - 1 );
     $self->circ($circ);
 
+    # Opac renewal - re-use circ library from original circ (unless told not to)
+    if($self->opac_renewal) {
+        unless(defined($opac_renewal_use_circ_lib)) {
+            my $use_circ_lib = $self->editor->retrieve_config_global_flag('circ.opac_renewal.use_original_circ_lib');
+            if($use_circ_lib and $U->is_true($use_circ_lib->enabled)) {
+                $opac_renewal_use_circ_lib = 1;
+            }
+            else {
+                $opac_renewal_use_circ_lib = 0;
+            }
+        }
+        $self->circ_lib($circ->circ_lib) if($opac_renewal_use_circ_lib);
+    }
+
     # Run the fine generator against the old circ
     $self->generate_fines_start;
 
index d7f0773..bc4f2c1 100644 (file)
@@ -33,6 +33,7 @@ sub cl_retrieve_all {
        }
 
     my $second_cstore_arg = {"no_i18n" => scalar($no_i18n)};
+       $second_cstore_arg->{"order_by"} = {"acpl" => "name"};
     if ($flesh_owning_lib) {
         $second_cstore_arg->{"flesh"} = 1;
         $second_cstore_arg->{"flesh_fields"} = {"acpl" => ["owning_lib"]};
index de3f75e..584b4c7 100644 (file)
@@ -39,6 +39,105 @@ use OpenSRF::Utils::Cache;
 my $apputils = "OpenILS::Application::AppUtils";
 my $U = $apputils;
 
+__PACKAGE__->register_method(
+    method    => "test_and_create_hold_batch",
+    api_name  => "open-ils.circ.holds.test_and_create.batch",
+    stream => 1,
+    signature => {
+        desc => q/This is for batch creating a set of holds where every field is identical except for the targets./,
+        params => [
+            { desc => 'Authentication token', type => 'string' },
+            { desc => 'Hash of named parameters.  Same as for open-ils.circ.title_hold.is_possible, though the pertinent target field is automatically populated based on the hold_type and the specified list of targets.', type => 'object'},
+            { desc => 'Array of target ids', type => 'array' }
+        ],
+        return => {
+            desc => 'Array of hold ID on success, -1 on missing arg, event (or ref to array of events) on error(s)',
+        },
+    }
+);
+
+__PACKAGE__->register_method(
+    method    => "test_and_create_hold_batch",
+    api_name  => "open-ils.circ.holds.test_and_create.batch.override",
+    stream => 1,
+    signature => {
+        desc  => '@see open-ils.circ.holds.test_and_create.batch',
+    }
+);
+
+
+sub test_and_create_hold_batch {
+       my( $self, $conn, $auth, $params, $target_list ) = @_;
+
+       my $override = 1 if $self->api_name =~ /override/;
+
+       my $e = new_editor(authtoken=>$auth);
+       return $e->die_event unless $e->checkauth;
+    $$params{'requestor'} = $e->requestor->id;
+
+    my $target_field;
+    if ($$params{'hold_type'} eq 'T') { $target_field = 'titleid'; }
+    elsif ($$params{'hold_type'} eq 'C') { $target_field = 'copy_id'; }
+    elsif ($$params{'hold_type'} eq 'R') { $target_field = 'copy_id'; }
+    elsif ($$params{'hold_type'} eq 'F') { $target_field = 'copy_id'; }
+    elsif ($$params{'hold_type'} eq 'I') { $target_field = 'issuanceid'; }
+    elsif ($$params{'hold_type'} eq 'V') { $target_field = 'volume_id'; }
+    elsif ($$params{'hold_type'} eq 'M') { $target_field = 'mrid'; }
+    elsif ($$params{'hold_type'} eq 'P') { $target_field = 'partid'; }
+    else { return undef; }
+
+    foreach (@$target_list) {
+        $$params{$target_field} = $_;
+        my $res;
+        if (! $override) {        
+            ($res) = $self->method_lookup(
+                'open-ils.circ.title_hold.is_possible')->run($auth, $params);
+        }
+        if ($override || $res->{'success'} == 1) {
+            my $ahr = construct_hold_request_object($params);
+            my ($res2) = $self->method_lookup(
+                $override
+                ? 'open-ils.circ.holds.create.override'
+                : 'open-ils.circ.holds.create'
+            )->run($auth, $ahr);
+            $res2 = {
+                'target' => $$params{$target_field},
+                'result' => $res2
+            };
+            $conn->respond($res2);
+        } else {
+            $res = {
+                'target' => $$params{$target_field},
+                'result' => $res
+            };
+            $conn->respond($res);
+        }
+    }
+    return undef;
+}
+
+sub construct_hold_request_object {
+    my ($params) = @_;
+
+    my $ahr = Fieldmapper::action::hold_request->new;
+    $ahr->isnew('1');
+
+    foreach my $field (keys %{ $params }) {
+        if ($field eq 'depth') { $ahr->selection_depth($$params{$field}); }
+        elsif ($field eq 'patronid') {
+            $ahr->usr($$params{$field}); }
+        elsif ($field eq 'titleid') { $ahr->target($$params{$field}); }
+        elsif ($field eq 'copy_id') { $ahr->target($$params{$field}); }
+        elsif ($field eq 'issuanceid') { $ahr->target($$params{$field}); }
+        elsif ($field eq 'volume_id') { $ahr->target($$params{$field}); }
+        elsif ($field eq 'mrid') { $ahr->target($$params{$field}); }
+        elsif ($field eq 'partid') { $ahr->target($$params{$field}); }
+        else {
+            $ahr->$field($$params{$field});
+        }
+    }
+    return $ahr;
+}
 
 __PACKAGE__->register_method(
     method    => "create_hold_batch",
@@ -1461,7 +1560,7 @@ sub print_hold_pull_list_stream {
                 "flesh_fields" => {
                     "ahr" => ["usr", "current_copy"],
                     "au"  => ["card"],
-                    "acp" => ["location", "call_number"],
+                    "acp" => ["location", "call_number", "parts"],
                     "acn" => ["record","prefix","suffix"]
                 }
             }
@@ -2077,6 +2176,7 @@ sub do_possibility_checks {
     my $pickup_lib   = $params{pickup_lib};
     my $hold_type    = $params{hold_type}    || 'T';
     my $selection_ou = $params{selection_ou} || $pickup_lib;
+    my $holdable_formats = $params{holdable_formats};
 
 
        my $copy;
@@ -2127,9 +2227,9 @@ sub do_possibility_checks {
                my @status = ();
                for my $rec (@recs) {
                        @status = _check_title_hold_is_possible(
-                               $rec, $depth, $request_lib, $patron, $e->requestor, $pickup_lib, $selection_ou
+                               $rec, $depth, $request_lib, $patron, $e->requestor, $pickup_lib, $selection_ou, $holdable_formats
                        );
-                       last if $status[1];
+                       last if $status[0];
                }
                return @status;
        }
@@ -2162,8 +2262,13 @@ sub create_ranged_org_filter {
 
 
 sub _check_title_hold_is_possible {
-    my( $titleid, $depth, $request_lib, $patron, $requestor, $pickup_lib, $selection_ou ) = @_;
+    my( $titleid, $depth, $request_lib, $patron, $requestor, $pickup_lib, $selection_ou, $holdable_formats ) = @_;
    
+    my ($types, $formats, $lang);
+    if (defined($holdable_formats)) {
+        ($types, $formats, $lang) = split '-', $holdable_formats;
+    }
+
     my $e = new_editor();
     my %org_filter = create_ranged_org_filter($e, $selection_ou, $depth);
 
@@ -2181,15 +2286,27 @@ sub _check_title_hold_is_possible {
                                 field  => 'id',
                                 filter => { id => $titleid },
                                 fkey   => 'record'
+                            },
+                            mrd => {
+                                field  => 'record',
+                                fkey   => 'record',
+                                filter => {
+                                    record => $titleid,
+                                    ( $types   ? (item_type => [split '', $types])   : () ),
+                                    ( $formats ? (item_form => [split '', $formats]) : () ),
+                                    ( $lang    ? (item_lang => $lang)                : () )
+                                }
                             }
                         }
                     },
                     acpl => { field => 'id', filter => { holdable => 't'}, fkey => 'location' },
-                    ccs  => { field => 'id', filter => { holdable => 't'}, fkey => 'status'   }
+                    ccs  => { field => 'id', filter => { holdable => 't'}, fkey => 'status'   },
+                    acpm => { field => 'target_copy', type => 'left' } # ignore part-linked copies
                 }
             }, 
             where => {
-                '+acp' => { circulate => 't', deleted => 'f', holdable => 't', %org_filter }
+                '+acp' => { circulate => 't', deleted => 'f', holdable => 't', %org_filter },
+                '+acpm' => { target_copy => undef } # ignore part-linked copies
             }
         }
     );
@@ -2558,6 +2675,14 @@ sub _check_volume_hold_is_possible {
        my $copies = new_editor->search_asset_copy({call_number => $vol->id, %org_filter});
        $logger->info("checking possibility of volume hold for volume ".$vol->id);
 
+    my $filter_copies = [];
+    for my $copy (@$copies) {
+        # ignore part-mapped copies for regular volume level holds
+        push(@$filter_copies, $copy) unless
+            new_editor->search_asset_copy_part_map({target_copy => $copy->id})->[0];
+    }
+    $copies = $filter_copies;
+
     return (
         0, 0, [
             new OpenILS::Event(
@@ -2596,7 +2721,8 @@ sub verify_copy_for_hold {
 
     return (
         (not scalar @$permitted), # true if permitted is an empty arrayref
-        (
+        (   # XXX This test is of very dubious value; someone should figure
+            # out what if anything is checking this value
                ($copy->circ_lib == $pickup_lib) and 
             ($copy->status == OILS_COPY_STATUS_AVAILABLE)
         ),
@@ -2750,7 +2876,7 @@ sub all_rec_holds {
     $args->{fulfillment_time} = undef; #  we don't want to see old fulfilled holds
        $args->{cancel_time} = undef;
 
-       my $resp = { volume_holds => [], copy_holds => [], metarecord_holds => [], part_holds => [], issuance_holds => [] };
+       my $resp = { volume_holds => [], copy_holds => [], recall_holds => [], force_holds => [], metarecord_holds => [], part_holds => [], issuance_holds => [] };
 
     my $mr_map = $e->search_metabib_metarecord_source_map({source => $title_id})->[0];
     if($mr_map) {
@@ -2826,6 +2952,20 @@ sub all_rec_holds {
                        %$args }, 
                {idlist=>1} );
 
+       $resp->{recall_holds} = $e->search_action_hold_request(
+               { 
+                       hold_type => OILS_HOLD_TYPE_RECALL,
+                       target => $copies,
+                       %$args }, 
+               {idlist=>1} );
+
+       $resp->{force_holds} = $e->search_action_hold_request(
+               { 
+                       hold_type => OILS_HOLD_TYPE_FORCE,
+                       target => $copies,
+                       %$args }, 
+               {idlist=>1} );
+
        return $resp;
 }
 
@@ -2965,7 +3105,7 @@ sub find_hold_mvr {
 
         $tid = $part->record;
 
-       } elsif( $hold->hold_type eq OILS_HOLD_TYPE_COPY ) {
+       } elsif( $hold->hold_type eq OILS_HOLD_TYPE_COPY || $hold->hold_type eq OILS_HOLD_TYPE_RECALL || $hold->hold_type eq OILS_HOLD_TYPE_FORCE ) {
                $copy = $e->retrieve_asset_copy([
             $hold->target, 
             {flesh => 1, flesh_fields => {acp => ['call_number']}}
@@ -3087,7 +3227,10 @@ __PACKAGE__->register_method(
 );
 
 sub clear_shelf_process {
-       my($self, $client, $auth, $org_id) = @_;
+       my($self, $client, $auth, $org_id, $match_copy) = @_;
+
+    my $current_copy = { '!=' => undef };
+    $current_copy = { '=' => $match_copy } if $match_copy;
 
        my $e = new_editor(authtoken=>$auth, xact => 1);
        $e->checkauth or return $e->die_event;
@@ -3106,7 +3249,7 @@ sub clear_shelf_process {
             fulfillment_time  => undef,
             shelf_time        => {'!=' => undef},
             capture_time      => {'!=' => undef},
-            current_copy      => {'!=' => undef},
+            current_copy      => $current_copy,
         },
         { idlist => 1 }
     );
@@ -3157,7 +3300,7 @@ sub clear_shelf_process {
             my $copy = $hold->current_copy;
             my ($alt_hold) = __PACKAGE__->find_nearest_permitted_hold($e, $copy, $e->requestor, 1);
 
-            if($alt_hold) {
+            if($alt_hold and !$match_copy) {
 
                 push(@{$cache_data{hold}}, $hold->id); # copy is needed for a hold
 
@@ -3230,15 +3373,15 @@ __PACKAGE__->register_method(
                 'available at the library where the user is placing the hold (or, alternatively, '.
                 'at the pickup library) to encourage bypassing the hold placement and just '      .
                 'checking out the item.' ,
-        params => {
+        params => [
             { desc => 'Authentication Token', type => 'string' },
             { desc => 'Method Arguments.  Options include: hold_type, hold_target, org_unit.  ' 
                     . 'hold_type is the hold type code (T, V, C, M, ...).  '
                     . 'hold_target is the identifier of the hold target object.  ' 
                     . 'org_unit is org unit ID.', 
               type => 'object' 
-            },
-        },
+            }
+        ],
         return => { 
             desc => q/Result hash like { "copy" : copy_id, "location" : location_name }, empty hash on misses, event on error./,
             type => 'object' 
@@ -3422,6 +3565,22 @@ __PACKAGE__->register_method(
     }
 );
 
+__PACKAGE__->register_method(
+    method    => 'change_hold_title_for_specific_holds',
+    api_name  => 'open-ils.circ.hold.change_title.specific_holds',
+    signature => {
+        desc => q/
+            Updates specified holds to target new bib./,
+        params => [
+            { desc => 'Authentication Token', type => 'string' },
+            { desc => 'New Target Bib Id',    type => 'number' },
+            { desc => 'Holds Ids for holds to update',   type => 'array'  },
+        ],
+        return => { desc => '1 on success' }
+    }
+);
+
+
 sub change_hold_title {
     my( $self, $client, $auth, $new_bib_id, $bib_ids ) = @_;
 
@@ -3458,6 +3617,41 @@ sub change_hold_title {
     return 1;
 }
 
+sub change_hold_title_for_specific_holds {
+    my( $self, $client, $auth, $new_bib_id, $hold_ids ) = @_;
+
+    my $e = new_editor(authtoken=>$auth, xact=>1);
+    return $e->die_event unless $e->checkauth;
+
+    my $holds = $e->search_action_hold_request(
+        [
+            {
+                cancel_time      => undef,
+                fulfillment_time => undef,
+                hold_type        => 'T',
+                id               => $hold_ids
+            },
+            {
+                flesh        => 1,
+                flesh_fields => { ahr => ['usr'] }
+            }
+        ],
+        { substream => 1 }
+    );
+
+    for my $hold (@$holds) {
+        $e->allowed('UPDATE_HOLD', $hold->usr->home_ou) or return $e->die_event;
+        $logger->info("Changing hold " . $hold->id . " target from " . $hold->target . " to $new_bib_id in title hold target change");
+        $hold->target( $new_bib_id );
+        $e->update_action_hold_request($hold) or return $e->die_event;
+    }
+
+    $e->commit;
+
+    _reset_hold($self, $e->requestor, $_) for @$holds;
+
+    return 1;
+}
 
 __PACKAGE__->register_method(
     method    => 'rec_hold_count',
index 6de6225..7a2851d 100644 (file)
@@ -88,6 +88,8 @@ sub spellcheck {
                $logger->debug("spelling dictionary set to $dict");
        }
 
+       $speller->set_option('ignore-case', 'true');
+
        my @resp;
 
        for my $word (split(/\s+/,$phrase) ) {
index 37bc763..3dc14d8 100644 (file)
@@ -6,7 +6,7 @@ use OpenILS::Utils::Fieldmapper;
 use OpenILS::Application::AppUtils;
 use XML::LibXML;
 use XML::LibXSLT;
-use OpenILS::Utils::Editor q/:funcs/;
+use OpenILS::Utils::CStoreEditor q/:funcs/;
 use OpenSRF::Utils::Logger qw/$logger/;
 
 use OpenSRF::Utils::JSON;
@@ -60,6 +60,59 @@ __PACKAGE__->register_method(
         note           => "Searches authority data for existing controlled terms and crossrefs",
 );              
 
+sub search_authority_by_simple_normalize_heading {
+    my $self = shift;
+    my $client = shift;
+    my $marcxml = shift;
+    my $controlset = shift;
+
+    my $query = {
+        select => { are => ['id'] },
+        from   => 'are',
+        where  => {
+            deleted => 'f',
+            marc => { 'startwith' => {
+                transform => 'authority.simple_normalize_heading',
+                value     => [ 'authority.simple_normalize_heading' => $marcxml ]
+            }},
+            defined($controlset) ? ( control_set => $controlset ) : ()
+        }
+    };
+
+    $client->respond($_->{id}) for @{ new_editor()->json_query( $query ) };
+    $client->respond_complete;
+}
+__PACKAGE__->register_method(
+        method         => "search_authority_by_simple_normalize_heading",
+        api_name       => "open-ils.search.authority.simple_heading.from_xml",
+        argc           => 1, 
+        stream      => 1,
+        note           => "Searches authority data by main entry using marcxml, returning 'are' ids; params are marcxml and optional control-set-id",
+);
+
+sub search_authority_batch_by_simple_normalize_heading {
+    my $self = shift;
+    my $client = shift;
+    my $search_set = [@_];
+
+    my $m = $self->method_lookup('open-ils.search.authority.simple_heading.from_xml.atomic');
+
+    for my $s ( @$search_set ) {
+        for my $k ( keys %$s ) {
+            $client->respond( { $k => $m->run( $s->{$k}, $k ) } );
+        }
+    }
+
+    $client->respond_complete;
+}
+__PACKAGE__->register_method(
+        method         => "search_authority_batch_by_simple_normalize_heading",
+        api_name       => "open-ils.search.authority.simple_heading.from_xml.batch",
+        argc           => 1, 
+        stream      => 1,
+        note           => "Searches authority data by main entry using marcxml, in control-set batches, returning 'are' ids; params are hashes of { control-set-id => marcxml }",
+);
+
 
 sub crossref_authority {
        my $self = shift;
index b0d4fc8..01212da 100644 (file)
@@ -636,7 +636,7 @@ __PACKAGE__->register_method(
             { desc => 'Biblio record entry Id', type => 'number' }
         ],
         return => {
-            desc => 'True if specified id can be found in biblio.peer_record_copy_map.peer_record.',
+            desc => 'True if specified id can be found in biblio.peer_bib_copy_map.peer_record.',
             type => 'bool'
         }
     }
index 4cec39f..1bf550d 100644 (file)
@@ -506,6 +506,15 @@ sub modify_from_fieldmapper {
 
        action::survey_answer->has_a( question => 'action::survey_question' );
 
+       biblio::peer_bib_copy_map->has_a( target_copy => 'asset::copy' );
+       biblio::peer_bib_copy_map->has_a( peer_record => 'biblio::record_entry' );
+       biblio::peer_bib_copy_map->has_a( peer_type => 'biblio::peer_type' );
+
+       asset::copy_part_map->has_a( target_copy => 'asset::copy' );
+       asset::copy_part_map->has_a( part => 'biblio::monograph_part' );
+
+       biblio::peer_type->has_many( records => 'biblio::record_entry' );
+
        asset::copy_note->has_a( owning_copy => 'asset::copy' );
        asset::copy_note->has_a( creator => 'actor::user' );
 
@@ -514,6 +523,9 @@ sub modify_from_fieldmapper {
 
        asset::copy->has_many( stat_cat_entries => [ 'asset::stat_cat_entry_copy_map' => 'stat_cat_entry' ] );
        asset::copy->has_many( stat_cat_entry_copy_maps => 'asset::stat_cat_entry_copy_map' );
+       asset::copy->has_many( peer_bib_copy_maps => 'biblio::peer_bib_copy_map' );
+
+       asset::copy->has_many( part_maps => 'asset::copy_part_map' );
 
        asset::copy->has_a( call_number => 'asset::call_number' );
        asset::copy->has_a( creator => 'actor::user' );
index 7780cbc..24e484c 100644 (file)
@@ -31,11 +31,11 @@ biblio::peer_type->columns( Essential => qw/id name/ );
 #-------------------------------------------------------------------------------
 
 #-------------------------------------------------------------------------------
-package biblio::peer_record_copy_map;
+package biblio::peer_bib_copy_map;
 use base qw/biblio/;
 
-biblio::peer_record_copy_map->table( 'biblio_peer_record_copy_map' );
-biblio::peer_record_copy_map->columns( Essential => qw/id peer_type peer_record target_copy/ );
+biblio::peer_bib_copy_map->table( 'biblio_peer_bib_copy_map' );
+biblio::peer_bib_copy_map->columns( Essential => qw/id peer_type peer_record target_copy/ );
 #-------------------------------------------------------------------------------
 
 #-------------------------------------------------------------------------------
index 5c6990f..ae9bfda 100644 (file)
@@ -4,6 +4,7 @@
     package asset::copy_part_map;
 
     asset::copy_part_map->table( 'asset.copy_part_map' );
+    asset::copy_part_map->sequence( 'asset.copy_part_map_id_seq' );
 
     #-------------------------------------------------------------------------------
     package biblio::monograph_part;
     biblio::monograph_part->sequence( 'biblio.monograph_part_id_seq' );
 
        #-------------------------------------------------------------------------------
-       package biblio::peer_record_copy_map;
+       package biblio::peer_bib_copy_map;
 
-       biblio::peer_record_copy_map->table( 'biblio.peer_record_copy_map' );
-       biblio::peer_record_copy_map->sequence( 'biblio.peer_record_copy_map_id_seq' );
+       biblio::peer_bib_copy_map->table( 'biblio.peer_bib_copy_map' );
+       biblio::peer_bib_copy_map->sequence( 'biblio.peer_bib_copy_map_id_seq' );
 
        #-------------------------------------------------------------------------------
        package biblio::peer_type;
index c9743e2..d54575d 100644 (file)
@@ -1042,6 +1042,7 @@ sub new_hold_copy_targeter {
        my $client = shift;
        my $check_expire = shift;
        my $one_hold = shift;
+    my $find_copy = shift;
 
        local $OpenILS::Application::Storage::WRITE = 1;
 
@@ -1270,7 +1271,8 @@ sub new_hold_copy_targeter {
                                                isTrue($_->location->holdable) && 
                                                isTrue($_->holdable) &&
                                                !isTrue($_->deleted) &&
-                                               (isTrue($hold->mint_condition) ? isTrue($_->mint_condition) : 1)
+                                               (isTrue($hold->mint_condition) ? isTrue($_->mint_condition) : 1) &&
+                                               ($hold->hold_type ne 'P' ? $_->part_maps->count == 0 : 1)
                                        } @$all_copies;
 
                        # let 'em know we're still working
@@ -1287,6 +1289,8 @@ sub new_hold_copy_targeter {
                        }
 
                        my $copy_count = @$all_copies;
+            my $found_copy = undef;
+            $found_copy = 1 if($find_copy and grep $_ == $find_copy, @$all_copies);
 
                        # map the potentials, so that we can pick up checkins
                        # XXX Loop-based targeting may require that /only/ copies from this loop should be added to
@@ -1488,7 +1492,8 @@ sub new_hold_copy_targeter {
                                { hold => $hold->id,
                                  old_target => ($old_best ? $old_best->id : undef),
                                  eligible_copies => $copy_count,
-                                 target => ($best ? $best->id : undef) };
+                                 target => ($best ? $best->id : undef),
+                  found_copy => $found_copy };
 
                } otherwise {
                        my $e = shift;
index a0a634a..a43abc5 100644 (file)
@@ -36,12 +36,16 @@ use OpenSRF::Utils::Logger qw($logger);
 # ... and this is our OpenILS object (en|de)coder and psuedo-ORM package.
 use OpenILS::Utils::Fieldmapper;
 
+use OpenILS::Utils::CStoreEditor q/:funcs/;
+
+
 our (
   $_parser,
   $_xslt,
   %record_xslt,
   %metarecord_xslt,
   %holdings_data_cache,
+  %authority_browse_axis_cache,
 );
 
 sub child_init {
@@ -883,6 +887,78 @@ Returns a list of the requested org-scoped record IDs held
                }
 );
 
+sub grab_authority_browse_axes {
+    my ($self, $client, $full) = @_;
+
+    unless(scalar(keys(%authority_browse_axis_cache))) {
+        my $axes = new_editor->search_authority_browse_axis([
+            { code => { '<>' => undef } },
+            { flesh => 2, flesh_fields => { aba => ['fields'], acsaf => ['bib_fields','sub_entries'] } }
+        ]);
+        $authority_browse_axis_cache{$_->code} = $_ for (@$axes);
+    }
+
+    if ($full) {
+        return [
+            map { $authority_browse_axis_cache{$_} } sort keys %authority_browse_axis_cache
+        ];
+    } else {
+        return [keys %authority_browse_axis_cache];
+    }
+}
+__PACKAGE__->register_method(
+       method    => 'grab_authority_browse_axes',
+       api_name  => 'open-ils.supercat.authority.browse_axis_list',
+       api_level => 1,
+       argc      => 1,
+       signature =>
+               { desc     => "Returns a list of valid authority browse/startswith axes",
+                 params   => [
+              { name => 'full', desc => 'Optional. If true, return array containing the full object for each axis, sorted by code. Otherwise just return an array of the codes.', type => 'number' }
+          ],
+                 'return' => { desc => 'Axis codes or whole axes, see "full" param', type => 'array' }
+               }
+);
+
+sub axis_authority_browse {
+       my $self = shift;
+       my $client = shift;
+    my $axis = shift;
+
+    $axis =~ s/^authority\.//;
+    $axis =~ s/(\.refs)$//;
+    my $refs = $1;
+
+    return undef unless ( grep { /$axis/ } @{ grab_authority_browse_axes() } );
+
+    my @tags;
+    for my $f (@{$authority_browse_axis_cache{$axis}->fields}) {
+        push @tags, $f->tag;
+        if ($refs) {
+            push @tags, $_->tag for @{$f->sub_entries};
+        }
+    }
+
+    return authority_tag_sf_browse($self, $client, \@tags, 'a', @_); # XXX TODO figure out something more correct for the subfield param
+}
+__PACKAGE__->register_method(
+       method    => 'axis_authority_browse',
+       api_name  => 'open-ils.supercat.authority.browse.by_axis',
+       api_level => 1,
+       argc      => 2,
+       signature =>
+               { desc     => "Returns a list of the requested authority record IDs held",
+                 params   =>
+                       [ { name => 'axis', desc => 'The target axis', type => 'string' },
+                         { name => 'value', desc => 'The target value', type => 'string' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' },
+                         { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
+                 'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
+               }
+);
+
+=pod
+
 sub general_authority_browse {
        my $self = shift;
        my $client = shift;
@@ -1009,6 +1085,8 @@ __PACKAGE__->register_method(
                }
 );
 
+=cut
+
 sub authority_tag_sf_browse {
     my $self = shift;
     my $client = shift;
@@ -1051,11 +1129,8 @@ sub authority_tag_sf_browse {
         my $before = $_storage->request(
             "open-ils.cstore.json_query.atomic",
             { select    => { afr => [qw/record value/] },
-              from      => { 'are', 'afr' },
-              where     => {
-                '+afr' => { tag => \@ref_tags, subfield => $subfield, value => { '<' => $value } },
-                '+are' => { 'deleted' => 'f' }
-              },
+              from      => 'afr',
+              where     => { tag => \@ref_tags, subfield => $subfield, value => { '<' => $value } },
               order_by  => { afr => { value => 'desc' } },
               limit     => $before_limit,
               offset    => abs($page) * $page_size - $before_offset,
@@ -1068,11 +1143,8 @@ sub authority_tag_sf_browse {
         my $after = $_storage->request(
             "open-ils.cstore.json_query.atomic",
             { select    => { afr => [qw/record value/] },
-              from      => { 'are', 'afr' },
-              where     => {
-                '+afr' => { tag => \@ref_tags, subfield => $subfield, value => { '>=' => $value } },
-                '+are' => { 'deleted' => 'f' }
-              },
+              from      => 'afr',
+              where     => { tag => \@ref_tags, subfield => $subfield, value => { '>=' => $value } },
               order_by  => { afr => { value => 'asc' } },
               limit     => $after_limit,
               offset    => abs($page) * $page_size - $after_offset,
@@ -1397,6 +1469,45 @@ Returns a list of the requested org-scoped record IDs held
                }
 );
 
+sub axis_authority_startwith {
+       my $self = shift;
+       my $client = shift;
+    my $axis = shift;
+
+    $axis =~ s/^authority\.//;
+    $axis =~ s/(\.refs)$//;
+    my $refs = $1;
+
+    return undef unless ( grep { /$axis/ } @{ grab_authority_browse_axes() } );
+
+    my @tags;
+    for my $f (@{$authority_browse_axis_cache{$axis}->fields}) {
+        push @tags, $f->tag;
+        if ($refs) {
+            push @tags, $_->tag for @{$f->sub_entries};
+        }
+    }
+
+    return authority_tag_sf_startwith($self, $client, \@tags, 'a', @_); # XXX TODO figure out something more correct for the subfield param
+}
+__PACKAGE__->register_method(
+       method    => 'axis_authority_startwith',
+       api_name  => 'open-ils.supercat.authority.startwith.by_axis',
+       api_level => 1,
+       argc      => 2,
+       signature =>
+               { desc     => "Returns a list of the requested authority record IDs held",
+                 params   =>
+                       [ { name => 'axis', desc => 'The target axis', type => 'string' },
+                         { name => 'value', desc => 'The target value', type => 'string' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 10', type => 'number' },
+                         { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
+                 'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
+               }
+);
+
+=pod
+
 sub general_authority_startwith {
        my $self = shift;
        my $client = shift;
@@ -1412,7 +1523,7 @@ __PACKAGE__->register_method(
                { desc     => "Returns a list of the requested authority record IDs held",
                  params   =>
                        [ { name => 'value', desc => 'The target title', type => 'string' },
-                         { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 10', type => 'number' },
                          { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
                  'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
                }
@@ -1427,7 +1538,7 @@ __PACKAGE__->register_method(
                { desc     => "Returns a list of the requested authority record IDs held",
                  params   =>
                        [ { name => 'value', desc => 'The target author', type => 'string' },
-                         { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 10', type => 'number' },
                          { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
                  'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
                }
@@ -1442,7 +1553,7 @@ __PACKAGE__->register_method(
                { desc     => "Returns a list of the requested authority record IDs held",
                  params   =>
                        [ { name => 'value', desc => 'The target subject', type => 'string' },
-                         { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 10', type => 'number' },
                          { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
                  'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
                }
@@ -1457,7 +1568,7 @@ __PACKAGE__->register_method(
                { desc     => "Returns a list of the requested authority record IDs held",
                  params   =>
                        [ { name => 'value', desc => 'The target topical subject', type => 'string' },
-                         { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 10', type => 'number' },
                          { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
                  'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
                }
@@ -1472,7 +1583,7 @@ __PACKAGE__->register_method(
                { desc     => "Returns a list of the requested authority record IDs held, including see (4xx) and see also (5xx) references",
                  params   =>
                        [ { name => 'value', desc => 'The target title', type => 'string' },
-                         { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 10', type => 'number' },
                          { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
                  'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
                }
@@ -1487,7 +1598,7 @@ __PACKAGE__->register_method(
                { desc     => "Returns a list of the requested authority record IDs held, including see (4xx) and see also (5xx) references",
                  params   =>
                        [ { name => 'value', desc => 'The target author', type => 'string' },
-                         { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 10', type => 'number' },
                          { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
                  'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
                }
@@ -1502,7 +1613,7 @@ __PACKAGE__->register_method(
                { desc     => "Returns a list of the requested authority record IDs held, including see (4xx) and see also (5xx) references",
                  params   =>
                        [ { name => 'value', desc => 'The target subject', type => 'string' },
-                         { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 10', type => 'number' },
                          { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
                  'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
                }
@@ -1517,12 +1628,14 @@ __PACKAGE__->register_method(
                { desc     => "Returns a list of the requested authority record IDs held, including see (4xx) and see also (5xx) references",
                  params   =>
                        [ { name => 'value', desc => 'The target topical subject', type => 'string' },
-                         { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' },
+                         { name => 'page_size', desc => 'Count of records to retrieve, default is 10', type => 'number' },
                          { name => 'page', desc => 'The page of records retrieved, calculated based on page_size.  Can be positive, negative or 0.', type => 'number' }, ],
                  'return' => { desc => 'Authority Record IDs that are near the target string', type => 'array' }
                }
 );
 
+=cut
+
 sub authority_tag_sf_startwith {
     my $self = shift;
     my $client = shift;