Bill Erickson [Tue, 3 Jan 2017 16:59:26 +0000 (11:59 -0500)]
LP#1653742 Copy tree authoritative API share cstores
Avoid opening one cstore connection per requested org unit in the
open-ils.cat.asset.copy_tree.retrieve.authoritative API by creating a
single shared cstore connection at the top of the API shared by all
API actions.
Jason Stephenson [Sat, 10 Dec 2016 01:45:33 +0000 (20:45 -0500)]
LP 1648918: Remove Workstation at Root of User's Permission Tree
If you register a workstation at the root of the user's permission
tree in the webstaff client, you are not able to later remove it. The
Remove button is dimmed. You can remove a workstation registered at
any other org_unit where the user has the REGISTER_WORKSTATION
permission.
To reproduce this bug, login as the admin user and register a
workstation at the CONS org_unit. Then, go to Workstation
Administration and see that the Remove button is dimmed.
To test the patch, do the same, but see that the Remove button is not
dimmed. When you click it, the workstation is also removed.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Current acq behavior is that received items get a
copy status of "In Process". This status is typically
holdable and opac_visible, and some libraries have a need
for an intermediate status between "On Order" and "In Process".
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Kathy Lussier [Fri, 6 Jan 2017 16:13:26 +0000 (11:13 -0500)]
LP#1654534: Prevent loop that occurs when staff us 'place another hold' link
A hidden field that tracked the page the user was on before placing a hold was
inadvertently removed in another bug fix. As a result, if staff used the link
to place another hold on the same title, they were stuck in a loop where they
couldn't return to the source page after hitting the 'continue' button. This
commit restores that hidden field.
Also provides a fix so that hold labels used in the place another hold link
can be translated.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <ben@evergreener.net>
Dan Pearl [Wed, 8 Feb 2017 22:57:20 +0000 (17:57 -0500)]
LP#1613341 - Patron name search should be punctuation-insensitive
O'Brien will be matched by Obrien, O'Brien, O Brien etc.
Grubbly-Plank will be matched by Grubbly Plank, Grubbly-Plank, Grubblyplank, etc.
This feature is controlled by the same org setting that controls ignoring
of diacritical marks.
Signed-off-by: Dan Pearl <dpearl@cwmars.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Galen Charlton [Mon, 6 Feb 2017 17:07:01 +0000 (12:07 -0500)]
LP#1541801: order search fields in Z39.50 alphabetically
This patch causes search fields in the Z39.50 search interface
in the web staff client to be place in alphabetical order by
field label.
To test:
[1] Open the Z39.50 search page in the web staff client and select
one or more search services.
[2] Verify that the list of fields is ordered alphabetically.
1) Use a unicode X instead of the string "Remove"
2) Provide a border around filters
3) Label filters with "Filtered by"
4) Only show "[X filters applied ]" when in mobile mode, and make it
work like the "Refine these results" button.
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Tue, 15 Nov 2016 19:26:48 +0000 (14:26 -0500)]
LP1281280: Improve query tree compression
In addition to collapsing adjacent nodes sharing the same boolean operator,
we'll now also do the following two things: collapse filters, facets and
modifiers when there exists only a single subnode; and absorb single node
subplans.
Signed-off-by: Mike Rylander <mrylander@gmail.com>
If one has a long list of boolean operations, such as can
be generated by third-party products looking for a book that
might have one of several different ISBNs, those are currently
searched separatelly, in a deep nested set of joined full-text
queries. This behavior was introduced to address problems of
non-deterministic grouping of boolean operations, along with
them generally not working in complex situations. We call
the mechanism "boolean push-down", because it explicitly
bifurcates the tree at each boolean operator.
This is suboptimal in the case of adjacent, like boolean ops.
This commit re-compresses the parse tree for adjacent nodes
that use the same boolean operator and are composed of atoms
only (that is, no modifiers, filters, or phrases). It ignores
any explicit groupings by the user, the "magical" floating
subplan, any subplans that include filters or modifiers, and
any nodes that have a mix of boolean operators between their
atoms.
This is probably more conservative that is strictly necessary,
and phrases would likely be safe, but baby steps.
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Galen Charlton [Tue, 4 Oct 2016 20:06:32 +0000 (16:06 -0400)]
LP#1005040: teach filter boxes about human-readable crad descriptions
This patch ensures that the human-readable record attribute
description, if available, will be used for the title of each
filter control widget. It also gives descriptions to record
attributes commonly used for advanced search filters.
Galen Charlton [Tue, 4 Oct 2016 18:08:14 +0000 (14:08 -0400)]
LP#1005040: various improvements to the filter control widgets
* ensure that filter values are sorted
* fix the link for removing location filters
* don't display a filter box for search_format, as that
already has a separate drop-down in the search bar
It also sets a different background color for the header of filter
boxes. Padding between entries in a filter list is reduced as
compared to facets, both to save a bit of vertical space and to
subtly distinguish filters from facets.
This patch gut most of the top level Search/Biblio.pm wrapper,
inlines opensearch search params, uses the new dispach method,
for OpenSRF subrequests, and return the abstract query when
requested.
It also adds CDBI classes for asset.copy_location_group which
is needed for looking them up at search time.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Chris Sharp [Mon, 7 Nov 2016 12:40:24 +0000 (07:40 -0500)]
LP#1639782 - Add Active Date to Item Status Column Picker
Circ and Cataloging staff need a quick way to view the Active
Date of an item in the "Item Status" (F5) interface. This
makes that column available for selection.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Kathy Lussier [Wed, 8 Feb 2017 19:19:08 +0000 (14:19 -0500)]
LP#1308090: Updating release notes to reflect both parts of this new feature
The code introduced two distinct features related to authors and RDA records,
but only one was highlighted in the release notes. Notes are updated to reflect
both changes.
Dan Pearl [Thu, 2 Jun 2016 19:02:25 +0000 (15:02 -0400)]
LP#1308090 Relator fields and facets need normalization.
This incorporates two changes: facets were generated with trailing
punctuation, which resulted in more than one entry for the same item,
differing only in punctuation. In addition, relator codes were suppressed
in the record detail unnecessarily.
Signed-off-by: Dan Pearl <dpearl@cwmars.org> Signed-off-by: Kate Butler <katebutler@rodgerslibrary.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Precat checkout in the browser client no longer
requires the use of a circ modifier(when circ
modifiers exist). Similarly, no circ modifier
is chosen by default.
Mike Rylander [Tue, 31 Jan 2017 17:35:05 +0000 (12:35 -0500)]
LP#1660059: Protect against null value in group field
If a nullable event grouping field is configured, and a null value is indeed
encountered when pulling together events, the Action/Trigger code will exit
unceremoniously. To prevent this, we will now collect events with either
a null grouping object or grouping field, and use a new batch invalidation
API call to get rid of them as quickly as possible after group sorting is
complete.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Change references of nonexistant scope variable args.date
to args.due_date, enabling edit due date to correctly
submit.
Signed-off-by: Kyle Huckins <khuckins@catalystdevworks.com>
Changes to be committed:
modified: Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
Add Address Alert to the alerts pane when address alert
is detected in the patron editor. This implements functionality
that was originally added tot he XUL patron editor in LP#898248.
To test:
[1] Define an address alert.
[2] Open a patron record in the webstaff patron editor and
create or update an address that would match the alert
set up in step 1. Verify, upon blur of street 1, street 2,
or the city inputs that an alert is displayed.
Note that the feature does not call for the presence of an
address alert to prevent the operator from saving the record;
the alert is purely advisory.
Bill Erickson [Tue, 10 Jan 2017 17:19:35 +0000 (12:19 -0500)]
LP#1655399 webstaff: User perm editor grantable fix
Correctly handle the boolean grantable flag in the user permission
editor. In some cases, the boolean 0/1 values returned from storage are
returned as strings. Cast them to numbers before checking truthiness.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Jason Stephenson [Sat, 20 Aug 2016 17:42:31 +0000 (13:42 -0400)]
LP#1485374: Add missing comma on line 667 of oils_auth.c.
Fixes the following compiler error:
oils_auth.c: In function ‘oilsAuthComplete’:
oils_auth.c:668:9: error: expected ‘)’ before string constant
"open-ils.auth_internal",
^
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Use of a 'local' variable causes the TZ to be dropped prematurely. So,
instead, we set $ENV{TZ} globally and reset it when the mod_perl handler
object is destroyed.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Galen Charlton [Tue, 23 Feb 2016 17:09:15 +0000 (12:09 -0500)]
LP#1485374: add way for C code to make TZ-aware subrequests
This patch adds a helper routine to allow C
methods to make subrequests that pass the client
time zone along. This helper is in turn used during
authentication to ensure that the user object
that is returned has timestamps that are in the
time zone of the client that makes the original
authentication request.
Testing shows this to be needed to make strftime()
return the time in the client's time zone.
This is a bit confusing, however, as strftime per
POSIX should be acting as if it always calls tzset()
when doing formatting that involves the local timezone.
Mike Rylander [Fri, 11 Sep 2015 15:19:34 +0000 (11:19 -0400)]
LP#1485374: Allow server timezone via CStoreEditor
In rare cases, the server's timezone may be preferable to the client's.
To plan for such cases we provide a way to signal that we want to use the
server's timezone.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Mike Rylander [Mon, 3 Aug 2015 17:27:56 +0000 (13:27 -0400)]
LP#1485374: Use client TZ in the database when supplied to the server
In LP#1485371 we teach OpenSRF how to discover and pass the client timezone
to the server. Now we can use that information to temporarily put the server
into that timezone, including database sessions, so that dates and times
are calculated and reported based on the timezone of the client.
To do that we:
* Teach CStore and friends to use the client-supplied time zone
* Teach Storage to use $ENV{TZ} for the db timezone inside transactions,
and by default except for search-y methods
* Teach the TPAC to set the client TZ at login
This requires javascript to be enabled in the TPAC, and investigates the
client timezone at patron login time. No times are displayed in TPAC
interfaces before the patron logs in, so there is no point in detecting
the timezone before this point.
Mike Rylander [Wed, 25 Jan 2017 17:33:24 +0000 (12:33 -0500)]
LP#1657885: Inform Vandelay of new chunking/bundling logic, part deux
Here we conditionally use the old "max_chunk_count" method provided by OpenSRF
when Evergreen is running atop a version that doesn't know about the bundling
rename.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Mike Rylander [Wed, 25 Jan 2017 15:56:23 +0000 (10:56 -0500)]
LP#1657885: Inform Vandelay of new chunking/bundling logic
There is a naive attempt to force immediate streaming of results in Vandelay
for certain processes, but it both only helps a little, and breaks under the
new OpenSRF bundling/chunking logic. So, we'll drop it where it's not
directly configurable, and test for the appropriate features where we can.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Mike Rylander [Thu, 19 Jan 2017 20:54:53 +0000 (15:54 -0500)]
LP#1657885: Account for new bundling/chunking logic in OpenSRF 2.5+
When chunking was renamed bundling and actually chunking added in OpenSRF 2.5,
the few places in Evergreen that tried to make use of the old mechanism
directly now break. The most obvious breakage is in the alternate printable
hold pull list, which we fix here. Evidence of other broken code should
be fixed as needed, though spots to look our for are z39.50 results and
Vandelay processing.
To test:
1) In Evergreen 2.11 running on top of OpenSRF 2.5+, attempt to use the
alt pull list printing interface at a location with many holds on their
pull list. The progress bar will spin forever.
2) After applying this patch, do the same. The interface should work
quickly.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
We fixed the trigger that caused the problem in bug 167237, but now we need
to rewrite reporter.hold_request_record because T-holds are probably all
wrong. No data was lost, we're just addressing the contents of a materialized
view.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Jason Boyer <jboyer@library.in.gov>
Galen Charlton [Tue, 17 Jan 2017 21:58:39 +0000 (16:58 -0500)]
LP#1657282: fix redirect of one-hit metarecord searches
This patches fixes a bug where, when performing a metarecord
("Group Formats and Editions") search, one-hit result sets
get redirected to a "/eg/opac/record/0.0..." page, which
results in a "Bad Request" error being shown to the user.
To test:
[1] Perform a metarecord search that would result in exactly
one metarecord search. Observe that the browser displays
a "Bad Request" error page.
[2] Apply the patch and perform step 1 again. This time, the
search should succeed. Note that if the metarecord contains
more than one component, a results page with one grouped
hit is displayed; if the metarecord has exactly one component,
that bib's record page is displayed.
Mike Rylander [Tue, 17 Jan 2017 19:46:36 +0000 (14:46 -0500)]
LP#1657237: Properly constrain matview trigger function
The function maintaining the reporter.hold_request_record table
was performing an unconstrained update when a hold was moved. This
fixes that.
To test:
[1] Apply the patch, the perform an asset merge that would
change the target of a hold request. Verify that
reporter.hold_request_record is properly update.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Mike Rylander [Wed, 28 Dec 2016 19:43:34 +0000 (14:43 -0500)]
LP#1655149: Badges need CDBI support for location groups
The badge code needs to inspect copy location groups, and tries to do so using
Class::DBI classes. But we haven't told CDBI about aclg and friends. Here we
tell Class::DBI about asset.copy_location_group so that storage can retrieve
directly.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Display the patron alerts pane only once per patron instance per
browser tab. This is done by setting a new session storage value which
tracks the last alerted patron. This value is replaced each time a new
patron is loaded into the main patron app (e.g. double-clicking the
patron row in patron search) and is maintained separately per browser
tab.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Jason Etheridge [Tue, 3 Jan 2017 11:58:25 +0000 (06:58 -0500)]
webstaff: booking options from Patron interface
Includes some workarounds for xulG errors, and lets the booking interfaces
receive the patron barcode via a query param instead of xulG. The XUL client
spawns a new tab for these interfaces, but we stick with web norms and load in
the current tab (control+click will open a new tab). This does, however, blow
away the patron interface; it doesn't embed like most of the options from the
Other menu. One other change: we don't have support for nested drop-down menus
in the web client, so I've flattened the entries like so:
* Booking: Create or Cancel Reservations
* Booking: Pick Up Reservations
* Booking: Return Reservations
Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Galen Charlton [Wed, 30 Nov 2016 10:25:52 +0000 (05:25 -0500)]
webstaff: throw a kitchen sink at double-scrollbar issues
This patch ameliorates, but does not eliminate, a bunch
of cases where double-scrollbars could appear.
[1] Adds iframe-resizer (https://github.com/davidjbradshaw/iframe-resizer, MIT license)
as an option for automatically adjusting the height of an iframe
to fit the contents. This can be enabled by ensuring that
the page to be embedded brings in
and adding an 'autoresize' attribute to the egEmbedFrame directive.
This is now used by the legacy reports page.
[2] Gives a 'min-height' attribute to egEmbedFrame and sets a
value for Dojo grid interfaces embedded by local and server admistration.
[3] Adds a 'allow-escape' attribute to egEmbedFrame; when set to
true, adds buttons to allow the user to open the embedded page
in a new tab.
[4] Removes some extraneous <div>s that were interferring with resizing
for some grids.
Galen Charlton [Tue, 29 Nov 2016 21:34:14 +0000 (16:34 -0500)]
webstaff: add printing to transit list page
Adds a 'Print Transits' button and a transit_list print template. Using
the button prints _all_ transits that match the filter criteria, not just
the ones that happen to be displayed on the table.