From: Dan Wells Date: Tue, 20 Nov 2018 20:35:26 +0000 (-0500) Subject: Bumping version numbers, adding Upgrade Script and Changelog X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=90a17e5762f30c23abf990a1b332f881aaf52ecc;p=evergreen%2Fpines.git Bumping version numbers, adding Upgrade Script and Changelog Signed-off-by: Dan Wells --- diff --git a/ChangeLog b/ChangeLog index 1f72b2c73e..cb021e6813 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,971 @@ -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 c48fd50647b9ce44757e23c47bc6fca6c5cc7bce +Author: Dan Wells +Date: Tue Nov 20 15:29:13 2018 -0500 + + Update upgrade docs for 3.2.2 release + + Signed-off-by: Dan Wells + +16 16 docs/installation/server_upgrade.adoc + +commit 99bad0f721f2d09fad4ff22960a5987ec360d20c +Author: Dan Wells +Date: Mon Feb 24 12:09:57 2014 -0500 + + Bump OpenILS.pm version + + Signed-off-by: Dan Wells + +1 1 Open-ILS/src/perlmods/lib/OpenILS.pm + +commit f364ec12cc94cd04f86de4df0dfef5ddb19c3c3b +Author: Dan Wells +Date: Tue Nov 20 15:23:07 2018 -0500 + + Translation updates - po files + + Signed-off-by: Dan Wells + +4 4 build/i18n/po/circ/cs-CZ.po +4 4 build/i18n/po/selfcheck.js/cs-CZ.po + +commit 27f2cb2e06d0b6d14d47727c8bac3c418b7fec7d +Author: Dan Wells +Date: Tue Nov 20 15:17:31 2018 -0500 + + Translation updates - newpot + + Signed-off-by: Dan Wells + +14 14 build/i18n/po/tpac/tpac.pot +82 82 build/i18n/po/webstaff/webstaff.pot + +commit 017679d0279fd113120c47d2a083b7554f878bed +Author: Dan Wells +Date: Tue Nov 20 13:50:27 2018 -0500 + + Release notes entry for LP#1804038 + + Also, add a missing contributor. + + Signed-off-by: Dan Wells + +2 0 docs/RELEASE_NOTES_3_2.adoc + +commit 73667df4a369e91b523a0bce9064b6664a740e47 +Author: Dan Wells +Date: Tue Nov 20 12:33:49 2018 -0500 + + LP#1804038 Fix-ups for older 'clense' functions + + Way back when, we switched from a misspelled 'clense_ISO8601' to a + corrected 'cleanse_ISO8601' in OpenSRF. This function has again moved, + and is now part of OpenILS::Utils::DateTime, and is named + 'clean_ISO8601'. This was done as part of LP bug #1552778. + + However, a few stragglers of the misspelling remained, so these were + missed when the big changeover occurred. This hopefully catches them + all! + + Signed-off-by: Dan Wells + Signed-off-by: Jason Boyer + +2 2 Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm +1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Booking.pm +1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm + +commit 25debc65eb9b52129c72abecf1ea5da23421ebb3 +Author: kilsdonka <43423795+kilsdonka@users.noreply.github.com> +Date: Tue Nov 20 09:50:54 2018 -0800 + + Docs: Multilingual search documentation + + Signed-off-by: Jane Sandberg + +70 0 docs/admin/multilingual_search.adoc +- - docs/media/multilingual_search1.png +- - docs/media/multilingual_search2.PNG +- - docs/media/multilingual_search3.PNG +2 0 docs/root.adoc +6 0 docs/root_staff_client_admin.adoc + create mode 100644 docs/admin/multilingual_search.adoc + create mode 100644 docs/media/multilingual_search1.png + create mode 100644 docs/media/multilingual_search2.PNG + create mode 100644 docs/media/multilingual_search3.PNG + +commit e82b6edf0d640e36804d5b25f090dff3f1050bd5 +Author: Dan Wells +Date: Tue Nov 20 12:57:47 2018 -0500 + + Release notes entry for LP#1793154 + + Signed-off-by: Dan Wells + +2 0 docs/RELEASE_NOTES_3_2.adoc + +commit 8be497fa12f4c9da489b83039d522e540f66af4c +Author: Jason Boyer +Date: Tue Nov 20 11:54:50 2018 -0500 + + LP1793154: Cancel Holds from OPAC Record + + The name of the grid handler was misspelled + in the holds grid for records in the opac. + Swapping the location of the 'wide' part of + the function name will allow it to match up + with the functions available in the holds + grid module. + + Signed-off-by: Jason Boyer + Signed-off-by: Michele Morgan + Signed-off-by: Dan Wells + +1 1 Open-ILS/src/templates/staff/cat/catalog/t_holds.tt2 + +commit 964295edc98019e688ef8033f4ed85a75b848cb1 +Author: Jane Sandberg +Date: Tue Nov 20 08:50:35 2018 -0800 + + Docs: documenting multiple emails in patron editor (LP1755625) + + Signed-off-by: Jane Sandberg + +24 0 docs/admin/patron_registration.adoc +12 0 docs/circulation/circulation_patron_records_web_client.adoc +2 0 docs/root_staff_client_admin.adoc + create mode 100644 docs/admin/patron_registration.adoc + +commit 71a23d65f1f8ef6ee92c9f168751fbbcf6edc402 +Author: Jane Sandberg +Date: Tue Nov 20 08:27:35 2018 -0800 + + Docs: release notes for 3.2.2 + + Signed-off-by: Jane Sandberg + +78 0 docs/RELEASE_NOTES_3_2.adoc + +commit 8ab48e237db39e5b30f8714155c289baf040b08b +Author: Jane Sandberg +Date: Tue Nov 20 08:18:34 2018 -0800 + + Docs: adding release notes for 3.1.8 + + Signed-off-by: Jane Sandberg + +74 0 docs/RELEASE_NOTES_3_1.adoc + +commit 095b59e2f3f9c5596c3156130267ac42794805ba +Author: Ben Shum +Date: Tue Nov 20 09:18:05 2018 -0500 + + LP#1643709: Stamping upgrade scripts + + Include placeholder 1137 for 3.1 version of the SQL function changed + vs. 1138 which contains the one for 3.2 and master and beyond. + + Signed-off-by: Ben Shum + +1 1 Open-ILS/src/sql/Pg/002.schema.config.sql +9 0 Open-ILS/src/sql/Pg/upgrade/1137.function.global.purge-usr-on-merge-3.1.sql +361 0 Open-ILS/src/sql/Pg/upgrade/1138.function.global.purge-usr-on-merge.sql +0 361 Open-ILS/src/sql/Pg/upgrade/xxxx.function.global.purge-usr-on-merge.sql + create mode 100644 Open-ILS/src/sql/Pg/upgrade/1137.function.global.purge-usr-on-merge-3.1.sql + create mode 100644 Open-ILS/src/sql/Pg/upgrade/1138.function.global.purge-usr-on-merge.sql + delete mode 100644 Open-ILS/src/sql/Pg/upgrade/xxxx.function.global.purge-usr-on-merge.sql + +commit f4183e66b38ec08e325d59e0b9162dfd6cbb87d1 +Author: Rogan Hamby +Date: Fri Sep 14 09:25:57 2018 -0400 + + LP#1643709 User merge + purge pgtap test + + Signed-off-by: Rogan Hamby + Signed-off-by: Bill Erickson + Signed-off-by: Ben Shum + +25 0 Open-ILS/src/sql/Pg/t/lp1643709_purge_usrs_on_merge.pg + create mode 100644 Open-ILS/src/sql/Pg/t/lp1643709_purge_usrs_on_merge.pg + +commit 3edfc1d7b441145e020538b0e513da903111ce53 +Author: Rogan Hamby +Date: Fri Sep 14 08:05:12 2018 -0400 + + LP#1643709 purge users on merge instead of flag deleted + + Purge merged user accounts. + + Update the upgraded version of the usr_merge() db function to match + recnet changes in master. + + Signed-off-by: Rogan Hamby + Signed-off-by: Bill Erickson + Signed-off-by: Ben Shum + +1 1 Open-ILS/src/sql/Pg/999.functions.global.sql +361 0 Open-ILS/src/sql/Pg/upgrade/xxxx.function.global.purge-usr-on-merge.sql + create mode 100644 Open-ILS/src/sql/Pg/upgrade/xxxx.function.global.purge-usr-on-merge.sql + +commit ebe7726d9033e0c462baa443ab5977c48024a719 +Author: Jason Boyer +Date: Fri Nov 2 12:33:10 2018 -0400 + + LP1801156: Add missing assets to 3.2 Offline mode + + t_org_select was missing from the UpUp asset list, + causing offline mode to be non-functional when unable + to connect to the server. + + Signed-off-by: Jason Boyer + Signed-off-by: Galen Charlton + Signed-off-by: Bill Erickson + +2 0 Open-ILS/src/templates/staff/base_js.tt2 + +commit 7a0e6b686091e86413e69a6ebfff2f61b68e7f2f +Author: Garry Collum +Date: Sat Jun 16 14:13:22 2018 -0400 + + LP#1761242 Z39.50 Marc View Usability with Mobile Repsonsiveness + + This patch changes the size of the image in the Z39.50 Marc View from large to + medium. It also incorporates bootstrap's media classes to present the Marc + record and the cover image side by side. If there is no image the marc record + display floats to the left of the modal. From a suggestion by Jane Sandbert, it + also hides the book cover image on small devices. + + To test. + 1. Perform a search in z39.50. An LOC title search for "Cat in the Hat" + returms results of titles with and without images. + 2. View some of the titles in Marc View, noting the large image. + 3. Apply the patch. + 4. Perform the same search and view the results in Marc View. + + Signed-off-by: Garry Collum + Signed-off-by: Janet Schrader + Signed-off-by: Galen Charlton + +8 2 Open-ILS/src/templates/staff/cat/z3950/t_marc_html.tt2 + +commit 1dbf4109ffffe66aba07648fabf103432b932b40 +Author: Jason Stephenson +Date: Mon Sep 17 10:08:34 2018 -0400 + + Lp 1753813: Wrap all oils_persist:source_definitions in CDATA blocks. + + For safety's sake, we add CDATA sections in all fm_ILD.xml + oils_persist:source_definition elements as show in the example at the + top of the IDL. + + Signed-off-by: Jason Stephenson + Signed-off-by: Ben Shum + +39 39 Open-ILS/examples/fm_IDL.xml + +commit 46bd9e31258ea34a3c3e843ff9febf47a000fea5 +Author: Ben Shum +Date: Sun Nov 18 22:06:21 2018 -0500 + + LP#1764542: Fixing upgrade script numbering + + Signed-off-by: Ben Shum + +1 1 Open-ILS/src/sql/Pg/upgrade/1136.schema.lp1764542-mods33-update.sql + +commit e0c41ce17e4f51a2139ea4aad3e626f8b0b15a98 +Author: Ben Shum +Date: Sun Nov 18 21:58:38 2018 -0500 + + LP#1764542: Stamping upgrade script + + Signed-off-by: Ben Shum + +1 1 Open-ILS/src/sql/Pg/002.schema.config.sql +13 0 Open-ILS/src/sql/Pg/upgrade/1136.schema.lp1764542-mods33-update.sql +0 13 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.lp1764542-mods33-update.sql + create mode 100644 Open-ILS/src/sql/Pg/upgrade/1136.schema.lp1764542-mods33-update.sql + delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.lp1764542-mods33-update.sql + +commit 14b9dad9ce6f81b5d4088a315c64c67c809435f7 +Author: Chris Sharp +Date: Mon Jun 4 13:10:31 2018 -0400 + + LP#1764542 - Update older sites to MODS 3.3 + + MODS 3.3 support was introduced in March 2009, but this + change was never included in an upgrade script. Older + sites on 3.1+ will need to apply this update to avoid scary + segmentation faults, and it should be harmless for newer + sites and desirable for those on 3.0 or older. + + Signed-off-by: Chris Sharp + Signed-off-by: Ben Shum + +13 0 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.lp1764542-mods33-update.sql + create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.lp1764542-mods33-update.sql + +commit 996c5e85555e2eb00ea80b44e741a5c4c484b877 +Author: Mike Rylander +Date: Thu Sep 20 11:00:22 2018 -0400 + + LP#1792621: Fix think-o in Hold Shelf Delay YAOUS test + + Signed-off-by: Mike Rylander + Signed-off-by: Rogan Hamby + Signed-off-by: Ben Shum + +1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm + +commit 6056f30ed1b7db00f7559bcc6ab3c83c2312fcdf +Author: Mike Rylander +Date: Mon Sep 17 10:19:34 2018 -0400 + + LP#1792621: Ignore deleted items on hold shelf + + The hold shelf rewrite brought back an old behavioral bug where items deleted + while on the hold shelf continued to show on the hold shelf list. The most + recent behavior was to ignore those items, which this commit does. It also + addresses an adjacent issue where holds may show with "Hold Shelf Delay" + instead of "Ready For Pickup" in some cases. + + Signed-off-by: Mike Rylander + Signed-off-by: Rogan Hamby + Signed-off-by: Ben Shum + +2 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm +1 0 Open-ILS/web/js/ui/default/staff/circ/holds/app.js + +commit fc0264346bacae7ccafee34c0155c13e53d55229 +Author: Jason Boyer +Date: Thu Nov 15 11:43:30 2018 -0500 + + LP1755625: Multiple emails in patron editor + + Even though the HTML5 "email" input type allows multiple + addresses to be separated by commas there is nothing that + can be done to signal to Angular.js that this is ok; it + will only ever accept a single address. This patch forces + the type of the input tag to plain text so Angular will + rely on any supplied regex to verify the entry. + + The ui.patron.edit.au.email.regex (Regex for email field on patron + registration) library setting can be used to control whether + one or multiple email addresses will be permitted on the + patron registration form. + + To allow multiple addresses, that setting can be: + + ^(?:(?:\b[^@,\s]+@[^@,\s]+\.[^@.,\s]+\b)(?:,\s?(?!$)|$))*$ + + To allow only a single address, use: + + ^(?:\b[^@,\s]+@[^@,\s]+\.[^@.,\s]+\b)$ + + To test + ------- + [1] In the web staff client, try to register a new patron, entering + multiple email addresseses in the email field separated by + commas. + [2] Note that the email field displays as invalid and the + record cannot be saved. + [3] Apply the patch and repeat step #1, This time, the email + field should accept multiple addresses. + [4] Set the Regex for email field on patron registration library + setting to the multiple-email form listed above. Reload + the patron registration form and verify that it will + continue to accept multiple email addresses but will not + accept entry that doesn't look like an email address. + [5] Set the library setting to the single-address value. Reload + the patron registration form; this time it should accept + a valid email address but not multiple ones. + + Signed-off-by: Jason Boyer + Signed-off-by: Galen Charlton + Signed-off-by: Cesar Velez + +3 1 Open-ILS/src/templates/staff/circ/patron/t_edit.tt2 + +commit 72ff895e86ddc16dcd5df42578d477517169fa59 +Author: Jeanette Lundgren +Date: Wed Sep 12 15:52:21 2018 -0400 + + Docs: LP#1578719 Update DIG Attributions page + + Signed-off-by: Jeanette Lundgren + Signed-off-by: Ben Shum + +17 14 docs/shared/attributions.adoc + +commit 43c75ec072ece2d150ffb3a8a211bfc946785ad3 +Author: Bill Erickson +Date: Tue Nov 6 09:42:17 2018 -0500 + + LP#1797007 Grid cell tooltips apply to all cells (Ang) + + Avoid excessive browser page re-flows, caused by checking cell + widths for rendering tooltips, by rendering tooltips for all cells + regardless of the size of the content. + + Signed-off-by: Bill Erickson + Signed-off-by: Jason Boyer + Signed-off-by: Galen Charlton + +2 2 Open-ILS/src/eg2/src/app/share/grid/grid-body-cell.component.html +2 34 Open-ILS/src/eg2/src/app/share/grid/grid-body-cell.component.ts + +commit c31bf958cd6db4c96811be8db6bb32b75e63c300 +Author: Bill Erickson +Date: Mon Nov 5 10:52:17 2018 -0500 + + LP#1797007 Grid cell tooltips apply to all cells + + Avoid excessive browser page re-flows, caused by checking cell widths + for rendering tooltips, by rendering tooltips for all cells regardless + of the size of the content. + + This reverts commit 1e9c0ab388a0697a1f099970240f2da21bfb5e1f. + + Signed-off-by: Bill Erickson + Signed-off-by: Jason Boyer + Signed-off-by: Galen Charlton + +1 4 Open-ILS/src/templates/staff/share/t_autogrid.tt2 +1 30 Open-ILS/web/js/ui/default/staff/services/grid.js + +commit 34613bd46cae4b228beaafcbd44846971c9179a9 +Author: Cesar Velez +Date: Wed Nov 7 11:09:10 2018 -0500 + + LP#1684202 - fix holdings grid refresh... bre_id array always be integers + + For some strange reason the volcopy bchannel event data.records + would be an array of string integers or a array of ints depending + on whether you're adding or editing holdings. This addresses that + weirdness. + + Signed-off by: Cesar Velez + + Signed-off-by: Chris Sharp + +1 1 Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js + +commit 262a1d35df4293be14f7ea876ab04e491c338a14 +Author: Cesar Velez +Date: Wed Oct 17 18:06:01 2018 -0400 + + LP#1684202 - fix bug the prevented automatic refresh + + Turns out that Array.includes() does not do implicit type convertions + Typical javascript... + + Signed-off by: Cesar Velez + + Signed-off-by: Chris Sharp + +1 1 Open-ILS/web/js/ui/default/staff/cat/catalog/app.js + +commit c6e420d2078ebe8b168dea4695892aefafd11976 +Author: Mike Rylander +Date: Fri Sep 14 11:03:30 2018 -0400 + + LP#1684202: Protect against missing features; Make feature more general + + I've wrapped the BroadcastChannel code in a test derived from the auth version + of the same concept. Also broadcasting the full set of record IDs and the + pre-update call number IDs for other interfaces that might be interested. The + channel name is also made more generic and made to follow the precedent from + the auth channel name. + + Signed-off-by: Mike Rylander + Signed-off-by: Chris Sharp + +28 0 Open-ILS/web/js/ui/default/staff/cat/catalog/app.js +14 1 Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js + +commit ac51b481206bbd273ead680b52837273ac1e9389 +Author: Mike Rylander +Date: Mon Nov 12 12:26:40 2018 -0500 + + Stamping upgrade script + + Signed-off-by: Mike Rylander + +1 1 Open-ILS/src/sql/Pg/002.schema.config.sql +220 0 Open-ILS/src/sql/Pg/upgrade/1134.function.located_uri_browse_visibility.sql +0 220 Open-ILS/src/sql/Pg/upgrade/XXXX.function.located_uri_browse_visibility.sql + create mode 100644 Open-ILS/src/sql/Pg/upgrade/1134.function.located_uri_browse_visibility.sql + delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.function.located_uri_browse_visibility.sql + +commit 1a5a9c9041d5bbd0ee7fda646d26fb22173c2929 +Author: Dan Wells +Date: Fri Nov 9 12:28:08 2018 -0500 + + LP#1773479 Show Located URIs in browse + + Located URIs depend upon bib-level visibility, as there are no copies + to work with. The browse code, however, was joining in the copy + visibility table as if it would always have at least one row per bib, + but in the case of located URIs, it does not. + + Let's change it to a LEFT JOIN to allow the bib row to show up, at + which point the existing bib visibility check can do its job. + + Signed-off-by: Dan Wells + Signed-off-by: Mike Rylander + +2 2 Open-ILS/src/sql/Pg/300.schema.staged_search.sql +220 0 Open-ILS/src/sql/Pg/upgrade/XXXX.function.located_uri_browse_visibility.sql + create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.function.located_uri_browse_visibility.sql + +commit 6c9b4832b156970a861603a64fa0ae22abaeb4be +Author: Dan Wells +Date: Wed Oct 24 14:38:01 2018 -0400 + + LP#1724348 Honor default tab from catalog search + + The default tab selection was not being honored from catalog searches, + as the search had already set $scope.record_tab, and we were honoring + that value in all cases. + + Instead, let's honor that value in cases where the OPAC load doesn't + change our current record, which should only happen if we load the + record directly to a non-opac tab, then go to the OPAC view. + + To test: + 1) Set any tab other than "OPAC View" as your default view in record + details. + 2) Do a catalog search. + 3) Select a record, and notice your default view is not set. + 4) Apply patch, do the same steps, and notice the default view is now + selected. + + To test regression of bug #1708951: + 1) In Firefox, load a record directly (e.g. + /eg/opac/staff/cat/catalog/record/123). + 2) Note the default view loaded. + 3) Click "OPAC View". + 4) Note the view does not return to your default view, but stays on + the OPAC. + + Signed-off-by: Dan Wells + Signed-off-by: Jason Boyer + +5 2 Open-ILS/web/js/ui/default/staff/cat/catalog/app.js + +commit 4eac9154f3fe122e15c4fddef729efd3924672d6 +Author: Bill Erickson +Date: Wed Nov 7 09:27:30 2018 -0500 + + LP#1635737 Due date DST noncat thinko fix + + Signed-off-by: Bill Erickson + Signed-off-by: Dan Wells + +2 2 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/NonCat.pm + +commit d96d5b6bcb279f60b4add125eb33eefa3417fffb +Author: Bill Erickson +Date: Tue Nov 6 16:22:43 2018 -0500 + + LP#1635737 Due date DST-aware thinko fix + + Minor code refactor to fix thinko and syntax issues. + + Signed-off-by: Bill Erickson + Signed-off-by: Dan Wells + +3 3 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm + +commit b5357b0283c37ce12d161186f1092d138752e4f4 +Author: Mike Rylander +Date: Mon Jul 31 15:55:34 2017 -0400 + + LP#1635737 Apply DST-aware timezone to context dates + + Do our best to enforce the rule required by OpenSRF's interval_to_seconds + that when a context date is in use, and you care about DST awareness, you + must set the timezone to a DST-aware value, e.g., 'America/New_York'. In + most situations, 'local' will suffice for this, as the server is typically + configured with a DST-aware timezone in its environment. However, we will + look for an org unit setting called 'lib.timezone' and use that where we + can. See LP#1705524 for info on that setting. + + Signed-off-by: Mike Rylander + + Conflicts: + Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm + Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/NonCat.pm + + Signed-off-by: Dan Wells + Signed-off-by: Bill Erickson + +19 4 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm +10 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/NonCat.pm + +commit 8520c3257a71444a9068e1c9de344c2010b2af02 +Author: Dan Wells +Date: Fri Jul 21 14:28:16 2017 -0400 + + LP#1635737 Use new OpenSRF interval_to_seconds() context + + Use the optional context for interval_to_seconds() to account for the + variable length of duration components. For example, "1 day" may be + shorter or longer than 24 hours during a time change event, "1 month" + may be shorter or longer depending on which month it is currently, etc. + + Also, remove some timestamp munging, as that happens within + interval_to_seconds() already. + + Signed-off-by: Dan Wells + Signed-off-by: Mike Rylander + + Conflicts: + Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm + + Signed-off-by: Dan Wells + Signed-off-by: Bill Erickson + +1 5 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm +1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/NonCat.pm + +commit 36581e75999f7fda8705e203a4e299988662fa54 +Author: Mike Rylander +Date: Tue Nov 6 15:27:23 2018 -0500 + + LP#1635737: Unit tests for DST and date math + + Signed-off-by: Mike Rylander + Signed-off-by: Dan Wells + Signed-off-by: Bill Erickson + +18 1 Open-ILS/src/perlmods/t/14-OpenILS-Utils.t + +commit 479361d70a31562cb045d14742c85b5440491067 +Author: Dan Wells +Date: Tue Nov 6 15:13:47 2018 -0500 + + LP#1635737 Add optional context to interval_to_seconds + + Any given interval (e.g. "1 month") can be a different amount of + seconds depending on the context (i.e. "1 month" after February 1 is + March 1, but "1 month" after March 1 is April 1, yet March is longer + than February). This affects months all the time, but also can + affect days, hours, and even seconds once you consider DST and "leap" + times. + + By giving an optional context to interval_to_seconds, you can find + the true number of seconds in, for example, "1 month", when starting + from "February 1" (the context). + + Signed-off-by: Dan Wells + Signed-off-by: Mike Rylander + Signed-off-by: Bill Erickson + +48 17 Open-ILS/src/perlmods/lib/OpenILS/Utils/DateTime.pm + +commit f8473b18091b355cc9452ae7adeb5214fa997f7a +Author: Kathy Lussier +Date: Wed Jul 25 11:51:06 2018 -0400 + + LP#1783602: Remove copy counts from mr search results page + + The copy counts on the mr search results page can be wrong if a limiter was + applied to the metarecord search. Rather than supply inaccurate information to + the user, let's remove the counts from that page until a long-term solution can + be developed. + + Signed-off-by: Kathy Lussier + Signed-off-by: Remington Steed + Signed-off-by: Galen Charlton + +3 1 Open-ILS/src/templates/opac/parts/result/table.tt2 + +commit 9080603f72e10ef1d18f895fb31cfca77d0bbc89 +Author: Kathy Lussier +Date: Mon Nov 5 15:50:24 2018 -0500 + + LP#1755543: Change placement of help popovers + + Set the placement of help tip popovers so that they automatically position + to a visible place on the screen. + + Signed-off-by: Kathy Lussier + Signed-off-by: Remington Steed + Signed-off-by: Galen Charlton + +2 0 Open-ILS/src/templates/staff/share/t_help_popover.tt2 + +commit c70a7a11f878983d02192239c74129ad25e44feb +Author: Kathy Lussier +Date: Tue Mar 13 12:54:42 2018 -0400 + + LP#1755543: Add help tips to Print Item Labels Settings tab + + Instead of providing lengthy settings descriptions, which result in a lot of + scrolling on the Print Item Template page, let's use help tips that can + provide guidance to new users without adding clutter to the interface. + + This commit also turns the field labels into HTML labels for improved + accessibility and removes borders on the page. The borders were helpful + when we displayed the help text on the page, but are no longer needed. + + Signed-off-by: Kathy Lussier + Signed-off-by: Remington Steed + Signed-off-by: Galen Charlton + +2 6 Open-ILS/src/templates/staff/cat/printlabels/t_view.tt2 + +commit cfb872e8432d4967ec3b03c7d31c32c98ed89522 +Author: Garry Collum +Date: Thu Jun 7 14:54:45 2018 -0400 + + LP#1755896: Web Client mobile menu font color contrast. + + When viewing the main menu in the web client in a small device or in a + browser with a width that is resized to less than 800px the menu + collapses and the submenu choices are difficult to read because of lack + of contrast. This patch adds some contrast. + + To test: + 1. View the web client in a browser and lessen the width until the menu + collapses, or view it in a small device. + 2. Open some of the menu options to observe the submenus. + 3. Apply the patch. + 4. Refresh the browser and repeat steps 1-2 to view the more readable + submenus. + + Signed-off-by: Garry Collum + Signed-off-by: Terran McCanna + Signed-off-by: Galen Charlton + +6 0 Open-ILS/src/templates/staff/css/style.css.tt2 + +commit 14a6b09d55c975b3854cfd0720898e0308f39813 +Author: Galen Charlton +Date: Mon Nov 5 16:40:34 2018 -0500 + + LP#1789747: tweak disabling the offline circulation link + + This patch ensures that the menu link can be fully disabled by + giving the "disabled" CSS class to the anchor as well as the + li that contains it. It also adds a CSS rule to the disabled + class to force the cursor to not-allowed; due to a quirk, an + anchor with "pointer-events: none" will not respect "cursor: not-allowed", + but the containing element can have that cursor rule. + + Signed-off-by: Galen Charlton + +3 0 Open-ILS/src/templates/staff/css/style.css.tt2 +1 1 Open-ILS/src/templates/staff/navbar.tt2 + +commit aa99255b39d8122054bc0646951c3212e44be506 +Author: Bill Erickson +Date: Tue Sep 4 15:09:31 2018 -0400 + + LP#1789747 More SharedWorker sanity checks for egLovefield + + Signed-off-by: Bill Erickson + Signed-off-by: Rogan Hamby + Signed-off-by: Galen Charlton + +5 3 Open-ILS/web/js/ui/default/staff/services/lovefield.js + +commit 8f23343b76ebf8f556a5426b478c331698a3a2a6 +Author: Bill Erickson +Date: Thu Aug 30 13:19:03 2018 -0400 + + LP#1789747 SharedWorker sanity checks + + Avoid page load failures when SharedWorkers (for offline mode) are + not supported. Additionally, disable the Offline Circulation menu + option when SharedWorkers are not supported. + + Signed-off-by: Bill Erickson + Signed-off-by: Galen Charlton + +1 1 Open-ILS/src/templates/staff/navbar.tt2 +4 3 Open-ILS/web/js/ui/default/staff/app.js +11 4 Open-ILS/web/js/ui/default/staff/services/env.js +3 3 Open-ILS/web/js/ui/default/staff/services/lovefield.js +6 2 Open-ILS/web/js/ui/default/staff/services/navbar.js +15 8 Open-ILS/web/js/ui/default/staff/services/org.js +2 2 Open-ILS/web/js/ui/default/staff/services/ui.js + +commit b3fc4d63034434e31726ded935b80009d8c3e432 +Author: Bill Erickson +Date: Tue Oct 16 14:15:53 2018 -0400 + + LP#1798170 Load grid data after settings are applied + + Ensure the initial grid data fetching code does not fire until after the + grid configuration has been retrieved and applied. This fixes an issue + where custom columns would contain no values on initial grid load. + + Signed-off-by: Bill Erickson + Signed-off-by: Jason Boyer + Signed-off-by: Galen Charlton + +17 14 Open-ILS/web/js/ui/default/staff/services/grid.js + +commit 48266b6728fea1478dc710b6e8b9eb7922cf31cc +Author: Galen Charlton +Date: Mon Nov 5 12:49:35 2018 -0500 + + LP#1801759: add mod_remoteip configuration to example Apache config + + Text taken from an OpenSRF patch added by Bill Erickson per bug 1684970. + + This patch adds an Apache configuration stanza that uses mod_remoteip + to pass the user agent's IP address to the HTTP translator. It is meant + for when Apache is being run behind a proxy such as NGINX. + + To test + ------- + [1] Set up Evergreen with Apache and the WebSockets server running + behind a proxy such as NGINX. + [2] Enable mod_remoteip (e.g., sudo a2enmod remoteip). + [3] Apply the Apache configuration change in this patch, uncommenting + out the directives and (if necessary) updating the internal IP + address of the proxy. + [4] Reload Apache. + [5] Perform an action that uses the HTTP translator, e.g., adding a + vendor record using the Dojo interface. + [6] Verify that the client IP logged is that of the user agent, not + the proxy. + + Signed-off-by: Galen Charlton + Signed-off-by: Bill Erickson + +10 0 Open-ILS/examples/apache_24/eg_vhost.conf.in + +commit 5fdaf3125f54b8855fbcace13b4e855bc5e10078 +Author: Galen Charlton +Date: Mon Nov 5 12:54:24 2018 -0500 + + LP#1801759: enable mod_remoteip by default + + Use of mod_remoteip is technically optional, since it's not + required that Evergreen run with a proxy such as NGINX. However, since + use of proxies is common, enablig mod_remoteip just in case could + be useful with minimal cost. + + Signed-off-by: Galen Charlton + Signed-off-by: Bill Erickson + +2 1 Open-ILS/src/extras/install/Makefile.debian-jessie +2 1 Open-ILS/src/extras/install/Makefile.debian-stretch +2 1 Open-ILS/src/extras/install/Makefile.ubuntu-trusty +2 1 Open-ILS/src/extras/install/Makefile.ubuntu-xenial + +commit 0fd636e97babdce8b4526fa1d1d412a84a92e627 +Author: Jane Sandberg +Date: Sun Nov 4 15:25:44 2018 -0800 + + Docs: updating holding, item, call number terminology + + Signed-off-by: Jane Sandberg + +9 5 docs/admin/Org_Unit_Proximity_Adjustments.adoc +5 5 docs/admin/circulation_limit_groups.adoc +1 1 docs/admin/cn_prefixes_and_suffixes.adoc +52 52 docs/admin/copy_locations.adoc +1 1 docs/admin/popularity_badges_web_client.adoc +23 23 docs/admin_initial_setup/borrowing_items.adoc +12 12 docs/admin_initial_setup/migrating_your_data.adoc +60 60 docs/cataloging/copy-buckets_web_client.adoc +10 10 docs/cataloging/holdings_templates.adoc +14 14 docs/cataloging/monograph_parts.adoc +6 9 docs/cataloging/tpac_copy_edit_links.adoc +14 11 docs/cataloging/volcopy_editor.adoc +9 10 docs/development/data_unapi.adoc + +commit 17eabd929d0967de016b03e48f5826cfdd8ddbce +Author: Remington Steed +Date: Fri Nov 2 15:00:55 2018 -0400 + + Docs: Update old command osrf_ctl.sh to osrf_control + + Thanks to Rosie Le Faive for catching this problem, and providing the + solution! + + Signed-off-by: Remington Steed + +2 1 docs/admin/marc_templates.adoc + +commit 71cf9a7def46ce3fa72e749d31fc62f5758d8df0 +Author: Jason Boyer +Date: Fri Oct 26 09:16:14 2018 -0400 + + LP1796988: Fix Saving Last Copy Template + + A line that belongs within a forEach loop escaped + its bounds and caused a reference error that prevented + the applyTemplate function from saving the last used + template. This branch ushers this line back to its + pen where it can trouble us no more. + + Signed-off-by: Jason Boyer + Signed-off-by: Janet Schrader + Signed-off-by: Jason Stephenson + +1 1 Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js + +commit 899733acd11c22e96dcb821bd9d0f3ee8a02b691 +Author: abneiman +Date: Thu Nov 1 13:59:02 2018 -0700 + + Docs: Emergency Closing Handler + + Signed-off-by: Jane Sandberg + +88 0 docs/admin/emergency_closing_handler.adoc +- - docs/media/ECHClosedDatesEditorAddClosing.png +- - docs/media/ECHClosingSnowDay.png +- - docs/media/ECHEditClosing.png +- - docs/media/ECHEditClosingModal.png +- - docs/media/ECHLibraryClosingConstruction.png +- - docs/media/ECHLibraryClosingDetailed.png +- - docs/media/ECHLibraryClosingDone.png +- - docs/media/ECHLibraryClosingMultipleDays.png +2 0 docs/root.adoc +2 0 docs/root_staff_client_admin.adoc + create mode 100644 docs/admin/emergency_closing_handler.adoc + create mode 100644 docs/media/ECHClosedDatesEditorAddClosing.png + create mode 100644 docs/media/ECHClosingSnowDay.png + create mode 100644 docs/media/ECHEditClosing.png + create mode 100644 docs/media/ECHEditClosingModal.png + create mode 100644 docs/media/ECHLibraryClosingConstruction.png + create mode 100644 docs/media/ECHLibraryClosingDetailed.png + create mode 100644 docs/media/ECHLibraryClosingDone.png + create mode 100644 docs/media/ECHLibraryClosingMultipleDays.png + +commit f6af63d62f7a183e36fc93083bfb64a5b4c8eac1 +Author: Remington Steed +Date: Wed Oct 31 16:53:17 2018 -0400 + + Docs: Fix minor release notes formatting bug + + Signed-off-by: Remington Steed + +1 1 docs/RELEASE_NOTES_3_2.adoc + +commit ae2b807bc0f9e53aeb1a22fdf4bb5cf6ef57315e +Author: Jason Stephenson +Date: Thu Oct 25 09:35:37 2018 -0400 + + Forward Port Release Notes for 3.0.13. + + Signed-off-by: Jason Stephenson + +21 0 docs/RELEASE_NOTES_3_0.adoc + +commit 604fe387d0fd176ebd94b3bc67185730b4486746 +Author: Dan Wells +Date: Wed Oct 24 18:14:28 2018 -0400 + + Forward-port 3.2.1 upgrade script + + Signed-off-by: Dan Wells + +5 0 Open-ILS/src/sql/Pg/version-upgrade/3.2.0-3.2.1-upgrade-db.sql + create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/3.2.0-3.2.1-upgrade-db.sql diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application.pm index d750216454..8fadc56245 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application.pm @@ -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-2-2"; } __PACKAGE__->register_method( diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index b50f39d2bd..f96b9409ee 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -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 ('1138', :eg_version); -- rhamby/berick/bshum +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.2.2', :eg_version); CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/version-upgrade/3.2.1-3.2.2-upgrade-db.sql b/Open-ILS/src/sql/Pg/version-upgrade/3.2.1-3.2.2-upgrade-db.sql new file mode 100644 index 0000000000..15015d701d --- /dev/null +++ b/Open-ILS/src/sql/Pg/version-upgrade/3.2.1-3.2.2-upgrade-db.sql @@ -0,0 +1,600 @@ +--Upgrade Script for 3.2.1 to 3.2.2 +\set eg_version '''3.2.2''' +BEGIN; +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.2.2', :eg_version); + +SELECT evergreen.upgrade_deps_block_check('1134', :eg_version); + +CREATE OR REPLACE FUNCTION metabib.staged_browse(query text, fields integer[], context_org integer, context_locations integer[], staff boolean, browse_superpage_size integer, count_up_from_zero boolean, result_limit integer, next_pivot_pos integer) + RETURNS SETOF metabib.flat_browse_entry_appearance +AS $f$ +DECLARE + curs REFCURSOR; + rec RECORD; + qpfts_query TEXT; + aqpfts_query TEXT; + afields INT[]; + bfields INT[]; + result_row metabib.flat_browse_entry_appearance%ROWTYPE; + results_skipped INT := 0; + row_counter INT := 0; + row_number INT; + slice_start INT; + slice_end INT; + full_end INT; + all_records BIGINT[]; + all_brecords BIGINT[]; + all_arecords BIGINT[]; + superpage_of_records BIGINT[]; + superpage_size INT; + c_tests TEXT := ''; + b_tests TEXT := ''; + c_orgs INT[]; + unauthorized_entry RECORD; +BEGIN + IF count_up_from_zero THEN + row_number := 0; + ELSE + row_number := -1; + END IF; + + IF NOT staff THEN + SELECT x.c_attrs, x.b_attrs INTO c_tests, b_tests FROM asset.patron_default_visibility_mask() x; + END IF; + + -- b_tests supplies its own query_int operator, c_tests does not + IF c_tests <> '' THEN c_tests := c_tests || '&'; END IF; + + SELECT ARRAY_AGG(id) INTO c_orgs FROM actor.org_unit_descendants(context_org); + + c_tests := c_tests || search.calculate_visibility_attribute_test('circ_lib',c_orgs) + || '&' || search.calculate_visibility_attribute_test('owning_lib',c_orgs); + + PERFORM 1 FROM config.internal_flag WHERE enabled AND name = 'opac.located_uri.act_as_copy'; + IF FOUND THEN + b_tests := b_tests || search.calculate_visibility_attribute_test( + 'luri_org', + (SELECT ARRAY_AGG(id) FROM actor.org_unit_full_path(context_org) x) + ); + ELSE + b_tests := b_tests || search.calculate_visibility_attribute_test( + 'luri_org', + (SELECT ARRAY_AGG(id) FROM actor.org_unit_ancestors(context_org) x) + ); + END IF; + + IF context_locations THEN + IF c_tests <> '' THEN c_tests := c_tests || '&'; END IF; + c_tests := c_tests || search.calculate_visibility_attribute_test('location',context_locations); + END IF; + + OPEN curs NO SCROLL FOR EXECUTE query; + + LOOP + FETCH curs INTO rec; + IF NOT FOUND THEN + IF result_row.pivot_point IS NOT NULL THEN + RETURN NEXT result_row; + END IF; + RETURN; + END IF; + + --Is unauthorized? + SELECT INTO unauthorized_entry * + FROM metabib.browse_entry_simple_heading_map mbeshm + INNER JOIN authority.simple_heading ash ON ( mbeshm.simple_heading = ash.id ) + INNER JOIN authority.control_set_authority_field acsaf ON ( acsaf.id = ash.atag ) + JOIN authority.heading_field ahf ON (ahf.id = acsaf.heading_field) + WHERE mbeshm.entry = rec.id + AND ahf.heading_purpose = 'variant'; + + -- Gather aggregate data based on the MBE row we're looking at now, authority axis + IF (unauthorized_entry.record IS NOT NULL) THEN + --unauthorized term belongs to an auth linked to a bib? + SELECT INTO all_arecords, result_row.sees, afields + ARRAY_AGG(DISTINCT abl.bib), + STRING_AGG(DISTINCT abl.authority::TEXT, $$,$$), + ARRAY_AGG(DISTINCT map.metabib_field) + FROM authority.bib_linking abl + INNER JOIN authority.control_set_auth_field_metabib_field_map_refs map ON ( + map.authority_field = unauthorized_entry.atag + AND map.metabib_field = ANY(fields) + ) + WHERE abl.authority = unauthorized_entry.record; + ELSE + --do usual procedure + SELECT INTO all_arecords, result_row.sees, afields + ARRAY_AGG(DISTINCT abl.bib), -- bibs to check for visibility + STRING_AGG(DISTINCT aal.source::TEXT, $$,$$), -- authority record ids + ARRAY_AGG(DISTINCT map.metabib_field) -- authority-tag-linked CMF rows + + FROM metabib.browse_entry_simple_heading_map mbeshm + JOIN authority.simple_heading ash ON ( mbeshm.simple_heading = ash.id ) + JOIN authority.authority_linking aal ON ( ash.record = aal.source ) + JOIN authority.bib_linking abl ON ( aal.target = abl.authority ) + JOIN authority.control_set_auth_field_metabib_field_map_refs map ON ( + ash.atag = map.authority_field + AND map.metabib_field = ANY(fields) + ) + JOIN authority.control_set_authority_field acsaf ON ( + map.authority_field = acsaf.id + ) + JOIN authority.heading_field ahf ON (ahf.id = acsaf.heading_field) + WHERE mbeshm.entry = rec.id + AND ahf.heading_purpose = 'variant'; + + END IF; + + -- Gather aggregate data based on the MBE row we're looking at now, bib axis + SELECT INTO all_brecords, result_row.authorities, bfields + ARRAY_AGG(DISTINCT source), + STRING_AGG(DISTINCT authority::TEXT, $$,$$), + ARRAY_AGG(DISTINCT def) + FROM metabib.browse_entry_def_map + WHERE entry = rec.id + AND def = ANY(fields); + + SELECT INTO result_row.fields STRING_AGG(DISTINCT x::TEXT, $$,$$) FROM UNNEST(afields || bfields) x; + + result_row.sources := 0; + result_row.asources := 0; + + -- Bib-linked vis checking + IF ARRAY_UPPER(all_brecords,1) IS NOT NULL THEN + + SELECT INTO result_row.sources COUNT(DISTINCT b.id) + FROM biblio.record_entry b + LEFT JOIN asset.copy_vis_attr_cache acvac ON (acvac.record = b.id) + WHERE b.id = ANY(all_brecords[1:browse_superpage_size]) + AND ( + acvac.vis_attr_vector @@ c_tests::query_int + OR b.vis_attr_vector @@ b_tests::query_int + ); + + result_row.accurate := TRUE; + + END IF; + + -- Authority-linked vis checking + IF ARRAY_UPPER(all_arecords,1) IS NOT NULL THEN + + SELECT INTO result_row.asources COUNT(DISTINCT b.id) + FROM biblio.record_entry b + LEFT JOIN asset.copy_vis_attr_cache acvac ON (acvac.record = b.id) + WHERE b.id = ANY(all_arecords[1:browse_superpage_size]) + AND ( + acvac.vis_attr_vector @@ c_tests::query_int + OR b.vis_attr_vector @@ b_tests::query_int + ); + + result_row.aaccurate := TRUE; + + END IF; + + IF result_row.sources > 0 OR result_row.asources > 0 THEN + + -- The function that calls this function needs row_number in order + -- to correctly order results from two different runs of this + -- functions. + result_row.row_number := row_number; + + -- Now, if row_counter is still less than limit, return a row. If + -- not, but it is less than next_pivot_pos, continue on without + -- returning actual result rows until we find + -- that next pivot, and return it. + + IF row_counter < result_limit THEN + result_row.browse_entry := rec.id; + result_row.value := rec.value; + + RETURN NEXT result_row; + ELSE + result_row.browse_entry := NULL; + result_row.authorities := NULL; + result_row.fields := NULL; + result_row.value := NULL; + result_row.sources := NULL; + result_row.sees := NULL; + result_row.accurate := NULL; + result_row.aaccurate := NULL; + result_row.pivot_point := rec.id; + + IF row_counter >= next_pivot_pos THEN + RETURN NEXT result_row; + RETURN; + END IF; + END IF; + + IF count_up_from_zero THEN + row_number := row_number + 1; + ELSE + row_number := row_number - 1; + END IF; + + -- row_counter is different from row_number. + -- It simply counts up from zero so that we know when + -- we've reached our limit. + row_counter := row_counter + 1; + END IF; + END LOOP; +END; +$f$ LANGUAGE plpgsql ROWS 10; + + +SELECT evergreen.upgrade_deps_block_check('1136', :eg_version); + +-- update mods33 data entered by 1100 with a format of 'mods32' +-- harmless if you have not run 1100 yet +UPDATE config.metabib_field SET format = 'mods33' WHERE format = 'mods32' and id in (38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50); + +-- change the default format to 'mods33' +ALTER TABLE config.metabib_field ALTER COLUMN format SET DEFAULT 'mods33'::text; + + + +SELECT evergreen.upgrade_deps_block_check('1137', :eg_version); + +-- This is a placeholder for 1137 which will be a backported version of the +-- actor.usr_merge function for rel_3_1. This script does nothing for +-- rel_3_2 and later. + + +SELECT evergreen.upgrade_deps_block_check('1138', :eg_version); + +CREATE OR REPLACE FUNCTION actor.usr_merge( src_usr INT, dest_usr INT, del_addrs BOOLEAN, del_cards BOOLEAN, deactivate_cards BOOLEAN ) RETURNS VOID AS $$ +DECLARE + suffix TEXT; + bucket_row RECORD; + picklist_row RECORD; + queue_row RECORD; + folder_row RECORD; +BEGIN + + -- Bail if src_usr equals dest_usr because the result of merging a + -- user with itself is not what you want. + IF src_usr = dest_usr THEN + RETURN; + END IF; + + -- do some initial cleanup + UPDATE actor.usr SET card = NULL WHERE id = src_usr; + UPDATE actor.usr SET mailing_address = NULL WHERE id = src_usr; + UPDATE actor.usr SET billing_address = NULL WHERE id = src_usr; + + -- actor.* + IF del_cards THEN + DELETE FROM actor.card where usr = src_usr; + ELSE + IF deactivate_cards THEN + UPDATE actor.card SET active = 'f' WHERE usr = src_usr; + END IF; + UPDATE actor.card SET usr = dest_usr WHERE usr = src_usr; + END IF; + + + IF del_addrs THEN + DELETE FROM actor.usr_address WHERE usr = src_usr; + ELSE + UPDATE actor.usr_address SET usr = dest_usr WHERE usr = src_usr; + END IF; + + UPDATE actor.usr_note SET usr = dest_usr WHERE usr = src_usr; + -- dupes are technically OK in actor.usr_standing_penalty, should manually delete them... + UPDATE actor.usr_standing_penalty SET usr = dest_usr WHERE usr = src_usr; + PERFORM actor.usr_merge_rows('actor.usr_org_unit_opt_in', 'usr', src_usr, dest_usr); + PERFORM actor.usr_merge_rows('actor.usr_setting', 'usr', src_usr, dest_usr); + + -- permission.* + PERFORM actor.usr_merge_rows('permission.usr_perm_map', 'usr', src_usr, dest_usr); + PERFORM actor.usr_merge_rows('permission.usr_object_perm_map', 'usr', src_usr, dest_usr); + PERFORM actor.usr_merge_rows('permission.usr_grp_map', 'usr', src_usr, dest_usr); + PERFORM actor.usr_merge_rows('permission.usr_work_ou_map', 'usr', src_usr, dest_usr); + + + -- container.* + + -- For each *_bucket table: transfer every bucket belonging to src_usr + -- into the custody of dest_usr. + -- + -- In order to avoid colliding with an existing bucket owned by + -- the destination user, append the source user's id (in parenthesese) + -- to the name. If you still get a collision, add successive + -- spaces to the name and keep trying until you succeed. + -- + FOR bucket_row in + SELECT id, name + FROM container.biblio_record_entry_bucket + WHERE owner = src_usr + LOOP + suffix := ' (' || src_usr || ')'; + LOOP + BEGIN + UPDATE container.biblio_record_entry_bucket + SET owner = dest_usr, name = name || suffix + WHERE id = bucket_row.id; + EXCEPTION WHEN unique_violation THEN + suffix := suffix || ' '; + CONTINUE; + END; + EXIT; + END LOOP; + END LOOP; + + FOR bucket_row in + SELECT id, name + FROM container.call_number_bucket + WHERE owner = src_usr + LOOP + suffix := ' (' || src_usr || ')'; + LOOP + BEGIN + UPDATE container.call_number_bucket + SET owner = dest_usr, name = name || suffix + WHERE id = bucket_row.id; + EXCEPTION WHEN unique_violation THEN + suffix := suffix || ' '; + CONTINUE; + END; + EXIT; + END LOOP; + END LOOP; + + FOR bucket_row in + SELECT id, name + FROM container.copy_bucket + WHERE owner = src_usr + LOOP + suffix := ' (' || src_usr || ')'; + LOOP + BEGIN + UPDATE container.copy_bucket + SET owner = dest_usr, name = name || suffix + WHERE id = bucket_row.id; + EXCEPTION WHEN unique_violation THEN + suffix := suffix || ' '; + CONTINUE; + END; + EXIT; + END LOOP; + END LOOP; + + FOR bucket_row in + SELECT id, name + FROM container.user_bucket + WHERE owner = src_usr + LOOP + suffix := ' (' || src_usr || ')'; + LOOP + BEGIN + UPDATE container.user_bucket + SET owner = dest_usr, name = name || suffix + WHERE id = bucket_row.id; + EXCEPTION WHEN unique_violation THEN + suffix := suffix || ' '; + CONTINUE; + END; + EXIT; + END LOOP; + END LOOP; + + UPDATE container.user_bucket_item SET target_user = dest_usr WHERE target_user = src_usr; + + -- vandelay.* + -- transfer queues the same way we transfer buckets (see above) + FOR queue_row in + SELECT id, name + FROM vandelay.queue + WHERE owner = src_usr + LOOP + suffix := ' (' || src_usr || ')'; + LOOP + BEGIN + UPDATE vandelay.queue + SET owner = dest_usr, name = name || suffix + WHERE id = queue_row.id; + EXCEPTION WHEN unique_violation THEN + suffix := suffix || ' '; + CONTINUE; + END; + EXIT; + END LOOP; + END LOOP; + + UPDATE vandelay.session_tracker SET usr = dest_usr WHERE usr = src_usr; + + -- money.* + PERFORM actor.usr_merge_rows('money.collections_tracker', 'usr', src_usr, dest_usr); + PERFORM actor.usr_merge_rows('money.collections_tracker', 'collector', src_usr, dest_usr); + UPDATE money.billable_xact SET usr = dest_usr WHERE usr = src_usr; + UPDATE money.billing SET voider = dest_usr WHERE voider = src_usr; + UPDATE money.bnm_payment SET accepting_usr = dest_usr WHERE accepting_usr = src_usr; + + -- action.* + UPDATE action.circulation SET usr = dest_usr WHERE usr = src_usr; + UPDATE action.circulation SET circ_staff = dest_usr WHERE circ_staff = src_usr; + UPDATE action.circulation SET checkin_staff = dest_usr WHERE checkin_staff = src_usr; + UPDATE action.usr_circ_history SET usr = dest_usr WHERE usr = src_usr; + + UPDATE action.hold_request SET usr = dest_usr WHERE usr = src_usr; + UPDATE action.hold_request SET fulfillment_staff = dest_usr WHERE fulfillment_staff = src_usr; + UPDATE action.hold_request SET requestor = dest_usr WHERE requestor = src_usr; + UPDATE action.hold_notification SET notify_staff = dest_usr WHERE notify_staff = src_usr; + + UPDATE action.in_house_use SET staff = dest_usr WHERE staff = src_usr; + UPDATE action.non_cataloged_circulation SET staff = dest_usr WHERE staff = src_usr; + UPDATE action.non_cataloged_circulation SET patron = dest_usr WHERE patron = src_usr; + UPDATE action.non_cat_in_house_use SET staff = dest_usr WHERE staff = src_usr; + UPDATE action.survey_response SET usr = dest_usr WHERE usr = src_usr; + + -- acq.* + UPDATE acq.fund_allocation SET allocator = dest_usr WHERE allocator = src_usr; + UPDATE acq.fund_transfer SET transfer_user = dest_usr WHERE transfer_user = src_usr; + UPDATE acq.invoice SET closed_by = dest_usr WHERE closed_by = src_usr; + + -- transfer picklists the same way we transfer buckets (see above) + FOR picklist_row in + SELECT id, name + FROM acq.picklist + WHERE owner = src_usr + LOOP + suffix := ' (' || src_usr || ')'; + LOOP + BEGIN + UPDATE acq.picklist + SET owner = dest_usr, name = name || suffix + WHERE id = picklist_row.id; + EXCEPTION WHEN unique_violation THEN + suffix := suffix || ' '; + CONTINUE; + END; + EXIT; + END LOOP; + END LOOP; + + UPDATE acq.purchase_order SET owner = dest_usr WHERE owner = src_usr; + UPDATE acq.po_note SET creator = dest_usr WHERE creator = src_usr; + UPDATE acq.po_note SET editor = dest_usr WHERE editor = src_usr; + UPDATE acq.provider_note SET creator = dest_usr WHERE creator = src_usr; + UPDATE acq.provider_note SET editor = dest_usr WHERE editor = src_usr; + UPDATE acq.lineitem_note SET creator = dest_usr WHERE creator = src_usr; + UPDATE acq.lineitem_note SET editor = dest_usr WHERE editor = src_usr; + UPDATE acq.lineitem_usr_attr_definition SET usr = dest_usr WHERE usr = src_usr; + + -- asset.* + UPDATE asset.copy SET creator = dest_usr WHERE creator = src_usr; + UPDATE asset.copy SET editor = dest_usr WHERE editor = src_usr; + UPDATE asset.copy_note SET creator = dest_usr WHERE creator = src_usr; + UPDATE asset.call_number SET creator = dest_usr WHERE creator = src_usr; + UPDATE asset.call_number SET editor = dest_usr WHERE editor = src_usr; + UPDATE asset.call_number_note SET creator = dest_usr WHERE creator = src_usr; + + -- serial.* + UPDATE serial.record_entry SET creator = dest_usr WHERE creator = src_usr; + UPDATE serial.record_entry SET editor = dest_usr WHERE editor = src_usr; + + -- reporter.* + -- It's not uncommon to define the reporter schema in a replica + -- DB only, so don't assume these tables exist in the write DB. + BEGIN + UPDATE reporter.template SET owner = dest_usr WHERE owner = src_usr; + EXCEPTION WHEN undefined_table THEN + -- do nothing + END; + BEGIN + UPDATE reporter.report SET owner = dest_usr WHERE owner = src_usr; + EXCEPTION WHEN undefined_table THEN + -- do nothing + END; + BEGIN + UPDATE reporter.schedule SET runner = dest_usr WHERE runner = src_usr; + EXCEPTION WHEN undefined_table THEN + -- do nothing + END; + BEGIN + -- transfer folders the same way we transfer buckets (see above) + FOR folder_row in + SELECT id, name + FROM reporter.template_folder + WHERE owner = src_usr + LOOP + suffix := ' (' || src_usr || ')'; + LOOP + BEGIN + UPDATE reporter.template_folder + SET owner = dest_usr, name = name || suffix + WHERE id = folder_row.id; + EXCEPTION WHEN unique_violation THEN + suffix := suffix || ' '; + CONTINUE; + END; + EXIT; + END LOOP; + END LOOP; + EXCEPTION WHEN undefined_table THEN + -- do nothing + END; + BEGIN + -- transfer folders the same way we transfer buckets (see above) + FOR folder_row in + SELECT id, name + FROM reporter.report_folder + WHERE owner = src_usr + LOOP + suffix := ' (' || src_usr || ')'; + LOOP + BEGIN + UPDATE reporter.report_folder + SET owner = dest_usr, name = name || suffix + WHERE id = folder_row.id; + EXCEPTION WHEN unique_violation THEN + suffix := suffix || ' '; + CONTINUE; + END; + EXIT; + END LOOP; + END LOOP; + EXCEPTION WHEN undefined_table THEN + -- do nothing + END; + BEGIN + -- transfer folders the same way we transfer buckets (see above) + FOR folder_row in + SELECT id, name + FROM reporter.output_folder + WHERE owner = src_usr + LOOP + suffix := ' (' || src_usr || ')'; + LOOP + BEGIN + UPDATE reporter.output_folder + SET owner = dest_usr, name = name || suffix + WHERE id = folder_row.id; + EXCEPTION WHEN unique_violation THEN + suffix := suffix || ' '; + CONTINUE; + END; + EXIT; + END LOOP; + END LOOP; + EXCEPTION WHEN undefined_table THEN + -- do nothing + END; + + -- propagate preferred name values from the source user to the + -- destination user, but only when values are not being replaced. + WITH susr AS (SELECT * FROM actor.usr WHERE id = src_usr) + UPDATE actor.usr SET + pref_prefix = + COALESCE(pref_prefix, (SELECT pref_prefix FROM susr)), + pref_first_given_name = + COALESCE(pref_first_given_name, (SELECT pref_first_given_name FROM susr)), + pref_second_given_name = + COALESCE(pref_second_given_name, (SELECT pref_second_given_name FROM susr)), + pref_family_name = + COALESCE(pref_family_name, (SELECT pref_family_name FROM susr)), + pref_suffix = + COALESCE(pref_suffix, (SELECT pref_suffix FROM susr)) + WHERE id = dest_usr; + + -- Copy and deduplicate name keywords + -- String -> array -> rows -> DISTINCT -> array -> string + WITH susr AS (SELECT * FROM actor.usr WHERE id = src_usr), + dusr AS (SELECT * FROM actor.usr WHERE id = dest_usr) + UPDATE actor.usr SET name_keywords = ( + WITH keywords AS ( + SELECT DISTINCT UNNEST( + REGEXP_SPLIT_TO_ARRAY( + COALESCE((SELECT name_keywords FROM susr), '') || ' ' || + COALESCE((SELECT name_keywords FROM dusr), ''), E'\\s+' + ) + ) AS parts + ) SELECT ARRAY_TO_STRING(ARRAY_AGG(kw.parts), ' ') FROM keywords kw + ) WHERE id = dest_usr; + + -- Finally, delete the source user + PERFORM actor.usr_delete(src_usr,dest_usr); + +END; +$$ LANGUAGE plpgsql; + +COMMIT; diff --git a/Open-ILS/xul/staff_client/chrome/content/main/about.html b/Open-ILS/xul/staff_client/chrome/content/main/about.html index b2b87b683f..2a23517082 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/about.html +++ b/Open-ILS/xul/staff_client/chrome/content/main/about.html @@ -1,7 +1,7 @@

Evergreen

Target Server ID:

-

$HeadURL$

+

http://git.evergreen-ils.org/?p=Evergreen.git;a=shortlog;h=refs/heads/tags/rel_3_2_2

What is Evergreen?

diff --git a/Open-ILS/xul/staff_client/defaults/preferences/prefs.js b/Open-ILS/xul/staff_client/defaults/preferences/prefs.js index 0613a13ddf..cea4d0cdbd 100644 --- a/Open-ILS/xul/staff_client/defaults/preferences/prefs.js +++ b/Open-ILS/xul/staff_client/defaults/preferences/prefs.js @@ -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_2_2"); pref("open-ils.repository.author","$Author$"); pref("open-ils.repository.revision","$Revision$"); pref("open-ils.repository.date","$Date$"); diff --git a/Open-ILS/xul/staff_client/windowssetup.nsi b/Open-ILS/xul/staff_client/windowssetup.nsi index a9543579a8..ed4c4febe1 100644 --- a/Open-ILS/xul/staff_client/windowssetup.nsi +++ b/Open-ILS/xul/staff_client/windowssetup.nsi @@ -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.2" !define PRODUCT_INSTALL_TAG "${PRODUCT_TAG}" !define UI_IMAGESET "beta" ;!define UI_IMAGESET "release" diff --git a/README b/README deleted file mode 120000 index 1ee2103e6f..0000000000 --- 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 index 0000000000..8b81d350f1 --- /dev/null +++ b/README @@ -0,0 +1,647 @@ +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.4. + * **Linux**: Evergreen has been tested on Debian Stretch (9), + Debian Jessie (8), Ubuntu Xenial Xerus (16.04), and Ubuntu + Trusty Tahr (14.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.0.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.0.0 or later). + You can download OpenSRF releases from http://evergreen-ils.org/opensrf-downloads/ +2. On some distributions, it is necessary to install PostgreSQL 9.4+ from external + repositories. ++ + * Ubuntu (Trusty) comes with an older version of PostgreSQL, so + steps are taken to automatically utilize the PostgreSQL + community's apt sources. + (For complete details, see: https://wiki.postgresql.org/wiki/Apt) + * Debian (Jessie/Stretch) and Ubuntu (Xenial) comes with PostgreSQL 9.4+, + so no additional steps are required. ++ +3. Issue the following commands as the *root* Linux account to install + prerequisites using the `Makefile.install` prerequisite installer, + substituting `debian-stretch`, `debian-jessie`,`ubuntu-xenial`, + or `ubuntu-trusty` for below: ++ +[source, bash] +------------------------------------------------------------------------------ +make -f Open-ILS/src/extras/Makefile.install +------------------------------------------------------------------------------ ++ +4. OPTIONAL: Developer additions ++ +To perform certain developer tasks from a Git source code checkout, +additional packages may be required. As the *root* Linux account: ++ + * To install packages needed for retrieving and managing web dependencies, + use the -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 -developer +------------------------------------------------------------------------------ ++ + * To install packages required for building Evergreen translations, use + the -translator Makefile.install target. ++ +[source, bash] +------------------------------------------------------------------------------ +make -f Open-ILS/src/extras/Makefile.install -translator +------------------------------------------------------------------------------ ++ + * To install packages required for building Evergreen release bundles, use + the -packager Makefile.install target. ++ +[source, bash] +------------------------------------------------------------------------------ +make -f Open-ILS/src/extras/Makefile.install -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 + +Install dependencies for web staff client +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +[NOTE] +You may skip this section if you have installed the +<>. You will still need to do the following +steps in <>. + +1. Install the long-term stability (LTS) release of +https://nodejs.org[Node.js]. Add the Node.js `/bin` directory to your +environment variable `PATH`. + +[[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, run tests, concat+minify +npm run build-prod +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 +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, 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] +------------------------------------------------------------------------------ + + StartServers 15 + MinSpareServers 5 + MaxSpareServers 15 + MaxRequestWorkers 75 + MaxConnectionsPerChild 500 + +------------------------------------------------------------------------------ ++ +. 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-'. Choose the most appropriate +command below based on your operating system. + +[source, bash] +------------------------------------------------------------------------------ +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-trusty +make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-xenial +------------------------------------------------------------------------------ + +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 , , +, , and with the appropriate values for your +PostgreSQL database (where and are for the *evergreen* +PostgreSQL account you just created), and replace and +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 --password --hostname --port \ + --database --admin-user --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.4 and later +^^^^^^^^^^^^^^^^^^^^^^^^ +To create the database instance on a remote database server running PostgreSQL +9.4 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 +------------------------------------------------------------------------------ + +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. diff --git a/configure.ac b/configure.ac index dacb5a36b7..54c5c7c557 100644 --- a/configure.ac +++ b/configure.ac @@ -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.2.2, open-ils-dev@list.georgialibraries.org) +AM_INIT_AUTOMAKE([OpenILS], [3.2.2]) AC_REVISION($Revision: 0.1 $) AC_CONFIG_SRCDIR([configure.ac]) AC_CONFIG_SUBDIRS([Open-ILS/xul/staff_client/external/libmar])