Bumping version numbers, adding Upgrade Script and Changelog user/csharp/rel_3_4_4
authorChris Sharp <csharp@georgialibraries.org>
Wed, 12 Aug 2020 00:30:09 +0000 (20:30 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Wed, 12 Aug 2020 00:30:09 +0000 (20:30 -0400)
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.3-3.4.4-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..cd4c9ad 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-Evergreen doesn't keep a GNU-style ChangeLog except in release tarballs.
-Those seeking a change log are encouraged to run 'git log -v', or read
-it online at: http://git.evergreen-ils.org/?p=Evergreen.git;a=log
+commit ce4422e352852935c658f69059ea375a5c96ff6d
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Tue Aug 11 20:28:32 2020 -0400
+
+    Updating upgrade docs for 3.4.4.
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+17     16      docs/installation/server_upgrade.adoc
+
+commit 4737705238e6f1ece8fe012c8338ca2d0989f2d6
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Tue Aug 11 20:28:26 2020 -0400
+
+    Bumping Perl version string for 3.4.4
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+
+1      1       Open-ILS/src/perlmods/lib/OpenILS.pm
+
+commit 310793468727887a164c852b88b5b670972e2769
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Aug 11 16:09:51 2020 -0700
+
+    Docs: asciidoc syntax correction for 3.4 release notes
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+3      3       docs/RELEASE_NOTES_3_4.adoc
+
+commit efce227c3ecfcd51f52b4922f35f3e092e658fc5
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Aug 11 13:10:44 2020 -0700
+
+    Docs: tweaks to 3.4.4 release notes
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+31     1       docs/RELEASE_NOTES_3_4.adoc
+
+commit 3d71e0808bc69a137c5a00a92830c982a18158ef
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Tue Aug 11 11:24:46 2020 -0700
+
+    Docs: 3.4.4 release notes
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+160    0       docs/RELEASE_NOTES_3_4.adoc
+
+commit 6e0886e75789aaf40a46e7e7d2e4d61f6d88200b
+Author: Michele Morgan <mmorgan@noblenet.org>
+Date:   Tue Aug 27 08:55:06 2019 -0400
+
+    LP1811466 Add fields to holdings editor column pickers
+    
+    Adds item fields creator, editor and last edit date to the working and
+    completed grids in the holdings editor.
+    
+    Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+9      3       Open-ILS/src/templates/staff/cat/volcopy/t_edit.tt2
+1      1       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit a199e3b5ef2e1c765a88c3427d8c53e8055e407e
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Aug 3 17:14:12 2020 -0400
+
+    LP#1839369: (follow-up) tweak button and styles
+    
+    - Change the button text from "Search" to "Search Catalog"
+    - adjust the styling on the AngularJS side to cuddle the
+      button with the search input
+    - standardize the placeholder text as "Search for..."
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       Open-ILS/src/eg2/src/app/staff/splash.component.html
+9      9       Open-ILS/src/templates/staff/t_splash.tt2
+
+commit 6a3a03751cffbe7409ac5967eec2df6923f71f76
+Author: Terran McCanna <tmccanna@georgialibraries.org>
+Date:   Tue Oct 22 16:16:35 2019 -0400
+
+    LP#1839369 Accessibility for Search Box
+    
+    This adds an accessible label to the Search box on the splash
+    page of the staff client as well as to the Angular version of
+    the splash page.
+    
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      1       Open-ILS/src/eg2/src/app/staff/splash.component.html
+1      0       Open-ILS/src/templates/staff/t_splash.tt2
+
+commit 5a35074c9479cd20503f9543221d11c477446a96
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Wed Mar 18 12:41:38 2020 -0400
+
+    LP1867834 Staffcat clear basket on logout
+    
+    Tell the browser/local store service to treat the staff catalog basket
+    cache key as a "login item", meaning it should be cleared upon logout.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      0       Open-ILS/src/eg2/src/app/share/catalog/basket.service.ts
+
+commit f9491973457baf525d8165f6ff8d981e222b4cac
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Jul 28 11:09:45 2020 -0400
+
+    LP#1889251: make call number affix sort keys read-only
+    
+    This patch makes the call number prefix and suffix label sort
+    key fields read-only on their respective Server Administration
+    pages, as any values that a user would try to set for them
+    would get overwritten by a database trigger.
+    
+    To test
+    -------
+    [1] Apply the patch.
+    [2] Go to Server Administration -> Call Number Prefixes (or Suffixes)
+        and attempt create and edit new affixes.
+    [3] Verify that the label sort key is a read-only display field on the
+        edit modal.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+
+10     0       Open-ILS/src/eg2/src/app/staff/admin/server/routing.module.ts
+
+commit bbb14ec1dba963cb808e72ef7d0564902dce7424
+Author: Josh Stompro <stompro@stompro.org>
+Date:   Mon Mar 4 11:16:56 2019 -0600
+
+    LP#1674364 - Use database bib id for cover art lookup
+    
+    Export the 901c as the URN:BIBID identifier to allow the
+    ATOM2XHTML.xsl to construct a cover art img link using it.
+    
+    Testing Notes:
+    
+    I used a bookbag to test this out.
+    1. Create a public bookbag of items and grab the bookbag id.
+    2. View the source of these links on your system to see the current output.
+     /opac/extras/feed/bookbag/atom/<bookbagid>
+     /opac/extras/feed/bookbag/html-full/<bookbagid>
+       Make note that the jacket img link uses the ISBN to lookup cover art.
+    
+    Make changes.
+    1. Restart supercat to re-load xsl transfor files.
+      osrf_control -l --service open-ils.supercat --restart
+    2. View the source and output of these links on your system to see the changes.
+     /opac/extras/feed/bookbag/atom/<bookbagid>
+     /opac/extras/feed/bookbag/html-full/<bookbagid>
+       The cover art images should show up now in the html-full, and the
+       URN:BIBID: identifier should be populated in the atom file.
+    
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      17      Open-ILS/xsl/ATOM2XHTML.xsl
+9      0       Open-ILS/xsl/MARC21slim2ATOM.xsl
+
+commit 657acd544dd51a6ea81681bd1961c8514c530afb
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Aug 3 17:38:48 2020 -0400
+
+    LP#1731370: (follow-up) fix a typo that was causing console noise
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit d973477eaac04e7f7142cf1c107da37670ddfc82
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Aug 3 17:31:32 2020 -0400
+
+    LP#1761142: (follow-up) tweak field-change style
+    
+    [1] Ensure that the border is displayed.
+    [2] Change the border color to one that has more contrast
+        as compared to the bg-success background color.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/templates/staff/cat/volcopy/t_attr_edit.tt2
+
+commit 22e866890d1e4e70359a627d15d1f77292a18caf
+Author: a. bellenir <abelleni@grpl.org>
+Date:   Thu Mar 28 12:26:37 2019 -0400
+
+    LP1761142 Volume Copy Editor Changed Fields Hard to Discern
+    
+    Add a changed_fields object to the scope and update it as copies are
+    changed. The function field_changed(field) determines if any of the
+    selected copies have altered the given field.  finally, a CSS class,
+    field-changed, is applied to add a green border to fields whose values
+    have been modified.
+    
+    Signed-off-by: a. bellenir <abelleni@grpl.org>
+    Signed-off-by: Ruth Frasur <rfrasur@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+21     18      Open-ILS/src/templates/staff/cat/volcopy/t_attr_edit.tt2
+11     0       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 95b9fb7f9f12bbfbb2246857ca5c6a5b04f016d0
+Author: Josh Stompro <stompro@stompro.org>
+Date:   Tue Jan 28 10:04:02 2020 -0600
+
+    LP#1783793 - Suspend holds when activation date set in web client angularjs
+    
+    1. Modify Dates popup changed to not allow picking dates in the past for hold
+      activation date both in the date picker, and if typed in manually.  If a
+      date in the past is typed in, it is changed to today's date and an alert
+      message is displayed.  The date picker just won't allow past days to be
+      selected.  The alert message remains until a date in the future is selected.
+    
+    2. Suspend holds when the activation date is set and saved.
+    
+    3. Adds a note about the fact that the hold will be suspended when the hold
+      activation date is selected for editing.  This makes the behavior clear so
+      staff don't have to figure it out by trial and error.
+    
+    4. Updates several sr-only (Screen Reader Only) labels in the holds date popup
+      template that were set to the wrong values.  The file was copied from the hold
+      notification popup and the screen reader descriptions were left unchanged from
+      those values.
+    
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+9      4       Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2
+17     1       Open-ILS/web/js/ui/default/staff/circ/services/holds.js
+
+commit ffdf63e9f79d8ae85cf7dfd2a6d43b837f4f9ae6
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Tue Jun 30 15:33:23 2020 -0400
+
+    LP#1885759: Count months and quarters across year boundaries
+    
+    We need to add year-multiples of months or quarters when using the
+    months_ago or quarters_ago transforms in the reporter.
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+4      2       Open-ILS/src/perlmods/lib/OpenILS/Reporter/SQLBuilder.pm
+
+commit 70856ddb9fcccc997677eb64890ca2e8713f4fe5
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date:   Tue Oct 8 16:00:12 2019 -0700
+
+    LP#1847343: fix Exclude Electronic Resources checkbox when locale picker is enabled
+    
+    Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      4       Open-ILS/web/js/ui/default/opac/simple.js
+
+commit 99ebe4e7df8fce5fccaf3707bb489ce5fb1b4a69
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Fri Oct 25 21:11:49 2019 -0700
+
+    LP #1717996 (follow-up) Change label for shareable user buckets
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      1       Open-ILS/src/templates/staff/circ/patron/bucket/t_bucket_create.tt2
+2      1       Open-ILS/src/templates/staff/circ/patron/bucket/t_bucket_edit.tt2
+
+commit a00d9db7cbdf5fc1c857c2f52465d1840bd94525
+Author: Tiffany Little <tlittle@georgialibraries.org>
+Date:   Mon Oct 21 15:00:30 2019 -0400
+
+    LP #1717996 Change label for shareable buckets
+    
+    Changes 'publicly visible' label on buckets and also adds a tooltip with an explanation. Also makes sure that clicking the tooltip does not check the checkbox automatically.
+    
+    Signed-off-by: Tiffany Little <tlittle@georgialibraries.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      1       Open-ILS/src/templates/staff/cat/bucket/share/t_bucket_create.tt2
+2      1       Open-ILS/src/templates/staff/cat/bucket/share/t_bucket_edit.tt2
+
+commit 9175916ae1b709e85d19a18dfc4c2fb091d53b51
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Fri Jul 31 12:39:23 2020 -0400
+
+    LP1842431: Add a release note
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+11     0       docs/RELEASE_NOTES_NEXT/Administration/autorenewal_action_trigger_result_code.adoc
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Administration/autorenewal_action_trigger_result_code.adoc
+
+commit e39a35e5ec7c1be4b16b0b36744f0bdf1778e517
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Fri Jul 31 11:10:24 2020 -0400
+
+    LP1842431: Remove redundant description field
+    
+    This branch brings about a good change, but I think having reason
+    and description be identical in the case of a failure and blank /
+    'SUCCESS' in the case of, well, success, is redundant and potentially
+    confusing. Also, if it's not used in the default template I doubt
+    anyone ever realizes it's there. :) Template editors can use
+    is_renewed to decide if they want to display success as a result
+    and that way the capitalization won't look like THE EIGHTIES have come
+    back in fashion again. :D
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+0      1       Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor/Circ/AutoRenew.pm
+
+commit ec7db5a9bcfddec860b48f5112abc79f63197468
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Fri Sep 6 11:09:18 2019 -0400
+
+    LP#1842431 Split textcode and desc fields for AutoRenew user data
+    
+    Split the event textcode and desc fields into textcode and description
+    fields, respectively, in the AutoRenew reactor's user data, but also
+    leave the reason field alone.  This permits sites to show only the
+    description of the event if they want.
+    
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      0       Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor/Circ/AutoRenew.pm
+
+commit d47ba05830155323028e935c1be3eee6a8f0d1a6
+Author: Michele Morgan <mmorgan@noblenet.org>
+Date:   Thu Sep 12 16:30:47 2019 -0400
+
+    LP#1842431 Make renewal failure reason more appropriate for patron notifications
+    
+    Changes the failure reason for the autorenewal to include only the desc,
+    Removes the textcode of the event, which shouldn't be included in a patron notice.
+    
+    Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+1      1       Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor/Circ/AutoRenew.pm
+
+commit d4185338f2726761d479e77765038189c4867f2e
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Mon Oct 8 17:24:20 2018 -0700
+
+    LP1731370: Distinguishing new copies and volumes with aditional means (WCAG 1.4.1)
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      0       Open-ILS/src/templates/staff/cat/volcopy/index.tt2
+1      2       Open-ILS/src/templates/staff/css/cat.css.tt2
+6      4       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 745b43a9118dc9bee802bb8cf2f773da9a5ca394
+Author: Jason Etheridge <jason@EquinoxInitiative.org>
+Date:   Wed Sep 12 08:10:32 2018 -0400
+
+    lp1731370 CSS styling for new items and volumes
+    
+    previous commit just handled volumes, this handles copies
+    
+    Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/src/templates/staff/css/cat.css.tt2
+3      1       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 017cce2a57304a8f473730a23b643d891bb64552
+Author: Jason Etheridge <jason@EquinoxInitiative.org>
+Date:   Wed Sep 5 09:13:49 2018 -0400
+
+    lp1731370 CSS styling for new items and volumes
+    
+    in vol/copy editor
+    
+    Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      1       Open-ILS/src/templates/staff/css/cat.css.tt2
+1      1       Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 8c8aafcbe26d24dd549015afdd5cbecaefb5de65
+Author: Josh Stompro <stompro@stompro.org>
+Date:   Wed Nov 6 12:24:36 2019 -0600
+
+    LP#1851541 - Add audio alert for item alert popups
+    
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/web/js/ui/default/staff/circ/services/circ.js
+
+commit cd055be633d8f2d129a92b5c6949247dcbd528f9
+Author: Christine Morgan <cmorgan@noblenet.org>
+Date:   Thu Nov 21 12:53:11 2019 -0500
+
+    LP1735568, LP1830443: MARC Editor Fixes
+    
+    These style changes to the current MARC Editor fix the indicator box
+    resize problem and the blank subfield problem while improving usability.
+    Colors were tested using the Chrome extension Colorblindly, a
+    colorblindness simulator.
+    
+    Signed-off-by: Christine Morgan <cmorgan@noblenet.org>
+    Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+24     21      Open-ILS/src/templates/staff/cat/share/t_marcedit.tt2
+3      3       Open-ILS/src/templates/staff/cat/share/t_marcedit_editable.tt2
+27     11      Open-ILS/src/templates/staff/css/cat.css.tt2
+
+commit 5517094ec404001cf8fbae51f66570e4a709f677
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Tue Jul 28 17:21:28 2020 -0400
+
+    LP1889296 Staffcat holds request time includes time
+    
+    Display the hold request time as date plus time in the general purpose
+    Angluar holds grid.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      1       Open-ILS/src/eg2/src/app/staff/share/holds/grid.component.html
+
+commit 89b5bf9a7a750da48300ab23e6e4b6aa32e8f778
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Jul 28 10:43:25 2020 -0400
+
+    LP#1776757: (follow-up) keep input for amount as type "number"
+    
+    Doing this preserves the form validation that ensures that
+    the user cannot submit the form with a non-numeric amount.
+    
+    This does lose forcing the display of default amounts such as
+    "1.50" to two decimal places, but I'm figuring that form validation
+    takes priority pending a longer-term solution such as a custom
+    value validator or using ng-currency.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/templates/staff/circ/share/t_bill_patron_dialog.tt2
+1      1       Open-ILS/web/js/ui/default/staff/circ/services/billing.js
+
+commit 7d86d434a323b15e0d4d17cbf6cc0ae562346b5e
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Wed Jan 29 20:20:35 2020 +0000
+
+    lp1776757 Default Billing Price Not Updating
+    
+    Fix the following bug: When billing a patron and one switches from
+    one billing type to a different billing type, the price isn't updating
+    to show the new default price
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/templates/staff/circ/share/t_bill_patron_dialog.tt2
+5      2       Open-ILS/web/js/ui/default/staff/circ/services/billing.js
+
+commit bb9a04aff2da25a0f7b7a7bf8bd11bbf61a77f87
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Wed Oct 3 09:04:54 2018 -0700
+
+    LP1795469: Opac holdings sort now considers CN suffix
+    
+    To test:
+    1) Create a bunch of Call Number suffixes in Administration
+    -> Server Administration -> Call Number Suffixes.
+    2) Go to a bib record, and add a bunch of holdings,
+    all with the same call number label, owning/circ libraries,
+    item numbers, and parts (if using parts) but with different
+    barcodes and CN suffixes.
+    3) Look at the OPAC view of these holdings.  Note that they
+    are in order by barcode, without any consideration for
+    the CN suffix.
+    4) Apply this commit.
+    5) Look at the OPAC view again.  Note that they are now sorted
+    by CN suffix, and then by barcode.
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm
+
+commit ed894762a29d90ddb0eb5faff2166668355cd9fd
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Mon Jun 8 16:03:14 2020 -0400
+
+    LP1882591 Empty combobox avoids default selection
+    
+    When clearing a combobox value, no combobox options are displayed in the
+    dropdown.  This allows users to clear the value then tab out of the box
+    without the typeahead magic forcing selection of the first entry.
+    
+    The full list can still be displayed by clicking on the combobox.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+7      6       Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
+
+commit 8ed4dce43fadcfe0dbbb38f8a34c3259101fb82c
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Mon Jul 27 10:58:52 2020 -0400
+
+    LP1878079 Staffcat Add Holdings action support
+    
+    Teaches the staff catalog Add Holdings button to open the holdings
+    editor using the appropriate parameters.  If the holdings maintenance
+    grid is active, arguments to pass are based on the grid selection.
+    Otherwise it simply open the item editor with a single call number /
+    copy to be created 'here'.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+5      7       Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.ts
+2      2       Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
+3      2       Open-ILS/src/eg2/src/app/staff/catalog/record/record.component.html
+30     0       Open-ILS/src/eg2/src/app/staff/catalog/record/record.component.ts
+
+commit 4a6f6153a5d36b1db9b3f3486c8032406d27b759
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Wed May 13 12:17:19 2020 -0400
+
+    LP1878079 Staffcat 'Edit' items / call numbers support
+    
+    Adds support to the Angular staff catalog to properly handle requests
+    to Edit Items, Edit Call Numbers, and Edit Call Numbers and Items.
+    Prior to his change, these operations would behave more like Add
+    operations than Edit operations.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+6      6       Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.html
+42     4       Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
+14     12      Open-ILS/src/eg2/src/app/staff/share/holdings/holdings.service.ts
+
+commit 92ef6cc3fb080486ce90e512a9d25e04fe4b965b
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Mon May 11 15:10:37 2020 -0400
+
+    LP1878079 Staffcat Add Call Nums honors selected orgs
+    
+    When adding new call numbers from the Angular staff catalog Holdings
+    View grid, take all selected grid rows into consideration when
+    determining how many call numbers to add and what their owning libs
+    should be.
+    
+    To test:
+    * Navigate to the Holdings View tab of a record detail page in the Angular
+      staff catalog.
+    * Select multiple rows in the grid which are org unit-only rows (i.e.
+      the row does not refer to a specific call number or item).
+    * From the action menu / right client menu, select "Add Callnumbers"
+    * Confirm that a call number entry for each selected org unit is present
+      in the spawned holdings editor.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+15     10      Open-ILS/src/eg2/src/app/staff/catalog/record/holdings.component.ts
+
+commit e0b6a271e23b9b3ebcf4d0e3cda44d615ac33681
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Jul 27 10:55:19 2020 -0400
+
+    LP#1802166: stamp schema update
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+1      1       Open-ILS/src/sql/Pg/upgrade/{XXXX.function.actor_usr_delete.sql => 1211.function.actor_usr_delete.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.function.actor_usr_delete.sql => 1211.function.actor_usr_delete.sql} (96%)
+
+commit 2a71751067376f5ab2e1fb758169bdb14a8bc384
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Jul 27 10:51:37 2020 -0400
+
+    LP#1802166: (follow-up) document a way to clear names from already-purged patron records
+    
+    For reference, the following SQL will clear the preferred name
+    and name keyword fields from already-purged records:
+    
+    UPDATE actor.usr
+    SET pref_prefix = NULL,
+        pref_first_given_name = NULL,
+        pref_second_given_name = NULL,
+        pref_family_name = NULL,
+        pref_suffix = NULL,
+        name_keywords = NULL
+    WHERE usrname ~ ('^' || id || '-PURGED')
+    AND NOT active
+    AND deleted
+    AND (
+        pref_prefix IS NOT NULL OR
+        pref_first_given_name IS NOT NULL OR
+        pref_second_given_name IS NOT NULL OR
+        pref_family_name IS NOT NULL OR
+        pref_suffix IS NOT NULL OR
+        name_keywords IS NOT NULL
+    );
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+25     0       docs/RELEASE_NOTES_NEXT/Circulation/purge_usr_pref_names.adoc
+
+commit dcde76f08fbc64584796dc8cb3c55641bec05ace
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Fri Feb 15 13:33:08 2019 -0500
+
+    Lp 1802166: Purge User Name Keywords
+    
+    Add the name_keywords field to the fields that get set to null in
+    actor.usr_delete.
+    
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/src/sql/Pg/999.functions.global.sql
+1      0       Open-ILS/src/sql/Pg/upgrade/XXXX.function.actor_usr_delete.sql
+
+commit e1b585db43cff2ae52aa1431838aacb7ca4c306b
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Fri Feb 15 12:21:19 2019 -0500
+
+    Lp 1802166: Purge User Preferred Names
+    
+    When the preferred names feature was added, the new fields were not
+    added to the update in the actor.usr_delete function.  This commit
+    sets those new fields to NULL in that function.
+    
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+5      0       Open-ILS/src/sql/Pg/999.functions.global.sql
+124    0       Open-ILS/src/sql/Pg/upgrade/XXXX.function.actor_usr_delete.sql
+5      0       docs/RELEASE_NOTES_NEXT/Circulation/purge_usr_pref_names.adoc
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.function.actor_usr_delete.sql
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Circulation/purge_usr_pref_names.adoc
+
+commit 418306e61c2abbe05c9bdffda3bce6758cac1b1e
+Author: Jason Etheridge <jason@EquinoxInitiative.org>
+Date:   Fri Jun 5 09:00:53 2020 -0400
+
+    LP1819542 Hanging transits can cause checkins to fail
+    
+    So two bits of defensive programming for do_checkin:
+    
+        sub fix_broken_transit_status
+        sub cancel_transit_if_circ_exists
+    
+    I don't know if the first one does anything useful, but the idea is that it'll
+    at least temporarily set the copy status to In Transit for any status checks
+    within the do_checkin method that test for that.  It doesn't actually repair
+    the status permanently (at least in the case of, say, an existing transit being
+    re-used for a ROUTE_ITEM event).  We may want to do that.
+    
+    The second one will abort an associated transit (including retargeting a hold
+    for a hold transit) if both an active transit and an active circulation exist
+    for the item.  This handles the situation I've been using to test the bug:
+    
+        1) transit an item (CONC90000436 in Concerto)
+        2) artificially change its status directly in the database (for example, to
+           Available)
+        3) check it out to a patron (99999376864 in Concerto), noting
+           that the Cancel Transit prompt does not get triggered
+        4) check in the item
+    
+    Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: John Amundson <jamundson@cwmars.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+42     15      Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
+
+commit 58a13e6728f95689ea594868c8b5e35d15904611
+Author: Jason Boyer <JBoyer@eoli.info>
+Date:   Wed Jan 8 13:37:01 2020 -0500
+
+    LP1858701: prevent doubles slashes in opac iframe urls
+    
+    The CGI module (used by mkurl()) does not like it
+    if we have two slashes in a URL sort/of/like//this.
+    Things work but the path portion of the URL is doubled
+    each time mkurl is used on it. This branch fixes 2
+    causes in the staff OPAC.
+    
+    Signed-off-by: Jason Boyer <JBoyer@eoli.info>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      2       Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
+
+commit 84c5a4ecf588990a448f88ed47330c88b98580e6
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date:   Tue Jun 18 13:48:44 2019 -0700
+
+    LP#1833300: wrap SRU query in parentheses before appending site param
+    
+    Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/perlmods/lib/OpenILS/WWW/SuperCat.pm
+
+commit 210adb585bfa4ca6715bdbecd0ec659f20079d79
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Mon Aug 19 12:43:33 2019 -0700
+
+    LP1739288: report back on invalid barcodes in Item Status screen
+    
+    To test:
+    
+    1) Make a text file with both valid and invalid item barcodes.
+    2) Go to Circulation > Item Status and upload your file.
+    3) Note that the valid barcodes result in rows in the item status
+    screen, and the invalid barcodes are not displayed anywhere.
+    4) Apply this commit.
+    5) Repeat step 2.
+    6) Notice that the invalid barcodes are now reported in a new alert.
+    7) Make a text file with only valid barcodes and upload it.
+    8) Upload it.  Notice that the alert disappears.
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    
+    LP1739288: Add a summary report to the list of bad barcodes.
+    
+    (^^ squash of commit written by Josh Stompro)
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+21     0       Open-ILS/src/templates/staff/cat/item/index.tt2
+11     1       Open-ILS/web/js/ui/default/staff/cat/item/app.js
+
+commit 7827f05da1006492ce2883cfbb83e145e0af9abb
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Oct 15 18:32:19 2019 -0400
+
+    LP#1847784: (docs) refer to the badge score generator cron job by name
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+2      2       docs/admin/popularity_badges_web_client.adoc
+
+commit 40a28f954b24d41e91c684dc0bcf12f6fa20d33d
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Oct 15 18:29:40 2019 -0400
+
+    LP#1847784: install badge_score_generator.pl by default
+    
+    To test
+    -------
+    [1] Perform an Evergreen installation/upgrade.
+    [2] Verify that badge_score_generator.pl is present
+        in /openils/bin (or an alternative installation
+        location specified during the ./configure step).
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+1      0       Open-ILS/src/Makefile.am
+
+commit c0ff29694e69162742e2807fe303aff53b1bc4c5
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Sun Mar 15 08:49:48 2020 -0700
+
+    LP1867524: Add a help popover to the End field in the Closed Dates Editor
+    
+    To test:
+    1) Go to Administration > Local Administration > Closed Dates Editor.
+    2) Click Add Closing.
+    3) Under closing type, choose Multiple Day.
+    4) Note that the End field has no guidance for the user.
+    5) Apply this commit.
+    6) Repeat steps 1-3.
+    7) Notice that the End field has some clarifying guidance for the user.
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      0       Open-ILS/src/templates/staff/admin/local/actor/edit_closed_dates.tt2
+
+commit 9af1b3b0446c20aaa34bca65d04ebc6d1a70ed6b
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Wed Nov 13 10:28:53 2019 -0500
+
+    LP#1852443 - Re-label duplicate-named "all circulations" source
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       Open-ILS/examples/fm_IDL.xml
+13     0       docs/RELEASE_NOTES_NEXT/Reports/change_aacs_label.adoc
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Reports/change_aacs_label.adoc
+
+commit de58d01d5104b590e4eeb1d1ef8860e232afcb69
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Fri Jul 24 09:53:16 2020 -0400
+
+    LP1747542: Stamp upgrade script
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+1      1       Open-ILS/src/sql/Pg/upgrade/{XXXX.lp1747542_action_item_user_circ_test.sql => 1209.lp1747542_action_item_user_circ_test.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.lp1747542_action_item_user_circ_test.sql => 1209.lp1747542_action_item_user_circ_test.sql} (99%)
+
+commit 466c103cce7af38671f5bee6bc86d42ce3a4a82b
+Author: Chris Sharp <csharp@georgialibraries.org>
+Date:   Mon Feb 5 18:58:43 2018 -0500
+
+    LP#1747542 - Repair item/user circulation test
+    
+    The action.item_user_circ_test function was previously
+    ignoring lost or longoverdue and paid-for circulations.
+    Adding a check for whether the circulation is closed
+    fixes this.
+    
+    Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+1      0       Open-ILS/src/sql/Pg/100.circ_matrix.sql
+237    0       Open-ILS/src/sql/Pg/upgrade/XXXX.lp1747542_action_item_user_circ_test.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.lp1747542_action_item_user_circ_test.sql
+
+commit c88dce86daa5fa72a9e73afa30d3441d62ad1163
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Tue Jul 7 16:24:49 2020 -0400
+
+    LP#1886713: fix issue where AngularJS hotkeys fail to initialize
+    
+    Fixes a race condition where the navbar service can look for
+    eg-accesskey attributes before all of the elements that have
+    them meet the conditions to show up in the DOM.
+    
+    To test
+    -------
+    [1] From an AngularJS part of the staff interface, note that
+        hitting F8 sometimes does not perform the retrieve
+        last patron action, nor does F8 show up on the list of
+        hot keys when you hit "?" outside of an input.
+    [2] Apply the patch and repeat step 1. This time, the F8
+        hotkey should consistently work.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+7      4       Open-ILS/web/js/ui/default/staff/services/navbar.js
+
+commit 5d6e9eddbd6f1ec4e9c9c0c4c631d059202a46b7
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Thu Jun 6 18:15:56 2019 -0700
+
+    LP1474874: Consistent page headers in the Angular client
+    
+    This commit ensures that each screen in the Angular staff client uses
+    the <eg-staff-banner> component to better orient its users.
+    
+    This commit also gives the eg-staff-banner some <h1> semantics, per
+    WebAIM's guidance: "Pages should be structured in a hierarchical manner,
+    generally with one 1st degree headings (<h1>) being the most important
+    (usually page titles or main content heading)" -- https://webaim.org/techniques/semanticstructure/
+    
+    To test:
+    
+    1) Go to [your-server]/eg2/en-US/staff/catalog/search
+    2) Confirm that there is a header that gives the page title at the top
+    of the page.
+    3) Go to an Angular Vandelay page.
+    4) Confirm that you see a similar header as in step 2.
+    5) Go to an Angular Administration page.
+    6) repeat step 4.
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      1       Open-ILS/src/eg2/src/app/staff/cat/vandelay/vandelay.component.html
+2      0       Open-ILS/src/eg2/src/app/staff/catalog/browse.component.html
+2      0       Open-ILS/src/eg2/src/app/staff/catalog/catalog.component.html
+2      0       Open-ILS/src/eg2/src/app/staff/catalog/cnbrowse.component.html
+1      1       Open-ILS/src/eg2/src/app/staff/share/staff-banner.component.ts
+
+commit b221b4935e69320b6accbe8fb41a6abcd1004a61
+Author: Jason Boyer <JBoyer@equinoxinitiative.org>
+Date:   Fri Jul 24 08:41:49 2020 -0400
+
+    LP1870605: Stamp upgrade script
+    
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+1      1       Open-ILS/src/sql/Pg/upgrade/{xxxx.schema.emergency_closing_fines_fix.sql => 1208.schema.emergency_closing_fines_fix.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{xxxx.schema.emergency_closing_fines_fix.sql => 1208.schema.emergency_closing_fines_fix.sql} (99%)
+
+commit 873cd4848a7f2ea33ec00661020294b6838cffff
+Author: Steven Callender <stevecallender@esilibrary.com>
+Date:   Fri Apr 3 15:20:39 2020 -0400
+
+    LP1870605: Fix typo in emergency closing functions
+    
+    The emergency closing handler was ignoring any
+    circulations that already had fines due to a typo
+    in the stage 2 circ and reservation functions.
+    
+    Signed-off-by: Steven Callender <stevecallender@esilibrary.com>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
+
+2      2       Open-ILS/src/sql/Pg/096.schema.emergency_closing.sql
+191    0       Open-ILS/src/sql/Pg/upgrade/xxxx.schema.emergency_closing_fines_fix.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/xxxx.schema.emergency_closing_fines_fix.sql
+
+commit bf398f0fac0bf694d8b22ac47c85c0e00bffc6b1
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Thu Jul 23 06:37:07 2020 -0700
+
+    LP#1705302: Stamping Upgrade Script
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+1      1       Open-ILS/src/sql/Pg/upgrade/{XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql => 1207.data.lp1705302-update-receipt-template-setting-descriptions.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql => 1207.data.lp1705302-update-receipt-template-setting-descriptions.sql} (96%)
+
+commit 84818d35249d3e8e3d5d0f3346aabc59d3f0313d
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Tue Jun 11 09:57:58 2019 -0700
+
+    lp1705302 update description of receipt template
+    
+    Updated editing instructions to give correct syntax and changing name
+    from receipt templates to Print Templates
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    
+     Changes to be committed:
+            modified:   src/sql/Pg/950.data.seed-values.sql
+            new file:   src/sql/Pg/upgrade/XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql
+    
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+5      5       Open-ILS/src/sql/Pg/950.data.seed-values.sql
+36     0       Open-ILS/src/sql/Pg/upgrade/XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.lp1705302-update-receipt-template-setting-descriptions.sql
+
+commit 4e97cedc212bff316606730c7248c1a3febc0572
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Wed Jan 29 12:33:30 2020 -0500
+
+    LP#1775940: Archived Penalties/Messages does not Respect Date Range
+    
+    This patch implements a.bellenir's suggestion of switching from
+    setQuery to watchQury in the archiveGrid of the web client circulation
+    patron app.  It does now appear to respect the date range entered by
+    the user.
+    
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+    Signed-off-by: John Amundson <jamundson@cwmars.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/web/js/ui/default/staff/circ/patron/app.js
+
+commit 73d4c1dbf9bc1535c0b0379d104b99e0f93584b8
+Author: Josh Stompro <stompro@stompro.org>
+Date:   Mon Feb 3 13:42:08 2020 -0600
+
+    LP#1754387 - User Buckets - Pending Users Enhancement
+    
+    It wasn't possible to load more than 100 users from a barcode file import in
+    user buckets because of two issues.  The pager was limited to only showing 100
+    barcodes at a time, and moving any users from the pending list would clear the
+    pending list.
+    
+    Here is a branch that makes the following changes.
+    
+    1. Sets the default number of items to 100 and allows choosing the
+      500,1000,10000 options for the pager.
+    
+    2. When moving users from pending to a bucket, only removes the moved users
+      from the pending list.  This allows the user to move a larger number of
+      users to a bucket from pending, a batch at a time.
+    
+    Testing Plan:
+    
+    Before Changes:
+    
+    1. Load a file with 110 patron barcodes in the User Buckets, Pending Users interface.
+    2. See that the pager only allows a max of 100 for the page size.
+    3. Move one user to a bucket and note that the pending list gets cleared.
+    
+    After Changes:
+    
+    1. Load a file with 110 patron barcodes.
+    2. See that the pager allows for picking larger page sizes.
+    3. Move one user to a bucket, and note that the pending list removes just that one user.
+    
+    Another way to see the changes is to pick a pager size of 25, and select all the
+    entries.  Then move them to a bucket and see that you can continue to move
+    batches of 25 until you have moved all the pending users.
+    
+    Signed-off-by: Josh Stompro <stompro@stompro.org>
+    Signed-off-by: Gina Monti <gmonti@biblio.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      1       Open-ILS/src/templates/staff/circ/patron/bucket/t_pending.tt2
+18     2       Open-ILS/web/js/ui/default/staff/circ/patron/bucket/app.js
+
+commit 94bf31cd20e3fb1a6d596702fe479d8cea342318
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Sun Mar 8 07:58:09 2020 -0700
+
+    LP1845241: Use the correct API call to Undelete a bib record
+    
+    To test:
+    
+    1) Open up a delete-ready bibliographic record in the Web client
+    (no attached holdings, no located URI, no open orders attached, etc.)
+    2) Delete it.
+    3) Undelete it.  Note that the "Undelete" button briefly turns into a
+    "Delete" button before changing back to an "Undelete" button.  Note that
+    the bib record does not show up in search results within the Web client.
+    4) Apply this commit.
+    5) Now try undeleting the record again.  Notice that the "Delete" button
+    does not revert to an "Undelete" button.  Note also that the record is
+    once again showing up in search results (although you may have to be a
+    bit creative using search terms, due to search results caching).
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: blake <blake@mobiusconsortium.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2      0       Open-ILS/src/templates/staff/cat/share/marcedit_strings.tt2
+18     2       Open-ILS/web/js/ui/default/staff/cat/services/marcedit.js
+
+commit 41214e31852477e63106f83fb0271fb3ea4302d7
+Author: Dan Scott <dan@coffeecode.net>
+Date:   Tue Jan 7 15:05:06 2020 -0500
+
+    LP1805860: Display long patron names without obscuring input fields
+    
+    Long patron names can obscure the input fields and menu items on patron
+    action screens. The only workaround is to reduce the font size using the
+    browser controls until the input fields and menu items are visible.
+    
+    While the fixed position saves space at the top of the screen for
+    typical cases, it can be hard for staff to remember the font-reduction
+    workaround when they hit a long patron name.
+    
+    Removing the fixed position CSS also better supports the display of
+    regular patron names on browsers that are not wide enough to display the
+    top menu (Search/Circulation/Cataloging/.../Workstation name/Locale) all
+    on a single line.
+    
+    Signed-off-by: Dan Scott <dan@coffeecode.net>
+    Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+0      6       Open-ILS/src/templates/staff/css/circ.css.tt2
+
+commit d2534cdc70601b29269b2894ea0a0deec9203d96
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Mon Jun 22 11:40:08 2020 -0400
+
+    LP#1844365: fix initialization of stat cats in patron registration form
+    
+    If you edit a patron and it has (or gets added) a stat cat entry,
+    then from the registration form click on its inline patron search
+    link, fetch a patron that has no stat cats, then edit it, the
+    first patron's stat cats can show up in the registration form.
+    If the second patron does have stat cats, but not values set
+    for all of them, then the first patron's stat cat entries can
+    fill in cases where no entry was previously set.
+    
+    This patch fixes patronRegSvc's initialization when loading
+    an existing patron record to avoid this.
+    
+    To test
+    -------
+    [1] Edit a patron and ensure that it has at least one
+        statistical category set.
+    [2] From the patron search link in the patron app tab
+        bar, NOT the Search | Patron menu item, search for
+        and retrieve a patron that has no stat cats assigned.
+    [3] Edit the patron. Observe that the first patron's
+        stat cat entry displays in the second patron's
+        registration form.
+    [4] Apply the patch and repeats steps 1-3. This time,
+        the previous patron's stat cats should not infect
+        the second patron's registration form.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+
+1      0       Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
+
+commit 5418f1b851eb79c323dfaf72f321dbedf49ff3c6
+Author: Kyle Huckins <khuckins@catalyte.io>
+Date:   Thu May 23 21:47:02 2019 +0000
+
+    lp1775286 Color Indication of Overdue on Items Out
+    
+    - Overdue items are highlighted in red in the Items Out UI.
+    - Ensure overdue-row and lost-row classes handle visited links
+    
+    Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
+    Signed-off-by: Jennifer Pringle <jennifer.pringle@bc.libraries.coop>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+3      2       Open-ILS/src/templates/staff/circ/patron/t_items_out.tt2
+1      1       Open-ILS/src/templates/staff/css/style.css.tt2
+9      0       Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
+
+commit de8e1a075264a629191cd33c23d9f1c8f79f9dfc
+Author: Jeff Davis <jdavis@sitka.bclibraries.ca>
+Date:   Tue May 5 10:34:36 2020 -0700
+
+    LP#1840294: use dedicated UI for match set admin, rather than auto-generated admin pages
+    
+    Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/eg2/src/app/staff/admin/server/admin-server-splash.component.html
+
+commit 5aa2f703e5a6c8e0c292bea55c757d9e942530e9
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Fri Apr 24 16:09:57 2020 -0400
+
+    LP1874897 Staff catalog honors classification scheme
+    
+    Use the org unit setting "cat.default_classification_scheme" to
+    determine which scheme to use when extracting the bib-level call number
+    for display in the Angular staff catalog.
+    
+    This also modifies the API to look the value up so future calls to the
+    API will Just Work (and it's one less bit of data the browser has to
+    retrieve).
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      4       Open-ILS/src/eg2/src/app/share/catalog/bib-record.service.ts
+13     3       Open-ILS/src/perlmods/lib/OpenILS/Application/Cat.pm
+
+commit fe27ffee96efcffb0ac9f8c26599f1492e1c5c3d
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Fri Jul 3 10:05:33 2020 -0400
+
+    LP1886118 Staff catalog search format repair
+    
+    Fixes an error in the staff catalog search params builder with regard to
+    encoding the search format.  The 'format' param should be 'search_format'.
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/eg2/src/app/share/catalog/search-context.ts
+
+commit 1f2e3549a2d744aa57ad248566eb5e1bb14070a7
+Author: Jason Stephenson <jason@sigio.com>
+Date:   Fri Jul 17 07:09:29 2020 -0400
+
+    LP#1886852: Stamping Upgrade Script
+    
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+1      1       Open-ILS/src/sql/Pg/002.schema.config.sql
+1      1       Open-ILS/src/sql/Pg/upgrade/{XXXX.function.distinct-regen_copy_map.sql => 1206.function.distinct-regen_copy_map.sql}
+ rename Open-ILS/src/sql/Pg/upgrade/{XXXX.function.distinct-regen_copy_map.sql => 1206.function.distinct-regen_copy_map.sql} (82%)
+
+commit a78747a609f3db4b557bb2305cb85d9c0adc9b79
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Wed Jul 8 13:18:52 2020 -0400
+
+    LP#1886852: Protect against dupes in hold-copy map function
+    
+    If the DB function that regenerates the hold-copy maps for a hold
+    receives duplicate copies in its second parameter, it blows up.  This
+    commit prevents that by making the list unique at use time.
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: Jason Stephenson <jason@sigio.com>
+
+1      1       Open-ILS/src/sql/Pg/090.schema.action.sql
+12     0       Open-ILS/src/sql/Pg/upgrade/XXXX.function.distinct-regen_copy_map.sql
+ create mode 100755 Open-ILS/src/sql/Pg/upgrade/XXXX.function.distinct-regen_copy_map.sql
+
+commit f043d0180c10d7fffc8c65e87d2527c582f7b5ea
+Author: Jane Sandberg <sandbej@linnbenton.edu>
+Date:   Sun Jul 12 08:10:26 2020 -0700
+
+    LP1848573: follow-up: minor changes to IDL labels for the ccs class
+    
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      2       Open-ILS/examples/fm_IDL.xml
+
+commit bdc7d1bba8484ec10657b5638e8e47f448453245
+Author: Shula Link <slink@gchrl.org>
+Date:   Mon Mar 16 10:30:27 2020 -0400
+
+    LP1848573: Added nice labels to Open-ILS\examples\fm_IDL.xml
+    for copy status
+    
+    Signed-off-by: Shula Link <slink@gchrl.org>
+    Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+7      7       Open-ILS/examples/fm_IDL.xml
+
+commit fd0742990053634894b5d10254b812543a5f59fd
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Wed Sep 12 09:14:58 2018 -0400
+
+    LP#1712854: Disable all server-side sorting, but provide a stub for later, if we move that way
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: John Yorio <jyorio@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      1       Open-ILS/src/templates/staff/circ/holds/t_shelf_list.tt2
+3      1       Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
+34     1       Open-ILS/web/js/ui/default/staff/circ/holds/app.js
+
+commit 10dee660124e542ea6fb1e736958b241cb2dda6c
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Tue Sep 11 17:36:30 2018 -0400
+
+    LP#1712854: Add User Alias and User Alias or Display Name columns to shelf list
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: John Yorio <jyorio@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+1      0       Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
+2      0       Open-ILS/src/templates/staff/circ/holds/t_shelf_list.tt2
+
+commit f594911fc97dc53035f871e68507fa6e646320ae
+Author: Jason Boyer <JBoyer@eoli.info>
+Date:   Fri Feb 21 16:08:36 2020 -0500
+
+    LP1864056: Don't compare multiple new Date()s
+    
+    This branch addresses a race condition when
+    checking out or renewing items.
+    (The use of minDate in items_out was implicitly
+    immune to this issue, but that is made explicit
+    with this patch.)
+    
+    To test
+    -------
+    [1] The race condition would be difficult to reliably
+        reproduce directly, although a tool like
+        https://github.com/mattzeunert/javascript-clock-speedup
+        might help simulate the problem, so to test, verify
+        that the following actions do not break:
+    
+        * checking out a loan, both with and without
+          setting a specific due date
+        * renewing a loan with a specific due date
+          from the patron items out tab
+        * renewing a loan from Circulation -> Renew Items,
+          both with and without setting a specific due date.
+    
+    Signed-off-by: Jason Boyer <JBoyer@eoli.info>
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+3      2       Open-ILS/web/js/ui/default/staff/circ/patron/checkout.js
+3      2       Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
+3      3       Open-ILS/web/js/ui/default/staff/circ/renew/app.js
+
+commit e6160c20dfa79b82eb392e857dbb8132f8c355b1
+Author: Mike Risher <mrisher@catalyte.io>
+Date:   Thu Feb 20 23:07:30 2020 +0000
+
+    lp1735828 Copy Bucket multi show status
+    
+    Revise the web client so that when one is in the copy bucket one can
+    select multiple entries and do "show status" on all of them.
+    
+    Signed-off-by: Mike Risher <mrisher@catalyte.io>
+    Signed-off-by: Tiffany Little <tlittle@georgialibraries.org>
+    Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
+
+2      0       Open-ILS/src/templates/staff/cat/bucket/copy/t_view.tt2
+9      0       Open-ILS/web/js/ui/default/staff/cat/bucket/copy/app.js
+
+commit 473ea12f85e76e6a4de40afde3101d55b31b7631
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Thu Jun 25 10:29:57 2020 -0400
+
+    LP#1884787: check in package-lock.json updates
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+2069   2114    Open-ILS/src/eg2/package-lock.json
+
+commit b6ca1003e403f16283d02e0d3ba6ea0294e93853
+Author: Galen Charlton <gmc@equinoxinitiative.org>
+Date:   Thu Jun 25 10:28:09 2020 -0400
+
+    LP#1884787: pin moment-timezone to 0.5.27
+    
+    This updates moment-timezone to pull in an updated
+    tzdb but pins it to avoid future build errors if
+    npm update is run. Unlike the version of this patch
+    series for rel_3_5+, no attempt is made to update
+    moment-timezone to the version that includes built-in
+    TypeScript types.
+    
+    Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
+
+1      1       Open-ILS/src/eg2/package.json
+
+commit b97ad773a18f008f8697b1e25a4a540f195424a2
+Author: Bill Erickson <berickxx@gmail.com>
+Date:   Fri Jun 12 11:20:29 2020 -0400
+
+    LP1883267 Minor release note tweaks
+    
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+5      5       docs/RELEASE_NOTES_NEXT/Architecture/do-not-cache-angular-root.adoc
+
+commit e3fc6af20ee13f34c534789f2b19e2cd1553497c
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Fri Jun 12 10:55:29 2020 -0400
+
+    LP#1883267: Adding release notes
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+36     0       docs/RELEASE_NOTES_NEXT/Architecture/do-not-cache-angular-root.adoc
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Architecture/do-not-cache-angular-root.adoc
+
+commit d893d1c7bfd98f38117e554aa2c59a4e01687f8b
+Author: Mike Rylander <mrylander@gmail.com>
+Date:   Fri Jun 12 10:36:48 2020 -0400
+
+    LP#1883267: Never cache Angular index.html
+    
+    If we cache index.html then clients will be delayed seeing updates in
+    normal circumstances.
+    
+    Signed-off-by: Mike Rylander <mrylander@gmail.com>
+    Signed-off-by: Bill Erickson <berickxx@gmail.com>
+
+14     0       Open-ILS/examples/apache_24/eg_vhost.conf.in
+
+commit ae3c1fa9b18f470b8831a3a851db5798bf731bdb
+Author: Dan Wells <dbw2@calvin.edu>
+Date:   Thu Jun 11 17:03:34 2020 -0400
+
+    Forward-port 3.4.3 upgrade script
+    
+    Signed-off-by: Dan Wells <dbw2@calvin.edu>
+
+171    0       Open-ILS/src/sql/Pg/version-upgrade/3.4.2-3.4.3-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/3.4.2-3.4.3-upgrade-db.sql
index d750216..ff1a5fa 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-4";
 }
 
 __PACKAGE__->register_method(
index d24eda7..07864d5 100644 (file)
@@ -93,6 +93,7 @@ CREATE TRIGGER no_overlapping_deps
     FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
 
 INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1211', :eg_version); -- Dyrcona/rhamby/gmcharlt
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.4.4', :eg_version);
 
 CREATE TABLE config.bib_source (
        id              SERIAL  PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/version-upgrade/3.4.3-3.4.4-upgrade-db.sql b/Open-ILS/src/sql/Pg/version-upgrade/3.4.3-3.4.4-upgrade-db.sql
new file mode 100644 (file)
index 0000000..070d779
--- /dev/null
@@ -0,0 +1,600 @@
+--Upgrade Script for 3.4.3 to 3.4.4
+\set eg_version '''3.4.4'''
+BEGIN;
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.4.4', :eg_version);
+
+SELECT evergreen.upgrade_deps_block_check('1206', :eg_version);
+
+CREATE OR REPLACE FUNCTION
+    action.hold_request_regen_copy_maps(
+        hold_id INTEGER, copy_ids INTEGER[]) RETURNS VOID AS $$
+    DELETE FROM action.hold_copy_map WHERE hold = $1;
+    INSERT INTO action.hold_copy_map (hold, target_copy) SELECT DISTINCT $1, UNNEST($2);
+$$ LANGUAGE SQL;
+
+
+SELECT evergreen.upgrade_deps_block_check('1207', :eg_version);
+
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.alert_text',
+            'Text to be inserted into Print Templates in place of {{includes.alert_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.alert_text';
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.event_text',
+            'Text to be inserted into Print Templates in place of {{includes.event_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.event_text';
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.footer_text',
+            'Text to be inserted into Print Templates in place of {{includes.footer_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.footer_text';
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.header_text',
+            'Text to be inserted into Print Templates in place of {{includes.header_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.header_text';
+UPDATE config.org_unit_setting_type 
+        SET description = oils_i18n_gettext(
+            'circ.staff_client.receipt.notice_text',
+            'Text to be inserted into Print Templates in place of {{includes.notice_text}}',
+            'cwst', 'label') 
+        WHERE name = 'circ.staff_client.receipt.notice_text';
+
+
+SELECT evergreen.upgrade_deps_block_check('1208', :eg_version);
+
+CREATE OR REPLACE FUNCTION action.emergency_closing_stage_2_circ ( circ_closing_entry INT )
+    RETURNS BOOL AS $$
+DECLARE
+    circ            action.circulation%ROWTYPE;
+    e_closing       action.emergency_closing%ROWTYPE;
+    e_c_circ        action.emergency_closing_circulation%ROWTYPE;
+    closing         actor.org_unit_closed%ROWTYPE;
+    adjacent        actor.org_unit_closed%ROWTYPE;
+    bill            money.billing%ROWTYPE;
+    last_bill       money.billing%ROWTYPE;
+    day_number      INT;
+    hoo_close       TIME WITHOUT TIME ZONE;
+    plus_days       INT;
+    avoid_negative  BOOL;
+    extend_grace    BOOL;
+    new_due_date    TEXT;
+BEGIN
+    -- Gather objects involved
+    SELECT  * INTO e_c_circ
+      FROM  action.emergency_closing_circulation
+      WHERE id = circ_closing_entry;
+
+    IF e_c_circ.process_time IS NOT NULL THEN
+        -- Already processed ... moving on
+        RETURN FALSE;
+    END IF;
+
+    SELECT  * INTO e_closing
+      FROM  action.emergency_closing
+      WHERE id = e_c_circ.emergency_closing;
+
+    IF e_closing.process_start_time IS NULL THEN
+        -- Huh... that's odd. And wrong.
+        RETURN FALSE;
+    END IF;
+
+    SELECT  * INTO closing
+      FROM  actor.org_unit_closed
+      WHERE emergency_closing = e_closing.id;
+
+    SELECT  * INTO circ
+      FROM  action.circulation
+      WHERE id = e_c_circ.circulation;
+
+    -- Record the processing
+    UPDATE  action.emergency_closing_circulation
+      SET   original_due_date = circ.due_date,
+            process_time = NOW()
+      WHERE id = circ_closing_entry;
+
+    UPDATE  action.emergency_closing
+      SET   last_update_time = NOW()
+      WHERE id = e_closing.id;
+
+    SELECT value::BOOL INTO avoid_negative FROM actor.org_unit_ancestor_setting('bill.prohibit_negative_balance_on_overdues', circ.circ_lib);
+    SELECT value::BOOL INTO extend_grace FROM actor.org_unit_ancestor_setting('circ.grace.extend', circ.circ_lib);
+
+    new_due_date := evergreen.find_next_open_time( closing.org_unit, circ.due_date, EXTRACT(EPOCH FROM circ.duration)::INT % 86400 > 0 )::TEXT;
+    UPDATE action.circulation SET due_date = new_due_date::TIMESTAMPTZ WHERE id = circ.id;
+
+    -- Now, see if we need to get rid of some fines
+    SELECT  * INTO last_bill
+      FROM  money.billing b
+      WHERE b.xact = circ.id
+            AND NOT b.voided
+            AND b.btype = 1
+      ORDER BY billing_ts DESC
+      LIMIT 1;
+
+    FOR bill IN
+        SELECT  *
+          FROM  money.billing b
+          WHERE b.xact = circ.id
+                AND b.btype = 1
+                AND NOT b.voided
+                AND (
+                    b.billing_ts BETWEEN closing.close_start AND new_due_date::TIMESTAMPTZ
+                    OR (extend_grace AND last_bill.billing_ts <= new_due_date::TIMESTAMPTZ + circ.grace_period)
+                )
+                AND NOT EXISTS (SELECT 1 FROM money.account_adjustment a WHERE a.billing = b.id)
+          ORDER BY billing_ts
+    LOOP
+        IF avoid_negative THEN
+            PERFORM FROM money.materialized_billable_xact_summary WHERE id = circ.id AND balance_owed < bill.amount;
+            EXIT WHEN FOUND; -- We can't go negative, and voiding this bill would do that...
+        END IF;
+
+        UPDATE  money.billing
+          SET   voided = TRUE,
+                void_time = NOW(),
+                note = COALESCE(note,'') || ' :: Voided by emergency closing handler'
+          WHERE id = bill.id;
+    END LOOP;
+    
+    RETURN TRUE;
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION action.emergency_closing_stage_2_reservation ( res_closing_entry INT )
+    RETURNS BOOL AS $$
+DECLARE
+    res             booking.reservation%ROWTYPE;
+    e_closing       action.emergency_closing%ROWTYPE;
+    e_c_res         action.emergency_closing_reservation%ROWTYPE;
+    closing         actor.org_unit_closed%ROWTYPE;
+    adjacent        actor.org_unit_closed%ROWTYPE;
+    bill            money.billing%ROWTYPE;
+    day_number      INT;
+    hoo_close       TIME WITHOUT TIME ZONE;
+    plus_days       INT;
+    avoid_negative  BOOL;
+    new_due_date    TEXT;
+BEGIN
+    -- Gather objects involved
+    SELECT  * INTO e_c_res
+      FROM  action.emergency_closing_reservation
+      WHERE id = res_closing_entry;
+
+    IF e_c_res.process_time IS NOT NULL THEN
+        -- Already processed ... moving on
+        RETURN FALSE;
+    END IF;
+
+    SELECT  * INTO e_closing
+      FROM  action.emergency_closing
+      WHERE id = e_c_res.emergency_closing;
+
+    IF e_closing.process_start_time IS NULL THEN
+        -- Huh... that's odd. And wrong.
+        RETURN FALSE;
+    END IF;
+
+    SELECT  * INTO closing
+      FROM  actor.org_unit_closed
+      WHERE emergency_closing = e_closing.id;
+
+    SELECT  * INTO res
+      FROM  booking.reservation
+      WHERE id = e_c_res.reservation;
+
+    IF res.pickup_lib IS NULL THEN -- Need to be far enough along to have a pickup lib
+        RETURN FALSE;
+    END IF;
+
+    -- Record the processing
+    UPDATE  action.emergency_closing_reservation
+      SET   original_end_time = res.end_time,
+            process_time = NOW()
+      WHERE id = res_closing_entry;
+
+    UPDATE  action.emergency_closing
+      SET   last_update_time = NOW()
+      WHERE id = e_closing.id;
+
+    SELECT value::BOOL INTO avoid_negative FROM actor.org_unit_ancestor_setting('bill.prohibit_negative_balance_on_overdues', res.pickup_lib);
+
+    new_due_date := evergreen.find_next_open_time( closing.org_unit, res.end_time, EXTRACT(EPOCH FROM res.booking_interval)::INT % 86400 > 0 )::TEXT;
+    UPDATE booking.reservation SET end_time = new_due_date::TIMESTAMPTZ WHERE id = res.id;
+
+    -- Now, see if we need to get rid of some fines
+    FOR bill IN
+        SELECT  *
+          FROM  money.billing b
+          WHERE b.xact = res.id
+                AND b.btype = 1
+                AND NOT b.voided
+                AND b.billing_ts BETWEEN closing.close_start AND new_due_date::TIMESTAMPTZ
+                AND NOT EXISTS (SELECT 1 FROM money.account_adjustment a WHERE a.billing = b.id)
+    LOOP
+        IF avoid_negative THEN
+            PERFORM FROM money.materialized_billable_xact_summary WHERE id = res.id AND balance_owed < bill.amount;
+            EXIT WHEN FOUND; -- We can't go negative, and voiding this bill would do that...
+        END IF;
+
+        UPDATE  money.billing
+          SET   voided = TRUE,
+                void_time = NOW(),
+                note = COALESCE(note,'') || ' :: Voided by emergency closing handler'
+          WHERE id = bill.id;
+    END LOOP;
+    
+    RETURN TRUE;
+END;
+$$ LANGUAGE PLPGSQL;
+
+
+
+SELECT evergreen.upgrade_deps_block_check('1209', :eg_version);
+
+CREATE OR REPLACE FUNCTION action.item_user_circ_test( circ_ou INT, match_item BIGINT, match_user INT, renewal BOOL ) RETURNS SETOF action.circ_matrix_test_result AS $func$
+DECLARE
+    user_object             actor.usr%ROWTYPE;
+    standing_penalty        config.standing_penalty%ROWTYPE;
+    item_object             asset.copy%ROWTYPE;
+    item_status_object      config.copy_status%ROWTYPE;
+    item_location_object    asset.copy_location%ROWTYPE;
+    result                  action.circ_matrix_test_result;
+    circ_test               action.found_circ_matrix_matchpoint;
+    circ_matchpoint         config.circ_matrix_matchpoint%ROWTYPE;
+    circ_limit_set          config.circ_limit_set%ROWTYPE;
+    hold_ratio              action.hold_stats%ROWTYPE;
+    penalty_type            TEXT;
+    items_out               INT;
+    context_org_list        INT[];
+    done                    BOOL := FALSE;
+    item_prox               INT;
+    home_prox               INT;
+BEGIN
+    -- Assume success unless we hit a failure condition
+    result.success := TRUE;
+
+    -- Need user info to look up matchpoints
+    SELECT INTO user_object * FROM actor.usr WHERE id = match_user AND NOT deleted;
+
+    -- (Insta)Fail if we couldn't find the user
+    IF user_object.id IS NULL THEN
+        result.fail_part := 'no_user';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+        RETURN;
+    END IF;
+
+    -- Need item info to look up matchpoints
+    SELECT INTO item_object * FROM asset.copy WHERE id = match_item AND NOT deleted;
+
+    -- (Insta)Fail if we couldn't find the item 
+    IF item_object.id IS NULL THEN
+        result.fail_part := 'no_item';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+        RETURN;
+    END IF;
+
+    SELECT INTO circ_test * FROM action.find_circ_matrix_matchpoint(circ_ou, item_object, user_object, renewal);
+
+    circ_matchpoint             := circ_test.matchpoint;
+    result.matchpoint           := circ_matchpoint.id;
+    result.circulate            := circ_matchpoint.circulate;
+    result.duration_rule        := circ_matchpoint.duration_rule;
+    result.recurring_fine_rule  := circ_matchpoint.recurring_fine_rule;
+    result.max_fine_rule        := circ_matchpoint.max_fine_rule;
+    result.hard_due_date        := circ_matchpoint.hard_due_date;
+    result.renewals             := circ_matchpoint.renewals;
+    result.grace_period         := circ_matchpoint.grace_period;
+    result.buildrows            := circ_test.buildrows;
+
+    -- (Insta)Fail if we couldn't find a matchpoint
+    IF circ_test.success = false THEN
+        result.fail_part := 'no_matchpoint';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+        RETURN;
+    END IF;
+
+    -- All failures before this point are non-recoverable
+    -- Below this point are possibly overridable failures
+
+    -- Fail if the user is barred
+    IF user_object.barred IS TRUE THEN
+        result.fail_part := 'actor.usr.barred';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Fail if the item can't circulate
+    IF item_object.circulate IS FALSE THEN
+        result.fail_part := 'asset.copy.circulate';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Fail if the item isn't in a circulateable status on a non-renewal
+    IF NOT renewal AND item_object.status <> 8 AND item_object.status NOT IN (
+        (SELECT id FROM config.copy_status WHERE is_available) ) THEN 
+        result.fail_part := 'asset.copy.status';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    -- Alternately, fail if the item isn't checked out on a renewal
+    ELSIF renewal AND item_object.status <> 1 THEN
+        result.fail_part := 'asset.copy.status';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Fail if the item can't circulate because of the shelving location
+    SELECT INTO item_location_object * FROM asset.copy_location WHERE id = item_object.location;
+    IF item_location_object.circulate IS FALSE THEN
+        result.fail_part := 'asset.copy_location.circulate';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Use Circ OU for penalties and such
+    SELECT INTO context_org_list ARRAY_AGG(id) FROM actor.org_unit_full_path( circ_ou );
+
+    -- Proximity of user's home_ou to circ_ou to see if penalties should be ignored.
+    SELECT INTO home_prox prox FROM actor.org_unit_proximity WHERE from_org = user_object.home_ou AND to_org = circ_ou;
+
+    -- Proximity of user's home_ou to item circ_lib to see if penalties should be ignored.
+    SELECT INTO item_prox prox FROM actor.org_unit_proximity WHERE from_org = user_object.home_ou AND to_org = item_object.circ_lib;
+
+    IF renewal THEN
+        penalty_type = '%RENEW%';
+    ELSE
+        penalty_type = '%CIRC%';
+    END IF;
+
+    FOR standing_penalty IN
+        SELECT  DISTINCT csp.*
+          FROM  actor.usr_standing_penalty usp
+                JOIN config.standing_penalty csp ON (csp.id = usp.standing_penalty)
+          WHERE usr = match_user
+                AND usp.org_unit IN ( SELECT * FROM unnest(context_org_list) )
+                AND (usp.stop_date IS NULL or usp.stop_date > NOW())
+                AND (csp.ignore_proximity IS NULL
+                     OR csp.ignore_proximity < home_prox
+                     OR csp.ignore_proximity < item_prox)
+                AND csp.block_list LIKE penalty_type LOOP
+
+        result.fail_part := standing_penalty.name;
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END LOOP;
+
+    -- Fail if the test is set to hard non-circulating
+    IF circ_matchpoint.circulate IS FALSE THEN
+        result.fail_part := 'config.circ_matrix_test.circulate';
+        result.success := FALSE;
+        done := TRUE;
+        RETURN NEXT result;
+    END IF;
+
+    -- Fail if the total copy-hold ratio is too low
+    IF circ_matchpoint.total_copy_hold_ratio IS NOT NULL THEN
+        SELECT INTO hold_ratio * FROM action.copy_related_hold_stats(match_item);
+        IF hold_ratio.total_copy_ratio IS NOT NULL AND hold_ratio.total_copy_ratio < circ_matchpoint.total_copy_hold_ratio THEN
+            result.fail_part := 'config.circ_matrix_test.total_copy_hold_ratio';
+            result.success := FALSE;
+            done := TRUE;
+            RETURN NEXT result;
+        END IF;
+    END IF;
+
+    -- Fail if the available copy-hold ratio is too low
+    IF circ_matchpoint.available_copy_hold_ratio IS NOT NULL THEN
+        IF hold_ratio.hold_count IS NULL THEN
+            SELECT INTO hold_ratio * FROM action.copy_related_hold_stats(match_item);
+        END IF;
+        IF hold_ratio.available_copy_ratio IS NOT NULL AND hold_ratio.available_copy_ratio < circ_matchpoint.available_copy_hold_ratio THEN
+            result.fail_part := 'config.circ_matrix_test.available_copy_hold_ratio';
+            result.success := FALSE;
+            done := TRUE;
+            RETURN NEXT result;
+        END IF;
+    END IF;
+
+    -- Fail if the user has too many items out by defined limit sets
+    FOR circ_limit_set IN SELECT ccls.* FROM config.circ_limit_set ccls
+      JOIN config.circ_matrix_limit_set_map ccmlsm ON ccmlsm.limit_set = ccls.id
+      WHERE ccmlsm.active AND ( ccmlsm.matchpoint = circ_matchpoint.id OR
+        ( ccmlsm.matchpoint IN (SELECT * FROM unnest(result.buildrows)) AND ccmlsm.fallthrough )
+        ) LOOP
+            IF circ_limit_set.items_out > 0 AND NOT renewal THEN
+                SELECT INTO context_org_list ARRAY_AGG(aou.id)
+                  FROM actor.org_unit_full_path( circ_ou ) aou
+                    JOIN actor.org_unit_type aout ON aou.ou_type = aout.id
+                  WHERE aout.depth >= circ_limit_set.depth;
+                IF circ_limit_set.global THEN
+                    WITH RECURSIVE descendant_depth AS (
+                        SELECT  ou.id,
+                            ou.parent_ou
+                        FROM  actor.org_unit ou
+                        WHERE ou.id IN (SELECT * FROM unnest(context_org_list))
+                            UNION
+                        SELECT  ou.id,
+                            ou.parent_ou
+                        FROM  actor.org_unit ou
+                            JOIN descendant_depth ot ON (ot.id = ou.parent_ou)
+                    ) SELECT INTO context_org_list ARRAY_AGG(ou.id) FROM actor.org_unit ou JOIN descendant_depth USING (id);
+                END IF;
+                SELECT INTO items_out COUNT(DISTINCT circ.id)
+                  FROM action.circulation circ
+                    JOIN asset.copy copy ON (copy.id = circ.target_copy)
+                    LEFT JOIN action.circulation_limit_group_map aclgm ON (circ.id = aclgm.circ)
+                  WHERE circ.usr = match_user
+                    AND circ.circ_lib IN (SELECT * FROM unnest(context_org_list))
+                    AND circ.checkin_time IS NULL
+                    AND circ.xact_finish IS NULL
+                    AND (circ.stop_fines IN ('MAXFINES','LONGOVERDUE') OR circ.stop_fines IS NULL)
+                    AND (copy.circ_modifier IN (SELECT circ_mod FROM config.circ_limit_set_circ_mod_map WHERE limit_set = circ_limit_set.id)
+                        OR copy.location IN (SELECT copy_loc FROM config.circ_limit_set_copy_loc_map WHERE limit_set = circ_limit_set.id)
+                        OR aclgm.limit_group IN (SELECT limit_group FROM config.circ_limit_set_group_map WHERE limit_set = circ_limit_set.id)
+                    );
+                IF items_out >= circ_limit_set.items_out THEN
+                    result.fail_part := 'config.circ_matrix_circ_mod_test';
+                    result.success := FALSE;
+                    done := TRUE;
+                    RETURN NEXT result;
+                END IF;
+            END IF;
+            SELECT INTO result.limit_groups result.limit_groups || ARRAY_AGG(limit_group) FROM config.circ_limit_set_group_map WHERE limit_set = circ_limit_set.id AND NOT check_only;
+    END LOOP;
+
+    -- If we passed everything, return the successful matchpoint
+    IF NOT done THEN
+        RETURN NEXT result;
+    END IF;
+
+    RETURN;
+END;
+$func$ LANGUAGE plpgsql;
+
+
+SELECT evergreen.upgrade_deps_block_check('1211', :eg_version); -- Dyrcona/rhamby/gmcharlt
+
+CREATE OR REPLACE FUNCTION actor.usr_delete(
+       src_usr  IN INTEGER,
+       dest_usr IN INTEGER
+) RETURNS VOID AS $$
+DECLARE
+       old_profile actor.usr.profile%type;
+       old_home_ou actor.usr.home_ou%type;
+       new_profile actor.usr.profile%type;
+       new_home_ou actor.usr.home_ou%type;
+       new_name    text;
+       new_dob     actor.usr.dob%type;
+BEGIN
+       SELECT
+               id || '-PURGED-' || now(),
+               profile,
+               home_ou,
+               dob
+       INTO
+               new_name,
+               old_profile,
+               old_home_ou,
+               new_dob
+       FROM
+               actor.usr
+       WHERE
+               id = src_usr;
+       --
+       -- Quit if no such user
+       --
+       IF old_profile IS NULL THEN
+               RETURN;
+       END IF;
+       --
+       perform actor.usr_purge_data( src_usr, dest_usr );
+       --
+       -- Find the root grp_tree and the root org_unit.  This would be simpler if we 
+       -- could assume that there is only one root.  Theoretically, someday, maybe,
+       -- there could be multiple roots, so we take extra trouble to get the right ones.
+       --
+       SELECT
+               id
+       INTO
+               new_profile
+       FROM
+               permission.grp_ancestors( old_profile )
+       WHERE
+               parent is null;
+       --
+       SELECT
+               id
+       INTO
+               new_home_ou
+       FROM
+               actor.org_unit_ancestors( old_home_ou )
+       WHERE
+               parent_ou is null;
+       --
+       -- Truncate date of birth
+       --
+       IF new_dob IS NOT NULL THEN
+               new_dob := date_trunc( 'year', new_dob );
+       END IF;
+       --
+       UPDATE
+               actor.usr
+               SET
+                       card = NULL,
+                       profile = new_profile,
+                       usrname = new_name,
+                       email = NULL,
+                       passwd = random()::text,
+                       standing = DEFAULT,
+                       ident_type = 
+                       (
+                               SELECT MIN( id )
+                               FROM config.identification_type
+                       ),
+                       ident_value = NULL,
+                       ident_type2 = NULL,
+                       ident_value2 = NULL,
+                       net_access_level = DEFAULT,
+                       photo_url = NULL,
+                       prefix = NULL,
+                       first_given_name = new_name,
+                       second_given_name = NULL,
+                       family_name = new_name,
+                       suffix = NULL,
+                       alias = NULL,
+            guardian = NULL,
+                       day_phone = NULL,
+                       evening_phone = NULL,
+                       other_phone = NULL,
+                       mailing_address = NULL,
+                       billing_address = NULL,
+                       home_ou = new_home_ou,
+                       dob = new_dob,
+                       active = FALSE,
+                       master_account = DEFAULT, 
+                       super_user = DEFAULT,
+                       barred = FALSE,
+                       deleted = TRUE,
+                       juvenile = DEFAULT,
+                       usrgroup = 0,
+                       claims_returned_count = DEFAULT,
+                       credit_forward_balance = DEFAULT,
+                       last_xact_id = DEFAULT,
+                       alert_message = NULL,
+                       pref_prefix = NULL,
+                       pref_first_given_name = NULL,
+                       pref_second_given_name = NULL,
+                       pref_family_name = NULL,
+                       pref_suffix = NULL,
+                       name_keywords = NULL,
+                       create_date = now(),
+                       expire_date = now()
+       WHERE
+               id = src_usr;
+END;
+$$ LANGUAGE plpgsql;
+
+COMMIT;
+
+-- Update auditor tables to catch changes to source tables.
+--   Can be removed/skipped if there were no schema changes.
+SELECT auditor.update_auditors();
index b2b87b6..ea4572b 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_4</p>
 <h2>What is Evergreen?</h2>
 <blockquote>
 <p>
index 0613a13..6804084 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_4");
 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..e2a93a9c2a1b37d1c75fef764c915064bc985191
--- /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 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..c792514 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.4, open-ils-dev@list.georgialibraries.org)
+AM_INIT_AUTOMAKE([OpenILS], [3.4.4])
 AC_REVISION($Revision: 0.1 $)
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_SUBDIRS([Open-ILS/xul/staff_client/external/libmar])