Bumping version numbers, adding Upgrade Script and Changelog user/csharp/rel_3_4_5
authorChris Sharp <csharp@georgialibraries.org>
Tue, 24 Nov 2020 20:58:21 +0000 (15:58 -0500)
committerChris Sharp <csharp@georgialibraries.org>
Tue, 24 Nov 2020 20:58:21 +0000 (15:58 -0500)
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
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.4.4-3.4.5-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

index 1f72b2c..28e656e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,851 @@
-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 2019a239669cb7703434643012b74c9322b8476a
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Tue Nov 24 15:55:07 2020 -0500
+
+    Updating upgrade docs for 3.4.5.
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+20     16      docs/installation/server_upgrade.adoc
+
+commit f3fa5b31913404856ef55aa2473be9c9bf1f6b9d
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Tue Nov 24 15:54:32 2020 -0500
+
+    Bumping Perl version string for 3.4.5
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+1      1       Open-ILS/src/perlmods/lib/OpenILS.pm
+
+commit c48bc6b64e5bbaff41588598cc06f90b3bd5fba6
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Tue Nov 24 15:54:31 2020 -0500
+
+    Translation updates - po files
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+2      2       build/i18n/po/conify/ar-JO.po
+2      2       build/i18n/po/conify/cs-CZ.po
+2      2       build/i18n/po/conify/es-ES.po
+2      2       build/i18n/po/conify/hy-AM.po
+2943   2924    build/i18n/po/db.seed/ar-JO.po
+2946   2924    build/i18n/po/db.seed/cs-CZ.po
+2943   2924    build/i18n/po/db.seed/de-DE.po
+2943   2924    build/i18n/po/db.seed/en-CA.po
+2943   2924    build/i18n/po/db.seed/en-GB.po
+2943   2924    build/i18n/po/db.seed/es-ES.po
+2943   2924    build/i18n/po/db.seed/fi-FI.po
+2943   2924    build/i18n/po/db.seed/fr-CA.po
+2943   2924    build/i18n/po/db.seed/he-IL.po
+2943   2924    build/i18n/po/db.seed/hu-HU.po
+2943   2924    build/i18n/po/db.seed/hy-AM.po
+2943   2924    build/i18n/po/db.seed/oc-FR.po
+2943   2924    build/i18n/po/db.seed/pt-BR.po
+2943   2924    build/i18n/po/db.seed/ru-RU.po
+2943   2924    build/i18n/po/db.seed/sv-SE.po
+2943   2924    build/i18n/po/db.seed/tr-TR.po
+3004   2975    build/i18n/po/fm_IDL.dtd/ar-JO.po
+3010   2975    build/i18n/po/fm_IDL.dtd/cs-CZ.po
+3001   2972    build/i18n/po/fm_IDL.dtd/de-DE.po
+3004   2975    build/i18n/po/fm_IDL.dtd/en-CA.po
+3004   2975    build/i18n/po/fm_IDL.dtd/en-GB.po
+3004   2975    build/i18n/po/fm_IDL.dtd/es-ES.po
+3004   2975    build/i18n/po/fm_IDL.dtd/fi-FI.po
+3001   2972    build/i18n/po/fm_IDL.dtd/fr-CA.po
+3001   2972    build/i18n/po/fm_IDL.dtd/he-IL.po
+3001   2972    build/i18n/po/fm_IDL.dtd/hu-HU.po
+3004   2975    build/i18n/po/fm_IDL.dtd/hy-AM.po
+3001   2972    build/i18n/po/fm_IDL.dtd/oc-FR.po
+3003   2974    build/i18n/po/fm_IDL.dtd/pt-BR.po
+3003   2974    build/i18n/po/fm_IDL.dtd/ru-RU.po
+3001   2972    build/i18n/po/fm_IDL.dtd/sv-SE.po
+3001   2972    build/i18n/po/fm_IDL.dtd/tr-TR.po
+28     16      build/i18n/po/kpac/ar-JO.po
+28     16      build/i18n/po/kpac/cs-CZ.po
+28     16      build/i18n/po/kpac/de-DE.po
+28     16      build/i18n/po/kpac/en-GB.po
+28     16      build/i18n/po/kpac/es-ES.po
+28     16      build/i18n/po/kpac/hy-AM.po
+14     18      build/i18n/po/tpac/ar-JO.po
+17     18      build/i18n/po/tpac/cs-CZ.po
+14     18      build/i18n/po/tpac/de-DE.po
+14     18      build/i18n/po/tpac/en-CA.po
+17     18      build/i18n/po/tpac/en-GB.po
+14     18      build/i18n/po/tpac/es-ES.po
+14     18      build/i18n/po/tpac/fi-FI.po
+14     18      build/i18n/po/tpac/fr-CA.po
+14     18      build/i18n/po/tpac/he-IL.po
+14     18      build/i18n/po/tpac/hu-HU.po
+14     18      build/i18n/po/tpac/hy-AM.po
+14     18      build/i18n/po/tpac/oc-FR.po
+14     18      build/i18n/po/tpac/pt-BR.po
+14     18      build/i18n/po/tpac/ru-RU.po
+14     18      build/i18n/po/tpac/sv-SE.po
+14     18      build/i18n/po/tpac/tr-TR.po
+483    460     build/i18n/po/webstaff/ar-JO.po
+487    460     build/i18n/po/webstaff/cs-CZ.po
+10923  0       build/i18n/po/webstaff/de-DE.po
+483    460     build/i18n/po/webstaff/en-CA.po
+483    460     build/i18n/po/webstaff/en-GB.po
+483    460     build/i18n/po/webstaff/es-ES.po
+483    460     build/i18n/po/webstaff/hy-AM.po
+483    460     build/i18n/po/webstaff/ru-RU.po
+ create mode 100644 build/i18n/po/webstaff/de-DE.po
+
+commit d772e5c15dabbf50a66d3165f839a9e1254d66e6
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Wed Nov 18 09:11:41 2020 -0800
+
+    Docs: release notes for 3.4.5
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+129    0       docs/RELEASE_NOTES_3_4.adoc
+
+commit 8e831606975bfde6ebd6350c02aa2fe618757828
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Fri Nov 13 11:12:22 2020 -0500
+
+    LP1904220: Fix Booking Service Check
+    
+    Instead of trying to tell AppService which router we want to talk
+    to and confusing it, just tell it we want to talk to a router and
+    let it do its thing.
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+1      6       Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
+
+commit 73fffe0533a5ed5c6ceb7a989188fa9485b59319
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Thu Sep 24 13:18:39 2020 -0400
+
+    LP#1776954 - Add release notes
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+15     0       docs/RELEASE_NOTES_NEXT/Cataloging/blank_tcn_source.adoc
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Cataloging/blank_tcn_source.adoc
+
+commit 2f7a791f394e13ecf0e56e6dec1df65961e1cf9b
+Author: Dan Scott <dscott@laurentian.ca>
+Date:   Thu Jun 14 13:59:42 2018 -0400
+
+    LP#1776954 Avoid empty string for tcn_source
+    
+    The tcn_source for some records is an empty string, instead of the database
+    default of 'AUTOGEN', because the Perl record import code avoids a Perl warning
+    in the logger info call by setting the value to an empty string if it can't
+    find any other source (e.g. OCLC number). Unfortunately, the empty string then
+    gets passed to the database, meaning that it satisfies the non-NULL constraint
+    and does not invoke the default value of 'AUTOGEN'.
+    
+    The resulting MARCXML then contains an empty, self-closing 901 $b subfield
+    (<subfield code="b"/>) that causes an error for some other applications, such
+    as Zotero, which do not anticipate empty subfields.
+    
+    The simple fix applied here is to follow the example for $source and $tcn of
+    not setting the value of the tcn_source field in the bib record object if the
+    corresponding variable evaluates to false (such as if it's an empty string).
+    
+    To test: create a basic record in the MARC editor that includes minimal fields
+    (for example, a 100 and 245) so that it has no TCN source to extract. Check the
+    MARCXML served up by SuperCat ("curl
+    http://<hostname>/opac/extras/supercat/retrieve/marcxml-uris/record/<bib-id>").
+    Before this patch, it will have a self-closing 901 $b subfield. After applying
+    this patch and creating a new test record, the new test record will have a
+    901$b subfield with the value 'AUTOGEN'.
+    
+    A site that has been running without this patch for a long time might want to
+    check how many bib records they have with an empty tcn_source:
+    
+    SELECT COUNT(*) FROM biblio.record_entry WHERE deleted IS FALSE AND tcn_source = '';
+    
+    Sites can fix the problem by issuing UPDATE statements to set the 901$b to a value
+    like 'AUTOGEN' or 'Unknown'. They should probably do it per-record, however, to
+    avoid locking the table in a huge commit.
+    
+    Signed-off-by: Dan Scott <dscott@laurentian.ca>
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+1      1       Open-ILS/src/perlmods/lib/OpenILS/Application/Cat/BibCommon.pm
+
+commit 2113697d6b3f3680412e758ccf7954d7c5dc041f
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Wed Aug 19 16:22:43 2020 -0700
+
+    LP1882828: Fix issues with displaying cataloged resources in Pull List
+    
+    I had mistakenly used switchMap, when I should have used mergeMap. This
+    led to erroneously canceled subscriptions, leaving rows out of the pull
+    list.
+    
+    This commit also uses getRows, rather than manually setting the
+    GridDataSource's data.
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      3       Open-ILS/src/eg2/src/app/staff/booking/pull-list.component.html
+25     16      Open-ILS/src/eg2/src/app/staff/booking/pull-list.component.ts
+
+commit af063f92e944eac3bdff31d4e038060d438839fc
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Thu Sep 24 11:59:02 2020 -0400
+
+    LP#1882825: (follow-up) include update number
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/sql/Pg/upgrade/1239.data.add_missing_setting_for_booking_pull_list_grid.sql
+
+commit ab0790c413762b0b4b9cc78b317f39c581347651
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Thu Sep 24 11:58:08 2020 -0400
+
+    LP#1835127: (follow-up) fixes to update script
+    
+    - include the version number stamp
+    - adjust the permission IDs
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      3       Open-ILS/src/sql/Pg/upgrade/1238.data.permission.booking_reservation.sql
+
+commit 8e802dbd38b9a0956cd28124a154034b27ff1abe
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Thu Sep 24 08:03:33 2020 -0400
+
+    Repair Permission Seed Data
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+6      2       Open-ILS/src/sql/Pg/950.data.seed-values.sql
+
+commit 008f9c9edb284ca6d372c4f703e47286f135013c
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Wed Sep 23 16:47:33 2020 -0400
+
+    LP1882825 - Stamp upgrade script
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+0      0       Open-ILS/src/sql/Pg/upgrade/{XXXX.data.add_missing_setting_for_booking_pull_list_grid.sql => 1239.data.add_missing_setting_for_booking_pull_list_grid.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.add_missing_setting_for_booking_pull_list_grid.sql => 1239.data.add_missing_setting_for_booking_pull_list_grid.sql} (100%)
+
+commit 5a7124a925eee1b19c6c17f831924f51eef099cf
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Jun 9 13:51:24 2020 -0700
+
+    LP1882825: Add setting for booking pull list grid
+    
+    Steps to test:
+    [1] Go to the Booking Pull List.
+    [2] Change the grid around and try to save.
+    [3] Note in your browser console an error message: "Error saving columns: No user or workstation setting type exists for eg.grid.booking.pull_list"
+    [4] Run the database migration included in this commit.
+    [5] Repeat steps 1-2.
+    [6] Note that no error message appears.
+    [7] Try exiting Evergreen and coming back (using the same workstation).  Note that your changes to the grid have stuck!
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+6      0       Open-ILS/src/sql/Pg/950.data.seed-values.sql
+14     0       Open-ILS/src/sql/Pg/upgrade/XXXX.data.add_missing_setting_for_booking_pull_list_grid.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.add_missing_setting_for_booking_pull_list_grid.sql
+
+commit 55c131ac148bdc4a9d337825237239f6f71beea7
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Wed Sep 23 16:39:40 2020 -0400
+
+    LP#1835127 - Fix conflict with perm IDs vs. commit to master
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+2      2       Open-ILS/src/sql/Pg/950.data.seed-values.sql
+2      2       Open-ILS/src/sql/Pg/upgrade/1238.data.permission.booking_reservation.sql
+
+commit 1d6705d5aea46a58b9f03c9b0967348ff27169e7
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Wed Sep 23 16:33:06 2020 -0400
+
+    LP#1835127 - Stamp upgrade script
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+0      0       Open-ILS/src/sql/Pg/upgrade/{XXXX.data.permission.booking_reservation.sql => 1238.data.permission.booking_reservation.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.permission.booking_reservation.sql => 1238.data.permission.booking_reservation.sql} (100%)
+
+commit 52868c6157e2f73596e4fef17f4b4ab491c46c4b
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date:   Wed May 6 14:22:49 2020 -0700
+
+    LP#1835127: scoped permissions for reservations
+    
+    Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+16     8       Open-ILS/examples/fm_IDL.xml
+5      1       Open-ILS/src/sql/Pg/950.data.seed-values.sql
+12     0       Open-ILS/src/sql/Pg/upgrade/XXXX.data.permission.booking_reservation.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.permission.booking_reservation.sql
+
+commit b7bcd80bddc60704a2c1ba4055644edc4b2caed9
+Author: Dan Briem <dbriem@wlsmail.org>
+Date:   Tue Aug 25 15:47:15 2020 -0400
+
+    LP#1361270 Self-registration doesn't retain org unit on refresh
+    
+    This sets the self-registration form's org unit selector to the
+    the current org unit request parameter if it's set and self-
+    registration is allowed for that org unit. This will preopulate
+    the org selector on refresh or error instead of resetting to the
+    default context.
+    
+    To test:
+    1. Administration->Local Administration->Library Settings Editor
+       set Allow Patron Self-Registration to True (top context)
+    2. go to OPAC->Request Library Card (stock link is on bottom)
+    3. select a Home Library and click Submit Registration
+    4. note the Home Library select doesn't retain your selection
+    5. apply this fix and repeat steps
+    6. note the Home Library is retained
+    
+    Signed-off-by: Dan Briem <dbriem@wlsmail.org>
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+9      1       Open-ILS/src/templates/opac/register.tt2
+
+commit 875440778799766289ff859b79fafb0d252e7876
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Wed Jun 10 11:46:39 2020 -0400
+
+    LP1883126 Angular accesskey sort repair
+    
+    Fixes sorting issue in Angular egAccessKey directive to ensure that the
+    most recent additions are given highest priority and to ensure that
+    like keys (same action) are sorted next to each other in the control-h
+    help dialog.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+
+1      1       Open-ILS/src/eg2/src/app/share/accesskey/accesskey.service.ts
+
+commit 84e9ab1bec396e600948e118bf6bbcdcf87fdc2b
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Sep 21 11:51:09 2020 -0400
+
+    LP#1788260: stamp schema update
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+2      0       Open-ILS/src/sql/Pg/upgrade/{XXXX.lp1788260.schema.non-cat-in-house-use-aacct.sql => 1236.lp1788260.schema.non-cat-in-house-use-aacct.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.lp1788260.schema.non-cat-in-house-use-aacct.sql => 1236.lp1788260.schema.non-cat-in-house-use-aacct.sql} (95%)
+
+commit 9964e90c342259eae3679d292f807be6b67440dd
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Tue Aug 21 14:22:05 2018 -0400
+
+    LP#1788260 - Break out in-house-use non-cat circulations.
+    
+    Previously, all non-cataloged circulations were grouped
+    together, causing problems for libraries who need to
+    exclude in-house circulations from circ counts.
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/sql/Pg/090.schema.action.sql
+60     0       Open-ILS/src/sql/Pg/upgrade/XXXX.lp1788260.schema.non-cat-in-house-use-aacct.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.lp1788260.schema.non-cat-in-house-use-aacct.sql
+
+commit ca1185685012f2ecd59ab0bdb3bc7199e5f0830f
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Fri Sep 11 11:09:39 2020 -0400
+
+    LP#1851413: 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.restore_full_path_order.sql => 1228.function.restore_full_path_order.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.function.restore_full_path_order.sql => 1228.function.restore_full_path_order.sql} (89%)
+
+commit d37e3f51fb7943556fc3509977064df244de761a
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Tue Nov 5 12:30:10 2019 -0500
+
+    LP#1851413: Restore assumed order of full_path
+    
+    Some code, including UI rendering code in the reporting interfaces,
+    assumes that the order of the full_path stored procedure will be the
+    same as for the ancestors and descendants procedures, which is tree
+    order from top to bottom. However, because the full_path procedure
+    simply UNIONs the other two together without an explicit ORDER BY,
+    that may not be -- and for org hierarchies that have been modified
+    heavily, often is not -- the case in practice. This is due to
+    internals of query planning in Postgres.
+    
+    The easiest place to see this issues is in the report interface.
+    Select a template folder that is not currently shared, choose Manage
+    Folder, select Share Folder, click Go, and see the dropdown of options.
+    Under some circumstances, the list of org units in the dropdown there
+    are incorrectly ordered (should be from top of the tree down), and some
+    that should be available are disabled.
+    
+    This commit uses the org unit type depth to order the output as assumed.
+    
+    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>
+
+8      5       Open-ILS/src/sql/Pg/020.schema.functions.sql
+17     0       Open-ILS/src/sql/Pg/upgrade/XXXX.function.restore_full_path_order.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.function.restore_full_path_order.sql
+
+commit 4ee82a0c58b8861778def53f37c305f5e3683451
+Author: Tiffany Little <tlittle@georgialibraries.org>
+Date:   Fri Mar 1 14:00:59 2019 -0500
+
+    LP#1418694 Change wording for saving to selection list
+    
+    Changes label in line item table Actions menu for 'Save to Selection List' to 'Move to Selection List' to better reflect action taken.
+    
+    Signed-off-by: Tiffany Little <tlittle@georgialibraries.org>
+    Signed-off-by: Mary Llewellyn <mllewell@biblio.org>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+1      1       Open-ILS/src/templates/acq/common/li_table.tt2
+1      1       Open-ILS/web/js/ui/default/acq/common/li_table.js
+
+commit 282ad7594cb17749464dc508fda9e12571c57488
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Tue Mar 24 16:40:02 2020 +0000
+
+    lp1362743 holdings view duplicate barcodes
+    
+    Modify holdings view's "replace barcodes" UI so that it doesn't allow one
+    to enter a duplicate barcode.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    
+    Changes to be committed:
+            modified:   Open-ILS/src/templates/staff/cat/share/t_replace_barcode.tt2
+            modified:   Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
+    
+    Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+
+5      3       Open-ILS/src/templates/staff/cat/share/t_replace_barcode.tt2
+16     0       Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
+
+commit 3afe32cd8b577a9f0dcccaa7b0992a0ab288d842
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Mon Aug 31 11:35:31 2020 -0700
+
+    Docs: correcting typos in release notes
+    
+    Thanks to Jennifer Weston for reporting these!
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      2       docs/RELEASE_NOTES_3_4.adoc
+
+commit 216e36300063a430070c1747efad18c670fa2405
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date:   Fri May 22 15:40:30 2020 -0700
+
+    LP#1879993: use default value for opac.hold_notify when appropriate
+    
+    Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+    Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+21     6       Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
+
+commit b73850cfa2a27fe7068e94d87e974cb55b99dd92
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Wed Jun 17 23:36:26 2020 +0000
+
+    lp1840329 Register Patron keyboard accessibility
+    
+    Adjust the register patron page so that the "Primary Name" and
+    "Preferred Name" tabs are accessible when pressing the tab key.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Ruth Frasur <rfrasur@library.in.gov>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      2       Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
+
+commit eeef17a965fd9f43b5f3362b529499cf1f0116a9
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Fri Aug 21 11:14:02 2020 -0400
+
+    LP1891355 Perm group refresh after changes
+    
+    Fixes an issue where the permission group interface failed to refresh
+    the page after an edit and data refetch was performed.  At issue was a
+    progress component which was not rendered/active at the time of refresh,
+    leading to a JS error, causeing the refresh to stop.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      1       Open-ILS/src/eg2/src/app/staff/admin/server/perm-group-tree.component.ts
+
+commit 83a086210aee3c9f2b13df812c0db91f6f66a4d6
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Thu Jul 30 12:30:28 2020 -0400
+
+    LP1885764 Staff catalog UPC search
+    
+    Adds a "UPC" entry in the Query Type selector under the Numeric Search
+    tab in the Angular staff catalog.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.html
+
+commit cc1515c1417daabec7616a34fe06df28baf0726f
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Tue Jun 23 21:33:20 2020 +0000
+
+    lp1795720 add aria-hidden to Angular/AngularJS navbar icons
+    
+    Modify the navbar so that aria-hidden is applied to icons, so that they
+    are hidden from screen readers.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+69     69      Open-ILS/src/eg2/src/app/staff/nav.component.html
+90     82      Open-ILS/src/templates/staff/navbar.tt2
+
+commit d621a2ab7d8887b451963a0aea99325b3ba89169
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Thu Jul 16 14:27:34 2020 -0400
+
+    LP1865564 Clear holds cache after Request Items
+    
+    When staff place holds on a record within the Holdings View via the
+    Request Items function, reset the holds grid data so it bypasses the
+    cache and refetches the holds, including the new holds.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+4      3       Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
+
+commit 0b7fefccdf8aeae798cf6e3b0605a4aa87cd18a7
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Thu Jul 16 12:22:52 2020 -0400
+
+    LP1865564 Holds grid avoid dupes (AngularJS)
+    
+    Address a couple if cases where the record holds grid in the AngularJS
+    staff catalog would make multiple network calls to fetch holds data.
+    In some cases, these calls would result displaying duplicate holds.
+    
+    1. Avoid fetching holds when the pickup lib selector fires its on change
+    if the value provided matches the pickup lib we are already using.
+    
+    2. Avoid reseting and reloading the grid during an active grid load.
+    Instead wait for the current load to complete before launching the next
+    load action.
+    
+    Patch also includes a minor sanity check in the holdings code to avoid
+    console errors caused during pickup lib change.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+41     6       Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
+
+commit 07314410bbf4994d0bd84fed896d81d152a0947f
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Thu Aug 20 13:06:47 2020 -0700
+
+    lp1771386 stamping DB upgrade for inactivate bib on merge
+    
+    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.make_source_bib_inactive_on_merge.sql => 1214.make_source_bib_inactive_on_merge.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{xxxx.make_source_bib_inactive_on_merge.sql => 1214.make_source_bib_inactive_on_merge.sql} (99%)
+
+commit 20d49d620985876659f0cd3e4c4f15807adfeb0e
+Author: Rogan Hamby <rogan.hamby@gmail.com>
+Date:   Thu Aug 20 13:04:10 2020 -0400
+
+    lp1771386 update to record merge assets function to make source bib inactive as well as flagged deleted
+    
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Beth Willis <willis@noblenet.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      0       Open-ILS/src/sql/Pg/999.functions.global.sql
+278    0       Open-ILS/src/sql/Pg/upgrade/xxxx.make_source_bib_inactive_on_merge.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/xxxx.make_source_bib_inactive_on_merge.sql
+
+commit bb50e5901483d405f1d8d1f30f542f43a2d4b8e2
+Author: Garry Collum <gcollum@gmail.com>
+Date:   Mon Jul 13 11:34:55 2020 -0400
+
+    LP#1844732 Circulation Modifier Display when Batch Editing Items
+    
+    Fixes the circulation modifiers multivalue list when editing items with
+    more than one circulation modifier.
+    
+    To test in with the concerto data, go to Server Administrator ->
+    Circulation Modifiers and create a couple of circ modifiers (kittens,
+    puppies).
+    
+    Bring up the holdings view of a bib and edit a few items assigning these
+    items to each of the circ modifiers.
+    
+    After assigning circ modifiers to several items, bring up some of these
+    items into the item editor making sure that you have chosen items that
+    have both circ modifiers.
+    
+    View the multiple values for the circ modifiers.  It will display
+    something like 'No (10)'.
+    
+    Apply the patch. Bring up the items again and view the multiple values.
+    The circ modifiers will be listed indivitually with a number
+    representing the number of items with that circ modifier.
+    
+    Signed-off-by: Garry Collum <gcollum@gmail.com>
+    Signed-off-by: Jennifer Pringle <jennifer.pringle@bc.libraries.coop>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/templates/staff/cat/volcopy/t_attr_edit.tt2
+
+commit 3db5c46bde8981cbf1ec92ff4145a9272c6ac5d6
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Fri Jun 5 18:31:22 2020 +0000
+
+    lp1747664 add batch edit of call numbers to item bucket
+    
+    Modify the item bucket so that one can batch edit call numbers, like
+    one can from the item status page.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      0       Open-ILS/src/templates/staff/cat/bucket/copy/t_view.tt2
+12     5       Open-ILS/web/js/ui/default/staff/cat/bucket/copy/app.js
+
+commit 4e505ddff575e5fb591f113b524d18d561918cb0
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Mon Sep 23 17:17:13 2019 -0400
+
+    LP1845047 Ignore grid page size pref when paging disabled
+    
+    Ignore any saved value for page size on grids configured with paging
+    disabled.  Such grids are required to show all rows or any data past the
+    first page would be innaccessible.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/eg2/src/app/share/grid/grid.ts
+
+commit fb58b9a579068853d12f3f18c9f6ad0dce1d976c
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Mon Aug 10 15:19:51 2020 -0400
+
+    LP1850825 Vandely export set default record source
+    
+    Provide a default value for the record ID source (csv, id, bucket) in
+    the Vandelay record export interface.  Without this, a record source was
+    only specified if the source value was modified.  Defaults to 'csv'.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/eg2/src/app/staff/cat/vandelay/export.component.ts
+
+commit 41554cca0e52275dbb1b4cf90d2ea6afbfb23ddc
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Wed Aug 5 11:41:14 2020 -0400
+
+    LP1890351 Vandelay queue type selector retains data
+    
+    Avoid clearing the queue list grid when a click on the Queue Type
+    selector results in selecting the same queue type as the type already
+    loaded.
+    
+    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      0       Open-ILS/src/eg2/src/app/staff/cat/vandelay/queue-list.component.ts
+
+commit df7418a89c90146ccb9e05d7bdec1eb2717a492f
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Tue Aug 11 11:07:04 2020 -0400
+
+    LP1839562 Ang Vandelay Match Set Replace Mode
+    
+    Recover "Replace Mode" functionality in the Vandelay Match Set editor
+    interface, so existing nodes (e.g. And) may be replaced with other nodes
+    (e.g. Or) without modifying the rest of the tree structure.
+    
+    Values (Record Attrs / MARC Fields) can replace other values.  Booleans
+    can replace any type of tree node.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Mary Llewellyn <mllewell@biblio.org>
+    Signed-off-by: Christine Morgan <cmorgan@noblenet.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+7      0       Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.html
+34     14      Open-ILS/src/eg2/src/app/staff/cat/vandelay/match-set-expression.component.ts
+
+commit 2e228ba4d10f272d49eae8cfcf4ba02df5555443
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Mon Aug 17 13:51:59 2020 -0700
+
+    lp1801947 (follow-up): specify behavior for eg-help-popover button
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      0       Open-ILS/src/templates/staff/share/t_help_popover.tt2
+
+commit e299e189b7c15c1f1c67f9c8f86a918ab712e64e
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Fri Jun 19 20:00:04 2020 +0000
+
+    lp1801947 eg-help-popover accessibility
+    
+    Modify the eg-help-popover directive so that it can be invoked via
+    a keyboard action.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    
+     Changes to be committed:
+            modified:   Open-ILS/src/templates/staff/css/style.css.tt2
+            modified:   Open-ILS/src/templates/staff/share/t_help_popover.tt2
+    
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+3      0       Open-ILS/src/templates/staff/css/style.css.tt2
+6      4       Open-ILS/src/templates/staff/share/t_help_popover.tt2
+
+commit 908f32f794b9c0df8e7c167bcea67ceb0b7ebd06
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Fri Aug 7 20:14:40 2020 +0000
+
+    LP#1724019 Offline Circulation Orgs Alphabetized
+    
+    On the offline circulation interface adjust the orgs so that they're
+    sorted alphabetically.  Preserve the org hierarchy.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    
+     Changes to be committed:
+            modified:   Open-ILS/web/js/ui/default/staff/services/env.js
+            modified:   Open-ILS/web/js/ui/default/staff/services/lovefield.js
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+9      9       Open-ILS/web/js/ui/default/staff/services/env.js
+5      0       Open-ILS/web/js/ui/default/staff/services/lovefield.js
+
+commit bab80c989186a7c1d1e9479139d5c2e1bdd73b89
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Mon Aug 10 11:09:35 2020 -0400
+
+    LP1890849 Grid context menu override fixed width
+    
+    Allow grid context menus to expand horizontally for longer terms to
+    avoid scroll bars and/or having text get cut off.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+5      0       Open-ILS/src/eg2/src/app/share/grid/grid.component.css
+
+commit b6b80af0a84edc5a42665012bc063c0a125fbc7a
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Thu Aug 13 16:01:08 2020 -0400
+
+    LP#1839365: (follow-up) update AngularJS login page as well
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/templates/staff/t_login.tt2
+
+commit 0a2e623961a4e31031c1390b607eece4a56837c5
+Author: Shula Link <slink@gchrl.org>
+Date:   Tue Oct 22 11:06:44 2019 -0400
+
+    LP#1839365: add h1 heading to Angular staff login page
+    
+    Signed-off-by: Shula Link <slink@gchrl.org>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/eg2/src/app/staff/login.component.html
+
+commit e1293d8fcf0ba3e2e9d6178ca33bba5dd76ea13b
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Wed Aug 5 21:34:12 2020 +0000
+
+    lp1890498: Replace Item Barcode now warns about duplicate barcode
+    
+    Modify the Replace Item Barcode page so that it displays an error
+    message when trying to replace a barcode with a barcode already
+    in use.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      0       Open-ILS/src/templates/staff/cat/share/t_replace_barcode.tt2
+17     6       Open-ILS/web/js/ui/default/staff/cat/item/replace_barcode/app.js
+
+commit 26c7d264bbcfeef8b8a4a67619d7622740b52a82
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Fri Jun 12 22:17:44 2020 +0000
+
+    LP#1207744: fix display of duplicate results when viewing report folders
+    
+    When you repeatedly click the link to display a template, report, or
+    output folder on the reports UI, the contents of that folder can
+    display multiple times. This patch addresses this bug and prevents
+    duplicate contents from displaying.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+4      2       Open-ILS/web/reports/oils_rpt_folder_window.js
+
+commit 142e071105a7d4f9513afe2c5fdc7d9dc6aa0622
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Thu Aug 13 06:51:26 2020 -0700
+
+    Docs: ldconfig needs to be run when installing on Ubuntu 18.04 too
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       docs/installation/server_installation.adoc
index d750216..b5d3b3b 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-4-5";
 }
 
 __PACKAGE__->register_method(
index 18d466b..0e50a44 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 ('1239', :eg_version); -- sandbergja/csharp
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.4.5', :eg_version);
 
 CREATE TABLE config.bib_source (
        id              SERIAL  PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/version-upgrade/3.4.4-3.4.5-upgrade-db.sql b/Open-ILS/src/sql/Pg/version-upgrade/3.4.4-3.4.5-upgrade-db.sql
new file mode 100644 (file)
index 0000000..f78315f
--- /dev/null
@@ -0,0 +1,382 @@
+--Upgrade Script for 3.4.4 to 3.4.5
+\set eg_version '''3.4.5'''
+BEGIN;
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.4.5', :eg_version);
+
+SELECT evergreen.upgrade_deps_block_check('1214', :eg_version);
+
+CREATE OR REPLACE FUNCTION asset.merge_record_assets( target_record BIGINT, source_record BIGINT ) RETURNS INT AS $func$
+DECLARE
+    moved_objects INT := 0;
+    source_cn     asset.call_number%ROWTYPE;
+    target_cn     asset.call_number%ROWTYPE;
+    metarec       metabib.metarecord%ROWTYPE;
+    hold          action.hold_request%ROWTYPE;
+    ser_rec       serial.record_entry%ROWTYPE;
+    ser_sub       serial.subscription%ROWTYPE;
+    acq_lineitem  acq.lineitem%ROWTYPE;
+    acq_request   acq.user_request%ROWTYPE;
+    booking       booking.resource_type%ROWTYPE;
+    source_part   biblio.monograph_part%ROWTYPE;
+    target_part   biblio.monograph_part%ROWTYPE;
+    multi_home    biblio.peer_bib_copy_map%ROWTYPE;
+    uri_count     INT := 0;
+    counter       INT := 0;
+    uri_datafield TEXT;
+    uri_text      TEXT := '';
+BEGIN
+
+    -- move any 856 entries on records that have at least one MARC-mapped URI entry
+    SELECT  INTO uri_count COUNT(*)
+      FROM  asset.uri_call_number_map m
+            JOIN asset.call_number cn ON (m.call_number = cn.id)
+      WHERE cn.record = source_record;
+
+    IF uri_count > 0 THEN
+        
+        -- This returns more nodes than you might expect:
+        -- 7 instead of 1 for an 856 with $u $y $9
+        SELECT  COUNT(*) INTO counter
+          FROM  oils_xpath_table(
+                    'id',
+                    'marc',
+                    'biblio.record_entry',
+                    '//*[@tag="856"]',
+                    'id=' || source_record
+                ) as t(i int,c text);
+    
+        FOR i IN 1 .. counter LOOP
+            SELECT  '<datafield xmlns="http://www.loc.gov/MARC21/slim"' || 
+                       ' tag="856"' ||
+                       ' ind1="' || FIRST(ind1) || '"'  ||
+                       ' ind2="' || FIRST(ind2) || '">' ||
+                        STRING_AGG(
+                            '<subfield code="' || subfield || '">' ||
+                            regexp_replace(
+                                regexp_replace(
+                                    regexp_replace(data,'&','&amp;','g'),
+                                    '>', '&gt;', 'g'
+                                ),
+                                '<', '&lt;', 'g'
+                            ) || '</subfield>', ''
+                        ) || '</datafield>' INTO uri_datafield
+              FROM  oils_xpath_table(
+                        'id',
+                        'marc',
+                        'biblio.record_entry',
+                        '//*[@tag="856"][position()=' || i || ']/@ind1|' ||
+                        '//*[@tag="856"][position()=' || i || ']/@ind2|' ||
+                        '//*[@tag="856"][position()=' || i || ']/*/@code|' ||
+                        '//*[@tag="856"][position()=' || i || ']/*[@code]',
+                        'id=' || source_record
+                    ) as t(id int,ind1 text, ind2 text,subfield text,data text);
+
+            -- As most of the results will be NULL, protect against NULLifying
+            -- the valid content that we do generate
+            uri_text := uri_text || COALESCE(uri_datafield, '');
+        END LOOP;
+
+        IF uri_text <> '' THEN
+            UPDATE  biblio.record_entry
+              SET   marc = regexp_replace(marc,'(</[^>]*record>)', uri_text || E'\\1')
+              WHERE id = target_record;
+        END IF;
+
+    END IF;
+
+       -- Find and move metarecords to the target record
+       SELECT  INTO metarec *
+         FROM  metabib.metarecord
+         WHERE master_record = source_record;
+
+       IF FOUND THEN
+               UPDATE  metabib.metarecord
+                 SET   master_record = target_record,
+                       mods = NULL
+                 WHERE id = metarec.id;
+
+               moved_objects := moved_objects + 1;
+       END IF;
+
+       -- Find call numbers attached to the source ...
+       FOR source_cn IN SELECT * FROM asset.call_number WHERE record = source_record LOOP
+
+               SELECT  INTO target_cn *
+                 FROM  asset.call_number
+                 WHERE label = source_cn.label
+            AND prefix = source_cn.prefix
+            AND suffix = source_cn.suffix
+                       AND owning_lib = source_cn.owning_lib
+                       AND record = target_record
+                       AND NOT deleted;
+
+               -- ... and if there's a conflicting one on the target ...
+               IF FOUND THEN
+
+                       -- ... move the copies to that, and ...
+                       UPDATE  asset.copy
+                         SET   call_number = target_cn.id
+                         WHERE call_number = source_cn.id;
+
+                       -- ... move V holds to the move-target call number
+                       FOR hold IN SELECT * FROM action.hold_request WHERE target = source_cn.id AND hold_type = 'V' LOOP
+               
+                               UPDATE  action.hold_request
+                                 SET   target = target_cn.id
+                                 WHERE id = hold.id;
+               
+                               moved_objects := moved_objects + 1;
+                       END LOOP;
+        
+            UPDATE asset.call_number SET deleted = TRUE WHERE id = source_cn.id;
+
+               -- ... if not ...
+               ELSE
+                       -- ... just move the call number to the target record
+                       UPDATE  asset.call_number
+                         SET   record = target_record
+                         WHERE id = source_cn.id;
+               END IF;
+
+               moved_objects := moved_objects + 1;
+       END LOOP;
+
+       -- Find T holds targeting the source record ...
+       FOR hold IN SELECT * FROM action.hold_request WHERE target = source_record AND hold_type = 'T' LOOP
+
+               -- ... and move them to the target record
+               UPDATE  action.hold_request
+                 SET   target = target_record
+                 WHERE id = hold.id;
+
+               moved_objects := moved_objects + 1;
+       END LOOP;
+
+       -- Find serial records targeting the source record ...
+       FOR ser_rec IN SELECT * FROM serial.record_entry WHERE record = source_record LOOP
+               -- ... and move them to the target record
+               UPDATE  serial.record_entry
+                 SET   record = target_record
+                 WHERE id = ser_rec.id;
+
+               moved_objects := moved_objects + 1;
+       END LOOP;
+
+       -- Find serial subscriptions targeting the source record ...
+       FOR ser_sub IN SELECT * FROM serial.subscription WHERE record_entry = source_record LOOP
+               -- ... and move them to the target record
+               UPDATE  serial.subscription
+                 SET   record_entry = target_record
+                 WHERE id = ser_sub.id;
+
+               moved_objects := moved_objects + 1;
+       END LOOP;
+
+       -- Find booking resource types targeting the source record ...
+       FOR booking IN SELECT * FROM booking.resource_type WHERE record = source_record LOOP
+               -- ... and move them to the target record
+               UPDATE  booking.resource_type
+                 SET   record = target_record
+                 WHERE id = booking.id;
+
+               moved_objects := moved_objects + 1;
+       END LOOP;
+
+       -- Find acq lineitems targeting the source record ...
+       FOR acq_lineitem IN SELECT * FROM acq.lineitem WHERE eg_bib_id = source_record LOOP
+               -- ... and move them to the target record
+               UPDATE  acq.lineitem
+                 SET   eg_bib_id = target_record
+                 WHERE id = acq_lineitem.id;
+
+               moved_objects := moved_objects + 1;
+       END LOOP;
+
+       -- Find acq user purchase requests targeting the source record ...
+       FOR acq_request IN SELECT * FROM acq.user_request WHERE eg_bib = source_record LOOP
+               -- ... and move them to the target record
+               UPDATE  acq.user_request
+                 SET   eg_bib = target_record
+                 WHERE id = acq_request.id;
+
+               moved_objects := moved_objects + 1;
+       END LOOP;
+
+       -- Find parts attached to the source ...
+       FOR source_part IN SELECT * FROM biblio.monograph_part WHERE record = source_record LOOP
+
+               SELECT  INTO target_part *
+                 FROM  biblio.monograph_part
+                 WHERE label = source_part.label
+                       AND record = target_record;
+
+               -- ... and if there's a conflicting one on the target ...
+               IF FOUND THEN
+
+                       -- ... move the copy-part maps to that, and ...
+                       UPDATE  asset.copy_part_map
+                         SET   part = target_part.id
+                         WHERE part = source_part.id;
+
+                       -- ... move P holds to the move-target part
+                       FOR hold IN SELECT * FROM action.hold_request WHERE target = source_part.id AND hold_type = 'P' LOOP
+               
+                               UPDATE  action.hold_request
+                                 SET   target = target_part.id
+                                 WHERE id = hold.id;
+               
+                               moved_objects := moved_objects + 1;
+                       END LOOP;
+
+               -- ... if not ...
+               ELSE
+                       -- ... just move the part to the target record
+                       UPDATE  biblio.monograph_part
+                         SET   record = target_record
+                         WHERE id = source_part.id;
+               END IF;
+
+               moved_objects := moved_objects + 1;
+       END LOOP;
+
+       -- Find multi_home items attached to the source ...
+       FOR multi_home IN SELECT * FROM biblio.peer_bib_copy_map WHERE peer_record = source_record LOOP
+               -- ... and move them to the target record
+               UPDATE  biblio.peer_bib_copy_map
+                 SET   peer_record = target_record
+                 WHERE id = multi_home.id;
+
+               moved_objects := moved_objects + 1;
+       END LOOP;
+
+       -- And delete mappings where the item's home bib was merged with the peer bib
+       DELETE FROM biblio.peer_bib_copy_map WHERE peer_record = (
+               SELECT (SELECT record FROM asset.call_number WHERE id = call_number)
+               FROM asset.copy WHERE id = target_copy
+       );
+
+    -- Apply merge tracking
+    UPDATE biblio.record_entry 
+        SET merge_date = NOW() WHERE id = target_record;
+
+    UPDATE biblio.record_entry
+        SET merge_date = NOW(), merged_to = target_record
+        WHERE id = source_record;
+
+    -- replace book bag entries of source_record with target_record
+    UPDATE container.biblio_record_entry_bucket_item
+        SET target_biblio_record_entry = target_record
+        WHERE bucket IN (SELECT id FROM container.biblio_record_entry_bucket WHERE btype = 'bookbag')
+        AND target_biblio_record_entry = source_record;
+
+    -- Finally, "delete" the source record
+    UPDATE biblio.record_entry SET active = FALSE WHERE id = source_record;
+    DELETE FROM biblio.record_entry WHERE id = source_record;
+
+       -- That's all, folks!
+       RETURN moved_objects;
+END;
+$func$ LANGUAGE plpgsql;
+
+
+SELECT evergreen.upgrade_deps_block_check('1228', :eg_version);
+
+CREATE OR REPLACE FUNCTION actor.org_unit_full_path ( INT ) RETURNS SETOF actor.org_unit AS $$
+    SELECT  aou.*
+      FROM  actor.org_unit AS aou
+            JOIN (
+                (SELECT au.id, t.depth FROM actor.org_unit_ancestors($1) AS au JOIN actor.org_unit_type t ON (au.ou_type = t.id))
+                    UNION
+                (SELECT au.id, t.depth FROM actor.org_unit_descendants($1) AS au JOIN actor.org_unit_type t ON (au.ou_type = t.id))
+            ) AS ad ON (aou.id=ad.id)
+      ORDER BY ad.depth;
+$$ LANGUAGE SQL STABLE;
+
+
+
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1236', :eg_version);
+
+CREATE OR REPLACE VIEW action.all_circulation_combined_types AS
+ SELECT acirc.id AS id,
+    acirc.xact_start,
+    acirc.circ_lib,
+    acirc.circ_staff,
+    acirc.create_time,
+    ac_acirc.circ_modifier AS item_type,
+    'regular_circ'::text AS circ_type
+   FROM action.circulation acirc,
+    asset.copy ac_acirc
+  WHERE acirc.target_copy = ac_acirc.id
+UNION ALL
+ SELECT ancc.id::BIGINT AS id,
+    ancc.circ_time AS xact_start,
+    ancc.circ_lib,
+    ancc.staff AS circ_staff,
+    ancc.circ_time AS create_time,
+    cnct_ancc.name AS item_type,
+    'non-cat_circ'::text AS circ_type
+   FROM action.non_cataloged_circulation ancc,
+    config.non_cataloged_type cnct_ancc
+  WHERE ancc.item_type = cnct_ancc.id
+UNION ALL
+ SELECT aihu.id::BIGINT AS id,
+    aihu.use_time AS xact_start,
+    aihu.org_unit AS circ_lib,
+    aihu.staff AS circ_staff,
+    aihu.use_time AS create_time,
+    ac_aihu.circ_modifier AS item_type,
+    'in-house_use'::text AS circ_type
+   FROM action.in_house_use aihu,
+    asset.copy ac_aihu
+  WHERE aihu.item = ac_aihu.id
+UNION ALL
+ SELECT ancihu.id::BIGINT AS id,
+    ancihu.use_time AS xact_start,
+    ancihu.org_unit AS circ_lib,
+    ancihu.staff AS circ_staff,
+    ancihu.use_time AS create_time,
+    cnct_ancihu.name AS item_type,
+    'non-cat-in-house_use'::text AS circ_type
+   FROM action.non_cat_in_house_use ancihu,
+    config.non_cataloged_type cnct_ancihu
+  WHERE ancihu.item_type = cnct_ancihu.id
+UNION ALL
+ SELECT aacirc.id AS id,
+    aacirc.xact_start,
+    aacirc.circ_lib,
+    aacirc.circ_staff,
+    aacirc.create_time,
+    ac_aacirc.circ_modifier AS item_type,
+    'aged_circ'::text AS circ_type
+   FROM action.aged_circulation aacirc,
+    asset.copy ac_aacirc
+  WHERE aacirc.target_copy = ac_aacirc.id;
+
+
+
+SELECT evergreen.upgrade_deps_block_check('1238', :eg_version);
+
+INSERT INTO permission.perm_list ( id, code, description ) VALUES
+ ( 625, 'VIEW_BOOKING_RESERVATION', oils_i18n_gettext(625,
+    'View booking reservations', 'ppl', 'description')),
+ ( 626, 'VIEW_BOOKING_RESERVATION_ATTR_MAP', oils_i18n_gettext(626,
+    'View booking reservation attribute maps', 'ppl', 'description'))
+;
+
+
+SELECT evergreen.upgrade_deps_block_check('1239', :eg_version);
+
+INSERT INTO config.workstation_setting_type (name, grp, datatype, label)
+VALUES (
+    'eg.grid.booking.pull_list', 'gui', 'object',
+    oils_i18n_gettext(
+        'booking.pull_list',
+        'Grid Config: Booking Pull List',
+        'cwst', 'label')
+);
+
+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..c736372 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_4_5</p>
 <h2>What is Evergreen?</h2>
 <blockquote>
 <p>
index 0613a13..2f48e60 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_4_5");
 pref("open-ils.repository.author","$Author$");
 pref("open-ils.repository.revision","$Revision$");
 pref("open-ils.repository.date","$Date$");
index a954357..7f20eae 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.4"
 !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..26ac0b028bf2830f8b25804f61f47833dc11c615
--- /dev/null
+++ b/README
@@ -0,0 +1,649 @@
+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 Ubuntu 18.04 or Debian Stretch / Buster, run the following command as the root user:
+
+[source, bash]
+------------------------------------------------------------------------------
+ldconfig
+------------------------------------------------------------------------------
+
+Additional Instructions for Developers
+--------------------------------------
+
+[NOTE]
+Skip this section if you are using an official release tarball downloaded
+from http://evergreen-ils.org/egdownloads
+
+Developers working directly with the source code from the Git repository,
+rather than an official release tarball, need to install the Dojo Toolkit
+set of JavaScript libraries. The appropriate version of Dojo is included in
+Evergreen release tarballs. Developers should install the Dojo 1.3.3 version
+of Dojo by issuing the following commands as the *opensrf* Linux account:
+
+[source, bash]
+------------------------------------------------------------------------------
+wget http://download.dojotoolkit.org/release-1.3.3/dojo-release-1.3.3.tar.gz
+tar -C /openils/var/web/js -xzf dojo-release-1.3.3.tar.gz
+cp -r /openils/var/web/js/dojo-release-1.3.3/* /openils/var/web/js/dojo/.
+------------------------------------------------------------------------------
+
+
+Configure the Apache Web server
+-------------------------------
+
+. Use the example configuration files to configure your Web server for 
+the Evergreen catalog, web staff client, Web services, and administration
+interfaces. Issue the following commands as the *root* Linux account:
++
+[source,bash]
+------------------------------------------------------------------------------------
+cp Open-ILS/examples/apache_24/eg_24.conf       /etc/apache2/sites-available/eg.conf
+cp Open-ILS/examples/apache_24/eg_vhost_24.conf /etc/apache2/eg_vhost.conf
+cp Open-ILS/examples/apache_24/eg_startup      /etc/apache2/
+# Now set up SSL
+mkdir /etc/apache2/ssl
+cd /etc/apache2/ssl
+------------------------------------------------------------------------------------
++
+. The `openssl` command cuts a new SSL key for your Apache server. For a
+production server, you should purchase a signed SSL certificate, but you can
+just use a self-signed certificate and accept the warnings in the
+and browser during testing and development. Create an SSL key for the Apache
+server by issuing the following command as the *root* Linux account:
++
+[source,bash]
+------------------------------------------------------------------------------
+openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key
+------------------------------------------------------------------------------
++
+. As the *root* Linux account, edit the `eg.conf` file that you copied into
+place.
+  a. To enable access to the offline upload / execute interface from any
+     workstation on any network, make the following change (and note that
+     you *must* secure this for a production instance):
+     * Replace `Require host 10.0.0.0/8` with `Require all granted`
+. Change the user for the Apache server.
+  * As the *root* Linux account, edit
+    `/etc/apache2/envvars`.  Change `export APACHE_RUN_USER=www-data` to 
+    `export APACHE_RUN_USER=opensrf`.
+. As the *root* Linux account, configure Apache with KeepAlive settings
+  appropriate for Evergreen. Higher values can improve the performance of a
+  single client by allowing multiple requests to be sent over the same TCP
+  connection, but increase the risk of using up all available Apache child
+  processes and memory.
+  * Edit `/etc/apache2/apache2.conf`.
+    a. Change `KeepAliveTimeout` to `1`.
+    b. Change `MaxKeepAliveRequests` to `100`.
+. As the *root* Linux account, configure the prefork module to start and keep
+  enough Apache servers available to provide quick responses to clients without
+  running out of memory. The following settings are a good starting point for a
+  site that exposes the default Evergreen 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.
+
+[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
+------------------------------------------------------------------------------
+
+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 dacb5a3..671f994 100644 (file)
@@ -20,8 +20,8 @@
 
 export PATH=${PATH}:/usr/sbin
 AC_PREREQ(2.61)
-AC_INIT(Open-ILS, trunk, open-ils-dev@list.georgialibraries.org)
-AM_INIT_AUTOMAKE([OpenILS], [trunk])
+AC_INIT(Open-ILS, 3.4.5, open-ils-dev@list.georgialibraries.org)
+AM_INIT_AUTOMAKE([OpenILS], [3.4.5])
 AC_REVISION($Revision: 0.1 $)
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_SUBDIRS([Open-ILS/xul/staff_client/external/libmar])