-Evergreen doesn't keep a GNU-style ChangeLog except in release tarballs.
-Those seeking a change log are encouraged to run 'git log -v', or read
-it online at: http://git.evergreen-ils.org/?p=Evergreen.git;a=log
+commit 0553a8feb4f24949e60c97feed9255d61f6e2502
+Author: Jason Stephenson <jason@sigio.com>
+Date: Fri Oct 29 11:30:10 2021 -0400
+
+ Bumping Perl version string for 3.6.5
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+1 1 Open-ILS/src/perlmods/lib/OpenILS.pm
+
+commit aacc1afa007e11e523010438b8a4b4957065fd24
+Author: Jason Stephenson <jason@sigio.com>
+Date: Fri Oct 29 09:26:30 2021 -0400
+
+ Translation updates - newpot
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+844 671 build/i18n/po/bootstrap-opac/bootstrap-opac.pot
+1 1 build/i18n/po/conify/conify.pot
+3069 3001 build/i18n/po/db.seed/db.seed.pot
+2434 2429 build/i18n/po/fm_IDL.dtd/fm_IDL.dtd.pot
+7 1 build/i18n/po/ils_events.xml/ils_events.xml.pot
+25 25 build/i18n/po/kpac/kpac.pot
+512 508 build/i18n/po/tpac/tpac.pot
+2 2 build/i18n/po/urlverify/urlverify.pot
+430 400 build/i18n/po/webstaff/webstaff.pot
+
+commit 214589f60f190933115424ecf060be621d431dcb
+Author: Jason Stephenson <jason@sigio.com>
+Date: Fri Oct 29 09:24:57 2021 -0400
+
+ Remove extraneous release notes docs
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+0 10 docs/RELEASE_NOTES_NEXT/API/draw_field_label_improvements.adoc
+0 47 docs/RELEASE_NOTES_NEXT/Acquisitions/Angular_Acquisitions_Search.adoc
+0 33 docs/RELEASE_NOTES_NEXT/Acquisitions/Angular_Providers_Interface.adoc
+0 11 docs/RELEASE_NOTES_NEXT/Administration/autorenewal_action_trigger_result_code.adoc
+0 30 docs/RELEASE_NOTES_NEXT/Administration/ezproxy.adoc
+0 23 docs/RELEASE_NOTES_NEXT/Administration/lp1517298_matomo.adoc
+0 33 docs/RELEASE_NOTES_NEXT/Administration/patronapi.adoc
+0 20 docs/RELEASE_NOTES_NEXT/Administration/preloaded_audio.adoc
+0 11 docs/RELEASE_NOTES_NEXT/Architecture/Antora_Documentation.adoc
+0 39 docs/RELEASE_NOTES_NEXT/Architecture/Block_Login_of_Expired_Staff_Accounts.adoc
+0 43 docs/RELEASE_NOTES_NEXT/Architecture/GIST_to_GIN_indexes_FTS.adoc
+0 65 docs/RELEASE_NOTES_NEXT/Architecture/action-trigger-http-reactor.adoc
+0 17 docs/RELEASE_NOTES_NEXT/Cataloging/authority-full-rec-value-index.adoc
+0 15 docs/RELEASE_NOTES_NEXT/Cataloging/blank_tcn_source.adoc
+0 6 docs/RELEASE_NOTES_NEXT/Cataloging/bre_negative_one.adoc
+0 7 docs/RELEASE_NOTES_NEXT/Cataloging/manage-auths-ang.adoc
+0 3 docs/RELEASE_NOTES_NEXT/Cataloging/marcbatch-ang-port.adoc
+0 8 docs/RELEASE_NOTES_NEXT/Cataloging/preloaded_audio.adoc
+0 24 docs/RELEASE_NOTES_NEXT/Cataloging/publisher-display-264.adoc
+0 92 docs/RELEASE_NOTES_NEXT/Circulation/Curbside_Pickup.adoc
+0 13 docs/RELEASE_NOTES_NEXT/Circulation/angular-booking-capture.adoc
+0 16 docs/RELEASE_NOTES_NEXT/Circulation/autorenewnotify-renewal-field.adoc
+0 59 docs/RELEASE_NOTES_NEXT/Circulation/course_materials_module.adoc
+0 13 docs/RELEASE_NOTES_NEXT/Circulation/hopeless-holds.adoc
+0 7 docs/RELEASE_NOTES_NEXT/Circulation/in_house_use_workstation.adoc
+0 30 docs/RELEASE_NOTES_NEXT/Circulation/purge_usr_pref_names.adoc
+0 12 docs/RELEASE_NOTES_NEXT/Circulation/test_notification_method.adoc
+0 13 docs/RELEASE_NOTES_NEXT/Client/ang-catalog-more-hold-types.adoc
+0 17 docs/RELEASE_NOTES_NEXT/Client/ang-staff-default.adoc
+0 6 docs/RELEASE_NOTES_NEXT/Client/ang-staff-shared-bucket.adoc
+0 14 docs/RELEASE_NOTES_NEXT/Client/splash_search_fix.adoc
+0 34 docs/RELEASE_NOTES_NEXT/OPAC/Enhanced_Public_Catalog_Printing_and_Email.adoc
+0 34 docs/RELEASE_NOTES_NEXT/OPAC/bootstrap-opac.adoc
+0 10 docs/RELEASE_NOTES_NEXT/OPAC/carousel_ordering.adoc
+0 11 docs/RELEASE_NOTES_NEXT/OPAC/stripe-v3.adoc
+0 13 docs/RELEASE_NOTES_NEXT/Reports/change_aacs_label.adoc
+0 5 docs/RELEASE_NOTES_NEXT/Reports/deduplicated_reports_schedule.adoc
+0 23 docs/RELEASE_NOTES_NEXT/Reports/report_subtotals.adoc
+0 22 docs/RELEASE_NOTES_NEXT/SIP/allow_usrname_in_patron_id.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/API/draw_field_label_improvements.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Acquisitions/Angular_Acquisitions_Search.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Acquisitions/Angular_Providers_Interface.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Administration/autorenewal_action_trigger_result_code.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Administration/ezproxy.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Administration/lp1517298_matomo.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Administration/patronapi.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Administration/preloaded_audio.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Architecture/Antora_Documentation.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Architecture/Block_Login_of_Expired_Staff_Accounts.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Architecture/GIST_to_GIN_indexes_FTS.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Architecture/action-trigger-http-reactor.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/authority-full-rec-value-index.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/blank_tcn_source.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/bre_negative_one.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/manage-auths-ang.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/marcbatch-ang-port.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/preloaded_audio.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/publisher-display-264.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/Curbside_Pickup.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/angular-booking-capture.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/autorenewnotify-renewal-field.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/course_materials_module.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/hopeless-holds.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/in_house_use_workstation.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/purge_usr_pref_names.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/test_notification_method.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Client/ang-catalog-more-hold-types.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Client/ang-staff-default.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Client/ang-staff-shared-bucket.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Client/splash_search_fix.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/OPAC/Enhanced_Public_Catalog_Printing_and_Email.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/OPAC/bootstrap-opac.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/OPAC/carousel_ordering.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/OPAC/stripe-v3.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Reports/change_aacs_label.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Reports/deduplicated_reports_schedule.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Reports/report_subtotals.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/SIP/allow_usrname_in_patron_id.adoc
+
+commit 4b38858700d517bec8451a86aa777dc53887f61f
+Author: Jason Stephenson <jason@sigio.com>
+Date: Mon Oct 25 13:17:50 2021 -0400
+
+ Docs: More 3.6.5 release notes cleanup
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+6 5 docs/RELEASE_NOTES_3_6.adoc
+
+commit 995d0f8b68d73b60a0b00fab544be3efdd8542b4
+Author: Jason Stephenson <jason@sigio.com>
+Date: Mon Oct 25 13:04:29 2021 -0400
+
+ Docs: Fix previous release notes addition
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+1 1 docs/RELEASE_NOTES_3_6.adoc
+
+commit 24159011cf4b740ba59e9640c5067beef4e20c91
+Author: Jason Stephenson <jason@sigio.com>
+Date: Mon Oct 25 12:55:34 2021 -0400
+
+ Docs: Add upgrade note to 3.6.5 release notes
+
+ Add a note mentioning that upgrading sites should make sure to run
+ autogen.sh to update the fm_IDL.xml files.
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+2 0 docs/RELEASE_NOTES_3_6.adoc
+
+commit caab6840755d65c91d2394455fba1da8e30a5250
+Author: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
+Date: Mon Oct 25 09:26:46 2021 -0400
+
+ Docs: updates to 3.6.5 release notes
+
+ Signed-off-by: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+6 0 docs/RELEASE_NOTES_3_6.adoc
+
+commit 7fba83243e04c090513003c3e5ece18312971132
+Author: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
+Date: Fri Oct 22 15:45:50 2021 -0400
+
+ docs: release notes 3.6.5
+
+ Signed-off-by: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+
+157 0 docs/RELEASE_NOTES_3_6.adoc
+
+commit 91b5bd33922f41a165500d36a0f730abb26cb5eb
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Tue Jul 27 15:09:45 2021 -0400
+
+ LP1903358 Staff catalog holds barcode realtime lookup
+
+ Avoid requiring staff to send an Enter event (keyword / scanner) when
+ entering a patron barcode into the place holds form. Instead, look the
+ barcode up after a sufficient amount of time has passed.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Ruth Frasur <rfrasur@library.in.gov>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+3 2 Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
+17 0 Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.ts
+
+commit 14404b4cb06cb93f574f3cb92e1f3dfd7a50d5c5
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Mon Oct 4 12:28:14 2021 -0400
+
+ LP#1826759: end DB update scripts with "COMMIT", not "END"
+
+ The former is what tools like make_release are looking
+ for.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/upgrade/1302.data.lp1826759_items_out_typo.sql
+
+commit 49cb426a2e38791d3d64c2dd55d3deeedb6b65d0
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Mon Oct 4 10:52:35 2021 -0400
+
+ LP#1922567: stamp schema update
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{XXXX.schema.authority-full-rec-value-index.sql => 1303.schema.authority-full-rec-value-index.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.schema.authority-full-rec-value-index.sql => 1303.schema.authority-full-rec-value-index.sql} (83%)
+
+commit da78953367a9559bc8ffbbf35890af977449a4c2
+Author: Jason Stephenson <jason@sigio.com>
+Date: Tue Apr 6 07:43:52 2021 -0400
+
+ Lp 1922567: Limit authority.full_rec.value indexes
+
+ Limit the authority_full_rec_value_index and
+ authority_full_rec_value_tpo_index indexes to the first 1024
+ characters of a field or subfield in order to avoid database errors
+ when inserting or updating authorities with long fields.
+
+ Include release note and regression test.
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+ Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+2 2 Open-ILS/src/sql/Pg/011.schema.authority.sql
+21 0 Open-ILS/src/sql/Pg/t/regress/lp1922567-test-asset-full-rec-indexes.pg
+12 0 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.authority-full-rec-value-index.sql
+17 0 docs/RELEASE_NOTES_NEXT/Cataloging/authority-full-rec-value-index.adoc
+ create mode 100644 Open-ILS/src/sql/Pg/t/regress/lp1922567-test-asset-full-rec-indexes.pg
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.authority-full-rec-value-index.sql
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/authority-full-rec-value-index.adoc
+
+commit d5e4c5e34ab579d5374be82666b996d624260195
+Author: Jason Stephenson <jason@sigio.com>
+Date: Mon Sep 27 13:39:41 2021 -0400
+
+ Lp 1826759: Stamping Upgrade Script
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{XXXX.data.lp1826759.items_out_typo.sql => 1302.data.lp1826759_items_out_typo.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.lp1826759.items_out_typo.sql => 1302.data.lp1826759_items_out_typo.sql} (96%)
+
+commit 7599a89f95b7e5e4a1b9af63991d096062abc5da
+Author: Jason Stephenson <jason@sigio.com>
+Date: Mon Sep 27 13:32:41 2021 -0400
+
+ Lp 1826759: Fix Database Upgrade Script
+
+ Remove 2 extraneous updates, add a blank line between the remaining
+ updates, and add a placeholder the upgrade_deps_block_check().
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+4 10 Open-ILS/src/sql/Pg/upgrade/XXXX.data.lp1826759.items_out_typo.sql
+
+commit e2db1fb80955e1ec8b8d8b5bc9da96a7b3f52193
+Author: Shula Link <slink@gchrl.org>
+Date: Thu Mar 18 10:27:02 2021 -0400
+
+ Lp 1826759: Spelling correction: oustanding to outstanding
+
+ Correct the spelling of "oustanding" to "outstanding" in the
+ descriptions of 3 config.org_unit_setting_type entries:
+
+ * ui.circ.items_out.longoverdue
+ * ui.circ.items_out.lost
+ * ui.circ.items_out.claimsreturned
+
+ Signed-off-by: Shula Link <slink@gchrl.org>
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+3 3 Open-ILS/src/sql/Pg/950.data.seed-values.sql
+56 0 Open-ILS/src/sql/Pg/upgrade/XXXX.data.lp1826759.items_out_typo.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.lp1826759.items_out_typo.sql
+
+commit ef232c6ffff6dff66714bad30040b18084861be3
+Author: Jason Stephenson <jason@sigio.com>
+Date: Tue Sep 7 14:37:54 2021 -0400
+
+ Lp 1942920: Show Legacy/Not Dated for Legacy Circs
+
+ When legacy circ counts are displayed in the AngularJS client, the
+ year shows up as -1. This patch attempts to replace -1 with a
+ translatable string: "Legacy/Not Dated" as was used in the XUL staff
+ client.
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+
+1 1 Open-ILS/src/templates/staff/cat/item/t_summary_pane.tt2
+
+commit 9154fd988ab8ef53107aa37ab55ea251ed65a9b0
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Thu Sep 23 16:11:42 2021 -0400
+
+ LP#1944765: enable the Apache module mod_headers
+
+ This patch enables mod_headers for Debian Stretch and Buster
+ and Ubuntu Bionic and Focal during installation. Without
+ mod_headers, the Angular staff client application can have
+ its index page cached for 24 hours on a stock system, meaning
+ that browsers will not consistently fetch the updated app
+ after an upgrade.
+
+ This patch does not change the Fedora Makefile as mod_headers
+ is enabled by default on RHEL-like distributions.
+
+ UPGRADE NOTES
+ -------------
+ Existing Evergreen systems on Debian and Ubuntu should
+ do the following to ensure that mod_headers is active:
+
+ sudo a2enmod headers
+ sudo systemctl restart apache2
+
+ To test
+ -------
+ [1] Perform a fresh installation of Evergreen on Stretch, Buster,
+ Bionic, or Focal.
+ [2] Verify that mod_headers is enabled.
+ [3] (Optional) Fetch the Angular staff client index page, e.g.,
+ /eg2/staff, and verify that the response headers call for
+ not caching it.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+ Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+1 0 Open-ILS/src/extras/install/Makefile.debian-buster
+1 0 Open-ILS/src/extras/install/Makefile.debian-stretch
+1 0 Open-ILS/src/extras/install/Makefile.ubuntu-bionic
+1 0 Open-ILS/src/extras/install/Makefile.ubuntu-xenial
+
+commit 47227bcbd30f23acd355c40f969fe2e72ea77ed4
+Author: Shula Link <slink@gchrl.org>
+Date: Tue Jul 13 10:16:39 2021 -0400
+
+ LP1834258 Replace Javascript with Placeholder Attribute
+
+ onfocus/onblur javascript replaced with placeholder="[% seed %]" in
+ Open-ILS/src/templates/kpac/getit.tt2 and
+ Open-ILS/src/templates/kpac/parts/searchbox.tt2
+
+ Signed-off-by: Shula Link <slink@gchrl.org>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+1 3 Open-ILS/src/templates/kpac/getit.tt2
+1 3 Open-ILS/src/templates/kpac/parts/searchbox.tt2
+
+commit 8d803b67c74b6386c3c740f05c6ac3693341b0e5
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Mon Aug 2 16:30:21 2021 -0400
+
+ LP1938729 Cache "cascade" setting values
+
+ Cache values retrieved from 'open-ils.actor.settings.retrieve' lookups
+ in IndexedDB, similar to to org unit setting lookups, to reduce the need
+ for so many API calls for settings retrieval.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+87 24 Open-ILS/src/eg2/src/app/core/server-store.service.ts
+2 1 Open-ILS/src/eg2/src/app/staff/login.component.ts
+
+commit b00a79420b87249f09cc92122ab4398f00cf8d5f
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date: Mon Sep 20 18:12:47 2021 -0400
+
+ LP1909144 BooPAC Login Form Tabbing
+
+ This change places the cursor in the user name field and adjusts the order
+ of the elements so that tabbing out of the user name field comes to the
+ password field next.
+
+ Note that this modifies both the login modal and the embedded login form.
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+7 0 Open-ILS/src/templates-bootstrap/opac/parts/base.tt2
+43 38 Open-ILS/src/templates-bootstrap/opac/parts/login/form.tt2
+36 27 Open-ILS/src/templates-bootstrap/opac/parts/login/login_modal.tt2
+
+commit aacf6e4e5551f1fd220d49483675daa23c69809e
+Author: Josh Stompro <stompro@stompro.org>
+Date: Thu Apr 15 08:37:05 2021 -0500
+
+ LP#1924562 - pingest.pl help typo for --max-duration
+
+ In the help command example the argument --duration is used but
+ --max-duration is the correct command.
+
+ Signed-off-by: Josh Stompro <stompro@stompro.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+1 1 Open-ILS/src/support-scripts/pingest.pl
+
+commit 1488acc6296fce080defde0eec000fef00e34654
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Mon Jan 11 10:59:54 2021 -0500
+
+ LP1911023 Batch hold cancel refreshes before completion
+
+ Ensure all hold cancelation promises complete before reporting the
+ results back to the caller. Issue was result of thinko in the code
+ that failed to relay one of the promises in the chain, so it reported
+ promise completion prematurely.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+1 1 Open-ILS/src/eg2/src/app/staff/share/holds/cancel-dialog.component.ts
+
+commit 856da80d4748f7155a49935231b3ecaeaefb848e
+Author: Jason Stephenson <jason@sigio.com>
+Date: Thu Oct 15 09:24:28 2020 -0400
+
+ Lp 1899974: Export PERL5LIB in oils_ctl.sh
+
+ A change in Perl release 5.26.0 necessitates that the SIP_DIR variable
+ (default value "/opt/SIPServer") be exported to the environment in
+ oils_ctl.sh when attempting to start SIPServer. This change affects
+ Ubuntu 18.04 (Bionic Beaver) and Debian 10 (Buster) and any future
+ releases.
+
+ To verify the bug:
+
+ 1. Install OpenSRF, Evergreen, and SIPServer on an affected O/S.
+ 2. Start OpenSRF service.
+ 3. Start SIPServer via oils_ctl.sh:
+ oils_ctl.sh -a start_sip
+ 4. Notice the "Starting OILS SIP Server" message is printed with no
+ indication of failure.
+ 5. Verify that the PID file exists: /openils/var/run/oils_sip.pid
+ 6. Verify that no SIPServer processes are actually running:
+ pgrep -af SIPServer
+ The above should produce no output.
+
+ To test this patch:
+
+ 1. Apply this patch and install oils_ctl.sh to /openils/bin/.
+ 2. Assuming you have run the previous steps, delete the PID file:
+ rm /openils/var/run/oils_sip.pid
+ 3. Start SIPServer via oils_ctl.sh:
+ oils_ctl.sh -a start_sip
+ 4. Notice the "Starting OILS SIP Server" message is printed.
+ 5. Verify that the PID file exists: /openils/var/run/oils_sip.pid
+ 6. `pgrep -af SIPServer` should produce output.
+
+ It is safe to apply this patch on an unaffected O/S. Explicitly
+ adding SIP_DIR to PERL5LIB will have no detrimental effect on any O/S
+ currently supported by Evergreen.
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+7 0 Open-ILS/examples/oils_ctl.sh
+
+commit a47afea080e3ea7f93ef6c64f7f06e01d009650d
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Wed Aug 25 18:21:03 2021 -0400
+
+ LP#1928275: fix the Angular "Copy Queue To Bucket"
+
+ Similar to bug 1934184, a blank routerLink on an anchor no longer
+ causes an ngbModal to open via a click handler.
+
+ To test
+ -------
+ [1] Create a MARC import bib queue that has at least one imported
+ record it.
+ [2] Click the "Copy Queue To Bucket" link from the queue inspection page
+ and observe that nothing happens.
+ [3] Apply the patch and repeat step 2. This time, the add-to-bucket dialog
+ should appear.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+ Signed-off-by: Mary Llewellyn <mllewell@biblio.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+1 1 Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue.component.html
+
+commit 76ba035a0fcd14314ebe15ff346ead557d361f2c
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Mon Sep 20 11:55:00 2021 -0400
+
+ LP1924621 Place Hold For shows pref name
+
+ In the staff catalog banner which displays when a hold is being placed
+ for a pre-selected patron.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+2 1 Open-ILS/src/eg2/src/app/staff/catalog/catalog.component.html
+
+commit d836ec4e2ecfc546313ab55138c5b629c46c7d16
+Author: Garry Collum <gcollum@gmail.com>
+Date: Thu Apr 15 19:39:56 2021 -0400
+
+ LP1924621 Staff catalog place hold screen preferred name
+
+ Displays the preferred first or last name on the place holds screen,
+ if a patron barcode is entered.
+
+ To test.
+ 1. Set up a borrower with a preferred first name, and one with a
+ preferred last name, and one with both.
+ 2. Use the catalog place hold screen to search for these borrowers
+ and notice that the preferred names, if available, are displayed.
+
+ * note newline added by Bill to break up wide column.
+
+ Signed-off-by: Garry Collum <gcollum@gmail.com>
+ Signed-off-by: Mary Llewellyn <mllewell@biblio.org>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Gina Monti <gmonti@biblio.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+2 1 Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
+
+commit 5fe7ebef196e68591af9848fdd680e047cf093f3
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Wed May 12 11:46:01 2021 -0400
+
+ LP1941764 Import from queue propagate form inputs
+
+ When importing records from an existing Vandelay queue, ensure the
+ selected queue, its match set, its match bucket, and its holdings import
+ profile are propagated into the import form.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Christine Morgan <cmorgan@noblenet.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+2 0 Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.html
+48 8 Open-ILS/src/eg2/src/app/staff/cat/vandelay/import.component.ts
+
+commit c7488290c5d81b9d4c5fc8444cd80b0c2fe1f98f
+Author: Jason Boyer <JBoyer@equinoxOLI.org>
+Date: Wed Sep 22 13:21:13 2021 -0400
+
+ LP1920253: Stamp Upgrade Script
+
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{XXXX.data.carousel_ws_settings.sql => 1294.data.carousel_ws_settings.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.carousel_ws_settings.sql => 1294.data.carousel_ws_settings.sql} (89%)
+
+commit 6657126dfc3214eb043f21527743d5187e0d89a5
+Author: Michele <mmorgan@noblenet.org>
+Date: Fri Mar 19 18:21:26 2021 -0400
+
+ LP1920253 Add missing carousel workstation setting types
+
+ Adds ws setting types for the following pages:
+
+ Carousels Visible at Library Configuration (eg.grid.admin.local.container.carousel_org_unit)
+ Carousels Configuration (eg.grid.admin.container.carousel)
+ Carousel Types Configuration (eg.grid.admin.server.config.carousel_type)
+
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Tiffany Little <tlittle@georgialibraries.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+26 0 Open-ILS/src/sql/Pg/950.data.seed-values.sql
+29 0 Open-ILS/src/sql/Pg/upgrade/XXXX.data.carousel_ws_settings.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.carousel_ws_settings.sql
+
+commit 9d0694e8d2e0be52b9b402fb05c25b5a8ace4478
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Thu Aug 5 17:55:18 2021 -0400
+
+ LP#1844121: prevent staff login by expired barcode
+
+ open-ils.auth.authenticate.init accepts an identifier as its
+ sole parameter, then determines whether it looks like a
+ username or barcode and retrieves the patron's password
+ salt as the seed accordingly.
+
+ open-ils.auth.authenticate.complete can accept the identifier
+ via the 'identifier', 'username', or 'barcode' keys, but the
+ key used does not need to match how .init found the patron.
+
+ As a consequence, the .init/.complete dance can retrieve the
+ patron by barcode but handle the barcode value as if it were
+ a username, thereby bypassing the check of whether the barcode
+ was inactive. In particular, the AngularJS staff client login
+ process does this, meaning that staff members can log in to the
+ staff client via the AngularJS form using an expired barcode.
+
+ This is not good. The OPAC explicitly blocks logging in using an
+ inactive barcode because it checks the identifier type and sets
+ the key passed to .complete accordingly. The Angular staff login
+ page also prevents logging in using an inactive barcode because
+ (a) it uses open-ils.auth.login, which doesn't have the same
+ problem and (b) it forces the identifier to be marked as a user
+ name regardless.
+
+ NOTE: this means that the Angular staff login form prevents staff
+ from logging in via barcode, which potentially is a regression as
+ compared to the AngularJS side (or, alternatively, is providing
+ additional necessary strictness).
+
+ This patch avoids the problem by having .complete inspect the
+ cached seed created by .init to determine how the user was ultimately
+ found.
+
+ Some alternative approaches that were rejected include:
+
+ [1] Having AngularJS just mirror Angular. Problem: if some staff
+ users are used to using their barcode to log in, doing
+ this would cause an immediate problem. I note that because
+ the staff interface URL is commonly expressed as
+ https://library.example/eg/staff, is currently far more common
+ for the staff interface to be logged into via the AngularJS
+ form rather than the Angular one.
+ [2] Having AngularJS use open-ils.auth.login, but make it and
+ Angular use 'identifier' as the key rather than 'username'.
+ Problem: while this would have the desired effect if you
+ only use native authentication, if you're using open-ils.auth_proxy,
+ it won't work - open-ils.auth_proxy.login doesn't recognize an
+ 'identifier' parameter. While that could be changed, it
+ is more invasive.
+
+ To test
+ -------
+ [1] Set up a staff user that has a username, an active barcode,
+ and an inactive barcode.
+ [2] Log in to the AngularJS staff interface (/eg/staff) using
+ the username, the active barcode, and the inactive one.
+ [3] Note that you are permitted to log in with all three identifiers.
+ [4] Apply the patch and repeat step 2.
+ [5] This time, logging in using the inactive barcode should
+ fail.
+ [6] Verify that other login types continue to work as expected:
+ - Angular staff login form
+ - OPAC
+ - SIP2 terminal login
+ - SIP2 user authentication
+ - operator change (Angular and AngularJS)
+ - Web-based self-check
+ [7] Extra credit: test logging in via open-ils.auth_proxy with
+ it falling back to native authentication.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+ Signed-off-by: Shula Link <slink@gchrl.org>
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+20 1 Open-ILS/src/c-apps/oils_auth.c
+
+commit 90679ae6c2cebe91a6a32d1bfc0799457b7b9ecf
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date: Fri Jun 18 18:12:08 2021 -0400
+
+ LP1904754 Former precat still displays precat info
+
+ This fixes a display issue where the precat title and author
+ were still displaying once the record was no longer a precat,
+ which effectively duplicated the title and author.
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+3 8 Open-ILS/src/templates/staff/cat/item/t_list.tt2
+1 1 Open-ILS/src/templates/staff/cat/item/t_summary_pane.tt2
+
+commit 29861c5239508472da6b051947aa53b310b06744
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Fri Dec 4 11:17:51 2020 -0500
+
+ LP#1916949: combobox: asyncSupportsEmptyTermClick fix
+
+ This is a backport of a patch that was included as part
+ of LP#1904244.
+
+ Fixes situation where combobox would fetch the needed entries
+ in async mode, but fail to open the drop-down.
+
+ This includes code originally written by Bill Erickson with
+ additions by Galen Charlton to insure that static data sources
+ would continue to work.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+ Signed-off-by: Ruth Frasur <rfrasur@library.in.gov>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+8 4 Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
+
+commit 673a7f4ba5f2fc465626b9f23f3cd65f38c55eb5
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Tue Jul 27 14:04:03 2021 -0400
+
+ LP1903357 Angstcat Hold Activate Date Validation
+
+ Prevent setting activation dates in the past when placing holds in the
+ Angular Staff Catalog.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Josh Stompro <stompro@stompro.org>
+
+14 4 Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
+17 2 Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.ts
+
+commit ffa49651d5554b31ce09a0514652b30caf596f48
+Author: Adam Bowling <abowling@emeralddata.net>
+Date: Fri Jul 23 16:00:35 2021 -0400
+
+ LP1937875: Remove GitHub reference from package.js
+
+ Removes the call to GitHub (required under legacy circumstances),
+ since it can cause some machines lacking SSH keys for GitHub to
+ fail when "npm install" is run for the AngularJS web client.
+
+ Signed-off-by: Adam Bowling <abowling@emeralddata.net>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+1 1 Open-ILS/web/js/ui/default/staff/package.json
+
+commit ce7f03cb6de139da639b93d00a28ff4b05ccb566
+Author: Dan Briem <dbriem@wlsmail.org>
+Date: Wed Mar 3 16:06:50 2021 -0500
+
+ LP#1917338 Angular: Holdings view column picker missing OPAC visible?
+
+ Adds OPAC visible column to holdings grid in the Angular catalog.
+
+ Signed-off-by: Dan Briem <dbriem@wlsmail.org>
+ Signed-off-by: Jennifer Pringle <jennifer.pringle@bc.libraries.coop>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+3 0 Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
+
+commit 20a008851c18356101d95ebf322f44396e4a923c
+Author: Jason Boyer <JBoyer@equinoxOLI.org>
+Date: Fri Aug 20 14:00:25 2021 -0400
+
+ LP1908614: Show the Age Hold Protection name in the staff catalog
+
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+6 1 Open-ILS/src/eg2/src/app/staff/catalog/record/copies.component.html
+7 1 Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm
+
+commit e6c0650abb2bb961e98018655d8380e719d741a6
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date: Wed Jul 21 15:43:05 2021 -0400
+
+ LP1786971 z39.50 incorporate Bill's changes
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Mary Llewellyn <mllewell@biblio.org>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+1 11 Open-ILS/web/js/ui/default/staff/cat/z3950/app.js
+
+commit d0a596eb0804a9e393502f8967a970c490434a26
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Tue Jul 20 10:59:42 2021 -0400
+
+ LP1786971 TCN fetching and maintenance tweaks
+
+ Avoid storing the TCN value in local storage since it's not needed
+ outside the Z app.
+
+ Wait for async TCN lookups to complete before using the value.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Mary Llewellyn <mllewell@biblio.org>
+
+44 11 Open-ILS/web/js/ui/default/staff/cat/z3950/app.js
+
+commit 057401d6a8c16f23d093ea913ca6cbeb5fee776d
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date: Thu Jul 15 16:27:21 2021 -0400
+
+ LP1786971 z39.50 add TCN to overlay popups as well
+
+ Displays TCN on the Overlay modal and on the confirmation popup
+ that displays if the live overlay target has changed.
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Mary Llewellyn <mllewell@biblio.org>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+1 1 Open-ILS/src/templates/staff/cat/share/z3950_strings.tt2
+4 1 Open-ILS/src/templates/staff/cat/z3950/t_overlay.tt2
+9 1 Open-ILS/web/js/ui/default/staff/cat/z3950/app.js
+
+commit 4cc6e45bef0c67d39b70152e0c32e0485d493eb2
+Author: Jessica Woolford <jwoolford@biblio.org>
+Date: Wed Mar 17 16:31:30 2021 -0400
+
+ LP1786971 z39.50 using TCN instead of ID
+
+ This patch switches the target to overlays to the bib ID instead of the
+ TCN. This allows overlays to work for sites where TCN and bib ID are not
+ the same.
+
+ Signed-off-by: Jessica Woolford <jwoolford@biblio.org>
+
+ LP1786971 Z39.50 TCN-Bib ID display and wording
+
+ This adds the TCN to the Z39.50 interface when a record is
+ marked for overlay and the TCN does not match the Bib ID.
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Mary Llewellyn <mllewell@biblio.org>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+5 2 Open-ILS/src/templates/staff/cat/z3950/t_list.tt2
+1 1 Open-ILS/src/templates/staff/cat/z3950/t_overlay.tt2
+22 4 Open-ILS/web/js/ui/default/staff/cat/z3950/app.js
+
+commit bd2c7935a25e7f70b1161b6f03788867b75c3550
+Author: Tiffany Little <tlittle@georgialibraries.org>
+Date: Fri Jun 18 16:00:32 2021 -0400
+
+ LP1906826: Changes column header for purchase order in line item search
+
+ Signed-off-by: Tiffany Little <tlittle@georgialibraries.org>
+ Signed-off-by: Ruth Frasur <rfrasur@library.in.gov>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+1 1 Open-ILS/src/eg2/src/app/staff/acq/search/lineitem-results.component.html
+
+commit aae63bb1208c9a3db9c30a9b634ed2d56ba60835
+Author: Josh Stompro <stompro@stompro.org>
+Date: Tue Mar 10 11:38:48 2020 -0500
+
+ LP1866667 - Clear current_copy when pickup_lib is changed and waiting for capture
+
+ When a user changes the pickup lib and a retarget is triggered
+ the currently targeted copy gets excluded if there are other
+ available copies.
+
+ This can cause delays and confusion since the new copy may
+ not be the best choice.
+
+ This change clears the current_copy before the retarget in that
+ situation.
+
+ Testing setup.
+
+ Find/create a title with items that looks like:
+
+ System X ->
+ Branch A -> Holdable item
+ Branch B ->
+ System Y
+ Branch C -> Holdable item
+ Branch D -> Holdable item
+
+ Place a hold with a pickup location of Branch B, which should target
+ the closest item at Branch A
+
+ Then change the pickup location of your hold to Branch A.
+
+ The retarget that happens, should switch the targeted copy to Branch C or D.
+
+ After Change Applied:
+
+ The hold should remain targeted to Branch A after pickup lib is changed
+ to Branch A.
+
+ Signed-off-by: Josh Stompro <stompro@stompro.org>
+ Signed-off-by: Dawn Dale <ddale@georgialibraries.org>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+6 0 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm
+
+commit 961c56a85a46baf974edf4be5bfbb2956c0ae288
+Author: Josh Stompro <stompro@stompro.org>
+Date: Wed Jun 23 14:21:46 2021 -0500
+
+ LP#1821804 - Cloned patron address set to pending
+
+ When cloning a patron record, the address gets set to pending and cannot
+ be fixed until the new patron record is saved.
+
+ The address creation steps for cloned records are a little different if
+ the library setting "Patron Registration: Cloned patrons get address copy" is
+ set, so test with that enabled and disabled. In our system we have that setting
+ enabled.
+
+ The issue is that the values come in as a string like 't' or 'f' and need to be converted
+ to a boolean value. That is done in the normal address loading code, but wasn't in
+ the cloning code.
+
+ I also added in a fix for the city limits flag not getting cloned which seems
+ like an related issue. This seems like it was just cosmetic, the city limits
+ does get set when the record is saved, based on the parent records address.
+
+ Testing Plan:
+
+ Before change:
+
+ 1. Enable "Cloned patrons get address copy" setting.
+ 2. Open up a patron record that has a valid non pending address with city limits checked.
+ 3. Save and Clone
+ 4. Notice that the address in the new cloned record says pending.
+ 5. Notice that the city limits checkbox isn't checked.
+
+ After change applied:
+
+ 1. Enable "Cloned patrons get address copy" setting.
+ 2. Open up a patron record that has a valid non pending address with city limits checked.
+ 3. Save and Clone
+ 4. Notice that the address in the new cloned record doesn't say pending.
+ 5. Notice that the city limits checkbox is checked.
+
+ Signed-off-by: Josh Stompro <stompro@stompro.org>
+ Signed-off-by: Ruth Frasur <rfrasur@library.in.gov>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+2 0 Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
+
+commit d960a96a21f84d1fe23c8e3984bfc8358779c843
+Author: Jason Etheridge <jason@EquinoxInitiative.org>
+Date: Mon Jan 13 12:38:53 2020 -0500
+
+ lp1859502 fix A/T ApplyPatronPenalty reactor
+
+ To test this, you could create the following A/T definition:
+
+ Owning Library: CONS
+ Name: test lp1859502
+ Hook: penalty.PATRON_EXCEEDS_FINES
+ Enabled: True
+ Processing Delay: 00:00:00
+ Processing Group Context Field: usr
+ Reactor: ApplyPatronPenalty
+ Validator: NOOP_TRUE
+ Max Event Validity Delay: 1 day
+ Template: test message
+
+ with environment:
+
+ Field Path: usr
+ Label: user
+
+ Field Path: usr.home_ou
+ Label: context_org
+
+ with event params:
+
+ Parameter Name: standing_penalty
+ Parameter Value: ALERT_NOTE
+
+ Then bill a test patron for $100 and run something like:
+
+ /openils/bin/action_trigger_runner.pl --osrf-config /openils/conf/opensrf_core.xml --run-pending
+
+ Without the patch, you'll get something like this in osrfsys.log:
+
+ ApplyPatronPenalty: missing parameters
+
+ And no ALERT_NOTE penalty. With the patch you should see a "test message" alert note
+ when reloading the patron.
+
+ Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+ Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+3 3 Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor/ApplyPatronPenalty.pm
+
+commit 767d6118adefa6aa203944562a31ef84895f032a
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date: Thu Aug 20 18:37:28 2020 -0400
+
+ LP1752356 Offline Block List Download Date
+
+ Amended previous commits by adding the download block list date to
+ the other reasons why an account could show up on the block list.
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Mike Risher <mrisher@catalyte.io>
+ Signed-off-by: Jason Boyer <jboyer@equinoxOLI.org>
+
+4 4 Open-ILS/src/templates/staff/offline-interface.tt2
+
+commit 9fb5da20601bb340f64e4a65e05be7e211133727
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Wed Jul 3 14:34:39 2019 -0400
+
+ LP1752356 Offline expired patrons download date additions
+
+ Modify wording to clarify the date displayed is that of the block list
+ download and not necessarily the date the patron was flagged expired.
+
+ Avoid console errors when the file download date is not known -- edge
+ case where the code is updated but the block list was not updated in the
+ meantime.
+
+ Clean up some debug logging.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Jason Boyer <jboyer@equinoxOLI.org>
+
+1 1 Open-ILS/src/templates/staff/offline-interface.tt2
+8 5 Open-ILS/web/js/ui/default/staff/offline.js
+
+commit 50c87f5f8d689bba5832c11ee54da9b899571c9d
+Author: Mike Risher <mrisher@catalyte.io>
+Date: Mon Jul 1 15:56:17 2019 +0000
+
+ LP1752356 Offline block list date addition
+
+ In offline mode when checking out for an expired patron, we changed
+ the error message so that the last date the blocklist was downloaded
+ is displayed along with the patron barcode
+
+ Signed-off-by: Mike Risher <mrisher@catalyte.io>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Jason Boyer <jboyer@equinoxOLI.org>
+
+2 2 Open-ILS/src/templates/staff/offline-interface.tt2
+37 18 Open-ILS/web/js/ui/default/staff/offline.js
+21 0 Open-ILS/web/js/ui/default/staff/services/lovefield.js
+
+commit 0fe988f8319a68c751a4376d70d2163ea9480515
+Author: Mike Rylander <mrylander@gmail.com>
+Date: Tue Apr 9 11:30:15 2019 -0400
+
+ LP#1823983: repeat_delay check removes event definition id filter
+
+ This bug has existed since the repeat_delay feature was added, but likely only
+ rarely was triggered because most events don't have a repeat_delay, and those
+ that do don't interact with the same target. However, as more repeatable event
+ definitions are created, inappropriate interaction becomes more likely.
+
+ In this commit we avoid overwriting the whole join condition clause, which
+ already contains an event definition id filter and needs to retain it.
+
+ Included is an unrelated change that uses the new-ish form of
+ interval_to_seconds that avoids DST boundary shifting issues by passing a
+ context DateTime object as the second parameter.
+
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+3 3 Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger.pm
+
+commit 4542b7ab3ce164e1dd96f45c74761c45b574b450
+Author: Garry Collum <gcollum@gmail.com>
+Date: Wed Apr 28 15:26:39 2021 -0400
+
+ LP1809157 SMS Carriers display not in alphabetical order
+
+ This alphabetizes the carrier display when editing the sms carrier in an existing hold.
+
+ It also adds the region to the name to make the interface consistent with other interfaces.
+
+ To Test:
+
+ 1. Enable SMS options in the Library Settings.
+ 2. Place a hold for a patron.
+ 3. Use the Edit Notifications Settings. Enter an SMS number, if needed.
+ 4. Drop-down the Carrier list - the list is not in alphabetical order.
+ 5. Apply the patch and repeat 3-4.
+
+ Signed-off-by: Garry Collum <gcollum@gmail.com>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/templates/staff/circ/share/t_hold_notification_prefs.tt2
+
+commit 62554fd8a46d697b98bf085c7262165ea8d92d2a
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date: Mon Aug 23 11:24:05 2021 -0700
+
+ LP#1932051: serialize adding items to bucket from Item Status
+
+ Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+ Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+7 8 Open-ILS/web/js/ui/default/staff/circ/services/item.js
+
+commit bf86e0828cf76cf695d28ce497fad7cc841d21d1
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date: Tue Jun 15 11:59:48 2021 -0400
+
+ LP#1932051: Batch calls for add items to bucket
+
+ Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+ Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+
+8 7 Open-ILS/web/js/ui/default/staff/cat/bucket/copy/app.js
+
+commit 97c391d55ee86dc97e8a328e9bbc082ce840884f
+Author: Mike Rylander <mrylander@gmail.com>
+Date: Fri Sep 3 10:31:49 2021 -0400
+
+ Revert "lp1908439 Auto-override enhancment"
+
+ This reverts commit c84ae0f3a845914243dfabfe21bcc5ff867621a7.
+
+ This is a feature rather than a bug fix, and should not have gone into
+ 3.6.
+
+0 1 Open-ILS/src/templates/staff/base_js.tt2
+12 22 Open-ILS/src/templates/staff/circ/share/t_event_override_dialog.tt2
+2 6 Open-ILS/web/js/ui/default/staff/circ/patron/app.js
+2 26 Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
+91 123 Open-ILS/web/js/ui/default/staff/circ/services/circ.js
+2 18 Open-ILS/web/js/ui/default/staff/services/op_change.js
+0 3 docs/RELEASE_NOTES_NEXT/Circulation/override-dialogs.adoc
+ delete mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/override-dialogs.adoc
+
+commit a48f7469245d8f49ed4c4bd9b4e77e2042622325
+Author: Dan Briem <dbriem@wlsmail.org>
+Date: Thu Aug 26 14:52:51 2021 -0400
+
+ LP#1743611 Circ History by Year Info
+
+ Adds an info button next to Total Circs in the AngularJS staff
+ client Item Status screen. Clicking the button displays a
+ popover list of total circs by year.
+
+ Signed-off-by: Dan Briem <dbriem@wlsmail.org>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: John Amundson <jamundson@cwmars.org>
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+17 1 Open-ILS/src/templates/staff/cat/item/t_summary_pane.tt2
+4 1 Open-ILS/src/templates/staff/css/style.css.tt2
+25 27 Open-ILS/web/js/ui/default/staff/cat/item/app.js
+
+commit e05a42cd5b8204d8ff0fb30dd37b8cfc3d2eec38
+Author: Jason Boyer <JBoyer@equinoxOLI.org>
+Date: Fri Aug 27 15:56:10 2021 -0400
+
+ LP827356: Stamp Ugrade Script
+
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{xxxx.schema.protect_special_ids.sql => 1283.schema.protect_special_ids.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{xxxx.schema.protect_special_ids.sql => 1283.schema.protect_special_ids.sql} (99%)
+
+commit 9f221663122088b8a9c9d68f52a975f43d03fb62
+Author: Rogan Hamby <rogan.hamby@gmail.com>
+Date: Thu Mar 18 13:11:00 2021 +0000
+
+ lp827356 new rules protect bre -1, acn -1 and acl 1 as well as marc editing buttons disabled
+
+ Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+ Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+3 3 Open-ILS/src/eg2/src/app/staff/share/marc-edit/editor.component.html
+2 0 Open-ILS/src/sql/Pg/040.schema.asset.sql
+4 0 Open-ILS/src/sql/Pg/800.fkeys.sql
+5 0 Open-ILS/src/sql/Pg/999.functions.global.sql
+291 0 Open-ILS/src/sql/Pg/upgrade/xxxx.schema.protect_special_ids.sql
+6 0 docs/RELEASE_NOTES_NEXT/Cataloging/bre_negative_one.adoc
+1 0 docs/RELEASE_NOTES_NEXT/miscellaneous.adoc
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/xxxx.schema.protect_special_ids.sql
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/bre_negative_one.adoc
+ create mode 100644 docs/RELEASE_NOTES_NEXT/miscellaneous.adoc
+
+commit c84ae0f3a845914243dfabfe21bcc5ff867621a7
+Author: Jason Etheridge <jason@EquinoxInitiative.org>
+Date: Tue Feb 9 09:42:06 2021 -0500
+
+ lp1908439 Auto-override enhancment
+
+ This reworks the override action dialogs in the patron display for Check
+ Out and Items Out, and in the Circulation -> Renew Items interface. It
+ exposes the auto-override behavior as checkboxes giving staff more fine
+ grained control over which events are auto-forced or skipped upon
+ subsequent encounters. It also changes the Cancel action for batch
+ renewals to abort the remaining renewals in the batch, and makes it so
+ that new authorization credentials provided during such a batch will be
+ treated as an operator change for the entire batch. We also fix an
+ existing bug where events marked as already encountered for
+ auto-override could leak into other patron contexts via Patron Search.
+
+ Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+1 0 Open-ILS/src/templates/staff/base_js.tt2
+22 12 Open-ILS/src/templates/staff/circ/share/t_event_override_dialog.tt2
+6 2 Open-ILS/web/js/ui/default/staff/circ/patron/app.js
+26 2 Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
+123 91 Open-ILS/web/js/ui/default/staff/circ/services/circ.js
+18 2 Open-ILS/web/js/ui/default/staff/services/op_change.js
+3 0 docs/RELEASE_NOTES_NEXT/Circulation/override-dialogs.adoc
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/override-dialogs.adoc
+
+commit af88345abf290a1ab55fb21a89639ffd55037fa8
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Fri Jul 23 10:15:13 2021 -0700
+
+ LP1906058: Course-term map interface only allow reasonable mappings
+
+ Different libraries will use different sets of course terms. In an
+ academic library context, for example, a consortium may include
+ libraries with very different start and end dates to their terms/semesters,
+ different numbers of terms/year, etc.
+
+ This commit changes the interface to only allow users to associate
+ a course with a term from the same library or one of its ancestors.
+
+ To test:
+ 1. Create many courses and course terms and many different OUs.
+ 2. On the course list, click "Terms taught". Associate some courses
+ and course terms. Make sure that you aren't able to associate your
+ course with any course terms that would not be reasonable for the
+ course's library.
+ 3. Edit a course, and choose the Course terms tab. Continue to associate
+ courses and terms, and make sure the mappings are reasonable.
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Beth Willis <willis@noblenet.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 4 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-page.component.html
+1 26 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-page.component.ts
+3 1 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-reserves.module.ts
+24 0 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-term-map-grid.component.html
+98 0 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-term-map-grid.component.ts
+9 2 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-term-map.component.ts
+ create mode 100644 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-term-map-grid.component.html
+ create mode 100644 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-term-map-grid.component.ts
+
+commit c08de4fea5e00db2d9916bd7f9fc8480e55e925c
+Author: Michele Morgan <mmorgan@noblenet.org>
+Date: Tue Mar 30 20:16:59 2021 +0000
+
+ LP#1917809 Create Course: Owning Library Default
+
+ Changes the default for the owning library in the Create Course modal to the logged
+ in user's workstation org unit instead of the consortium.
+
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Christine Burns <christine.burns@bc.libraries.coop>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+3 1 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-list.component.ts
+
+commit fecf1eae8da0d69d78d2a12431805325e333858d
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Sun Aug 15 11:27:41 2021 -0400
+
+ LP#1905068: (follow-up) never initialize an OU ID to 1
+
+ This change has no effect on behavior, as defaultOuId's
+ initialization value always gets replaced with the user's
+ WS OU or the org root when the contructor is run, but
+ avoids any implication during code-reading that the top
+ of the OU tree can be assumed to have ID 1.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-list.component.ts
+
+commit aa46448b329b21da3ef19596d4bdeadde387d9ae
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Wed Jun 23 16:59:51 2021 -0700
+
+ LP1905068: Add org-family-select to course list
+
+ To test:
+
+ 1) Apply this patch
+ 2) Admin > Local admin > Course reserves list
+ 3) Check that the list defaults to courses available
+ at your workstation org unit
+ 4) Check that, when you select ancestors, descendants,
+ or a different org unit, the course list updates
+ accordingly
+ 5) Check that the list only displays org units for
+ which you have the MANAGE_RESERVES permission
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+12 0 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-list.component.html
+14 2 Open-ILS/src/eg2/src/app/staff/admin/local/course-reserves/course-list.component.ts
+
+commit f8c6dc0f2a7d500efe9e108abfa2783a3493cd51
+Author: Jason Stephenson <jason@sigio.com>
+Date: Fri Apr 9 16:31:57 2021 -0400
+
+ LP1923076: Add Perl live test
+
+ Add lp1923076-test-perl-scalar-return.t to the Perl live tests to test
+ a couple of back end calls affected by the changes in this branch.
+ These backend calls are those that are easily testable with Concerto
+ data.
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+103 0 Open-ILS/src/perlmods/live_t/lp1923076-test-perl-scalar-return.t
+ create mode 100755 Open-ILS/src/perlmods/live_t/lp1923076-test-perl-scalar-return.t
+
+commit 3a917b4aa01c9ad2f42ebb06d4a713a63c4d7b1f
+Author: Jason Stephenson <jason@sigio.com>
+Date: Fri Apr 9 13:42:42 2021 -0400
+
+ LP1923976: Remove some dead code
+
+ Remove a block of commented code that was turned up while working on
+ this issue. This is in its own commit to make it easier to revert, if
+ necessary.
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+0 7 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/CDBI.pm
+
+commit 6e674dc106d8ca666c642f4af8e1b4ebb4c33fe2
+Author: Jason Stephenson <jason@sigio.com>
+Date: Fri Apr 9 13:41:40 2021 -0400
+
+ LP1923076: Add cast to int in more places
+
+ Add cast to int of scalar used on arrays in more places where it seems
+ necessary.
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Actor/Container.pm
+1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm
+2 2 Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm
+1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Z3950.pm
+2 2 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/storage.pm
+1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
+1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/container.pm
+
+commit 98fb47cd4d442b6b8f8ed14da22e54ae86df4ff0
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date: Wed Apr 7 19:41:49 2021 -0700
+
+ LP#1923076: ensure length of empty array is treated as a number when retrieving hold counts
+
+ Thanks to Jason Stephenson for suggesting this solution.
+
+ Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+3 3 Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm
+
+commit d6bd3778c9e6c0b9c7cbd6cec2e4b53a39b87924
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Fri Aug 13 08:34:03 2021 -0700
+
+ LP1935693: Improve spacing on the OPAC course materials table
+
+ Signed-off-by; Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Beth Willis <willis@noblenet.org>
+ Signed-off-by: Christine Burns <christine.burns@bc.libraries.coop>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+8 0 Open-ILS/src/templates-bootstrap/opac/css/style.css.tt2
+1 1 Open-ILS/src/templates/opac/parts/course/body.tt2
+
+commit d2336ae1828a53fbcc8b83abd6259d45817d4790
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Mon Jul 12 20:56:01 2021 -0700
+
+ LP1935693: Add circulation modifier to course page
+
+ Also makes some strings extractable for translation that
+ were previously missed.
+
+ To test:
+ 1) Enable the course materials module
+ 2) Add some courses
+ 3) Add some materials to those courses, using a mix of
+ circulation modifiers
+ 4) In the OPAC, use the Course Search to search for
+ your courses
+ 5) Click on the course you created
+ 6) Note that physical items associated with the course
+ display their circulation modifiers in the circulation
+ modifier column.
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Beth Willis <willis@noblenet.org>
+ Signed-off-by: Christine Burns <christine.burns@bc.libraries.coop>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Courses.pm
+13 7 Open-ILS/src/templates/opac/parts/course/body.tt2
+
+commit e6faac489972301e6ab5b49097513b64c2f973f8
+Author: Josh Stompro <stompro@stompro.org>
+Date: Mon Aug 2 08:30:06 2021 -0500
+
+ LP#1938450 - missing pieces slip printer context set to receipt
+
+ Set the missing pieces slip to receipt context so it gets printed
+ to the receipt printer.
+
+ Signed-off-by: Josh Stompro <stompro@stompro.org>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/web/js/ui/default/staff/circ/services/item.js
+
+commit 94561ccb93060fbb756995fe6978722e117887df
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Thu Jul 29 16:02:44 2021 -0400
+
+ LP1910452 Remove staff catalog read-only OPAC Patron View
+
+ This is superseded by a new Patron View button.
+
+ Also removes the underlying component, since it's not longer used
+ anywhere.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Jason Etheridge <jason@EquinoxOLI.org>
+
+0 2 Open-ILS/src/eg2/src/app/staff/catalog/catalog.module.ts
+0 10 Open-ILS/src/eg2/src/app/staff/catalog/record/opac.component.html
+0 47 Open-ILS/src/eg2/src/app/staff/catalog/record/opac.component.ts
+0 6 Open-ILS/src/eg2/src/app/staff/catalog/record/record.component.html
+ delete mode 100644 Open-ILS/src/eg2/src/app/staff/catalog/record/opac.component.html
+ delete mode 100644 Open-ILS/src/eg2/src/app/staff/catalog/record/opac.component.ts
+
+commit 3e2d1b1b235e1d37f36c50f75ee1550589c0f310
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Wed Jul 28 10:17:48 2021 -0400
+
+ LP1910452 Staff catalog Patron View button
+
+ Adds a Patron View button to the Angular staff catalog record detail
+ page which opens the catalog in a new browser tab.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Jason Etheridge <jason@EquinoxOLI.org>
+
+4 0 Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html
+
+commit e064140d752bc4da207e465400b42eeb6914fece
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Tue Jul 13 10:11:29 2021 -0400
+
+ LP#1912852: add jump-on-one-hit support to Angular staff catalog
+
+ This patch add support for the opac.staff.jump_to_details_on_single_hit
+ library setting to the Angular staff catalog.
+
+ To test
+ -------
+ [1] Apply the patch.
+ [2] Ensure that the opac.staff.jump_to_details_on_single_hit setting
+ is off for your workstation.
+ [3] Perform searches using the Angular staff catalog. Verifying that
+ searches that return any number of results display them on the
+ results page.
+ [4] Set the library setting to true and reload the staff catalog.
+ [5] Perform keyword, numeric, and MARC searches using terms that
+ result in a single-record result set. Verify that the interface
+ redirects to the single-record page for that hit.
+ [6] Perform searches that would return zero results. Verify that
+ the results page indicates zero hits fuond.
+ [7] Perform searches that would return more than one result. Verify
+ that the results are displayed on the results page.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+ Signed-off-by: Jason Etheridge <jason@EquinoxOLI.org>
+
+4 0 Open-ILS/src/eg2/src/app/staff/catalog/catalog.service.ts
+4 1 Open-ILS/src/eg2/src/app/staff/catalog/resolver.service.ts
+18 3 Open-ILS/src/eg2/src/app/staff/catalog/result/results.component.ts
+
+commit 6d7e0798c8aff05f1a120c8062f81815e9805e9a
+Author: Josh Stompro <stompro@stompro.org>
+Date: Thu Mar 4 19:09:44 2021 -0600
+
+ LP#1917396 - Staff Curbside Scheduling UTC Issues
+
+ When a staff person tries to schedule curbside appointments
+ after their UTC equivalent time moves to the next day, the
+ timeslots for the next day are shown, and appointments get
+ made for the next day.
+
+ For example, when CST is the local timezone (UTC-6), after 6pm
+ appointments for the current day are scheduled for the next day.
+ Appointments for the next day get scheduled for the day after.
+
+ This happens because toISOString is used to grab the current date,
+ but toISOString always returns UTC time. The date widget will show
+ the correct date, but the time slots will actually be for the next
+ day. This is more noticeable if days have different schedules.
+
+ Another clue is that the time slot selector will show all timeslots for
+ the day, not just the ones that are upcoming.
+
+ Testing Plan:
+
+ 1. Enable curbside for test location, and set org unit hours to
+ be at least through 8pm for open hours.
+
+ 2. Wait until after 4PM (Pacific), 6pm CST, 7PM EST, or
+ change your computer clock.
+
+ 3. Try to schedule an appointment for the current day.
+
+ 4. The appointment should get scheduled for the next day.
+
+ 5. Apply the fix.
+
+ 6. Try to schedule another appointment and see that the correct
+ date gets selected.
+
+ Signed-off-by: Josh Stompro <stompro@stompro.org>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+6 3 Open-ILS/web/js/ui/default/staff/circ/curbside/directives/schedule_pickup.js
+
+commit fcd463082d6b97b017ff8bcc930d1d17b4cedbc6
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Thu Aug 12 18:01:07 2021 -0400
+
+ LP#1802682: stamp DB update
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{XXXX.data.cnal_ous_type.sql => 1279.data.cnal_ous_type.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.cnal_ous_type.sql => 1279.data.cnal_ous_type.sql} (68%)
+
+commit 94ab3ac1326f752a2c65b3fd0c8b9104fbb6a035
+Author: Jason Boyer <JBoyer@library.in.gov>
+Date: Sat Nov 10 17:53:16 2018 -0500
+
+ LP1802682: Use Default Net Access Level OUS
+
+ This branch does two things: makes use of the OUS
+ that determines the default Net Access Level, and
+ also changes the type of the coust entry to make
+ using it more user friendly.
+
+ Signed-off-by: Jason Boyer <JBoyer@library.in.gov>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/950.data.seed-values.sql
+8 0 Open-ILS/src/sql/Pg/upgrade/XXXX.data.cnal_ous_type.sql
+1 0 Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.cnal_ous_type.sql
+
+commit 6546a52dd1316f9f133ebb418a41615b9ecb3acd
+Author: Dan Briem <dbriem@wlsmail.org>
+Date: Fri Jul 30 22:34:26 2021 -0400
+
+ LP#1933381 Notify by SMS requires SMS fields when placing holds
+
+ When placing a hold, if the notification method is set to SMS
+ and no carrier is selected, the hold fails with a generic error.
+
+ This disables the Place Hold(s) button if notify by SMS is
+ selected and the SMS phone number or carrier fields are not set.
+
+ Signed-off-by: Dan Briem <dbriem@wlsmail.org>
+ Signed-off-by: Erica Rohlfs <erica.rohlfs@equinoxOLI.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+4 3 Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.html
+12 0 Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.ts
+
+commit ebf8cbaa29dfb516aff6503ae10a335b380a318d
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date: Thu Jun 24 10:28:41 2021 -0400
+
+ LP1909584 Title for Shared Lists in Bootstrap OPAC
+
+ This displays the title and description for shared lists
+ when viewed in the Bootstrap OPAC.
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Ruth Frasur <rfrasur@library.in.gov>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+10 0 Open-ILS/src/templates-bootstrap/opac/parts/result/table.tt2
+
+commit 7c66c02381cefdc38886b523fc6204c3a5a3b2bb
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date: Wed Jun 30 15:13:36 2021 -0400
+
+ LP1901028 Update seed data for checkout print template
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+2 1 Open-ILS/web/js/ui/default/staff/admin/workstation/app.js
+
+commit 304322171de91ba75cd13e217adfcfc8b95f1f03
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date: Thu Oct 22 18:05:37 2020 -0400
+
+ LP1901028 Print Template for Checkout Missing Fields
+
+ The fields are actually available, but the hints in the template
+ were incorrect. This fixes the hints for call number, owning library
+ name, owning library short name, and circulation modifier.
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+4 4 Open-ILS/src/templates/staff/share/print_templates/t_checkout.tt2
+
+commit 5af1cade54217f9335a5c55d37bed63ed74a71c5
+Author: Garry Collum <gcollum@gmail.com>
+Date: Mon Mar 22 15:09:16 2021 -0400
+
+ LP1920273: improve Bootstrap self registration display
+
+ This patch makes the form in the self-registration screen in the Bootstrap
+ opac a little responsive on smaller devices.
+
+ To test.
+
+ 1. Turn on self-registration in the library settings.
+ 2. Go to the self-registration screen and make the screen as small as possible.
+ 3. Apply the patch.
+ 4. Notice that the form labels and input boxes are now more aesthetic.
+ 5. Create some self-registration requests to make sure the form captures the data.
+
+ Signed-off-by: Garry Collum <gcollum@gmail.com>
+ Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+56 52 Open-ILS/src/templates-bootstrap/opac/register.tt2
+
+commit d70836068c678ec8328a895e907058befcb72414
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Thu Aug 12 17:20:43 2021 -0400
+
+ LP#1926971: (follow-up) update base holds for patron template
+
+ ... to add more information about what is available to the
+ template.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+5 1 Open-ILS/src/templates/staff/share/print_templates/t_holds_for_patron.tt2
+
+commit 74a54307f3d969366ced12bd7b26e5ea3bb22db7
+Author: Jason Etheridge <jason@EquinoxInitiative.org>
+Date: Mon May 3 11:13:08 2021 -0400
+
+ lp1926971 augment holds for patrons print template
+
+ with patron data, to support what the template editor preview is allowing
+
+ Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+ Signed-off-by: Josh Stompro <stompro@stompro.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/web/js/ui/default/staff/circ/patron/holds.js
+
+commit 7592d561c69a9c2fa599064fd96d7ed50e9a57c8
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date: Mon Jun 21 12:11:48 2021 -0400
+
+ LP1933125 Bootstrap OPAC Hold Count Alignment
+
+ This groups and styles the hold count with the available
+ copy count.
+
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Ruth Frasur <rfrasur@library.in.gov>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+18 0 Open-ILS/src/templates-bootstrap/opac/parts/record/copy_counts.tt2
+0 22 Open-ILS/src/templates-bootstrap/opac/parts/record/summary.tt2
+
+commit c3cc45a36c14cca0926b6404c16da2f7d88cb61f
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Tue Aug 3 17:11:42 2021 -0400
+
+ LP1932358 Serialize patron bucket entry batch deletion
+
+ Avoid large sets of parallel patron bucket item delete calls by
+ serialzing the calls so they go one at a time.
+
+ Adds a progress meter to the display during delete.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Josh Stompro <stompro@stompro.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+14 0 Open-ILS/src/templates/staff/circ/patron/bucket/t_view.tt2
+17 4 Open-ILS/web/js/ui/default/staff/circ/patron/bucket/app.js
+
+commit e4903b1e526b9eeafbb435130191fd405dee2afd
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Tue May 25 20:24:12 2021 -0700
+
+ LP1919497: Make the login box translateable
+
+ Thanks to Eva Cerninakova for reporting and identifying the solution!
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+2 2 Open-ILS/src/templates-bootstrap/opac/parts/login/login_modal.tt2
+
+commit 1f0a33dd1aaa49e928122536ac20d6eacad89b56
+Author: Garry Collum <gcollum@gmail.com>
+Date: Thu May 27 13:49:00 2021 -0400
+
+ LP1929839 Load Shared Bucket text error
+
+ Changes the title of the Load Shared Bucket pop-up box from "Load Shared
+ Bucket Bucket by ID" to "Load Shared Bucket by ID". I decided not to
+ change it to "Load Shared Bucket by Bucket ID" since "Bucket ID" is
+ displayed next to the input field.
+
+ This affects all 3 types of buckets: item, record and user.
+
+ Signed-off-by: Garry Collum <gcollum@gmail.com>
+ Signed-off-by: Tiffany Little <tlittle@georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/templates/staff/cat/bucket/record/t_load_shared.tt2
+1 1 Open-ILS/src/templates/staff/cat/bucket/share/t_load_shared.tt2
+1 1 Open-ILS/src/templates/staff/circ/patron/bucket/t_load_shared.tt2
+
+commit 08af3e9363f89858e563ade979019d26fb99ec0d
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Tue Aug 3 16:58:29 2021 -0400
+
+ LP1934184 Vandelay Delete Queue action repair
+
+ Fixes the Queue Details page Delete Queue link. Before it did nothing,
+ now it prompts the user to confirm deletion followed by deleting the
+ queue (when confirmed).
+
+ To test, go to Cataloging => MARC Batch Import/Export => Inspect Queue
+ => Double-click a queue => Click Delete Queue (under Queue Actions) and
+ confirm that the confirmation dialog appears and deletion works.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Christine Morgan <cmorgan@noblenet.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue.component.html
+
+commit 2043df8236fa83496c0fb6190fafd924c0e09837
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Sun Jul 11 15:49:19 2021 -0700
+
+ LP1919483: Fix the queries for secondary admin pages
+
+ To test, go to the following screens, and make sure that their
+ secondary admin pages don't show errors and filter properly.
+
+ * Authority Control Set
+ * Authority Thesaurus
+ * Course list
+ * Hard due dates
+ * MARC import remove fields
+ * MARC Search/Facet fields
+ * Z39.50 servers
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Christine Burns <christine.burns@bc.libraries.coop>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+6 4 Open-ILS/src/eg2/src/app/staff/share/admin-page/admin-page.component.ts
+
+commit 6a45667681bdc018b053567a01c43520a41ad79a
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Fri Aug 6 11:35:49 2021 -0400
+
+ LP#1450519: remove unauthorized access to library setting history
+
+ This patch changes the current Library Settings editor so that
+ it doesn't display the setting history for a setting that the user
+ doesn't have the underlying view permission for. It also removes
+ the coustl IDL class [config.org_unit_setting_type_log] from PCRUD.
+
+ Access to the setting history is now done through a new method,
+ open-ils.actor.org_unit.settings.history.visible.retrieve, which
+ accepts an authtoken and a setting name. If the user has the
+ relevant view permission, setting history entries at all of the
+ OUs that they have the permission at are returned. If the user
+ lacks the permission, an empty array is returned. If the setting
+ has no permission associated with it, all history entries for
+ the setting are returned. The user must have at least STAFF_LOGIN
+ to retrieve any entries at all.
+
+ To test
+ -------
+ [1] As an administrator, make some changes to the values of
+ a privileged library setting (such as one of the credit card
+ ones) and an unprivileged one (e.g., lib.info_url).
+ [2] Log in as a staff user without administration privileges
+ and go to the library settings editor. Note that while the
+ current value of privileged settings are not displayed, clicking
+ on the history link displays the full history of the setting.
+ [3] Apply the patch and repeat step 2.
+ [4] This time, history for the privileged setting is not displayed,
+ while history for an unprivileged setting continues to be
+ available.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+ Signed-off-by: Shula Link <slink@gchrl.org>
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+1 9 Open-ILS/examples/fm_IDL.xml
+44 0 Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm
+28 17 Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
+
+commit 18a3f2aeddf8d32fa7b4cc73c9a37d7cb2134a07
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Thu Aug 12 10:00:30 2021 -0400
+
+ LP#1937299: stamp DB update
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{XXXX.data.patron_collections_exempt.sql => 1272.data.patron_collections_exempt.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.patron_collections_exempt.sql => 1272.data.patron_collections_exempt.sql} (91%)
+
+commit 3289465c97305b285cd68af16c11f9cda69d5b72
+Author: Jason Boyer <JBoyer@equinoxOLI.org>
+Date: Thu Jul 22 13:50:53 2021 -0400
+
+ LP1937299: Collections Exempt User Setting Repair
+
+ The collections exempt user setting was never added to the seed data
+ meaning that depending on the age of your database it may or may not
+ be there. Additionally, correct the label for this setting in the
+ user editor.
+
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+26 0 Open-ILS/src/sql/Pg/950.data.seed-values.sql
+43 0 Open-ILS/src/sql/Pg/upgrade/XXXX.data.patron_collections_exempt.sql
+1 2 Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.patron_collections_exempt.sql
+
+commit 8f337edffc9de9879a4c0c36236130eb13bb7312
+Author: Josh Stompro <stompro@stompro.org>
+Date: Tue May 25 09:42:22 2021 -0500
+
+ LP#1815968 - Self Check Audio Alerts
+
+ The method of playing audio alerts seems to not be working in modern browsers.
+
+ It seemed to work in firefox V40, but no longer in V68.
+
+ Adding the autoplay element and then immediately removing it prevents the audio
+ from playing. I've also noticed in the past that the audio had been cut off
+ before the file was fully played.
+
+ Using the .play() method does seem to work in newer versions of Firefox
+ and Chrome. Tested with Chrome V90 and Firefox V78.10.1esr.
+
+ Testing Plan:
+
+ 1. Enable Self Check Audio Alerts Library Setting.
+ 2. See the docs for setting up the default audio alerts.
+ https://docs.evergreen-ils.org/reorg/3.1/command_line_admin/_self_check_interface.html
+ 3. Launch self check interface, create a workstation and try to trigger an alert.
+ https://eg-server.you.com/eg/circ/selfcheck/main
+ 4. entering a fake barcode will trigger an alert which should not be audible.
+
+ Apply the fix:
+
+ 1. Launch self check interface, and reload/clear cache.
+ 2. Enter a fake barcode to trigger an audio alert.
+ 3. The audio alert should now be audible.
+
+ Signed-off-by: Josh Stompro <stompro@stompro.org>
+ Signed-off-by: Erica Rohlfs <erica.rohlfs@equinoxOLI.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+2 5 Open-ILS/web/js/dojo/openils/Util.js
+
+commit 349f8a6961aa3c159d1545fb135fa9d4ba3a75d2
+Author: Jason Boyer <JBoyer@equinoxOLI.org>
+Date: Fri Jul 30 15:15:31 2021 -0400
+
+ LP1923225 Followup: Record Subjects, Contents, and Summary
+
+ These 3 parts of the TPAC still had highlighted display fields being
+ run through the html filter, double-escaping them.
+
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+
+1 6 Open-ILS/src/templates/opac/parts/record/contents.tt2
+1 1 Open-ILS/src/templates/opac/parts/record/subjects.tt2
+3 10 Open-ILS/src/templates/opac/parts/record/summary.tt2
+
+commit 1df2ebd229f5e9bc7a249acf85ed6003bc6c732e
+Author: Gina Monti <gmonti@biblio.org>
+Date: Fri Jul 23 09:08:52 2021 -0400
+
+ Docs: LP1776977: Update lsa-address_alert.adoc and add images
+
+ Signed-off-by: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
+
+- - docs/modules/admin/assets/images/media/address_alert.jpg
+- - docs/modules/admin/assets/images/media/delete_address_alert.jpg
+- - docs/modules/admin/assets/images/media/edit_address_alert.jpg
+9 9 docs/modules/admin/pages/lsa-address_alert.adoc
+ create mode 100644 docs/modules/admin/assets/images/media/address_alert.jpg
+ create mode 100644 docs/modules/admin/assets/images/media/delete_address_alert.jpg
+ create mode 100644 docs/modules/admin/assets/images/media/edit_address_alert.jpg
+
+commit 6ac4896d6d3bddaf94f01e802e7e90bd16ce5da5
+Author: gmontimantis <86423994+gmontimantis@users.noreply.github.com>
+Date: Mon Jun 28 12:53:25 2021 -0400
+
+ Update lsa-address_alert.adoc
+
+ https://bugs.launchpad.net/evergreen/+bug/1776977
+
+ The new address alert table is rearranged to match the web client.
+
+ Signed-off-by: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
+
+14 10 docs/modules/admin/pages/lsa-address_alert.adoc
+
+commit 0be24cbc8e11c7d9de9e9b4f98b7ac950c769252
+Author: Gina Monti <gmonti@biblio.org>
+Date: Thu Jul 8 15:02:22 2021 -0400
+
+ Docs: Update apache_rewrite_tricks.adoc to further address LP1837753
+
+ Signed-off-by: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
+
+2 2 docs/modules/admin/pages/apache_rewrite_tricks.adoc
+
+commit ad704ed37d0414a360a8fc07f92b2641a6c39fb3
+Author: Gina Monti <gmonti@biblio.org>
+Date: Thu Jul 8 15:05:10 2021 -0400
+
+ Docs: update glossary.adoc to add TLD definition per LP1837753
+
+ Signed-off-by: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
+
+2 0 docs/modules/appendix/pages/glossary.adoc
+
+commit 95d40a1278198eabe2f467e3f0dab9d89e45973b
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Wed Jul 14 09:20:03 2021 -0700
+
+ LP1718782: follow up to fix failing test
+
+ LP1718782 added a missing fixed field, but failed to also add it to
+ the expected data in this pgtap test. This commit updates the
+ expected data to also include a SRCE fixed field.
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1 0 Open-ILS/src/sql/Pg/t/lp1588543_marc_record_attributes.pg
+
+commit 531fa3b6ac5116344975933b90f982b5f37d73f1
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Tue Jul 6 11:08:37 2021 -0400
+
+ LP1913807 Staff catalog shows preferred lib holdings counts
+
+ Always show holdings counts for the preferred library (when set) even
+ when the library is not directly in the search scope.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+13 1 Open-ILS/src/eg2/src/app/share/catalog/bib-record.service.ts
+1 1 Open-ILS/src/eg2/src/app/staff/catalog/result/record.component.html
+23 1 Open-ILS/src/eg2/src/app/staff/catalog/result/record.component.ts
+15 0 Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm
+
+commit 633656df58cafff386da4576459c47301507d8b5
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Mon Jul 5 16:04:56 2021 -0400
+
+ LP1910808 Staff catalog show call number
+
+ In the search results page, show the first call number for each record
+ (sorting by label sortkey) that is owned either by the user's preferred
+ library or the search library.
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+3 0 Open-ILS/src/eg2/src/app/share/catalog/bib-record.service.ts
+2 1 Open-ILS/src/eg2/src/app/share/catalog/catalog.service.ts
+7 0 Open-ILS/src/eg2/src/app/staff/catalog/result/record.component.html
+17 0 Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm
+
+commit 1a229a6e34e4789742ef2e3dba57d08da056c924
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Tue Jul 13 12:09:57 2021 -0400
+
+ LP#1718782: stamp DB update
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{XXXX.data.srce_fixed_field.sql => 1270.data.srce_fixed_field.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.srce_fixed_field.sql => 1270.data.srce_fixed_field.sql} (96%)
+
+commit a2ddf5de1d0d1c8bcba276700e94bbcad89fcf1d
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Thu Sep 10 11:35:22 2020 -0700
+
+ LP1718782: Add the Srce fixed field to the Angular MARC editor
+
+ To test:
+
+ 1) Without using private browsing, open up a bibliographic record in
+ the Angular catalog MARC editor.
+ 2) Notice that there is a gap between the ELvl and Audn fixed fields.
+ 3) Apply this patch.
+ 4) Open up the same bibliographic record, this time using private
+ browsing (since the Angular MARC editor caches fixed field values).
+ 5) Notice that the Srce fixed field is available between the ELvl and
+ Audn fixed fields.
+ 6) Notice that you can right click inside the fixed field to get a list
+ of three possible values.
+ 7) Repeat the test with different record types (e.g. BKS, SCO, VIS)
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Mary Llewellyn <mllewell@biblio.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-fields-editor.component.html
+14 0 Open-ILS/src/sql/Pg/950.data.seed-values.sql
+22 0 Open-ILS/src/sql/Pg/upgrade/XXXX.data.srce_fixed_field.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.srce_fixed_field.sql
+
+commit 6308fc62c326316f64b85bacb9c038b9895a1982
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Thu Dec 19 15:54:18 2019 -0800
+
+ LP1857060: Tests for ISBNs with 979 prefix
+
+ Also includes a slight tweak to the Amazon AddedContent code to avoid
+ attempting to convert 979 ISBNs to ISBN-10s (which is not possible).
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+12 6 Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent/Amazon.pm
+7 1 Open-ILS/src/perlmods/t/16-OpenILS-WWW-AddedContent.t
+30 0 Open-ILS/src/sql/Pg/t/lp1857060_handle_all_types_of_isbn.pg
+ create mode 100644 Open-ILS/src/sql/Pg/t/lp1857060_handle_all_types_of_isbn.pg
+
+commit 296228cf75a9f5fd42df9d029c432bf1dd066118
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Tue Jul 13 10:28:12 2021 -0400
+
+ LP#1910891: stamp DB update
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{XXXX.new_booking_perms_in_map.sql => 1269.data.new_booking_perms_in_map.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.new_booking_perms_in_map.sql => 1269.data.new_booking_perms_in_map.sql} (92%)
+
+commit 32e38d0d56ef0af8b9bf98f16ee6cc922032d74c
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Sat Jan 9 22:20:29 2021 -0800
+
+ LP1910891: Add new booking perms to appropriate groups
+
+ Steps to test:
+
+ 1) Without this patch, create a reservation for a BR1 resource at BR1.
+ 2) Log in as a circulator at BR1.
+ 3) Go to Booking > Manage Reservations. Note that you can't see your reservation.
+ 4) Run this upgrade script.
+ 5) Repeat steps 2-3. Notice that you can now see the reservation.
+ 6) Wipe your database and re-install it with the additions to the seed data
+ in this commit. Repeat steps 1-3 and notice that you can see the reservation
+ as expected.
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+4 0 Open-ILS/src/sql/Pg/950.data.seed-values.sql
+29 0 Open-ILS/src/sql/Pg/upgrade/XXXX.new_booking_perms_in_map.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.new_booking_perms_in_map.sql
+
+commit 7a431982dc4317b7fb766b7552f1454838918b12
+Author: Jason Boyer <JBoyer@EquinoxInitiative.org>
+Date: Wed Mar 10 18:48:12 2021 -0500
+
+ LP1895737: Add Curbside Appointments to Bootstrap OPAC
+
+ Add support for requesting / editing / canceling curbside
+ appointments to the bootstrap opac.
+
+ Signed-off-by: Jason Boyer <JBoyer@EquinoxInitiative.org>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+6 0 Open-ILS/src/templates-bootstrap/opac/css/style.css.tt2
+191 0 Open-ILS/src/templates-bootstrap/opac/myopac/holds_curbside.tt2
+7 2 Open-ILS/src/templates-bootstrap/opac/parts/myopac/base.tt2
+ create mode 100755 Open-ILS/src/templates-bootstrap/opac/myopac/holds_curbside.tt2
+
+commit 9c87efa5895253156cb0a89faf3dd8cfd780be9e
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Mon Jul 12 17:01:51 2021 -0400
+
+ LP#1908722: stamp schema update
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{XXXX.data.angstcat-show-more-details.sql => 1268.data.angstcat-show-more-details.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.angstcat-show-more-details.sql => 1268.data.angstcat-show-more-details.sql} (82%)
+
+commit f7283316c3110db3166fc13733844721fecf446f
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Fri Jul 9 17:10:31 2021 -0400
+
+ LP#1908722: add electronic resource links
+
+ This patch adds electronic resource links to the Show More Details
+ view in the Angular staff catalog, above the table of items.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+21 2 Open-ILS/src/eg2/src/app/staff/catalog/result/record.component.html
+2 0 Open-ILS/src/eg2/src/app/staff/catalog/result/results.component.ts
+
+commit c27bcb546be2e5b48acc0d0fb540ad89477395d6
+Author: Bill Erickson <berickxx@gmail.com>
+Date: Fri Jul 2 16:57:40 2021 -0400
+
+ LP1908722 Staff catalog Show More Details
+
+ Adds a "Show More Details" (and "Show Fewer Details") buttons to the
+ Angualr staff catalog. Similar to the TPAC, activating the button means
+ more holdings details are displayed in the search results page.
+
+ Adds a new workstation setting type called
+ 'eg.staff.catalog.results.show_more'
+
+ Signed-off-by: Bill Erickson <berickxx@gmail.com>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+
+10 5 Open-ILS/src/eg2/src/app/share/catalog/bib-record.service.ts
+12 5 Open-ILS/src/eg2/src/app/share/catalog/catalog.service.ts
+4 0 Open-ILS/src/eg2/src/app/share/catalog/search-context.ts
+0 1 Open-ILS/src/eg2/src/app/staff/catalog/catalog.service.ts
+1 0 Open-ILS/src/eg2/src/app/staff/catalog/resolver.service.ts
+27 0 Open-ILS/src/eg2/src/app/staff/catalog/result/record.component.html
+6 2 Open-ILS/src/eg2/src/app/staff/catalog/result/results.component.html
+35 4 Open-ILS/src/eg2/src/app/staff/catalog/result/results.component.ts
+85 2 Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm
+10 0 Open-ILS/src/sql/Pg/950.data.seed-values.sql
+15 0 Open-ILS/src/sql/Pg/upgrade/XXXX.data.angstcat-show-more-details.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.angstcat-show-more-details.sql
+
+commit c26e3be43d5822145f0000d33b5b324cb3ce570e
+Author: Mike Risher <mrisher@catalyte.io>
+Date: Wed May 6 17:08:33 2020 +0000
+
+ LP#1362743 One modal at a time during batch checkin
+
+ Modify batch checkins so that only one modal pops up at a time.
+ When each one is dismissed the next one will appear.
+
+ Signed-off-by: Mike Risher <mrisher@catalyte.io>
+ Signed-off-by: Dawn Dale <ddale@georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+13 5 Open-ILS/web/js/ui/default/staff/circ/services/item.js
+
+commit 3f7a846db9365ec7156d449bafb7febdde26fb8a
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date: Mon Feb 1 18:04:02 2021 -0800
+
+ LP1913221: Don't display blank course section number in OPAC
+
+ To test:
+
+ 1) Use the Library Settings Editor to turn on the Course Materials
+ Module.
+ 2) In Local administration, go to the course reserves list.
+ 3) Add several courses, some with section numbers, others without.
+ 4) In the OPAC, use the Course Search function to search for the courses
+ you just added.
+ 5) Notice that the search results page has a place for section numbers,
+ whether or not the course has one.
+ 6) Click into some of the courses. Notice that the course page also
+ includes a place for section numbers, whether or not the course has
+ one.
+ 7) Apply this patch.
+ 8) Repeat steps 4-6. Notice that the blank "section number" areas no
+ longer appear.
+
+ Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+ Signed-off-by: Beth Willis <willis@noblenet.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+5 3 Open-ILS/src/templates/opac/course/results.tt2
+6 4 Open-ILS/src/templates/opac/parts/course/body.tt2
+
+commit f0ade82cf330b69468a230055e7791c05740cc82
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Wed Jul 7 10:42:54 2021 -0400
+
+ LP#1907296: stamp DB update
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 1 Open-ILS/src/sql/Pg/upgrade/{XXXX.data.ws_setting_eg_grid_catalog_record_copies => 1266.ws_setting_eg_grid_catalog_record_copies.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.ws_setting_eg_grid_catalog_record_copies => 1266.ws_setting_eg_grid_catalog_record_copies.sql} (81%)
+
+commit f142767fe20cc2164de953582f5f3e7af680ccd1
+Author: Michele Morgan <mmorgan@noblenet.org>
+Date: Fri Apr 9 12:38:55 2021 -0400
+
+ LP#1907296 Missing Workstation setting for staff cat item table
+
+ Adds the ws setting type eg.grid.catalog.record.copies to allow users to
+ save grid preferences for the angular catalog item table.
+
+ Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+ Signed-off-by: Jennifer Pringle <jennifer.pringle@bc.libraries.coop>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+10 0 Open-ILS/src/sql/Pg/950.data.seed-values.sql
+14 0 Open-ILS/src/sql/Pg/upgrade/XXXX.data.ws_setting_eg_grid_catalog_record_copies
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.ws_setting_eg_grid_catalog_record_copies
+
+commit 8ac4abbb4d5ad70f6c42d0aae3568464780490d7
+Author: Garry Collum <gcollum@gmail.com>
+Date: Tue May 11 15:43:34 2021 -0400
+
+ LP1928005 Bootstrap Opac: Current charges not aligned on mobile.
+
+ This patch removes the classes from the charges table that presents the table in a vertical format.
+ It wraps the table in a <div> that uses the table-responsive class.
+
+ To test add some charges to a patron record.
+ Bring that patron's account up in the opac and view the charges table in the smallest browser size
+ possible.
+ Notice that the table switches to a vertical format and the column names are mis-aligned.
+
+ Apply the patch.
+
+ View the table again. The table should now be horizontal with all of the columns correct.
+
+ Signed-off-by: Garry Collum <gcollum@gmail.com>
+ Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+4 2 Open-ILS/src/templates-bootstrap/opac/myopac/charges.tt2
+
+commit 2b92c112777f163fa1112db056e28fe2f6e2d211
+Author: Galen Charlton <gmc@equinoxOLI.org>
+Date: Fri Jun 4 16:17:33 2021 -0400
+
+ LP#1929136: (follow-up) reduce bounce time to 500ms
+
+ During testing, 500ms was enough to avoid excessive
+ PCRUD calls while still keeping the interface's display
+ of duplicate or missing barcode warnings responsive.
+
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit adf4b341b81ff77b3cc13cd2f642a747778d0231
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date: Thu May 20 14:51:17 2021 -0700
+
+ LP#1929136: delay barcode lookup on change in holdings editor
+
+ In the Holdings Editor, any change to the barcode field results in an
+ immediate API call. Thus, if you type the barcode "123456789", you
+ would get 9 separate calls: 1, 12, 123, 1234, 12345 ...
+
+ This commit adds a 1000ms delay to avoid excessive pcrud calls when
+ typing a barcode.
+
+ Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+ Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
+
+1 1 Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit ebcfc2dc362565386f8a81d127d2865a0982c25e
+Author: Jason Stephenson <jason@sigio.com>
+Date: Fri Jun 25 13:05:49 2021 -0400
+
+ Forward port the 3.6.3 to 3.6.4 db upgrade script
+
+ Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+1535 0 Open-ILS/src/sql/Pg/version-upgrade/3.6.3-3.6.4-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/3.6.3-3.6.4-upgrade-db.sql
--- /dev/null
+--Upgrade Script for 3.6.4 to 3.6.5
+\set eg_version '''3.6.5'''
+BEGIN;
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.6.5', :eg_version);
+
+SELECT evergreen.upgrade_deps_block_check('1266', :eg_version);
+
+INSERT INTO config.workstation_setting_type (name, grp, datatype, label)
+VALUES (
+ 'eg.grid.catalog.record.copies', 'gui', 'object',
+ oils_i18n_gettext(
+ 'eg.grid.catalog.record.copies',
+ 'Grid Config: eg.grid.catalog.record.copies',
+ 'cwst', 'label')
+ );
+
+
+SELECT evergreen.upgrade_deps_block_check('1268', :eg_version);
+
+INSERT INTO config.workstation_setting_type (name, grp, datatype, label)
+VALUES (
+ 'eg.staff.catalog.results.show_more', 'gui', 'bool',
+ oils_i18n_gettext(
+ 'eg.staff.catalog.results.show_more',
+ 'Show more details in Angular staff catalog',
+ 'cwst', 'label'
+ )
+);
+
+
+SELECT evergreen.upgrade_deps_block_check('1269', :eg_version);
+
+WITH perms_to_add AS
+ (SELECT id FROM
+ permission.perm_list
+ WHERE code IN ('VIEW_BOOKING_RESERVATION', 'VIEW_BOOKING_RESERVATION_ATTR_MAP'))
+
+INSERT INTO permission.grp_perm_map (grp, perm, depth, grantable)
+ SELECT grp, perms_to_add.id as perm, depth, grantable
+ FROM perms_to_add,
+ permission.grp_perm_map
+
+ --- Don't add the permissions if they have already been assigned
+ WHERE grp NOT IN
+ (SELECT DISTINCT grp FROM permission.grp_perm_map
+ INNER JOIN perms_to_add ON perm=perms_to_add.id)
+
+ --- Anybody who can view resources should also see reservations
+ --- at the same level
+ AND perm = (
+ SELECT id
+ FROM permission.perm_list
+ WHERE code = 'VIEW_BOOKING_RESOURCE'
+ );
+
+
+
+SELECT evergreen.upgrade_deps_block_check('1270', :eg_version);
+
+INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Srce', '008', 'BKS', 39, 1, ' ');
+INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Srce', '008', 'COM', 39, 1, ' ');
+INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Srce', '008', 'MAP', 39, 1, ' ');
+INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Srce', '008', 'MIX', 39, 1, ' ');
+INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Srce', '008', 'REC', 39, 1, ' ');
+INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Srce', '008', 'SCO', 39, 1, ' ');
+INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Srce', '008', 'SER', 39, 1, ' ');
+INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Srce', '008', 'VIS', 39, 1, ' ');
+
+
+INSERT INTO config.record_attr_definition (name,label,fixed_field) values ('srce','Srce','Srce');
+
+INSERT INTO config.coded_value_map (id, ctype, code, value) VALUES
+(1750, 'srce', ' ', oils_i18n_gettext('1750', 'National bibliographic agency', 'ccvm', 'value')),
+(1751, 'srce', 'c', oils_i18n_gettext('1751', 'Cooperative cataloging program', 'ccvm', 'value')),
+(1752, 'srce', 'd', oils_i18n_gettext('1752', 'Other', 'ccvm', 'value'));
+
+
+SELECT evergreen.upgrade_deps_block_check('1272', :eg_version);
+
+DO $$
+BEGIN
+
+ PERFORM FROM config.usr_setting_type WHERE name = 'circ.collections.exempt';
+
+ IF NOT FOUND THEN
+
+ INSERT INTO config.usr_setting_type (
+ name,
+ opac_visible,
+ label,
+ description,
+ datatype,
+ reg_default
+ ) VALUES (
+ 'circ.collections.exempt',
+ FALSE,
+ oils_i18n_gettext(
+ 'circ.collections.exempt',
+ 'Collections: Exempt',
+ 'cust',
+ 'label'
+ ),
+ oils_i18n_gettext(
+ 'circ.collections.exempt',
+ 'User is exempt from collections tracking/processing',
+ 'cust',
+ 'description'
+ ),
+ 'bool',
+ 'false'
+ );
+
+ END IF;
+
+END
+$$;
+
+
+SELECT evergreen.upgrade_deps_block_check('1279', :eg_version);
+
+UPDATE config.org_unit_setting_type SET fm_class='cnal', datatype='link' WHERE name='ui.patron.default_inet_access_level';
+
+
+
+SELECT evergreen.upgrade_deps_block_check('1283', :eg_version); -- rhamby/ehardy/jboyer
+
+UPDATE asset.call_number SET record = -1 WHERE id = -1 AND record != -1;
+
+CREATE RULE protect_bre_id_neg1 AS ON UPDATE TO biblio.record_entry WHERE OLD.id = -1 DO INSTEAD NOTHING;
+CREATE RULE protect_acl_id_1 AS ON UPDATE TO asset.copy_location WHERE OLD.id = 1 DO INSTEAD NOTHING;
+CREATE RULE protect_acn_id_neg1 AS ON UPDATE TO asset.call_number WHERE OLD.id = -1 DO INSTEAD NOTHING;
+
+CREATE OR REPLACE FUNCTION asset.merge_record_assets( target_record BIGINT, source_record BIGINT ) RETURNS INT AS $func$
+DECLARE
+ moved_objects INT := 0;
+ source_cn asset.call_number%ROWTYPE;
+ target_cn asset.call_number%ROWTYPE;
+ metarec metabib.metarecord%ROWTYPE;
+ hold action.hold_request%ROWTYPE;
+ ser_rec serial.record_entry%ROWTYPE;
+ ser_sub serial.subscription%ROWTYPE;
+ acq_lineitem acq.lineitem%ROWTYPE;
+ acq_request acq.user_request%ROWTYPE;
+ booking booking.resource_type%ROWTYPE;
+ source_part biblio.monograph_part%ROWTYPE;
+ target_part biblio.monograph_part%ROWTYPE;
+ multi_home biblio.peer_bib_copy_map%ROWTYPE;
+ uri_count INT := 0;
+ counter INT := 0;
+ uri_datafield TEXT;
+ uri_text TEXT := '';
+BEGIN
+
+ -- we don't merge bib -1
+ IF target_record = -1 OR source_record = -1 THEN
+ RETURN 0;
+ END IF;
+
+ -- move any 856 entries on records that have at least one MARC-mapped URI entry
+ SELECT INTO uri_count COUNT(*)
+ FROM asset.uri_call_number_map m
+ JOIN asset.call_number cn ON (m.call_number = cn.id)
+ WHERE cn.record = source_record;
+
+ IF uri_count > 0 THEN
+
+ -- This returns more nodes than you might expect:
+ -- 7 instead of 1 for an 856 with $u $y $9
+ SELECT COUNT(*) INTO counter
+ FROM oils_xpath_table(
+ 'id',
+ 'marc',
+ 'biblio.record_entry',
+ '//*[@tag="856"]',
+ 'id=' || source_record
+ ) as t(i int,c text);
+
+ FOR i IN 1 .. counter LOOP
+ SELECT '<datafield xmlns="http://www.loc.gov/MARC21/slim"' ||
+ ' tag="856"' ||
+ ' ind1="' || FIRST(ind1) || '"' ||
+ ' ind2="' || FIRST(ind2) || '">' ||
+ STRING_AGG(
+ '<subfield code="' || subfield || '">' ||
+ regexp_replace(
+ regexp_replace(
+ regexp_replace(data,'&','&','g'),
+ '>', '>', 'g'
+ ),
+ '<', '<', 'g'
+ ) || '</subfield>', ''
+ ) || '</datafield>' INTO uri_datafield
+ FROM oils_xpath_table(
+ 'id',
+ 'marc',
+ 'biblio.record_entry',
+ '//*[@tag="856"][position()=' || i || ']/@ind1|' ||
+ '//*[@tag="856"][position()=' || i || ']/@ind2|' ||
+ '//*[@tag="856"][position()=' || i || ']/*/@code|' ||
+ '//*[@tag="856"][position()=' || i || ']/*[@code]',
+ 'id=' || source_record
+ ) as t(id int,ind1 text, ind2 text,subfield text,data text);
+
+ -- As most of the results will be NULL, protect against NULLifying
+ -- the valid content that we do generate
+ uri_text := uri_text || COALESCE(uri_datafield, '');
+ END LOOP;
+
+ IF uri_text <> '' THEN
+ UPDATE biblio.record_entry
+ SET marc = regexp_replace(marc,'(</[^>]*record>)', uri_text || E'\\1')
+ WHERE id = target_record;
+ END IF;
+
+ END IF;
+
+ -- Find and move metarecords to the target record
+ SELECT INTO metarec *
+ FROM metabib.metarecord
+ WHERE master_record = source_record;
+
+ IF FOUND THEN
+ UPDATE metabib.metarecord
+ SET master_record = target_record,
+ mods = NULL
+ WHERE id = metarec.id;
+
+ moved_objects := moved_objects + 1;
+ END IF;
+
+ -- Find call numbers attached to the source ...
+ FOR source_cn IN SELECT * FROM asset.call_number WHERE record = source_record LOOP
+
+ SELECT INTO target_cn *
+ FROM asset.call_number
+ WHERE label = source_cn.label
+ AND prefix = source_cn.prefix
+ AND suffix = source_cn.suffix
+ AND owning_lib = source_cn.owning_lib
+ AND record = target_record
+ AND NOT deleted;
+
+ -- ... and if there's a conflicting one on the target ...
+ IF FOUND THEN
+
+ -- ... move the copies to that, and ...
+ UPDATE asset.copy
+ SET call_number = target_cn.id
+ WHERE call_number = source_cn.id;
+
+ -- ... move V holds to the move-target call number
+ FOR hold IN SELECT * FROM action.hold_request WHERE target = source_cn.id AND hold_type = 'V' LOOP
+
+ UPDATE action.hold_request
+ SET target = target_cn.id
+ WHERE id = hold.id;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ UPDATE asset.call_number SET deleted = TRUE WHERE id = source_cn.id;
+
+ -- ... if not ...
+ ELSE
+ -- ... just move the call number to the target record
+ UPDATE asset.call_number
+ SET record = target_record
+ WHERE id = source_cn.id;
+ END IF;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- Find T holds targeting the source record ...
+ FOR hold IN SELECT * FROM action.hold_request WHERE target = source_record AND hold_type = 'T' LOOP
+
+ -- ... and move them to the target record
+ UPDATE action.hold_request
+ SET target = target_record
+ WHERE id = hold.id;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- Find serial records targeting the source record ...
+ FOR ser_rec IN SELECT * FROM serial.record_entry WHERE record = source_record LOOP
+ -- ... and move them to the target record
+ UPDATE serial.record_entry
+ SET record = target_record
+ WHERE id = ser_rec.id;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- Find serial subscriptions targeting the source record ...
+ FOR ser_sub IN SELECT * FROM serial.subscription WHERE record_entry = source_record LOOP
+ -- ... and move them to the target record
+ UPDATE serial.subscription
+ SET record_entry = target_record
+ WHERE id = ser_sub.id;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- Find booking resource types targeting the source record ...
+ FOR booking IN SELECT * FROM booking.resource_type WHERE record = source_record LOOP
+ -- ... and move them to the target record
+ UPDATE booking.resource_type
+ SET record = target_record
+ WHERE id = booking.id;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- Find acq lineitems targeting the source record ...
+ FOR acq_lineitem IN SELECT * FROM acq.lineitem WHERE eg_bib_id = source_record LOOP
+ -- ... and move them to the target record
+ UPDATE acq.lineitem
+ SET eg_bib_id = target_record
+ WHERE id = acq_lineitem.id;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- Find acq user purchase requests targeting the source record ...
+ FOR acq_request IN SELECT * FROM acq.user_request WHERE eg_bib = source_record LOOP
+ -- ... and move them to the target record
+ UPDATE acq.user_request
+ SET eg_bib = target_record
+ WHERE id = acq_request.id;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- Find parts attached to the source ...
+ FOR source_part IN SELECT * FROM biblio.monograph_part WHERE record = source_record LOOP
+
+ SELECT INTO target_part *
+ FROM biblio.monograph_part
+ WHERE label = source_part.label
+ AND record = target_record;
+
+ -- ... and if there's a conflicting one on the target ...
+ IF FOUND THEN
+
+ -- ... move the copy-part maps to that, and ...
+ UPDATE asset.copy_part_map
+ SET part = target_part.id
+ WHERE part = source_part.id;
+
+ -- ... move P holds to the move-target part
+ FOR hold IN SELECT * FROM action.hold_request WHERE target = source_part.id AND hold_type = 'P' LOOP
+
+ UPDATE action.hold_request
+ SET target = target_part.id
+ WHERE id = hold.id;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- ... if not ...
+ ELSE
+ -- ... just move the part to the target record
+ UPDATE biblio.monograph_part
+ SET record = target_record
+ WHERE id = source_part.id;
+ END IF;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- Find multi_home items attached to the source ...
+ FOR multi_home IN SELECT * FROM biblio.peer_bib_copy_map WHERE peer_record = source_record LOOP
+ -- ... and move them to the target record
+ UPDATE biblio.peer_bib_copy_map
+ SET peer_record = target_record
+ WHERE id = multi_home.id;
+
+ moved_objects := moved_objects + 1;
+ END LOOP;
+
+ -- And delete mappings where the item's home bib was merged with the peer bib
+ DELETE FROM biblio.peer_bib_copy_map WHERE peer_record = (
+ SELECT (SELECT record FROM asset.call_number WHERE id = call_number)
+ FROM asset.copy WHERE id = target_copy
+ );
+
+ -- Apply merge tracking
+ UPDATE biblio.record_entry
+ SET merge_date = NOW() WHERE id = target_record;
+
+ UPDATE biblio.record_entry
+ SET merge_date = NOW(), merged_to = target_record
+ WHERE id = source_record;
+
+ -- replace book bag entries of source_record with target_record
+ UPDATE container.biblio_record_entry_bucket_item
+ SET target_biblio_record_entry = target_record
+ WHERE bucket IN (SELECT id FROM container.biblio_record_entry_bucket WHERE btype = 'bookbag')
+ AND target_biblio_record_entry = source_record;
+
+ -- Finally, "delete" the source record
+ UPDATE biblio.record_entry SET active = FALSE WHERE id = source_record;
+ DELETE FROM biblio.record_entry WHERE id = source_record;
+
+ -- That's all, folks!
+ RETURN moved_objects;
+END;
+$func$ LANGUAGE plpgsql;
+
+
+
+
+SELECT evergreen.upgrade_deps_block_check('1294', :eg_version); -- mmorgan / tlittle / JBoyer
+
+INSERT INTO config.workstation_setting_type (name, grp, datatype, label)
+VALUES (
+ 'eg.grid.admin.local.container.carousel_org_unit', 'gui', 'object',
+ oils_i18n_gettext(
+ 'eg.grid.admin.local.container.carousel_org_unit',
+ 'Grid Config: eg.grid.admin.local.container.carousel_org_unit',
+ 'cwst', 'label'
+ )
+), (
+ 'eg.grid.admin.container.carousel', 'gui', 'object',
+ oils_i18n_gettext(
+ 'eg.grid.admin.container.carousel',
+ 'Grid Config: eg.grid.admin.container.carousel',
+ 'cwst', 'label'
+ )
+), (
+ 'eg.grid.admin.server.config.carousel_type', 'gui', 'object',
+ oils_i18n_gettext(
+ 'eg.grid.admin.server.config.carousel_type',
+ 'Grid Config: eg.grid.admin.server.config.carousel_type',
+ 'cwst', 'label'
+ )
+);
+
+
+SELECT evergreen.upgrade_deps_block_check('1302', :eg_version);
+
+UPDATE config.org_unit_setting_type
+ SET description = oils_i18n_gettext(
+ 'ui.circ.items_out.longoverdue',
+ 'Value is a numeric code, describing: A. In which tab ("Items Checked Out", '||
+ 'or "Other/Special Circulations") the circulation '||
+ 'should appear while checked out, and B. Whether the circulation should '||
+ 'continue to appear in the "Other" tab when checked in with '||
+ 'outstanding fines. '||
+ '1 = (A) "Items", (B) "Other". 2 = (A) "Other", (B) "Other". ' ||
+ '5 = (A) "Items", (B) do not display. 6 = (A) "Other", (B) do not display.',
+ 'coust',
+ 'description'
+ )
+ WHERE name = 'ui.circ.items_out.longoverdue';
+
+UPDATE config.org_unit_setting_type
+ set description = oils_i18n_gettext(
+ 'ui.circ.items_out.lost',
+ 'Value is a numeric code, describing: A. In which tab ("Items Checked Out", '||
+ 'or "Other/Special Circulations") the circulation '||
+ 'should appear while checked out, and B. Whether the circulation should '||
+ 'continue to appear in the "Other" tab when checked in with '||
+ 'outstanding fines. '||
+ '1 = (A) "Items", (B) "Other". 2 = (A) "Other", (B) "Other". ' ||
+ '5 = (A) "Items", (B) do not display. 6 = (A) "Other", (B) do not display.',
+ 'coust',
+ 'description'
+ )
+ WHERE name = 'ui.circ.items_out.lost';
+
+UPDATE config.org_unit_setting_type
+ set description = oils_i18n_gettext(
+ 'ui.circ.items_out.claimsreturned',
+ 'Value is a numeric code, describing: A. In which tab ("Items Checked Out", '||
+ 'or "Other/Special Circulations") the circulation '||
+ 'should appear while checked out, and B. Whether the circulation should '||
+ 'continue to appear in the "Other" tab when checked in with '||
+ 'outstanding fines. '||
+ '1 = (A) "Items", (B) "Other". 2 = (A) "Other", (B) "Other". ' ||
+ '5 = (A) "Items", (B) do not display. 6 = (A) "Other", (B) do not display.',
+ 'coust',
+ 'description'
+ )
+ WHERE name = 'ui.circ.items_out.claimsreturned';
+
+
+SELECT evergreen.upgrade_deps_block_check('1303', :eg_version);
+
+DROP INDEX authority.authority_full_rec_value_index;
+CREATE INDEX authority_full_rec_value_index ON authority.full_rec (SUBSTRING(value FOR 1024));
+
+DROP INDEX authority.authority_full_rec_value_tpo_index;
+CREATE INDEX authority_full_rec_value_tpo_index ON authority.full_rec (SUBSTRING(value FOR 1024) text_pattern_ops);
+
+
+COMMIT;
+
+-- Update auditor tables to catch changes to source tables.
+-- Can be removed/skipped if there were no schema changes.
+SELECT auditor.update_auditors();
--- /dev/null
+= Installing the Evergreen server =
+:toc:
+
+== Preamble: referenced user accounts ==
+
+In subsequent sections, we will refer to a number of different accounts, as
+follows:
+
+ * Linux user accounts:
+ ** The *user* Linux account is the account that you use to log onto the
+ Linux system as a regular user.
+ ** The *root* Linux account is an account that has system administrator
+ privileges. On Debian you can switch to this account from
+ your *user* account by issuing the `su -` command and entering the
+ password for the *root* account when prompted. On Ubuntu you can switch
+ to this account from your *user* account using the `sudo su -` command
+ and entering the password for your *user* account when prompted.
+ ** The *opensrf* Linux account is an account that you create when installing
+ OpenSRF. You can switch to this account from the *root* account by
+ issuing the `su - opensrf` command.
+ ** The *postgres* Linux account is created automatically when you install
+ the PostgreSQL database server. You can switch to this account from the
+ *root* account by issuing the `su - postgres` command.
+ * PostgreSQL user accounts:
+ ** The *evergreen* PostgreSQL account is a superuser account that you will
+ create to connect to the PostgreSQL database server.
+ * Evergreen administrator account:
+ ** The *egadmin* Evergreen account is an administrator account for
+ Evergreen that you will use to test connectivity and configure your
+ Evergreen instance.
+
+== Preamble: developer instructions ==
+
+[NOTE]
+Skip this section if you are using an official release tarball downloaded
+from http://evergreen-ils.org/egdownloads
+
+Developers working directly with the source code from the Git repository,
+rather than an official release tarball, must perform one step before they
+can proceed with the `./configure` step.
+
+As the *user* Linux account, issue the following command in the Evergreen
+source directory to generate the configure script and Makefiles:
+
+[source, bash]
+------------------------------------------------------------------------------
+autoreconf -i
+------------------------------------------------------------------------------
+
+== Installing prerequisites ==
+
+ * **PostgreSQL**: The minimum supported version is 9.6.
+ * **Linux**: Evergreen has been tested on
+ Debian Buster (10),
+ Debian Stretch (9),
+ Debian Jessie (8),
+ Ubuntu Bionic Beaver (18.04),
+ and Ubuntu Xenial Xerus (16.04).
+ If you are running an older version of these distributions, you may want
+ to upgrade before upgrading Evergreen. For instructions on upgrading these
+ distributions, visit the Debian or Ubuntu websites.
+ * **OpenSRF**: The minimum supported version of OpenSRF is 3.2.0.
+
+
+Evergreen has a number of prerequisite packages that must be installed
+before you can successfully configure, compile, and install Evergreen.
+
+1. Begin by installing the most recent version of OpenSRF (3.2.0 or later).
+ You can download OpenSRF releases from http://evergreen-ils.org/opensrf-downloads/
++
+2. Issue the following commands as the *root* Linux account to install
+ prerequisites using the `Makefile.install` prerequisite installer,
+ substituting `debian-buster`,`debian-stretch`,`debian-jessie`,`ubuntu-bionic`, or
+ `ubuntu-xenial` for <osname> below:
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>
+------------------------------------------------------------------------------
++
+[[optional_developer_additions]]
+3. OPTIONAL: Developer additions
++
+To perform certain developer tasks from a Git source code checkout,
+including the testing of the Angular web client components,
+additional packages may be required. As the *root* Linux account:
++
+ * To install packages needed for retrieving and managing web dependencies,
+ use the <osname>-developer Makefile.install target. Currently,
+ this is only needed for building and installing the web
+ staff client.
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>-developer
+------------------------------------------------------------------------------
++
+ * To install packages required for building Evergreen translations, use
+ the <osname>-translator Makefile.install target.
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>-translator
+------------------------------------------------------------------------------
++
+ * To install packages required for building Evergreen release bundles, use
+ the <osname>-packager Makefile.install target.
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>-packager
+------------------------------------------------------------------------------
+
+== Extra steps for web staff client ==
+
+[NOTE]
+Skip this entire section if you are using an official release tarball downloaded
+from http://evergreen-ils.org/downloads. Otherwise, ensure you have installed the
+xref:#optional_developer_additions[optional developer additions] before proceeding.
+
+[[install_files_for_web_staff_client]]
+=== Install AngularJS files for web staff client ===
+
+1. Building, Testing, Minification: The remaining steps all take place within
+ the staff JS web root:
++
+[source,sh]
+------------------------------------------------------------------------------
+cd $EVERGREEN_ROOT/Open-ILS/web/js/ui/default/staff/
+------------------------------------------------------------------------------
++
+2. Install Project-local Dependencies. npm inspects the 'package.json' file
+ for dependencies and fetches them from the Node package network.
++
+[source,sh]
+------------------------------------------------------------------------------
+npm install # fetch JS dependencies
+------------------------------------------------------------------------------
++
+3. Run the build script.
++
+[source,sh]
+------------------------------------------------------------------------------
+# build, concat+minify
+npm run build-prod
+------------------------------------------------------------------------------
++
+4. OPTIONAL: Test web client code if the <osname>-developer packages were installed.
+ CHROME_BIN should be set to the path to chrome or chromimum, e.g.,
+ `/usr/bin/chromium`:
++
+[source,sh]
+------------------------------------------------------------------------------
+CHROME_BIN=/path/to/chrome npm run test
+------------------------------------------------------------------------------
+
+[[install_files_for_angular_web_staff_client]]
+=== Install Angular files for web staff client ===
+
+1. Building, Testing, Minification: The remaining steps all take place within
+ the Angular staff root:
++
+[source,sh]
+------------------------------------------------------------------------------
+cd $EVERGREEN_ROOT/Open-ILS/src/eg2/
+------------------------------------------------------------------------------
++
+2. Install Project-local Dependencies. npm inspects the 'package.json' file
+ for dependencies and fetches them from the Node package network.
++
+[source,sh]
+------------------------------------------------------------------------------
+npm install # fetch JS dependencies
+------------------------------------------------------------------------------
++
+3. Run the build script.
++
+[source,sh]
+------------------------------------------------------------------------------
+# build and run tests
+ng build --prod
+------------------------------------------------------------------------------
++
+4. OPTIONAL: Test eg2 web client code if the <osname>-developer packages were installed:
+ CHROME_BIN should be set to the path to chrome or chromimum, e.g.,
+ `/usr/bin/chromium`:
++
+[source,sh]
+------------------------------------------------------------------------------
+CHROME_BIN=/path/to/chrome npm run test
+------------------------------------------------------------------------------
+
+[[install_opac_deps]]
+=== Install OPAC skin dependencies ===
+
+1. The following steps take place within the OPAC dependencies root:
++
+[source,sh]
+------------------------------------------------------------------------------
+cd $EVERGREEN_ROOT/Open-ILS/web/opac/deps
+------------------------------------------------------------------------------
++
+2. Install Project-local Dependencies. npm inspects the 'package.json' file
+ for dependencies and fetches them from the Node package network.
++
+[source,sh]
+------------------------------------------------------------------------------
+npm install # fetch JS and CSS dependencies
+------------------------------------------------------------------------------
++
+Note that there is no build step.
+
+== Configuration and compilation instructions ==
+
+For the time being, we are still installing everything in the `/openils/`
+directory. From the Evergreen source directory, issue the following commands as
+the *user* Linux account to configure and build Evergreen:
+
+[source, bash]
+------------------------------------------------------------------------------
+PATH=/openils/bin:$PATH ./configure --prefix=/openils --sysconfdir=/openils/conf
+make
+------------------------------------------------------------------------------
+
+These instructions assume that you have also installed OpenSRF under `/openils/`.
+If not, please adjust PATH as needed so that the Evergreen `configure` script
+can find `osrf_config`.
+
+== Installation instructions ==
+
+1. Once you have configured and compiled Evergreen, issue the following
+ command as the *root* Linux account to install Evergreen and copy
+ example configuration files to `/openils/conf`.
++
+[source, bash]
+------------------------------------------------------------------------------
+make install
+------------------------------------------------------------------------------
+
+== Change ownership of the Evergreen files ==
+
+All files in the `/openils/` directory and subdirectories must be owned by the
+`opensrf` user. Issue the following command as the *root* Linux account to
+change the ownership on the files:
+
+[source, bash]
+------------------------------------------------------------------------------
+chown -R opensrf:opensrf /openils
+------------------------------------------------------------------------------
+
+== Run ldconfig ==
+
+On Ubuntu 18.04 or Debian Stretch / Buster, run the following command as the root user:
+
+[source, bash]
+------------------------------------------------------------------------------
+ldconfig
+------------------------------------------------------------------------------
+
+== Additional Instructions for Developers ==
+
+[NOTE]
+Skip this section if you are using an official release tarball downloaded
+from http://evergreen-ils.org/egdownloads
+
+Developers working directly with the source code from the Git repository,
+rather than an official release tarball, need to install the Dojo Toolkit
+set of JavaScript libraries. The appropriate version of Dojo is included in
+Evergreen release tarballs. Developers should install the Dojo 1.3.3 version
+of Dojo by issuing the following commands as the *opensrf* Linux account:
+
+[source, bash]
+------------------------------------------------------------------------------
+wget http://download.dojotoolkit.org/release-1.3.3/dojo-release-1.3.3.tar.gz
+tar -C /openils/var/web/js -xzf dojo-release-1.3.3.tar.gz
+cp -r /openils/var/web/js/dojo-release-1.3.3/* /openils/var/web/js/dojo/.
+------------------------------------------------------------------------------
+
+
+== Configure the Apache Web server ==
+
+. Use the example configuration files to configure your Web server for
+the Evergreen catalog, web staff client, Web services, and administration
+interfaces. Issue the following commands as the *root* Linux account:
++
+[source,bash]
+------------------------------------------------------------------------------------
+cp Open-ILS/examples/apache_24/eg_24.conf /etc/apache2/sites-available/eg.conf
+cp Open-ILS/examples/apache_24/eg_vhost_24.conf /etc/apache2/eg_vhost.conf
+cp Open-ILS/examples/apache_24/eg_startup /etc/apache2/
+# Now set up SSL
+mkdir /etc/apache2/ssl
+cd /etc/apache2/ssl
+------------------------------------------------------------------------------------
++
+. The `openssl` command cuts a new SSL key for your Apache server. For a
+production server, you should purchase a signed SSL certificate, but you can
+just use a self-signed certificate and accept the warnings in the
+and browser during testing and development. Create an SSL key for the Apache
+server by issuing the following command as the *root* Linux account:
++
+[source,bash]
+------------------------------------------------------------------------------
+openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key
+------------------------------------------------------------------------------
++
+. As the *root* Linux account, edit the `eg.conf` file that you copied into
+place.
+ a. To enable access to the offline upload / execute interface from any
+ workstation on any network, make the following change (and note that
+ you *must* secure this for a production instance):
+ * Replace `Require host 10.0.0.0/8` with `Require all granted`
+. Change the user for the Apache server.
+ * As the *root* Linux account, edit
+ `/etc/apache2/envvars`. Change `export APACHE_RUN_USER=www-data` to
+ `export APACHE_RUN_USER=opensrf`.
+. As the *root* Linux account, configure Apache with KeepAlive settings
+ appropriate for Evergreen. Higher values can improve the performance of a
+ single client by allowing multiple requests to be sent over the same TCP
+ connection, but increase the risk of using up all available Apache child
+ processes and memory.
+ * Edit `/etc/apache2/apache2.conf`.
+ a. Change `KeepAliveTimeout` to `1`.
+ b. Change `MaxKeepAliveRequests` to `100`.
+. As the *root* Linux account, configure the prefork module to start and keep
+ enough Apache servers available to provide quick responses to clients without
+ running out of memory. The following settings are a good starting point for a
+ site that exposes the default Evergreen catalog to the web:
++
+.`/etc/apache2/mods-available/mpm_prefork.conf`
+[source,bash]
+------------------------------------------------------------------------------
+<IfModule mpm_prefork_module>
+ StartServers 15
+ MinSpareServers 5
+ MaxSpareServers 15
+ MaxRequestWorkers 75
+ MaxConnectionsPerChild 500
+</IfModule>
+------------------------------------------------------------------------------
++
+. As the *root* user, enable the mpm_prefork module:
++
+[source,bash]
+------------------------------------------------------------------------------
+a2dismod mpm_event
+a2enmod mpm_prefork
+------------------------------------------------------------------------------
++
+. As the *root* Linux account, enable the Evergreen site:
++
+[source,bash]
+------------------------------------------------------------------------------
+a2dissite 000-default # OPTIONAL: disable the default site (the "It Works" page)
+a2ensite eg.conf
+------------------------------------------------------------------------------
++
+. As the *root* Linux account, enable Apache to write
+ to the lock directory; this is currently necessary because Apache
+ is running as the `opensrf` user:
++
+[source,bash]
+------------------------------------------------------------------------------
+chown opensrf /var/lock/apache2
+------------------------------------------------------------------------------
+
+Learn more about additional Apache options in the following sections:
+
+ * xref:admin:apache_rewrite_tricks.adoc#apache_rewrite_tricks[Apache Rewrite Tricks]
+ * xref:admin:apache_access_handler.adoc#apache_access_handler_perl_module[Apache Access Handler Perl Module]
+
+== Configure OpenSRF for the Evergreen application ==
+
+There are a number of example OpenSRF configuration files in `/openils/conf/`
+that you can use as a template for your Evergreen installation. Issue the
+following commands as the *opensrf* Linux account:
+
+[source, bash]
+------------------------------------------------------------------------------
+cp -b /openils/conf/opensrf_core.xml.example /openils/conf/opensrf_core.xml
+cp -b /openils/conf/opensrf.xml.example /openils/conf/opensrf.xml
+------------------------------------------------------------------------------
+
+When you installed OpenSRF, you created four Jabber users on two
+separate domains and edited the `opensrf_core.xml` file accordingly. Please
+refer back to the OpenSRF README and, as the *opensrf* Linux account, edit the
+Evergreen version of the `opensrf_core.xml` file using the same Jabber users
+and domains as you used while installing and testing OpenSRF.
+
+[NOTE]
+The `-b` flag tells the `cp` command to create a backup version of the
+destination file. The backup version of the destination file has a tilde (`~`)
+appended to the file name, so if you have forgotten the Jabber users and
+domains, you can retrieve the settings from the backup version of the files.
+
+`eg_db_config`, described in xref:#creating_the_evergreen_database[Creating the Evergreen database], sets the database connection information in `opensrf.xml` for you.
+
+=== Configure action triggers for the Evergreen application ===
+_Action Triggers_ provide hooks for the system to perform actions when a given
+event occurs; for example, to generate reminder or overdue notices, the
+`checkout.due` hook is processed and events are triggered for potential actions
+if there is no checkin time.
+
+To enable the default set of hooks, issue the following command as the
+*opensrf* Linux account:
+
+[source, bash]
+------------------------------------------------------------------------------
+cp -b /openils/conf/action_trigger_filters.json.example /openils/conf/action_trigger_filters.json
+------------------------------------------------------------------------------
+
+For more information about configuring and running action triggers, see
+xref:admin:actiontriggers_process.adoc#processing_action_triggers[Notifications / Action Triggers].
+
+[[creating_the_evergreen_database]]
+== Creating the Evergreen database ==
+
+=== Setting up the PostgreSQL server ===
+
+For production use, most libraries install the PostgreSQL database server on a
+dedicated machine. Therefore, by default, the `Makefile.install` prerequisite
+installer does *not* install the PostgreSQL 9 database server that is required
+by every Evergreen system. You can install the packages required by Debian or
+Ubuntu on the machine of your choice using the following commands as the
+*root* Linux account:
+
+. Installing PostgreSQL server packages
+
+Each OS build target provides the postgres server installation packages
+required for each operating system. To install Postgres server packages,
+use the make target 'postgres-server-<OSTYPE>'. Choose the most appropriate
+command below based on your operating system. This will install PostgreSQL 9.6,
+the minimum supported version.
+
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-buster
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-stretch
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-jessie
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-xenial
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-bionic
+------------------------------------------------------------------------------
+
+To install PostgreSQL version 10, use the following command for your operating
+system:
+
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-buster-10
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-stretch-10
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-jessie-10
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-xenial-10
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-bionic-10
+------------------------------------------------------------------------------
+
+For a standalone PostgreSQL server, install the following Perl modules for your
+distribution as the *root* Linux account:
+
+.(Debian and Ubuntu)
+No extra modules required for these distributions.
+
+You need to create a PostgreSQL superuser to create and access the database.
+Issue the following command as the *postgres* Linux account to create a new
+PostgreSQL superuser named `evergreen`. When prompted, enter the new user's
+password:
+
+[source, bash]
+------------------------------------------------------------------------------
+createuser -s -P evergreen
+------------------------------------------------------------------------------
+
+.Enabling connections to the PostgreSQL database
+
+Your PostgreSQL database may be configured by default to prevent connections,
+for example, it might reject attempts to connect via TCP/IP or from other
+servers. To enable TCP/IP connections from localhost, check your `pg_hba.conf`
+file, found in the `/etc/postgresql/` directory on Debian and Ubuntu.
+A simple way to enable TCP/IP
+connections from localhost to all databases with password authentication, which
+would be suitable for a test install of Evergreen on a single server, is to
+ensure the file contains the following entries _before_ any "host ... ident"
+entries:
+
+------------------------------------------------------------------------------
+host all all ::1/128 md5
+host all all 127.0.0.1/32 md5
+------------------------------------------------------------------------------
+
+When you change the `pg_hba.conf` file, you will need to reload PostgreSQL to
+make the changes take effect. For more information on configuring connectivity
+to PostgreSQL, see
+http://www.postgresql.org/docs/devel/static/auth-pg-hba-conf.html
+
+=== Creating the Evergreen database and schema ===
+
+Once you have created the *evergreen* PostgreSQL account, you also need to
+create the database and schema, and configure your configuration files to point
+at the database server. Issue the following command as the *root* Linux account
+from inside the Evergreen source directory, replacing <user>, <password>,
+<hostname>, <port>, and <dbname> with the appropriate values for your
+PostgreSQL database (where <user> and <password> are for the *evergreen*
+PostgreSQL account you just created), and replace <admin-user> and <admin-pass>
+with the values you want for the *egadmin* Evergreen administrator account:
+
+[source, bash]
+------------------------------------------------------------------------------
+perl Open-ILS/src/support-scripts/eg_db_config --update-config \
+ --service all --create-database --create-schema --create-offline \
+ --user <user> --password <password> --hostname <hostname> --port <port> \
+ --database <dbname> --admin-user <admin-user> --admin-pass <admin-pass>
+------------------------------------------------------------------------------
+
+This creates the database and schema and configures all of the services in
+your `/openils/conf/opensrf.xml` configuration file to point to that database.
+It also creates the configuration files required by the Evergreen `cgi-bin`
+administration scripts, and sets the user name and password for the *egadmin*
+Evergreen administrator account to your requested values.
+
+You can get a complete set of options for `eg_db_config` by passing the
+`--help` parameter.
+
+=== Loading sample data ===
+
+If you add the `--load-all-sample` parameter to the `eg_db_config` command,
+a set of authority and bibliographic records, call numbers, copies, staff
+and regular users, and transactions will be loaded into your target
+database. This sample dataset is commonly referred to as the _concerto_
+sample data, and can be useful for testing out Evergreen functionality and
+for creating problem reports that developers can easily recreate with their
+own copy of the _concerto_ sample data.
+
+=== Creating the database on a remote server ===
+
+In a production instance of Evergreen, your PostgreSQL server should be
+installed on a dedicated server.
+
+==== PostgreSQL 9.6 and later ====
+
+To create the database instance on a remote database server running PostgreSQL
+9.6 or later, simply use the `--create-database` flag on `eg_db_config`.
+
+== Starting Evergreen ==
+
+1. As the *root* Linux account, start the `memcached` and `ejabberd` services
+(if they aren't already running):
++
+[source, bash]
+------------------------------------------------------------------------------
+/etc/init.d/ejabberd start
+/etc/init.d/memcached start
+------------------------------------------------------------------------------
++
+2. As the *opensrf* Linux account, start Evergreen. The `-l` flag in the
+following command is only necessary if you want to force Evergreen to treat the
+hostname as `localhost`; if you configured `opensrf.xml` using the real
+hostname of your machine as returned by `perl -ENet::Domain 'print
+Net::Domain::hostfqdn() . "\n";'`, you should not use the `-l` flag.
++
+[source, bash]
+------------------------------------------------------------------------------
+osrf_control -l --start-all
+------------------------------------------------------------------------------
++
+ ** If you receive the error message `bash: osrf_control: command not found`,
+ then your environment variable `PATH` does not include the `/openils/bin`
+ directory; this should have been set in the *opensrf* Linux account's
+ `.bashrc` configuration file. To manually set the `PATH` variable, edit the
+ configuration file `~/.bashrc` as the *opensrf* Linux account and add the
+ following line:
++
+[source, bash]
+------------------------------------------------------------------------------
+export PATH=$PATH:/openils/bin
+------------------------------------------------------------------------------
++
+3. As the *opensrf* Linux account, generate the Web files needed by the web staff
+ client and catalog and update the organization unit proximity (you need to do
+ this the first time you start Evergreen, and after that each time you change the library org unit configuration.
+):
++
+[source, bash]
+------------------------------------------------------------------------------
+autogen.sh
+------------------------------------------------------------------------------
++
+4. As the *root* Linux account, restart the Apache Web server:
++
+[source, bash]
+------------------------------------------------------------------------------
+/etc/init.d/apache2 restart
+------------------------------------------------------------------------------
++
+If the Apache Web server was running when you started the OpenSRF services, you
+might not be able to successfully log in to the OPAC or web staff client until the
+Apache Web server is restarted.
+
+== Testing connections to Evergreen ==
+
+Once you have installed and started Evergreen, test your connection to
+Evergreen via `srfsh`. As the *opensrf* Linux account, issue the following
+commands to start `srfsh` and try to log onto the Evergreen server using the
+*egadmin* Evergreen administrator user name and password that you set using the
+`eg_db_config` command:
+
+[source, bash]
+------------------------------------------------------------------------------
+/openils/bin/srfsh
+srfsh% login <admin-user> <admin-pass>
+------------------------------------------------------------------------------
+
+You should see a result like:
+
+ Received Data: "250bf1518c7527a03249858687714376"
+ ------------------------------------
+ Request Completed Successfully
+ Request Time in seconds: 0.045286
+ ------------------------------------
+
+ Received Data: {
+ "ilsevent":0,
+ "textcode":"SUCCESS",
+ "desc":" ",
+ "pid":21616,
+ "stacktrace":"oils_auth.c:304",
+ "payload":{
+ "authtoken":"e5f9827cc0f93b503a1cc66bee6bdd1a",
+ "authtime":420
+ }
+
+ }
+
+ ------------------------------------
+ Request Completed Successfully
+ Request Time in seconds: 1.336568
+ ------------------------------------
+[[install-troubleshooting-1]]
+If this does not work, it's time to do some troubleshooting.
+
+ * As the *opensrf* Linux account, run the `settings-tester.pl` script to see
+ if it finds any system configuration problems. The script is found at
+ `Open-ILS/src/support-scripts/settings-tester.pl` in the Evergreen source
+ tree.
+ * Follow the steps in the http://evergreen-ils.org/dokuwiki/doku.php?id=troubleshooting:checking_for_errors[troubleshooting guide].
+ * If you have faithfully followed the entire set of installation steps
+ listed here, you are probably extremely close to a working system.
+ Gather your configuration files and log files and contact the
+ http://evergreen-ils.org/communicate/mailing-lists/[Evergreen development
+mailing list] for assistance before making any drastic changes to your system
+ configuration.
+
+== Getting help ==
+
+Need help installing or using Evergreen? Join the mailing lists at
+http://evergreen-ils.org/communicate/mailing-lists/ or contact us on the Freenode
+IRC network on the #evergreen channel.
+
+== License ==
+
+This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
+Unported License. To view a copy of this license, visit
+http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
+Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.