Accidentally reintroduced with commit ad86ef5d3c689c9b514cc09bfc93e7f451461dc7,
we can skip adding back TPAC toggle strings to the index.xhtml file since that
toggle action has been removed from the page.

The edi_fetcher relies on a routine in OpenILS::Acq::EDI to, among
other things, try to avoid fetching the same EDI document multiple times
when many rows in acq.edi_account refer to the same host and login
credentials.

Since in practice most vendors seem to run FTP servers for EDI on
Windows, not UNIX, and pathnames are therefore case-insensitive, that
test for other occurrences ought also to be case-insensitive.

If I were to look at this as a purist, I could argue that vendor servers
might sometimes by run on UNIX, and that for some reason it is possible
that different vendor-to-buyer EDI documents (order responses or
invoices) could have pathnames that differ only in the case of some
characters. But that seems wildly unlikely. If anyone does take this
possibility seriously, perhaps acq.edi_account needs a Boolean column to
indicate the remote host's case [in]sensitivity.

Addresses LP #1020625. You can use the locg param, which can set an
an OU for search context (and which has other implications related to
location/scope) by shortname now.

As long as your shortnames are something that work in an HTTP query
string, don't contain colons, and as long as you don't have numeric
shortnames for any orgs that would mask orgs with the sames numbers
as an ID (but that would be a lousy setup anyway), this should work.

Now case insensitive per recommendation by Michael Peters. In the
event that you have org units with names that are the same except
for case (probably a bad practice), the locg parameter will simply
fail to set your context, rather than try to guess which org unit
you meant.

This feature has two main parts, patron blocking by number
of lost items and include lost items as items out. A group penalty
threshold will be added for lost items. This will restrict patrons
who have lost too many items. The inclusion of lost items as items
out will be an optional setting, like claimed returned items. This
will allow libraries to set what type of item statuses count toward
the total items out.

Avoid sorting editable funds to the front of the fund list when there
are no org units at which the user has the ADMIN_ACQ_FUND permission.
Otherwise, we are sorting on an empty 'IN' list in pcrud, which results
in an error.

If you want a record feed in MARC21, without this commit a web browser
just suggests "marc21" as the filename for saving to your local system.

Although many consumers of these feeds will be custom scripts and other
non-interactive software components that won't care about filename, for
the web browser case it's helpful if the server suggests a filename that
ends in .mrc.

Updates to the chapter on acquisitions administration, including 1) the
reintroduction of the Providers section, which appears to have dropped out
of the docs after 2.1 2) the new default # copies and improvements to
distributions formulas introduced in 2.4 and 3) minor copy editing.

This does not actually introduce any new dependencies. Evergreen
updates/installation already requires bzip2. If bzip2 is present,
then libbz2 is present. We don't need libbz2 headers, just the
library itself for a single data structure used in crc32 calculation.

Add a handful of authority records to match a subset of the Concerto
bib records. When the --load-all or --load-concerto options are passed
to eg_db_config, these authority records will be loaded. Running
"authority_control_fields -s 1 -e 100" will then generate 19 links from
Concerto bibs to corresponding authority records.

The trailing period prescribed by ISBD punctuation for x00 $d subfields
in certain circumstances confounds the regex that was expected the $d
subfield to match ^\s*\d{4}-\d{4}\s*$. As a result, death dates were
often being omitted from the record detail display. Relaxing the regex
to match against a trailing .* instead of \s* resolves the issue.

In jspac a message appeared when the patron went to change their
password stating the requirements. This same message is missing
in TPAC. The wording from jspac has been added to a separate
file, update_password_msg.tt2, that can later be easily edited
and the original update_password.tt2 has been edited with an
INCLUDE statement pointing to the newly created file.

Also improved is the message when requesting a forgotten password.
Patrons are unaware that a valid email address needs to be in
their record until after they try to send a reset. Text has been
added to a new file, password_reset_msg.tt2, to explain the need
for an email address. Password_reset.tt2 has been edited with
an INCLUDE statement pointing to the newly created file.

Style.css.tt2 was also updated to remove extra padding on
#account-update-email table to raise the table on
update_password.tt2. This value is also used on
update_username.tt2 and update_email.tt2 without considerable
impact to the look of those pages.

Repair how the JS inspects the results of
open-ils.search.authority.simple_heading.from_xml.batch.atomic, which is
used to look up matches for authority validation. It returns a more
complex structure in the brave new world of authority control sets.

If users are expected to run all of the 2.2 upgrade scripts, then let's
make it easy for them. As PostgreSQL 9.1 does not include the \ir
"include relative path" command, we have to pause at the beginning of
the upgrade process to ensure that the user is running the script from
the right directory.

In the record buckets, the button for 'Export All Records' would work up
to the point where you chose where to save the file. After clicking where
to save, it would not show any saved files or prompts indicating it completed
the export process.

This fix changes the location of where to find the export tool and properly
exports the bibs as the file format selected.

Even controlled serials holdings involve the internal creation of MFHD
fields, upon which caculations are performed for such purposes as the
display of holdings summaries in the OPAC.

There are too many ways that incorrect MFHD (or MFHD that our code just
can't yet handle) can lead our MFHD routines to crash. We can't address
all these possibilities in a single bug fix. But we can avoid this
infinite loop.

A subroutine within open-ils.serial (_summarize_contents()) relies on
MFHD::get_compressed_holdings(). When the latter went into an infinite
loop the result would be an open-il.serial drone process consuming CPU
time indefinitely and, depending on the data that provoked the loop,
potentially writing repeating messages to stderr indefinitely.

End users will still see the item receiving fail in these cases, and be
obliged to work around the issue as before until more robust
holdings summarization code can be written, but at least the overall
condition of the running Evergreen system won't be affected, and there
will be better information in the error logs.

- make sure that it doesn't attempt to create more than one
index at a time for a given table
- if deadlocks occur (because of a PostgreSQL bug whose fix
isn't slated for release until after April 2013), find
and recreate the affected indexes.

- Remove references to PostgreSQL 9.0; 9.1 is recommended
for Evergreen 2.4.
- Clarify that the latest version of OpenSRF now means 2.2
or later.
- Increase chances that somebody following the instructions
precisely doesn't run into a problem during the configure step.

We were getting several thousand sockets hanging around in a
CLOSE_WAIT state on our server. The connections were from our
server and to our server. Further investigation showed it to be
caused by the stage2 added content lookup not closing the request
sockets when it was done reading data. This branch fixes that.

In the reporter interface, the view 'Payments: Brick-and-mortar' is
missing the 'Accepting User' field, which is present in the similar view
'Payments: Desk'. This field is already present in the database view and
is simply missing from the IDL. Since it is needed for certain kinds of
reports, this commit adds the missing IDL fields. It also adds the
missing 'reporter:datatype' to an existing instance of the IDL field.

The new install process installs the Apache sample configs into the
DOCDIR for Evergreen, with the expectation that packagers will pick up
the examples from the doc directory and that users will eventually be
expected to copy them from there, rather than from the source tree.

However, currently the Apache 2.2 and 2.4 sample configs have the same
names, and that causes a conflict at "make install" time. Kudos to Jason
Stephenson for catching this. The temporary solution is to rename the
Apache 2.4 files to avoid the conflict; longer term, we need to teach
make install to only make & install the files that are pertinent to the
environment on which it was built (either Apache 2.2, or Apache 2.4).

The patch to address bug 1162989 overreached. Whereas before that
patch, the hold targeter was wont to target copies with unholdable
statuses, after the patch the hold targeter got the statuses right but
undesirably filtered out copies whose circ_lib doesn't match the hold
pickup lib. This again probably stems from the differences between
FulfILLment's hold targeter and Evergreen's in the context of merging
the calculated proximity code.

You might think the comparison should be to acp.circ_lib, but that
doesn't work with floating copies (for non-floaters, acp.circ_lib
should be equal to acp.call_number.owning_lib).

approx is a more correct first determinant to give the behavior sites
are used to.

hprox can cause copies to be too eager to go home when
there are holds with that copy's circ lib as its request lib (if that's
what you want, then you do pick or create a sort-order with hprox near
the top).

Address a problem in the copy_has_not_been_home CTE.
This expression was always meant to provide a TRUE or FALSE value as its
lone result, but would return NULL in cases where copies had no transit
history.

Use pickup_lib, not request_lib, as the determinant of
nearness-to-home. request_lib was used with the thinking that an item's
"owning" patrons should have their wishes favored at holds-go-home time,
even if where they wanted to send the copy was not actually home, but
that's neither necessarily desired nor very intuitive.

Clear up holds-go-home logic with better code AND add TechRef
documentation with diagram in attempt to be as clear as possible.

Not only do we need the JSPAC->TPAC changes that went into the base
Apache example configs, we should also move to generating these files
instead of having hardcoded values. Longer term, we should probably just
generate the right example configs from one common base until Apache 2.2
is dead and gone, but this improves the Apache 2.4 experience greatly.

Given a 110 / 710 field, when generating the record details for authors
and contributors we can declare an http://schema.org/Organization
itemtype rather than just jamming the name under the "contributor"
property. This is more in accordance with schema.org directions.

We had set LDR[06] = j to MusicRecording, but that is really meant for
individual songs. Use MusicAlbum instead, and per
http://schema.org/MusicAlbum, use a new MusicGroup itemtype with a
'byArtist' property for the primary artist rather than the generic
'accountablePerson'.