As suggested by Mike Rylander, keep the escape_email_header helper
around to avoid breaking templates that already adopted it, but make it
a no-op as the SendEmail reactor now encodes the email headers of
interest by default.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Galen Charlton [Fri, 25 Mar 2016 20:46:24 +0000 (16:46 -0400)]
LP#1562153: fix case where changing sort order to relevance can fail
This patch fixes a cause where sending a 'sort' CGI parameter
with the empty string as value (which specifies relevance sorting)
fails to override a previously-set sort order.
To test:
[1] Do a public catalog search starting from the advanced search form,
e.g., keyword = "cats"
[2] Change the sort order to (say) Title A-Z from the results page.
[3] Note that the query string changes to "sort(titlesort) cats" and
that the results are re-sorted
[4] Attempt to change the sort order to relevance.
[5] This time, the sort order does not change ... and it should have.
[6] Apply the patch and repeat steps 1-5. This time, the sort order
should be successfully changed.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Steven Callender [Wed, 13 Apr 2016 15:15:27 +0000 (11:15 -0400)]
LP#1569884 Allow deleted monograph parts to be recreated.
Changed the constraint on the biblio.monograph_part table to allow for a
monograph part to be created if a duplicate deleted version is found.
To test:
[1] Add a monograph part to a bib.
[2] Delete that monograph part.
[3] Attempt to add a monograph part to the same bib using
the same part label. Without the patches installed, this
will fail; upon applying the database update, this operation
should succeed.
Signed-off-by: Steven Callender <stevecallender@esilibrary.com> Signed-off-by: Jason Stephenson <jstephenson@mvlcstaff.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
This pgTAP test verifies that if you logically delete a monograph part,
you can subsequently add a new one with the same label as that of the
deleted one.
Now that Debian Squeeze's LTS (long-term support) period
has ended, Evergreen no longer offers community support
for that distribution. This patch removes references
to Squeeze from the installation scripts and documentation.
To test:
[1] Verify that Debian Squeeze is no longer referenced in
the installation documentation.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <ben@evergreener.net>
Conflicts:
docs/installation/server_upgrade.txt
Jason Boyer [Thu, 31 Mar 2016 12:08:03 +0000 (08:08 -0400)]
LP1564378: Silence Hash Init Warning
A trivial change to silence a lot of noise (if your libraries
use extending grace periods.)
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Jason Stephenson <jstephenson@mvlcstaff.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Tue, 22 Mar 2016 15:50:58 +0000 (11:50 -0400)]
LP#1373601: Consider relevant characters before using word-boundary checks
To perform unanchored phrase limits, we make sure that the phrase supplied
by the user does not end in the middle of a word by bounding the condition
with word-boundary bracket expresssions. However, if the phrase starts
or ends with a non-word character (that is, something other than numbers,
letters, or the underscore) then the word-boundary expression won't match.
The effect of this is to cause phrase searches starting or ending in
punctuation to fail when the user would not expect them to.
To address this, we now test the phrase for word-iness at the front and
back before applying word-boundary bracket expressions.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Dan Wells [Thu, 7 Jan 2016 16:47:43 +0000 (11:47 -0500)]
LP#1208613: Reset lineitem cache when resetting table
Stale cache entries in this table were causing the "expand all"
functionality to break. This might be a nuclear option, but as far as
I could see, this "cache" gets repopulated on every pagination anyway,
so I don't think we're losing anything.
To test:
[1] Select a large list from the Acquisitions --> My Selection List
screen.
[2] Click on the Expand All button and the items on the page expand
with more information.
[3] Click on the Next link to bring up page 2 of the list.
[4] Click on the Expand All button and verify that additional
information is displayed.
Terran McCanna [Tue, 1 Mar 2016 21:47:20 +0000 (16:47 -0500)]
LP#1370694 Selfcheck: "Print List" for Holds view does not work
Prior to this change, the holds data was not getting passed to the
print function. Now, it is being captured and passed to the print
function. Because of some sorting discrepancies between the order of
the information being passed from here to the action trigger and the
order that the information is presented when pulled directly out of the
database by the action trigger (which led to data mismatches between the
title/author and the hold status/pickup locations for each printed item),
I modified this script to pass all of the hold information together in the
desired order to the action trigger rather than relying on the template
to match the data coming from the script with the data from the database.
This change requires the action trigger printing template to be updated in
order to work. I've included an upgrade script as well as an update to the
seed data script.
Terran McCanna [Tue, 1 Mar 2016 22:35:28 +0000 (17:35 -0500)]
LP#1551447 Selfcheck: Printing Fines Prints All Open Transactions
This corrects the behavior of the selfcheck fines receipt print template.
Prior to this, it printed all open billable transactions (eg, every item
that the patron had checked out) regardless of whether or not it had bills
associated with it. This adds a small bit of logic to the template to
check for a balance due. It also updates the javascript to check for a
balance on the account before launching the print function to prevent the
system from taking unnecessary action.
This includes a SQL upgrade script to update the Self-Checked Fines
Receipt template for systems that are already in production, as well as
including an update to the seed data.
Terran McCanna [Thu, 11 Jun 2015 22:15:13 +0000 (18:15 -0400)]
LP#1454871: Fix KPAC Hold Notification Preferences
Correction to KPAC holds notification default preferences to allow for
SMS text messaging options.
Prior to this correction, KPAC hold notifications would only pick up
hold preferences if set to email and/or phone. This correction allows
it to pick up email and/or phone and/or sms notification preferences.
To test, set hold preferences to different options, place hold via the
KPAC, and then view the hold to see which preferences were recognized.
(May need to show columns for Phone Notify, Text Notify, and Email Notify.)
Terran McCanna [Wed, 24 Feb 2016 22:17:27 +0000 (17:17 -0500)]
LP#1548869 KPAC hold results screen not displaying complete info
The getit_results.tt2 page was not displaying item title after
hold placement or after adding to a list. It was also not pulling
in the item id (which was needed for navigational links back to the
record) and was not pulling in the list name after adding an item
to a named list.
This patch adds some logic to prevent subroutine conflicts, adds
missing parameters to a function call, and corrects a variable name.
To test:
Log in to the KPAC and perform the following actions:
1. Place a successful hold (results screen should show item title
and pickup library, and provide links back to record page).
2. Place an unsuccessful hold (try placing a hold on an item you
already have a hold on - the results screen should show the item
title).
3. Add item to a temporary list (results screen should show item title).
4. Add item to a named list (results screen should show item title and
title of list it was added to).
Josh Stompro [Sat, 27 Feb 2016 14:54:04 +0000 (08:54 -0600)]
LP#1549393 - Remove undef values from isbn and issn arrays.
This prevents empty requests being sent to content providers.
This caused a problem for us because invalid ISBNs were causing
requests to Content Cafe to fail, since Content Cafe returns an
error if there is a blank key sent along with valid ISBNs and UPCs.
Specifically we had problems with DVD records from Baker & Taylor because
B&T creates unoffical ISBNs for the DVDs they sell. Those ISBN's do
not validate when run through B::ISBN.
ISSNs are also cleaned since they are validated and set to undef if
invalid just like ISBNs are.
It shouldn't hurt to not send blank requests to providers in any case.
To test:
1. I know this is a problem with Content Cafe, I don't
know if any other providers are effected. Let me know
if you need Content Cafe credentials to test.
2. Add an invalid ISBN 020a entry to a bib record that has added content. 9786316271976 is an example of a fake ISBN that doesn't
pass B::ISBN validation. Or just make up a fake number.
3. Clear out the memcache entries for that record. In 2.9+ there
is a link to clear the cache in the record detail view under Permalink.
4. Reload the record and the cover art and other added content should
not be displayed. This is because the invalid ISBN gets set to undef
, and the undef gets sent to content cafe as a blank key request.
5. Now apply the fix. Clear the memcache entries for that bib, and now
the cover art should be displayed since the undef entries due to the invalid
ISBN's have been removed.
Josh Stompro [Fri, 4 Mar 2016 19:51:34 +0000 (13:51 -0600)]
LP#1550495 - Add EDI Cancel Code 85 - used by Baker & Taylor
Baker & Taylor send back a quantity code 85 response when they cancel
a line item. This code wasn't included as one of the built in EDI
codes so those line items were not being canceled automatically in
evergreen.
The system looks for the response code + 1200 to find the cancel reason,
so this code is entered as ID 1285 in the acq.cancel_reason table.
I received confirmation from another system that uses B&T as an EDI vendor
that they also receive code 85 responses when something gets canceled.
Terran McCanna [Wed, 2 Mar 2016 17:16:43 +0000 (12:16 -0500)]
LP#1454884 Hold placed on grouped metabib result displays wrong title
Prior to this change, a full/extended title displayed even on metarecord
holds that had different extended titles, which sometimes led to situations
where a video's full title displayed on a book hold, or vice versa. This
change displays the short version of the title on metarecord holds and
the full version on individual record holds.
Chris Sharp [Mon, 8 Feb 2016 18:00:06 +0000 (13:00 -0500)]
LP#1533331 - Fix evergreen.protect_reserved_rows_from_delete() trigger function
The fix for bug 1513554 included creating a general trigger function to prevent
the deletion of reserved table rows with an ID lower than a specified threshold.
Testing for that seemed to pass muster, but using the function in practice revealed
a failure to delete deletable rows either.
This adds an explicit RETURN to the function, which fixes the issue.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Bill Erickson [Mon, 16 Nov 2015 19:48:23 +0000 (14:48 -0500)]
LP#1516757: ensure that SIP2 returns DOB correctly
Parse dates of birth using the local timezone to ensure that the date in
the database will match what is sent to SIP clients. Otherwise, the
date will be parsed as UTC and may result in the DoB value being offset
by one day in the SIP response.
To test
-------
[1] Fire up a SIP client of some sort and retrieve a patron record;
verify that the patron's date of birth is correct, and not
offset by one day.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
LP#1531976: fix bringing up Mesage Center and Triggered Events
This patch fixes a bug in the XUL staff client where
using Other -> Triggered Events from the patron page,
then Other -> Message Center, only brings up the Triggered
Events page in both cases (and vice versa).
This patch works by preventing the deck code from thinking they are
the same page, despite both using the browser wrapper as their base URL.
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Jason Boyer [Wed, 2 Sep 2015 20:20:13 +0000 (16:20 -0400)]
LP#1491571: Ignore Case when Checking PW Reset email
Emails are not passwords and are not case sensitive;
while it is a good idea to require patrons to prove
they know the address associated with their account
it is not cool to deny them because they don't know
the capitalization of the value in the database.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Ben Shum <ben@evergreener.net>
Chris Sharp [Mon, 30 Nov 2015 14:48:26 +0000 (09:48 -0500)]
LP#1206936 - Fix wrong billing info in money.transaction_billing_summary
The money.transaction_billing_summary view was showing the wrong
last billing type and last billing note for certain transactions.
This fix, from Dan Scott, in turn from Mike Rylander, recreates
that view so that it depends on the speedier and more accurate
money.materialized_billable_xact_summary view.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Remington Steed [Wed, 16 Dec 2015 20:46:17 +0000 (15:46 -0500)]
LP#1526546 Sort copies by part label in holdings maint.
This commit improves the sorting of copies on the Holdings Maintenance
screen in the XUL-based staff client. The previous code sorted the
copies by their barcodes after retrieval. This commit moves the sorting
logic into the search call and adds logic to first sort by the part
label sort key.
Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Dan Wells <dbw2@calvin.edu>
blake [Wed, 23 Dec 2015 20:20:40 +0000 (14:20 -0600)]
LP#1466990: Detailed search results shows parts for items that dont have parts
The part_label variable needs to be reset between iterations. The variable was still set
and bled from copy to copy. Testing this will require a search with details turned on.
The search result set needs to include a bib that has copies with parts (with at least
one copy invisible) and another bib that has copies without parts.
Signed-off-by: blake <blake@mobiusconsortium.org> Signed-off-by: Ben Shum <ben@evergreener.net>
When a patron has no mailing address linked, attempt to read address
data from the patron's billing address. Similarly, if all address
fields are properly set by the API caller, except the country, and the
patron has no addresses, attempt to determine the country from org unit
settings.
If insufficient address data is provided or divined, return an invalid
params Event (similar to other CC failures).
To test:
[1] Create a patron record that has no mailing address but does
have a billing address. Perform or simulate a credit card
payment; it shoudl fail with an internal error.
[2] Apply the patch and repeat step 1; this time, the payment
attempt should succeed and use the billing address.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Dan Wells [Fri, 14 Dec 2012 18:39:21 +0000 (13:39 -0500)]
LP#1526547 Prevent bogus notes when adjusting lost/lod overdues
If you void/adjust an overdue, but don't supply a reason, the code
automatically adds "VOIDED FOR BACKDATE" to the billing note. This is
obviously wrong for overdues adjusted or voided due to lost (or long
overdue) processing.
This commit simply adds a more appropriate note.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Mike Rylander [Thu, 3 Dec 2015 21:13:09 +0000 (16:13 -0500)]
LP#1522538: Improper detection of jtitle search type
Before this change, the system would only check the first qtype URL parameter
to see if it needed to apply the journal title "bib_level(s)" filter. Instead
it should check each qtype in turn while it turns an advanced search into a
simple search string. Here the code is moved into place to accomplish that.
To test, load all test datasets into a fresh database. Perform an advanced
search on journal title for "proceedings" (no quotes) using the second search
input row. Before this commit, two records are retrieved. After, only one
is retrieved.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Jason Stephenson [Tue, 24 Nov 2015 18:57:33 +0000 (13:57 -0500)]
LP 1519465: POs with spaces in the name cause EDI problems.
This is a small modification to the regular expression for parsing
the id from the edi line item fields in EDIReader.pm that allows the
ids to parse correctly when the PO name contained a space or spaces
in it. This change was suggesting by Bill Erickson (berick) in
http://irc.evergreen-ils.org/evergreen/2015-11-24#i_216736
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Jason Boyer [Fri, 4 Dec 2015 06:17:21 +0000 (01:17 -0500)]
LP1522686: Force SSL for Web Staff, Add Basic Redirect for Staff URL
1 minor change, 1 less minor change.
First, add a simple redirect for staff that forget to enter the
final '/' at the end of <server>/eg/staff/.
Second, and most importantly, force all connections to the web
staff client to be redirected through an HTTPS connection. By
default the system would accept whichever connection type you
enter by hand, and fewer and fewer people actually enter the
protocol specifier these days.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Ben Shum <bshum@biblio.org>
Galen Charlton [Wed, 30 Dec 2015 16:00:26 +0000 (11:00 -0500)]
LP#1530158: ensure that Business::OnlinePayment::PayflowPro is installed
Business::OnlinePayment::PayflowPro is a Perl module required if
the user wants to use PayflowPro as a credit card processor; without
it, attempts to make payments in TPAC using that processor will fail
with an internal server error.
This patch ensures that the module will get installed on Debian,
Ubuntu, and Fedora.
Strictly speaking, the Perl module is strictly optional, as
Business::OnlinePayment uses lazy loading for its drivers, but this
patch is making the assumption that its easiest all around if
we just install all dependencies that an Evergreen application
server might need.
To test
-------
[1] Install or upgrade Evergreen, then run settings-tester.pl to
verify that the module is installed.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Wells [Thu, 13 Feb 2014 16:56:19 +0000 (11:56 -0500)]
LP#1526543 Truthiness check for reset_password is flawed
We expect boolean options in config.tt2 to be 'true' or 'false',
but the code was simple asking 'IF reset_password', which is true
for either value.
Instead, match on the string (as we do in other places).
To test:
- Load the stock catalog login page
- Notice the "Forgot your password?" link staying no matter which way
'reset_password' is set in config.tt2
- Apply patch, and change 'reset_password' value in config.tt2 to 'false'
- RESULT: Password reset link doesn't show up
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Ben Shum <bshum@biblio.org>
Josh Stompro [Wed, 25 Nov 2015 19:36:08 +0000 (13:36 -0600)]
LP#1519925 - Allow MARC Federated Search to search UPC index of local catalog.
If a organization added UPC search for certain Z39.50 servers then the UPC search box
would display in the MARC Federated Search interface, but the local catalog would
not be searched. This adds the ability to search the local catalog "Evergreen Catalog"
UPC index from that interface.
Confirm the Issue:
1. To trigger the initial problem you need a Z39.50 server setup that includes a UPC
Search. For OCLC the following Z39.50 attributes add UPC searching.
Name:upc, Label:UPC, Code:1007, Format:4, Truncation:0
2. Now the MARC Federated Search should include a UPC search option. Try searching
for a UPC that exists in the local catalog. Nothing should come up.
After patch applied:
1. Now if you search for a UPC in the MARC Federated Search that you know exists,
it will show up.
Signed-off-by: Josh Stompro <stomproj@larl.org> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Kathy Lussier [Wed, 18 Nov 2015 21:24:14 +0000 (16:24 -0500)]
Docs: Missed some acknowledgements in the 2.9.1 point release notes
Missed a few ackwnowledgements in the release notes. Apologies to those who
I missed. Also added bshum since he made a doc change after the release notes
were merged.
Kathy Lussier [Wed, 18 Nov 2015 00:13:57 +0000 (19:13 -0500)]
Adding bug fixes and acknowledgements to 2.9.1. Release Notes
The structure of these point release notes is a little different from what
we did with the 2.8 series. I restructured the headings a bit so that there
is just the one level one header. The two headers in the 2.8 release notes
led to a confusing outline.
Also, I'm adding acknowledgements for each point release rather than adding the
entire batch at the bottom of the file. There are two reasons for this change:
1. The release notes in the official documentation are broken up into different
sections, whereas the ones on the downloads page are available all on one page.
In the official docs, it appeared as if everyone being acknowledged had
contributed to the .0 release, when, in actuality, some had contributed patches
in other point releases. By adding acknowledgements to every point release
section, it is clear who contributed to which release.
2. Consistent contributors get acknolwedgement for every point release they
contribute to, which is a nice thing to do.
Because phrases are subqueries, we need to look at the top of the parse tree
when looking for modifiers for cover density. This is because modifers are
normally only allowed at the top of the parse tree (or in the floating sub-
query). We do that by asking the plan's QueryParse for it's reference to its
parse_tree member, which is always the top of the parse tree in QP.
Included in this commit is a small change to the QP testing script to
facilitate testing of this fix.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
This little patch will open up the acq copy location dropdown UI
to include other library's copy locations outside of the workstation
registration. When the user permissions are scoped to more branches.
Steven Chan [Thu, 19 Sep 2013 19:51:35 +0000 (12:51 -0700)]
Fix LP1175711, OPAC can't renew item on booking resource list
A test sequence to show the behaviour before and after the fix:
1. Using staff client, check out an item to test account.
2. Go to Copy Details on the OPAC, click Book Now, and cancel the form;
the side effect is to put the item on the Resource list.
3. Using the OPAC on a web browser, log in with test account.
4. Go to Items Checked Out, select the item in the list and click Renew
Selected Items.
Before the fix, we saw the OPAC spin forever, and we saw the Javascript
console of the web browser log the error noted in previous comments.
With the fix, we see an error prompt saying, 'The system is unable to
renew the selected item at this time. This usually means the item is
needed to fulfill a hold. Please see a librarian for further help.'
Note: A patron with the normal group of permissions will not be able to
renew an item on resource list.
The fix is to check for an error object emitted by the function
Booking.pm/reservation_list_by_filters(), and to propagate it back to
the client, by returning a call to bail_on_events().
We also clarify the coding of the function's parameter list and how the
function checks for mandatory parameters.
Jason Stephenson [Mon, 16 Nov 2015 21:15:22 +0000 (16:15 -0500)]
LP 1516786: 0938 Upgrade Script ends in END and not COMMIT.
Change the END; on the last line of 0938.data.some_rda_attributes.sql
to COMMIT; for reasons of consistency and to avoid issues when wrapped
in larger upgrade scripts using the make release script.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
It was previously possible to delete reserved rows in
the acq.cancel_reasons table via the UI. We take a belt
and suspenders approach here:
1) Grey out the checkboxes beside cancel reasons with an
ID lower than 2000.
2) Create a trigger on the acq.cancel_reason table that
prevents deletion of rows with an ID lower than 2000.
The trigger executes a new generally available function
for use in similar situations in the future.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Galen Charlton [Thu, 29 Oct 2015 15:39:16 +0000 (15:39 +0000)]
LP#937789: various improvements to logical deletion of parts
This patch ensures that when a monograph part is marked as
deleted, that mappings between it and its copies are also
removed, similar to the previous behavior of the cascade
on delete.
This patch also adds some pgTAP tests and ensures that
unapi.bmp() and unapi.holdings_xml() get updated during upgrade.
To test the fix for this bug:
[1] Apply the patches.
[2] Create a monograph part on a record, then delete it. Verify that
it no longer shows up in the parts maintenance interface, but that
a row in the biblio.monograph_parts table still exists with the
deleted flag set to true.
[3] Create another monograph part on the same record.
[4] Create a new volume/copy and assign the part created in step
3 to it. Verify that the part shown in step 2 is *not*
included in the XUL part selector.
[5] Place a part-level hold. Verify that the hold request
is displayed correct in both the public catalog and the staff
interface.
[6] Delete the part created in step 3.
[7] Verify that viewing the list of the patron's holds in the XUL staff
client doesn't result in any 'network errors'. Also verify that
the hold request is still displayed in patron's view in the public
catalog.
[8] Using SQL or some other means, set the expire_time and
prev_check_time of the test hold request to a couple days in the
past, then run the hold targeter. Verify that the hold gets
cancelled for lack of a suitable copy to fill it.