Patch alters the markup within <eg-staff-banner> to include H1 headings
for page titles.
The patch also includes a new CSS file for the course page component,
which appears to be the only component taking advantage of the custom
classes and icons for page titles. I've made archived course titles gray
and italicized.
Signed-off-by: Stephanie Leary <stephanie.leary@equinoxoli.org> Signed-off-by: Jane Sandberg <js7389@princeton.edu>
Jeff Davis [Tue, 15 Nov 2022 23:11:49 +0000 (15:11 -0800)]
LP#1996651: treat empty string as null for preferred name/alias in wide_hold_data
This prevents the patron name from appearing blank in the hold shelf
"User Display Name" or "User Alias or Display Name" columns when the
alias or preferred name fields are empty strings.
Signed-off-by: Jeff Davis <jeff.davis@bc.libraries.coop> Signed-off-by: Susan Morrison <smorrison@georgialibraries.org> Signed-off-by: Jane Sandberg <sandbergja@gmail.com>
LP#1716479: (follow-up) fix handling of onSave callbacks for AngularJS MARC edit
This patch fixes an issue that has been present for a while but
clarified by Beth Wills in the course of testing the base patch
for this bug.
Specifically, the routine to process onSave callbacks was
not bound to the scope properly, meaning that the wrong onSave
callbacks could be run when dealing with mutiple active
egMarcEditRecords.
Jane Sandberg [Thu, 29 Aug 2019 01:09:35 +0000 (18:09 -0700)]
LP1716479: Make sure authority linker works in embedded MARC editors
1) Perform a z39.50 search
2) Select a record
3) Click Edit then Import
4) Click on the link next to any authorizable field.
5) You will see a mysteriously data-free heading: {{bibField.tag}} {{bibField.ind1}}{{bibField.ind2}}
6) Clicking on the "Immediately" and "Create and edit" buttons doesn't work.
7) Apply this patch and repeat steps 1-6.
8) Note that the heading is now correct, and the buttons work.
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Jennifer Weston <jennifer.weston@equinoxOLI.org> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Fix "Installing PostgreSQL server packages" heading. It was showing
up as a list entry.
Drop the text about installing additional packages for the database,
since there are none to install at this time. (We could replace that
with a subsection on the packages required for a standalong databse
server without all of Evergreen installed on it.)
Add a "Create the Evergreen PostgreSQL user" heading above the
instructions to creat the evergreen user in the database.
Co-authored-by: Ben Shum <ben@evergreener.net> Signed-off-by: Jason Stephenson <jason@sigio.com>
Terran McCanna [Wed, 19 Oct 2022 14:54:19 +0000 (10:54 -0400)]
LP1970476 Where filter in Bootstrap Catalog Produces Unwanted Results
Prior to this change, the Advanced Search page split the library selector
and the "Where" scope selector into two separate dropdown lists that
produced unexpected results when both were used.
This change uses the same approach as the combined dropdown on the Basic
search page instead.
Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: John Amundson <jamundson@cwmars.org> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Galen Charlton [Fri, 31 Mar 2023 13:43:53 +0000 (09:43 -0400)]
LP#1752334: (follow-up) adjust to allow "0" as a note
Also ignore the additional note parameter if all it has
are zero or more whitespace characters.
It's unlikely that a client would want to set the additional
note to "0", but it's nonetheless a good idea to distinguish
between difference versions of Perl's false value.
Josh Stompro [Thu, 28 Feb 2019 16:41:01 +0000 (10:41 -0600)]
LP#1752334 - BadContact, use additional note if provided.
If an additional note is provided when marking a contact invalid,
then that note should be appended to the penalty note field.
This change adds that functionality. This doesn't change the results
for staff that are using the invalidate buttons in the client, since
there isn't a chance to add an additional note from that interface.
But if someone is calling open-ils.actor.invalidate.email via some other
method, then you can specify the additional note.
I would like to be able to add extra notes when automatically processing
bounced emails, to give staff a clue as to why the email failed. Such as
"<email> Account over quota for past 3 weeks, ask patron to check their account."
Includes a new perl live test to check the new behavior, along with all
the open-ils.actor.invalidate.* call options.
Testing plan:
Before fix.
1. Choose a patron with an email address and note their patron id number.
2. Run an srfsh shell.
3. Login to get an auth token 'login username password'
4. Run the invalidate email command to mark the users email invalid, including
an addition note value.
srfsh# request open-ils.actor open-ils.actor.invalidate.email "<authtoken>" "<patronid>" "Testing Additional Note"
5. Take a look at the patron account and see that the penalty message only
includes a copy of the email address that was marked invalid.
After fix.
1. Restart the opensrf actor service if needed to re-read the changed perl module.
osrf_control -l --service open-ils.actor --restart
2. Remove the penalty and re-add email address to test patron's account.
3. Run an srfsh shell.
4. Login to get an auth token 'login username password'
5. Run the invalidate email command to mark the users email invalid,
including an addition note value.
srfsh# request open-ils.actor open-ils.actor.invalidate.email "<authtoken>" "<patronid>" "Testing Additional Note"
6. Take a look at the patron account and see that the penalty message note
now includes the additional note.
Run the live test at Evergreen/Open-ILS/src/perlmods/live_t
perl ./36-lp1752334-badcontact.t
Jane Sandberg [Thu, 21 Jul 2022 00:00:24 +0000 (20:00 -0400)]
LP1879517: Surveys shouldn't end before they begin
To test:
1. Go to Admin > Local > Surveys.
2. Create a new survey.
3. Attempt to create a survey where the end date
comes before the start date. Without this patch, you will get
no notice that this is invalid, and you can save the invalid
record.
4. Edit an existing survey.
5. Repeat step 3 while editing the existing survey.
6. Apply the patch.
7. Repeat steps 1-5. Note that you now get a notice and
cannot save if the end date is before the start date.
This commit generalizes a validator already present in the booking
module, and corrects several small bugs related to the datetime-select
component.
Signed-off-by: Jane Sandberg <sandbergja@gmail.com> Signed-off-by: Susan Morrison <smorrison@georgialibraries.org> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
Moved the 'Strict Barcode' checkbox next to the item barcode input box
for a more streamlined and workflow page layout. This affected three
Evergreen interfaces: Patron checkout, Item Renew, Item Checkin
Signed-off-by: Scott Angel <scottangel@mobiusconsortium.org> Signed-off-by: Jason Stephenson <jstephenson@cwmars.org> Signed-off-by: Elizabeth Thomsen <et@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
blake [Tue, 15 Mar 2022 16:48:12 +0000 (11:48 -0500)]
LP#1964986: encourage distinct results when querying the ahopl IDL source
This patch addresses a now-theoretical issue where a direct PCRUD
query of ahopl could return duplicate rows in cases where the patron
linked to the hold request has multiple penalties attached.
The significance of this change is likely minor nowadays, as ahopl
was directly used by Evergreen only by the Dojo and AngularJS hold
pull lists, and as of 3.8 the Evergreen Angular pull list uses a
different approach for querying the pull list. However, until such
time as ahopl is deprecated and removed, this change may help
local integrations.
Jason Etheridge [Thu, 10 Nov 2022 21:01:23 +0000 (16:01 -0500)]
lp1959010 toward Staff View tab
* link searches for listed genres
* s/Abstract:/Summary:/
* link to View all Formats and Editions
* remove border from staff view
* tweaking what goes where
* add metabib record count next to View all Formats and Editions link
* remove links for what boils down to marc 508 and 511
* made the count off-by-one trying to not make it off-by-one :)
* remove the creator field
* keep just Subject:
* remove the Record is or is not holdable information as it doesn't present the whole truth
* refresh interface on tab change
Signed-off-by: Jason Etheridge <jason@EquinoxOLI.org> Signed-off-by: Mary Llewellyn <mllewell@biblio.org> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Jason Etheridge [Mon, 3 Oct 2022 04:12:02 +0000 (00:12 -0400)]
lp1959010 toward Staff View tab
* make our Staff View tab with the new BibStaffView widget
* seed our BibStaffView with BibSummary
* first attempt at changing some identifiers with our seed code
* experimenting with layout and stripping courses functionality
* simplifying the layout for now and adding display fields
* moar data
* layout tweaks and propagate metabib attributes for Formats and Editions
* don't cross the streams with metabib related
* field names for the record and metabib variants of the catalog_summary call. This would otherwise break some links in search results involving bibs with metarecords.
* hyperlinks for the formats and editions in the catalog staff view
* fix catalog_summary vs catalog_summary.staff bug
* searchOrg depth was being passed where a boolean was expected
* This seems like a failure of TypeScript to detect.. type. What was going on here?
* layout and css tweaking
* fixing toc and relocating it and some other fields to column 1
* label fix
Signed-off-by: Jason Etheridge <jason@EquinoxOLI.org> Signed-off-by: Mary Llewellyn <mllewell@biblio.org> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
This commit adds two types of simple DoS protection:
* Limit concurrent search requests per client IP address, regardless of
the searches being performed. This helps address issues of accidental
spamming from a malfunctioning OPAC workstation, or crawlers of various
types. The limit is controlled by a global flag called
"opac.max_concurrent_search.ip".
* Limit the global concurrent search requests for the same query. This
helps address both simple and distributed DoS that send the same search
request over and over. The limit is controlled by a global flag called
"opac.max_concurrent_search.query", and defaults to 20.
When the limit is exceeded in either case the client receives an HTTP
429 "Too many requests" response from the web server, and the connection
is ended.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
With this commit we throw away searches with invalid qtype value based
on configured classes and aliases. Invalid qtype values have been seen
in the wild as part of attempted (but failed) SQL injection attacks, so
we will tighten up what we accept.
As an additional (unrelated) bonus, this commit also avoids prepending
the search class on basic search when the class (from qytpe) is not
exactly "keyword".
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Jane Sandberg [Wed, 11 Jan 2023 03:17:18 +0000 (19:17 -0800)]
LP2002435: Don't allow shelving location fm-editor to change delete flag
To test:
1. Go to the Local Admin > Shelving Locations Editor screen
2. Select a location and edit it.
3. Note that with this patch in place, the Delete checkbox
is no longer editable.
Signed-off-by: Jane Sandberg <sandbergja@gmail.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
spmorrison [Wed, 8 Mar 2023 19:59:21 +0000 (14:59 -0500)]
Docs: Update describing_your_organization.adoc
Updated the Create and edit Organization Unit Types section as well as the Organization Units sections to update text and add screenshots. Also added instructions for hours of operation notes (released in 3.10).
Signed-off-by: Jane Sandberg <js7389@princeton.edu>
Some older style ARRAY_TO_STRING(ARRAY_AGG()) should be replaced to
use the native STRING_AGG() that comes with PG 9+. This should improve
performance for these functions.
Signed-off-by: Ben Shum <ben@evergreener.net> Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
Galen Charlton [Thu, 17 Nov 2022 15:09:39 +0000 (10:09 -0500)]
LP#1996908: allow OpenILS::WWW::Proxy::Authen to check eg.auth.token
This patch allows the authentication handler to accept the
'eg.auth.token' cookie coming from the staff client if a 'ses' parameter
or 'ses' cookie has not been set. This allows resources gated by
this handler to be accessed by a staff member who has logged
into the staff client without requiring an additional login.
To test
-------
[1] Create a report and note the URL of one of its
outputs.
[2] In a completely fresh browser session, log into the
staff client, then directly load the reporter output.
You will be prompted to log in again because the 'ses'
cookie was not set.
[3] Apply the patch and repeat step 2. This time, the reporter
output should be directly retrieved.
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org> Signed-off-by: Jason Boyer <JBoyer@equinoxOLI.org>
This patch reduces the number of updates to search.sympell_dictionary
rows that would not change the contents of those rows, thereby
reducing the potential for certain record maintenance operations to
significantlly bloat that table.
In particular, it adjust the upsert to update the row for an existing
prefix only if there would be a net change in at least one of the *_count
columns or the list of suggestions. (Note that if a row is the target of
an UPDATE statement, PostgreSQL will _always_ create a row version, even
if there is no change to the contents of the row.)
It should be noted that while this patch is useful in and of itself, there
is a longer-term fix that would have additional benefits: adjust the
overall reingest logic so that it minimizes changes to all large tables
derived from the bib record when a bib gets reingested. A row that never
gets touched because it doesn't have to be can never become bloat.
To test
-------
[1] In a Concerto database, ensure that idempotent updates of the MARC
in biblio.record_entry will nonetheless force a reingest by running:
update config.internal_flag set enabled = true where name = 'ingest.reingest.force_on_same_marc';
[2] Note the size of search.symspell_dictionary by running:
Galen Charlton [Wed, 15 Feb 2023 17:01:47 +0000 (12:01 -0500)]
LP#2007351: fix the MARC editor heading linker for certain fields
The headings linker in the Angular bib record editor could fail
to retrieve the relevant authority control field metadata to determine
what subfields in the bib record are controlled by a top-level authority
record (as opposed to a subdivision record). This patch fixes this
by adjusting the query for bib-to-authority linking relationships.
This manifiested by the headings linker not consistently bringing
up the headings browse when attemping to link headings in the bib
600, 600, 651, and 655 field.A
To test:
[1] Open a bib record in the Angular MARC editor and create a 650
field.
[2] Click the button to open the headings linker. Note that no
browse is performed. (This is not 100%, as the bug is sensitive
to the exact order that the database happens to return rows
from the authority.control_set_bib_field table.)
[3] Apply the patch and repeat step 2.
[4] This time, the browse list in the headings linker should show
results.
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org> Signed-off-by: Carol Witt <wittc@cwmars.org>
Jane Sandberg [Wed, 22 Feb 2023 04:48:31 +0000 (20:48 -0800)]
LP1999401: Don't override magic statuses from holdings editor templates
1. Create a new template including a status
2. Check out an item
3. Apply your template to the item
4. Note that the item's status is no longer Checked Out
5. Apply this patch
6. Retry steps 1-3. Note that the item's status is still Checked Out
Signed-off-by: Jane Sandberg <sandbergja@gmail.com> Signed-off-by: Elizabeth Davis <elizabeth.davis@sparkpa.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Jane Sandberg [Wed, 11 Jan 2023 00:59:14 +0000 (16:59 -0800)]
LP1999401: Don't apply magic statuses from holdings editor templates
1. Create a new template in the holdings template editor with a few
different values in various fields.
2. Include a "magic" status in your template (like Lost or In
Transit). To select it, you can type the first few characters
then press <Tab>.
3. Save your template.
4. Apply your template to an item.
5. Note that the copy status has changed to a magic status.
6. Apply this patch.
7. Try applying your template to another item.
8. Note that the copy status field doesn't change this time,
but other fields from your template should still apply.
Signed-off-by: Jane Sandberg <sandbergja@gmail.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Tiffany Little [Mon, 30 Jan 2023 19:17:38 +0000 (14:17 -0500)]
LP2002977 Flip position of LI alert boxes
Signed-off-by: Tiffany Little <tlittle@georgialibraries.org> Signed-off-by: Christine Morgan <cmorgan@noblenet.org> Signed-off-by: Jane Sandberg <js7389@princeton.edu>
Galen Charlton [Wed, 16 Nov 2022 17:11:22 +0000 (12:11 -0500)]
LP#1980142: adjust styling of patron message body in Bootstrap OPAC
This patch resolves an issue where the text of the message body
could be rendered very small due to default styles applied to the <pre>
element. In particular, it converts the <pre> to a <p> and restores
a TPAC-era style that ensures that
* long lines in the message wrap
* but line breaks are also preserved (see LP#1927990)
This patch also ensures that the message body is not displayed with
label but no contents if the body is empty.
To test
-------
[1] Create a public patron note that contains line breaks and
long lines.
[2] Note that in the Bootstrap OPAC message view, the message
displays with fixed-width text (that may use a smaller font
than the rest of the page) and has a horizontal scrollbar
(due to the long line).
[3] Apply the patch and look at the message again in the OPAC.
This time, the long line should wrap, but line breaks are
also preserved.
This patch includes a portion of a patch by Garry Collum.
Lp 2008925: Patch Templates Adversely Affected by Lp 1992490
The patch for Lp 1992490 wrapped several text blocks in the l()
translation function. At least two of these introduced syntax error
in Template Toolkit. Some of the others could have been done
differntly to fit in better with the general idiom of how we use the
fuction in Evergreen.
This commit modifies those that stood out as the most egregious
examples.
An easy way to test this is to login to the OPAC on an unpatched
system and click to open "Messages." You will get an Internal Server
Error. After you apply this commit and install the affected
templates, you will not get an Internal Server Error.
The other modified templates do not seem to crash, but use the
translation funciton in idiosyncratic ways. This commit attempts to
smooth those out.
Signed-off-by: Jason Stephenson <jason@sigio.com> Signed-off-by: Jane Sandberg <sandbergja@gmail.com> Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Add a --pipe option to marc_export to force reading of record ids from
standard input when one or more of the --library, or --descendants
options are used. This permits more flexibility when exporting
records with holdings for given libraries or subsets of a collection.
It is an error to specify the --all or --since and --pipe options in
the same command line.
Stephanie Leary [Wed, 1 Mar 2023 15:52:19 +0000 (09:52 -0600)]
LP1814978 Keyboard support for bib record actions
Adds the ngbDropdownItem directive to dropdown menu items in the staff
catalog bib record actions: Serials, Mark For, and Other Actions. This
adds support for navigating the menus using the up/down arrows on the
keyboard.
Signed-off-by: Stephanie Leary <stephanie.leary@equinoxOLI.org> Signed-off-by: Susan Morrison <smorrison@georgialibraries.org> Signed-off-by: Jane Sandberg <sandbergja@gmail.com>
Bill Erickson [Thu, 16 Feb 2023 16:02:49 +0000 (11:02 -0500)]
LP2007591 Allow Last-Copy Delete to Create Hold Notices
Fixes an issue where attempting to create A/T events for recently
canceled holds fails becuase the cancel_time on the hold is the
pre-insert value of "now" instead of a valid date string.
Resolve the issue by fetching the post-insert copy of the hold, so it has
all of the correct in-database values, before passing the hold to A/T
for processing.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>