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>
The functions search.facets_for_record_set and
search.facets_for_metarecord_set that were added in the 0958 upgrade
script from Launchpad Bug #1505286 are not compatible with PostgreSQL
9.1. This commit makes them compatible with Pg 9.1 for those who need
it.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Jeff Davis [Tue, 12 Jan 2016 19:58:13 +0000 (11:58 -0800)]
LP#1533329: Selectively disallow opt-in based on patron's home library
Patrons from Library A can "opt in" to sharing their personal
information with Library B. However, hitherto there has been no way for
Library A to prevent their patrons from being opted in at other
libraries. This would be useful if, for example, Library A is a school
library and does not want other libraries in the consortium to have
access to student accounts.
This commit adds the ability to selectively disallow opt-in by home
library. Specifically, it makes the following changes:
1. Adds an org setting (org.restrict_opt_to_depth) that governs opt-in
restrictions. All org units within the home OU's section of the org
tree at or below depth X are within the patron's opt-in scope; opt-in is
disallowed at any library outside of that scope. If the setting is not
enabled, the entire org tree is effectively within scope. (None of this
should be confused with the opt boundary, which defines the point at
which patrons need to be opted in vs. just granting access without
opt-in.)
2. Modifies open-ils.actor.user.org_unit_opt_in.check so that it checks
that setting and determines if the current work OU is within the
patron's opt-in scope. If opt-in is not permitted at this work OU,
an appropriate response is returned.
3. Handles the response in both staff clients. If opt-in is disallowed,
staff will see an alert which says, "This patron's record is not
viewable at your library."
Signed-off-by: Jeff Davis <jeff.davis@bc.libraries.coop> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Define all fixed fields for use in the MARC editor and
add acceptable values for context menues. Also define
composite coded values for special multi-position
single character fields.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
LP#1391282: Add Auto-Submitted: auto-generated header to included A/T email templates.
This patch updates various stock A/T definitions for
email notifications to add the following email header:
Auto-Submitted: auto-generated
This specifies to email clients that the message was
generated by a computer program and that no automatic
response is desired (particularly out-of-office/vacation
responses).
No upgrade script is provided; administrators who
wish to use this header for existing notices should
update them manually.
Mike Rylander [Sun, 28 Sep 2014 20:37:33 +0000 (16:37 -0400)]
LP#1375043: Support for in-A/T telephony configuration
The AstCall reactor module creates a callfile for Asterisk, given a
template describing the message and an environment defining
necessary information for contacting the Asterisk server and scheduling
a call with it.
If you have only one SIP server, you can set it up like this in the
opensrf.xml configuration file:
<telephony>
<!-- replace all values below when telephony server is configured -->
<enabled>0</enabled>
<driver>SIP</driver> <!-- SIP (default) or multi -->
<channels> <!-- explicit list of channels used if multi -->
<!-- A channel specifies technology/resource -->
<channel>Zap/1</channel>
<channel>Zap/2</channel>
<channel>IAX/user:secret@widgets.biz</channel>
</channels>
<host>localhost</host>
<port>10080</port>
<user>evergreen</user>
<pw>evergreen</pw>
<!--
The overall composition of callfiles is determined by the
relevant template, but this section can be invoked for callfile
configs common to all outbound calls.
callfile_lines will be inserted into ALL generated callfiles
after the Channel line. This content mat be overridden
(in whole) by the org unit setting callfile_lines.
Warning: Invalid syntax may break ALL outbound calls.
-->
<!-- <callfile_lines>
MaxRetries: 3
RetryTime: 60
WaitTime: 30
Archive: 1
Extension: 10
</callfile_lines> -->
</telephony>
To support more than one SIP server, say, per library, you can use
Action/Trigger parameters like these, which model the same information
as above:
Terran McCanna [Thu, 25 Feb 2016 21:26:46 +0000 (16:26 -0500)]
LP #1466173 Selfcheck Hide UI Elements Until Patron Auth
Currently, there are visible elements on the lower portion of the
login screen that the patron cannot use until after authenticating.
This patch hides those elements except when the patron is authenticated.
Mike Rylander [Thu, 2 Jul 2015 18:44:25 +0000 (14:44 -0400)]
LP#1470957: Normalize date1 (pubdate sorter) to null when not numeric
We supply a normalizer function for making sure date-ish values are
always numeric (several, in fact) but we don't enable them by default
for appropriate fields. This does that.
Additionally, we allow NULL sorters so that the reingest of a "broken"
record will get fixed.
We avoid the need for a reingest to cover the sorter issue by removing
non-numeric pubdate sorters.
To test
-------
[1] Identify some records where the Date1 value in the 008 field
is '||||'.
[2] Perform a catalog search that includes some of those records
and sort by publication date newest to oldest. Note that
the |||| records sort at the top.
[3] Apply the patch and perform the schema update.
[4] Perform the search again (possibly clearing the search
results cache first). This time, the |||| records should
sort near the end.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Jennifer Pringle <jennifer.pringle@bc.libraries.coop> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Galen Charlton [Tue, 16 Feb 2016 20:36:26 +0000 (15:36 -0500)]
LP#1492793: teach Clark Kent to set the Pg app name
Clark Kent can now also use the application_name
setting in the relevant sections of opensrf.xml to
set the Pg application name.
To test:
[1] Apply the patch, restarting opensrf.settings, and
start Clark.
[2] Run a report that will take at least a minute to
finish. While it is running, query the pg_stat_activity
table. There should be at least one row where the
application_name column is set to 'Clark Kent (reports)'.
[3] Note that since the master Clark process opens a database
connection, checks whether there are any reports to run,
then immediately closes the connection, it's unlikely that
you'll catch a 'Clark Kent (state)' connection when
querying pg_stat_activity.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Jason Boyer [Sun, 6 Sep 2015 16:58:49 +0000 (12:58 -0400)]
LP1492793: Support Application Name Postgres Option
If app_settings/database/application_name is defined,
connections by that service will have the application_name
postgres option set, allowing log analyzers to associate
queries and services.
To test:
[1] Apply the patch and restart OpenSRF services.
[2] Query the pg_stat_activity table in the PostgreSQL
database; the application_name column should now
be populated with values like 'open-ils.cstore'
or 'open-ils.storage' that indicate which Evergreen
service holds the database connection.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
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>
Galen Charlton [Mon, 19 Oct 2015 20:41:12 +0000 (20:41 +0000)]
LP#1516022: new reporting source for hold/copy ratios
This patch adds a new reporting source, "Hold/Copy Ratio per Bib
and Pickup Library (and Descendants)", that, for each bib
that has a hold request on it or any of its components,
calculates the following:
- active holds at each OU (including the OU's descendants)
- holdable copies at each OU (and its descendants)
- the ratio of the above two counts
- counts and ratio across the entire consortium
This work was sponsored by the Pennsylvania Integrated Library
System (PaILS).
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>
Galen Charlton [Wed, 2 Mar 2016 19:32:35 +0000 (14:32 -0500)]
LP#1519911: upgrade script to fix self-checkout receipt A/T template
This patch adds an update to fix the "lb_addr.post_code" typo
in the stock A/T event definition for self-checkout receipts.
This update changes the definition *only* if it has not
been customized by the user, and it does not attempt to
fix any copies of that definition.
To test
-------
[1] Upon applying the update, generate a receipt from the
web-based self-check interface. The library's postal
code (if set) should now display in the receipt.
- The html table was broken, fixed the markup.
- Added some styling to the table.
- Added a row with total records info.
- Fixed the progress bar popup; it now displays
percentage completion and has a title so it is
wide enough to do so
- Added color to failed row (red), and to completion text (green).
To test:
[1] In the staff interface (both XUL and web), perform
a MARC Batch Edit on a bucket that contains at least
a few bib records.
[2] Verify that the progress dialog now displays the
percentage completion of the batch edit; verify
that there is now a row displaying the total number
of records.
[1] Using MARC Batch Import/Export, load a file
of MARC records into a queue (arranging the matching
criteria so that at least a few of the records
aren't automatically imported into the catalog).
[2] Inspect the queue, and click on the "Export Non-Imported
Records link", then save the resulting file.
[3] Verify that the file contains, in MARC format, the set
of records that were not imported into the catalog.
Dan Wells [Thu, 25 Feb 2016 16:44:23 +0000 (11:44 -0500)]
LP#1548147 Quick Export Feature for Vandelay Queues
When we import records into Vandelay, sometimes some of the records
are not what we expected, so they get rejected. These records often
need to be loaded using a different set of options, so this link makes
it convenient to get a new file of just the rejects.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Ensure all TT code lives within the [% ... %] blocks. This fixes an
issue where TT code "ctx.metalinks.push('');" was appearing in the
catalog as bare text.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Back in bug # 1414033 , we added rel="nofollow" attributes to many of the links
that led to search results or call number browsing. This was the right idea,
but a bit overzealous as it turns out. We actually want search engines to
follow those links; we just don't want search engines to index them.
Therefore, we can tweak the <meta> tag in the results and browse page headers
to say "follow,noindex", and remove many of the inline rel="nofollow"
attributes from the other pages.
In addition, add a rel="canonical" link to the catalogue home page.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <ben@evergreener.net>
Conflicts:
Open-ILS/src/templates/opac/parts/record/subjects.tt2
Jake Litrell [Tue, 1 Mar 2016 22:22:28 +0000 (17:22 -0500)]
LP#1312699: Minor modifications to patron checkout history deletions
Minor modifications to make patron checkout history deletions work with
the new table. open-ils.actor.history.circ.clear
extended to take an optional list of circ_ids, to limit what's deleted
from the history.
Dan Pearl [Tue, 20 Oct 2015 21:05:07 +0000 (17:05 -0400)]
LP#1312699 - Add feature to allow user to edit their checkout history.
In the checkout history page, a new column and action selector is provided to allow
the paton to indicate items they would just as soon not want to see again in the
history list for whatever reason. NOTE: This is not a PURGE function; it simply
suppresses display of items in the history list (and exported history files).
Internally, the circulations are kept by Evergreen for several reasons which are
not affected by this functionality.
Signed-off-by: Dan Pearl <dpearl@cwmars.org> Signed-off-by: Josh Stompro <stomproj@larl.org> Signed-off-by: Jake Litrell <jake@masslnc.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Adding basic javascript to remove our search filter from the
textbox on an advanced search form. Because of the interplay among
various checkboxes/modifiers/filters, there may be duplicate filters
applied from another function's form submit; this removes all at once.
Signed-off-by: Jake Litrell <jake@masslnc.org> Signed-off-by: Ben Shum <ben@evergreener.net>
In 002.schema.config.sql there was a small typo for "z3950attr_name_is_valid"
where that should be "z3950_attr_name_is_valid" with the underscore between.
Rather than use a CHECK constraint, this patch
uses a CONSTRAINT TRIGGER, er, constraint to verify
the z3950_attr_type field. This allows the trigger
to be deferred as any other deferrable constraint
and also allows parallel pg_restore jobs to complete
properly.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Ben Shum <ben@evergreener.net>
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>
Dan Pearl [Fri, 2 Oct 2015 18:54:39 +0000 (14:54 -0400)]
LP#1197636 - Email record detail does not check for email
Even though no email was configured, the message shown when requesting
bib information to be emailed indicated success. This misleading
behavior has been addressed by alerting the patron of the situation
and providing a link to the page where the email address is defined,
after which the action is automatically retried.
The success message has also been altered slightly to provide
confirmation of the generated email.
To test:
[1] Create a patron account that does not have an email address.
[2] In the OPAC, log in as that patron and attempt to email a
bib record. A message should display indicating that the
email can be sent; that message should contain a link to the
user's account page where they can set their email address.
[3] After setting the email address, you should then be
redirected back and the email sent.
Signed-off-by: Dan Pearl <dpearl@cwmars.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <ben@evergreener.net>
Kathy Lussier [Thu, 25 Feb 2016 17:26:02 +0000 (12:26 -0500)]
LP#1422802 Fix javascript validation for visible parts
The previous javascript validation was not working for records with just one
part. This one works better. Many thanks to Dan Wells for identifying the fix.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <ben@evergreener.net>
Martha Driscoll [Mon, 22 Feb 2016 20:34:15 +0000 (15:34 -0500)]
LP1229757 - Distinct images for holds, reserves, transits
This commit changes the references to turtle.gif to three new images
holdshelf.png, reserve.png, and transit.png. When checking in a copy
that needs to go on the hold shelf, on the reservation shelf, or
in transit, a distinct image will show in the pop-up window.
This commit adds support for 'parts' import in Vandelay. It is
modeled after the existing support for stat cat import. As such, it:
- Uses '|' characters to separate labels to allow for multiple
part assignment.
- Adds to (rather than replaces) any existing parts assigned to overlay
copies.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Dan Wells [Tue, 26 Jan 2016 19:22:21 +0000 (14:22 -0500)]
LP#1468422 Use auth_internal.validate to shore up AuthProxy
Even if a user has valid credentials in the external system, we should
block them from logging in if their Evergreen account is out of sorts.
Use the API designed for this.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Previously, AuthProxy.pm would simply lookup and use the hashed password
when the external authentication had passed. This simple method no
longer works, since even cstore doesn't have access to the hashed
password.
Instead, take advantage of the new 'auth_internal' service to create the
user session after the user has been externally authenticated.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Basically, if we aren't given a username, and we can't find a username
by barcode, give up immediately. This helps simplify the rest of the
code a bit.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Avoid what may be an unacceptible login delay caused by work factor 14
by dropping down to 10. This reduces the CRYPT() time from ~1 second to
~.1 seconds.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Prevent leaking information from authentication by only reporting that a
card is inactive if the caller provided the correct credentials. This
is consistent with how the code handles inactive patrons.
To avoid a lot of code duplication and to reduce the potential for
leaking memory (C code, amiright?), this commit includes a number of
changes to avoid exiting the API function early and saving the memory
cleanup routines until the end of the API call.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
User update in Actor.pm was the only remaining code that leveraged
the open-ils.storage remote_update API. With that code moving to
open-ils.cstore, save some RAM by no longer auto-loading/publishing
remote_update methods.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>