The passwd storage PgTAP test is failing because the user ids shifted when new
sample records were added to the actor.usr table in the Concerto dataset. This
branch changes the id in the test to point to the correct user.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <ben@evergreener.net>
LP#1586567 Always return Fund Years sorted descending
Currently, fund year selectors in Acq interfaces (at least Acq Admin ->
Funds, and Acq -> Load MARC Order Records) show the fund years in
database order. This commit adds a descending sort to the perl function
that retrieves fund years for those interfaces. It also removes the
unsuccessful attempt at sorting that was present in the dojo code.
Jason Etheridge [Wed, 2 Nov 2016 18:28:08 +0000 (14:28 -0400)]
lp1261835 stop colliding bill UI refreshes
for want of promises in Angular :)
population of the bill list in this implementation is asynchronous, but the rest
of the refresh action is not, and it's sadly being invoked multiple times. There
are different ways to fix this, but using a semaphore seems to work.
Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Dawn Dale <ddale@georgialibraries.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Dan Wells [Wed, 2 Nov 2016 18:35:16 +0000 (14:35 -0400)]
LP#1175293 Use filtered fund dropdown in funding source interface
The exising interface for allocating to funds from a funding source
view lists all funds by code only. Since many (most?) orgs reuse
fund codes year to year, you eventually end up with a bunch of
dupes you cannot tell apart.
Let's "borrow" an AutoFieldWidget to do the heavy lifting of creating
a filtered list of active funds, and include the year for further
user validation.
This is inspired by a few other fund dropdowns, but may not be the
best overall solution.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Bill Erickson [Tue, 28 Feb 2017 16:33:25 +0000 (11:33 -0500)]
LP#1668682 Checkout holds fullfill ignores expire time
Checking out a hold-captured item for a hold whose expire time is in the
past, but has not yet been canceled by the hold targeter, now marks the
hold as fulfilled.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Kathy Lussier [Fri, 3 Mar 2017 04:52:30 +0000 (23:52 -0500)]
LP#1522644: Make Mark for Hold Transfer option consistent with other options
Makes the following changes to the Mark for Holds Transfer Destination option:
1) Changes the label from "Mark As Title Hold Transfer Destination" to "Title
Hold Transfer." The 'Mark" piece is already implied in the "Mark For" button
label, and the long text was pushing the menu off the screen for some displays.
2) Makes the option behave as other Mark options. If a record is already marked,
it displays the marked Record ID in the menu. The mark is also removed when the
"Reset Record Marks" option is clicked.
3) Pushes the reset option down to the bottom of the menu and alphabetizes the
other Mark options above it.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
The SuperCat transform methods for records retrieved by record ID or ISBN call
toString on the XSLT output object, which results in a byte string and thus
corrupted output. Instead, call output_as_chars() on the stylesheet object to
generate a character string and avoid corruption.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
In moving from the deprecated XML::LibXSLT::output_string() to output_as_chars(),
add a regression test to ensure that we do not suffer from corrputed encoding
output in the future.
We test both the case where an output encoding has been explicitly declared,
as well as the case where an output encoding has not been explicitly declared.
It was this subtle difference that was causing the problem with output_string().
Signed-off-by: Dan Scott <dan@coffeecode.net> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Dan Scott [Fri, 3 Mar 2017 06:40:19 +0000 (01:40 -0500)]
LP#1442276 Prevent corrupted Unicode chars in MARCTXT and RIS
The MARCTXT and RIS feeds use the deprecated XML::LibXSLT::output_string()
method which, depending on the stylesheet, generated either a byte string
or characters. Using output_as_bytes() ensures it is always a byte string
and avoids the resulting MARCTXT and RIS output from corrupting Unicode
characters.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
The XML::LibXSLT::output_string() method was deprecated in favour of
output_as_bytes() and output_as_chars(). The latter always generates
UTF8 output as characters, which is what we need, while output_string()
behaviour depended on the stylesheet.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Teach the egDate unit test requesting '2 days' worth of seconds to allow
values for 47, 48, or 49 hours. 47 and 49 happen when crossing time
change boundaries.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Bower install was grabbing a later version of angular-cookies than we wanted,
resulting in errors when attempting to build the web client. Changing a
caret to a tilde in the bower.json files keeps us to a 1.5.x version of
angular-cookies, making web client builds happy.
Many thanks to Ben Shum for finding the solution to this problem!
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <ben@evergreener.net>
Display a progress dialog while loading the Patrons With Negative
Balances UI. Dialog starts indeterminate, morphing into
semi-determinate as patron data streams in.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
1. Disable org units in the org unit selector that cannot have users.
Additional code cleanup:
2. The org selector calls egStartup internally, so if the page
controller has no need to wait on the startup to complete, then it does
not need to manually invoke the startup.
3. No longer necessary to manually track the selected org unit from the
org selector directive.
1. Always apply default values after egStartup.go() has completed.
Among other things, this prevents the occaisonal "cannot call ws_ou()
on an undefined value" errors bubbling up from the org selector
when an attempt to set default values occured before egAuth had
retrieved the user (which occurs during startup).
2. For consistency, always run the $scope.onchange handler on initial
page load when a selected value and change handler are defined.
Similar to #1 above, the initial onchange always fires after
egStartup has completed.
3. Run the change handler in a $timeout so that the $scope.selected
value has a chance to propagate to the calling controller's $scope.
Otherwise, the the calling controller has to manually track the
selected value (which partially defeats the purpose of having this
directive in the first place).
Bill Erickson [Wed, 20 Aug 2014 20:45:47 +0000 (16:45 -0400)]
LP#1653001 webstaff: Holds pull list sortable columns
Retrieve holds for the pull list via the canned "ahopl" pull list IDL
class. This lets the grid fetch the data via canned flattener query,
supporting server-side sort/limit/offset options.
To retain all previous UI behavior, primarily editing hold attributes
(e.g. notification prefs), hold details for each hold have to be fetched
(and cached) in addition to the main grid data. The grid renders and
sorts the flattener data, then grid actions act upon the fleshed hold
details data.
Commit also includes:
1. Added some missing IDL links for the "ahopl" class.
2. Micro-optimization to egGrid to exit early when an invalid IDL path
is provided.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Bill Erickson [Fri, 30 Dec 2016 16:54:08 +0000 (11:54 -0500)]
LP#1653001 Hold details authoritative API cstore maintenance
Avoid cstore exhaustion during .authorative API calls that run
Holds:retrieve_hold_queue_status_impl() by using the in-transaction
editor for YAOUS lookups instead of allowing the lookups to create their
own cstore connections, each spawning a new transaction, since
CStoreEditor is in authoritative mode.
Since CStoreEditor authoritative handling leaves each cstore transaction
open until the API call completes, and in this case, each hold in the batch
lookup resulted in 2 additional open cstore connections per hold, a batch
lookup of (say) 15 holds, meant 31 cstore connections were opened in one API
call.
Telling the YAOUS lookup to use the existing editor means the same call
completes with 1 cstore connection.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
1. Use the new egProgressDialog name and the new increment() function.
2. Open the dialog before data retrieval starts to better indicate work
is happening.
3. Close the dialog in promise.finally() to ensure it always closes.
Use an HTML5 <progress/> element as the progress bar instead of the
Bootstrap progress CSS class. The HTML5 element provides a more
accurate display.
Add support for 3 modes of operation:
* determinate - shows dialog and percentage progress
* semi-determinate - shows a value-less <progress/> but also displays
the current value to indicate work happening.
* indeterminate - shows a value-less <progress/> with no specificat
indication of forward momentum.
Adds a bunch of docs.
Rename egProgressModal to egProgressDialog for consistency with other
eg*Dialog's (which are also modal).
Support a new egNet.handlePermFailure() callback. When this function is
defined, it's invoked any time an egNet request returns a PERM_FAILURE
event.
When invoked, the in-progress promise linked to the original
request is effectively superseded by the promise returned by the
egNet.handlePermFailure(), living and dying with the new promise. This
makes it possible to hold off resolving the original request until the
handler is done.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Initiate the auto-renewal earlier in the checkout process, specifically
before response data is unnecessarily fleshed. Add an explicit
auto_renew toggle to the checkout response blob to more clearly indicate
why checkout counts are not modified.
Additional code comments and logging.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Jeff Davis [Fri, 27 May 2016 20:10:29 +0000 (13:10 -0700)]
LP#1576435: Include inactive patrons on patron reg duplicate search in web client
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Jeff Davis [Sun, 24 Apr 2016 02:12:27 +0000 (19:12 -0700)]
LP#1576435: Force "Include inactive patrons?" on patron reg duplicate search
In the XUL client, duplicate patron checking in the patron registration
interface now includes inactive patrons (see LP#1217052). However, if
you click on the link "Found X patron(s) with the same name," the
resulting patron search does not always include inactive patrons by
default (instead, the value of the "Include inactive patrons?" checkbox
is cached from your last patron search, as usual).
To prevent user confusion in this scenario, this commit forces the
linked patron search in the XUL client to always include inactive
patrons.
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Galen Charlton [Fri, 12 Aug 2016 18:03:10 +0000 (14:03 -0400)]
LP#1579219: set up mod_perl as an Evergreen dependency
This patch, in conjunction with another one for OpenSRF,
set mod_perl up as a dependency installed when Evergreen is installed,
not when OpenSRF is installed, as OpenSRF itself does not require
mod_perl.
Minor tweak to Galen's original patch to include mod_perl in the list
for apache mods to be activated by default.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <ben@evergreener.net>
Kathy Lussier [Thu, 2 Mar 2017 21:55:15 +0000 (16:55 -0500)]
LP#1669522: Remove regex that caused duplication in author query
In LP#1308090, a regex replacement was added to the normzalize_qterm block
that didn't work as intended. Instead of replacing the already-normalized qterm,
it added a new string to the qterm, causing the author and date terms to
duplicate in the resulting query when the link is clicked. Since the the
problem the regex was trying to solve appears to be an aesthetic one rather
than a functional one, this commit removes that regex.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Ben Shum <ben@evergreener.net>
Dan Scott [Wed, 22 Feb 2017 16:29:21 +0000 (11:29 -0500)]
LP1584891: Export MARC holdings with UTF8 subfields
The --items option of marc_export adds a new MARC 852 field with a
number of subfields that it retrieves from the database. If those
subfields (such as call number, copy location, etc) contain Unicode
characters, then we need to decode the incoming UTF8 characters
when adding the subfield values to avoid corrupting the MARC.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Jason Stephenson [Sat, 10 Dec 2016 02:21:35 +0000 (21:21 -0500)]
LP 1648922: Hide orgs that can't have users in workstation registration.
A user can register a workstation at an org unit that can't have users
in the webstaff client. The XUL staff client did not allow this.
Such org units were grayed out in the selector.
This commit hides org units that can't have users in the ou selector
for workstation registration in the webstaff client. This is in
addition to hiding the existing hiding of org units where the user
does not have the REGISTER_WORKSTATION permission.
To reproduce this bug, see that org units that have false for
can_have_users appear in the selection for workstation registration.
Also see that you can register a workstation at one.
After applying this patch, make sure you've logged out and then log in
to the webstaff client. You will now see that those org units no
longer appear in the slection list. You cannot register workstations
at those org units any longer.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Removes the redundant TCN value from the item status view so that the
columns can once again be vertically aligned. The TCN is visible in the
bib summary pane along the top.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Galen Charlton [Fri, 24 Feb 2017 23:04:29 +0000 (18:04 -0500)]
LP#1667835: avoid edi_fetcher.pl crash upon fetching zero-length file
This patch fixes an issue that could cause edi_fetcher.pl to crash
if the EDI partner supplies a zero-length file for Net::FTP to
download; such files are now skipped.
Testing would entail setting up an FTP server that contains a
zero-length file, then setting up an EDI remote account and
using edi_fetcher.pl to try to retrieve the file.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Jason Stephenson <jason@sigio.com>
When LP#1541559 was merged, we missed checking for CSS changes and this
orientation update was missed. Adding to the style-rtl.css.tt2 file the
new CSS IDs for ebook API tables.
Signed-off-by: Ben Shum <ben@evergreener.net> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Ben Shum [Mon, 27 Feb 2017 21:32:48 +0000 (16:32 -0500)]
LP#1493824: Install PG 9.4 on Debian Wheezy and Ubuntu Trusty
Debian Wheezy only ships with PG 9.1 by default. Ubuntu Trusty has Pg
9.3. Pg 9.4 is the recommended version for use with Evergreen going
forward and will be the required minimum version of PostgreSQL for use
with Evergreen 3.0. Since we envision continuing to support Wheezy
and Trusty through the lifetime of Evergreen 3.0, we therefore help
the user out by adding the apt.postgresql.org repository for them and
install PostgreSQL version 9.4 on these operating systems.
This commit does the following:
1. Sets up the installer to use the PostgreSQL community's apt sources
in a new Makefile.debian target, debian_postgresql_repo. This target
is run on Debian Wheezy and Ubuntu trusty during prerequisite
installation.
2. Installs PG 9.4 client on Wheezy and Ubuntu.
3. Installs PG 9.4 server in the server prerequisite targets for
Wheezy and Ubuntu.
4. Uses pg_config in installation of lidbdi-drivers from source.
5. Updates the server installation document to reflect the above
changes.
6. Updates the server upgrade documentation to reflect the new minimum
(9.3) and recommended (9.4) PostgreSQL versions.
Benjamin Shum is the primary author of these changes, though they are
based on Chris Sharp's idea for using the PostgreSQL community apt
source.
The libdbi-drivers installation was fixed by Jason Stephenson who also
added an if block to skip the apt.postgresql.org repository set up if
it is already configured on the target host.
Signed-off-by: Ben Shum <ben@evergreener.net> Signed-off-by: Jason Stephenson <jason@sigio.com>
Dan Scott [Thu, 2 Mar 2017 15:40:03 +0000 (10:40 -0500)]
Remove Fedora from install documentation
Fedora is no longer a "well tested target" as the corresponding
Makefiles are not up to date. Therefore, remove all mention of it from
the install documentation.
Galen Charlton [Tue, 28 Feb 2017 18:59:24 +0000 (13:59 -0500)]
LP#1668725: fix Z39.50 overlay when no profile set
This patch fix an issue where, when performing an overlay
of a record from Z39.50 in the web staff client, if no
merge profile is set, the incoming record is not displayed
in the right-hand pane of the merge dialog.
To test
-------
[1] Select an overlay target, then use the web staff
Z39.50 search interface to find a record to overlay
it with.
[2] Open the Z39.50 overlay dialog and verify that no
profile is set (you may need to clear the
eg.cat.z3950.default_merge_profile key to ensure this).
[3] Note that the incoming record from Z39.50 doesn't display
in the right-hand pane.
[4] Apply the page, then repeat step 2. This time, the incoming
record should be displayed.
Galen Charlton [Mon, 27 Feb 2017 15:19:30 +0000 (10:19 -0500)]
LP#1607487: make schema update script use same whitespace
This patch ensures that the naco_normalize() and search_normalize()
functions preserve the exact whitespace used in the baseline
function definitions; this makes no functional difference, but
may help folks using diffs to compare schema versions.
Jason Boyer [Mon, 13 Feb 2017 21:59:01 +0000 (16:59 -0500)]
LP1371772: Correct Escape of Library Info URL
Using the url filter in TT2 causes named anchors to
be escaped in such a way that urls including them
will likely return a 404. Since the url is being
used in an html document, the html filter is
sufficient and allows the url to work as intended.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Galen Charlton [Wed, 22 Feb 2017 15:09:54 +0000 (10:09 -0500)]
LP#1666933: note that the minimum supported Pg version is 9.3
Before final release of 2.12.0, we should update the installation
instructions to note that apt.postgresql.org is available
for Debian-based distros that don't package 9.3 directly.
- remove a duplicate call to metabib.remap_metarecord_for_bib()
- ensure that the 'ebook_api' config.settings_group row is added
before adding YAOUS types that depend on it
Kathy Lussier [Wed, 22 Feb 2017 14:32:29 +0000 (09:32 -0500)]
Docs: Additions to the 2.12 release notes
We missed the release notes for some new features. I also updated a couple and
removed some release note entries from 2.11 that were still hanging around in
the release note directories.
As bshum did for e-book records, let's move MR records down to the end of the
script to avoid breaking tests. Also, made some tweaks to bibs_mr.sql so that
it would import bibs correctly.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <ben@evergreener.net>
When this feature is enabled, Evergreen will use the open-ils.ebook_api
service to look up title and patron information from specified vendor
APIs and display that information in the TPAC. (The service should be
configured using org settings before being enabled in config.tt2.)
This frontend is essentially a JS layer over top of the OPAC, with some
light use of Dojo since we're already using it, plus a few additions to
TT2 templates. The JS layer uses OpenSRF JS bindings to talk to the
backend service, which in turn makes the appropriate calls to the
third-party API. Session IDs and (if logged in) patron information are
stored in cookies, which are cleared when the patron logs out.
The user will see the following changes:
- On search results and record summary, for any records from a known
e-book vendor, Evergreen will automatically look up holdings info from
the vendor API. If detailed information on formats and available
"copies" is provided by the API (e.g. for OverDrive), that information
is displayed in a table within the record; if only basic availability
info is available (e.g. for OneClickdigital), a line is added to each
record indicating whether the title is available. (Eventually, "Place
Hold" or "Check Out" links will be added to allow patrons to
checkout/hold titles without leaving the TPAC.)
- When the user is logged in, the dashboard will show a count of e-book
checkouts and holds for all enabled e-book vendors, as will the
account summary. This is separate from the "main" checkouts/holds
display, since checkouts/holds on titles from third-party vendors are
unrelated to checkouts/holds in Evergreen.
- When the user is logged in, additional tabs will be available in My
Account for displaying detailed information on the patron's ebook
checkouts and holds. (Eventually, functionality will be added to My
Account allowing the user to download or renew titles, suspend or
cancel holds, etc.)
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Kathy Lussier <klussier@masslnc.org>