]> git.evergreen-ils.org Git - Evergreen.git/log
Evergreen.git
7 years agoBumping version numbers, adding Upgrade Script and Changelog tags/rel_2_11_rc
Dan Wells [Fri, 9 Sep 2016 14:10:40 +0000 (10:10 -0400)]
Bumping version numbers, adding Upgrade Script and Changelog

Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoUpdate release notes
Dan Wells [Thu, 25 Aug 2016 22:08:07 +0000 (18:08 -0400)]
Update release notes

Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoBumping Perl version string for 2.11.0
Dan Wells [Thu, 28 Jul 2016 22:51:35 +0000 (18:51 -0400)]
Bumping Perl version string for 2.11.0

Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoTranslation updates - po files
Dan Wells [Fri, 9 Sep 2016 13:37:31 +0000 (09:37 -0400)]
Translation updates - po files

Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoLP#1436987: webstaff - fix patron search form
Galen Charlton [Mon, 7 Mar 2016 17:42:51 +0000 (12:42 -0500)]
LP#1436987: webstaff - fix patron search form

This patch ensures that the patron profile and
search OU values are retained when going from a patron
search to a single record and back to the patron search.

To test the fix for this bug:

[1] Search for a patron using the expanded patron search fields,
    making sure to select values for the profile and search
    OU dropdowns.
[2] Open a record, then click "Patron Search" to return to the
    search form.
[3] Verify that the profile and search library are set and
    that the same patron records are retrieved.

This patch includes elements from a patch originally written
by Victoria Lewis <vlewis@catalystitservices.com>

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1413352 Brief record price sets lineitem price
Bill Erickson [Thu, 2 Jun 2016 19:27:06 +0000 (15:27 -0400)]
LP#1413352 Brief record price sets lineitem price

Propagate lineitem MARC 'price' attribute value to the lineitem
estimated_unit_price field.  This allows users to apply a lineitem
price directly from the ACQ Brief Record interface.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoSIP manual testing formatting cleanup
Dan Scott [Tue, 6 Sep 2016 01:34:20 +0000 (21:34 -0400)]
SIP manual testing formatting cleanup

The extra ** in the sample SIP lines was distracting. Also, it wasn't clear
which password to use when $password was used twice, so disambiguate it to
identify user vs. SIP password.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
7 years agoLP1613374: Release notes formatting fix.
Chris Sharp [Wed, 31 Aug 2016 11:14:49 +0000 (07:14 -0400)]
LP1613374: Release notes formatting fix.

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoStamping upgrade script for Spanish locale seed data
Dan Wells [Mon, 29 Aug 2016 21:38:10 +0000 (17:38 -0400)]
Stamping upgrade script for Spanish locale seed data

Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoLP#1618183: Add Spanish to config.i18n_locale
Ben Shum [Mon, 29 Aug 2016 19:37:48 +0000 (15:37 -0400)]
LP#1618183: Add Spanish to config.i18n_locale

Add Spanish to this table so that it is an option for supported translations.

Signed-off-by: Ben Shum <ben@evergreener.net>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoLP#1618136 Fix webstaff IDL2js.js test failures
Jeff Godin [Mon, 29 Aug 2016 16:58:27 +0000 (12:58 -0400)]
LP#1618136 Fix webstaff IDL2js.js test failures

Fix webstaff test failures due to an invalid IDL2js.js file by adding
newly-required preprocessing to the support script that generates that
file when running tests.

Signed-off-by: Jeff Godin <jgodin@tadl.org>
Signed-off-by: Ben Shum <ben@evergreener.net>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoStamp 0999 upgrade; remove merge conflict markers
Bill Erickson [Fri, 26 Aug 2016 21:00:20 +0000 (17:00 -0400)]
Stamp 0999 upgrade; remove merge conflict markers

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoforward-port 2.10.5-2.10.6 schema update script
Galen Charlton [Fri, 26 Aug 2016 00:47:47 +0000 (20:47 -0400)]
forward-port 2.10.5-2.10.6 schema update script

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agoforward-port 2.9.6-2.9.7 schema upgrade script
Galen Charlton [Fri, 26 Aug 2016 00:06:25 +0000 (20:06 -0400)]
forward-port 2.9.6-2.9.7 schema upgrade script

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agoDocs: Add Additional 2.9.7 Acknowledgments for Testing/Signoff
Jason Stephenson [Thu, 25 Aug 2016 21:29:12 +0000 (17:29 -0400)]
Docs: Add Additional 2.9.7 Acknowledgments for Testing/Signoff

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agoDocs: Adding 2.9.7 Release Notes
Jason Stephenson [Thu, 25 Aug 2016 21:26:19 +0000 (17:26 -0400)]
Docs: Adding 2.9.7 Release Notes

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agoDocs: Adding 2.9.6 Release Notes
Kathy Lussier [Wed, 15 Jun 2016 17:04:23 +0000 (13:04 -0400)]
Docs: Adding 2.9.6 Release Notes

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agolet the 2.10.6 release notes be free of errorr
Galen Charlton [Thu, 25 Aug 2016 23:56:42 +0000 (19:56 -0400)]
let the 2.10.6 release notes be free of errorr

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agofirst pass at 2.10.6 release notes
Galen Charlton [Thu, 25 Aug 2016 21:04:41 +0000 (17:04 -0400)]
first pass at 2.10.6 release notes

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agoTranslation updates - newpot
Dan Wells [Thu, 25 Aug 2016 21:55:36 +0000 (17:55 -0400)]
Translation updates - newpot

Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoTranslation updates - po files, part 2
Dan Wells [Thu, 25 Aug 2016 21:01:05 +0000 (17:01 -0400)]
Translation updates - po files, part 2

Missed the *new* po files in the previous commit.  Number of new
translations for Spanish now stands at 9000+ (wow!).

Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoLP#1095280: i18n - Add templates to update_pofiles
Ben Shum [Wed, 24 Aug 2016 20:33:18 +0000 (16:33 -0400)]
LP#1095280: i18n - Add templates to update_pofiles

Signed-off-by: Ben Shum <ben@evergreener.net>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoLP#1095280: i18n - Add new templates for translation to Makefile
Ben Shum [Wed, 24 Aug 2016 13:32:47 +0000 (09:32 -0400)]
LP#1095280: i18n - Add new templates for translation to Makefile

Add various source and output files for new templates directories for i18n
along with make targets and other copy commands.

Signed-off-by: Ben Shum <ben@evergreener.net>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoLP#1095280: i18n - Move existing templates closer together in Makefile
Ben Shum [Wed, 24 Aug 2016 13:25:27 +0000 (09:25 -0400)]
LP#1095280: i18n - Move existing templates closer together in Makefile

In the interest of making it easier to edit, move all the lines
for generating i18n translation files for Open-ILS/src/templates/*
closer together.

Signed-off-by: Ben Shum <ben@evergreener.net>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoTranslation updates - po files
Dan Wells [Thu, 25 Aug 2016 19:27:56 +0000 (15:27 -0400)]
Translation updates - po files

Translations have been significantly increased.  In particular, Spanish
has received a huge update with over 8,000 new translations, Czech has
received a sizeable update of over 800 translations, and additional
smaller updates have been added for Arabic, French (Canada), and
Armenian.

Signed-off-by: Dan Wells <dbw2@calvin.edu>
7 years agoLP#1617017: make another TPAC string translatable
Galen Charlton [Thu, 25 Aug 2016 18:03:38 +0000 (14:03 -0400)]
LP#1617017: make another TPAC string translatable

"Export List" in hold_history.tt2

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Stephenson <jason@sigio.com>
7 years agoLP#1613709: Make DOB validation alert failure translatable.
Jason Stephenson [Thu, 25 Aug 2016 15:57:42 +0000 (11:57 -0400)]
LP#1613709: Make DOB validation alert failure translatable.

The alert message about an invalid DOB being entered in the OPAC
patron registration is not translatable.  The solution, suggested by
Eva Cerninakova, is to wrap the string in the l() template function to
make it so.  That is what this branch does.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agoLP#1616882: mark another string as translateable
Galen Charlton [Thu, 25 Aug 2016 15:11:00 +0000 (11:11 -0400)]
LP#1616882: mark another string as translateable

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Stephenson <jason@sigio.com>
7 years agoLP#1616882: mark string as translateable
Galen Charlton [Thu, 25 Aug 2016 15:05:25 +0000 (11:05 -0400)]
LP#1616882: mark string as translateable

This patch makes the "Branch relationship" string in TPAC
available to be translated.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Stephenson <jason@sigio.com>
7 years agoLP#1613374 - Canceled Transit status Release Notes
Chris Sharp [Thu, 25 Aug 2016 11:15:11 +0000 (07:15 -0400)]
LP#1613374 - Canceled Transit status Release Notes

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
7 years agoLP 1583608: The make_release script always makes a db upgrade script.
Jason Stephenson [Mon, 30 May 2016 17:01:45 +0000 (13:01 -0400)]
LP 1583608: The make_release script always makes a db upgrade script.

Alter make_release to always create a db upgrade script, even when no
actual db upgrades need to be applied.  The minimal script created
will at least set the upgrade version in config.upgrade_log.

Signed-off-by: Jason Stephenson <jason@sigio.com>
7 years agoDocs: Some missing release notes for 2.11
Kathy Lussier [Wed, 24 Aug 2016 23:43:44 +0000 (19:43 -0400)]
Docs: Some missing release notes for 2.11

We were missing release notes for some of the new fields added to client
interfaces as well as one of the new SIP features.

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
7 years agoStamping upgrade scripts for aged circs display branch
Mike Rylander [Wed, 24 Aug 2016 22:32:02 +0000 (18:32 -0400)]
Stamping upgrade scripts for aged circs display branch

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1497335 Show Last Few Circs patron retrieve options
Bill Erickson [Wed, 24 Aug 2016 21:01:01 +0000 (17:01 -0400)]
LP#1497335 Show Last Few Circs patron retrieve options

In the Show Last Few Circulations window (XUL), disable the "Retrieve
Last Patron" button when the most recent circulation is aged.  Disable
the "Retrieve All These Patrons" button when all circulations displayed
are aged.

Fixes a sort bug in open-ils.circ.copy_checkout_history.retrieve.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
7 years agoLP#1497335 Aged circ display release notes
Bill Erickson [Wed, 3 Aug 2016 19:18:59 +0000 (15:18 -0400)]
LP#1497335 Aged circ display release notes

Signed-off-by: Bill Erickson <berickxx@gmail.com>
7 years agoLP#1497335 Item details shows aged circs (XUL edition)
Bill Erickson [Wed, 3 Aug 2016 18:45:39 +0000 (14:45 -0400)]
LP#1497335 Item details shows aged circs (XUL edition)

* Item Status -> Circulation History now displays aged circulations as
  appropriate, showing "<Aged Circulation>" in lieu the patron's name.

* Item Status (and others) -> Show Last Few Circulations, ditto above.
  Also, the 'Add Billing' button is disabled when displayed with an aged
  circulation row.

* Copy -> Retrieve Last Patron action now includes aged circulations
  when looking for the most recent circulation.  When the most recent
  circ is an aged circ, the UI reports "Item XXX circulation is an aged
  circulation and has no linked user".  Among other things, this means
  the 3rd from last circ will not be confused as the 2nd to last circ
  when the 2nd to last is aged.

* Mark Item Damaged will warn if the circ in question is aged.  This is
  just a sanity check and should never happen in reality, since the UI
  only supports this option on checked out items (i.e. active circs).

Signed-off-by: Bill Erickson <berickxx@gmail.com>
7 years agoLP#1497335 Browser client item details aged circs
Bill Erickson [Wed, 3 Aug 2016 17:52:33 +0000 (13:52 -0400)]
LP#1497335 Browser client item details aged circs

1. Use all_circulation (combcirc) class (now accessible via pcrud) to
render the item Circ History List tab.  In cases where a combcirc object
has no 'usr' value, the interface displays <Aged Circulation> where
the patron's name would normally be and disables the 'Add Billing'
button.

2. Handle null 'usr' values in the item status Recent Circ History tab.
When a renewal chain summary has no 'usr' value, the interface displays
<Aged Circulation> where the patron's name would normally be.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
7 years agoLP#1497335 Aged/All circulation API access
Bill Erickson [Wed, 3 Aug 2016 17:34:29 +0000 (13:34 -0400)]
LP#1497335 Aged/All circulation API access

Various SQL, IDL, and API changes for accessing aged circulations,
primarily via all_circulation objects, for imporoved staff client
integration.

*. Support open-ils.pcrud access to the action.all_circulation DB view /
   'combcirc' class.

*. Add missing parent_circ, checkin_scan_time, checkin_workstation to
   combcirc class.

*. Add 'usr' field to combcirc.  The action.all_circulation VIEW will
   return NULL as the 'usr' column value when returning data for an
   aged_circulation.

*. Add virtual 'active_circ' and 'aged_circ' fields to combcirc for
   fleshing the related action.circulation or action.aged_circulation
   object.

* Adds SQL functions for action.all_circ_chain and
  action.summarize_all_circ_chain, which pull data from
  aged_circulation.

*. API calls
open-ils.circ.[prev_]renewal_chain.retrieve_by_circ[.summary] now return
data for active and aged circulations by using action.all_circ_chain and
action.summarize_all_circ_chain.  When using these APIs, a null value
in the 'usr' column is the indication that a given circulation or circ
chain summary represents an aged circulation.

* API open-ils.circ.copy_details.retrieve will now optionally return
  aged circ data within the copy circ history.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
7 years agoStamping upgrade script for Canceled Transit status branch
Mike Rylander [Wed, 24 Aug 2016 22:07:13 +0000 (18:07 -0400)]
Stamping upgrade script for Canceled Transit status branch

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1613374 - Check stored copy status before clobbering it.
Chris Sharp [Wed, 24 Aug 2016 18:23:09 +0000 (14:23 -0400)]
LP#1613374 - Check stored copy status before clobbering it.

Some transit.copy_statuses would result in some other behavior
upon checkin, so we check all that would go into 'Reshelving'
status, otherwise, restore the stored status.

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1613374 - Add 'Canceled Transit' to non-'BAD' copy statuses.
Chris Sharp [Tue, 23 Aug 2016 13:32:59 +0000 (09:32 -0400)]
LP#1613374 - Add 'Canceled Transit' to non-'BAD' copy statuses.

During checkin, Circulate.pm checks the copy status and if it
isn't listed as an okay status, the event COPY_BAD_STATUS is
returned, which requires an override.  This change makes copies
in 'Canceled Transit' status check in without an alert.

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1613374 - Add 'Canceled Transit' to "magical statuses"
Chris Sharp [Tue, 16 Aug 2016 11:11:24 +0000 (07:11 -0400)]
LP#1613374 - Add 'Canceled Transit' to "magical statuses"

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1613374 - Make 'Canceled Transit' status holdable and OPAC-visible.
Chris Sharp [Mon, 22 Aug 2016 12:58:24 +0000 (08:58 -0400)]
LP#1613374 - Make 'Canceled Transit' status holdable and OPAC-visible.

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1613374 - Set item status to 'Canceled Transit' when transit is canceled.
Chris Sharp [Wed, 24 Aug 2016 18:12:04 +0000 (14:12 -0400)]
LP#1613374 - Set item status to 'Canceled Transit' when transit is canceled.

I opened a separate bug report on this issue (bug 1613374) before realizing
bug 1306666 was reported.  This commit creates a new 'Canceled Transit' status
that signals to staff what happened to an item when a transit is aborted/canceled.

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Conflicts:
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Transit.pm

Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoStamping upgrade for email receipts
Mike Rylander [Wed, 24 Aug 2016 22:01:33 +0000 (18:01 -0400)]
Stamping upgrade for email receipts

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1356477: release notes for email checkout receipts
Galen Charlton [Mon, 22 Aug 2016 22:08:37 +0000 (18:08 -0400)]
LP#1356477: release notes for email checkout receipts

A portion of the text was written by Angela Kilsdonk.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1356477: update selfcheck interface
Mike Rylander [Thu, 4 Aug 2016 14:38:48 +0000 (10:38 -0400)]
LP#1356477: update selfcheck interface

This patch replaces the Logout and Logout with Receipt buttons in
the selfcheck interface with a single Logout button and a set of radio
buttons (whose labels are clickable) that allow the user to specify
whether they want an email receipt, a print receipt, or no receipt upon
logging out.

If the user has no email address, the option to select email receipts
will not be presented to them.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agoLP#1356477: move email receipt checkbox on patron editor
Galen Charlton [Thu, 4 Aug 2016 16:07:14 +0000 (12:07 -0400)]
LP#1356477: move email receipt checkbox on patron editor

This patch updates the patron editor so that the checkbox
for setting whether the user wishes to get email checkout
receipts by default is moved next to the email address
input.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1356477: add quick receipt button
Mike Rylander [Wed, 3 Aug 2016 20:51:54 +0000 (16:51 -0400)]
LP#1356477: add quick receipt button

This patch adds a new button to the webstaff checkout page
called Quick Receipt. If the button itself is pushed, a
receipt containing the current checkouts is either printed
or emailed, depending on the user's preference. If the
drop-down portion of the button is used, staff members can
override the user's default preference to print or email
the receipt.

The Quick Receipt button is enabled only if at least one
checkout has been made during the current session.

Note that email receipts is an option only when the patron
has an email address supplied.

An icon next to the Quick Receipt button will be either a
printer or an envelope depending on the user's preferred
receipt setting.

This patch also modifies the "Done" button. If pressed, the session
is ended and the receipt is generated according to the user's
preferences, but the drop-down portion can be used to end
the session while letting the staff member choose how the
receipt is emitted.

If a receipt is emailed, a toast is displayed saying so.

Signed-off-by: Mike Rylander <miker@esilibrary.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agoLP#1356477: teach OPAC patron registration form about staged user (opt-in) settings
Galen Charlton [Wed, 3 Aug 2016 19:38:49 +0000 (15:38 -0400)]
LP#1356477: teach OPAC patron registration form about staged user (opt-in) settings

This patch causes a checkbox to be added for each user setting
that controls opt-in for active Action/Trigger event definitions. In
the specific context of email checkout receipts, this means that
a patron who is self-registering can elect to get email checkout
receipts by default.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1356477: teach webstaff patron editor about staged user settings
Galen Charlton [Wed, 3 Aug 2016 19:36:18 +0000 (15:36 -0400)]
LP#1356477: teach webstaff patron editor about staged user settings

This patch also fixes a bug that preferred the webstaff patron editor
from successfully removing a staged patron upon completing the
registration of the patron.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1356477: create new staging table for user settings
Galen Charlton [Wed, 3 Aug 2016 19:37:39 +0000 (15:37 -0400)]
LP#1356477: create new staging table for user settings

This patch creates a new table called staging.setting_stage
that allows for storing user settings when a patron uses
(for example) the self-registration page.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1356477: add ability to unconditionally send email
Galen Charlton [Mon, 8 Aug 2016 20:50:08 +0000 (16:50 -0400)]
LP#1356477: add ability to unconditionally send email

This patch defines and uses an
open-ils.trigger.event.autocreate.ignore_opt_in method that does what
it says on the tin; the caller is reponsible for not abusing this.

This supports a use case in the webstaff checkout interface where staff
can choose to have the receipt be emailed, provided that the patron
record has an email address defined, even if the user setting to
email receipts by default is not set. (It is assumed that the staff
member would have gotten permission from the patron on the spot.)

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1356477: business logic for email checking receipts
Mike Rylander [Wed, 3 Aug 2016 16:45:10 +0000 (12:45 -0400)]
LP#1356477: business logic for email checking receipts

This patch adds two methods, open-ils.circ.checkout.batch_notify
and open-ils.circ.checkout.batch_notify.session, that when passed
a set of circulation IDs, creates A/T events for the
checkout notification hooks. In the specific case of the email
checkout receipts feature, the seed data contains a stock
event that would send out emails, but it is conceivable
that other forms of notification could be done by defining
A/T events appropriately.

Signed-off-by: Mike Rylander <miker@esilibrary.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
7 years agoLP#1356477: seed data for email checkout receipts
Galen Charlton [Wed, 3 Aug 2016 16:18:19 +0000 (12:18 -0400)]
LP#1356477: seed data for email checkout receipts

This patch adds seed data for email checkout receipts,
including:

- The action/trigger hooks circ.checkout.batch_notify
  and circ.checkout.batch_notify.session.
- The default event definition
- The circ.send_email_checkout_receipts (Email checkout receipts by
  default?) user setting.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Conflicts:
Open-ILS/src/sql/Pg/950.data.seed-values.sql

7 years agoLP#1603708: Remove support for Ubuntu 12.04 Precise
Ben Shum [Tue, 5 Jul 2016 17:03:57 +0000 (13:03 -0400)]
LP#1603708: Remove support for Ubuntu 12.04 Precise

With support for Ubuntu 16.04 Xenial in place, remove the oldest LTS, which is
Ubuntu 12.04 Precise.

Signed-off-by: Ben Shum <ben@evergreener.net>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoStamping upgrade script for badge seed data
Mike Rylander [Wed, 24 Aug 2016 18:55:29 +0000 (14:55 -0400)]
Stamping upgrade script for badge seed data

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1614237: Popularity badge seed data
Kathy Lussier [Tue, 23 Aug 2016 20:01:35 +0000 (16:01 -0400)]
LP#1614237: Popularity badge seed data

Adding popularity badge seed data for a badge based on Holds Requested over the
past 5 years.

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1614290: Add badge_score_generator to example crontab
Kathy Lussier [Wed, 17 Aug 2016 22:29:09 +0000 (18:29 -0400)]
LP#1614290: Add badge_score_generator to example crontab

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoMoving function creation to later in the schema def, where its deps exist.
Mike Rylander [Wed, 24 Aug 2016 18:51:32 +0000 (14:51 -0400)]
Moving function creation to later in the schema def, where its deps exist.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoStamping upgrade script for authority edit changes and propagation improvement
Mike Rylander [Wed, 24 Aug 2016 16:56:28 +0000 (12:56 -0400)]
Stamping upgrade script for authority edit changes and propagation improvement

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1588948: Only attempt a bib update if the heading changes
Mike Rylander [Wed, 24 Aug 2016 15:38:49 +0000 (11:38 -0400)]
LP#1588948: Only attempt a bib update if the heading changes

This should significantly reduce the churn on bibs and the time to save
an authority where the heading that would propagate to bibs has not changed.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
7 years agoLP#1588948 Auth propagate bib meta on change only
Bill Erickson [Mon, 13 Jun 2016 17:57:30 +0000 (13:57 -0400)]
LP#1588948 Auth propagate bib meta on change only

Only update bib record editor and edit_date if an authority record
change propagation resulted in a modified bib record.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1588948 Release notes (auth prop. bib edit[or|_date])
Bill Erickson [Mon, 6 Jun 2016 14:19:30 +0000 (10:19 -0400)]
LP#1588948 Release notes (auth prop. bib edit[or|_date])

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1588948 Authority propagation PGTAP test
Bill Erickson [Mon, 6 Jun 2016 15:14:47 +0000 (11:14 -0400)]
LP#1588948 Authority propagation PGTAP test

Adds a new general purpose authority->bib propagation pgtap test,
covering basic propagation and editor / edit_date propagation.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1588948 Propagate authority->bib edit[or|_date]
Bill Erickson [Fri, 3 Jun 2016 19:16:58 +0000 (15:16 -0400)]
LP#1588948 Propagate authority->bib edit[or|_date]

Adds a new global flag 'ingest.disable_authority_auto_update_bib_meta',
which is disabled by default.

When disabled, the 'editor' and 'edit_date' columns on bib records
updated via authority field propagation are updated to the value of the
editor on the authority record and NOW(), respectively.

When enabled, editor and edit_date are not modified.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1205492: fix crash when attempting to renew deposit & rental loans in OPAC
Galen Charlton [Wed, 24 Aug 2016 15:41:57 +0000 (11:41 -0400)]
LP#1205492: fix crash when attempting to renew deposit & rental loans in OPAC

This patch fixes a bug where attempting to renew a loan on an item
that requires a deposit or a rental fee can cause an Apache
internal server error.

In particular, this patch supplies descriptions for the following
events:

  ITEM_DEPOSIT_REQUIRED
  ITEM_RENTAL_FEE_REQUIRED
  ITEM_DEPOSIT_PAID

It also normalizes how 'fail_part' is set in the renewal response,
as the payload of an event returned when a renewal fails can
be either a hash or an acp Fieldmapper object depending on the
type of event.  In the former case, attempting to access an
nonexistent ->fail_part method is what causes the crash.

To test
-------
[1] Create an item that requires a deposit or a rental fee
    and check it out.
[2] Attempt to renew the loan in the public catalog. Note
    that an internal server error is returned.
[3] Apply the patch and attept step 2 again. This time, the
    public catalog should display a notification to the patron
    that the renewal cannot take place, rather than crashing.
[4] Set up other situations where a renewal should fail for
    reasons other than a deposit/rental fee being required. Verify
    that appropriate error messages are displayed in the public
    catalog.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoStamping upgrade script for transient usr_activity
Mike Rylander [Wed, 24 Aug 2016 16:38:58 +0000 (12:38 -0400)]
Stamping upgrade script for transient usr_activity

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1570909 User activity purge release notes
Bill Erickson [Fri, 15 Apr 2016 21:07:02 +0000 (17:07 -0400)]
LP#1570909 User activity purge release notes

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1570909 User activity purge pgtap test
Bill Erickson [Fri, 15 Apr 2016 20:54:48 +0000 (16:54 -0400)]
LP#1570909 User activity purge pgtap test

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1570909 User activity purge function
Bill Erickson [Fri, 15 Apr 2016 20:26:57 +0000 (16:26 -0400)]
LP#1570909 User activity purge function

Utility function for removing all activity entries by activity type,
except for the most recent entry per user.  This is primarily useful
when cleaning up rows prior to setting the transient flag on an
activity type to true.  It allows for immediate cleanup of data (e.g.
for patron privacy) and lets admins control when the data is deleted,
which could be useful for huge activity tables.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1570909 User activity transient default
Bill Erickson [Fri, 15 Apr 2016 15:23:33 +0000 (11:23 -0400)]
LP#1570909 User activity transient default

Only retain the most recent user activity entry (per activity type) by
default.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoStamping upgrade of is_available branch
Mike Rylander [Wed, 24 Aug 2016 16:17:11 +0000 (12:17 -0400)]
Stamping upgrade of is_available branch

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1464709 Copy status is_available release notes
Bill Erickson [Wed, 24 Aug 2016 14:26:28 +0000 (10:26 -0400)]
LP#1464709 Copy status is_available release notes

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1464709: Disentangle on-holds-shelf from is_available
Mike Rylander [Tue, 23 Aug 2016 20:59:33 +0000 (16:59 -0400)]
LP#1464709: Disentangle on-holds-shelf from is_available

Avoid treating On-Holds-Shelf items as is_available so they do not
appear in the catalog as #available.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
7 years agoLP#1464709: teach QP about is_available statuses
Mike Rylander [Thu, 18 Aug 2016 13:52:20 +0000 (09:52 -0400)]
LP#1464709: teach QP about is_available statuses

We look them up, cache them, and use them for the #available modifier.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
7 years agoLP#1464709 Rename checkout_ok to is_available
Bill Erickson [Thu, 27 Aug 2015 21:24:38 +0000 (17:24 -0400)]
LP#1464709 Rename checkout_ok to is_available

And update pgptap to check for only 2 is_available statuses (not
on-holds shelf).

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1464709 Non-standard copy status pgtap tests
Bill Erickson [Mon, 15 Jun 2015 22:09:01 +0000 (18:09 -0400)]
LP#1464709 Non-standard copy status pgtap tests

Includes unit test plus a set of live tests.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1464709 Seamless non-standard copy status checkout
Bill Erickson [Wed, 3 Jun 2015 23:30:40 +0000 (19:30 -0400)]
LP#1464709 Seamless non-standard copy status checkout

Add a new boolean configuration option to copy statuses which allow such
copies to be checked out without requiring an alert or override.

New column is config.copy_status.checkout_ok.  Any status with this
boolean enabled will be treated the same as Available, Reshelving, and
Holds Shelf status copies in that the status will be considered
checkout-able.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoStamping upgrade script for ranked-volumes update
Mike Rylander [Wed, 24 Aug 2016 15:58:56 +0000 (11:58 -0400)]
Stamping upgrade script for ranked-volumes update

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1315552 Don't use circ_lib name in ranked_volumes
Dan Wells [Tue, 10 May 2016 19:41:54 +0000 (15:41 -0400)]
LP#1315552 Don't use circ_lib name in ranked_volumes

ranked_volumes() is supposed to return only volume info, but the name
returned was from copy.circ_lib, not acn.owning_lib, so it could result
in duplicate rows if circ_lib's varied across a single acn.

Let's just use the owning_lib name instead.  Note: the circ_lib join
is left undisturbed to keep the current sorting behavior
(necessary?).

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP1259196: Use Location as Workstation on Login
Jason Boyer [Fri, 6 May 2016 18:08:48 +0000 (14:08 -0400)]
LP1259196: Use Location as Workstation on Login

When using a SIPServer with LP1579144 applied, use the
Location (CP) field of the Login (93) message as a
workstation name. This allows you to determine which
selfcheck performed which circulation.

Signed-off-by: Jason Boyer <jboyer@library.in.gov>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoCorrect upgrade script
Mike Rylander [Wed, 24 Aug 2016 14:49:41 +0000 (10:49 -0400)]
Correct upgrade script

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1612274: Release notes for improved holds interfaces
Kathy Lussier [Fri, 19 Aug 2016 01:10:43 +0000 (21:10 -0400)]
LP#1612274: Release notes for improved holds interfaces

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1612274: Add distinct classes for hold statuses
Kathy Lussier [Thu, 11 Aug 2016 17:24:00 +0000 (13:24 -0400)]
LP#1612274: Add distinct classes for hold statuses

With more data in the My Account hold status field, libraries may want to
style some statuses or dates differently so that they pop out to the user. Each
hold status and date now has its own class for more flexible styling.

The available status also now has a green, bold font and the suspended status
has a red, bold font.

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1612274: Improve display of holds status in My Account
Kathy Lussier [Thu, 11 Aug 2016 03:41:51 +0000 (23:41 -0400)]
LP#1612274: Improve display of holds status in My Account

Collapse the data contained in the Activate, Active, and Date Fulfilled columns
into the status filed on the My Account holds and holds history interfaces.
This change cleans up the display and removes extraneous information that the
user doesn't need to see.

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1612364: Add transparency to some format icons
Kathy Lussier [Sat, 20 Aug 2016 05:39:09 +0000 (01:39 -0400)]
LP#1612364: Add transparency to some format icons

Some format icons had a white background instead of a transparent one. The
transparent ones will look better in the My Account screens, where the icons
site on a gray background.

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1614807: Make holds history more responsive
Kathy Lussier [Mon, 22 Aug 2016 10:10:14 +0000 (06:10 -0400)]
LP#1614807: Make holds history more responsive

When retrieving the holds history page on a mobile device, re-orient the table
as we do with other My Account screens.

Test plan
Pre-patch, retrieve the holds history screen for a patron that has enabled
holds history. Resize the screen to a width of 600 pixels or smaller. No
adjustments will be made to the table, and horizontal scrolling is required to
see some data.

Post-patch, after resizing this screen, the table should reorient itself with
the headers displaying in the left column, as is done on the other My Account
screens.

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1614807: Fix spacing issues in responsive design for My Account screens
Kathy Lussier [Sat, 20 Aug 2016 04:54:40 +0000 (00:54 -0400)]
LP#1614807: Fix spacing issues in responsive design for My Account screens

This commit fixes the following spacing issues that are found in the My Account
screens when loaded on a small-screen device:

* When a field has no value, the text in the table header, which displays along
 the left, is cut off at the bottom. The Notes field on the Holds page is one
place where this issue is commonly seen. With the fix, the headers are slightly
out of alignment with the field data, but this is still an improvement over
cutting off text on the screen.

* If the only title(s) listed on the screen are short, requiring little width
in a table cell, the text in the table header runs into field data. A good
example in the Concerto data is if the user only has a check out for record ID
2 (Le concerto) on their account.

* The checkboxes in the Check Out History and Items on Hold screen were pushed
to the right. We fix it by giving the cells with a checkbox a "checkbox_column"
class, which was already in use by the checkbox on the Items Out screen.

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1614807: Holds history should look like other My Account screens
Kathy Lussier [Fri, 19 Aug 2016 17:41:14 +0000 (13:41 -0400)]
LP#1614807: Holds history should look like other My Account screens

The Holds History My Account interface looks entirely different than the Items
Out, Check Out History, and Items On Holds interfaces. This commit adds a new
acct_holds_hist_header CSS class that shares the same styles as the CSS classes
used for the other three interfaces. Inline styles are removed from this table.

Test plan
Pre-patch: Go to the My Account Items Out, Check Out History, Items on Hold,
and Holds History interfaces. While the first three interfaces use a table with
a white background for the headers and a gray background for the body, the Holds
History interface is the opposite.

Post patch: All four interfaces should show a similar style to each other.

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1614807: Fix Circ History table header display on small screens
Kathy Lussier [Fri, 19 Aug 2016 15:59:27 +0000 (11:59 -0400)]
LP#1614807: Fix Circ History table header display on small screens

Because the table in circs.tt2 and circ_history.tt2 shared the same CSS class,
circ_history.tt2 was displaying circs.tt2's column headers on mobile devices
and other small screens. The two tables now have distinct classes, and
styles.css.tt2 has been updated to provide the correct table headers for the
circ history page.

Test plan
Pre-patch, pull up a user account that has a circ history in My Account, go to
the Check Out History tab, then resize the screen to a width of 600 pixels or
smaller. The table headers will now display along the side, but the headers
will be the ones that typically display in the Items Out screen. The Barcode
will display in the Date Returned row and the Call number will display in the
Barcode row.

Post-patch, after resizing the screen, the headers that display along the side
should match the ones from the Checkout History interface. All data should
display in its appropriate row.

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP1593834: Add Date Header to A/T Email Examples
Jason Boyer [Mon, 20 Jun 2016 16:38:00 +0000 (12:38 -0400)]
LP1593834: Add Date Header to A/T Email Examples

RFCs 822 and 2822 specify that a Date: header has to be sent
indicating when an email was sent. Without this, clients that
default to displaying the Sent Date may end up using a "NULL"
date, or 1970-01-01 00:00:00 UTC, which is not ideal. This
adds the header to the example A/T templates for email and
SMS messages, and includes instructions on correcting
existing tempalates.

Signed-off-by: Jason Boyer <jboyer@library.in.gov>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1306666: Rename test file
Mike Rylander [Wed, 24 Aug 2016 12:11:11 +0000 (08:11 -0400)]
LP#1306666: Rename test file

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP 1306666: Add Perl tests for new behavior.
Jason Stephenson [Mon, 28 Mar 2016 19:34:32 +0000 (15:34 -0400)]
LP 1306666: Add Perl tests for new behavior.

These tests check that the copy status is correct after aborting
transits dependent upon the status of the copy.  More tests could be
added to cover more situations, but these tests cover the basics.

Signed-off-by: Jason Stephenson <jstephenson@mvlcstaff.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP 1306666: Abort Transit Only Change Copy Status if In Transit
Jason Stephenson [Fri, 18 Mar 2016 20:38:33 +0000 (16:38 -0400)]
LP 1306666: Abort Transit Only Change Copy Status if In Transit

When aborting a transit, the copy status is presently changed, either
to the status stored in action.transit_copy or to Reshelving if the
transit was for a hold.  This causes problems with "hanging" transits
where something was not handled properly before.  We've had cases
where a transit sticks around on a copy that is later checked out, and
while that copy is checked out, the transit is aborted, thus setting
the copy status to Reshelving when it should be Checked Out.

The code change in this branch only changes the copy's status if it is
In Transit.  A copy in any other status has its status left untouched.

Signed-off-by: Jason Stephenson <jstephenson@mvlcstaff.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1613730: Stamping upgrade script for copy count badge
Kathy Lussier [Mon, 22 Aug 2016 18:02:58 +0000 (14:02 -0400)]
LP#1613730: Stamping upgrade script for copy count badge

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
7 years agoLP#1613730: Add a "Copy Count" rating function for badges
Mike Rylander [Thu, 18 Aug 2016 16:58:25 +0000 (12:58 -0400)]
LP#1613730: Add a "Copy Count" rating function for badges

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
7 years agoLP#1586221 - Remove "no spaces" message from login form.
Chris Sharp [Sat, 20 Aug 2016 18:52:15 +0000 (14:52 -0400)]
LP#1586221 - Remove "no spaces" message from login form.

Since the fix to bug 1086064 removes any spaces entered into
the login form, it is now inaccurate to require the user to type
their cards with no spaces (since most library cards have spaces
in the number on the physical card).

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
7 years agoLP#1615025 TPAC large circ history sort repair
Bill Erickson [Fri, 19 Aug 2016 15:41:14 +0000 (11:41 -0400)]
LP#1615025 TPAC large circ history sort repair

Fix TPAC circ history retrieval code thinko so that history rows are
retrieved one at a time instead of in a batch (.atomic) to avoid
overwhelming Ejabberd.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1613381: combine two tables in patron notification preferences
Galen Charlton [Mon, 15 Aug 2016 18:07:21 +0000 (14:07 -0400)]
LP#1613381: combine two tables in patron notification preferences

This patch consolidates the two tables in the public catalog
notification preferences page into one table, as patrons have
no reason to care about the distinction between A/T opt-in
settings and the hold, phone, and SMS user settings.

This patch also adds a <label> element for opt-in setting
names.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>