Display a tooltip (popover), containing the full grid contents, when
mousing over a grid cell. This allows users to see the full contents of
a cell without having to resize the grid column.
This applies to text contents and pre-compiled HTML contents.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Kyle Huckins [Thu, 15 Mar 2018 18:54:13 +0000 (18:54 +0000)]
lp1744756 Profile Tree Display Entry Admin UI
- Flesh out permission.group_tree_display_entries table.
- Create pgtde IDL class corresponding to new permission.group_tree_display_entries
table.
- Admin UI for Permission Group Tree Entries capable of viewing, adding, removing,
or changing position of entries within tree based on OU.
- Save functionality to persist any changes made.
- Persist changes in positions of permission group display
entries in Admin UI with the Profile Selector in the patron
edit interface.
- Make profile selector use original functionality if there are no
display entries.
Jason Etheridge [Fri, 2 Feb 2018 16:30:36 +0000 (11:30 -0500)]
lp978095 auto-canceling lineitems
"Acq: lineitems display as "on order" even after all copies have been cancelled"
When a copy (lineitem detail) on a lineitem is canceled through the UI, all of
the sibling copies are examined, and if they also happen to be canceled, then a
cancel attempt is made on the parent lineitem.
The cancel reason fed to the lineitem cancelation attempt will be the last
cancel reason on an examined sibling lineitem where Keep Debits is True, or
failing that, the cancel reason used wih the copy just canceled.
The UI will refresh to the lineitem view when such an auto-cancelation happens.
Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org> Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Jane Sandberg [Sat, 31 Mar 2018 13:48:49 +0000 (06:48 -0700)]
LP1760160: Search bar has a different CSS class when on the home page
To test:
1. In templates/opac/css/style.css, add some highly noticeable CSS that
applies to .searchbar-home or an element within .searchbar-home, e.g.
.searchbar-home .search-box {
background-color: purple;
height: 4em;
}
2. Go to the home page of your public catalog. The .searchbar-home .search-box CSS
should have taken effect.
3. Go to another page of your public catalog, such as a search results
or login page. The CSS should not have taken effect here.
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
LP 1768715: Fix pingest.pl bug discovered by Dan Scott of Laurentian U.
Reingest was not happening if all ingests were skipped, except for the
display field reingest. This came down to a matter of two conditional
statements not including checks for the $skip_display variable being
true.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>
LP 1768715: Use named arguments in function calls in pingest.pl.
This makes it work, more or less, with Evergreen 3.0 and the changes
to metabib.reingest_field_entries. Note that the new skip_display
parameter is not set, so you might get collisions between the browse
ingest and one of the other ingest processes if they both work on the
same record at once.
I will make a branch for use with Evergreen 3.0 until I upgrade to
Evergreen 3.0 and merge that branch into master.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>
LP 1768715: Add database connection parameters to pingest.pl command line.
This will serve as the model for future Perl scripts that need to
connect to the PostgreSQL database with DBI. I may go back and alter
the existing scripts to use this method.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Jason Stephenson [Mon, 11 Apr 2016 16:25:57 +0000 (12:25 -0400)]
LP 1768715: Make the pingest.pl --pipe option be greedy.
The --pipe option is used with pingest.pl now assumes that that any
string of digits in the input is a record id. Instead of using just
the first string of digits on a line, as it did before, it now uses
each string of digits on a line.
Signed-off-by: Jason Stephenson <jstephenson@mvlcstaff.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Jason Stephenson [Mon, 11 Apr 2016 14:39:02 +0000 (10:39 -0400)]
LP 1768715: Simplify Open-ILS/src/support-scripts/pingest.pl with selectcol_arrayref.
By switching to DBI->selectcol_arrayref in pingest.pl, we can avoid
having to check for references in the main loop. This eliminates an
extra variable and an extra line of code that are no longer needed.
Signed-off-by: Jason Stephenson <jstephenson@mvlcstaff.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
LP 1768715: Only connect to the database when needed in pingest.pl.
We chagne where we connect and disconnect the database in the parent
process in pingest.pl. There's no point connecting at all if the
--pipe option is used.
Signed-off-by: Jason Stephenson <jstephenson@mvlcstaff.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
With this option, pingest.pl reads a list of record IDs from standard
input, instead of running a query. This is useful if you have a
custom query to output only certain records to reingest and you can
pipe the output into pingest.pl.
Signed-off-by: Jason Stephenson <jstephenson@mvlcstaff.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Add Open-ILS/src/support-script/pingest.pl to do ingests in parallel.
See release notes for details.
NOTE: This and subsequent commits were added from a branch that
preserves the history of the repository from which pingest.pl was
copied. The dates on these commits represent when the code was added
or modified in the source repository. They do not reflect when the
code was added to Evergreen.
Also, pingest.pl predates this commit. The date on this commit was
when the source repository was split into separate directories for SQL
and Perl scripts.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Jason Boyer [Wed, 22 Aug 2018 13:07:55 +0000 (09:07 -0400)]
LP1733590: Only Print Selected Items Out
The list of selected items being passed to print_receipt
was being ignored and the whole list of items currently
checked out used instead. This patch uses the list
presented so staff can only print those items that they
want to, such as a small number of items renewed today,
etc.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
a. bellenir [Wed, 22 Aug 2018 15:33:55 +0000 (11:33 -0400)]
LP#1788417: boolean fields should say 'Yes'/'No' instead of true/false
boolean fields on egGrid use tt2-translated strings for "Yes" and "No"
instead of letting the browser translate the values 'true' and 'false'
(in accordance with the prophecy of XUL)
Signed-off-by: a. bellenir <ab@grpl.org> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Avoid spamming the server with authentication session checks on bad poll
time values. Specifically, never poll more often than once per minute
and avoid integer overflow on long authentication timeout values
(greater than about 24.8 days) resulting in the poll running with an
effective timeout of zero and spamming the server with API calls.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jason Boyer <jboyer@library.in.gov>
Bill Erickson [Fri, 10 Aug 2018 16:16:57 +0000 (12:16 -0400)]
LP#1724029 Patron search API returns correct order
Avoid use of max_chunk_size in patron search API as it results in
streaming responses in the wrong order. Use max_bundle_count instead,
which does not suffer from the sorting issues. What's more, its purpose
and affect is easier to grasp in the code.
Bundle count is set to 5 so the API will begin returning results at most
5 patrons into the data fleshing process.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
a. bellenir [Fri, 8 Jun 2018 15:42:53 +0000 (11:42 -0400)]
LP#1775216: inconsistent copy counts between opac and staff client
opac version of copy counts was including copies under deleted call numbers
more discussion here: http://irc.evergreen-ils.org/evergreen/2018-06-08#i_363334
Signed-off-by: a. bellenir <ab@grpl.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
a. bellenir [Tue, 5 Jun 2018 19:56:24 +0000 (15:56 -0400)]
LP#1775216: inconsistent availability counts between staff client and opac
update asset.staff_ou_record_copy_count to get an accurate available count.
borrow asset.opac_ou_record_copy_count's logic for counting available copies
so that statuses with is_available set to 't' in config.copy_status are used
instead of using the hardcoded status id list (0,7,12)
Signed-off-by: a. bellenir <ab@grpl.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
We missed one instance of cart when changing everything over to baskets. Also,
I updated language for clearing a basket after placing a hold to make it a
little clearer.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
The public catalog now displays checkboxes on the bibliographic and
metarecord constituents results pages. Selecting one or more titles
by using the checkboxes will dynamically add those title to the
temporary list, which is now renamed the basket.
Above the results lists there is now a bar with a select-all checkbox,
a link to the basket management page that also indicates the number of
of titles in the basket, and a link to remove from the basket titles that
are selected on the currently displayed results page.
The search bar now includes an icon of a basket and displays the number
of titles currently in the basket. Next to that icon is a menu of basket
actions.
The basket actions available are Place Hold, Print Title Details,
Email Title Details, Add Cart to Saved List, and Clear Cart. In the
web staff client, the basket actions also include Add Cart to Bucket.
When an action is selected from this menu, the user is given an
opportunity to confirm the action and to optionally empty the basket
when the action is complete. The action is applied to all titles
in the basket.
Clicking on the basket icon brings the user to a page listing the
titles in the basket. From there, the user can select specific records
to request, print, email, add to a list, or remove from the basket.
The list of actions on the record details page now provides separate
links for adding the title to a basket or to a permanent list.
The permanent list management page in the public catalog now also
includes batch print and email actions.
Additional information
++++++++++++++++++++++
* The checkboxes do not display on the metarecord results page, as
metarecords currently cannot be put into baskets or lists.
* The checkboxes are displayed only if Javascript is enabled. However,
users can still add items to the basket and perform batch actions on
the basket and on lists.
* A template `config.tt2` setting, `ctx.max_basket_size`, can be used to
set a soft limit on the number of titles that can be added to the
basket. If this limit is reached, checkboxes to add more records to the
basket are disabled unless existing titles in the basket are removed
first. The default value for this setting is 500.
Developer notes
+++++++++++++++
This patch adds the the public catalog two routes that return JSON
rather than HTML:
The JSON response is a hash containing a mylist key pointing to the list
of bib IDs of contents of the basket.
The record parameter can be repeated to allow adding or removing
records as an atomic operation. Note that this change also now available
to `/eg/opac/mylist/{add,delete}`
More generally, this adds a way for EGWeb context loaders to specify that
a response should be emitted as JSON rather than rendering an HTML
page using `Template::Toolkit`.
Specifically, if the context as munged by the context loader contains
a `json_response` key, the contents of that key will to provide a
JSON reponse. The `json_response_cookie` key, if present, can be used
to set a cookie as part of the response.
Template Toolkit processing is bypassed entirely when emitting a JSON
response, so the context loader would be entirely reponsible for
localization of strings in the response meant for direct human
consumption.
Bill Erickson [Tue, 7 Aug 2018 18:27:47 +0000 (14:27 -0400)]
LP#1718032 Patron merge honors group perms; no self-merge
Ensure the staff performing a patron merge have sufficient permission to
edit all users involved in the merge process, in addition the
MERGE_USERS permssion.
Prevent staff from merging their own logged in account.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Garry Collum [Sun, 10 Jun 2018 04:08:53 +0000 (00:08 -0400)]
LP#1752891 Crowded text on Print Item Labels page fix.
This patch replaces an h4 style used for labels for dropdown lists, removes a blue background, and changes the style of the title of the page. All to make this page look more consistent with other pages in Evergreen. Also removes some unnecessary extra divs and makes the bootstrap columns for the top form more consistent.
Fixes an issue which caused an exception to be thrown during non-cat
item checkout in the browser client, preventing the checkout from being
properly displayed in the checkout page, the Items Out list, and on the
receipt.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Mike Rylander [Fri, 7 Jul 2017 19:34:57 +0000 (15:34 -0400)]
LP#1702978: memcache Remove method used in a variadic way
Related to the OpenSRF branch on this same bug, the prevents Evergreen from
using a to-be-non-variadic memcache method in that way. This prevents issues
for memcache keys that contain a %.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Cesar Velez <cesar.velez@equinoxinitiative.org> Signed-off-by: Jason Stephenson <jason@sigio.com>
Bill Erickson [Tue, 7 Aug 2018 21:41:23 +0000 (17:41 -0400)]
LP#621459 Clear Z39 overlay target message after overlay
Reset the "Record with TCN XXX marked for overlay." message to show "No
record marked for overlay." once the overlay target is cleared after a
Z39 overlay.
Removed an errant '"' in the overlay message.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
LP 1780660: Add more workstation functions to OpenILS::Utils::TestUtils.
Add methods find_or_register_workstation($name, $lib) and
find_workstation($name, $lib) to OpenILS::Utils::TestUtils. These can
be used when writing tests or other scripts to find or create
workstations.
The following Perl live tests were updated to use the new methods
rather than their hand-rolled versions:
1. Install Evergreen from this branch.
2. Load the Concerto dataset.
3. Start Evergreen services with osrf_control.
4. cd to the perlmods source directory.
5. Do 'make livecheck' and see that all tests pass, particularly the 4
mentioned above.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
This commit uses egGrid's indexValue API to identify the clicked row rather
than depending on grid row order when checking whether the that row is
currently selected. This is a generalized fix for all grids.
Signed-off-by: a. bellenir <ab@grpl.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Once the offline block list download button is clicked, it's disabled to
prevent any possibility of double-clicks. The shared worker also
reports a more meaningful error in case a double-click sneaks past.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Bill Erickson [Fri, 22 Jun 2018 14:56:02 +0000 (10:56 -0400)]
LP#1768947 Offline xact presence is cached; show date
Maintain an entry to the object date cache table indicating the time of
the most recent offline transaction entry. This data is used on the
login page to determine if offline transactions exist, so the staff
logging in can be notified. We do this in lieu of checking the offline
transaction table, since that table only exists in the offline UI.
As a bonus, since we know the last transaction add time, display this
information in the login page offline xact alert panel.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Move the lovefield database access logic into a shared web worker
script. This ensures the only one connection (per schema) can exist,
avoiding data integrity problems caused by having multiple tabs writing
to the database at the same time.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
As with a single getItem() call, the batch version of the call, when
making server requests, will migrate any settings necessary from
localStorage to server settings.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Adds a new "Server Workstation Prefs" tab to the stored preferences
workstation admin interface. From here, users can view which
preferences are stored as server-stored workstation preferences and
delete select values.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Adds a new config.workstation_setting_type table for managing
workstation-specific settings.
Adds new PG and perl API functionality for determining values for
settings which may be represnted as workstation, user, and/or org unit
settings.
Teaches the AngularJS browser client to load and apply most settings at
the server. Values for settings stored in localStorage/Hatch are migrated
to server settings at time of next use.
Stock workstation setting types added to accommodate most browser client
settings.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
We were using the wrong date formating filter, egDueDate, and additionly the
egOrgDateInContext filter was defaulting to the useless 'shortDate' format in
cases where a format was not passed (such as when $root.egDateAndTimeFormat
can't be found). Both of these are addressed here.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Galen Charlton [Wed, 9 May 2018 16:28:00 +0000 (12:28 -0400)]
LP#1766716: (follow-up) expand CSS imports for now
The patches for bug 1739803 ended up removing the minification
of the CSS and constructing evergreen-staff-client-deps.0.0.1.min.css,
so consequently setting EXPAND_WEB_IMPORTS to 0 currently does not
work as expected. Unless that regression (if it is one) gets
fixed, stick with EXPAND_WEB_IMPORTS = 1 for now.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Staff are provided with interfaces and mechanisms to create library closings
that, in addition to affecting future circulation and booking due dates, and
hold shelf expirations, will automatically move existing circulation and
booking due dates and hold shelf expiration times. This new functionality is
conceptually described as Emergency Closings and business logic implementing it
as the Emergency Closing Handler. It contains additions and adjustments to the
user interface, business logic, and database layers. Access to this
functionality is available through the Closed Dates Editor interface in the
staff client which has been ported to AngularJS.
Overview
This development has created new business logic code to inspect, in real time,
existing circulation, booking, and hold records, and modify such date and time
stamps so that the circulation, booking, or hold will end in the same state it
would have if the closing had existed at the time the circulation or booking
occurred, or the hold was placed and captured. Of specific note, hourly loans
will have their due date adjusted to be the end of the day following the
closing.
When the Emergency Closing is saved, any fines accrued during the closing may
be voided, as settings dictate, with the exception of circulations that have
been marked as LOST or LONG OVERDUE. That is, even for LOST and LONG OVERDUE
circulations with due dates that fall within the Emergency Closing, no fine
adjustment will be applied. Emergency Closing processing is permanent, and
cannot be rolled back.
This functionality is explicitly initiated by staff action. If staff do not
request an Emergency Closing, existing circulations, bookings, and holds will
not be processed and adjusted. However, if staff request any Closing that
starts nearer in time than the length of the longest circulation duration
configured for use in the Evergreen instance they will be prompted with the
option to create the closing as an Emergency Closing.
Action/Trigger hooks have been created for circulations and bookings that are
adjusted by the Emergency Closing Handler. These will facilitate the creation
of notifications to patrons that the due date has changed and to alert them to
potential changes in accrued fines.
Booking start dates are explicitly ignored in this implementation. Because an
Emergency Closing is, by its nature, an unexpected event, it will be up to
staff to address any bookings which intersect with a new Emergency Closings.
Reports can be used to identify booking start dates that overlap with a closing
and that may require staff intervention.
Staff requsting and Emergency Closing must have the new EMERGENCY_CLOSING
permission.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Mike Rylander [Fri, 16 Mar 2018 13:52:50 +0000 (09:52 -0400)]
LP#1766716 Supporting functionality added to date/time picker and progress dialog
Here the date/time picker is given the ability to dynamically hide the time
picking component when show-time-picker is in effect. This allows an
interface to use the time picker based on ephemeral state information and to
hide it when not useful.
Additionally, the progress dialog now takes an optional label property that
can be passed to both open() and update(), so that textual information can
be provided along with the numeric and visual progress data.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>