Bumping version numbers, adding Upgrade Script and Changelog
authorJane Sandberg <sandbej@linnbenton.edu>
Tue, 11 Aug 2020 22:05:38 +0000 (15:05 -0700)
committerJane Sandberg <sandbej@linnbenton.edu>
Tue, 11 Aug 2020 23:16:58 +0000 (16:16 -0700)
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
ChangeLog
Open-ILS/src/perlmods/lib/OpenILS/Application.pm
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/version-upgrade/3.5.0-3.5.1-upgrade-db.sql [new file with mode: 0644]
Open-ILS/xul/staff_client/chrome/content/main/about.html
Open-ILS/xul/staff_client/defaults/preferences/prefs.js
Open-ILS/xul/staff_client/windowssetup.nsi
README [changed from symlink to file mode: 0644]
configure.ac
docs/installation/server_upgrade.adoc

index 1f72b2c..de79038 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-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 3ec3e425c4fb2d80cdb6b5255c1a06ef039abe75
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Aug 11 14:41:20 2020 -0700
+
+    bumping Perl version string for 3.5.1
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       Open-ILS/src/perlmods/lib/OpenILS.pm
+
+commit f18002fc8abf9f067be2bfbc2fb1d359d6afbdfb
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Aug 11 14:40:15 2020 -0700
+
+    Translation updates - po files
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+3      3       build/i18n/po/AutoFieldWidget.js/ar-JO.po
+3      3       build/i18n/po/AutoFieldWidget.js/cs-CZ.po
+3      3       build/i18n/po/AutoFieldWidget.js/de-DE.po
+3      3       build/i18n/po/AutoFieldWidget.js/en-CA.po
+3      3       build/i18n/po/AutoFieldWidget.js/en-GB.po
+3      3       build/i18n/po/AutoFieldWidget.js/es-ES.po
+3      3       build/i18n/po/AutoFieldWidget.js/fi-FI.po
+3      3       build/i18n/po/AutoFieldWidget.js/fr-CA.po
+3      3       build/i18n/po/AutoFieldWidget.js/he-IL.po
+3      3       build/i18n/po/AutoFieldWidget.js/hu-HU.po
+3      3       build/i18n/po/AutoFieldWidget.js/hy-AM.po
+3      3       build/i18n/po/AutoFieldWidget.js/oc-FR.po
+3      3       build/i18n/po/AutoFieldWidget.js/pt-BR.po
+3      3       build/i18n/po/AutoFieldWidget.js/ru-RU.po
+3      3       build/i18n/po/AutoFieldWidget.js/sv-SE.po
+3      3       build/i18n/po/AutoFieldWidget.js/tr-TR.po
+3      3       build/i18n/po/FlattenerGrid.js/ar-JO.po
+3      3       build/i18n/po/FlattenerGrid.js/cs-CZ.po
+3      3       build/i18n/po/FlattenerGrid.js/de-DE.po
+3      3       build/i18n/po/FlattenerGrid.js/en-CA.po
+3      3       build/i18n/po/FlattenerGrid.js/en-GB.po
+3      3       build/i18n/po/FlattenerGrid.js/es-ES.po
+3      3       build/i18n/po/FlattenerGrid.js/fi-FI.po
+3      3       build/i18n/po/FlattenerGrid.js/fr-CA.po
+3      3       build/i18n/po/FlattenerGrid.js/hy-AM.po
+3      3       build/i18n/po/PCrudFilterPane.js/ar-JO.po
+3      3       build/i18n/po/PCrudFilterPane.js/cs-CZ.po
+3      3       build/i18n/po/PCrudFilterPane.js/de-DE.po
+3      3       build/i18n/po/PCrudFilterPane.js/en-GB.po
+3      3       build/i18n/po/PCrudFilterPane.js/es-ES.po
+3      3       build/i18n/po/PCrudFilterPane.js/fi-FI.po
+3      3       build/i18n/po/PCrudFilterPane.js/hy-AM.po
+3      3       build/i18n/po/Searcher.js/ar-JO.po
+3      3       build/i18n/po/Searcher.js/cs-CZ.po
+3      3       build/i18n/po/Searcher.js/de-DE.po
+3      3       build/i18n/po/Searcher.js/en-CA.po
+3      3       build/i18n/po/Searcher.js/en-GB.po
+3      3       build/i18n/po/Searcher.js/es-ES.po
+3      3       build/i18n/po/Searcher.js/fi-FI.po
+3      3       build/i18n/po/Searcher.js/fr-CA.po
+3      3       build/i18n/po/Searcher.js/hy-AM.po
+3      3       build/i18n/po/Searcher.js/oc-FR.po
+3      3       build/i18n/po/Searcher.js/pt-BR.po
+3      3       build/i18n/po/Searcher.js/ru-RU.po
+3      3       build/i18n/po/TranslatorPopup.js/ar-JO.po
+3      3       build/i18n/po/TranslatorPopup.js/cs-CZ.po
+3      3       build/i18n/po/TranslatorPopup.js/de-DE.po
+3      3       build/i18n/po/TranslatorPopup.js/en-CA.po
+3      3       build/i18n/po/TranslatorPopup.js/en-GB.po
+3      3       build/i18n/po/TranslatorPopup.js/es-ES.po
+3      3       build/i18n/po/TranslatorPopup.js/fi-FI.po
+3      3       build/i18n/po/TranslatorPopup.js/fr-CA.po
+3      3       build/i18n/po/TranslatorPopup.js/he-IL.po
+3      3       build/i18n/po/TranslatorPopup.js/hu-HU.po
+3      3       build/i18n/po/TranslatorPopup.js/hy-AM.po
+3      3       build/i18n/po/TranslatorPopup.js/oc-FR.po
+3      3       build/i18n/po/TranslatorPopup.js/pt-BR.po
+3      3       build/i18n/po/TranslatorPopup.js/ru-RU.po
+3      3       build/i18n/po/TranslatorPopup.js/sv-SE.po
+3      3       build/i18n/po/TranslatorPopup.js/tr-TR.po
+3      3       build/i18n/po/URLVerify.js/ar-JO.po
+3      3       build/i18n/po/URLVerify.js/cs-CZ.po
+3      3       build/i18n/po/URLVerify.js/de-DE.po
+3      3       build/i18n/po/URLVerify.js/en-GB.po
+3      3       build/i18n/po/URLVerify.js/es-ES.po
+3      3       build/i18n/po/URLVerify.js/hy-AM.po
+3      3       build/i18n/po/URLVerify.js/pt-BR.po
+3      3       build/i18n/po/URLVerify.js/tr-TR.po
+3      3       build/i18n/po/User.js/ar-JO.po
+3      3       build/i18n/po/User.js/cs-CZ.po
+3      3       build/i18n/po/User.js/de-DE.po
+3      3       build/i18n/po/User.js/en-CA.po
+3      3       build/i18n/po/User.js/en-GB.po
+3      3       build/i18n/po/User.js/es-ES.po
+3      3       build/i18n/po/User.js/fi-FI.po
+3      3       build/i18n/po/User.js/fr-CA.po
+3      3       build/i18n/po/User.js/he-IL.po
+3      3       build/i18n/po/User.js/hu-HU.po
+3      3       build/i18n/po/User.js/hy-AM.po
+3      3       build/i18n/po/User.js/oc-FR.po
+3      3       build/i18n/po/User.js/pt-BR.po
+3      3       build/i18n/po/User.js/ru-RU.po
+3      3       build/i18n/po/User.js/sv-SE.po
+3      3       build/i18n/po/User.js/tr-TR.po
+3      3       build/i18n/po/XULTermLoader.js/ar-JO.po
+3      3       build/i18n/po/XULTermLoader.js/cs-CZ.po
+3      3       build/i18n/po/XULTermLoader.js/de-DE.po
+3      3       build/i18n/po/XULTermLoader.js/en-CA.po
+3      3       build/i18n/po/XULTermLoader.js/en-GB.po
+3      3       build/i18n/po/XULTermLoader.js/es-ES.po
+3      3       build/i18n/po/XULTermLoader.js/fi-FI.po
+3      3       build/i18n/po/XULTermLoader.js/fr-CA.po
+3      3       build/i18n/po/XULTermLoader.js/he-IL.po
+3      3       build/i18n/po/XULTermLoader.js/hu-HU.po
+3      3       build/i18n/po/XULTermLoader.js/hy-AM.po
+3      3       build/i18n/po/XULTermLoader.js/oc-FR.po
+3      3       build/i18n/po/XULTermLoader.js/pt-BR.po
+3      3       build/i18n/po/XULTermLoader.js/ru-RU.po
+3      3       build/i18n/po/XULTermLoader.js/sv-SE.po
+3      3       build/i18n/po/XULTermLoader.js/tr-TR.po
+3      3       build/i18n/po/acq.js/ar-JO.po
+9      9       build/i18n/po/acq.js/cs-CZ.po
+3      3       build/i18n/po/acq.js/de-DE.po
+3      3       build/i18n/po/acq.js/en-CA.po
+3      3       build/i18n/po/acq.js/en-GB.po
+3      3       build/i18n/po/acq.js/es-ES.po
+3      3       build/i18n/po/acq.js/fi-FI.po
+3      3       build/i18n/po/acq.js/fr-CA.po
+3      3       build/i18n/po/acq.js/he-IL.po
+3      3       build/i18n/po/acq.js/hu-HU.po
+3      3       build/i18n/po/acq.js/hy-AM.po
+3      3       build/i18n/po/acq.js/oc-FR.po
+3      3       build/i18n/po/acq.js/pt-BR.po
+3      3       build/i18n/po/acq.js/ru-RU.po
+3      3       build/i18n/po/acq.js/sv-SE.po
+3      3       build/i18n/po/acq.js/tr-TR.po
+3      3       build/i18n/po/authority.js/ar-JO.po
+3      3       build/i18n/po/authority.js/cs-CZ.po
+3      3       build/i18n/po/authority.js/de-DE.po
+3      3       build/i18n/po/authority.js/en-CA.po
+3      3       build/i18n/po/authority.js/en-GB.po
+3      3       build/i18n/po/authority.js/es-ES.po
+3      3       build/i18n/po/authority.js/fi-FI.po
+3      3       build/i18n/po/authority.js/fr-CA.po
+3      3       build/i18n/po/authority.js/hy-AM.po
+3      3       build/i18n/po/authority.js/oc-FR.po
+3      3       build/i18n/po/authority.js/pt-BR.po
+3      3       build/i18n/po/authority.js/ru-RU.po
+3      3       build/i18n/po/authority.js/tr-TR.po
+3      3       build/i18n/po/capture.js/ar-JO.po
+3      3       build/i18n/po/capture.js/cs-CZ.po
+3      3       build/i18n/po/capture.js/de-DE.po
+3      3       build/i18n/po/capture.js/en-CA.po
+3      3       build/i18n/po/capture.js/en-GB.po
+3      3       build/i18n/po/capture.js/es-ES.po
+3      3       build/i18n/po/capture.js/fi-FI.po
+3      3       build/i18n/po/capture.js/fr-CA.po
+3      3       build/i18n/po/capture.js/he-IL.po
+3      3       build/i18n/po/capture.js/hu-HU.po
+3      3       build/i18n/po/capture.js/hy-AM.po
+3      3       build/i18n/po/capture.js/oc-FR.po
+3      3       build/i18n/po/capture.js/pt-BR.po
+3      3       build/i18n/po/capture.js/ru-RU.po
+3      3       build/i18n/po/capture.js/sv-SE.po
+3      3       build/i18n/po/capture.js/tr-TR.po
+3      3       build/i18n/po/conify.js/ar-JO.po
+3      3       build/i18n/po/conify.js/cs-CZ.po
+3      3       build/i18n/po/conify.js/de-DE.po
+3      3       build/i18n/po/conify.js/en-CA.po
+3      3       build/i18n/po/conify.js/en-GB.po
+3      3       build/i18n/po/conify.js/es-ES.po
+3      3       build/i18n/po/conify.js/fi-FI.po
+3      3       build/i18n/po/conify.js/fr-CA.po
+3      3       build/i18n/po/conify.js/he-IL.po
+3      3       build/i18n/po/conify.js/hu-HU.po
+3      3       build/i18n/po/conify.js/hy-AM.po
+3      3       build/i18n/po/conify.js/oc-FR.po
+3      3       build/i18n/po/conify.js/pt-BR.po
+3      3       build/i18n/po/conify.js/ru-RU.po
+3      3       build/i18n/po/conify.js/sv-SE.po
+3      3       build/i18n/po/conify.js/tr-TR.po
+19     19      build/i18n/po/conify/ar-JO.po
+19     19      build/i18n/po/conify/cs-CZ.po
+19     19      build/i18n/po/conify/es-ES.po
+19     19      build/i18n/po/conify/hy-AM.po
+2962   2931    build/i18n/po/db.seed/ar-JO.po
+2968   2937    build/i18n/po/db.seed/cs-CZ.po
+2959   2928    build/i18n/po/db.seed/de-DE.po
+2959   2928    build/i18n/po/db.seed/en-CA.po
+2959   2928    build/i18n/po/db.seed/en-GB.po
+2961   2930    build/i18n/po/db.seed/es-ES.po
+2961   2930    build/i18n/po/db.seed/fi-FI.po
+2959   2928    build/i18n/po/db.seed/fr-CA.po
+2957   2926    build/i18n/po/db.seed/he-IL.po
+2957   2926    build/i18n/po/db.seed/hu-HU.po
+2962   2931    build/i18n/po/db.seed/hy-AM.po
+2959   2928    build/i18n/po/db.seed/oc-FR.po
+2959   2928    build/i18n/po/db.seed/pt-BR.po
+2959   2928    build/i18n/po/db.seed/ru-RU.po
+2957   2926    build/i18n/po/db.seed/sv-SE.po
+2957   2926    build/i18n/po/db.seed/tr-TR.po
+3076   3055    build/i18n/po/fm_IDL.dtd/ar-JO.po
+3096   3069    build/i18n/po/fm_IDL.dtd/cs-CZ.po
+3073   3052    build/i18n/po/fm_IDL.dtd/de-DE.po
+3076   3055    build/i18n/po/fm_IDL.dtd/en-CA.po
+3076   3055    build/i18n/po/fm_IDL.dtd/en-GB.po
+3076   3055    build/i18n/po/fm_IDL.dtd/es-ES.po
+3076   3055    build/i18n/po/fm_IDL.dtd/fi-FI.po
+3073   3052    build/i18n/po/fm_IDL.dtd/fr-CA.po
+3073   3052    build/i18n/po/fm_IDL.dtd/he-IL.po
+3073   3052    build/i18n/po/fm_IDL.dtd/hu-HU.po
+3076   3055    build/i18n/po/fm_IDL.dtd/hy-AM.po
+3073   3052    build/i18n/po/fm_IDL.dtd/oc-FR.po
+3075   3054    build/i18n/po/fm_IDL.dtd/pt-BR.po
+3075   3054    build/i18n/po/fm_IDL.dtd/ru-RU.po
+3073   3052    build/i18n/po/fm_IDL.dtd/sv-SE.po
+3073   3052    build/i18n/po/fm_IDL.dtd/tr-TR.po
+91     87      build/i18n/po/ils_events.xml/ar-JO.po
+92     88      build/i18n/po/ils_events.xml/cs-CZ.po
+91     87      build/i18n/po/ils_events.xml/de-DE.po
+91     87      build/i18n/po/ils_events.xml/en-CA.po
+110    106     build/i18n/po/ils_events.xml/en-GB.po
+91     87      build/i18n/po/ils_events.xml/es-ES.po
+91     87      build/i18n/po/ils_events.xml/fi-FI.po
+91     87      build/i18n/po/ils_events.xml/fr-CA.po
+91     87      build/i18n/po/ils_events.xml/he-IL.po
+91     87      build/i18n/po/ils_events.xml/hu-HU.po
+91     87      build/i18n/po/ils_events.xml/hy-AM.po
+91     87      build/i18n/po/ils_events.xml/oc-FR.po
+91     87      build/i18n/po/ils_events.xml/pt-BR.po
+91     87      build/i18n/po/ils_events.xml/ru-RU.po
+91     87      build/i18n/po/ils_events.xml/sv-SE.po
+91     87      build/i18n/po/ils_events.xml/tr-TR.po
+29     17      build/i18n/po/kpac/ar-JO.po
+30     18      build/i18n/po/kpac/cs-CZ.po
+29     17      build/i18n/po/kpac/de-DE.po
+29     17      build/i18n/po/kpac/en-GB.po
+29     17      build/i18n/po/kpac/es-ES.po
+29     17      build/i18n/po/kpac/hy-AM.po
+7      7       build/i18n/po/lang.dtd/cs-CZ.po
+3      3       build/i18n/po/match_set.js/ar-JO.po
+3      3       build/i18n/po/match_set.js/cs-CZ.po
+3      3       build/i18n/po/match_set.js/en-GB.po
+3      3       build/i18n/po/match_set.js/es-ES.po
+3      3       build/i18n/po/match_set.js/fr-CA.po
+3      3       build/i18n/po/match_set.js/hy-AM.po
+3      3       build/i18n/po/opac.js/ar-JO.po
+3      3       build/i18n/po/opac.js/cs-CZ.po
+3      3       build/i18n/po/opac.js/de-DE.po
+3      3       build/i18n/po/opac.js/en-CA.po
+3      3       build/i18n/po/opac.js/en-GB.po
+3      3       build/i18n/po/opac.js/es-ES.po
+3      3       build/i18n/po/opac.js/fi-FI.po
+3      3       build/i18n/po/opac.js/fr-CA.po
+3      3       build/i18n/po/opac.js/he-IL.po
+3      3       build/i18n/po/opac.js/hu-HU.po
+3      3       build/i18n/po/opac.js/hy-AM.po
+3      3       build/i18n/po/opac.js/oc-FR.po
+3      3       build/i18n/po/opac.js/pt-BR.po
+3      3       build/i18n/po/opac.js/ru-RU.po
+3      3       build/i18n/po/opac.js/sv-SE.po
+3      3       build/i18n/po/opac.js/tr-TR.po
+3      3       build/i18n/po/pickup_and_return.js/ar-JO.po
+3      3       build/i18n/po/pickup_and_return.js/cs-CZ.po
+3      3       build/i18n/po/pickup_and_return.js/de-DE.po
+3      3       build/i18n/po/pickup_and_return.js/en-CA.po
+3      3       build/i18n/po/pickup_and_return.js/en-GB.po
+3      3       build/i18n/po/pickup_and_return.js/es-ES.po
+3      3       build/i18n/po/pickup_and_return.js/fi-FI.po
+3      3       build/i18n/po/pickup_and_return.js/fr-CA.po
+3      3       build/i18n/po/pickup_and_return.js/he-IL.po
+3      3       build/i18n/po/pickup_and_return.js/hu-HU.po
+3      3       build/i18n/po/pickup_and_return.js/hy-AM.po
+3      3       build/i18n/po/pickup_and_return.js/oc-FR.po
+3      3       build/i18n/po/pickup_and_return.js/pt-BR.po
+3      3       build/i18n/po/pickup_and_return.js/ru-RU.po
+3      3       build/i18n/po/pickup_and_return.js/sv-SE.po
+3      3       build/i18n/po/pickup_and_return.js/tr-TR.po
+3      3       build/i18n/po/pull_list.js/ar-JO.po
+3      3       build/i18n/po/pull_list.js/cs-CZ.po
+3      3       build/i18n/po/pull_list.js/de-DE.po
+3      3       build/i18n/po/pull_list.js/en-CA.po
+3      3       build/i18n/po/pull_list.js/en-GB.po
+3      3       build/i18n/po/pull_list.js/es-ES.po
+3      3       build/i18n/po/pull_list.js/fi-FI.po
+3      3       build/i18n/po/pull_list.js/fr-CA.po
+3      3       build/i18n/po/pull_list.js/he-IL.po
+3      3       build/i18n/po/pull_list.js/hu-HU.po
+3      3       build/i18n/po/pull_list.js/hy-AM.po
+3      3       build/i18n/po/pull_list.js/oc-FR.po
+3      3       build/i18n/po/pull_list.js/pt-BR.po
+3      3       build/i18n/po/pull_list.js/ru-RU.po
+3      3       build/i18n/po/pull_list.js/sv-SE.po
+3      3       build/i18n/po/pull_list.js/tr-TR.po
+3      3       build/i18n/po/register.js/ar-JO.po
+3      3       build/i18n/po/register.js/cs-CZ.po
+3      3       build/i18n/po/register.js/de-DE.po
+3      3       build/i18n/po/register.js/en-CA.po
+3      3       build/i18n/po/register.js/en-GB.po
+3      3       build/i18n/po/register.js/es-ES.po
+3      3       build/i18n/po/register.js/fi-FI.po
+3      3       build/i18n/po/register.js/fr-CA.po
+3      3       build/i18n/po/register.js/he-IL.po
+3      3       build/i18n/po/register.js/hu-HU.po
+3      3       build/i18n/po/register.js/hy-AM.po
+3      3       build/i18n/po/register.js/oc-FR.po
+3      3       build/i18n/po/register.js/pt-BR.po
+3      3       build/i18n/po/register.js/ru-RU.po
+3      3       build/i18n/po/register.js/sv-SE.po
+3      3       build/i18n/po/register.js/tr-TR.po
+3      3       build/i18n/po/reports.js/ar-JO.po
+3      3       build/i18n/po/reports.js/cs-CZ.po
+3      3       build/i18n/po/reports.js/de-DE.po
+3      3       build/i18n/po/reports.js/en-CA.po
+3      3       build/i18n/po/reports.js/en-GB.po
+3      3       build/i18n/po/reports.js/es-ES.po
+3      3       build/i18n/po/reports.js/fi-FI.po
+3      3       build/i18n/po/reports.js/fr-CA.po
+3      3       build/i18n/po/reports.js/he-IL.po
+3      3       build/i18n/po/reports.js/hu-HU.po
+3      3       build/i18n/po/reports.js/hy-AM.po
+3      3       build/i18n/po/reports.js/oc-FR.po
+3      3       build/i18n/po/reports.js/pt-BR.po
+3      3       build/i18n/po/reports.js/ru-RU.po
+3      3       build/i18n/po/reports.js/sv-SE.po
+3      3       build/i18n/po/reports.js/tr-TR.po
+3      3       build/i18n/po/reservation.js/ar-JO.po
+3      3       build/i18n/po/reservation.js/cs-CZ.po
+3      3       build/i18n/po/reservation.js/de-DE.po
+3      3       build/i18n/po/reservation.js/en-CA.po
+3      3       build/i18n/po/reservation.js/en-GB.po
+3      3       build/i18n/po/reservation.js/es-ES.po
+3      3       build/i18n/po/reservation.js/fi-FI.po
+3      3       build/i18n/po/reservation.js/fr-CA.po
+3      3       build/i18n/po/reservation.js/he-IL.po
+3      3       build/i18n/po/reservation.js/hu-HU.po
+3      3       build/i18n/po/reservation.js/hy-AM.po
+3      3       build/i18n/po/reservation.js/oc-FR.po
+3      3       build/i18n/po/reservation.js/pt-BR.po
+3      3       build/i18n/po/reservation.js/ru-RU.po
+3      3       build/i18n/po/reservation.js/sv-SE.po
+3      3       build/i18n/po/reservation.js/tr-TR.po
+3      3       build/i18n/po/selfcheck.js/ar-JO.po
+3      3       build/i18n/po/selfcheck.js/cs-CZ.po
+3      3       build/i18n/po/selfcheck.js/de-DE.po
+3      3       build/i18n/po/selfcheck.js/en-CA.po
+3      3       build/i18n/po/selfcheck.js/en-GB.po
+3      3       build/i18n/po/selfcheck.js/es-ES.po
+3      3       build/i18n/po/selfcheck.js/fi-FI.po
+3      3       build/i18n/po/selfcheck.js/fr-CA.po
+3      3       build/i18n/po/selfcheck.js/he-IL.po
+3      3       build/i18n/po/selfcheck.js/hu-HU.po
+3      3       build/i18n/po/selfcheck.js/hy-AM.po
+3      3       build/i18n/po/selfcheck.js/oc-FR.po
+3      3       build/i18n/po/selfcheck.js/pt-BR.po
+3      3       build/i18n/po/selfcheck.js/ru-RU.po
+3      3       build/i18n/po/selfcheck.js/sv-SE.po
+3      3       build/i18n/po/selfcheck.js/tr-TR.po
+3      3       build/i18n/po/serial.js/ar-JO.po
+3      3       build/i18n/po/serial.js/cs-CZ.po
+3      3       build/i18n/po/serial.js/de-DE.po
+3      3       build/i18n/po/serial.js/en-GB.po
+3      3       build/i18n/po/serial.js/es-ES.po
+3      3       build/i18n/po/serial.js/hy-AM.po
+563    493     build/i18n/po/tpac/ar-JO.po
+604    531     build/i18n/po/tpac/cs-CZ.po
+563    493     build/i18n/po/tpac/de-DE.po
+563    493     build/i18n/po/tpac/en-CA.po
+600    530     build/i18n/po/tpac/en-GB.po
+563    493     build/i18n/po/tpac/es-ES.po
+563    493     build/i18n/po/tpac/fi-FI.po
+567    497     build/i18n/po/tpac/fr-CA.po
+563    493     build/i18n/po/tpac/he-IL.po
+563    493     build/i18n/po/tpac/hu-HU.po
+563    493     build/i18n/po/tpac/hy-AM.po
+563    493     build/i18n/po/tpac/oc-FR.po
+563    493     build/i18n/po/tpac/pt-BR.po
+563    493     build/i18n/po/tpac/ru-RU.po
+563    493     build/i18n/po/tpac/sv-SE.po
+563    493     build/i18n/po/tpac/tr-TR.po
+5      5       build/i18n/po/urlverify/ar-JO.po
+5      5       build/i18n/po/urlverify/cs-CZ.po
+5      5       build/i18n/po/urlverify/de-DE.po
+5      5       build/i18n/po/urlverify/en-GB.po
+5      5       build/i18n/po/urlverify/es-ES.po
+5      5       build/i18n/po/urlverify/hy-AM.po
+3      3       build/i18n/po/vandelay.js/ar-JO.po
+3      3       build/i18n/po/vandelay.js/cs-CZ.po
+3      3       build/i18n/po/vandelay.js/en-CA.po
+3      3       build/i18n/po/vandelay.js/en-GB.po
+3      3       build/i18n/po/vandelay.js/es-ES.po
+3      3       build/i18n/po/vandelay.js/hy-AM.po
+3      3       build/i18n/po/vandelay.js/pt-BR.po
+13     12      build/i18n/po/vandelay/cs-CZ.po
+611    497     build/i18n/po/webstaff/ar-JO.po
+973    850     build/i18n/po/webstaff/cs-CZ.po
+611    497     build/i18n/po/webstaff/en-CA.po
+938    824     build/i18n/po/webstaff/en-GB.po
+611    497     build/i18n/po/webstaff/es-ES.po
+611    497     build/i18n/po/webstaff/hy-AM.po
+611    497     build/i18n/po/webstaff/ru-RU.po
+
+commit 57266cba0df0fbbae766d64041b22071e8da7b74
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Aug 11 14:21:57 2020 -0700
+
+    Translation updates - newpot
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+15     15      build/i18n/po/conify/conify.pot
+2996   2970    build/i18n/po/db.seed/db.seed.pot
+3044   3022    build/i18n/po/fm_IDL.dtd/fm_IDL.dtd.pot
+12     0       build/i18n/po/kpac/kpac.pot
+2      2       build/i18n/po/tpac/tpac.pot
+400    316     build/i18n/po/webstaff/webstaff.pot
+
+commit a0fcb5a2204856bb8bcf073238dc3b7ecd1db76d
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Aug 11 13:11:14 2020 -0700
+
+    Docs: 3.5.1 release notes
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+200    0       docs/RELEASE_NOTES_3_5.adoc
+
+commit bf5bf3fbeffe73eeb9649dcbeeec2b98e40578be
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Aug 11 13:10:44 2020 -0700
+
+    Docs: tweaks to 3.4.4 release notes
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+31     1       docs/RELEASE_NOTES_3_4.adoc
+
+commit 4d9ebac5c46bd85de122c1670bc1bee4efcf5f2e
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Aug 11 11:24:46 2020 -0700
+
+    Docs: 3.4.4 release notes
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+160    0       docs/RELEASE_NOTES_3_4.adoc
+
+commit 652a68cd350e5535594150ba1eed91bfe877de78
+Author: Remington Steed <rjs7@calvin.edu>
+Date:   Wed Jun 10 12:06:05 2020 -0400
+
+    Docs: Release notes for 3.4.3
+    
+    Signed-off-by: Remington Steed <rjs7@calvin.edu>
+
+88     0       docs/RELEASE_NOTES_3_4.adoc
+
+commit 515785ef611c5301184b1a22f7dd96db91f8bdd5
+Author: Michele Morgan <mmorgan@noblenet.org>
+Date:   Tue Aug 27 08:55:06 2019 -0400
+
+    LP1811466 Add fields to holdings editor column pickers
+    
+    Adds item fields creator, editor and last edit date to the working and
+    completed grids in the holdings editor.
+    
+    Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+9      3       Open-ILS/src/templates/staff/cat/volcopy/t_edit.tt2
+1      1       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 3403cc4a63516af0d08682465baa94189f9e89ca
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Aug 3 17:14:12 2020 -0400
+
+    LP#1839369: (follow-up) tweak button and styles
+    
+    - Change the button text from "Search" to "Search Catalog"
+    - adjust the styling on the AngularJS side to cuddle the
+      button with the search input
+    - standardize the placeholder text as "Search for..."
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       Open-ILS/src/eg2/src/app/staff/splash.component.html
+9      9       Open-ILS/src/templates/staff/t_splash.tt2
+
+commit ed07687a0f7b56704750b6b2f3ea6f97e67156fe
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date:   Tue Oct 22 16:16:35 2019 -0400
+
+    LP#1839369 Accessibility for Search Box
+    
+    This adds an accessible label to the Search box on the splash
+    page of the staff client as well as to the Angular version of
+    the splash page.
+    
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      1       Open-ILS/src/eg2/src/app/staff/splash.component.html
+1      0       Open-ILS/src/templates/staff/t_splash.tt2
+
+commit 86b8dc5ac090c86a0dd4c34176398e8915e5a08f
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Wed Mar 18 12:41:38 2020 -0400
+
+    LP1867834 Staffcat clear basket on logout
+    
+    Tell the browser/local store service to treat the staff catalog basket
+    cache key as a "login item", meaning it should be cleared upon logout.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      0       Open-ILS/src/eg2/src/app/share/catalog/basket.service.ts
+
+commit b0937bec9e04c649112dfa88e737fd73cb448d70
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Jul 28 11:09:45 2020 -0400
+
+    LP#1889251: make call number affix sort keys read-only
+    
+    This patch makes the call number prefix and suffix label sort
+    key fields read-only on their respective Server Administration
+    pages, as any values that a user would try to set for them
+    would get overwritten by a database trigger.
+    
+    To test
+    -------
+    [1] Apply the patch.
+    [2] Go to Server Administration -> Call Number Prefixes (or Suffixes)
+        and attempt create and edit new affixes.
+    [3] Verify that the label sort key is a read-only display field on the
+        edit modal.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+
+10     0       Open-ILS/src/eg2/src/app/staff/admin/server/routing.module.ts
+
+commit 54e8ad12a5c11124938208cc98f9aa22bf957e76
+Author: Josh Stompro <stompro@stompro.org>
+Date:   Mon Mar 4 11:16:56 2019 -0600
+
+    LP#1674364 - Use database bib id for cover art lookup
+    
+    Export the 901c as the URN:BIBID identifier to allow the
+    ATOM2XHTML.xsl to construct a cover art img link using it.
+    
+    Testing Notes:
+    
+    I used a bookbag to test this out.
+    1. Create a public bookbag of items and grab the bookbag id.
+    2. View the source of these links on your system to see the current output.
+     /opac/extras/feed/bookbag/atom/<bookbagid>
+     /opac/extras/feed/bookbag/html-full/<bookbagid>
+       Make note that the jacket img link uses the ISBN to lookup cover art.
+    
+    Make changes.
+    1. Restart supercat to re-load xsl transfor files.
+      osrf_control -l --service open-ils.supercat --restart
+    2. View the source and output of these links on your system to see the changes.
+     /opac/extras/feed/bookbag/atom/<bookbagid>
+     /opac/extras/feed/bookbag/html-full/<bookbagid>
+       The cover art images should show up now in the html-full, and the
+       URN:BIBID: identifier should be populated in the atom file.
+    
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      17      Open-ILS/xsl/ATOM2XHTML.xsl
+9      0       Open-ILS/xsl/MARC21slim2ATOM.xsl
+
+commit 3f1d031646eef2696eef0565b59284a28e26150d
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Aug 3 17:38:48 2020 -0400
+
+    LP#1731370: (follow-up) fix a typo that was causing console noise
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit c39150adc163e7d71377783ae0f3955340b9420b
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Aug 3 17:31:32 2020 -0400
+
+    LP#1761142: (follow-up) tweak field-change style
+    
+    [1] Ensure that the border is displayed.
+    [2] Change the border color to one that has more contrast
+        as compared to the bg-success background color.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/templates/staff/cat/volcopy/t_attr_edit.tt2
+
+commit 1201866cafc701e8921f63392bfa68a2ea811dc5
+Author: a. bellenir <abelleni@grpl.org>
+Date:   Thu Mar 28 12:26:37 2019 -0400
+
+    LP1761142 Volume Copy Editor Changed Fields Hard to Discern
+    
+    Add a changed_fields object to the scope and update it as copies are
+    changed. The function field_changed(field) determines if any of the
+    selected copies have altered the given field.  finally, a CSS class,
+    field-changed, is applied to add a green border to fields whose values
+    have been modified.
+    
+    Signed-off-by: a. bellenir <abelleni@grpl.org>
+    Signed-off-by: Ruth Frasur <rfrasur@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+21     18      Open-ILS/src/templates/staff/cat/volcopy/t_attr_edit.tt2
+11     0       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 7eb9d3c1a0c2f4848440a707e0dc3c792422c7f6
+Author: Josh Stompro <stompro@stompro.org>
+Date:   Tue Jan 28 10:04:02 2020 -0600
+
+    LP#1783793 - Suspend holds when activation date set in web client angularjs
+    
+    1. Modify Dates popup changed to not allow picking dates in the past for hold
+      activation date both in the date picker, and if typed in manually.  If a
+      date in the past is typed in, it is changed to today's date and an alert
+      message is displayed.  The date picker just won't allow past days to be
+      selected.  The alert message remains until a date in the future is selected.
+    
+    2. Suspend holds when the activation date is set and saved.
+    
+    3. Adds a note about the fact that the hold will be suspended when the hold
+      activation date is selected for editing.  This makes the behavior clear so
+      staff don't have to figure it out by trial and error.
+    
+    4. Updates several sr-only (Screen Reader Only) labels in the holds date popup
+      template that were set to the wrong values.  The file was copied from the hold
+      notification popup and the screen reader descriptions were left unchanged from
+      those values.
+    
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+9      4       Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2
+17     1       Open-ILS/web/js/ui/default/staff/circ/services/holds.js
+
+commit 0a73a417c0585d5ba31426657d8df463bfb661bf
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Tue Jun 30 15:33:23 2020 -0400
+
+    LP#1885759: Count months and quarters across year boundaries
+    
+    We need to add year-multiples of months or quarters when using the
+    months_ago or quarters_ago transforms in the reporter.
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+4      2       Open-ILS/src/perlmods/lib/OpenILS/Reporter/SQLBuilder.pm
+
+commit 489a77557ec21cf17b7bce48e187bb64720e77a8
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date:   Tue Oct 8 16:00:12 2019 -0700
+
+    LP#1847343: fix Exclude Electronic Resources checkbox when locale picker is enabled
+    
+    Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      4       Open-ILS/web/js/ui/default/opac/simple.js
+
+commit 9533ecd64e1de405f9fd6575dae8b7a87c5fa956
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Fri Oct 25 21:11:49 2019 -0700
+
+    LP #1717996 (follow-up) Change label for shareable user buckets
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      1       Open-ILS/src/templates/staff/circ/patron/bucket/t_bucket_create.tt2
+2      1       Open-ILS/src/templates/staff/circ/patron/bucket/t_bucket_edit.tt2
+
+commit 461079fd6a82c88820e638da35dbb5de5c597760
+Author: Tiffany Little <tlittle@georgialibraries.org>
+Date:   Mon Oct 21 15:00:30 2019 -0400
+
+    LP #1717996 Change label for shareable buckets
+    
+    Changes 'publicly visible' label on buckets and also adds a tooltip with an explanation. Also makes sure that clicking the tooltip does not check the checkbox automatically.
+    
+    Signed-off-by: Tiffany Little <tlittle@georgialibraries.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      1       Open-ILS/src/templates/staff/cat/bucket/share/t_bucket_create.tt2
+2      1       Open-ILS/src/templates/staff/cat/bucket/share/t_bucket_edit.tt2
+
+commit c4fa3ca2c8fa7af9e5eb5e92b39477272edeb042
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Fri Jul 31 12:39:23 2020 -0400
+
+    LP1842431: Add a release note
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+11     0       docs/RELEASE_NOTES_NEXT/Administration/autorenewal_action_trigger_result_code.adoc
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Administration/autorenewal_action_trigger_result_code.adoc
+
+commit 040c4d2c70f5ab0d1f78596aaf07bddc27444395
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Fri Jul 31 11:10:24 2020 -0400
+
+    LP1842431: Remove redundant description field
+    
+    This branch brings about a good change, but I think having reason
+    and description be identical in the case of a failure and blank /
+    'SUCCESS' in the case of, well, success, is redundant and potentially
+    confusing. Also, if it's not used in the default template I doubt
+    anyone ever realizes it's there. :) Template editors can use
+    is_renewed to decide if they want to display success as a result
+    and that way the capitalization won't look like THE EIGHTIES have come
+    back in fashion again. :D
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+0      1       Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor/Circ/AutoRenew.pm
+
+commit 6c73a5ae26da71e1ff49c26a635a439c1dbd0b09
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Fri Sep 6 11:09:18 2019 -0400
+
+    LP#1842431 Split textcode and desc fields for AutoRenew user data
+    
+    Split the event textcode and desc fields into textcode and description
+    fields, respectively, in the AutoRenew reactor's user data, but also
+    leave the reason field alone.  This permits sites to show only the
+    description of the event if they want.
+    
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      0       Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor/Circ/AutoRenew.pm
+
+commit 9def7f7349dcb2e8661c9bb3e4b211cb652f1cc1
+Author: Michele Morgan <mmorgan@noblenet.org>
+Date:   Thu Sep 12 16:30:47 2019 -0400
+
+    LP#1842431 Make renewal failure reason more appropriate for patron notifications
+    
+    Changes the failure reason for the autorenewal to include only the desc,
+    Removes the textcode of the event, which shouldn't be included in a patron notice.
+    
+    Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+1      1       Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor/Circ/AutoRenew.pm
+
+commit a1ef32532714753bf568408dedddb1026d6e6135
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Mon Oct 8 17:24:20 2018 -0700
+
+    LP1731370: Distinguishing new copies and volumes with aditional means (WCAG 1.4.1)
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      0       Open-ILS/src/templates/staff/cat/volcopy/index.tt2
+1      2       Open-ILS/src/templates/staff/css/cat.css.tt2
+6      4       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 7f14d09634fb9e631621c06033075533e37c680b
+Author: Jason Etheridge <jason@EquinoxInitiative.org>
+Date:   Wed Sep 12 08:10:32 2018 -0400
+
+    lp1731370 CSS styling for new items and volumes
+    
+    previous commit just handled volumes, this handles copies
+    
+    Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/src/templates/staff/css/cat.css.tt2
+3      1       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 187100f24a9354b407a598266c15c3f6cf9b3663
+Author: Jason Etheridge <jason@EquinoxInitiative.org>
+Date:   Wed Sep 5 09:13:49 2018 -0400
+
+    lp1731370 CSS styling for new items and volumes
+    
+    in vol/copy editor
+    
+    Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      1       Open-ILS/src/templates/staff/css/cat.css.tt2
+1      1       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 0eabb01710b738cce91e0c57e49652ea20f7e842
+Author: Josh Stompro <stompro@stompro.org>
+Date:   Wed Nov 6 12:24:36 2019 -0600
+
+    LP#1851541 - Add audio alert for item alert popups
+    
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/web/js/ui/default/staff/circ/services/circ.js
+
+commit c6d36312a91ee4d1dc042af7df2ee681cc7b86a1
+Author: Christine Morgan <cmorgan@noblenet.org>
+Date:   Thu Nov 21 12:53:11 2019 -0500
+
+    LP1735568, LP1830443: MARC Editor Fixes
+    
+    These style changes to the current MARC Editor fix the indicator box
+    resize problem and the blank subfield problem while improving usability.
+    Colors were tested using the Chrome extension Colorblindly, a
+    colorblindness simulator.
+    
+    Signed-off-by: Christine Morgan <cmorgan@noblenet.org>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+24     21      Open-ILS/src/templates/staff/cat/share/t_marcedit.tt2
+3      3       Open-ILS/src/templates/staff/cat/share/t_marcedit_editable.tt2
+27     11      Open-ILS/src/templates/staff/css/cat.css.tt2
+
+commit c9b47019a96b9e0596b4c2ba67c3ec38bd4c2ca8
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Tue Jul 28 17:21:28 2020 -0400
+
+    LP1889296 Staffcat holds request time includes time
+    
+    Display the hold request time as date plus time in the general purpose
+    Angluar holds grid.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      1       Open-ILS/src/eg2/src/app/staff/share/holds/grid.component.html
+
+commit 9494eeac685be9531d86b5c927d9037f369a6fe5
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Fri Jun 26 10:45:37 2020 -0400
+
+    Forward-port 3.5.0 upgrade script
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+404    0       Open-ILS/src/sql/Pg/version-upgrade/3.4.3-3.5.0-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/3.4.3-3.5.0-upgrade-db.sql
+
+commit 906d5aa682ca3bc2ea91f1785dfef2d4b38a1a50
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Jul 28 10:43:25 2020 -0400
+
+    LP#1776757: (follow-up) keep input for amount as type "number"
+    
+    Doing this preserves the form validation that ensures that
+    the user cannot submit the form with a non-numeric amount.
+    
+    This does lose forcing the display of default amounts such as
+    "1.50" to two decimal places, but I'm figuring that form validation
+    takes priority pending a longer-term solution such as a custom
+    value validator or using ng-currency.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/templates/staff/circ/share/t_bill_patron_dialog.tt2
+1      1       Open-ILS/web/js/ui/default/staff/circ/services/billing.js
+
+commit 833a128f02d8dec9d4282aaf1d4f261c6bf6cde3
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Wed Jan 29 20:20:35 2020 +0000
+
+    lp1776757 Default Billing Price Not Updating
+    
+    Fix the following bug: When billing a patron and one switches from
+    one billing type to a different billing type, the price isn't updating
+    to show the new default price
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/templates/staff/circ/share/t_bill_patron_dialog.tt2
+5      2       Open-ILS/web/js/ui/default/staff/circ/services/billing.js
+
+commit f1372798b1ee45639826974d3013a041c76e17f4
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Wed Oct 3 09:04:54 2018 -0700
+
+    LP1795469: Opac holdings sort now considers CN suffix
+    
+    To test:
+    1) Create a bunch of Call Number suffixes in Administration
+    -> Server Administration -> Call Number Suffixes.
+    2) Go to a bib record, and add a bunch of holdings,
+    all with the same call number label, owning/circ libraries,
+    item numbers, and parts (if using parts) but with different
+    barcodes and CN suffixes.
+    3) Look at the OPAC view of these holdings.  Note that they
+    are in order by barcode, without any consideration for
+    the CN suffix.
+    4) Apply this commit.
+    5) Look at the OPAC view again.  Note that they are now sorted
+    by CN suffix, and then by barcode.
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm
+
+commit 6d423f8d0f2f303db7b3dc6dc4c9d665ddc7c7f2
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Mon Jun 8 16:03:14 2020 -0400
+
+    LP1882591 Empty combobox avoids default selection
+    
+    When clearing a combobox value, no combobox options are displayed in the
+    dropdown.  This allows users to clear the value then tab out of the box
+    without the typeahead magic forcing selection of the first entry.
+    
+    The full list can still be displayed by clicking on the combobox.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+7      6       Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
+
+commit b2a0c4b68a3904e157200d0a10239a7e54c718e3
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Mon Jul 27 10:58:52 2020 -0400
+
+    LP1878079 Staffcat Add Holdings action support
+    
+    Teaches the staff catalog Add Holdings button to open the holdings
+    editor using the appropriate parameters.  If the holdings maintenance
+    grid is active, arguments to pass are based on the grid selection.
+    Otherwise it simply open the item editor with a single call number /
+    copy to be created 'here'.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+5      7       Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.ts
+2      2       Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
+3      2       Open-ILS/src/eg2/src/app/staff/catalog/record/record.component.html
+28     0       Open-ILS/src/eg2/src/app/staff/catalog/record/record.component.ts
+
+commit 72e49866a2696cc5e30513bb38544215a605ef2c
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Wed May 13 12:17:19 2020 -0400
+
+    LP1878079 Staffcat 'Edit' items / call numbers support
+    
+    Adds support to the Angular staff catalog to properly handle requests
+    to Edit Items, Edit Call Numbers, and Edit Call Numbers and Items.
+    Prior to his change, these operations would behave more like Add
+    operations than Edit operations.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+6      6       Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
+37     3       Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
+14     12      Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.service.ts
+
+commit 9d3fbd0285a946385352d8a6d50b1df5c41ce7bd
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Mon May 11 15:10:37 2020 -0400
+
+    LP1878079 Staffcat Add Call Nums honors selected orgs
+    
+    When adding new call numbers from the Angular staff catalog Holdings
+    View grid, take all selected grid rows into consideration when
+    determining how many call numbers to add and what their owning libs
+    should be.
+    
+    To test:
+    * Navigate to the Holdings View tab of a record detail page in the Angular
+      staff catalog.
+    * Select multiple rows in the grid which are org unit-only rows (i.e.
+      the row does not refer to a specific call number or item).
+    * From the action menu / right client menu, select "Add Callnumbers"
+    * Confirm that a call number entry for each selected org unit is present
+      in the spawned holdings editor.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+15     10      Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
+
+commit 93dde328d1fae2788c6460dbd9e88113bafa43ce
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Jul 27 10:55:19 2020 -0400
+
+    LP#1802166: stamp schema update
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+1      1       Open-ILS/src/sql/Pg/upgrade/{XXXX.function.actor_usr_delete.sql => 1211.function.actor_usr_delete.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.function.actor_usr_delete.sql => 1211.function.actor_usr_delete.sql} (96%)
+
+commit 74c3a9355a2e99d79824b3b2b078c3d7f2b862c1
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Jul 27 10:51:37 2020 -0400
+
+    LP#1802166: (follow-up) document a way to clear names from already-purged patron records
+    
+    For reference, the following SQL will clear the preferred name
+    and name keyword fields from already-purged records:
+    
+    UPDATE actor.usr
+    SET pref_prefix = NULL,
+        pref_first_given_name = NULL,
+        pref_second_given_name = NULL,
+        pref_family_name = NULL,
+        pref_suffix = NULL,
+        name_keywords = NULL
+    WHERE usrname ~ ('^' || id || '-PURGED')
+    AND NOT active
+    AND deleted
+    AND (
+        pref_prefix IS NOT NULL OR
+        pref_first_given_name IS NOT NULL OR
+        pref_second_given_name IS NOT NULL OR
+        pref_family_name IS NOT NULL OR
+        pref_suffix IS NOT NULL OR
+        name_keywords IS NOT NULL
+    );
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+25     0       docs/RELEASE_NOTES_NEXT/Circulation/purge_usr_pref_names.adoc
+
+commit e15b0ab7d877f1340e75c0680b73c748023882fe
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Fri Feb 15 13:33:08 2019 -0500
+
+    Lp 1802166: Purge User Name Keywords
+    
+    Add the name_keywords field to the fields that get set to null in
+    actor.usr_delete.
+    
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/src/sql/Pg/999.functions.global.sql
+1      0       Open-ILS/src/sql/Pg/upgrade/XXXX.function.actor_usr_delete.sql
+
+commit 7da2969b4743148aea6bc8952ebc8db0b09f1c12
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Fri Feb 15 12:21:19 2019 -0500
+
+    Lp 1802166: Purge User Preferred Names
+    
+    When the preferred names feature was added, the new fields were not
+    added to the update in the actor.usr_delete function.  This commit
+    sets those new fields to NULL in that function.
+    
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+5      0       Open-ILS/src/sql/Pg/999.functions.global.sql
+124    0       Open-ILS/src/sql/Pg/upgrade/XXXX.function.actor_usr_delete.sql
+5      0       docs/RELEASE_NOTES_NEXT/Circulation/purge_usr_pref_names.adoc
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.function.actor_usr_delete.sql
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/purge_usr_pref_names.adoc
+
+commit f2dc7b6e990ebc1be4c43c57731a0166220ac11a
+Author: Jason Etheridge <jason@EquinoxInitiative.org>
+Date:   Fri Jun 5 09:00:53 2020 -0400
+
+    LP1819542 Hanging transits can cause checkins to fail
+    
+    So two bits of defensive programming for do_checkin:
+    
+        sub fix_broken_transit_status
+        sub cancel_transit_if_circ_exists
+    
+    I don't know if the first one does anything useful, but the idea is that it'll
+    at least temporarily set the copy status to In Transit for any status checks
+    within the do_checkin method that test for that.  It doesn't actually repair
+    the status permanently (at least in the case of, say, an existing transit being
+    re-used for a ROUTE_ITEM event).  We may want to do that.
+    
+    The second one will abort an associated transit (including retargeting a hold
+    for a hold transit) if both an active transit and an active circulation exist
+    for the item.  This handles the situation I've been using to test the bug:
+    
+        1) transit an item (CONC90000436 in Concerto)
+        2) artificially change its status directly in the database (for example, to
+           Available)
+        3) check it out to a patron (99999376864 in Concerto), noting
+           that the Cancel Transit prompt does not get triggered
+        4) check in the item
+    
+    Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: John Amundson <jamundson@cwmars.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+42     15      Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
+
+commit b584ea2a39d6f7a26e40f87dde09327857185e3f
+Author: Jason Boyer <JBoyer@eoli.info>
+Date:   Wed Jan 8 13:37:01 2020 -0500
+
+    LP1858701: prevent doubles slashes in opac iframe urls
+    
+    The CGI module (used by mkurl()) does not like it
+    if we have two slashes in a URL sort/of/like//this.
+    Things work but the path portion of the URL is doubled
+    each time mkurl is used on it. This branch fixes 2
+    causes in the staff OPAC.
+    
+    Signed-off-by: Jason Boyer <JBoyer@eoli.info>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      2       Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
+
+commit d920660f94700d2c06d3296182b2e81fba81f334
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date:   Tue Jun 18 13:48:44 2019 -0700
+
+    LP#1833300: wrap SRU query in parentheses before appending site param
+    
+    Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/perlmods/lib/OpenILS/WWW/SuperCat.pm
+
+commit eca9e6e08e4461e805035ad767f63f41f49aadba
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Mon Aug 19 12:43:33 2019 -0700
+
+    LP1739288: report back on invalid barcodes in Item Status screen
+    
+    To test:
+    
+    1) Make a text file with both valid and invalid item barcodes.
+    2) Go to Circulation > Item Status and upload your file.
+    3) Note that the valid barcodes result in rows in the item status
+    screen, and the invalid barcodes are not displayed anywhere.
+    4) Apply this commit.
+    5) Repeat step 2.
+    6) Notice that the invalid barcodes are now reported in a new alert.
+    7) Make a text file with only valid barcodes and upload it.
+    8) Upload it.  Notice that the alert disappears.
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    
+    LP1739288: Add a summary report to the list of bad barcodes.
+    
+    (^^ squash of commit written by Josh Stompro)
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+21     0       Open-ILS/src/templates/staff/cat/item/index.tt2
+11     1       Open-ILS/web/js/ui/default/staff/cat/item/app.js
+
+commit 6eb7c483360a7ea3eea7dbbaa66e197d601e0543
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Oct 15 18:32:19 2019 -0400
+
+    LP#1847784: (docs) refer to the badge score generator cron job by name
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+2      2       docs/admin/popularity_badges_web_client.adoc
+
+commit ea24a23773298332216d0eaa9fabc25857e454c2
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Oct 15 18:29:40 2019 -0400
+
+    LP#1847784: install badge_score_generator.pl by default
+    
+    To test
+    -------
+    [1] Perform an Evergreen installation/upgrade.
+    [2] Verify that badge_score_generator.pl is present
+        in /openils/bin (or an alternative installation
+        location specified during the ./configure step).
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+1      0       Open-ILS/src/Makefile.am
+
+commit 9f8c057a3eb0196d5e0a5aa5efcae375d7e5dc94
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Sun Mar 15 08:49:48 2020 -0700
+
+    LP1867524: Add a help popover to the End field in the Closed Dates Editor
+    
+    To test:
+    1) Go to Administration > Local Administration > Closed Dates Editor.
+    2) Click Add Closing.
+    3) Under closing type, choose Multiple Day.
+    4) Note that the End field has no guidance for the user.
+    5) Apply this commit.
+    6) Repeat steps 1-3.
+    7) Notice that the End field has some clarifying guidance for the user.
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/src/templates/staff/admin/local/actor/edit_closed_dates.tt2
+
+commit bfd07a628d60eeda978a1b9e9698a896912abeeb
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Wed Nov 13 10:28:53 2019 -0500
+
+    LP#1852443 - Re-label duplicate-named "all circulations" source
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       Open-ILS/examples/fm_IDL.xml
+13     0       docs/RELEASE_NOTES_NEXT/Reports/change_aacs_label.adoc
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Reports/change_aacs_label.adoc
+
+commit 1ffe1609ddb0e302792006ec79533b154db2bafb
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Fri Jul 24 09:53:16 2020 -0400
+
+    LP1747542: Stamp upgrade script
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+1      1       Open-ILS/src/sql/Pg/upgrade/{XXXX.lp1747542_action_item_user_circ_test.sql => 1209.lp1747542_action_item_user_circ_test.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.lp1747542_action_item_user_circ_test.sql => 1209.lp1747542_action_item_user_circ_test.sql} (99%)
+
+commit 82185fe71ee972a0753d748a93540c3f6edb2958
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Mon Feb 5 18:58:43 2018 -0500
+
+    LP#1747542 - Repair item/user circulation test
+    
+    The action.item_user_circ_test function was previously
+    ignoring lost or longoverdue and paid-for circulations.
+    Adding a check for whether the circulation is closed
+    fixes this.
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+1      0       Open-ILS/src/sql/Pg/100.circ_matrix.sql
+237    0       Open-ILS/src/sql/Pg/upgrade/XXXX.lp1747542_action_item_user_circ_test.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.lp1747542_action_item_user_circ_test.sql
+
+commit f95cf009f6e131b1cad0bd02f8a31629dee658f0
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Jul 7 16:24:49 2020 -0400
+
+    LP#1886713: fix issue where AngularJS hotkeys fail to initialize
+    
+    Fixes a race condition where the navbar service can look for
+    eg-accesskey attributes before all of the elements that have
+    them meet the conditions to show up in the DOM.
+    
+    To test
+    -------
+    [1] From an AngularJS part of the staff interface, note that
+        hitting F8 sometimes does not perform the retrieve
+        last patron action, nor does F8 show up on the list of
+        hot keys when you hit "?" outside of an input.
+    [2] Apply the patch and repeat step 1. This time, the F8
+        hotkey should consistently work.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+7      4       Open-ILS/web/js/ui/default/staff/services/navbar.js
+
+commit d38082cd9df5080fc41c291e3025fade18fb0316
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Thu Jun 6 18:15:56 2019 -0700
+
+    LP1474874: Consistent page headers in the Angular client
+    
+    This commit ensures that each screen in the Angular staff client uses
+    the <eg-staff-banner> component to better orient its users.
+    
+    This commit also gives the eg-staff-banner some <h1> semantics, per
+    WebAIM's guidance: "Pages should be structured in a hierarchical manner,
+    generally with one 1st degree headings (<h1>) being the most important
+    (usually page titles or main content heading)" -- https://webaim.org/techniques/semanticstructure/
+    
+    To test:
+    
+    1) Go to [your-server]/eg2/en-US/staff/catalog/search
+    2) Confirm that there is a header that gives the page title at the top
+    of the page.
+    3) Go to an Angular Vandelay page.
+    4) Confirm that you see a similar header as in step 2.
+    5) Go to an Angular Administration page.
+    6) repeat step 4.
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      1       Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.component.html
+2      0       Open-ILS/src/eg2/src/app/staff/catalog/browse.component.html
+2      0       Open-ILS/src/eg2/src/app/staff/catalog/catalog.component.html
+2      0       Open-ILS/src/eg2/src/app/staff/catalog/cnbrowse.component.html
+1      1       Open-ILS/src/eg2/src/app/staff/share/staff-banner.component.ts
+
+commit 63cecbf966de5e98efa9031cb2c7e74e848267df
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Fri Jul 24 08:41:49 2020 -0400
+
+    LP1870605: Stamp upgrade script
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+1      1       Open-ILS/src/sql/Pg/upgrade/{xxxx.schema.emergency_closing_fines_fix.sql => 1208.schema.emergency_closing_fines_fix.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{xxxx.schema.emergency_closing_fines_fix.sql => 1208.schema.emergency_closing_fines_fix.sql} (99%)
+
+commit a0f73155019638e7e5fa2aa99ddead01a3307483
+Author: Steven Callender <stevecallender@esilibrary.com>
+Date:   Fri Apr 3 15:20:39 2020 -0400
+
+    LP1870605: Fix typo in emergency closing functions
+    
+    The emergency closing handler was ignoring any
+    circulations that already had fines due to a typo
+    in the stage 2 circ and reservation functions.
+    
+    Signed-off-by: Steven Callender <stevecallender@esilibrary.com>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      2       Open-ILS/src/sql/Pg/096.schema.emergency_closing.sql
+191    0       Open-ILS/src/sql/Pg/upgrade/xxxx.schema.emergency_closing_fines_fix.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/xxxx.schema.emergency_closing_fines_fix.sql
+
+commit 49b28c6d2d6b04c53ccdf51a7f447431044d7045
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Thu Jul 23 06:37:07 2020 -0700
+
+    LP#1705302: Stamping Upgrade Script
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+1      1       Open-ILS/src/sql/Pg/upgrade/{XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql => 1207.data.lp1705302-update-receipt-template-setting-descriptions.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql => 1207.data.lp1705302-update-receipt-template-setting-descriptions.sql} (96%)
+
+commit a4fa2284b788d7052a81ee48c28b736f93cac835
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Tue Jun 11 09:57:58 2019 -0700
+
+    lp1705302 update description of receipt template
+    
+    Updated editing instructions to give correct syntax and changing name
+    from receipt templates to Print Templates
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    
+     Changes to be committed:
+            modified:   src/sql/Pg/950.data.seed-values.sql
+            new file:   src/sql/Pg/upgrade/XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql
+    
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+5      5       Open-ILS/src/sql/Pg/950.data.seed-values.sql
+36     0       Open-ILS/src/sql/Pg/upgrade/XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql
+
+commit 3168a635f7b95c55376aa126f96abf51bfd31b30
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Wed Jan 29 12:33:30 2020 -0500
+
+    LP#1775940: Archived Penalties/Messages does not Respect Date Range
+    
+    This patch implements a.bellenir's suggestion of switching from
+    setQuery to watchQury in the archiveGrid of the web client circulation
+    patron app.  It does now appear to respect the date range entered by
+    the user.
+    
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: John Amundson <jamundson@cwmars.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/web/js/ui/default/staff/circ/patron/app.js
+
+commit eae8919fe607392bbb40d6741f60b910032408e0
+Author: Josh Stompro <stompro@stompro.org>
+Date:   Mon Feb 3 13:42:08 2020 -0600
+
+    LP#1754387 - User Buckets - Pending Users Enhancement
+    
+    It wasn't possible to load more than 100 users from a barcode file import in
+    user buckets because of two issues.  The pager was limited to only showing 100
+    barcodes at a time, and moving any users from the pending list would clear the
+    pending list.
+    
+    Here is a branch that makes the following changes.
+    
+    1. Sets the default number of items to 100 and allows choosing the
+      500,1000,10000 options for the pager.
+    
+    2. When moving users from pending to a bucket, only removes the moved users
+      from the pending list.  This allows the user to move a larger number of
+      users to a bucket from pending, a batch at a time.
+    
+    Testing Plan:
+    
+    Before Changes:
+    
+    1. Load a file with 110 patron barcodes in the User Buckets, Pending Users interface.
+    2. See that the pager only allows a max of 100 for the page size.
+    3. Move one user to a bucket and note that the pending list gets cleared.
+    
+    After Changes:
+    
+    1. Load a file with 110 patron barcodes.
+    2. See that the pager allows for picking larger page sizes.
+    3. Move one user to a bucket, and note that the pending list removes just that one user.
+    
+    Another way to see the changes is to pick a pager size of 25, and select all the
+    entries.  Then move them to a bucket and see that you can continue to move
+    batches of 25 until you have moved all the pending users.
+    
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Gina Monti <gmonti@biblio.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      1       Open-ILS/src/templates/staff/circ/patron/bucket/t_pending.tt2
+18     2       Open-ILS/web/js/ui/default/staff/circ/patron/bucket/app.js
+
+commit 3d058276eee938efe7bb7090a050ae5858fc22bb
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Sun Mar 8 07:58:09 2020 -0700
+
+    LP1845241: Use the correct API call to Undelete a bib record
+    
+    To test:
+    
+    1) Open up a delete-ready bibliographic record in the Web client
+    (no attached holdings, no located URI, no open orders attached, etc.)
+    2) Delete it.
+    3) Undelete it.  Note that the "Undelete" button briefly turns into a
+    "Delete" button before changing back to an "Undelete" button.  Note that
+    the bib record does not show up in search results within the Web client.
+    4) Apply this commit.
+    5) Now try undeleting the record again.  Notice that the "Delete" button
+    does not revert to an "Undelete" button.  Note also that the record is
+    once again showing up in search results (although you may have to be a
+    bit creative using search terms, due to search results caching).
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: blake <blake@mobiusconsortium.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      0       Open-ILS/src/templates/staff/cat/share/marcedit_strings.tt2
+18     2       Open-ILS/web/js/ui/default/staff/cat/services/marcedit.js
+
+commit 2ebe28bc8547df16a27ae0102fbb31bc1a867666
+Author: Jeff Davis <jeff.davis@bc.libraries.coop>
+Date:   Thu Oct 10 16:01:06 2019 -0700
+
+    LP#1847680: live test for barcode completion
+    
+    Signed-off-by: Jeff Davis <jeff.davis@bc.libraries.coop>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+99     0       Open-ILS/src/perlmods/live_t/30-barcode-completion.t
+ create mode 100644 Open-ILS/src/perlmods/live_t/30-barcode-completion.t
+
+commit 33bed7cce801d911fadee25484b4fc3c364d37af
+Author: Dan Scott <dan@coffeecode.net>
+Date:   Tue Jan 7 15:05:06 2020 -0500
+
+    LP1805860: Display long patron names without obscuring input fields
+    
+    Long patron names can obscure the input fields and menu items on patron
+    action screens. The only workaround is to reduce the font size using the
+    browser controls until the input fields and menu items are visible.
+    
+    While the fixed position saves space at the top of the screen for
+    typical cases, it can be hard for staff to remember the font-reduction
+    workaround when they hit a long patron name.
+    
+    Removing the fixed position CSS also better supports the display of
+    regular patron names on browsers that are not wide enough to display the
+    top menu (Search/Circulation/Cataloging/.../Workstation name/Locale) all
+    on a single line.
+    
+    Signed-off-by: Dan Scott <dan@coffeecode.net>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+0      6       Open-ILS/src/templates/staff/css/circ.css.tt2
+
+commit b9f27dd2735b5cc2ef12be49a212333c3d2c20b0
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Jun 22 11:40:08 2020 -0400
+
+    LP#1844365: fix initialization of stat cats in patron registration form
+    
+    If you edit a patron and it has (or gets added) a stat cat entry,
+    then from the registration form click on its inline patron search
+    link, fetch a patron that has no stat cats, then edit it, the
+    first patron's stat cats can show up in the registration form.
+    If the second patron does have stat cats, but not values set
+    for all of them, then the first patron's stat cat entries can
+    fill in cases where no entry was previously set.
+    
+    This patch fixes patronRegSvc's initialization when loading
+    an existing patron record to avoid this.
+    
+    To test
+    -------
+    [1] Edit a patron and ensure that it has at least one
+        statistical category set.
+    [2] From the patron search link in the patron app tab
+        bar, NOT the Search | Patron menu item, search for
+        and retrieve a patron that has no stat cats assigned.
+    [3] Edit the patron. Observe that the first patron's
+        stat cat entry displays in the second patron's
+        registration form.
+    [4] Apply the patch and repeats steps 1-3. This time,
+        the previous patron's stat cats should not infect
+        the second patron's registration form.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+
+1      0       Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
+
+commit 8900bc3884b769e758a0d72365ceab878d352518
+Author: Kyle Huckins <khuckins@catalyte.io>
+Date:   Thu May 23 21:47:02 2019 +0000
+
+    lp1775286 Color Indication of Overdue on Items Out
+    
+    - Overdue items are highlighted in red in the Items Out UI.
+    - Ensure overdue-row and lost-row classes handle visited links
+    
+    Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
+    Signed-off-by: Jennifer Pringle <jennifer.pringle@bc.libraries.coop>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      2       Open-ILS/src/templates/staff/circ/patron/t_items_out.tt2
+1      1       Open-ILS/src/templates/staff/css/style.css.tt2
+9      0       Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
+
+commit 621cff2962c98412e040ab4933a79c84d4ec461d
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date:   Tue May 5 10:34:36 2020 -0700
+
+    LP#1840294: use dedicated UI for match set admin, rather than auto-generated admin pages
+    
+    Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html
+
+commit bf8972d04d3436824ca3698d7dae43baaf66c0ce
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Fri Apr 24 16:09:57 2020 -0400
+
+    LP1874897 Staff catalog honors classification scheme
+    
+    Use the org unit setting "cat.default_classification_scheme" to
+    determine which scheme to use when extracting the bib-level call number
+    for display in the Angular staff catalog.
+    
+    This also modifies the API to look the value up so future calls to the
+    API will Just Work (and it's one less bit of data the browser has to
+    retrieve).
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      4       Open-ILS/src/eg2/src/app/share/catalog/bib-record.service.ts
+13     3       Open-ILS/src/perlmods/lib/OpenILS/Application/Cat.pm
+
+commit 83c236951645ccfe244ba094684d26ba3b2d006a
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Fri Jul 3 10:05:33 2020 -0400
+
+    LP1886118 Staff catalog search format repair
+    
+    Fixes an error in the staff catalog search params builder with regard to
+    encoding the search format.  The 'format' param should be 'search_format'.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/eg2/src/app/share/catalog/search-context.ts
+
+commit 09e7d384b0523be53c64e736889c141fd94108d0
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Fri Jul 17 07:09:29 2020 -0400
+
+    LP#1886852: 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.function.distinct-regen_copy_map.sql => 1206.function.distinct-regen_copy_map.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.function.distinct-regen_copy_map.sql => 1206.function.distinct-regen_copy_map.sql} (82%)
+
+commit bca8f5ec8040291b2b39a7e7ca31f223c51fb3f3
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Wed Jul 8 13:18:52 2020 -0400
+
+    LP#1886852: Protect against dupes in hold-copy map function
+    
+    If the DB function that regenerates the hold-copy maps for a hold
+    receives duplicate copies in its second parameter, it blows up.  This
+    commit prevents that by making the list unique at use time.
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+1      1       Open-ILS/src/sql/Pg/090.schema.action.sql
+12     0       Open-ILS/src/sql/Pg/upgrade/XXXX.function.distinct-regen_copy_map.sql
+ create mode 100755 Open-ILS/src/sql/Pg/upgrade/XXXX.function.distinct-regen_copy_map.sql
+
+commit ee2d830686d02a37b8b26841ddd496fe1bfbe0c0
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Sun Jul 12 08:10:26 2020 -0700
+
+    LP1848573: follow-up: minor changes to IDL labels for the ccs class
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      2       Open-ILS/examples/fm_IDL.xml
+
+commit 26d110b62f81ae38bf2cc4e8e98d89a76c490aa3
+Author: Shula Link <slink@gchrl.org>
+Date:   Mon Mar 16 10:30:27 2020 -0400
+
+    LP1848573: Added nice labels to Open-ILS\examples\fm_IDL.xml
+    for copy status
+    
+    Signed-off-by: Shula Link <slink@gchrl.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+7      7       Open-ILS/examples/fm_IDL.xml
+
+commit c1f351be0393dd92251c3ca2cf5cedc8ca22b78c
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Wed Sep 12 09:14:58 2018 -0400
+
+    LP#1712854: Disable all server-side sorting, but provide a stub for later, if we move that way
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: John Yorio <jyorio@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       Open-ILS/src/templates/staff/circ/holds/t_shelf_list.tt2
+3      1       Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
+34     1       Open-ILS/web/js/ui/default/staff/circ/holds/app.js
+
+commit 5b07204a98cd055f9945ded0540d96b0544b4943
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Tue Sep 11 17:36:30 2018 -0400
+
+    LP#1712854: Add User Alias and User Alias or Display Name columns to shelf list
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: John Yorio <jyorio@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      0       Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
+2      0       Open-ILS/src/templates/staff/circ/holds/t_shelf_list.tt2
+
+commit d637584c4ac9d2b6d381b41e2f580cdb590cd329
+Author: Jason Boyer <JBoyer@eoli.info>
+Date:   Fri Feb 21 16:08:36 2020 -0500
+
+    LP1864056: Don't compare multiple new Date()s
+    
+    This branch addresses a race condition when
+    checking out or renewing items.
+    (The use of minDate in items_out was implicitly
+    immune to this issue, but that is made explicit
+    with this patch.)
+    
+    To test
+    -------
+    [1] The race condition would be difficult to reliably
+        reproduce directly, although a tool like
+        https://github.com/mattzeunert/javascript-clock-speedup
+        might help simulate the problem, so to test, verify
+        that the following actions do not break:
+    
+        * checking out a loan, both with and without
+          setting a specific due date
+        * renewing a loan with a specific due date
+          from the patron items out tab
+        * renewing a loan from Circulation -> Renew Items,
+          both with and without setting a specific due date.
+    
+    Signed-off-by: Jason Boyer <JBoyer@eoli.info>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+3      2       Open-ILS/web/js/ui/default/staff/circ/patron/checkout.js
+3      2       Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
+3      3       Open-ILS/web/js/ui/default/staff/circ/renew/app.js
+
+commit 4062a68ccfcff1893ac5f2ec735ca40718ee3f4b
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Thu Feb 20 23:07:30 2020 +0000
+
+    lp1735828 Copy Bucket multi show status
+    
+    Revise the web client so that when one is in the copy bucket one can
+    select multiple entries and do "show status" on all of them.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Tiffany Little <tlittle@georgialibraries.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      0       Open-ILS/src/templates/staff/cat/bucket/copy/t_view.tt2
+9      0       Open-ILS/web/js/ui/default/staff/cat/bucket/copy/app.js
+
+commit 6ff6e8cd5413306663065e70ee84e581894bb767
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Tue Mar 10 10:48:27 2020 -0400
+
+    LP1866546 MARC edit support authority record (un)delete
+    
+    Teaches the Angular MARC editor to use PCRUD for deleting and undeleting
+    authority records instead of erroneously using the bib record delete /
+    undelete APIs.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+87     28      Open-ILS/src/eg2/src/app/staff/share/marc-edit/editor.component.ts
index d750216..0472837 100644 (file)
@@ -7,7 +7,7 @@ use OpenILS::Utils::Fieldmapper;
 sub ils_version {
     # version format is "x-y-z", for example "2-0-0" for Evergreen 2.0.0
     # For branches, format is "x-y"
-    return "HEAD";
+    return "3-5-1";
 }
 
 __PACKAGE__->register_method(
index 02bab54..7d95db9 100644 (file)
@@ -93,6 +93,7 @@ CREATE TRIGGER no_overlapping_deps
     FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
 
 INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1211', :eg_version); -- Dyrcona/rhamby/gmcharlt
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.5.1', :eg_version);
 
 CREATE TABLE config.bib_source (
        id              SERIAL  PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/version-upgrade/3.5.0-3.5.1-upgrade-db.sql b/Open-ILS/src/sql/Pg/version-upgrade/3.5.0-3.5.1-upgrade-db.sql
new file mode 100644 (file)
index 0000000..6296670
--- /dev/null
@@ -0,0 +1,600 @@
+--Upgrade Script for 3.5.0 to 3.5.1
+\set eg_version '''3.5.1'''
+BEGIN;
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.5.1', :eg_version);
+
+SELECT evergreen.upgrade_deps_block_check('1206', :eg_version);
+
+CREATE OR REPLACE FUNCTION
+    action.hold_request_regen_copy_maps(
+        hold_id INTEGER, copy_ids INTEGER[]) RETURNS VOID AS $$
+    DELETE FROM action.hold_copy_map WHERE hold = $1;
+    INSERT INTO action.hold_copy_map (hold, target_copy) SELECT DISTINCT $1, UNNEST($2);
+$$ LANGUAGE SQL;
+
+
+SELECT evergreen.upgrade_deps_block_check('1207', :eg_version);
+
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.alert_text',
+            'Text to be inserted into Print Templates in place of {{includes.alert_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.alert_text';
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.event_text',
+            'Text to be inserted into Print Templates in place of {{includes.event_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.event_text';
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.footer_text',
+            'Text to be inserted into Print Templates in place of {{includes.footer_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.footer_text';
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.header_text',
+            'Text to be inserted into Print Templates in place of {{includes.header_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.header_text';
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.notice_text',
+            'Text to be inserted into Print Templates in place of {{includes.notice_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.notice_text';
+
+
+SELECT evergreen.upgrade_deps_block_check('1208', :eg_version);
+
+CREATE OR REPLACE FUNCTION action.emergency_closing_stage_2_circ ( circ_closing_entry INT )
+    RETURNS BOOL AS $$
+DECLARE
+    circ            action.circulation%ROWTYPE;
+    e_closing       action.emergency_closing%ROWTYPE;
+    e_c_circ        action.emergency_closing_circulation%ROWTYPE;
+    closing         actor.org_unit_closed%ROWTYPE;
+    adjacent        actor.org_unit_closed%ROWTYPE;
+    bill            money.billing%ROWTYPE;
+    last_bill       money.billing%ROWTYPE;
+    day_number      INT;
+    hoo_close       TIME WITHOUT TIME ZONE;
+    plus_days       INT;
+    avoid_negative  BOOL;
+    extend_grace    BOOL;
+    new_due_date    TEXT;
+BEGIN
+    -- Gather objects involved
+    SELECT  * INTO e_c_circ
+      FROM  action.emergency_closing_circulation
+      WHERE id = circ_closing_entry;
+
+    IF e_c_circ.process_time IS NOT NULL THEN
+        -- Already processed ... moving on
+        RETURN FALSE;
+    END IF;
+
+    SELECT  * INTO e_closing
+      FROM  action.emergency_closing
+      WHERE id = e_c_circ.emergency_closing;
+
+    IF e_closing.process_start_time IS NULL THEN
+        -- Huh... that's odd. And wrong.
+        RETURN FALSE;
+    END IF;
+
+    SELECT  * INTO closing
+      FROM  actor.org_unit_closed
+      WHERE emergency_closing = e_closing.id;
+
+    SELECT  * INTO circ
+      FROM  action.circulation
+      WHERE id = e_c_circ.circulation;
+
+    -- Record the processing
+    UPDATE  action.emergency_closing_circulation
+      SET   original_due_date = circ.due_date,
+            process_time = NOW()
+      WHERE id = circ_closing_entry;
+
+    UPDATE  action.emergency_closing
+      SET   last_update_time = NOW()
+      WHERE id = e_closing.id;
+
+    SELECT value::BOOL INTO avoid_negative FROM actor.org_unit_ancestor_setting('bill.prohibit_negative_balance_on_overdues', circ.circ_lib);
+    SELECT value::BOOL INTO extend_grace FROM actor.org_unit_ancestor_setting('circ.grace.extend', circ.circ_lib);
+
+    new_due_date := evergreen.find_next_open_time( closing.org_unit, circ.due_date, EXTRACT(EPOCH FROM circ.duration)::INT % 86400 > 0 )::TEXT;
+    UPDATE action.circulation SET due_date = new_due_date::TIMESTAMPTZ WHERE id = circ.id;
+
+    -- Now, see if we need to get rid of some fines
+    SELECT  * INTO last_bill
+      FROM  money.billing b
+      WHERE b.xact = circ.id
+            AND NOT b.voided
+            AND b.btype = 1
+      ORDER BY billing_ts DESC
+      LIMIT 1;
+
+    FOR bill IN
+        SELECT  *
+          FROM  money.billing b
+          WHERE b.xact = circ.id
+                AND b.btype = 1
+                AND NOT b.voided
+                AND (
+                    b.billing_ts BETWEEN closing.close_start AND new_due_date::TIMESTAMPTZ
+                    OR (extend_grace AND last_bill.billing_ts <= new_due_date::TIMESTAMPTZ + circ.grace_period)
+                )
+                AND NOT EXISTS (SELECT 1 FROM money.account_adjustment a WHERE a.billing = b.id)
+          ORDER BY billing_ts
+    LOOP
+        IF avoid_negative THEN
+            PERFORM FROM money.materialized_billable_xact_summary WHERE id = circ.id AND balance_owed < bill.amount;
+            EXIT WHEN FOUND; -- We can't go negative, and voiding this bill would do that...
+        END IF;
+
+        UPDATE  money.billing
+          SET   voided = TRUE,
+                void_time = NOW(),
+                note = COALESCE(note,'') || ' :: Voided by emergency closing handler'
+          WHERE id = bill.id;
+    END LOOP;
+    
+    RETURN TRUE;
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION action.emergency_closing_stage_2_reservation ( res_closing_entry INT )
+    RETURNS BOOL AS $$
+DECLARE
+    res             booking.reservation%ROWTYPE;
+    e_closing       action.emergency_closing%ROWTYPE;
+    e_c_res         action.emergency_closing_reservation%ROWTYPE;
+    closing         actor.org_unit_closed%ROWTYPE;
+    adjacent        actor.org_unit_closed%ROWTYPE;
+    bill            money.billing%ROWTYPE;
+    day_number      INT;
+    hoo_close       TIME WITHOUT TIME ZONE;
+    plus_days       INT;
+    avoid_negative  BOOL;
+    new_due_date    TEXT;
+BEGIN
+    -- Gather objects involved
+    SELECT  * INTO e_c_res
+      FROM  action.emergency_closing_reservation
+      WHERE id = res_closing_entry;
+
+    IF e_c_res.process_time IS NOT NULL THEN
+        -- Already processed ... moving on
+        RETURN FALSE;
+    END IF;
+
+    SELECT  * INTO e_closing
+      FROM  action.emergency_closing
+      WHERE id = e_c_res.emergency_closing;
+
+    IF e_closing.process_start_time IS NULL THEN
+        -- Huh... that's odd. And wrong.
+        RETURN FALSE;
+    END IF;
+
+    SELECT  * INTO closing
+      FROM  actor.org_unit_closed
+      WHERE emergency_closing = e_closing.id;
+
+    SELECT  * INTO res
+      FROM  booking.reservation
+      WHERE id = e_c_res.reservation;
+
+    IF res.pickup_lib IS NULL THEN -- Need to be far enough along to have a pickup lib
+        RETURN FALSE;
+    END IF;
+
+    -- Record the processing
+    UPDATE  action.emergency_closing_reservation
+      SET   original_end_time = res.end_time,
+            process_time = NOW()
+      WHERE id = res_closing_entry;
+
+    UPDATE  action.emergency_closing
+      SET   last_update_time = NOW()
+      WHERE id = e_closing.id;
+
+    SELECT value::BOOL INTO avoid_negative FROM actor.org_unit_ancestor_setting('bill.prohibit_negative_balance_on_overdues', res.pickup_lib);
+
+    new_due_date := evergreen.find_next_open_time( closing.org_unit, res.end_time, EXTRACT(EPOCH FROM res.booking_interval)::INT % 86400 > 0 )::TEXT;
+    UPDATE booking.reservation SET end_time = new_due_date::TIMESTAMPTZ WHERE id = res.id;
+
+    -- Now, see if we need to get rid of some fines
+    FOR bill IN
+        SELECT  *
+          FROM  money.billing b
+          WHERE b.xact = res.id
+                AND b.btype = 1
+                AND NOT b.voided
+                AND b.billing_ts BETWEEN closing.close_start AND new_due_date::TIMESTAMPTZ
+                AND NOT EXISTS (SELECT 1 FROM money.account_adjustment a WHERE a.billing = b.id)
+    LOOP
+        IF avoid_negative THEN
+            PERFORM FROM money.materialized_billable_xact_summary WHERE id = res.id AND balance_owed < bill.amount;
+            EXIT WHEN FOUND; -- We can't go negative, and voiding this bill would do that...
+        END IF;
+
+        UPDATE  money.billing
+          SET   voided = TRUE,
+                void_time = NOW(),
+                note = COALESCE(note,'') || ' :: Voided by emergency closing handler'
+          WHERE id = bill.id;
+    END LOOP;
+    
+    RETURN TRUE;
+END;
+$$ LANGUAGE PLPGSQL;
+
+
+
+SELECT evergreen.upgrade_deps_block_check('1209', :eg_version);
+
+CREATE OR REPLACE FUNCTION action.item_user_circ_test( circ_ou INT, match_item BIGINT, match_user INT, renewal BOOL ) RETURNS SETOF action.circ_matrix_test_result AS $func$
+DECLARE
+    user_object             actor.usr%ROWTYPE;
+    standing_penalty        config.standing_penalty%ROWTYPE;
+    item_object             asset.copy%ROWTYPE;
+    item_status_object      config.copy_status%ROWTYPE;
+    item_location_object    asset.copy_location%ROWTYPE;
+    result                  action.circ_matrix_test_result;
+    circ_test               action.found_circ_matrix_matchpoint;
+    circ_matchpoint         config.circ_matrix_matchpoint%ROWTYPE;
+    circ_limit_set          config.circ_limit_set%ROWTYPE;
+    hold_ratio              action.hold_stats%ROWTYPE;
+    penalty_type            TEXT;
+    items_out               INT;
+    context_org_list        INT[];
+    done                    BOOL := FALSE;
+    item_prox               INT;
+    home_prox               INT;
+BEGIN
+    -- Assume success unless we hit a failure condition
+    result.success := TRUE;
+
+    -- Need user info to look up matchpoints
+    SELECT INTO user_object * FROM actor.usr WHERE id = match_user AND NOT deleted;
+
+    -- (Insta)Fail if we couldn't find the user
+    IF user_object.id IS NULL THEN
+        result.fail_part := 'no_user';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+        RETURN;
+    END IF;
+
+    -- Need item info to look up matchpoints
+    SELECT INTO item_object * FROM asset.copy WHERE id = match_item AND NOT deleted;
+
+    -- (Insta)Fail if we couldn't find the item 
+    IF item_object.id IS NULL THEN
+        result.fail_part := 'no_item';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+        RETURN;
+    END IF;
+
+    SELECT INTO circ_test * FROM action.find_circ_matrix_matchpoint(circ_ou, item_object, user_object, renewal);
+
+    circ_matchpoint             := circ_test.matchpoint;
+    result.matchpoint           := circ_matchpoint.id;
+    result.circulate            := circ_matchpoint.circulate;
+    result.duration_rule        := circ_matchpoint.duration_rule;
+    result.recurring_fine_rule  := circ_matchpoint.recurring_fine_rule;
+    result.max_fine_rule        := circ_matchpoint.max_fine_rule;
+    result.hard_due_date        := circ_matchpoint.hard_due_date;
+    result.renewals             := circ_matchpoint.renewals;
+    result.grace_period         := circ_matchpoint.grace_period;
+    result.buildrows            := circ_test.buildrows;
+
+    -- (Insta)Fail if we couldn't find a matchpoint
+    IF circ_test.success = false THEN
+        result.fail_part := 'no_matchpoint';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+        RETURN;
+    END IF;
+
+    -- All failures before this point are non-recoverable
+    -- Below this point are possibly overridable failures
+
+    -- Fail if the user is barred
+    IF user_object.barred IS TRUE THEN
+        result.fail_part := 'actor.usr.barred';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Fail if the item can't circulate
+    IF item_object.circulate IS FALSE THEN
+        result.fail_part := 'asset.copy.circulate';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Fail if the item isn't in a circulateable status on a non-renewal
+    IF NOT renewal AND item_object.status <> 8 AND item_object.status NOT IN (
+        (SELECT id FROM config.copy_status WHERE is_available) ) THEN 
+        result.fail_part := 'asset.copy.status';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    -- Alternately, fail if the item isn't checked out on a renewal
+    ELSIF renewal AND item_object.status <> 1 THEN
+        result.fail_part := 'asset.copy.status';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Fail if the item can't circulate because of the shelving location
+    SELECT INTO item_location_object * FROM asset.copy_location WHERE id = item_object.location;
+    IF item_location_object.circulate IS FALSE THEN
+        result.fail_part := 'asset.copy_location.circulate';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Use Circ OU for penalties and such
+    SELECT INTO context_org_list ARRAY_AGG(id) FROM actor.org_unit_full_path( circ_ou );
+
+    -- Proximity of user's home_ou to circ_ou to see if penalties should be ignored.
+    SELECT INTO home_prox prox FROM actor.org_unit_proximity WHERE from_org = user_object.home_ou AND to_org = circ_ou;
+
+    -- Proximity of user's home_ou to item circ_lib to see if penalties should be ignored.
+    SELECT INTO item_prox prox FROM actor.org_unit_proximity WHERE from_org = user_object.home_ou AND to_org = item_object.circ_lib;
+
+    IF renewal THEN
+        penalty_type = '%RENEW%';
+    ELSE
+        penalty_type = '%CIRC%';
+    END IF;
+
+    FOR standing_penalty IN
+        SELECT  DISTINCT csp.*
+          FROM  actor.usr_standing_penalty usp
+                JOIN config.standing_penalty csp ON (csp.id = usp.standing_penalty)
+          WHERE usr = match_user
+                AND usp.org_unit IN ( SELECT * FROM unnest(context_org_list) )
+                AND (usp.stop_date IS NULL or usp.stop_date > NOW())
+                AND (csp.ignore_proximity IS NULL
+                     OR csp.ignore_proximity < home_prox
+                     OR csp.ignore_proximity < item_prox)
+                AND csp.block_list LIKE penalty_type LOOP
+
+        result.fail_part := standing_penalty.name;
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END LOOP;
+
+    -- Fail if the test is set to hard non-circulating
+    IF circ_matchpoint.circulate IS FALSE THEN
+        result.fail_part := 'config.circ_matrix_test.circulate';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Fail if the total copy-hold ratio is too low
+    IF circ_matchpoint.total_copy_hold_ratio IS NOT NULL THEN
+        SELECT INTO hold_ratio * FROM action.copy_related_hold_stats(match_item);
+        IF hold_ratio.total_copy_ratio IS NOT NULL AND hold_ratio.total_copy_ratio < circ_matchpoint.total_copy_hold_ratio THEN
+            result.fail_part := 'config.circ_matrix_test.total_copy_hold_ratio';
+            result.success := FALSE;
+            done := TRUE;
+            RETURN NEXT result;
+        END IF;
+    END IF;
+
+    -- Fail if the available copy-hold ratio is too low
+    IF circ_matchpoint.available_copy_hold_ratio IS NOT NULL THEN
+        IF hold_ratio.hold_count IS NULL THEN
+            SELECT INTO hold_ratio * FROM action.copy_related_hold_stats(match_item);
+        END IF;
+        IF hold_ratio.available_copy_ratio IS NOT NULL AND hold_ratio.available_copy_ratio < circ_matchpoint.available_copy_hold_ratio THEN
+            result.fail_part := 'config.circ_matrix_test.available_copy_hold_ratio';
+            result.success := FALSE;
+            done := TRUE;
+            RETURN NEXT result;
+        END IF;
+    END IF;
+
+    -- Fail if the user has too many items out by defined limit sets
+    FOR circ_limit_set IN SELECT ccls.* FROM config.circ_limit_set ccls
+      JOIN config.circ_matrix_limit_set_map ccmlsm ON ccmlsm.limit_set = ccls.id
+      WHERE ccmlsm.active AND ( ccmlsm.matchpoint = circ_matchpoint.id OR
+        ( ccmlsm.matchpoint IN (SELECT * FROM unnest(result.buildrows)) AND ccmlsm.fallthrough )
+        ) LOOP
+            IF circ_limit_set.items_out > 0 AND NOT renewal THEN
+                SELECT INTO context_org_list ARRAY_AGG(aou.id)
+                  FROM actor.org_unit_full_path( circ_ou ) aou
+                    JOIN actor.org_unit_type aout ON aou.ou_type = aout.id
+                  WHERE aout.depth >= circ_limit_set.depth;
+                IF circ_limit_set.global THEN
+                    WITH RECURSIVE descendant_depth AS (
+                        SELECT  ou.id,
+                            ou.parent_ou
+                        FROM  actor.org_unit ou
+                        WHERE ou.id IN (SELECT * FROM unnest(context_org_list))
+                            UNION
+                        SELECT  ou.id,
+                            ou.parent_ou
+                        FROM  actor.org_unit ou
+                            JOIN descendant_depth ot ON (ot.id = ou.parent_ou)
+                    ) SELECT INTO context_org_list ARRAY_AGG(ou.id) FROM actor.org_unit ou JOIN descendant_depth USING (id);
+                END IF;
+                SELECT INTO items_out COUNT(DISTINCT circ.id)
+                  FROM action.circulation circ
+                    JOIN asset.copy copy ON (copy.id = circ.target_copy)
+                    LEFT JOIN action.circulation_limit_group_map aclgm ON (circ.id = aclgm.circ)
+                  WHERE circ.usr = match_user
+                    AND circ.circ_lib IN (SELECT * FROM unnest(context_org_list))
+                    AND circ.checkin_time IS NULL
+                    AND circ.xact_finish IS NULL
+                    AND (circ.stop_fines IN ('MAXFINES','LONGOVERDUE') OR circ.stop_fines IS NULL)
+                    AND (copy.circ_modifier IN (SELECT circ_mod FROM config.circ_limit_set_circ_mod_map WHERE limit_set = circ_limit_set.id)
+                        OR copy.location IN (SELECT copy_loc FROM config.circ_limit_set_copy_loc_map WHERE limit_set = circ_limit_set.id)
+                        OR aclgm.limit_group IN (SELECT limit_group FROM config.circ_limit_set_group_map WHERE limit_set = circ_limit_set.id)
+                    );
+                IF items_out >= circ_limit_set.items_out THEN
+                    result.fail_part := 'config.circ_matrix_circ_mod_test';
+                    result.success := FALSE;
+                    done := TRUE;
+                    RETURN NEXT result;
+                END IF;
+            END IF;
+            SELECT INTO result.limit_groups result.limit_groups || ARRAY_AGG(limit_group) FROM config.circ_limit_set_group_map WHERE limit_set = circ_limit_set.id AND NOT check_only;
+    END LOOP;
+
+    -- If we passed everything, return the successful matchpoint
+    IF NOT done THEN
+        RETURN NEXT result;
+    END IF;
+
+    RETURN;
+END;
+$func$ LANGUAGE plpgsql;
+
+
+SELECT evergreen.upgrade_deps_block_check('1211', :eg_version); -- Dyrcona/rhamby/gmcharlt
+
+CREATE OR REPLACE FUNCTION actor.usr_delete(
+       src_usr  IN INTEGER,
+       dest_usr IN INTEGER
+) RETURNS VOID AS $$
+DECLARE
+       old_profile actor.usr.profile%type;
+       old_home_ou actor.usr.home_ou%type;
+       new_profile actor.usr.profile%type;
+       new_home_ou actor.usr.home_ou%type;
+       new_name    text;
+       new_dob     actor.usr.dob%type;
+BEGIN
+       SELECT
+               id || '-PURGED-' || now(),
+               profile,
+               home_ou,
+               dob
+       INTO
+               new_name,
+               old_profile,
+               old_home_ou,
+               new_dob
+       FROM
+               actor.usr
+       WHERE
+               id = src_usr;
+       --
+       -- Quit if no such user
+       --
+       IF old_profile IS NULL THEN
+               RETURN;
+       END IF;
+       --
+       perform actor.usr_purge_data( src_usr, dest_usr );
+       --
+       -- Find the root grp_tree and the root org_unit.  This would be simpler if we 
+       -- could assume that there is only one root.  Theoretically, someday, maybe,
+       -- there could be multiple roots, so we take extra trouble to get the right ones.
+       --
+       SELECT
+               id
+       INTO
+               new_profile
+       FROM
+               permission.grp_ancestors( old_profile )
+       WHERE
+               parent is null;
+       --
+       SELECT
+               id
+       INTO
+               new_home_ou
+       FROM
+               actor.org_unit_ancestors( old_home_ou )
+       WHERE
+               parent_ou is null;
+       --
+       -- Truncate date of birth
+       --
+       IF new_dob IS NOT NULL THEN
+               new_dob := date_trunc( 'year', new_dob );
+       END IF;
+       --
+       UPDATE
+               actor.usr
+               SET
+                       card = NULL,
+                       profile = new_profile,
+                       usrname = new_name,
+                       email = NULL,
+                       passwd = random()::text,
+                       standing = DEFAULT,
+                       ident_type = 
+                       (
+                               SELECT MIN( id )
+                               FROM config.identification_type
+                       ),
+                       ident_value = NULL,
+                       ident_type2 = NULL,
+                       ident_value2 = NULL,
+                       net_access_level = DEFAULT,
+                       photo_url = NULL,
+                       prefix = NULL,
+                       first_given_name = new_name,
+                       second_given_name = NULL,
+                       family_name = new_name,
+                       suffix = NULL,
+                       alias = NULL,
+            guardian = NULL,
+                       day_phone = NULL,
+                       evening_phone = NULL,
+                       other_phone = NULL,
+                       mailing_address = NULL,
+                       billing_address = NULL,
+                       home_ou = new_home_ou,
+                       dob = new_dob,
+                       active = FALSE,
+                       master_account = DEFAULT, 
+                       super_user = DEFAULT,
+                       barred = FALSE,
+                       deleted = TRUE,
+                       juvenile = DEFAULT,
+                       usrgroup = 0,
+                       claims_returned_count = DEFAULT,
+                       credit_forward_balance = DEFAULT,
+                       last_xact_id = DEFAULT,
+                       alert_message = NULL,
+                       pref_prefix = NULL,
+                       pref_first_given_name = NULL,
+                       pref_second_given_name = NULL,
+                       pref_family_name = NULL,
+                       pref_suffix = NULL,
+                       name_keywords = NULL,
+                       create_date = now(),
+                       expire_date = now()
+       WHERE
+               id = src_usr;
+END;
+$$ LANGUAGE plpgsql;
+
+COMMIT;
+
+-- Update auditor tables to catch changes to source tables.
+--   Can be removed/skipped if there were no schema changes.
+SELECT auditor.update_auditors();
index b2b87b6..e9554ab 100644 (file)
@@ -1,7 +1,7 @@
 <html><head><script></script></head><body onload="var x = document.getElementById('version'); var version ='/xul/server/'.split(/\//)[2]; if (version == 'server') { version = 'versionless debug build'; } x.appendChild(document.createTextNode(version));">
 <h1 style="text-decoration: underline">Evergreen</h1>
 <p>Target Server ID: <span id="version"></span></p>
-<p>$HeadURL$</p>
+<p>http://git.evergreen-ils.org/?p=Evergreen.git;a=shortlog;h=refs/heads/tags/rel_3_5_1</p>
 <h2>What is Evergreen?</h2>
 <blockquote>
 <p>
index 0613a13..ee785f1 100644 (file)
@@ -11,7 +11,7 @@ pref("toolkit.singletonWindowType", "eg_main");
 pref("open-ils.enable_join_tabs", true);
 
 // We'll use this one to help brand some build information into the client, and rely on subversion keywords
-pref("open-ils.repository.headURL","$HeadURL$");
+pref("open-ils.repository.headURL","http://git.evergreen-ils.org/?p=Evergreen.git;a=shortlog;h=refs/heads/tags/rel_3_5_1");
 pref("open-ils.repository.author","$Author$");
 pref("open-ils.repository.revision","$Revision$");
 pref("open-ils.repository.date","$Date$");
index a954357..14fd31e 100644 (file)
@@ -3,7 +3,7 @@
 ; HM NIS Edit Wizard helper defines
 ; Old versions of makensis don't like this, moved to Makefile
 ;!define /file PRODUCT_VERSION "client/VERSION"
-!define PRODUCT_TAG "Master"
+!define PRODUCT_TAG "3.5"
 !define PRODUCT_INSTALL_TAG "${PRODUCT_TAG}"
 !define UI_IMAGESET "beta"
 ;!define UI_IMAGESET "release"
diff --git a/README b/README
deleted file mode 120000 (symlink)
index 1ee2103e6f619066236accc1c094d89f7ab3ff97..0000000000000000000000000000000000000000
--- a/README
+++ /dev/null
@@ -1 +0,0 @@
-docs/installation/server_installation.adoc
\ No newline at end of file
diff --git a/README b/README
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..f72a85f3489ab0ac168c4be13b0f4db7cb7f3c2a
--- /dev/null
+++ b/README
@@ -0,0 +1,662 @@
+Installing the Evergreen server
+===============================
+:toc:
+:numbered:
+
+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
+<<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
+------------------------------------------------------------------------------
+
+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 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 catalogue 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:
+
+  * <<_apache_rewrite_tricks,Apache Rewrite Tricks>>
+  * <<_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 <<_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
+<<_processing_action_triggers,Notifications / Action Triggers>>.
+
+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 catalogue 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.
index d807121..4ecb4ad 100644 (file)
@@ -20,7 +20,7 @@
 
 export PATH=${PATH}:/usr/sbin
 AC_PREREQ(2.61)
-AC_INIT(Open-ILS, trunk, open-ils-dev@list.georgialibraries.org)
+AC_INIT(Open-ILS, 3.5.1, open-ils-dev@list.georgialibraries.org)
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE
index 32388de..a2a269e 100644 (file)
@@ -7,7 +7,7 @@ Software Prerequisites
 ~~~~~~~~~~~~~~~~~~~~~~
 
   * **PostgreSQL**: The minimum supported version is 9.6.
-  * **Linux**: Evergreen 3.X.X has been tested on Debian Stretch (9.0),
+  * **Linux**: Evergreen 3.5.1 has been tested on Debian Stretch (9.0),
     Debian Jessie (8.0), Ubuntu Xenial Xerus (16.04), and Ubuntu Bionic Beaver (18.04).
     If you are running an older version of these distributions, you may want
     to upgrade before upgrading Evergreen. For instructions on upgrading these
@@ -42,12 +42,12 @@ osrf_control --localhost --stop-all
  .. Back up the /openils directory.
 . Upgrade OpenSRF. Download and install the latest version of OpenSRF from
 the https://evergreen-ils.org/opensrf-downloads/[OpenSRF download page].
-. As the *opensrf* user, download and extract Evergreen 3.X.X:
+. As the *opensrf* user, download and extract Evergreen 3.5.1:
 +
 [source, bash]
 -----------------------------------------------
-wget https://evergreen-ils.org/downloads/Evergreen-ILS-3.X.X.tar.gz
-tar xzf Evergreen-ILS-3.X.X.tar.gz
+wget https://evergreen-ils.org/downloads/Evergreen-ILS-3.5.1.tar.gz
+tar xzf Evergreen-ILS-3.5.1.tar.gz
 -----------------------------------------------
 +
 [NOTE]
@@ -57,7 +57,7 @@ For the latest edition of Evergreen, check the https://evergreen-ils.org/egdownl
 +
 [source, bash]
 ---------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.X.X
+cd /home/opensrf/Evergreen-ILS-3.5.1
 ---------------------------------------------
 +
 On the next command, replace `[distribution]` with one of these values for your
@@ -80,7 +80,7 @@ make -f Open-ILS/src/extras/Makefile.install [distribution]
 +
 [source, bash]
 ------------------------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.X.X
+cd /home/opensrf/Evergreen-ILS-3.5.1
 PATH=/openils/bin:$PATH ./configure --prefix=/openils --sysconfdir=/openils/conf
 make
 ------------------------------------------------------------
@@ -91,7 +91,7 @@ These instructions assume that you have also installed OpenSRF under /openils/.
 +
 [source, bash]
 ------------------------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.X.X
+cd /home/opensrf/Evergreen-ILS-3.5.1
 make install
 ------------------------------------------------------------
 +
@@ -102,8 +102,8 @@ can supply `STAFF_CLIENT_STAMP` during the `make install` step like this:
 +
 [source, bash]
 ------------------------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.X.X
-make STAFF_CLIENT_STAMP_ID=rel_3_x_x install
+cd /home/opensrf/Evergreen-ILS-3.5.1
+make STAFF_CLIENT_STAMP_ID=rel_3_5_1 install
 ------------------------------------------------------------
 +
 . As the *root* user, change all files to be owned by the opensrf user and group:
@@ -120,7 +120,7 @@ chown -R opensrf:opensrf /openils
 ------------------------------------------------------------
 cd /openils/var/web/xul/
 rm server
-ln -sf rel_3_x_x/server server
+ln -sf rel_3_5_5/server server
 ------------------------------------------------------------
 +
 . As the *opensrf* user, update opensrf_core.xml and opensrf.xml by copying the
@@ -140,7 +140,7 @@ Copying these configuration files will remove any customizations you have made t
 +
 [source, bash]
 -------------------------------------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.X.X
+cd /home/opensrf/Evergreen-ILS-3.5.1
 perl Open-ILS/src/support-scripts/eg_db_config --update-config --service all \
 --create-offline --database evergreen --host localhost --user evergreen --password evergreen
 -------------------------------------------------------------------------
@@ -164,21 +164,21 @@ The diff command can be used to show the differences between the distribution ve
 +
 [source, bash]
 ----------------------------------------------------------
-cp /home/opensrf/Evergreen-ILS-3.X.X/Open-ILS/examples/apache/eg_startup /etc/apache2/eg_startup
+cp /home/opensrf/Evergreen-ILS-3.5.1/Open-ILS/examples/apache/eg_startup /etc/apache2/eg_startup
 ----------------------------------------------------------
 +
 .. Update /etc/apache2/eg_vhost.conf by copying the example from Open-ILS/examples/apache/eg_vhost.conf.
 +
 [source, bash]
 ----------------------------------------------------------
-cp /home/opensrf/Evergreen-ILS-3.X.X/Open-ILS/examples/apache/eg_vhost.conf /etc/apache2/eg_vhost.conf
+cp /home/opensrf/Evergreen-ILS-3.5.1/Open-ILS/examples/apache/eg_vhost.conf /etc/apache2/eg_vhost.conf
 ----------------------------------------------------------
 +
 .. Update /etc/apache2/sites-available/eg.conf by copying the example from Open-ILS/examples/apache/eg.conf.
 +
 [source, bash]
 ----------------------------------------------------------
-cp /home/opensrf/Evergreen-ILS-3.X.X/Open-ILS/examples/apache/eg.conf /etc/apache2/sites-available/eg.conf
+cp /home/opensrf/Evergreen-ILS-3.5.1/Open-ILS/examples/apache/eg.conf /etc/apache2/sites-available/eg.conf
 ----------------------------------------------------------
 
 Upgrade the Evergreen database schema
@@ -235,8 +235,8 @@ as a user with the ability to connect to the database server.
 
 [source, bash]
 ----------------------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.X.X/Open-ILS/src/sql/Pg
-psql -U evergreen -h localhost -f version-upgrade/3.X.W-3.X.X-upgrade-db.sql evergreen
+cd /home/opensrf/Evergreen-ILS-3.5.1/Open-ILS/src/sql/Pg
+psql -U evergreen -h localhost -f version-upgrade/3.5.0-3.5.1-upgrade-db.sql evergreen
 ----------------------------------------------------------
 
 [TIP]