Garry Collum [Sat, 16 Jun 2018 18:13:22 +0000 (14:13 -0400)]
LP#1761242 Z39.50 Marc View Usability with Mobile Repsonsiveness
This patch changes the size of the image in the Z39.50 Marc View from large to
medium. It also incorporates bootstrap's media classes to present the Marc
record and the cover image side by side. If there is no image the marc record
display floats to the left of the modal. From a suggestion by Jane Sandbert, it
also hides the book cover image on small devices.
To test.
1. Perform a search in z39.50. An LOC title search for "Cat in the Hat"
returms results of titles with and without images.
2. View some of the titles in Marc View, noting the large image.
3. Apply the patch.
4. Perform the same search and view the results in Marc View.
MODS 3.3 support was introduced in March 2009, but this
change was never included in an upgrade script. Older
sites on 3.1+ will need to apply this update to avoid scary
segmentation faults, and it should be harmless for newer
sites and desirable for those on 3.0 or older.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Ben Shum <ben@evergreener.net>
The hold shelf rewrite brought back an old behavioral bug where items deleted
while on the hold shelf continued to show on the hold shelf list. The most
recent behavior was to ignore those items, which this commit does. It also
addresses an adjacent issue where holds may show with "Hold Shelf Delay"
instead of "Ready For Pickup" in some cases.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com> Signed-off-by: Ben Shum <ben@evergreener.net>
Jason Boyer [Thu, 15 Nov 2018 16:43:30 +0000 (11:43 -0500)]
LP1755625: Multiple emails in patron editor
Even though the HTML5 "email" input type allows multiple
addresses to be separated by commas there is nothing that
can be done to signal to Angular.js that this is ok; it
will only ever accept a single address. This patch forces
the type of the input tag to plain text so Angular will
rely on any supplied regex to verify the entry.
The ui.patron.edit.au.email.regex (Regex for email field on patron
registration) library setting can be used to control whether
one or multiple email addresses will be permitted on the
patron registration form.
To test
-------
[1] In the web staff client, try to register a new patron, entering
multiple email addresseses in the email field separated by
commas.
[2] Note that the email field displays as invalid and the
record cannot be saved.
[3] Apply the patch and repeat step #1, This time, the email
field should accept multiple addresses.
[4] Set the Regex for email field on patron registration library
setting to the multiple-email form listed above. Reload
the patron registration form and verify that it will
continue to accept multiple email addresses but will not
accept entry that doesn't look like an email address.
[5] Set the library setting to the single-address value. Reload
the patron registration form; this time it should accept
a valid email address but not multiple ones.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Cesar Velez <cesar.velez@equinoxinitiative.org>
The pane in the web-based staff client to display penalties and messages
currently has a label of "Staff-Generated Penalties/Messages", which is
misleading as the list includes system-generated penalties and messages.
Modify this to "Penalties and Messages" to avoid the "/" construction
(which is considered harder to translate) and avoid the impression that
it contains only staff-generated penalties and messages.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <ben@evergreener.net>
Actually installing a language also runs updatepo and subsequently attempts
to copy the various dtd and property files to their correct places.
Remove from the Makefile target for install, but retain the dtd web opac
folder which is apparently where we put fieldmapper and some other files
later.
Signed-off-by: Ben Shum <ben@evergreener.net> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Bill Erickson [Tue, 6 Nov 2018 14:42:17 +0000 (09:42 -0500)]
LP#1797007 Grid cell tooltips apply to all cells (Ang)
Avoid excessive browser page re-flows, caused by checking cell
widths for rendering tooltips, by rendering tooltips for all cells
regardless of the size of the content.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Avoid excessive browser page re-flows, caused by checking cell widths
for rendering tooltips, by rendering tooltips for all cells regardless
of the size of the content.
Ben Shum [Mon, 5 Nov 2018 19:03:44 +0000 (14:03 -0500)]
LP#1757455: Deprecate i18n building for XUL client
Remove older dtds and properties files from the Makefile for i18n build
process.
To test
-------
[1] Apply patch.
[2] Make a change to a XUL properties or DTD file
[3] Run 'make newpot' in build/i18n.
[4] Verify that your change is not reflected in the updated POT files.
Signed-off-by: Ben Shum <ben@evergreener.net> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
LP#1783440: adding UPC to numeric search types in advanced search
To test
-------
[1] Go the Advanced Search page in the public catalog, then to the
Numeric Search tab.
[2] Search on a UPC value (e.g., in Concerto, "883929159529").
[3] Verify that a hit is retrieved.
For some strange reason the volcopy bchannel event data.records
would be an array of string integers or a array of ints depending
on whether you're adding or editing holdings. This addresses that
weirdness.
Signed-off by: Cesar Velez <cesar.velez@equinoxinitiative.org>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Mike Rylander [Fri, 14 Sep 2018 15:03:30 +0000 (11:03 -0400)]
LP#1684202: Protect against missing features; Make feature more general
I've wrapped the BroadcastChannel code in a test derived from the auth version
of the same concept. Also broadcasting the full set of record IDs and the
pre-update call number IDs for other interfaces that might be interested. The
channel name is also made more generic and made to follow the precedent from
the auth channel name.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Located URIs depend upon bib-level visibility, as there are no copies
to work with. The browse code, however, was joining in the copy
visibility table as if it would always have at least one row per bib,
but in the case of located URIs, it does not.
Let's change it to a LEFT JOIN to allow the bib row to show up, at
which point the existing bib visibility check can do its job.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Mike Rylander <mrylander@gmail.com>
The default tab selection was not being honored from catalog searches,
as the search had already set $scope.record_tab, and we were honoring
that value in all cases.
Instead, let's honor that value in cases where the OPAC load doesn't
change our current record, which should only happen if we load the
record directly to a non-opac tab, then go to the OPAC view.
To test:
1) Set any tab other than "OPAC View" as your default view in record
details.
2) Do a catalog search.
3) Select a record, and notice your default view is not set.
4) Apply patch, do the same steps, and notice the default view is now
selected.
To test regression of bug #1708951:
1) In Firefox, load a record directly (e.g.
/eg/opac/staff/cat/catalog/record/123).
2) Note the default view loaded.
3) Click "OPAC View".
4) Note the view does not return to your default view, but stays on
the OPAC.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Jason Boyer <JBoyer@library.in.gov>
Mike Rylander [Mon, 31 Jul 2017 19:55:34 +0000 (15:55 -0400)]
LP#1635737 Apply DST-aware timezone to context dates
Do our best to enforce the rule required by OpenSRF's interval_to_seconds
that when a context date is in use, and you care about DST awareness, you
must set the timezone to a DST-aware value, e.g., 'America/New_York'. In
most situations, 'local' will suffice for this, as the server is typically
configured with a DST-aware timezone in its environment. However, we will
look for an org unit setting called 'lib.timezone' and use that where we
can. See LP#1705524 for info on that setting.
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Conflicts:
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/NonCat.pm
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Dan Wells [Fri, 21 Jul 2017 18:28:16 +0000 (14:28 -0400)]
LP#1635737 Use new OpenSRF interval_to_seconds() context
Use the optional context for interval_to_seconds() to account for the
variable length of duration components. For example, "1 day" may be
shorter or longer than 24 hours during a time change event, "1 month"
may be shorter or longer depending on which month it is currently, etc.
Also, remove some timestamp munging, as that happens within
interval_to_seconds() already.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Conflicts:
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Dan Wells [Tue, 6 Nov 2018 20:13:47 +0000 (15:13 -0500)]
LP#1635737 Add optional context to interval_to_seconds
Any given interval (e.g. "1 month") can be a different amount of
seconds depending on the context (i.e. "1 month" after February 1 is
March 1, but "1 month" after March 1 is April 1, yet March is longer
than February). This affects months all the time, but also can
affect days, hours, and even seconds once you consider DST and "leap"
times.
By giving an optional context to interval_to_seconds, you can find
the true number of seconds in, for example, "1 month", when starting
from "February 1" (the context).
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>
LP#1783602: Remove copy counts from mr search results page
The copy counts on the mr search results page can be wrong if a limiter was
applied to the metarecord search. Rather than supply inaccurate information to
the user, let's remove the counts from that page until a long-term solution can
be developed.
Kathy Lussier [Tue, 13 Mar 2018 16:54:42 +0000 (12:54 -0400)]
LP#1755543: Add help tips to Print Item Labels Settings tab
Instead of providing lengthy settings descriptions, which result in a lot of
scrolling on the Print Item Template page, let's use help tips that can
provide guidance to new users without adding clutter to the interface.
This commit also turns the field labels into HTML labels for improved
accessibility and removes borders on the page. The borders were helpful
when we displayed the help text on the page, but are no longer needed.
Garry Collum [Thu, 7 Jun 2018 18:54:45 +0000 (14:54 -0400)]
LP#1755896: Web Client mobile menu font color contrast.
When viewing the main menu in the web client in a small device or in a
browser with a width that is resized to less than 800px the menu
collapses and the submenu choices are difficult to read because of lack
of contrast. This patch adds some contrast.
To test:
1. View the web client in a browser and lessen the width until the menu
collapses, or view it in a small device.
2. Open some of the menu options to observe the submenus.
3. Apply the patch.
4. Refresh the browser and repeat steps 1-2 to view the more readable
submenus.
Galen Charlton [Mon, 5 Nov 2018 21:40:34 +0000 (16:40 -0500)]
LP#1789747: tweak disabling the offline circulation link
This patch ensures that the menu link can be fully disabled by
giving the "disabled" CSS class to the anchor as well as the
li that contains it. It also adds a CSS rule to the disabled
class to force the cursor to not-allowed; due to a quirk, an
anchor with "pointer-events: none" will not respect "cursor: not-allowed",
but the containing element can have that cursor rule.
Avoid page load failures when SharedWorkers (for offline mode) are
not supported. Additionally, disable the Offline Circulation menu
option when SharedWorkers are not supported.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Bill Erickson [Tue, 16 Oct 2018 18:15:53 +0000 (14:15 -0400)]
LP#1798170 Load grid data after settings are applied
Ensure the initial grid data fetching code does not fire until after the
grid configuration has been retrieved and applied. This fixes an issue
where custom columns would contain no values on initial grid load.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Use of mod_remoteip is technically optional, since it's not
required that Evergreen run with a proxy such as NGINX. However, since
use of proxies is common, enablig mod_remoteip just in case could
be useful with minimal cost.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Galen Charlton [Mon, 5 Nov 2018 17:49:35 +0000 (12:49 -0500)]
LP#1801759: add mod_remoteip configuration to example Apache config
Text taken from an OpenSRF patch added by Bill Erickson per bug 1684970.
This patch adds an Apache configuration stanza that uses mod_remoteip
to pass the user agent's IP address to the HTTP translator. It is meant
for when Apache is being run behind a proxy such as NGINX.
To test
-------
[1] Set up Evergreen with Apache and the WebSockets server running
behind a proxy such as NGINX.
[2] Enable mod_remoteip (e.g., sudo a2enmod remoteip).
[3] Apply the Apache configuration change in this patch, uncommenting
out the directives and (if necessary) updating the internal IP
address of the proxy.
[4] Reload Apache.
[5] Perform an action that uses the HTTP translator, e.g., adding a
vendor record using the Dojo interface.
[6] Verify that the client IP logged is that of the user agent, not
the proxy.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Jason Boyer [Fri, 26 Oct 2018 13:16:14 +0000 (09:16 -0400)]
LP1796988: Fix Saving Last Copy Template
A line that belongs within a forEach loop escaped
its bounds and caused a reference error that prevented
the applyTemplate function from saving the last used
template. This branch ushers this line back to its
pen where it can trouble us no more.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Janet Schrader <jschrader@cwmars.org> Signed-off-by: Jason Stephenson <jason@sigio.com>
Apply a default value to the browser client iframe URL so the iframe
does not attempt to load a copy of the current page. The default value
points to a simple loading page, displying "Loading..." plus our
standard spinny gif.
Progress gif copied from web/opac/images/ to web/images/ to avoid
dependence on the old opac directory.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Mike Rylander [Wed, 19 Sep 2018 14:38:42 +0000 (10:38 -0400)]
LP#1746536: Allow batch-apply to volume fields in multi-record context
I can't see a reason to restrict Batch Apply for volume fields in a multi-
record context, as all the data is gathered based on the volume owners, not
record information. This commit removes that restriction.
Cesar Velez [Wed, 12 Sep 2018 09:37:28 +0000 (05:37 -0400)]
LP#1746536 - enable volcopy editor for multi-bib but only volumes
This removes the disabling of the volcopy editor caused by
passing it a record id of 0. Allowing the Item Status grid's
Edit>Volumes to function as a way to batch edit volumes of
more than 1 bib record.
a. bellenir [Wed, 27 Jun 2018 18:48:56 +0000 (14:48 -0400)]
LP1746536: cannot edit vol/call number in item status
spawnHoldingsEdit was disabling record summary by passing record_id: 0
this change will provided the record_id if exactly one record is selected.
behavior is unchanged if multiple records are selected.
Signed-off-by: a. bellenir <ab@grpl.org> Signed-off-by: cesar velez <cesar.velez@equinoxinitiative.org> Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Conflicts:
Open-ILS/web/js/ui/default/staff/circ/services/item.js
Dan Wells [Wed, 10 Oct 2018 20:07:24 +0000 (16:07 -0400)]
LP#1796978 Realign working copy refresh with proper condition
The "working copy" grid needs to update whenever the copy data above
updates. I *believe* this aligns the refresh with its intended
condition.
This appears to have come about via bug #1732761, so retesting of
that fix may be in order.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Cesar Velez <cesar.velez@equinoxinitiative.org>
Dan Wells [Thu, 11 Oct 2018 13:21:05 +0000 (09:21 -0400)]
LP#1796971 Wait for call number and copy before loading locations
In cases where add a copy to a call number, we fetch the original
call number via async, then attach the new copy to it. Before this
commit, however, we were not waiting for the call number fetch
promise to resolve, so the copy wasn't there to use for limiting the
location load.
Since the async request is internal to a loop, one way out is to
capture that promise, then make sure it resolves before loading the
locations.
(We previously returned the copies from the internal function, but that
value wasn't being used anyway, so we don't worry about unwrapping the
$q.all() when it resolves.)
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: John Amundson <jamundson@cwmars.org> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Cesar Velez <cesar.velez@equinoxinitiative.org>
Support copying formatted addresses to the clipboard in the browser
staff client, similar to the XUL client. Action is performed via a new
link in the addresses section (next to "print") in the patron summary
sidebar.
This has the side effect of fixing a problem where the batch
edit timestamps were not wrapped correctly in Firefox.
To test
-------
1. Using user buckets, make some batch changes on some patrons and roll
back some of those changes.
2. Using Firefox, click on the 'View Batch Edits' button.
3. Note that the times dispayed are formatted as raw
database timestamps
4. Note that the summary for the user bucket displays the
create time as a raw database timestamp.
5. Navigate to a record bucket and note that its create
time is displayed as a raw timestamp as well.
3. Apply patch.
4. Repeat steps 2-5; this time, the times should be displayed
using the correct date and time format.
Garry Collum [Thu, 21 Jun 2018 23:41:48 +0000 (19:41 -0400)]
LP#1778083 Location, Floating, and Age Protect missing from Items Out
Adds columns for Location (Copy), Floating Group, and Age-based Hold
Protection to the items out grid.
To test.
1. View an items out screen to see that the Location, Floating Group,
and Age-based Hold protection columns are not available as options.
2. Apply the patch.
3. Edit some items and add definitions for Floating Group, and
Age-based hold protection.
4. Check out these items and other items that do not have a floating
group or age-based protection.
5. Display the Location, Floating Group, and Age-based Hold Protection
columns.
Galen Charlton [Fri, 5 Oct 2018 20:41:04 +0000 (16:41 -0400)]
LP#1770246: (follow-up) display the open-in-new-window/tab icon
Since the title links added by the previous patch intentionally open
the record in a new tab, display the corresponding icon to be
consistent with other interfaces.
Garry Collum [Fri, 1 Jun 2018 01:22:35 +0000 (21:22 -0400)]
LP#1770246 Catalog linked title column in query and pending buckets
To mirror the Record Bucket View grid, this patch adds a title column
in the query and pending bucket tabs that links to the catalog record
of the title displayed. The catalog record is opened in a new tab, so
the query and pending data is not lost.
Mike Rylander [Mon, 27 Aug 2018 16:08:37 +0000 (12:08 -0400)]
LP#1786987: Locale-less org tree cache object becomes stale
The autogen.sh script calls a function that flushes all org tree objects
cached by locale, but does not flush the one used when the locale is
unkown. This commit forces that flushing to occur.
berick: Definition of my $cache pushed up above first use.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Add new release notes. Also, slight reorganization to the
acknowledgements section (move organizations to appropriate section, fix
sorting of COOL, use consistent name for BC Libraries).
Remove the grid-tooltip logic that captured the cell content into a
template-level variable so the content only needed to be generated once
for both the tooltip and cell display. This logic fails to handle cases
where the cell content is dynamic, typically the result of row
attributes being modified via external process.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
LP#1789442: turn of Perl taint-checking on 14-OpenILS-Utils.t
This works around a bug in DateTime::TimeZone 1.63
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=737265> that
causes one of the new tests to spuriously fail on Ubuntu 14.04 LTS.
As the comment indicates, taint checking is not typically enabled
when running Evergreen, but we may want to consider changing
that should tuits arise.
LP#1789442: fix editing due date of hourly loans in web staff
This patch fixes a bug where editing the due date of an hourly
loan would result in the time portion always getting set to 00:00.
To test
-------
[1] Set up some daily and hourly loans in your database.
[2] Apply the patch.
[3] From the items out page, edit the due date for one or
more hourly loans. Verify that the resulting due date
is set correctly.
[4] From the items out page, edit the due date for some
daily loans and verify correctness. In particular,
verify that the resulting due date is /not/ the
following day if testing in time zones in the Americas.
LP#1552778: add timepicker to webstaff checkout page
This patch adds a timepicker to go along with the datepicker
if the operator invokes the option to set a specific due
date.
To test
-------
[1] Arrange circ policies to have both hourly and daily loans.
[2] Apply the patch.
[3] Check out an item for an hourly loan. Verify that the
due date and time is per policy.
[4] Check out an item for a daily loan. Verify that the
due date is per policy.
[5] Check out an item for an hourly loan, but set a specific
due date and time. Verify that the due date and time matches
the selected value.
[6] Check out an item for a daily loan, but set a specific
due date. Verify that the due date matches the selected
value; note that any time component is ignored since
for daily loans the time gets normalized to 23:59.
LP#1552778: make clean_ISO8601 recognize 'Z' as a timezone specifier
Prior to this patch, clean_ISO8601 would ignore 'Z' as a timezone
specifier (e.g., '2018-09-21T15:34:21Z') and treat it as if the
timestamp were in the server's time zone, leading to incorrect
results (e.g., '2018-09-21T15:34:21-04:00') unless user, client,
and server all happen to be in UTC+0. In particular, this allows
date strings emitted by the JavaScript Date object's toISOString()
method to be correctly parsed, as those strings invariably use
'Z' as the timezone specifier.
To test
-------
[1] Apply patch.
[2] Verify that regression test in t/14-OpenILS-Utils.t passes.
LP#1552778: copy some date/time utils from OpenSRF
As preparation for subsequent bugfixes, this patch
copies several date/time routines from OpenSRF::Utils
to a new module, OpenILS::Utils::DateTime. Specifically,
the routines copied over are:
* clean_ISO8601() (renaming of the OpenSRF cleanse_ISO8601)
* gmtime_ISO8601()
* interval_to_seconds()
* seconds_to_interval()
This move will allow us to fix bugs in this core routines
without requiring a mandatory OpenSRF upgrade. Furthermore,
with the exception of interval_to_seconds() (and in only one
place), none of those routines are used by OpenSRF itself.
To test
-------
[1] Apply the patch.
[2] Verify that unit tests pass.
[3] Verify that all Perl services start correctly.
[4] Verify that date/time and interval calculations continue
to work as expected, particularly in circulation.
In our effort to consistently call items/copies items, we accidentally replaced
the action "Copy Current Row" with "Item Current Row." This branch restores
the correct language.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Jason Stephenson <jason@sigio.com>