This commit borrows two screenshots from the Sitka Evergreen Training
Manual to replace one in the Alternate Serial Control View section.
Thanks Sitka!
Chris Sharp [Wed, 15 Apr 2015 18:05:23 +0000 (14:05 -0400)]
LP1444623: Remove "Safe" CPAN dependency from Debian/Ubuntu Makefile.install files
Following up on IRC discussion at http://irc.evergreen-ils.org/evergreen/2015-04-15#i_170386
it was agreed that it is no longer necessary to install Safe from CPAN
since it is included in the standard Perl package.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Conflicts:
Open-ILS/src/extras/install/Makefile.debian-jessie
Mike Rylander [Wed, 10 Jun 2015 18:17:37 +0000 (14:17 -0400)]
LP#1463973: Use dollar-quoting for report literals
When inserting string literal into SQL for Clark, we quote
apostrophes with a backslash. That worked fine until Postgres
changed its default for the standard_conforming_strings GUC to "on"
after which it no longer worked fine.
So, we will now use "dollar quoting" for string literals instead
in much the same way we do for our search queries.
Test plan
---------
Pre-patch: Try to run a report where a string value is required as
a filter parameter, and include an apostrophe in that string. The
report will fail with an SQL error.
Post-patch: Do the same, it will not fail.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Angela Kilsdonk <akilsdonk@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Chris Sharp [Wed, 22 Apr 2015 13:54:11 +0000 (09:54 -0400)]
LP#1446860 - Correct mistaken logic in previous fix.
See https://bugs.launchpad.net/evergreen/+bug/1446860/comments/2
for reference. The logic was not enforcing the "if the editing
staff member doesn't have permission to edit a user in this
permission group" check. This corrects that.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Chris Sharp [Tue, 21 Apr 2015 21:10:49 +0000 (17:10 -0400)]
LP#1446860 Staff were able to edit their own accounts.
This change reverses what appears to be a thinko in the
original programming. If the editing user is the same
as the user being edited, disable the Save button.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Jeff Davis [Thu, 16 Apr 2015 15:58:17 +0000 (08:58 -0700)]
LP#1074096: Remove Bib Call Number from query type selector
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Michael Peters <mpeters@emeralddata.net> Signed-off-by: Ben Shum <bshum@biblio.org>
Kathy Lussier [Thu, 28 May 2015 02:11:49 +0000 (22:11 -0400)]
LP#1403966: Remove publication-specific information from metarecord results page
The records that make up a matarecord search result typically contain different
publication information. Therefore, we should remove the master record's
specific publication information from that search results page.
Test plan
Prior to loading the patch, conduct a search on the Concerto dataset
for "brahms piano concerto no. 1" with "Group Formats and Editions" turned on.
In the brief view, you will see a call number and, in the more details view, you
will see publisher and physical description information. Run the same search
after loading the patch, and you will no longer see that information.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Andrea Neiman <aneiman@kent.lib.md.us> Signed-off-by: Ben Shum <bshum@biblio.org>
Blake Henderson [Mon, 8 Dec 2014 21:52:15 +0000 (15:52 -0600)]
LP#1194860: You have permission to override some of the failed holds. appearing when it should not for patrons in the OPAC Edit
A quick value check before assigning the override variable.
This should eliminate the OPAC showing the override option
for those who do not have the permission.
Josh Stompro [Sun, 31 May 2015 22:49:34 +0000 (17:49 -0500)]
LP#1456021 Enable apache modcgi during install for Debian Jessie
Apache mod cgi isn't enabled when installing apache2.4 on Debian Jessie,
this causes the /updates/manualupdate.html to not be processed and
to just return the raw code of that script since it uses mod cgi.
This adds 'cgi' to the list of apache modules to enable during the
dependency install.
Signed-off-by: Josh Stompro <stomproj@larl.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Josh Stompro [Sun, 31 May 2015 22:19:58 +0000 (17:19 -0500)]
LP#1457094 Switch to package libtemplate-plugin-posix-perl for Debian Jessie
Debian Jessie includes a package for Template::Plugin::Posix that was
being installed via CPAN. This patch removes the CPAN install and adds
the Debian package.
Signed-off-by: Josh Stompro <stomproj@larl.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Mike Rylander [Mon, 8 Jun 2015 21:30:52 +0000 (17:30 -0400)]
LP#1289486: Remove blocking constraint from audit table
The ACQ lineitem audit table was augmented with an fkey pointing
to the queued record that was related to the line item. That's
bad because there are also triggers which attempt to manage that
table. Hilarity ensues. We should not have an fkey on an audit
table, so, we now remove that.
In order to test this, first attempt to delete an ACQ queue and
have that fail. Apply the DB change, attempt again, and have it
succeed.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Mike Rylander [Mon, 8 Jun 2015 21:30:52 +0000 (17:30 -0400)]
LP#1289486: Remove blocking constraint from audit table
The ACQ lineitem audit table was augmented with an fkey pointing
to the queued record that was related to the line item. That's
bad because there are also triggers which attempt to manage that
table. Hilarity ensues. We should not have an fkey on an audit
table, so, we now remove that.
In order to test this, first attempt to delete an ACQ queue and
have that fail. Apply the DB change, attempt again, and have it
succeed.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Terran McCanna [Fri, 15 May 2015 17:02:17 +0000 (10:02 -0700)]
LP1406317: Stray Semicolons in OPAC Browse
Fixed display issue where semicolons were appearing at the end of
each result in browse title screen. Semicolon had been placed outside
of a bracket rather than inside a bracket. Moved semicolon to inside
bracket to correct.
URL of page showing error:
https://my-library/eg/opac/browse?blimit=10&qtype=title&bterm=m&locg=1
Galen Charlton [Tue, 12 May 2015 19:27:07 +0000 (15:27 -0400)]
LP#800706: add index to serial.record_entry.record
This patch adds index on the record column of serial.record_entry,
which can improve performance when displaying record details pages
in databases that have a large number MFHDs.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
- Adding in a few missed references to Debian Jessie
- Noted instances where Jessie uses the same instructions as Trusty
- Debian Jessie includes Apache2.4 so needs to use those steps.
- Added Jessie to postgres server install
Signed-off-by: Josh Stompro <stomproj@larl.org> Signed-off-by: Ben Shum <bshum@biblio.org>
LP#1449283: fix auth when running under Apache 2.4
When running under Apache 2.4 using the stock configuration
derived from apache_24/eg_vhost.conf.in, protected
URLs such as https://eghost/reporter/ that are meant to
require valid EG staff credentials were not in fact
requiring authentication.
This patch does the following to fix this:
[1] Removes several uses of "Require all granted" that
was causing authentication to be ignored.
[2] Changes OpenILS::WWW::Proxy::Authen so that it always
sets the username in the Apache request object if
authentication was successful; it appears that starting
with Apache 2.4, authentication handlers must ensure
that a user name is set for a "Require valid-user"
directive to work.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Jason Boyer [Mon, 2 Mar 2015 20:06:33 +0000 (15:06 -0500)]
LP#1427309 Fix Crash in Collections User Balance Summary
Previously a patron in collections that paid off all
transactions would cause a crash and stop processing
any balance summary file that they are supposed to
appear in. Now user balance summaries can be created
in full even if some users have a 0 balance.
Signed-off-by: Jason Boyer <jboyer@library.in.gov> Signed-off-by: Bill Erickson <berickxx@gmail.com>
LP#1442695: install purge_pending_users.srfsh to /openils/bin by default
Since purge_pending_users.srfsh is in the example crontab, it should
be installed to the Evergreen binaries directory (typically /openils/bin)
by default.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Refresh the PO summary amounts (spent, encumbered, estimated) each time
an amount-changing event occurs. These include changing the lineitem
price, adding/removing a direct charge, and adding/removing copies via
the copy grid.
Note that adding/removing copies via the batch-updater alread causes a
page refresh, which updates the summary amounts.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Bill Erickson [Mon, 6 Apr 2015 18:54:55 +0000 (14:54 -0400)]
LP#1380803 Include direct charges in PO esimated price
Move the estimated PO price calculation into the middle layer, along
with the total encumbered and spent calculation. Add a new
PO.amount_estimated field for carrying the data.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
LP#1435494: do not encourage <resultset_limit></resultset_limit>
An empty node in opensrf.xml gets parsed as an empty hashref,
not an empty scalar, so we'll use <resultset_limit>0</resultlet_limit>
in the suggested opensrf.xml config. This fixes an issue
noticed by Ben Shum during testing where reports could fail with
the following message:
DBD::Pg::st execute failed: ERROR: syntax error at or near "0"
LINE 43: ) limited_to_HASH(0x2a974f8)_hits LIMIT HASH(0x2a974f8)
^ at /openils/bin/clark-kent.pl line 243.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Galen Charlton [Fri, 20 Mar 2015 20:33:39 +0000 (20:33 +0000)]
LP#1435494: set limits on Clark Kent's resource usage
Clark Kent can sometimes consume more RAM, swap space, or CPU
than is reasonable or productive. For example:
- a badly constructed query with multiple Cartesian joins may
never terminate, potentially tying up a Clark child process,
pegging a CPU on the database server, and/or causing significant
scratch disk usage on the database server keeping a snapshot alive.
- a query that returns a very large number of rows can cause a Clark
child to bloat, and in extreme cases cause a OOM on the server
running Clark.
- a report that asks for a chart of an unreasonably large number of
rows can peg a CPU on the Clark server as GD::Graph attempts to
compute sub-pixel graph elements.
In each of these cases, a requested report may never finish.
This patch adds the ability set set some limits on Clark. These
limits can be set either in opensrf.xml for the settings service
to distribute or via command-line switches to clark-kent.pl:
Number of minutes to allow a report's underlying SQL query
to run before it gets cancelled. Default value is
60 minutes. If a report's query gets cancelled, the
error_text value will be set to a valid that indicates that
the allowed time was exceeded.
If set, truncates the report's output to the specified
number of hits. Note that it will not be apparent
to a staff user if the report's output has been
truncated. Default value is unlimited.
This patch also adds the ability for the concurrency
to be set via an opensrf.xml setting (//reporter/setup/parallel).
If both a command-line switch and an opensrf.xml setting
are supplied, the value set in the command line takes
precedence.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Bill Erickson [Mon, 6 Apr 2015 15:24:33 +0000 (11:24 -0400)]
LP#1436906 clean up PO direct charges on delete/cancel
1. Deleting a "direct charge" from a PO removes the linked fund_debit if
the fund_debit has not been paid (i.e. it's still encumbered).
If the debit has been paid, the charge cannot be removed, unless/until
the debit is re-encumbered by un-invoicing the charge.
2. When a PO is canceled, fund_debits linked to PO items are removed.
As above, if the debit has been paid (invoiced), the PO cannot be
canceled, unless/until direct charge debits are un-invoiced.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Jason Stephenson [Tue, 24 Mar 2015 16:49:39 +0000 (12:49 -0400)]
LP 1435966: Clark Kent should write lock file after it forks.
Rearrange the code in clark-kent.pl so that the lock/pid file is
opened and written to after the reporter daemonizes itself. This
way, the pid in the file can actually be used to stop the running
reporter daemon.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Bill Erickson [Fri, 6 Mar 2015 16:04:01 +0000 (11:04 -0500)]
LP#1234220 Improve hold/copy ratio renewal messages
Display friendlier messages in the TPAC and staff client client when a
hold/copy ratio rule prevents a renewal.
This creates top-level ILS events for total/avail hold copy ratios,
since that's what best works with the staff client. The TPAC displays a
simple "item is needed for a hold" message, whereas the staff client
displays the raw event description, which is slightly more descriptive.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Remington Steed [Fri, 5 Dec 2014 15:29:48 +0000 (10:29 -0500)]
Docs: Web Client preview intro
This commit adds an introduction for the Web Client preview. It explains
what to expect as development continues, and where to give feedback. It
also includes the rationale from the 2.7 release notes.
Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Robert Soulliere <robert.soulliere@mohawkcollege.ca>
Jason Stephenson [Wed, 18 Feb 2015 21:28:31 +0000 (16:28 -0500)]
LP#1424755: Org Unit Setting view permissions can be bypassed
Fix private org. unit setting leakage by forcing the $auth argument
to true if not passed in when open-ils.actor.ou_setting.ancestor_default
or open-ils.actor.ou_setting.ancestor_default.batch are called.
Other than a change to the desc of the public methods to reflect that
they now check permissions if permissions are required, there are no
required api changes to the back or the front ends.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Kathy Lussier [Mon, 2 Mar 2015 20:06:03 +0000 (15:06 -0500)]
lp1427331: Remove relator information from author links
Removes the display and linking of relator information from the author field
on the search results page. The display of subfield e was limiting the number
or results retrieved when clicking these links.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Dan Scott <dscott@laurentian.ca>
It was decided that these changes caused too much potential for
confusion, and would be better served by a simultaneous change to
making 'granularity' case insensitive. Pulling back for now.
Bill Erickson [Mon, 11 Aug 2014 20:45:21 +0000 (16:45 -0400)]
LP#1287370: allow AutoGrid to persist filter state and page offset
By turning on a new AutoGrid option called urlNavigation,
the current filter and offset is stored in a URL parameter
called djgridops. This permits using the back button
to return to an AutoGrid page at the place in the search
results where the user left it.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Erica Rohlfs <erohlfs@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Adam Bowling [Tue, 20 Jan 2015 21:54:11 +0000 (16:54 -0500)]
LP #1406350 Mobile Device Navigation Issue Fix for Shelf Browser
Currently, when a browser window is narrowed too much, whether
in a mobile browser, or on a desktop or laptop machine, the
"Previous Page" and "Next Page" navigation links disappear. The
only solution that seems to solve this is by removing the
"THEAD" element from the shelf browser table.
This patch removes that tag, adds a new row to imitate a new
border as existed before, and modifies the CSS in .../opac/
css/style.css.tt2 to address that difference.
Signed-off-by: Adam Bowling <abowling@emeralddata.net> Signed-off-by: Yamil Suarez <yamil@yamil.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Josh Stompro [Tue, 13 Jan 2015 19:36:40 +0000 (13:36 -0600)]
LP#1205072 - Assorted fixes for action trigger granularity settings
- Added "weekdays" option to match up with example crontab file
- Change granularity example back to lowercase
- Change granularity labels to lowercase in the docs
Bill Erickson [Wed, 26 Nov 2014 19:31:41 +0000 (14:31 -0500)]
LP#1205072 A/T granularity UI sane default, honors case
Present A/T granularity options as untranslated, lower-case strings to
match the crontab examples. Also, honor alternate case variations for
granularity values so that "Daily" and "daily" are both seprate, valid
options.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Mike Rylander [Tue, 4 Mar 2014 16:31:13 +0000 (11:31 -0500)]
LP#1287791: Restrict authority browse to controlled subfields
Back in bug 1175308 I added some logic that improves the behavior
of the MARC editor's right-click authority popup. Now we need to
go a little farther and adjust that logic to be more careful about
which subfields it uses to browse for authority records. Specifically,
it should only use controlled subfields.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Dan Pearl [Fri, 15 Mar 2013 19:04:37 +0000 (15:04 -0400)]
LP#1155313: Repair generation of label_sortkey for monograph_part entries
The evergreen.lpad_number_substrings function attempts to codify numeric
fields within labels. It does this by finding the strings, padding them
to a given size, and replacing them in the source string. For instance:
3 => 0000000003
15.4 => 00000000150000000004
Many database tables need to explicitly set the id sequence (often to
100) to provide room for stock data with static ids. This commit does so
for vandelay.merge_profile, and also updates the ids of any non-stock
profiles (both in the merge_profile table and in related settings).
Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Ben Shum <bshum@biblio.org>
In a previous commit, code was added for force summaries to be limited
to a certain type (to prevent cross type contamination of summaries).
This had the negative side-effect of preventing summaries on units, as
the units were not requesting a 'type' for their summary.
While we could force the unit code to send a type, it seemed generally
more flexible to restore the removed support for returning all summary
information in the absense of a requested type. This could lead to
cross-type summaries for units, but that is a larger issue altogether
(i.e. how we can properly support cross-type units at all).
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Kathy Lussier [Wed, 25 Feb 2015 20:20:51 +0000 (15:20 -0500)]
lp1373203: Allow users to escape metarecord holds (backport version)
Provides a means for users to escape a metarecord hold if they accidentally
clicked the Advanced Hold Options link. A "Go Back" link will be
provided to allow the user to return to a title hold. If the hold starts as a
metarecord hold, this link won't display since we don't know which bib the
patron wants.
Also fixes an issue where the hold cancel button always returned the user to
the previous screen.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Jason Stephenson [Fri, 13 Feb 2015 17:22:19 +0000 (12:22 -0500)]
LP#957466 Vandelay set the 905$u to current user if not defined
This version only adds a 905$u if none already exist in the document. It
does so by creating a new 905 tag with subfield u. It does not add on
to any possibly existing 905 tag that does not have a subfield u.
This will cause the code in the previous commit to trigger and update the
appropriate fields in biblio.record_entry.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Remington Steed [Mon, 13 Oct 2014 16:22:32 +0000 (12:22 -0400)]
LP#957466: Update editor/edit_date/source on overlay
This commit does three things.
1. It removes some declared variables that are never used in this
function.
2. It updates the bib record edit_date field (along with the editor) if
an editor is found in the MARC. If an editor is not found (or doesn't
match an Evergreen user), it seems best to leave the edit_date
unchanged so as not to imply that the previous editor is responsible for
the newest edit.
3. If a bib source is chosen in the vandelay importer UI, it updates the
bib record with the source. To access this field, the reference to table
"queued_record" is replaced by its child table "queued_bib_record".
Since the new table is a child of the other, all of the other needed
values are still available.
Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Martha Driscoll <driscoll@noblenet.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Galen Charlton [Mon, 23 Feb 2015 20:25:02 +0000 (20:25 +0000)]
LP#1154579: explicitly alert if copy location failed to be deleted
This patch adds an alert if the act of deleting a copy
location in the staff interface fails -- which would
most commonly happen if there are still active items
attached to the location to be deleted.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Galen Charlton [Thu, 5 Feb 2015 16:52:36 +0000 (16:52 +0000)]
LP#904581: when calculating hold status, be more careful about fetching transits
This patch fixes a problem where if a hold meets the following
criteria, an "Invalid date format: at /usr/share/perl5/Error.pm"
error can be thrown when fetching its details:
- the hold has a captured item
- the captured item has status 8 (on hold shelf)
- there is another item that is currently in transit to fill the hold
- the pickup library (or one of its ancestors) has the
circ.hold_shelf_status_delay library setting set.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Steven Chan [Mon, 22 Jul 2013 19:39:48 +0000 (12:39 -0700)]
LP#1418772: Avoid internal server error on viewing full record when copy create_date is null
In the TPAC client, when it tries to show record details containing a copy
record with no create date, it shows an Internal Server Error instead.
1. The error is caused by trying to execute the parse_datetime() method
in the parse_date() function in the WWW/EGCatLoader/util.pm module with
an empty date string. The function will normally translate a datetime
string from the database to a datetime string that is formatted for TPAC
templates. The fix is to not execute parse_datetime() and just return
an empty string.
2. In the record/copy_table.tt2 template, if an empty datetime string is
the value for copy_info.create_date, the format() method of the Date
plugin will show the current datetime by default. The fix is to show '-'
in its place, replicating the same template logic as for
copy_info.due_date.
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Chris Sharp [Mon, 9 Feb 2015 14:24:11 +0000 (09:24 -0500)]
LP#1419813 Fix default joins for config.rule_age_hold_protection.
config.rule_age_hold_protection had a "has_a" relationship
to several copy and copy-like sources when age protection
is optional. Changing those to "might_have" to allow left
joins by default.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
We can't alter a table, enabling triggers in this case, while a
table has trigger events pending. We move the trigger enabling
to outside the transaction to resolve this.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org>