Avoid requiring staff to send an Enter event (keyword / scanner) when
entering a patron barcode into the place holds form. Instead, look the
barcode up after a sufficient amount of time has passed.
Limit the authority_full_rec_value_index and
authority_full_rec_value_tpo_index indexes to the first 1024
characters of a field or subfield in order to avoid database errors
when inserting or updating authorities with long fields.
Include release note and regression test.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Lp 1942920: Show Legacy/Not Dated for Legacy Circs
When legacy circ counts are displayed in the AngularJS client, the
year shows up as -1. This patch attempts to replace -1 with a
translatable string: "Legacy/Not Dated" as was used in the XUL staff
client.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Bill Erickson [Wed, 22 Sep 2021 15:04:18 +0000 (11:04 -0400)]
LP1919465 Pull list only shows holds with current_copy
This avoids a scenario where copy-level holds would appear in the pull
list even if they are not pull-able, because they have "a copy" (i.e.
the requested copy), but no current copy (i.e. targeted copy).
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Bill Erickson [Wed, 22 Sep 2021 14:24:30 +0000 (10:24 -0400)]
LP1919465 Avoid dupe Current Item's in pull list
* Show a value for Current Item when a hold is targeted
* Show a value for a new column on Requested Item for copy-level holds.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Bill Erickson [Tue, 14 Sep 2021 15:04:10 +0000 (11:04 -0400)]
LP1919465 Pull List Mark Discard/Weed Action
Includes general purpose discard/weed dialog.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Rename various "Item Location ..." references to "Shelving Location ..."
in the Angular holds grids.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Bill Erickson [Tue, 14 Sep 2021 14:43:47 +0000 (10:43 -0400)]
LP1919465 Pull list detail show record summary
Display the bib record summary when displaying the hold detail view from
the holds pull list.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Bill Erickson [Tue, 14 Sep 2021 14:27:30 +0000 (10:27 -0400)]
LP1919465 Pull list prefix/suffix sorting; columns
* Include call number prefix and suffix in hold pull list sorting.
* Apply sane default grid columns.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Bill Erickson [Fri, 13 Aug 2021 16:02:01 +0000 (12:02 -0400)]
LP1919465 Fix default holds pull list sorting
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Bill Erickson [Fri, 12 Mar 2021 22:50:40 +0000 (17:50 -0500)]
LP1919465 Holds pull list Angular / Wide Holds API Port
Ports the holds pull list to Angular and takes advantage of the new Wide
Holds API. Includes seed data for grid preferences and a new holds pull
list (server) print template.
The UI displays the total holds count and includes a org unit selector.
It pre-fetches all holds, partly to display the full count, but also
based on the assumption that a pull list will typically be used all or
none.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
This patch enables mod_headers for Debian Stretch and Buster
and Ubuntu Bionic and Focal during installation. Without
mod_headers, the Angular staff client application can have
its index page cached for 24 hours on a stock system, meaning
that browsers will not consistently fetch the updated app
after an upgrade.
This patch does not change the Fedora Makefile as mod_headers
is enabled by default on RHEL-like distributions.
UPGRADE NOTES
-------------
Existing Evergreen systems on Debian and Ubuntu should
do the following to ensure that mod_headers is active:
To test
-------
[1] Perform a fresh installation of Evergreen on Stretch, Buster,
Bionic, or Focal.
[2] Verify that mod_headers is enabled.
[3] (Optional) Fetch the Angular staff client index page, e.g.,
/eg2/staff, and verify that the response headers call for
not caching it.
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Shula Link [Tue, 13 Jul 2021 14:16:39 +0000 (10:16 -0400)]
LP1834258 Replace Javascript with Placeholder Attribute
onfocus/onblur javascript replaced with placeholder="[% seed %]" in
Open-ILS/src/templates/kpac/getit.tt2 and
Open-ILS/src/templates/kpac/parts/searchbox.tt2
Signed-off-by: Shula Link <slink@gchrl.org> Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Mike Rylander [Mon, 26 Oct 2020 19:26:09 +0000 (15:26 -0400)]
LP#1901597: Allow multi-subfield match in vandelay.strip_field
Now, when supplying a subfield match restriction for use with
vandelay.strip_field, you can separate multiple restrictions with '&&'
(no quotes). For instance, to remove a Located URI 856 for for a
combination of a specific owner and a specific domain, you might say:
856[u~oldservice.com && 9~MYLIB]
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Jason Stephenson [Fri, 20 Aug 2021 00:20:58 +0000 (20:20 -0400)]
LP1940146: Debian Bullseye Installation Support
Update documentation and prerequisite installation Makefiles to add
support for Debian Bullseye (11.0).
Use PKG_CHECK_MODULES instead of AC_CHECK_PROG to test for the
presence of yaz. This is done because of the following Changelog
entry:
yaz-config and its man page are no longer packaged. Please switch
to pkg-config (yaz, yaz-icu or yaz-server). This also makes the
package reproducible. Closes: #955501
This change works on all currently supported Evergreen distros. You
can test it by running autoreconf -f and then running the normal
configure command.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Jason Stephenson [Thu, 19 Aug 2021 19:16:52 +0000 (15:16 -0400)]
Lp1940145: Remove Installation Support for Debian Jessie
Remove references to Debian Jessie (8.0) in the installation and
upgrade documentation as well as from the prerequisite installation
Makefiles. Debian 8 has been out of long term support for over a year
at this point.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Jason Boyer [Mon, 16 Aug 2021 17:59:28 +0000 (13:59 -0400)]
LP1850156: Remove Browsers From *-developer Targets
Because the developer targets are currently necessary for a from-git
installation, both Firefox and Chrome are removed and the docs updated
to note that you should install one or both if you want to run the tests.
Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Bill Erickson [Mon, 2 Aug 2021 20:30:21 +0000 (16:30 -0400)]
LP1938729 Cache "cascade" setting values
Cache values retrieved from 'open-ils.actor.settings.retrieve' lookups
in IndexedDB, similar to to org unit setting lookups, to reduce the need
for so many API calls for settings retrieval.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
This change places the cursor in the user name field and adjusts the order
of the elements so that tabbing out of the user name field comes to the
password field next.
Note that this modifies both the login modal and the embedded login form.
Bill Erickson [Mon, 11 Jan 2021 15:59:54 +0000 (10:59 -0500)]
LP1911023 Batch hold cancel refreshes before completion
Ensure all hold cancelation promises complete before reporting the
results back to the caller. Issue was result of thinko in the code
that failed to relay one of the promises in the chain, so it reported
promise completion prematurely.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
A change in Perl release 5.26.0 necessitates that the SIP_DIR variable
(default value "/opt/SIPServer") be exported to the environment in
oils_ctl.sh when attempting to start SIPServer. This change affects
Ubuntu 18.04 (Bionic Beaver) and Debian 10 (Buster) and any future
releases.
To verify the bug:
1. Install OpenSRF, Evergreen, and SIPServer on an affected O/S.
2. Start OpenSRF service.
3. Start SIPServer via oils_ctl.sh:
oils_ctl.sh -a start_sip
4. Notice the "Starting OILS SIP Server" message is printed with no
indication of failure.
5. Verify that the PID file exists: /openils/var/run/oils_sip.pid
6. Verify that no SIPServer processes are actually running:
pgrep -af SIPServer
The above should produce no output.
To test this patch:
1. Apply this patch and install oils_ctl.sh to /openils/bin/.
2. Assuming you have run the previous steps, delete the PID file:
rm /openils/var/run/oils_sip.pid
3. Start SIPServer via oils_ctl.sh:
oils_ctl.sh -a start_sip
4. Notice the "Starting OILS SIP Server" message is printed.
5. Verify that the PID file exists: /openils/var/run/oils_sip.pid
6. `pgrep -af SIPServer` should produce output.
It is safe to apply this patch on an unaffected O/S. Explicitly
adding SIP_DIR to PERL5LIB will have no detrimental effect on any O/S
currently supported by Evergreen.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
Galen Charlton [Wed, 25 Aug 2021 22:21:03 +0000 (18:21 -0400)]
LP#1928275: fix the Angular "Copy Queue To Bucket"
Similar to bug 1934184, a blank routerLink on an anchor no longer
causes an ngbModal to open via a click handler.
To test
-------
[1] Create a MARC import bib queue that has at least one imported
record it.
[2] Click the "Copy Queue To Bucket" link from the queue inspection page
and observe that nothing happens.
[3] Apply the patch and repeat step 2. This time, the add-to-bucket dialog
should appear.
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org> Signed-off-by: Mary Llewellyn <mllewell@biblio.org> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
LP1924621 Staff catalog place hold screen preferred name
Displays the preferred first or last name on the place holds screen,
if a patron barcode is entered.
To test.
1. Set up a borrower with a preferred first name, and one with a
preferred last name, and one with both.
2. Use the catalog place hold screen to search for these borrowers
and notice that the preferred names, if available, are displayed.
* note newline added by Bill to break up wide column.
Signed-off-by: Garry Collum <gcollum@gmail.com> Signed-off-by: Mary Llewellyn <mllewell@biblio.org> Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Gina Monti <gmonti@biblio.org> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
Certain third-party products such as collection development
management providers require copy statistics that are not
readily available in a single report. This view adds those,
which will also benefit library staff reports generally.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Ruth Frasur <rfrasur@library.in.gov>
Mike Rylander [Mon, 24 Feb 2020 17:01:49 +0000 (12:01 -0500)]
LP#1864516: case-insensitive browse entry display value comparison
Following up on bug 1350831, there remains one complaint relating to
"bad data makes browse suboptimal" that can't actually be handled today
by the existing Evergreen code or a pullrequested branch: case differences,
particularly in titles.
We should allow an Evergreen admin to decide on a field-by-field basis
whether case should be considered when determining the uniqueness of a
browse entry coming from a bibliographic record, effectively allowing case
folding. Note that authority fields, being by definition the authorized
value that should be used, do not support this case folding. However, if
authority records are processed first, then bibliographic fields can fold
/into/ those authority fields, achieving the desired result and, in fact,
using the best possible case-preserving display value.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Elaine Hardy <ehardy@georgialibraries.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Dan Briem [Wed, 25 Aug 2021 14:24:12 +0000 (10:24 -0400)]
LP#1759382 Setting: staff placed holds default to workstation
New org unit setting to always default the pickup location to
the workstation when placing holds as staff, regardless of the
patron's preferred pickup location.
The setting applies to staff placed holds in the Angular and
traditional catalogs.
Priority for determining the default pickup location when
placing holds as staff:
1. workstation if circ.staff_placed_holds_default_to_ws_ou
2. user preferred location if opac.default_pickup_location
3. workstation if circ.staff_placed_holds_fallback_to_ws_ou
4. user home org unit
Jason Boyer [Mon, 19 Apr 2021 13:37:27 +0000 (09:37 -0400)]
LP1925028: Make Hold/Copy Ratio Reports Consistent, Add a By Home Library Version
Use ahcm for all hold/copy ratio reporting sources so the counts are more
consistent, ignore metarecord hold copies (by default) and the copies from
frozen or captured holds.
Also a Hold/Copy Ratio per Bib and Home Library source is added.
Sponsored-by: Westchester Library System Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org> Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Chris Sharp [Tue, 23 Mar 2021 23:03:32 +0000 (19:03 -0400)]
LP#1921057 - Expand reporter.demographic to include detailed age breakdown
Add "age_division" column to reporter.demographic. Expose the new
column to the reporter as "Detailed Age Division" resulting in the following
options:
Child 0-5 Years Old
Child 6-12 Years Old
Teen 13-17 Years Old
Adult 18-25 Years Old
Adult 50-59 Years Old
Adult 50-59 Years Old
Adult 60-69 Years Old
Adult 70+
Bill Erickson [Wed, 12 May 2021 20:31:20 +0000 (16:31 -0400)]
LP1928258 Vandelay separate bib edit update option
Adds a new field "Update Bib Edit Date" to Vandelay merge profiles which
allows users to update the edit date and editor information on a
merged/overlaid bib record without also having to modify the bib source.
For backwards compatibility, any existing merge profiles that have
"Update Bib Source" applied will also get "Update Bib Edit Date" applied.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Christine Morgan <cmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Bill Erickson [Wed, 12 May 2021 15:46:01 +0000 (11:46 -0400)]
LP1941764 Import from queue propagate form inputs
When importing records from an existing Vandelay queue, ensure the
selected queue, its match set, its match bucket, and its holdings import
profile are propagated into the import form.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Christine Morgan <cmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Tiffany Little <tlittle@georgialibraries.org> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
Building on the previous commit from Jason Etheridge, this adds an
Angular reimplementation of the item-oriented TEL variant. In addition,
it separates the grid settings persist key and creates the YAOUSen
needed to save those grid settings.
Because these interfaces make use of the flattener service to drive grid
construction and data retrieval, staff will have to have the appropriate
VIEW_USER permission to be able to see patron related data in the
item-oriented grid.
Funding for these interfaces comes from PaILS, for the patron-oriented
interface, and from ECDI, for the item-oriented one.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dawn Dale <ddale@georgialibraries.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Jason Etheridge [Wed, 29 Jul 2020 12:11:33 +0000 (08:11 -0400)]
LP1207533 patron triggered events log
* first cut at schema
* setting context_user, context_library, and context_bib on action_trigger.event
when building the environment
* toward UI
The original interface still exists and is used when spawned from Item Status,
but for the patron interface, the Other -> Triggered Events / Notifications
action will now spawn a new tab with the new interface.
* data retention
Break the link between actor.usr and action_trigger.event when purging user data
or aging circulations (as best as we can; some textual links may exist in
action_trigger.event_output--i.e. overdue notices)
* release notes
* live tests
Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org> Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dawn Dale <ddale@georgialibraries.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
LP#1642000 - Bootstrap Opac - Add CN Prefix, Suffix and Parts to opac checked out item display
Add Call Number Prefix, Call Number Suffix and Part to the call number column of
checked out items display. Also sort based on the label_sortkey value of those fields.
LP#1642000 - Add CN Prefix, Suffix and Parts to opac checked out item display
Add Call Number Prefix, Call Number Suffix and Part to the call number column of
checked out items display. Also sort based on the label_sortkey value of those fields.
Testing Notes:
Check out an asortment of copies to your patron account. Pick a mix of items with
Call number prefix and suffix, and some with parts.
View the list of checked out items in the myopac interface.
Notices that no call number suffix or prefix are showing, and no parts info is showing.
Apply the patch and see that the extra info is showing. Also try sorting on call number column.
Galen Charlton [Thu, 5 Aug 2021 21:55:18 +0000 (17:55 -0400)]
LP#1844121: prevent staff login by expired barcode
open-ils.auth.authenticate.init accepts an identifier as its
sole parameter, then determines whether it looks like a
username or barcode and retrieves the patron's password
salt as the seed accordingly.
open-ils.auth.authenticate.complete can accept the identifier
via the 'identifier', 'username', or 'barcode' keys, but the
key used does not need to match how .init found the patron.
As a consequence, the .init/.complete dance can retrieve the
patron by barcode but handle the barcode value as if it were
a username, thereby bypassing the check of whether the barcode
was inactive. In particular, the AngularJS staff client login
process does this, meaning that staff members can log in to the
staff client via the AngularJS form using an expired barcode.
This is not good. The OPAC explicitly blocks logging in using an
inactive barcode because it checks the identifier type and sets
the key passed to .complete accordingly. The Angular staff login
page also prevents logging in using an inactive barcode because
(a) it uses open-ils.auth.login, which doesn't have the same
problem and (b) it forces the identifier to be marked as a user
name regardless.
NOTE: this means that the Angular staff login form prevents staff
from logging in via barcode, which potentially is a regression as
compared to the AngularJS side (or, alternatively, is providing
additional necessary strictness).
This patch avoids the problem by having .complete inspect the
cached seed created by .init to determine how the user was ultimately
found.
Some alternative approaches that were rejected include:
[1] Having AngularJS just mirror Angular. Problem: if some staff
users are used to using their barcode to log in, doing
this would cause an immediate problem. I note that because
the staff interface URL is commonly expressed as
https://library.example/eg/staff, is currently far more common
for the staff interface to be logged into via the AngularJS
form rather than the Angular one.
[2] Having AngularJS use open-ils.auth.login, but make it and
Angular use 'identifier' as the key rather than 'username'.
Problem: while this would have the desired effect if you
only use native authentication, if you're using open-ils.auth_proxy,
it won't work - open-ils.auth_proxy.login doesn't recognize an
'identifier' parameter. While that could be changed, it
is more invasive.
To test
-------
[1] Set up a staff user that has a username, an active barcode,
and an inactive barcode.
[2] Log in to the AngularJS staff interface (/eg/staff) using
the username, the active barcode, and the inactive one.
[3] Note that you are permitted to log in with all three identifiers.
[4] Apply the patch and repeat step 2.
[5] This time, logging in using the inactive barcode should
fail.
[6] Verify that other login types continue to work as expected:
- Angular staff login form
- OPAC
- SIP2 terminal login
- SIP2 user authentication
- operator change (Angular and AngularJS)
- Web-based self-check
[7] Extra credit: test logging in via open-ils.auth_proxy with
it falling back to native authentication.
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org> Signed-off-by: Shula Link <slink@gchrl.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Terran McCanna [Fri, 18 Jun 2021 22:12:08 +0000 (18:12 -0400)]
LP1904754 Former precat still displays precat info
This fixes a display issue where the precat title and author
were still displaying once the record was no longer a precat,
which effectively duplicated the title and author.
Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
- When creating a new funding source, default the active flag
in the modal to checked
- Disable actions to allocate from a funding source or
apply credits to it if it is not active
This adds an active flag to funding sources. It also adds limits the
available funding sources in the Create Allocation dropdown to only
active funding sources.