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>
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>
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>
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>
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>
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>
Galen Charlton [Wed, 17 Aug 2016 14:53:19 +0000 (10:53 -0400)]
LP#1476049: disable serve-cgi-bin Apache config on Jessie and Xenial
This patch ensures that the stock Apache configuration
"serve-cgi-bin" is disabled when installing on Debian Jessie
and Ubuntu Xenial, as otherwise the default cgi-bin location
can override what Evergreen specifies for offline.pl.
To test:
[1] Run the Makefile.install step on Jessie or Xenial; verify
that there is no /etc/apache2/conf-enabled/serve-cgi-bin.conf
symlink.
[2] Proceed with the rest of the Evergreen installation; verify
that the Apache error log doesn't contain a warning like this:
"The Alias directive in /etc/apache2/sites-enabled/eg.conf ...
will probably never match because it overlaps an earlier
ScriptAlias."
[3] For extra credit, verify that one can access offline circulation
sessions.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Adds support for a class of cached value (AKA "LoginSession" items)
that are cleared when either the user logs out or the browser is closed.
Values are stored as cookies.
Authentication tokens and "retrieve last patron" data are now stored as
"LoginSession" items.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Store most recent patron ID via cookie instead of localStorage so the
value can expire when then browser is closed.
Adds angular-cookies (ngCookies) dependency.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Conflicts:
Open-ILS/web/js/ui/default/staff/bower.json
Bill Erickson [Thu, 4 Aug 2016 21:56:32 +0000 (17:56 -0400)]
LP#1522635 Webstaff lost (etc.) checkout completes
Resolves an issue in the browser client where checkout of LOST
(and other non status='checked out' copies) failed to show the
open-circ-exists dialog. In short, when searching for an existing
open circulation, look for any open circulation linked to the copy,
regardless of the status of the copy.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Galen Charlton [Fri, 10 Jun 2016 22:21:31 +0000 (18:21 -0400)]
webstaff: add admin interface for MARC tag tables
This is a simple interface using eg-edit-fm-record to start;
more work will be required to better deal with the semantics
for overriding tag definitions at various levels of the OU
hierarchy.
It seems Angular 1.5 is either less flexible or less forgiving in its
ng-repeat implementation, and does not like an orderBy filter on object
iterators. Removing that, and the track by clause, allows the holdings
editor to render properly.
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Bill Erickson [Sun, 15 May 2016 16:51:24 +0000 (12:51 -0400)]
webstaff: egAudio HTML5 audio service
egCore.audio.play('audio.event.dot.path');
Service to look up audio URL's by key name. Supports fall-thru behavior
where 'foo.bar.baz' will fall-thru to 'foo.bar' and 'foo' depending on
whether an audio file is avaialable.
Galen Charlton [Thu, 12 May 2016 16:27:11 +0000 (12:27 -0400)]
LP#1581126: webstaff: make egDateInput respect format.date OUS
This patch makes the egDateInput directive fetch the
date format from the format.date library setting. The
directive also now accepts a dateFormat attribute for cases
where there is a reason to override the library setting.
If no format is set via library setting or in how the
directive is invoked, the format defaults to "mediumDate",
e.g., "May 2, 1999".
To test:
[1] Open the webstaff patron registration form. Verify that
date widgets display the date in the format that
corresponds to the value of the format.date library setting
for the current work station, or (if the library setting
is not set, "Month day, year".
Galen Charlton [Wed, 11 May 2016 17:17:55 +0000 (13:17 -0400)]
webstaff: add server administration page
This patch adds a landing page for Server Administration and
code to embed all of the admin pages available under Serer
Administration in the XUL staff client.
TODO:
* fix the permission groups editor so that it works
when embedded in the web staff client
* refactor admin/local/app.js and admin/server/app.js to
unify some of the copy and pasting
* replace the embedded legacy OU editor with a new
angular one
* fixes some CSS issues that make text hard to read in
a few places
Galen Charlton [Wed, 4 May 2016 19:04:23 +0000 (15:04 -0400)]
webstaff: work log: various improvements
* Don't use $location.path() to generate a URL for when opening
a new window, as that can cause the parent window to reset
itself.
* Fix the refresh button
* Add support for paging through worklog entries
* Don't prematurely resolve the promise that is
feeding rows to the grid
* Ensure that entries are displayed in timestamp order
Jim Keenan [Fri, 12 Aug 2016 18:51:28 +0000 (14:51 -0400)]
lp1592934 removed lines referencing edition fields 534 and 775. These fields refer to other, different editions of the work and not to the work actually being returned.
Signed-off-by: Jim Keenan <jkeenan@cwmars.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Galen Charlton [Thu, 11 Aug 2016 12:20:34 +0000 (08:20 -0400)]
LP#1612054: unbreak test case now that SSN is no longer an ID type
The patch for bug 1566016 broke the live_t/17-lp1579225_new_patron_passwords.t
test, as it used a patron ID type that is no longer in the seed
data. This patch fixes the test.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <ben@evergreener.net>
Dan Wells [Tue, 9 Aug 2016 19:50:50 +0000 (15:50 -0400)]
LP#1611495 Don't use .xml for MARC21 files in Vandelay Export
The new 'Export Non-imported Records' feature in Vandelay (see bug
LP#1548147) was tweaked before merge to export MARC21 files by default
(rather than MARC-XML). However, the file save dialog still defaults to
(and filters by) ".xml" for the file extension. This is confusing and
otherwise problematic.
Let's go ahead and save the export using a ".mrc" extension instead.
While not an official extension (as far as I know), it is widely used,
easy to understand, and far less likely to cause issues with other
software.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
The previous patch had a side-effect of changing the 852$d
value from the circ library's shortname to its long name. This
patch restores the previous behavior.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Galen Charlton [Wed, 26 Aug 2015 17:59:37 +0000 (17:59 +0000)]
LP#1037553: bibliographic record source now copied to 901$s
If a bibliographic record has a source set, the name of that source
is now copied to the 901$s whenever the record is created or updated.
This allows the source to be used for record matching and MARC
field queries.
To test:
[1] Create or import a bibliographic record and ensure that its
source is set to a non-null value.
[2] Inspect the record in MARC format view and verify that its
901 field now has a subfield $s containing the name of the
source.
[3] Use pg_prove to run the pgTAP test added by this patch
and verify that the test passes.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
LP 1503867: Use ws_ou in open-ils.circ.copy_transit.receive.
After putting NCIPServer into production, we discovered that a staff
user cannot receive a transit destined for their work org. unit if
the actor.usr.home_ou is not the same as their current work_ou.
This occurred because transit_receive in OpenILS::Application::
Circ::Transit uses the requestor's home_ou and not the ws_ou.
If you want to trigger this bug, write a little script to receive
transits, then login with a staff account at a location other than
their home_ou and try to receive a transit destined for the work_ou.
It will fail.
This small commit replaces home_ou in two places with ws_ou in order
to make the above work.
NOTE: This bug affects an API call not used in Evergreen except in
one test script. It used in two ILL add-ons for Evergreen: issa and
NCIPServer. Receiving transits by checking copies in via the staff
client, the typical workflow, is not affected by this bug or its fix.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
KPAC config files must be cached per config path in order to support
cases where more than one KPAC interface has been configured in different
vhosts or locations.
Signed-off-by: Liam Whalen <liam.whalen@bc.libraries.coop> Signed-off-by: Mike Rylander <mrylander@gmail.com>
LP#1575177 Add text informing users they cannot add survey questions
Survey questions cannot be added or modified once a survey has started, so
let's add some warning text in the interface letting them know why they can't
perform these actions.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
For Content Cafe, jam two B&T entrys into the hash so that Business::ISBN
doesn't register them as invalid prefix ISBNs.
B&T uses internal ISBN's with country codes 630 and 631 for materials
ordered through them when no assigned ISBN exists. The ContentCafe
added content service knows about these ISBNs, but they are not generally
used by other providers.
To Test: This only works if you are using the ContentCafe added content provider.
- Before Patch -
1. Add the isbn 9786315820243 as the only isbn on a record. Remove UPCs also..
2. Clear the added content cache by restarting memcached or using the staff link.
3. View record in catalog and you should see no cover art.
- After Patch -
1. Clear the added content cache.
2. View the record in the catalog and you should now see cover art for the title
"Video games: the movie"
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Josh Stompro <stomproj@larl.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
LP#1604515: Remove Advanced Hold Options link when part holds are expected
This branch removes the Advanced Hold Options link from the Place Hold
screen in cases where all copies on the bib record contain parts. If a user
attempts to place a metarecord hold and all other copies in the group also
contain parts, the hold will fail. By removing the link, we are removing one
potential point of failure for the user.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
LP1534283 SIP prevents renewal when user has any blocking standing penalties
This code dives into each penalty to investigate weather or not the patron
can renew based on the block list column. Before, SIP would block renewals with
the presence of penalty 1 or 2 regardless.
Signed-off-by: blake <blake@mobiusconsortium.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Jason Stephenson [Thu, 17 Mar 2016 21:47:52 +0000 (17:47 -0400)]
LP 1501781: Make patron name search diacritic/space insensitive.
Add pgtap tests for the new org unit setting, the new indexes, and to
test the evergreen.unaccent_and_squash() functionality. Many of the
latter tests are based on the tests for evergreen.lowercase().
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Jason Stephenson [Thu, 17 Mar 2016 12:01:54 +0000 (08:01 -0400)]
LP 1501781: Make patron name search diacritic/space insensitive.
This commit adds the necessary code to storage actor publisher to use
the new evergreen.unaccent_and_squash db function when doing a patron
name search.
It is based on code originally by Dan Pearl, but then modified to
remove a dependency on a new Perl module by calling the db function on
the search input as well.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Dan Pearl [Thu, 1 Oct 2015 13:49:17 +0000 (09:49 -0400)]
LP#1501781 - Make patron name search diacritic/space insensitive.
Diacritical marks may exist in the patron record, as they should, but
this makes patron name search difficult for librarians who may be
unfamiliar with all the special characters used and also how to elicit
them from a keyboard. To ease this, accented characters will be
converted into their 'plain' analogs for comparison purposes.
So, for example, if the patron's last name is Chávez, typing "Chavez"
in the Last Name box in Patron Search will match it.
Spaces in a name (like "De la Croix") will be squashed out so that
name would be matched by "Delacroix" or "De la Croix" or variants.
The librarian can enter the accented characters or not.
Signed-off-by: Dan Pearl <dpearl@cwmars.org> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Jason Boyer [Fri, 13 May 2016 16:51:07 +0000 (12:51 -0400)]
LP1183964: Payment Limit Options
Add support for 2 new OU settings, a payment warning
amount (try to pay more than this and you're required
to confirm it) and a hard limit where no payment larger
will be accepted. Support is also added to both the XUL
client and webstaff client.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Jeanette Lundgren <jlundgren@cwmars.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Rearranging the order of the various sources of hold
failure messages makes it less likely to see spurious
"Item is too new to transit this far" messages. Now
errors due to excessive fines or number of existing
holds.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Conflicts:
Open-ILS/src/templates/opac/parts/place_hold_result.tt2
LP#1588543: tests for verifying correct generated of record attributes
This patch adds tests to verify that the expected
set of record attributes are generated when a bib record
is ingested. The tests serve a couple purposes:
- verifying that changes to the record attribute ingest
stored procedure don't have unexpected side-effects
- validating record attribute definitions in the seed data
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
LP#1588543: further speed up record attribute ingest
Following a suggestion from Dan Wells, this patch adds
an index on config.coded_value_map(ctype). My testing shows
that the index by itself can halve the time required to
fully ingest a new record; in conjunction with the
change in the previous patch, full reingest time is
reduced by about 60%.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
A huge number of rows (700+) have been added to
config.record_attr_definition in recent versions of Evergreen. However,
these rows do not actually define any indexing at all, but are used for
other purposes. The reingest process currently churns over all of these
rows to ultimately do nothing.
This commit limits the group of attributes considered at ingest to only
those which might index something. Testing indicates a substantial
speed boost to typical use of metabib.reingest_record_attributes()
(over 2x speedup).
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Dan Scott [Mon, 1 Aug 2016 22:09:04 +0000 (18:09 -0400)]
LP#1608711: Update schema.org property name from "seller" to "offeredBy"
Per the 2015-11-05 release of schema.org
(http://schema.org/docs/releases.html#v2.2), the "offeredBy" property is now
the preferred property to use for non-commercial entities (such as libraries)
making an offer of an item for borrowing, sale, etc.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <ben@evergreener.net>
LP#1549505: Decrease value of Max popularity importance multiplier
My testing found that a setting between 1.1 and 1.2 resulted in fairly good
results when using the popularity-adjusted relevance sort. Adjusting the value
in the seed data to 1.1 since it will be a better starting point for libraries.
We need to be sure that all query values are of the same type in the same
columns because PLPGSQL functions are compiled and cached. In this case,
the core query of the in-db search cannot have its shape change. This
commit assures that browse and search uses of the SP provide core queries
that match on their SELECT lists. Of particular importance is the type
of the "rel" output column, which was variously float8 or numeric, depending
on whether the search contained any terms (a "search") or not (a browse
link).
This patch ensures that the core query passed to
query_parser_fts by staged browse contains dummy
badges and popularity columns (and thus, doesn't break);
note that browse itself cares nothing about popularity.
Galen Charlton [Fri, 11 Mar 2016 18:27:03 +0000 (13:27 -0500)]
LP#1549505: add flag to tweak popularity-adjusted relevance
This adds a new global_flag, search.max_popularity_importance_multiplier,
to control the factor by which popularity affects Popularity Adjusted
Relevance ranking.
The value should be a decimal number, typically between 1.0 and 2.0:
* 1.0 be would be equivalent to not adjusting relevance for popularity
at all.
* 1.1 would mean that the multiplier would range from 1 (for zero
popularity) to 1.1 (for maximum popularity), for a maximum boost of
10% of the base relevance value of the record.
What's happening in the code:
Scale the 0-5 effect of popularity badges by providing a multiplier
for the badge average based on the overall maximum multiplier. Two
examples, comparing the effect to the default $max_mult value of 2.0,
which causes a $adjusted_scale value of 0.2:
* Given the default $max_mult of 2.0, the value of
$adjusted_scale will be 0.2 [($max_mult - 1.0) / 5.0].
For a record whose average badge score is the maximum
of 5.0, that would make the relevance multiplier be
2.0:
1.0 + (5.0 [average score] * 0.2 [ $adjusted_scale ],
This would have the effect of doubling the effective
relevance of highly popular items.
* Given a $max_mult of 1.1, the value of $adjusted_scale
will be 0.02, meaning that the average badge value will be
multiplied by 0.02 rather than 0.2, then added to 1.0 and
used as a multiplier against the base relevance. Thus a
change of at most 10% to the base relevance for a record
with a 5.0 average badge score. This will allow records
that are naturally very relevant to avoid being pushed
below badge-heavy records.
* Given a $max_mult of 3.0, the value of $adjusted_scale
will be 0.4, meaning that the average badge value will be
multiplied by 0.4 rather than 0.2, then added to 1.0 and
used as a multiplier against the base relevance. Thus a
change of as much as 200% to (or three times the size of)
the base relevance for a record with a 5.0 average badge
score. This in turn will cause badges to outweigh
relevance to a very large degree.
The maximum badge multiplier can be set to a value less than
1.0; this would have the effect of making less popular items
show up higher in the results. While this is not a likely
option for production use, it could be useful for identifying
interesting long-tail hits, particularly in a database
where enough badges are configured so that very few records
have an average badge score of zero.
Mike Rylander [Thu, 4 Feb 2016 22:19:03 +0000 (17:19 -0500)]
LP#1549505: Add ability to set default sorter via global flag
In addition, support for sorting by ascending popularity remains
in the back end, however, since if one's configured badges such
that almost every record has a badge score, that sort order could
be useful for examining the long tail of the collection.