Lp 1835620: Require some Storage submodules instead of use them
Switch from "use" to "require" for submodules in OpenILS::Application
::Storage::CDBI and OpenILS::Application::Storage::Driver::Pg.
Circular dependencies and other issues cause the following errors at
compile time for those modules:
Compilation failed in require at
/usr/local/share/perl/5.28.1/OpenILS/Application/Storage/CDBI.pm line
9.
Compilation failed in require at
/usr/local/share/perl/5.26.1/OpenILS/Application/Storage/Driver/Pg.pm
line 15.
Require loads the submodules at run time and does not attempt to
import any methods. This is the behavior we want, eliminates the
above errors, and everything still works.
Add comments above the required modules explaining why require is
needed and not use.
Enable and reorder all of the tests in Open-ILS/src/perlmods/t/
09-OpenILS-Application-Storage-Driver.t. Repairing the above issue
also repairs these tests.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Jason Boyer <jboyer@equinoxinitiative.org>
Jason Boyer [Tue, 22 Oct 2019 13:18:29 +0000 (09:18 -0400)]
LP1825403: Do not Include Tag Owner in Tag
Copy tags were accidentally having their owning
location shortname included in the tag values,
this patch allows the owner to be displayed but
not included in the value used.
Signed-off-by: Jason Boyer <jboyer@equinoxinitiative.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Dan Wells [Mon, 12 Nov 2018 16:31:33 +0000 (11:31 -0500)]
LP#1802952 Check bib visibility for located URI auto suggest
Suggestions from records with only located URIs (no copies) do not
appear in the OPAC search suggestions. This appears to be a cousin of
bug #1773479, but in a neighboring function.
In the case of libraries with LURIs, we need to consider bib visibility
separate from copy visibility in order for both to show up.
Dan Briem [Sun, 11 Aug 2019 01:02:00 +0000 (21:02 -0400)]
LP#1777698 Duplicate barcode alert appearing on new barcodes
When scanning new copy barcodes, ng-change quickly fires multiple times
and sends promises to check for duplicates. If 1234 exists and you scan
12345, if the 1234 promise resolves after 12345, it will indicate it's a
duplicate. This patch keeps a count of the promises sent and only the
latest promise will set the boolean to indicate if it's a duplicate.
Hard to test because the promises usually resolve in order:
1. Add a new holding with the first few characters of an unused barcode
2. Scan the new barcode multiple times until you see the dup error
3. Apply patch and scan the new barcode multiple times (no error)
Signed-off-by: Dan Briem <dbriem@wlsmail.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Dan Briem [Sat, 24 Aug 2019 18:44:01 +0000 (14:44 -0400)]
LP#1841089 Apply button in Patron Bill History screen is in confusing location
It's possible to miss the apply button for the date range in bill history
because it's located before the datepickers. The interface also allows
invalid date ranges.
This removes the apply button and watches the start and finish dates in the
bill history and payment history controllers. If it's not first init and they
are valid date objects in a valid date range, the grid refreshes with the new
date range query. If start > finish they are set equal to each other to force
a valid range.
To test:
1. Apply patch
2. Bring up a patron with bills and payments (or add bills and payments)
3. Under the Bills tab click History
4. Change the date range and observe that the grid refreshes
5. Try to set the start date past the finish date and vice versa
Signed-off-by: Dan Briem <dbriem@wlsmail.org> Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
For a web staff eg-grid to save and retrieve its settings, it needs a unique
persist-key. This commit adds one for the Bills grid and Payments grid on the
patron bills Full Details view (right-click a bill, choose Full Details, then
click the Details tab).
Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Jennifer Pringle <jennifer.pringle@bc.libraries.coop> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Jeff Davis [Tue, 2 Oct 2018 21:28:31 +0000 (14:28 -0700)]
LP#1609556: only include OPAC-visible copies in SRU/Z39.50 holdings
To test:
1. Create a bib record.
2. Add an item to the record at BR1. Mark it as not OPAC-visible.
3. Do a CONS-level SRU search for the record, including holdings. The
record is not included in results because there are no OPAC-visible
holdings.
4. Add a second item to the same record, this time at BR3. Mark this
one as OPAC-visible.
5. Repeat the CONS-level SRU search, including holdings. The record
appears in search results, but holdings information in 852 includes
*all* copies, including non-OPAC-visible copies.
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Kyle Huckins <khuckins@catalyte.io> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Garry Collum [Mon, 20 May 2019 16:48:10 +0000 (12:48 -0400)]
lp1813056 Fixes Current Date in Date Returned in Circ History CSV
The date returned column in the csv file created in the opac for the patron's
Check Out History contains the current date instead of the check-in date. This
patch fixes that issue.
To test:
1. Turn on "Keep history of checked out items" in the patron Search and
History Preferences in the opac, or find a patron that already has this
option turned on.
2. Check-in some items that the patron has checked-out.
3. Wait a day, or if it was an existing history list immediately, go to the patron's Items Checked Out in the opac and look at the Date Returned
column in the Check Out History list.
4. Download the CSV file and note that the date is the current date.
5. Apply the patch.
6. Refresh and download the CSV file again and note that the Date Returned
is now the checkin date.
Mike Rylander [Wed, 17 Jul 2019 21:14:01 +0000 (17:14 -0400)]
LP#1836963: reduce the cost of utility functions, speeding up search
For large org trees, some several seconds are spent testing org visibility.
The immediate cause is that AppUtils::get_org_tree() does not populate the
process-local cache with a memcache-cached org tree. That only happens when
memcache does not have a copy of the org tree. This is obviously a simple
oversight, which is addressed by making sure any memcache return value
is pushed into the the process local cache.
Additionally, the visibility check is making heavy use of lots of
indirection and delegation to utility code, when some slightly smarter code
could avoid many repeated function calls. We now supply some local
utility code to flesh and unflesh the parent_ou field of objects in the
org tree, allowing us to avoid using find_org() and instead just calling
parent_ou() when walking "up" the tree.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
LP#1845050: fix issue where reports interface was partially loaded
This patch adjusts mod_xmlent to not free its XML parser
prematurely in the face of an EOS bucket received while processing
a sub-request.
To test
-------
[1] Test on a platform that has Apache 2.4.25 or later, such as
Debian Stretch.
[2] Note that when loading the reports interface that the source
of the frame containing oils_rpt.xhtml is incomplete and that
actions like creating a template or folder do not work in the
interface.
[3] Apply the patch and repeat step 2. This time, oils_rpt.xhtml
should be fully loaded and the interface fuctional.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Jason Boyer <jboyer@equinoxinitiative.org>
VIEW_COPY_ALERTS and ADMIN_COPY_ALERT permissions were added
recently, but not assigned in the default seed data. This branch
assigns VIEW_COPY_ALERTS to Staff profiles at the Consortium depth
and adds ADMIN_COPY_ALERT to the Cataloging Administrator profile.
Since permissions are set so specifically per-site, this branch does
not contain an upgrade script, but does provide an update to release
notes reminding site admins to manually add them to the appropriate
profiles.
Change the update to an "ALTER FUNCTION ... STABLE" both
to make the purpose of the update more clear and to remove
the need to check the rest of the function definition when
backporting.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Jason Boyer <jboyer@equinoxinitiative.org>
Chris Sharp [Mon, 20 May 2019 20:14:00 +0000 (16:14 -0400)]
LP#1768141 - Mark permission.grp_descendants STABLE.
Quoting Galen Charlton's comments on the bug report:
The database function permission.grp_descendants should
be marked stable; it qualifies, and doing so should allow
PostgreSQL to improve query plans. One example of a query
that would benefit is searching by patron profile (a la
bug 1497322)
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Jason Boyer <jboyer@equinoxinitiative.org>
Jane Sandberg [Wed, 21 Aug 2019 17:26:47 +0000 (10:26 -0700)]
LP1739607: Add missing columns to patron record
To test:
1) Open up a patron record with some bills.
2) On the Items Out tab, notice that there is a column named Location
3) On the Bills tab, open up Bill history.
4) In the history transactions grid, note that the column picker is
missing the following columns:
* Item owning library
* Checkout/renewal library
* Due date
* Fines Stopped Reason
5) In the history payments grid, note that the column picker is missing
the same columns.
6) Apply this commit.
7) Note that the Items Out tab's column is renamed to "Shelving
Location".
8) Notice that both Bill history grids column pickers include the
requested columns.
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Josh Stompro <stompro@stompro.org> Signed-off-by: Jason Boyer <jboyer@equinoxinitiative.org>
Jeff Davis [Mon, 10 Jun 2019 16:53:44 +0000 (09:53 -0700)]
LP#1822630: fix sanitizing CGI params on place_hold_result
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Jason Stephenson <jason@sigio.com>
(cherry picked from commit 019118895c94f5cc810b3f1fb95b2634a1c993b6)
Jeff Davis [Mon, 1 Apr 2019 22:13:09 +0000 (15:13 -0700)]
LP#1822630: further sanitizing of CGI params when embedded in HTML
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Jason Stephenson <jason@sigio.com>
(cherry picked from commit e2d401a9da3c70c1e56e518f40d0de928919990f)
Jeff Davis [Mon, 1 Apr 2019 17:00:59 +0000 (10:00 -0700)]
LP#1822630: sanitize user input before display on browse results
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Jason Stephenson <jason@sigio.com>
(cherry picked from commit 4402695e80dbcee5187a35de46e5e314bab1231a)
Jeff Davis [Thu, 13 Sep 2018 18:58:48 +0000 (11:58 -0700)]
LP#1559239: use rel="noopener" when opening external URLs in a new tab
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Jason Stephenson <jason@sigio.com>
(cherry picked from commit 1eccaeec88a99e9792b388e95732faa7576e7164)
blake [Fri, 1 Dec 2017 22:32:22 +0000 (16:32 -0600)]
LP1735847: Remove patron info from default Hold Transit Slip
Removes most patron information from the Hold Transit Slip
in both the web and XUL client default definitions.
Signed-off-by: blake <blake@mobiusconsortium.org> Signed-off-by: Dan Pearl <dpearl@cwmars.org> Signed-off-by: Jason Boyer <jboyer@equinoxinitiative.org>
The old reporter used '::' as a path separator in some labels, while the
new version uses '->' in its place. This would normally be just a
curiosity, except that the hashes used as join aliases are generated
from these path labels. The end result is that while a report can be
cloned, if you add a field anywhere other than the top level, it
references a join alias which does not exist, and the report breaks.
Now, the method by which report templates are upgraded from v4 to v5
does not happen all in one pass, but rather a first pass is made
populate the interface, then the rest is done when the user saves the
clone. Because of this, it actually seems adequate to only fix the
label, then allow the other steps to fill in the other bits upon saving
of the report.
Thank you to J. Boyer for helping track down the culprit.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Jason Boyer <jboyer@library.in.gov>
This commit addresses a variety of issues with the webstaff reporter
interface, particularly cases of cloning reports created in the XUL
client.
1. The conversion process did not account for manually selected JOIN
operations (aka nullability). These JOINs are now honored by the
conversion code.
2. The conversion process did not account for aggregate filters. These
filters are now converted where present.
3. The previous reporter interface attempted to intelligently apply LEFT
and INNER JOINs by default. The new interface applied INNER joins
exclusively by default, leading in many cases to different results.
This commit reinstates the previous logic. One side effect of this
change is that the IDL tree itself is no longer opinionated about JOIN
type, and the default JOIN is undefined.
4. The nullability selector has been expanded to allow for manual
selection of INNER joins, as they will longer be the default in some
cases.
5. Cloned-converted reports did not retain column order. The order is
now preserved.
6. Some templates created in the older interface could, in some cases,
have aggregate values set as the string "undefined" rather than
actually being undefined. This led to converted templates failing with
"column [xxx] must appear in the GROUP BY clause...", as they were
incorrectly converted as aggregates. The conversion code now accounts
for this latent bug.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Jason Boyer <jboyer@library.in.gov>
James Fournie [Thu, 2 May 2019 16:53:35 +0000 (09:53 -0700)]
LP1751800 - fix fields fields reversing
The pop() here will remove the last item in the array, only to add it
later with a push() a few lines later. Instead use a shift() to
preserve the order.
Signed-off-by: James Fournie <james.fournie@gmail.com> Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Galen Charlton [Wed, 22 May 2019 15:12:37 +0000 (11:12 -0400)]
LP#1785061: move the filter value munging to the template service
This allows the reporter app to stay a bit more focused on
display concerns.
Here's a test plan for the patch series
---------------------------------------
[1] Create a reporter template that has a filter field
and a filter operator of "In list", "Not in list", "Between",
or "Not between" and hard-code a value for that filter
in the template, separating values with a comma.
[2] Try to create a report from that template; note that it
fails with an error.
[3] Apply the patch and repeat steps 1 and 2. This time, the
report should succeed.
Note that this fix applies only to hardcoding filter values in the
template; it doesn't change any behavior when attempting to set
a filter value for any of the four operators above at the point of
creating a report.
Remington Steed [Thu, 2 May 2019 13:15:30 +0000 (09:15 -0400)]
LP#1785061: Split filter value on comma for "in list" and the like
This commit borrows directly from the XUL reporter code (see
function __default_value_event_handler () in
Open-ILS/web/reports/xul/template-config.js). Basically, when the filter
value is saved, certain cases need special treatment, such as splitting
an "in list" value on commas. This commit includes a helper function
which does the special treatment and saves the filter value. This helper
is called both when the value itself is changed, and when the operator
is changed.
LP#1722827: trim spaces from 856$9 when parsing locating URIs
This patch ensures that any leading and trailing spaces
and non-breaking-spaces in the 856$9 are ignored when
extracting the org unit shortname. As a consequence,
extraneous leading/trailing whitespace in the $9 will not
prevent the located URI from being displayed in the appropriate
places.
Michele Morgan [Wed, 23 May 2018 17:54:28 +0000 (13:54 -0400)]
LP#1511765 Fix error when checking in with zero-balance lost OU setting enabled
Fixes an error generated when checking in Lost/Long Overdue/Lost and Paid
items with no associated circ when the org unit setting
circ.checkin.lost_zero_balance.do_not_change is set to TRUE
Items can attain this state from migration, or when the associated circ
has been aged.
Jane Sandberg [Mon, 29 Jul 2019 18:56:31 +0000 (11:56 -0700)]
LP1802593: Correct formatting of language code in Angularjs, KPAC
EgWeb offers two different formats of the current locale: ctx.locale and
ctx.eg_locale. This commit configures the lang attribute in AngularJS
staff client, OPAC, and KPAC to use eg_locale, since it has the
appropriate format (e.g. en-US, fr-CA).
Also adds some tests for EgWeb's handling of language codes.
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Kyle Huckins [Thu, 23 May 2019 20:53:11 +0000 (20:53 +0000)]
lp1034058 Disable Renewal Due Dates in the Past
Apply minimum date and an out of range flag to prevent
selecting or inputting a past date when renewing items from
Circulation->Renew Items or Patron->Items Out->Actions->
Renew With Specific Due Date.
To test
-------
[1] Create a loan.
[2] From the patron's Item Out page, use the Renew With
Specific Due Date action. Note that the date widget
will allow you to specify a due date in the past.
[3] From the Circulation -> Renew interface, note that
the date widget will also let you specify a due
date in the past.
[4] Apply the patch and repeat steps #2 and #3. This time,
a due date in the past cannot be entered, both via
the calendar button and by direct entry in the text
box.
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
AutoFieldWidget's searchFormat (among other things) controls
the formatting of the selected value for a drop-down, so
this patch sets it for funds as well. This patch also tidys
up whitespace.
Rogan Hamby [Fri, 9 Mar 2018 13:38:06 +0000 (08:38 -0500)]
LP#1650409: improve authority_control_fields.pl's --all and --days_back processing
When --all is used, the list of bibliographic records to process is now
retrieved via a direct database query instead of using open-ils.storage,
avoiding a potential timeout.
The query used to fetch records when --days_back is used now fetches
all records that were edited up to the specified number of days
ago. Prior to this patch, --days_back ended up fetching records
created on the current day and records edited on the --days_back
day, skipping any that were updated in between.
Garry Collum [Mon, 20 May 2019 18:41:32 +0000 (14:41 -0400)]
LP1813078 Menus are sometimes grayed out based on browser size
This patch changes a media definition in css from 800px to 768px, the md column
size for bootstrap.css. Items in the menus font color changed when the browser
was sized between 768px and 800px.
To test.
1. Expand the Circulation menu, and change the browser to a width between
768px and 800px. Notice that the menu items change to a gray color.
2. Apply the patch, and then change the width of the browser. Notice that
the menu items do not change color before the menu is collapsed.
Dan Briem [Fri, 5 Jul 2019 23:34:13 +0000 (19:34 -0400)]
LP#1805895 Bucket grid configuration updates do not save
Some saved columns stick, but others are ignored. Issue affects eg-grid[s]
that use the auto-fields attr to load all columns on idl-class attr. This
is because saved columns are whitelisted against the initial column config
before the auto fields are loaded.
Patch adds $scope.handleAutoFields() to egCore.hatch.getItem. This happens
after the eg-grid-fields transclude (no collisions) but before the saved
columns are whitelisted. The original call remains to handle cases where
there is no persist-key or saved config.
Test:
1. Go to Circulation->User Buckets
2. Add the Is Deleted column to the grid
3. Save columns and refresh (note Is Deleted is not visible)
4. Apply patch and repeat steps 1-3 (note Is Deleted is now visible)
Signed-off-by: Dan Briem <dbriem@wlsmail.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Jason Boyer <jboyer@library.in.gov>
Garry Collum [Fri, 18 May 2018 23:57:42 +0000 (19:57 -0400)]
LP1766982 - CSV downloads contain the string 'null' for null values.
Adds a check for null and undefined in the getItemTextContent function
in grid.js which is called by both the code to download grid data as
CSV and for printing grids.
To test
1. Place holds on a couple of titles, one of which has no author. In the
test data TCN 226, The Crow, has no author data.
2. Pull up the Holds Pull List.
3. Download Full CSV - to download the CSV file and view it in a
spreadsheet or text editor looking specifically at the Author column.
4. Print Full Grid - to view the data in a printout, since this function
also affects printing.
5. Go back to the Holds Pull List and click on one of the barcodes under
the Current Copy column.
6. Click on the List View.
7. Download Full CSV - open the resulting file to inspect the
Alert Message data.
8. Apply patch and repeat steps 2-7.
Josh Stompro [Wed, 27 Feb 2019 21:07:43 +0000 (15:07 -0600)]
LP#1798187 - Support CRLF and LF format for item status import files
Testing Plan:
Before patch, try to import a file in CRLF end of line format that includes
leading and trailing spaces, empty lines, lines of just spaces or
barcodes with spaces. The import will fail to load those items and will
stop processing when it hits certain situations.
After patch, try to import a file in CRLF EOL format that includes barcodes
with trailing spaces, leading spaces, barcodes with spaces, and/or
empty lines. The import will load all barcodes.
Galen Charlton [Fri, 24 May 2019 18:04:33 +0000 (14:04 -0400)]
LP#1796903: (follow-up) disabled the calendar button when the text input is disabled
Disabling the calendar button when the datepicker is disabled allows
ChromeVox (at least) to skip past a button that cannot be invoked
until (like is possible in the checkout page) the picker is enabled.
Jane Sandberg [Tue, 9 Oct 2018 14:37:56 +0000 (07:37 -0700)]
LP1796903: Make date picker calendar button more accessible
To test:
1) After applying this commit, navigate to a place in the Web client
that includes a date picker (such as the checkin screen).
2) Hover over the calendar button with your mouse and confirm that a
tooltip appears.
3) Verify that the button element has an aria-label attribute.
4) Verify that the button element has an aria-pressed attribute that
is false when the date picker is closed; true when it is open.
5) Use a screen reader (like NVDA or ChromeVox). Verify that when you
tab over to the date picker, the user is informed of the aria-label
and aria-pressed values
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
LP#1777207: teach egGrid how to prepend rows more efficiently
The checkin and checkout grids in the AngularJS client have
been doing full grid refreshes when adding a checkin or
checkout to their respective grids. While this does not
result in re-fetching data for the loans that were already
processed, as more entries get added to the grid the time
it takes to do a full digest of the grid contents during a
egGrid.collect() (which empties the list of displayed rows,
then refills it), gets progressively longer. Grids that have
only ~40 entries have been observed to take several seconds
purely on the AngularJS rendering phase.
This patch teaches egGrid a new prepend() method that
takes the first element from the underlying data source and
unshifts it onto the list of displayed grid rows, saving much
rendering time. The prepend() method will also force the
grid offset back to 0 if it isn't already. Note that if
an item that would be added via prepend() might duplicate an
existing row entry, prepend() will do a full collect() instead.
If the data source has sort options set, the prepend() will
remove them. For arrayNotifier-based data sources, as are used
in the checkin and checkout grids, this means that if the user
sorts the contents of the grid, then does a circ transaction,
the new transaction will still appear at the top of the list.
Due to the way arrayNotifier currently works, the remaining
entries will retain their previous ordering.
As an implementation note, prepend() is likely going to work
/only/ for arrayNotifier grid data sources.
To test
-------
[1] In the checkin grid, check in a large number of items.
Note that the time it takes to each each item gets
progressively longer.
[2] Apply the patch and repeat step 1. This time, the time
for each checkin should not significantly vary.
[3] Verify that column sorting works as expected.
[4] Upon sorting the grid, do more checkins and note that
the new transactions show up at the top.
[5] Verify that the checkout grid continues to behave as expected.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
LP#1777207: have eg-grid generate DOM nodes only for visible columns
This patch changes an ng-show to an ng-if to generate DOM nodes
for grid cells only for visible columns. Prior to this patch, all
grid cells were generated, but the ones that corresponded to hidden
columns would simply be set as hidden.
By not generating the cells unless they're meant to be visible, grid
refreshes for wide grids (like the checkin table) render much more
quickly for a couple reasons:
- simply that there are fewer DOM nodes to process
- probably more importantly, fewer AngularJS watches get
created
To test
-------
[1] In the checkin grid, check in a large number of items, then
observe/profile timing as you change the number of visible rows.
[2] Apply the patch and repeat step 1. This time, the grid
refreshe should be measurably (and visibly) faster.
[3] Test other AngularJS grids and verify that grid display and
grid actions are normal.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
This setting was added to the database with the 'eg.' prefix, but in
the code it was not used. The end effect was that the setting likely
worked, but was not saved in the way expected.
This makes the setting name in the code match the DB.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Jason Stephenson [Thu, 20 Jun 2019 15:37:02 +0000 (11:37 -0400)]
Lp 1759343: Remove database upgrade script from 3.1 backport
Evergreen 3.1 cannot store workstation settings in the database, so
the database updates needed for Evergreen 3.2 and beyond are not
needed in 3.1 and cause errors when building or upgrading the
database.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
LP#1812900: fix retention of saved defaults in holdings editor
Because the $watch on the statistical category default OU filter
in the holdings editor can fire before the form is fully initialized,
saved defaults (i.e., the cat.copy.defaults workstation setting)
could get overwritten with the hard-coded default value for that, er,
set of defaults.
This patch ensures that that $watch saves the defaults only when the
value of the default stat cat OU filter has changed.
To test
-------
[1] Use the holdings editor on an item. Change to the defaults
tab and check or uncheck checkboxes such as "Use checkdigit"
and "Print Item Labels on Save and Exit"
[2] Refresh the page or open the holdings editor on a different item.
Note that the settings from step #1 are not retained.
[3] Apply the patch.
[4] Repeat steps #1 and #2. This time, the settings should be retained.
[5] Set the Default Filter Library in the same tab and refresh. Verify
that the OU you chose is retained.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: John Amundson <jsamundson@cwmars.org> Signed-off-by: Janet Schrader <jschrader@cwmars.org> Signed-off-by: Jason Stephenson <jason@sigio.com>
Add a title attribute to the top-right menu in the AngularJS form of the
navbar.
Signed-off-by: Sam Link <slink@LIBPC002> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
LP 115706: Avoid Internal Server Errors with Hold Count Retrieval
It can happen that the query to get a record's hold count can run too
long and timeout or fail for some other reason. When this happens,
the user sees an Internal Server Error. The underlying cause is the
following Perl error:
Can't use an undefined value as an ARRAY reference at
/usr/local/share/perl/5.22.1/OpenILS/Application/Circ/Holds.pm line
4264.
This commit rearranges the code around that line to avoid this
particular undefined value reference error.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Cesar Velez <cesar.velez@equinoxinitiative.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Kyle Huckins [Fri, 24 May 2019 17:16:00 +0000 (17:16 +0000)]
lp1789257 Items Out Monograph Part Column
Retrieve and display the label of all monograph parts for
copy listed in the Items Out table
To test
-------
[1] Apply the patch.
[2] Check out an item that has one or more monograph parts
linked to it.
[3] Verify that the Monograph Part column is available in the
Items Out grid and displays the part label(s). An example
of an item in the Concerto set that has a part is
CONC70001420.
Bill Erickson [Fri, 8 Mar 2019 15:38:43 +0000 (10:38 -0500)]
LP1748265 Hold fetch API sms_carrier option
Support a new "include_sms_carrier" option to the holds retrieve API so
the data may be fetched along with the hold instead after the fact in
the patron holds list, etc.
Garry Collum [Sun, 3 Jun 2018 19:54:25 +0000 (15:54 -0400)]
LP#1748265 SMS Carrier not an option in the patron's list of holds.
Adds SMS Carrier name as an option in the patron's list of holds.
To test:
1. Set 'Enable features that send SMS text messages' in the Library Settings to true.
2. Place a few holds for a patron, selecting text message notification.
3. Go to the patron's record and view their holds.
4. Display the 'Notifications SMS Carrier' column to view the carrier name.
Signed-off-by: Garry Collum <gcollum@gmail.com> Signed-off-by: Dawn Dale <ddale@georgialibraries.org> Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Garry Collum [Sat, 19 May 2018 21:00:40 +0000 (17:00 -0400)]
LP1772206 Tooltips missing from Patron Summary
Adds tooltips for home branch and Last Activity to emulate the XUL
client. The home branch tool tip displays the long OU name. The
last activity tooltip displays the last type of activity.
To test:
Home branch
1. Perform a patron search.
2. Click on one of the patrons in the results.
3. Hover over the home branch location in the patron summary.
Last Activity
4. Log into the opac with a patron account to some patron activity.
5. Bring up the patron in the staff client.
6. Hover over the last activity date.
Dan Pearl [Tue, 10 Apr 2018 18:45:47 +0000 (14:45 -0400)]
LP1760893 Add Holdings Part dropdown should list items in order
Without a defined sort, the Part dropdown when editing a holding simply
displays in database order. Let's be more deterministic about it.
In this case, while slightly surprising, consensus opinion was that
reverse order on label_sortkey provides the best overall usability.
This is obviously true on records with many parts, but can help in all
cases.
Signed-off-by: Dan Pearl <dpearl@cwmars.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
- ensures that the Boolean values get saved as 't' or 'f', as
the reporter builder doesn't recognize JSON true or false in
this context.
- pretty-prints the current filter value in the dialog
- removes a logging line
To test
-------
[1] Apply the patch.
[2] Create or clone one or more report templates and add Boolean
column filters. Change the filter value and verify that
it displays the current value and lets you change it.
[3] Run reports from the template(s) created in step 2 and
verify that the reports produce the expected results.
Jason Boyer [Tue, 29 Jan 2019 17:15:25 +0000 (12:15 -0500)]
LP1642337: Reporter Boolean Filters
The dialog controller doesn't appreciate getting
a bare boolean as a message, so if the current item
is a boolean call toString() on it before calling
the egConfirmDialog.
An <Unset> string is also added to the reporter
strings for further use, but if there are no
strong feelings re: using it, it can be dumped and
a '' used in its place.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Dawn Dale <ddale@georgialibraries.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Kyle Huckins [Thu, 16 Nov 2017 20:56:51 +0000 (20:56 +0000)]
lp1642337 Boolean Filters in Reporter
- Add condition check to see if filter is boolean, and if so,
substitute a confirm dialog for the default prompt, repalcing
the text input with buttons for True/False values.
Signed-off-by: Kyle Huckins <khuckins@catalyte.io> Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Dawn Dale <ddale@georgialibraries.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
a. bellenir [Mon, 11 Mar 2019 17:39:00 +0000 (13:39 -0400)]
LP1775639: Refresh required to see Patron Credit
reload patron data when applying a payment
if the payment will change the patron's credit forward balance.
To test
-------
[1] Bill a patron, then make sure that the "Convert Change to Patron
Credit" checkbox is checked. Pay bill with more than the total
balance. Note that the Credit Available amount in the billing
summary does not change. Refresh the page.
[2] Bill a patron, then use the patron credit added in step 1 to
pay off the bill. Note that again, the Credit Available amount
does not change.
[3] Apply the patch and repeats steps 1 and 2. This time, the Credit
Available field should get updated.
Jane Sandberg [Wed, 17 Apr 2019 20:46:46 +0000 (16:46 -0400)]
LP1744386: Alphabetize stat cats in volcopy attr editor
To test:
1. Go to the volume copy editor. Confirm that the stat
cats do not display in order of owning library or stat cat
name.
2. Apply this commit.
3. Go to the volume copy editor. Confirm that the stat
cats now display in alphabetical order by owning library,
then stat cat name.
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
LP#1440890: add vandelay_queue to the types of containers retrieved by batch edit
To test
-------
[1] Perform a batch bibliographic record import, then add the import
queue to a new bucket.
[2] In the web staff client, go to Cataloging | Batch Edit.
[3] Note that the bucket created in step 1 does _not_ appear in the
bucket selector on the batch edit page.
[4] In the web staff client, go to the record bucket and hit the
Batch edit button.
[5] Note that the bucket created in step 1 does _not_ appear in the
bucket selector on the batch edit page.
[6] Apply the patch and repeat steps 2-3. This time, the bucket
should appear in the selector.
[7] Repeat steps 4-5. This time, the bucket should appear in the selector
(and be the active choice).
Jane Sandberg [Thu, 6 Dec 2018 23:49:40 +0000 (15:49 -0800)]
LP1760599: Only show merge records action when multiple bucket records selected
To test:
1) Create a bucket.
2) Select one record from your bucket. Right-click on your record or click on the Actions drop-down.
3) Note that "Merge Selected Records" is clickable.
4) Apply this commit.
5) Repeat steps 2-3. Note that "Merge Selected Records" is no longer
clickable, unless you select two or more records.
Jason Boyer [Thu, 7 Feb 2019 18:48:13 +0000 (13:48 -0500)]
LP1790896: Receipt Errors with invalid emails
The attempt at belt-and-suspenders checking for a valid
email for use in the has_email template field sadly
causes the JS to trip over said suspenders if there is
a value in the field but it doesn't contain a '@'.
The raw return from "".match() (either an array or null)
is enough to do the right thing when converted into a
Boolean and doesn't cause the same problems.
To test
-------
[1] Set up a patron record with an invalid email address,
e.g., one that lacks the '@' character.
[2] Check out an item the patron, then from the Items Out
tab, print an item receipt.
[3] Note that nothing happens and an error is logged in the
browser console.
[4] Apply the patch and repeat step 2. This time, a receipt
should be generated.
Lp 1768987: Use FindBin in 24-sql-gettext-unique.t.
Use FindBin in the 24-sql-gettext-unique.t test file so that it can be
run from directories other than Open-ILS/src/perlmods.
To test
-------
[1] Apply the patch.
[2] From the root of the Evergreen checkout, run
prove Open-ILS/src/perlmods/t/24-sql-gettext-unique.t
[3] Verify that the tests pass.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Daniel Pearl [Wed, 12 Dec 2018 17:51:07 +0000 (12:51 -0500)]
LP#1029601: Prevent duplicate holds from double clicks
Double clicking on hold submit buttons causes multiple holds to be
generated. This commits adds code to disable the Submit button(s)
after the first click, so subsequent clicks don't "work" in unintended
ways.
Signed-off-by: Dan Pearl <dpearl@cwmars.org> Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Jason Stephenson <jason@sigio.com>
Jeff Davis [Fri, 8 Jun 2018 19:09:54 +0000 (12:09 -0700)]
LP#1788680 prevent copy template apply failure on null stat cats
Under some circumstances, the current code can result in a JS failure:
Cannot read property 'filter' of undefined
When this happens, the copy template may apply partially or not at all.
This change simply makes sure cp.stat_cat_entries() exists before
attempting to filter it.
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Jason Boyer [Mon, 3 Dec 2018 13:11:29 +0000 (08:11 -0500)]
LP1806394: Placing Holds in Item Buckets
A missing return prevents a list of item ids from
being built so no holds can be placed from item
buckets. This branch returns the return to its
proper place.
To test
-------
[1] Add some items to an item bucket, ensuring that they are
all holdable.
[2] From the item bucket interface, select the items and choose
the Request Selected Items action.
[3] Confirm placing the requests.
[4] Note that the requests are not actually created.
[5] Apply the patch and repeat steps #1-#4. This time, the requests
should be placed.