-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 a7839dcd4aac6b5b536f1f40ccd377aef2d38be5
+Author: Dan Wells <dbw2@calvin.edu>
+Date: Mon Feb 24 12:09:57 2014 -0500
+
+ Bump OpenILS.pm version
+
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+
+1 1 Open-ILS/src/perlmods/lib/OpenILS.pm
+
+commit d970a8c7adac852ca5ddfa640b79d3df788ec2ae
+Author: Dan Wells <dbw2@calvin.edu>
+Date: Fri Feb 21 16:34:58 2014 -0500
+
+ Stamping 0868 - 'behind_desk' fixes
+
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+
+ Conflicts:
+ Open-ILS/src/sql/Pg/002.schema.config.sql
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+189 0 Open-ILS/src/sql/Pg/upgrade/0868.schema.all_hold_behind_desk.sql
+0 187 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.all_hold_behind_desk.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0868.schema.all_hold_behind_desk.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.all_hold_behind_desk.sql
+
+commit 1e1abbf21d5d603af25f89da1dfbcc1453d25780
+Author: Bill Erickson <berick@esilibrary.com>
+Date: Tue Feb 18 14:16:40 2014 -0500
+
+ LP#1281744 Aged hold purging column repair
+
+ Add missing non-NULLable "behind_desk" column to
+ action.all_hold_request, which is used during holds deletion and
+ archiving.
+
+ Signed-off-by: Bill Erickson <berick@esilibrary.com>
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+
+1 0 Open-ILS/examples/fm_IDL.xml
+8 4 Open-ILS/src/sql/Pg/090.schema.action.sql
+187 0 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.all_hold_behind_desk.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.all_hold_behind_desk.sql
+
+commit b1e46967f749174499e7a7256e02a35e6888c760
+Author: Dan Wells <dbw2@calvin.edu>
+Date: Thu Feb 20 10:13:07 2014 -0500
+
+ Stamping 0862 - changes for Encode.pm 2.54+
+
+ Also, remove extra XXXX file which someone had preserved by mistake.
+
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+358 0 Open-ILS/src/sql/Pg/upgrade/0862.function.remove_extra_utf8_decodes.sql
+0 95 Open-ILS/src/sql/Pg/upgrade/XXXX.function.prox_adjust.sql
+0 356 Open-ILS/src/sql/Pg/upgrade/XXXX.function.remove_extra_utf8_decodes.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0862.function.remove_extra_utf8_decodes.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.function.prox_adjust.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.function.remove_extra_utf8_decodes.sql
+
+commit e10f6db44f2670e9457b35e5cb4c5b6cd983a629
+Author: Dan Wells <dbw2@calvin.edu>
+Date: Tue Jan 14 14:12:53 2014 -0500
+
+ Upgrade file for Encode.pm 2.54+ changes
+
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+ Signed-off-by: Remington Steed <rjs7@calvin.edu>
+
+356 0 Open-ILS/src/sql/Pg/upgrade/XXXX.function.remove_extra_utf8_decodes.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.function.remove_extra_utf8_decodes.sql
+
+commit 3b6ca22d02b20986bde345672896f04cd902913b
+Author: Dan Scott <dscott@laurentian.ca>
+Date: Fri Oct 25 13:54:35 2013 -0400
+
+ Add pgTAP test for normalized MARC records
+
+ Specifically, we're concerned about ensuring that any changes related to
+ the fix for Encode (requiring the removal of the effectively useless but
+ now erroring decode_utf8()) do not inadvertently change the content of
+ the MARC records on ingest. Because we wouldn't want to have to reingest
+ everything to normalize search, etc.
+
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+
+6 0 Open-ILS/src/sql/Pg/t/README
+13 0 Open-ILS/src/sql/Pg/t/regress/lp1242999_unbreak_new_encode.pg
+ create mode 100644 Open-ILS/src/sql/Pg/t/regress/lp1242999_unbreak_new_encode.pg
+
+commit cb501cc75c9b9df3ad796b237ddaf435dc0e2125
+Author: Dan Scott <dscott@laurentian.ca>
+Date: Thu Oct 24 17:44:00 2013 -0400
+
+ Test Perl Unicode normalization process
+
+ Add some basic tests of our Unicode normalization (and entityization)
+ process.
+
+ Also, 'use utf8;' tells the script that it contains UTF8 characters,
+ not binary bytes, and resolves a test problem.
+
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+1 0 Open-ILS/src/perlmods/t/01-OpenILS-Application.t
+4 1 Open-ILS/src/perlmods/t/14-OpenILS-Utils.t
+
+commit 9fa85a2ebaded8dec0f5695f2eb60847a8760015
+Author: Dan Scott <dscott@laurentian.ca>
+Date: Mon Oct 21 11:58:06 2013 -0400
+
+ Encode.pm change to the UTF8 flag
+
+ In the past, decode_utf8() silently ignored attempts to decode data
+ with the UTF8 flag on. However, Encode.pm changed around 2.53 and
+ resulted in wide-character errors preventing the likes of
+ --load-all-sample from working.
+
+ Since our data should already be UTF8 when it hits these functions, we
+ should not be trying to decode it in the first place.
+
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+0 4 Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm
+3 3 Open-ILS/src/perlmods/lib/OpenILS/Utils/Normalize.pm
+2 10 Open-ILS/src/sql/Pg/002.functions.config.sql
+
+commit a4963a1da50cc38d23bdfb31ad89a6bb867371ef
+Author: Ben Shum <bshum@biblio.org>
+Date: Sat Feb 8 03:42:07 2014 -0500
+
+ LP1125471 - Use label instead of id in recording in-house use prompt
+
+ When recording multiple in-house use with the library settings for threshold
+ prompts, the prompt would bring up the ID as the variable instead of the name
+ of the non-cataloged material. This caused confusion among staff members who
+ might see a message like: "Are you sure you want to mark 9 as having been used
+ 21 times?" (9 being the id, not the name of the non-cataloged material)
+
+ This commit leverages existing code which had been commented out and under
+ the ID to use the label name for the non-cataloged material instead. Also,
+ minor bugfix with a missing semi-colon at the end of the function being used.
+
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+ Signed-off-by: Bill Erickson <berick@esilibrary.com>
+
+1 2 Open-ILS/xul/staff_client/server/circ/in_house_use.js
+
+commit 201eff673138018df4ef9bf83f5916ab24a59790
+Author: Bill Erickson <berick@esilibrary.com>
+Date: Mon Dec 30 13:49:01 2013 -0500
+
+ Vandelay: increase queued item creation timeout
+
+ Allow up to 10 minutes to create each queued vandelay record to avoid
+ timeouts in item creation caused by pathologicaly long-running record
+ match set queries.
+
+ Signed-off-by: Bill Erickson <berick@esilibrary.com>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+2 2 Open-ILS/src/perlmods/lib/OpenILS/Application/Vandelay.pm
+
+commit 7693c0fc9bed8d97de74213c1fed7de796d9816d
+Author: Mike Rylander <mrylander@gmail.com>
+Date: Thu Sep 12 13:26:21 2013 -0400
+
+ Keep standard INNER joins above possible OUTERs
+
+ We always join metabib.record_attr, and we always use an INNER join
+ to the core table, so keep that join first. Likewise with the join
+ to biblio.record_entry. Dynamic joins may be OUTER, though, and while
+ join reordering in Postgres is smart, let's not give it the chance to
+ fail.
+
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
+
+commit 6a208fccd3cc6ecf1838acda03bc9f7723b4ed9c
+Author: Thomas Berezansky <tsbere@mvlc.org>
+Date: Thu Jun 21 11:38:39 2012 -0400
+
+ Assume that future checkins are junk input
+
+ This can happen with SIP2 clients with badly set clocks.
+
+ Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+6 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
+
+commit 52b5b742fc4bfd984decb269fcda21ca787e96af
+Author: Mike Rylander <mrylander@gmail.com>
+Date: Wed Feb 12 17:19:55 2014 -0500
+
+ LP1046026 - Fix duplicate rows in holds pull list
+
+ If there are multiple CAPTURE-blocking penalties we could see dupes on the
+ pull list. This avoids that.
+
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+21 11 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
+
+commit abe60b4a14372ce99826b188912e07c76d88cc13
+Author: Dan Wells <dbw2@calvin.edu>
+Date: Fri Nov 9 16:12:58 2012 -0500
+
+ Prevent odd TPAC base URL redirect
+
+ As it stands, in a default install, if you browse to
+
+ http://yourserver.com/eg/opac
+
+ you are redirected to a login page, and if you login, you then get
+ to the 404 page. This behavior is caused by the fact that *any*
+ URLs which do not match a few select cases are assumed to be
+ "secure" resources, when in fact they might not even exist.
+
+ This commit catches any attempt to browse this 'base' and simply
+ redirects to the "home" page instead.
+
+ This addresses the most obvious and likely 404 of this type, but
+ we might consider catching some other cases (e.g. eg/opac/record/).
+ In addition (or as an alternative), we could also create a function
+ call which simply checks the validity of a URL before we ask the
+ user to login to see it.
+
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+ Signed-off-by: Bill Erickson <berick@esilibrary.com>
+
+5 0 Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
+
+commit d3803a91197c8b8d0eec791016f2c2617c2ef085
+Author: Pasi Kallinen <pasi.kallinen@pttk.fi>
+Date: Thu Sep 12 11:55:36 2013 +0300
+
+ Fix some javascript errors, trying to access nonexistent widgets
+
+ Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi>
+ Signed-off-by: Melissa Ceraso <mceraso@biblio.org>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+3 0 Open-ILS/web/js/ui/default/actor/user/register.js
+
+commit d31f13efa5ae244f4a0aaf520d06cb9edd1c738b
+Author: Mike Rylander <mrylander@gmail.com>
+Date: Fri Feb 7 16:00:01 2014 -0500
+
+ Include calculated 0-prox locations in the stalling interval for op capture
+
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
+
+commit 8c660f9483e3b9285e8178816460530d4b355845
+Author: Mike Rylander <mrylander@gmail.com>
+Date: Tue Jan 21 12:31:13 2014 -0500
+
+ Use copy owning library as the context for finding best hold sort order setting
+
+ In the olden days before best hold sort order and proximity adjustment, there was
+ no need to consider any context org other than "here", because the choices were,
+ essentially, FIFO or Traditional applied within the hard-boundary range. However,
+ now we need to decided whose rule to follow, and the most correct arbiter of that
+ is the owning library of the call number of the copy. We avoid copy circ lib
+ because that can change with floating copies.
+
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+8 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
+
+commit bc0a3bed1fcca684d96a925547b962d597cdc692
+Author: Kyle Tomita <tomitakyle@gmail.com>
+Date: Wed Feb 5 16:23:18 2014 -0800
+
+ LP1155769: Items repeated in tpac display, others not visible
+
+ This was an issue with the query and ordering by a column that was
+ sometimes null (copy_number). Added barcode to be a sort rather than
+ replacing copy_number, per bshum's suggestion. Not replacing allows
+ libraries that use copy_number to continue to use them as well.
+
+ Signed-off-by: Kyle Tomita <tomitakyle@gmail.com>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+2 1 Open-ILS/src/perlmods/lib/OpenILS/Application/AppUtils.pm
+
+commit 9f5d177da1549c5b4dfef310d7f497434580651c
+Author: Bill Erickson <berick@esilibrary.com>
+Date: Thu Jan 9 11:24:08 2014 -0500
+
+ LP#1164720 Prevent empty names in TPAC lists
+
+ Form submission for list creation with an empty name value now prevents
+ list creation and redirects the user to a new error page explaining why
+ list creation failed.
+
+ Signed-off-by: Bill Erickson <berick@esilibrary.com>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+34 23 Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
+44 0 Open-ILS/src/templates/opac/myopac/list/update.tt2
+ create mode 100644 Open-ILS/src/templates/opac/myopac/list/update.tt2
+
+commit 0d9a8ca786553e5eadf31b63eccdc4ed2d9bf3db
+Author: Jeff Godin <jgodin@tadl.org>
+Date: Wed Oct 30 13:20:28 2013 -0400
+
+ Skip duplicate username check when username unchanged
+
+ Changing a username, then changing back to the user's current
+ username results in a duplicate username detection -- a false
+ positive due to the API call finding a user with that username --
+ the current user. This prevents you from saving any other changes
+ you may have made to the user.
+
+ This can be prevented by skipping the duplicate username check if
+ the user is not new and the username in the field matches the
+ username stored in the in-memory Javascript representation of the
+ user.
+
+ There's still a potential corner case which could be avoided by
+ using a new/modified API call to either accept an "except this
+ au.id" argument or to return the au.id of the found user, but I
+ don't see a need for that at this point.
+
+ Signed-off-by: Jeff Godin <jgodin@tadl.org>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+3 1 Open-ILS/web/js/ui/default/actor/user/register.js
+
+commit 100e76adcad2733534c9435218eafffca95f8341
+Author: Ben Shum <bshum@biblio.org>
+Date: Tue Jan 21 13:52:49 2014 -0500
+
+ LP1271218 - clarify how opt-in user notifications are shown in my account
+
+ As reported in LP127128, end users may not need to be shown the message that
+ "No notification preferences are configured" when in fact this message is only
+ displayed when the user opt-in notification settings are not configured.
+
+ So, alter this to only show the table and div when there are settings to be
+ configured and otherwise show nothing.
+
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+ Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+2 4 Open-ILS/src/templates/opac/myopac/prefs_notify.tt2
+
+commit fd3703addeea60323487c7281e380eff85cb04d9
+Author: Ben Shum <bshum@biblio.org>
+Date: Fri Jan 31 15:54:02 2014 -0500
+
+ Revert "Eliminate an annoying and useless warning in the JavaScript Console."
+
+ This reverts commit 88cd3947a1b8394bd0307cbd2f6eedb8e98e3668.
+
+ My fault for picking this in without more testing. This broke things like noted
+ in LP1275074.
+
+53 55 Open-ILS/xul/staff_client/chrome/content/OpenILS/global_util.js
+
+commit 568d36c14d6939845ea2176c795bf0f45ef4bdab
+Author: Dan Scott <dscott@laurentian.ca>
+Date: Mon Jan 27 10:50:31 2014 -0500
+
+ Include RFID docs with full path
+
+ Ben Shum noticed that the RFID docs weren't showing up in the documentation; we
+ need to include the full relative path to the RFID docs.
+
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+1 1 docs/root.txt
+
+commit d5d616410e97c90e0e7645b69263206d51218270
+Author: Dan Wells <dbw2@calvin.edu>
+Date: Thu Jan 23 10:04:01 2014 -0500
+
+ Forward port 2.5.2 upgrade script
+
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+
+234 0 Open-ILS/src/sql/Pg/version-upgrade/2.5.1-2.5.2-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/2.5.1-2.5.2-upgrade-db.sql
+
+commit b552d7cd4eee99cf412512c7d56894af1032b9a9
+Author: Remington Steed <rjs7@calvin.edu>
+Date: Wed Nov 27 09:55:35 2013 -0500
+
+ LP#842991 Reports needs to error when deleting fails
+
+ When attempting to delete a report template, the reports interface
+ incorrectly shows "Action Succeeded" even when it partly fails. If the
+ user performing the delete does not own all the dependent reports and
+ outputs, then the perl function returns 1 to indicate that some were
+ deleted, but not all. However, the javascript that calls that function
+ does not check for a return value of 1. This commit adds that check, and
+ also improves the formatting of the related error messages.
+
+ Signed-off-by: Remington Steed <rjs7@calvin.edu>
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+
+6 2 Open-ILS/web/opac/locale/en-US/reports.dtd
+1 0 Open-ILS/web/reports/oils_rpt_folder_window.js
+
+commit ddc49a508f2401d0ab2a73a5a1bb68a90297b59a
+Author: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
+Date: Mon Oct 28 14:28:37 2013 -0400
+
+ Serials: improve routing slips per Dan Wells' suggestions on LP #1229349
+
+ - Don't repeat the same address for the same user
+ - Label mailing vs. billing
+ - Border to separate mailing and billing addresses
+ - [Also] move some inline styles to a CSS file
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
+ Signed-off-by: Remington Steed <rjs7@calvin.edu>
+
+3 0 Open-ILS/src/templates/serial/print_routing_list_users.tt2
+5 0 Open-ILS/web/css/skin/default/serial.css
+7 6 Open-ILS/web/js/ui/default/serial/print_routing_list_users.js
+
+commit 514bf65c33ed963d56f78c70823e8598b58cbe99
+Author: Steven Callender <stevecallender@esilibrary.com>
+Date: Thu Oct 10 16:09:06 2013 -0400
+
+ Fixed title/author display at checkout for non-pre-cat items.
+
+ Fixed a display problem on checkout where items that were formely pre-cats
+ were still displaying the pre-cat data. Now it will make sure the item is
+ still a pre-cat before using the dummy data.
+
+ Signed-off-by: Steven Callender <stevecallender@esilibrary.com>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+8 6 Open-ILS/xul/staff_client/server/circ/checkout.js
+
+commit 943c243757a70692b8c5d4bc7bac36b0ba7db70e
+Author: Dan Scott <dscott@laurentian.ca>
+Date: Wed Jan 15 22:33:25 2014 -0500
+
+ TPAC: Display authors using inline-block
+
+ Rather than letting author credits wrap willy-nilly, use inline-block mode so
+ that each line will begin with a new author. Devices with constrained screens
+ in particular benefit from this, as the list of authors is much easier to scan,
+ and wider screens can still fit multiple authors on a single line.
+
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+4 1 Open-ILS/src/templates/opac/css/style.css.tt2
+
+commit 2689b143b27812d7dcbc4501fa3eea777b8a747e
+Author: Dan Scott <dscott@laurentian.ca>
+Date: Wed Jan 15 15:25:02 2014 -0500
+
+ TPAC: Use indexed subfields only in author search links
+
+ Addresses LP# 1267231 in which we found that the titles of works in the added
+ author field (such as subfield t) were showing up in the link ahead of the
+ author's birth and death date (if applicable). Now we reserve the link for
+ only the indexed author subfields (depends on whether the name is personal,
+ corporate, or conference, but generally subfields a/b/c/d/e/n/q), then the
+ extra subfields go after the name + dates, then we finally put the relationship
+ into the parentheses after everything else.
+
+ We also simplify the markup so that each name is contained in a single <span
+ class="rdetail_author_div"> element to make it easier to control the layout.
+
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+70 33 Open-ILS/src/templates/opac/parts/record/authors.tt2
+
+commit 8ba3dbe65fab98379058e90fd6fd984ed6d86a3b
+Author: Robert Soulliere <robert.soulliere@mohawkcollege.ca>
+Date: Tue Jan 21 13:04:08 2014 -0500
+
+ Documentation: Update upgrade instructions to 2.5.2
+
+ Update instructions to point ot latest release in 2.5 series.
+ Fix download location which was pointing to preview directory and not the stable release download directory.
+
+ Signed-off-by: Robert Soulliere <robert.soulliere@mohawkcollege.ca>
+
+13 12 docs/installation/server_upgrade.txt
+
+commit d4d4006742e1c0138a11825ec6bb9066fcb014f6
+Author: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
+Date: Thu Nov 14 15:59:55 2013 -0500
+
+ Serials: Batch Receive interface Copy Location widget was inert
+
+ Choosing a value from the Copy Location widget wasn't working. You'd
+ get a default copy location (or the one supplied by the Receive Unit
+ Copy Template) no matter what you set that control too.
+
+ This is fixed. One does not read from XUL menulist element by using its
+ 'value' property.
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
+ Signed-off-by: Remington Steed <rjs7@calvin.edu>
+
+2 1 Open-ILS/xul/staff_client/server/serial/batch_receive.js
+
+commit 35138ea9811f166bf5c01d42879b3b9320d9053f
+Author: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
+Date: Wed Jan 15 17:53:25 2014 -0500
+
+ LP#882586: In Serial Control View, show copy templates owned by ancestors
+
+ When creating/editing distributions, dropdowns for Receive Unit Template
+ and Bind Unit Template now show copy templates owned not only at the
+ distribution's holding lib, but at any of the holding lib's ancestors.
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
+ Signed-off-by: Dan Wells <dbw2@calvin.edu>
+
+17 1 Open-ILS/xul/staff_client/chrome/content/util/fm_utils.js
+13 1 Open-ILS/xul/staff_client/server/serial/sdist_editor.js
+
+commit 79e415a41d831895c81eb3e6611bdbf880b373ec
+Author: Mike Rylander <mrylander@gmail.com>
+Date: Mon Jan 20 11:33:50 2014 -0500
+
+ Pull forward previous upgrade scripts
+
+ Signed-off-by: Mike Rylander <mrylander@gmail.com>
+
+5 0 Open-ILS/src/sql/Pg/version-upgrade/2.4.4-2.4.5-upgrade-db.sql
+193 0 Open-ILS/src/sql/Pg/version-upgrade/2.4.5-2.4.6-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/2.4.4-2.4.5-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/2.4.5-2.4.6-upgrade-db.sql
+
+commit d0096fd02fef055ed4952e5b9e39621b7bf3c2a5
+Author: Dan Scott <dscott@laurentian.ca>
+Date: Sun Jan 19 22:24:07 2014 -0500
+
+ Create 008 - take only the first field/subfield combo
+
+ In the event that there were multiple $a subfields in, say, 044, the create 008
+ function could spew raw XML into the 008 field. Avoid that by taking the primary
+ instance.
+
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+3 3 Open-ILS/xul/staff_client/server/cat/marcedit.js
+
+commit ac4de90cb9397361ef5a35093e2e682b0766a127
+Author: Pasi Kallinen <pasi.kallinen@pttk.fi>
+Date: Thu Jul 18 21:00:31 2013 +0300
+
+ Allow generating fixed data in control field 008 quickly
+
+ Language and country codes come from 041a and 044a,
+ Date1 comes from 260c, and the record date is set to current day.
+
+ Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi>
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+ Conflicts:
+ Open-ILS/xul/staff_client/server/cat/marcedit.js
+
+56 1 Open-ILS/xul/staff_client/server/cat/marcedit.js
+
+commit fc0401eaf30e7dc998d166f9511684356d939516
+Author: Galen Charlton <gmc@esilibrary.com>
+Date: Fri Oct 4 14:44:56 2013 -0700
+
+ LP#1235474: fix failure of authority browse context menu to render
+
+ This patch fixes a situation where if an authority record that would
+ be brought up by the authority browse context menu in the MARC editor
+ lacks an 003 field, the context menu would not be rendered all, meaning
+ that the default context menu (e.g., cut/copy/paste/etc.) would be
+ displayed instead.
+
+ Signed-off-by: Galen Charlton <gmc@esilibrary.com>
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+4 1 Open-ILS/xul/staff_client/server/cat/marcedit.js
+
+commit b896b490a45f3abc8a94ee173028428ca432bd4c
+Author: Pasi Kallinen <pasi.kallinen@pttk.fi>
+Date: Tue Jun 18 09:01:30 2013 +0300
+
+ Move hard-coded style out of the copy status layout.
+
+ Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi>
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+5 5 Open-ILS/xul/staff_client/server/circ/copy_status_overlay.xul
+6 0 Open-ILS/xul/staff_client/server/skin/circ.css
+
+commit e2d8c946e1a360641736abb5efd0720caa80033f
+Author: Elliot Voris <evoris@slcconline.edu>
+Date: Mon Dec 9 12:57:20 2013 -0600
+
+ LP104785: Selfcheck needs to be run with HTTPS
+
+ Redirect attempts to connect to the self-check via HTTP to the more secure
+ HTTPS instead. Addresses this bug reported in launchpad:
+ https://bugs.launchpad.net/evergreen/+bug/1047485
+
+ Based on work for Apache 2.2 by Michael Peters <mrpeters@library.in.gov>,
+ updated and applied to 2.4 by Elliot Voris.
+
+ Signed-off-by: Elliot Voris <evoris@slcconline.edu>
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+6 0 Open-ILS/examples/apache/eg_vhost.conf.in
+6 0 Open-ILS/examples/apache_24/eg_vhost.conf.in
+
+commit b080b36bfbbf8e93779cec663cfb31c4b05fa97d
+Author: Dan Scott <dscott@laurentian.ca>
+Date: Sun Jan 19 13:52:20 2014 -0500
+
+ More explicit database configuration instructions
+
+ These README tweaks should help new folk install Evergreen with
+ a few less hurdles.
+
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+37 7 docs/installation/server_installation.txt
+
+commit cb39d6eeef313d9a68a4ffddbd255e05ecc01594
+Author: Dan Scott <dscott@laurentian.ca>
+Date: Sun Jan 19 11:30:57 2014 -0500
+
+ Fedora: Net::SSLeay 1.55 is too new for Net::HTTPS::Any
+
+ Although Net::HTTPS:Any wants Net:SSLeay 1.30 or later, 1.55 is apparently too
+ late, or something. The alternative is Crypt::SSLeay, which seems to work, so
+ let's go with that.
+
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+1 0 Open-ILS/src/extras/install/Makefile.fedora
+
+commit ba84e2b86b28aac8d1c0d77a1fffe7500069747b
+Author: Bill Erickson <berick@esilibrary.com>
+Date: Thu Jan 16 13:03:34 2014 -0500
+
+ LP#1269884 repair MVR id / doc_id thinko
+
+ Signed-off-by: Bill Erickson <berick@esilibrary.com>
+ Signed-off-by: Ben Shum <bshum@biblio.org>
+
+1 1 Open-ILS/web/js/ui/default/circ/selfcheck/selfcheck.js
+
+commit 60e0f5af07d1b0bd606526c6284e8e8c7e749c94
+Author: Pasi Kallinen <pasi.kallinen@pttk.fi>
+Date: Fri Jun 28 08:47:11 2013 +0300
+
+ Replace deprecated javascript escape() with encodeURIComponent()
+
+ Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi>
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+ Conflicts:
+ Open-ILS/xul/staff_client/chrome/content/auth/controller.js
+ Open-ILS/xul/staff_client/chrome/content/util/error.js
+ Open-ILS/xul/staff_client/chrome/content/util/print.js
+ Open-ILS/xul/staff_client/server/admin/offline_manage_xacts.js
+ Open-ILS/xul/staff_client/server/circ/print_list_template_editor.js
+
+ Signed-off-by: Dan Scott <dscott@laurentian.ca>
+
+6 6 Open-ILS/web/js/dojo/openils/BibTemplate.js
+1 1 Open-ILS/web/js/dojo/openils/XUL.js
+1 1 Open-ILS/web/js/ui/default/acq/common/li_table.js
+1 1 Open-ILS/web/js/ui/default/conify/global/config/z3950_source.js
+1 1 Open-ILS/web/js/ui/default/conify/global/vandelay/import_bib_trash_group.js
+5 5 Open-ILS/web/opac/common/js/dtree.js
+1 1 Open-ILS/web/opac/skin/default/js/result_common.js
+1 1 Open-ILS/xul/staff_client/chrome/content/OpenILS/util_overlay_chrome.xul
+1 1 Open-ILS/xul/staff_client/chrome/content/OpenILS/util_overlay_offline.xul
+14 14 Open-ILS/xul/staff_client/chrome/content/cat/opac.js
+2 2 Open-ILS/xul/staff_client/chrome/content/main/main.js
+17 18 Open-ILS/xul/staff_client/chrome/content/main/menu.js
+2 2 Open-ILS/xul/staff_client/chrome/content/util/error.js
+3 3 Open-ILS/xul/staff_client/chrome/content/util/list.js
+0 10 Open-ILS/xul/staff_client/chrome/content/util/network.js
+1 1 Open-ILS/xul/staff_client/server/OpenILS/util_overlay.xul
+14 25 Open-ILS/xul/staff_client/server/admin/offline_manage_xacts.js
+1 1 Open-ILS/xul/staff_client/server/cat/bucketz39_dialog.js
+0 2 Open-ILS/xul/staff_client/server/cat/copy_browser.js
+0 1 Open-ILS/xul/staff_client/server/cat/copy_editor.js
+0 3 Open-ILS/xul/staff_client/server/cat/record_buckets.js
+0 1 Open-ILS/xul/staff_client/server/cat/spine_labels.js
+1 3 Open-ILS/xul/staff_client/server/cat/util.js
+0 3 Open-ILS/xul/staff_client/server/cat/z3950.js
+0 2 Open-ILS/xul/staff_client/server/circ/circ_brief.xul
+0 2 Open-ILS/xul/staff_client/server/circ/copy_status.js
+1 1 Open-ILS/xul/staff_client/server/circ/util.js
+2 2 Open-ILS/xul/staff_client/server/patron/barcode_entry.xul
+4 17 Open-ILS/xul/staff_client/server/patron/display.js
+2 22 Open-ILS/xul/staff_client/server/patron/holds.js
+2 8 Open-ILS/xul/staff_client/server/patron/info_group.js
+0 2 Open-ILS/xul/staff_client/server/patron/items.js
+0 2 Open-ILS/xul/staff_client/server/serial/manage_dists.js
+0 2 Open-ILS/xul/staff_client/server/serial/manage_subs.js
+0 1 Open-ILS/xul/staff_client/server/serial/sdist_editor.js
+0 1 Open-ILS/xul/staff_client/server/serial/sitem_editor.js
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 "2-5-3";
}
__PACKAGE__->register_method(
FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0868', :eg_version); -- berick/dbwells
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('2.5.3', :eg_version);
CREATE TABLE config.bib_source (
id SERIAL PRIMARY KEY,
--- /dev/null
+--Upgrade Script for 2.5.2 to 2.5.3
+\set eg_version '''2.5.3'''
+BEGIN;
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('2.5.3', :eg_version);
+
+-- this file is a duplicate of 0851, moved up for better backport clarity
+
+-- check whether patch can be applied
+SELECT evergreen.upgrade_deps_block_check('0862', :eg_version);
+
+CREATE OR REPLACE FUNCTION evergreen.maintain_901 () RETURNS TRIGGER AS $func$
+use strict;
+use MARC::Record;
+use MARC::File::XML (BinaryEncoding => 'UTF-8');
+use MARC::Charset;
+use Encode;
+use Unicode::Normalize;
+
+MARC::Charset->assume_unicode(1);
+
+my $schema = $_TD->{table_schema};
+my $marc = MARC::Record->new_from_xml($_TD->{new}{marc});
+
+my @old901s = $marc->field('901');
+$marc->delete_fields(@old901s);
+
+if ($schema eq 'biblio') {
+ my $tcn_value = $_TD->{new}{tcn_value};
+
+ # Set TCN value to record ID?
+ my $id_as_tcn = spi_exec_query("
+ SELECT enabled
+ FROM config.global_flag
+ WHERE name = 'cat.bib.use_id_for_tcn'
+ ");
+ if (($id_as_tcn->{processed}) && $id_as_tcn->{rows}[0]->{enabled} eq 't') {
+ $tcn_value = $_TD->{new}{id};
+ $_TD->{new}{tcn_value} = $tcn_value;
+ }
+
+ my $new_901 = MARC::Field->new("901", " ", " ",
+ "a" => $tcn_value,
+ "b" => $_TD->{new}{tcn_source},
+ "c" => $_TD->{new}{id},
+ "t" => $schema
+ );
+
+ if ($_TD->{new}{owner}) {
+ $new_901->add_subfields("o" => $_TD->{new}{owner});
+ }
+
+ if ($_TD->{new}{share_depth}) {
+ $new_901->add_subfields("d" => $_TD->{new}{share_depth});
+ }
+
+ $marc->append_fields($new_901);
+} elsif ($schema eq 'authority') {
+ my $new_901 = MARC::Field->new("901", " ", " ",
+ "c" => $_TD->{new}{id},
+ "t" => $schema,
+ );
+ $marc->append_fields($new_901);
+} elsif ($schema eq 'serial') {
+ my $new_901 = MARC::Field->new("901", " ", " ",
+ "c" => $_TD->{new}{id},
+ "t" => $schema,
+ "o" => $_TD->{new}{owning_lib},
+ );
+
+ if ($_TD->{new}{record}) {
+ $new_901->add_subfields("r" => $_TD->{new}{record});
+ }
+
+ $marc->append_fields($new_901);
+} else {
+ my $new_901 = MARC::Field->new("901", " ", " ",
+ "c" => $_TD->{new}{id},
+ "t" => $schema,
+ );
+ $marc->append_fields($new_901);
+}
+
+my $xml = $marc->as_xml_record();
+$xml =~ s/\n//sgo;
+$xml =~ s/^<\?xml.+\?\s*>//go;
+$xml =~ s/>\s+</></go;
+$xml =~ s/\p{Cc}//go;
+
+# Embed a version of OpenILS::Application::AppUtils->entityize()
+# to avoid having to set PERL5LIB for PostgreSQL as well
+
+$xml = NFC($xml);
+
+# Convert raw ampersands to entities
+$xml =~ s/&(?!\S+;)/&/gso;
+
+# Convert Unicode characters to entities
+$xml =~ s/([\x{0080}-\x{fffd}])/sprintf('&#x%X;',ord($1))/sgoe;
+
+$xml =~ s/[\x00-\x1f]//go;
+$_TD->{new}{marc} = $xml;
+
+return "MODIFY";
+$func$ LANGUAGE PLPERLU;
+
+CREATE OR REPLACE FUNCTION maintain_control_numbers() RETURNS TRIGGER AS $func$
+use strict;
+use MARC::Record;
+use MARC::File::XML (BinaryEncoding => 'UTF-8');
+use MARC::Charset;
+use Encode;
+use Unicode::Normalize;
+
+MARC::Charset->assume_unicode(1);
+
+my $record = MARC::Record->new_from_xml($_TD->{new}{marc});
+my $schema = $_TD->{table_schema};
+my $rec_id = $_TD->{new}{id};
+
+# Short-circuit if maintaining control numbers per MARC21 spec is not enabled
+my $enable = spi_exec_query("SELECT enabled FROM config.global_flag WHERE name = 'cat.maintain_control_numbers'");
+if (!($enable->{processed}) or $enable->{rows}[0]->{enabled} eq 'f') {
+ return;
+}
+
+# Get the control number identifier from an OU setting based on $_TD->{new}{owner}
+my $ou_cni = 'EVRGRN';
+
+my $owner;
+if ($schema eq 'serial') {
+ $owner = $_TD->{new}{owning_lib};
+} else {
+ # are.owner and bre.owner can be null, so fall back to the consortial setting
+ $owner = $_TD->{new}{owner} || 1;
+}
+
+my $ous_rv = spi_exec_query("SELECT value FROM actor.org_unit_ancestor_setting('cat.marc_control_number_identifier', $owner)");
+if ($ous_rv->{processed}) {
+ $ou_cni = $ous_rv->{rows}[0]->{value};
+ $ou_cni =~ s/"//g; # Stupid VIM syntax highlighting"
+} else {
+ # Fall back to the shortname of the OU if there was no OU setting
+ $ous_rv = spi_exec_query("SELECT shortname FROM actor.org_unit WHERE id = $owner");
+ if ($ous_rv->{processed}) {
+ $ou_cni = $ous_rv->{rows}[0]->{shortname};
+ }
+}
+
+my ($create, $munge) = (0, 0);
+
+my @scns = $record->field('035');
+
+foreach my $id_field ('001', '003') {
+ my $spec_value;
+ my @controls = $record->field($id_field);
+
+ if ($id_field eq '001') {
+ $spec_value = $rec_id;
+ } else {
+ $spec_value = $ou_cni;
+ }
+
+ # Create the 001/003 if none exist
+ if (scalar(@controls) == 1) {
+ # Only one field; check to see if we need to munge it
+ unless (grep $_->data() eq $spec_value, @controls) {
+ $munge = 1;
+ }
+ } else {
+ # Delete the other fields, as with more than 1 001/003 we do not know which 003/001 to match
+ foreach my $control (@controls) {
+ $record->delete_field($control);
+ }
+ $record->insert_fields_ordered(MARC::Field->new($id_field, $spec_value));
+ $create = 1;
+ }
+}
+
+my $cn = $record->field('001')->data();
+# Special handling of OCLC numbers, often found in records that lack 003
+if ($cn =~ /^o(c[nm]|n)\d/) {
+ $cn =~ s/^o(c[nm]|n)0*(\d+)/$2/;
+ $record->field('003')->data('OCoLC');
+ $create = 0;
+}
+
+# Now, if we need to munge the 001, we will first push the existing 001/003
+# into the 035; but if the record did not have one (and one only) 001 and 003
+# to begin with, skip this process
+if ($munge and not $create) {
+
+ my $scn = "(" . $record->field('003')->data() . ")" . $cn;
+
+ # Do not create duplicate 035 fields
+ unless (grep $_->subfield('a') eq $scn, @scns) {
+ $record->insert_fields_ordered(MARC::Field->new('035', '', '', 'a' => $scn));
+ }
+}
+
+# Set the 001/003 and update the MARC
+if ($create or $munge) {
+ $record->field('001')->data($rec_id);
+ $record->field('003')->data($ou_cni);
+
+ my $xml = $record->as_xml_record();
+ $xml =~ s/\n//sgo;
+ $xml =~ s/^<\?xml.+\?\s*>//go;
+ $xml =~ s/>\s+</></go;
+ $xml =~ s/\p{Cc}//go;
+
+ # Embed a version of OpenILS::Application::AppUtils->entityize()
+ # to avoid having to set PERL5LIB for PostgreSQL as well
+
+ $xml = NFC($xml);
+
+ # Convert raw ampersands to entities
+ $xml =~ s/&(?!\S+;)/&/gso;
+
+ # Convert Unicode characters to entities
+ $xml =~ s/([\x{0080}-\x{fffd}])/sprintf('&#x%X;',ord($1))/sgoe;
+
+ $xml =~ s/[\x00-\x1f]//go;
+ $_TD->{new}{marc} = $xml;
+
+ return "MODIFY";
+}
+
+return;
+$func$ LANGUAGE PLPERLU;
+
+CREATE OR REPLACE FUNCTION public.naco_normalize( TEXT, TEXT ) RETURNS TEXT AS $func$
+
+ use strict;
+ use Unicode::Normalize;
+ use Encode;
+
+ my $str = shift;
+ my $sf = shift;
+
+ # Apply NACO normalization to input string; based on
+ # http://www.loc.gov/catdir/pcc/naco/SCA_PccNormalization_Final_revised.pdf
+ #
+ # Note that unlike a strict reading of the NACO normalization rules,
+ # output is returned as lowercase instead of uppercase for compatibility
+ # with previous versions of the Evergreen naco_normalize routine.
+
+ # Convert to upper-case first; even though final output will be lowercase, doing this will
+ # ensure that the German eszett (ß) and certain ligatures (ff, fi, ffl, etc.) will be handled correctly.
+ # If there are any bugs in Perl's implementation of upcasing, they will be passed through here.
+ $str = uc $str;
+
+ # remove non-filing strings
+ $str =~ s/\x{0098}.*?\x{009C}//g;
+
+ $str = NFKD($str);
+
+ # additional substitutions - 3.6.
+ $str =~ s/\x{00C6}/AE/g;
+ $str =~ s/\x{00DE}/TH/g;
+ $str =~ s/\x{0152}/OE/g;
+ $str =~ tr/\x{0110}\x{00D0}\x{00D8}\x{0141}\x{2113}\x{02BB}\x{02BC}]['/DDOLl/d;
+
+ # transformations based on Unicode category codes
+ $str =~ s/[\p{Cc}\p{Cf}\p{Co}\p{Cs}\p{Lm}\p{Mc}\p{Me}\p{Mn}]//g;
+
+ if ($sf && $sf =~ /^a/o) {
+ my $commapos = index($str, ',');
+ if ($commapos > -1) {
+ if ($commapos != length($str) - 1) {
+ $str =~ s/,/\x07/; # preserve first comma
+ }
+ }
+ }
+
+ # since we've stripped out the control characters, we can now
+ # use a few as placeholders temporarily
+ $str =~ tr/+&@\x{266D}\x{266F}#/\x01\x02\x03\x04\x05\x06/;
+ $str =~ s/[\p{Pc}\p{Pd}\p{Pe}\p{Pf}\p{Pi}\p{Po}\p{Ps}\p{Sk}\p{Sm}\p{So}\p{Zl}\p{Zp}\p{Zs}]/ /g;
+ $str =~ tr/\x01\x02\x03\x04\x05\x06\x07/+&@\x{266D}\x{266F}#,/;
+
+ # decimal digits
+ $str =~ tr/\x{0660}-\x{0669}\x{06F0}-\x{06F9}\x{07C0}-\x{07C9}\x{0966}-\x{096F}\x{09E6}-\x{09EF}\x{0A66}-\x{0A6F}\x{0AE6}-\x{0AEF}\x{0B66}-\x{0B6F}\x{0BE6}-\x{0BEF}\x{0C66}-\x{0C6F}\x{0CE6}-\x{0CEF}\x{0D66}-\x{0D6F}\x{0E50}-\x{0E59}\x{0ED0}-\x{0ED9}\x{0F20}-\x{0F29}\x{1040}-\x{1049}\x{1090}-\x{1099}\x{17E0}-\x{17E9}\x{1810}-\x{1819}\x{1946}-\x{194F}\x{19D0}-\x{19D9}\x{1A80}-\x{1A89}\x{1A90}-\x{1A99}\x{1B50}-\x{1B59}\x{1BB0}-\x{1BB9}\x{1C40}-\x{1C49}\x{1C50}-\x{1C59}\x{A620}-\x{A629}\x{A8D0}-\x{A8D9}\x{A900}-\x{A909}\x{A9D0}-\x{A9D9}\x{AA50}-\x{AA59}\x{ABF0}-\x{ABF9}\x{FF10}-\x{FF19}/0-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-9/;
+
+ # intentionally skipping step 8 of the NACO algorithm; if the string
+ # gets normalized away, that's fine.
+
+ # leading and trailing spaces
+ $str =~ s/\s+/ /g;
+ $str =~ s/^\s+//;
+ $str =~ s/\s+$//g;
+
+ return lc $str;
+$func$ LANGUAGE 'plperlu' STRICT IMMUTABLE;
+
+-- Currently, the only difference from naco_normalize is that search_normalize
+-- turns apostrophes into spaces, while naco_normalize collapses them.
+CREATE OR REPLACE FUNCTION public.search_normalize( TEXT, TEXT ) RETURNS TEXT AS $func$
+
+ use strict;
+ use Unicode::Normalize;
+ use Encode;
+
+ my $str = shift;
+ my $sf = shift;
+
+ # Apply NACO normalization to input string; based on
+ # http://www.loc.gov/catdir/pcc/naco/SCA_PccNormalization_Final_revised.pdf
+ #
+ # Note that unlike a strict reading of the NACO normalization rules,
+ # output is returned as lowercase instead of uppercase for compatibility
+ # with previous versions of the Evergreen naco_normalize routine.
+
+ # Convert to upper-case first; even though final output will be lowercase, doing this will
+ # ensure that the German eszett (ß) and certain ligatures (ff, fi, ffl, etc.) will be handled correctly.
+ # If there are any bugs in Perl's implementation of upcasing, they will be passed through here.
+ $str = uc $str;
+
+ # remove non-filing strings
+ $str =~ s/\x{0098}.*?\x{009C}//g;
+
+ $str = NFKD($str);
+
+ # additional substitutions - 3.6.
+ $str =~ s/\x{00C6}/AE/g;
+ $str =~ s/\x{00DE}/TH/g;
+ $str =~ s/\x{0152}/OE/g;
+ $str =~ tr/\x{0110}\x{00D0}\x{00D8}\x{0141}\x{2113}\x{02BB}\x{02BC}][/DDOLl/d;
+
+ # transformations based on Unicode category codes
+ $str =~ s/[\p{Cc}\p{Cf}\p{Co}\p{Cs}\p{Lm}\p{Mc}\p{Me}\p{Mn}]//g;
+
+ if ($sf && $sf =~ /^a/o) {
+ my $commapos = index($str, ',');
+ if ($commapos > -1) {
+ if ($commapos != length($str) - 1) {
+ $str =~ s/,/\x07/; # preserve first comma
+ }
+ }
+ }
+
+ # since we've stripped out the control characters, we can now
+ # use a few as placeholders temporarily
+ $str =~ tr/+&@\x{266D}\x{266F}#/\x01\x02\x03\x04\x05\x06/;
+ $str =~ s/[\p{Pc}\p{Pd}\p{Pe}\p{Pf}\p{Pi}\p{Po}\p{Ps}\p{Sk}\p{Sm}\p{So}\p{Zl}\p{Zp}\p{Zs}]/ /g;
+ $str =~ tr/\x01\x02\x03\x04\x05\x06\x07/+&@\x{266D}\x{266F}#,/;
+
+ # decimal digits
+ $str =~ tr/\x{0660}-\x{0669}\x{06F0}-\x{06F9}\x{07C0}-\x{07C9}\x{0966}-\x{096F}\x{09E6}-\x{09EF}\x{0A66}-\x{0A6F}\x{0AE6}-\x{0AEF}\x{0B66}-\x{0B6F}\x{0BE6}-\x{0BEF}\x{0C66}-\x{0C6F}\x{0CE6}-\x{0CEF}\x{0D66}-\x{0D6F}\x{0E50}-\x{0E59}\x{0ED0}-\x{0ED9}\x{0F20}-\x{0F29}\x{1040}-\x{1049}\x{1090}-\x{1099}\x{17E0}-\x{17E9}\x{1810}-\x{1819}\x{1946}-\x{194F}\x{19D0}-\x{19D9}\x{1A80}-\x{1A89}\x{1A90}-\x{1A99}\x{1B50}-\x{1B59}\x{1BB0}-\x{1BB9}\x{1C40}-\x{1C49}\x{1C50}-\x{1C59}\x{A620}-\x{A629}\x{A8D0}-\x{A8D9}\x{A900}-\x{A909}\x{A9D0}-\x{A9D9}\x{AA50}-\x{AA59}\x{ABF0}-\x{ABF9}\x{FF10}-\x{FF19}/0-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-9/;
+
+ # intentionally skipping step 8 of the NACO algorithm; if the string
+ # gets normalized away, that's fine.
+
+ # leading and trailing spaces
+ $str =~ s/\s+/ /g;
+ $str =~ s/^\s+//;
+ $str =~ s/\s+$//g;
+
+ return lc $str;
+$func$ LANGUAGE 'plperlu' STRICT IMMUTABLE;
+
+-- add missing behind_desk column
+
+
+SELECT evergreen.upgrade_deps_block_check('0868', :eg_version);
+
+CREATE OR REPLACE VIEW action.all_hold_request AS
+ SELECT DISTINCT
+ COALESCE(a.post_code, b.post_code) AS usr_post_code,
+ p.home_ou AS usr_home_ou,
+ p.profile AS usr_profile,
+ EXTRACT(YEAR FROM p.dob)::INT AS usr_birth_year,
+ CAST(ahr.requestor <> ahr.usr AS BOOLEAN) AS staff_placed,
+ ahr.id,
+ ahr.request_time,
+ ahr.capture_time,
+ ahr.fulfillment_time,
+ ahr.checkin_time,
+ ahr.return_time,
+ ahr.prev_check_time,
+ ahr.expire_time,
+ ahr.cancel_time,
+ ahr.cancel_cause,
+ ahr.cancel_note,
+ ahr.target,
+ ahr.current_copy,
+ ahr.fulfillment_staff,
+ ahr.fulfillment_lib,
+ ahr.request_lib,
+ ahr.selection_ou,
+ ahr.selection_depth,
+ ahr.pickup_lib,
+ ahr.hold_type,
+ ahr.holdable_formats,
+ CASE
+ WHEN ahr.phone_notify IS NULL THEN FALSE
+ WHEN ahr.phone_notify = '' THEN FALSE
+ ELSE TRUE
+ END AS phone_notify,
+ ahr.email_notify,
+ CASE
+ WHEN ahr.sms_notify IS NULL THEN FALSE
+ WHEN ahr.sms_notify = '' THEN FALSE
+ ELSE TRUE
+ END AS sms_notify,
+ ahr.frozen,
+ ahr.thaw_date,
+ ahr.shelf_time,
+ ahr.cut_in_line,
+ ahr.mint_condition,
+ ahr.shelf_expire_time,
+ ahr.current_shelf_lib,
+ ahr.behind_desk
+ FROM action.hold_request ahr
+ JOIN actor.usr p ON (ahr.usr = p.id)
+ LEFT JOIN actor.usr_address a ON (p.mailing_address = a.id)
+ LEFT JOIN actor.usr_address b ON (p.billing_address = b.id)
+ UNION ALL
+ SELECT
+ usr_post_code,
+ usr_home_ou,
+ usr_profile,
+ usr_birth_year,
+ staff_placed,
+ id,
+ request_time,
+ capture_time,
+ fulfillment_time,
+ checkin_time,
+ return_time,
+ prev_check_time,
+ expire_time,
+ cancel_time,
+ cancel_cause,
+ cancel_note,
+ target,
+ current_copy,
+ fulfillment_staff,
+ fulfillment_lib,
+ request_lib,
+ selection_ou,
+ selection_depth,
+ pickup_lib,
+ hold_type,
+ holdable_formats,
+ phone_notify,
+ email_notify,
+ sms_notify,
+ frozen,
+ thaw_date,
+ shelf_time,
+ cut_in_line,
+ mint_condition,
+ shelf_expire_time,
+ current_shelf_lib,
+ behind_desk
+ FROM action.aged_hold_request;
+
+
+
+CREATE OR REPLACE FUNCTION action.age_hold_on_delete () RETURNS TRIGGER AS $$
+DECLARE
+BEGIN
+ -- Archive a copy of the old row to action.aged_hold_request
+
+ INSERT INTO action.aged_hold_request
+ (usr_post_code,
+ usr_home_ou,
+ usr_profile,
+ usr_birth_year,
+ staff_placed,
+ id,
+ request_time,
+ capture_time,
+ fulfillment_time,
+ checkin_time,
+ return_time,
+ prev_check_time,
+ expire_time,
+ cancel_time,
+ cancel_cause,
+ cancel_note,
+ target,
+ current_copy,
+ fulfillment_staff,
+ fulfillment_lib,
+ request_lib,
+ selection_ou,
+ selection_depth,
+ pickup_lib,
+ hold_type,
+ holdable_formats,
+ phone_notify,
+ email_notify,
+ sms_notify,
+ frozen,
+ thaw_date,
+ shelf_time,
+ cut_in_line,
+ mint_condition,
+ shelf_expire_time,
+ current_shelf_lib,
+ behind_desk)
+ SELECT
+ usr_post_code,
+ usr_home_ou,
+ usr_profile,
+ usr_birth_year,
+ staff_placed,
+ id,
+ request_time,
+ capture_time,
+ fulfillment_time,
+ checkin_time,
+ return_time,
+ prev_check_time,
+ expire_time,
+ cancel_time,
+ cancel_cause,
+ cancel_note,
+ target,
+ current_copy,
+ fulfillment_staff,
+ fulfillment_lib,
+ request_lib,
+ selection_ou,
+ selection_depth,
+ pickup_lib,
+ hold_type,
+ holdable_formats,
+ phone_notify,
+ email_notify,
+ sms_notify,
+ frozen,
+ thaw_date,
+ shelf_time,
+ cut_in_line,
+ mint_condition,
+ shelf_expire_time,
+ current_shelf_lib,
+ behind_desk
+ FROM action.all_hold_request WHERE id = OLD.id;
+
+ RETURN OLD;
+END;
+$$ LANGUAGE 'plpgsql';
+
+
+COMMIT;
<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_2_5_3</p>
<h2>What is Evergreen?</h2>
<blockquote>
<p>
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_2_5_3");
pref("open-ils.repository.author","$Author$");
pref("open-ils.repository.revision","$Revision$");
pref("open-ils.repository.date","$Date$");
; 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 "2.5"
!define PRODUCT_INSTALL_TAG "${PRODUCT_TAG}"
!define UI_IMAGESET "beta"
;!define UI_IMAGESET "release"
+++ /dev/null
-docs/installation/server_installation.txt
\ No newline at end of file
--- /dev/null
+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 and Fedora 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/downloads
+
+Developers working directly with the source code from the Git repository,
+rather than an official release tarball, must install some extra packages
+and perform one step before they can proceed with the `./configure` step.
+
+As the *root* Linux account, install the following packages:
+
+ * autoconf
+ * automake
+ * libtool
+
+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
+------------------------------------------------------------------------------
+
+After running `make install`, developers also 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/.
+------------------------------------------------------------------------------
+
+Installing prerequisites
+------------------------
+
+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 (2.2.1 or later).
+ You can download OpenSRF releases from http://evergreen-ils.org/opensrf-downloads/
+2. On many distributions, it is necessary to install PostgreSQL 9 from external
+ repositories.
++
+ * On Debian Squeeze, open `/etc/apt/sources.list` in a text editor as the
+ *root* Linux account and add the following line:
++
+[source, bash]
+------------------------------------------------------------------------------
+deb http://backports.debian.org/debian-backports squeeze-backports main contrib
+------------------------------------------------------------------------------
++
+ * On Ubuntu Lucid, you can use a PPA (personal package archive), which are
+ package sources hosted on Launchpad. The one most commonly used by Evergreen
+ Community members is maintained by Martin Pitt, who also maintains the
+ official PostgreSQL packages for Ubuntu. As the *root* Linux account, issue
+ the following commands to add the PPA source:
++
+[source, bash]
+------------------------------------------------------------------------------
+apt-get install python-software-properties
+add-apt-repository ppa:pitti/postgresql
+------------------------------------------------------------------------------
++
+ * Ubuntu Precise comes with PostgreSQL 9, so no additional steps are required.
++
+ * Fedora comes with PostgreSQL 9, so no additional steps are required.
++
+3. On Debian and Ubuntu, run `aptitude update` as the *root* Linux account to
+ retrieve the new packages from the backports repository.
+4. Issue the following commands as the *root* Linux account to install
+ prerequisites using the `Makefile.install` prerequisite installer,
+ substituting `debian-squeeze`, `fedora`, `ubuntu-lucid`, or
+ `ubuntu-precise` for <osname> below:
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>
+------------------------------------------------------------------------------
++
+5. Add the libdbi-libdbd libraries to the system dynamic library path by
+ issuing the following commands as the *root* Linux account:
++
+[NOTE]
+You should skip this step if installing on Ubuntu Precise. The ubuntu-precise
+target uses libdbd-pgsql from packages.
++
+.Debian / Ubuntu Lucid
+[source, bash]
+------------------------------------------------------------------------------
+echo "/usr/local/lib/dbd" > /etc/ld.so.conf.d/eg.conf
+ldconfig
+------------------------------------------------------------------------------
++
+.Fedora
+[source, bash]
+------------------------------------------------------------------------------
+echo "/usr/lib64/dbd" > /etc/ld.so.conf.d/eg.conf
+ldconfig
+------------------------------------------------------------------------------
+
+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, build the server
+ portion of the staff client, and copy example configuration files to
+ `/openils/conf`.
+ Change the value of the `STAFF_CLIENT_STAMP_ID` variable to match the version
+ of the staff client that you will use to connect to the Evergreen server.
++
+[source, bash]
+------------------------------------------------------------------------------
+make STAFF_CLIENT_STAMP_ID=rel_2_5_3 install
+------------------------------------------------------------------------------
++
+2. The server portion of the staff client expects `http://hostname/xul/server`
+ to resolve. Issue the following commands as the *root* Linux account to
+ create a symbolic link pointing to the `server` subdirectory of the server
+ portion of the staff client that we just built using the staff client ID
+ 'rel_name':
++
+[source, bash]
+------------------------------------------------------------------------------
+cd /openils/var/web/xul
+ln -sf rel_name/server server
+------------------------------------------------------------------------------
+
+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
+------------------------------------------------------------------------------
+
+Configure the Apache Web server
+-------------------------------
+
+1. Use the example configuration files in `Open-ILS/examples/apache/` (for
+Apache versions below 2.4) or `Open-ILS/examples/apache_24/` (for Apache
+versions 2.4 or greater) to configure your Web server for the Evergreen
+catalog, staff client, Web services, and administration interfaces. Issue the
+following commands as the *root* Linux account:
++
+.Debian and Ubuntu
+[source,bash]
+------------------------------------------------------------------------------
+cp Open-ILS/examples/apache/eg.conf /etc/apache2/sites-available/
+cp Open-ILS/examples/apache/eg_vhost.conf /etc/apache2/
+cp Open-ILS/examples/apache/eg_startup /etc/apache2/
+# Now set up SSL
+mkdir /etc/apache2/ssl
+cd /etc/apache2/ssl
+------------------------------------------------------------------------------
++
+.Fedora
+[source,bash]
+------------------------------------------------------------------------------
+cp Open-ILS/examples/apache_24/eg_24.conf /etc/httpd/conf.d/
+cp Open-ILS/examples/apache_24/eg_vhost_24.conf /etc/httpd/eg_vhost.conf
+cp Open-ILS/examples/apache/eg_startup /etc/httpd/
+# Now set up SSL
+mkdir /etc/httpd/ssl
+cd /etc/httpd/ssl
+------------------------------------------------------------------------------
++
+2. 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 staff client
+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
+------------------------------------------------------------------------------
++
+3. 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):
+ * (Apache 2.2): Replace `Allow from 10.0.0.0/8` with `Allow from all`
+ * (Apache 2.4): Replace `Require host 10.0.0.0/8` with `Require all granted`
+ b. (Fedora): Change references from the non-existent `/etc/apache2/` directory
+ to `/etc/httpd/`.
+4. Change the user for the Apache server.
+ * (Debian and Ubuntu): As the *root* Linux account, edit
+ `/etc/apache2/envvars`. Change `export APACHE_RUN_USER=www-data` to
+ `export APACHE_RUN_USER=opensrf`.
+ * (Fedora): As the *root* Linux account , edit `/etc/httpd/conf/httpd.conf`.
+ Change `User apache` to `User opensrf`.
+5. Configure Apache with performance settings appropriate for Evergreen:
+ * (Debian and Ubuntu): As the *root* Linux account, edit
+ `/etc/apache2/apache2.conf`:
+ * (Fedora): As the *root* Linux account, edit `/etc/httpd/conf/httpd.conf`:
+ a. Change `KeepAliveTimeout` to `1`. Higher values reduce the chance of
+ a request timing out unexpectedly, but increase the risk of using up
+ all available Apache child processes.
+ b. 'Optional': Change `MaxKeepAliveRequests` to `100`
+ c. Update the prefork configuration section to suit your environment. The
+ following settings apply to a busy system:
++
+[source,bash]
+------------------------------------------------------------------------------
+<IfModule mpm_prefork_module>
+ StartServers 20
+ MinSpareServers 5
+ MaxSpareServers 15
+ MaxClients 150
+ MaxRequestsPerChild 10000
+</IfModule>
+------------------------------------------------------------------------------
++
+6. (Fedora): As the *root* Linux account, edit the `/etc/httpd/eg_vhost.conf`
+ file to change references from the non-existent `/etc/apache2/` directory
+ to `/etc/httpd/`.
+7. (Debian and Ubuntu): As the *root* Linux account, enable the Evergreen site:
++
+[source,bash]
+------------------------------------------------------------------------------
+a2dissite default # OPTIONAL: disable the default site (the "It Works" page)
+a2ensite eg.conf
+------------------------------------------------------------------------------
+
+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 the following section, sets the database
+connection information in `opensrf.xml` for you.
+
+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 Lucid on the machine of your choice using the following commands as the
+*root* Linux account:
+
+.(Debian / Ubuntu / Fedora) 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-wheezy
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-squeeze
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-lucid
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-precise
+make -f Open-ILS/src/extras/Makefile.install postgres-server-fedora
+------------------------------------------------------------------------------
+
+.(Fedora) Postgres initialization
+
+Installing Postgres on Fedora also requires you to initialize the PostgreSQL
+cluster and start the service. Issue the following commands as the *root* user:
+
+[source, bash]
+------------------------------------------------------------------------------
+postgresql-setup initdb
+systemctl start postgresql
+------------------------------------------------------------------------------
+
+For a standalone PostgreSQL server, install the following Perl modules as the
+*root* Linux account:
+
+.(Debian / Ubuntu) Installing additional Perl modules on a standalone PostgreSQL 9 server
+[source, bash]
+------------------------------------------------------------------------------
+aptitude install gcc libxml-libxml-perl libxml-libxslt-perl
+cpan Business::ISBN
+cpan JSON::XS
+cpan Library::CallNumber::LC
+cpan MARC::Record
+cpan MARC::File::XML
+cpan UUID::Tiny
+cpan Rose::URI
+------------------------------------------------------------------------------
+
+.(Fedora) Installing additional Perl modules on a standalone PostgreSQL 9 server
+[source, bash]
+------------------------------------------------------------------------------
+yum install gcc perl-XML-LibXML perl-XML-LibXSLT perl-Business-ISBN
+yum install perl-Library-CallNumber-LC perl-MARC-Record perl-MARC-Charset
+yum install perl-MARC-File-XML perl-UUID-Tiny
+------------------------------------------------------------------------------
+
+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, and in
+the `/var/lib/pgsql/data/` directory on Fedora. 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.pl` 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.1 and later
+^^^^^^^^^^^^^^^^^^^^^^^^
+To create the database instance on a remote database server running PostgreSQL
+9.1 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_ctl.sh -l -a start_all
+------------------------------------------------------------------------------
++
+ ** If you receive the error message `bash: osrf_ctl.sh: 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 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 hierarchy in `config.cgi`):
++
+[source, bash]
+------------------------------------------------------------------------------
+autogen.sh -u
+------------------------------------------------------------------------------
++
+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 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
+ ------------------------------------
+
+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.
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, 2.5.3, open-ils-dev@list.georgialibraries.org)
+AM_INIT_AUTOMAKE([OpenILS], [2.5.3])
AC_REVISION($Revision: 0.1 $)
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_SUBDIRS([Open-ILS/xul/staff_client/external/libmar])