Dan Scott [Thu, 6 Sep 2012 16:25:01 +0000 (12:25 -0400)]
TPAC: Escape single quotes in MFHD record location
If an MFHD record contains an 852 field with a subfield containing a
single quote, the unescaped single quote is introduced directly into the
value of the JavaScript hash that uses single quotes as delimiters -
thereby generating a JS exception and preventing the staff client from
properly populating the MFHD Editor menu.
This commit escapes incoming single quotes from the MFHD location field
to prevent that from happening. The other fields in the JS hash are
numeric and therefore should not need escaping.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Dan Scott [Wed, 12 Sep 2012 16:59:53 +0000 (12:59 -0400)]
TPAC: Results - don't show the pubdate if we're showing full pubinfo
In the "show few details" mode, we show just the pubdate; in the "show
full details" mode, we're showing the full pubinfo and therefore do not
need to show the stubby pubdate.
Dan Scott [Wed, 12 Sep 2012 15:50:03 +0000 (11:50 -0400)]
TPAC: Display full publication info
In both the results table and record summary, we were failing to display
the place of publication - which is critical information for people
trying to track down the right edition or constructing a bibliography.
Grab the place of publication, and then reconstruct 260abc (avoiding
another XPath iteration and giving ourselves the ability to enhance the
schema.org microdata at the same time).
Dan Scott [Fri, 7 Sep 2012 03:37:32 +0000 (23:37 -0400)]
Journal title hackery - move to a more robust location
The fix for bug #1044721 broke the journal title hack, which probably
should have lived where this commit moves it - if, in the age of filter
groups, we decide whether it's worthwhile to keep it alive at all.
Dan Scott [Wed, 5 Sep 2012 15:46:28 +0000 (11:46 -0400)]
Flag the UTF8 encoding for MARC templates
The UTF8 encoding is flagged by LDR09 being 'a'. If this is not set, it
greatly confuses Evergreen, which tries to convert what it thinks are
MARC8 characters to UTF8 before saving the record.
Dan Scott [Wed, 5 Sep 2012 04:27:03 +0000 (00:27 -0400)]
TPAC: Fine-grained credits in record details
For 7xx fields with $4 subfields containing relator codes, generate a
relator code map from http://www.loc.gov/marc/relators/relacode.html
that we can use in the record details to provide specific credits,
rather than the generic (and often inappropriate) "Added author" label.
For example:
700 1. ‡aMaley, Desmond, ‡d1954- ‡4prf.
This now generates "Maley, Desmond, 1954- (Performer)" in the record
details credit section.
Although the following four queries should be equivalent:
george || fred
(george) || fred
george || (fred)
(george) || (fred)
The Pg QueryParser driver generates SQL queries that return different
numbers of results for each of those queries, with all desired results
appearing only with the first query. This seems to be because of the way
filters are added in the interface.
This patch adjusts the Search code in TPAC to add an explicit group
around the user-entered query, which enables the Pg QueryParser driver
to handle all four of the above queries properly.
This patch should also resolve the problems encountered with the patch
for bug #1040740, "Implicit ANDs should have higher precedence than
explicit ORs"
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
The template interface was failing while rendering the reporter sources
drop-down when a reporter source (IDL class) had no label. This adds a
sanity check around that.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Jason Stephenson [Fri, 27 Jul 2012 13:25:05 +0000 (09:25 -0400)]
Add pub date to CSV output.
Change the template for the ContainerCSV reactor to add the publication
date (MARC 260$c) in the csv output in the same position that the previous
commit adds it to the html output.
Add an upgrade script to update the existing template for the ContainerCSV
reactor in action_trigger.event_definition.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Dan Scott [Sat, 4 Aug 2012 14:10:48 +0000 (10:10 -0400)]
TPAC: Add the ability to set a different default locale
Installations with multiple sites might desire different default locales
for their skins. This adds the Apache config directive
"OILSWebDefaultLocale", which enables you to set the default locale on a
global and a per-skin basis.
Note that this prevents the browser Accept-language header from having
any effect; sadly that header is not often used in real life.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Art Rhyno <art632000@yahoo.ca>
Conflicts:
Open-ILS/examples/apache/eg_vhost.conf
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Dan Scott [Mon, 13 Aug 2012 20:50:33 +0000 (16:50 -0400)]
TPAC: Make call number browse record links retain search lib
In addition to maintaining scope for the call number browse search
results, we also need to maintain the scope for the links for the call
number records in the results themselves (for example, the "retrieve
this record" link, or the "search for this author" link).
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Scott [Thu, 30 Aug 2012 14:48:32 +0000 (10:48 -0400)]
Add an ou_host_name parameter for TPAC login forms
If set, and the incoming username does not already include an '@' symbol
(a very simple attempt to detect if we're already dealing with an email
address), then append '@' + the ou_host_name value to the username for
authentication purposes.
The rationale is that in a large consortium, you might want to enable
users to log in with short usernames (like 'fred'), but you also want to
avoid conflicts between short usernames at different organizational
units. Thus, create the users with the email equivalent of their
usernames, like 'fred@br1.example.com' and 'fred@br4.example.com', and
let the templates for the TPAC in br1 and br4 contain a hidden input
field to append the appropriate email hostname.
Truth be told, this is probably most appropriate for a large consortium
containing two or more academic institutions that hope to use LDAP
authentication rather than native authentication, and therefore have
LDAP CNs that map to email addresses of CN@hostname that can then be
mapped to actor.usr.usrname (and actor.usr.email, of course).
Steven Callender [Tue, 10 Jul 2012 19:43:59 +0000 (15:43 -0400)]
Changed the thawing of a hold to first update the hold record and then re-target.
When thawing a hold, originaly we were first re-targeting before actually saving the hold record. On items with large quantities, sometimes the hold would timeout on targetig before getting a chance to actually save. This patch moves things around to first save the hold record before attempting to retarget.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Acq: Fix General Search for Lineitem Attribute-based fields
Reported by Ben Shum and Kathy Lussier, the Acq General Search interface
was broken in that you couldn't use any of the search fields under
Lineitem Attribute. This error was indeed introduced by recent commit 55a82b5 as Ben determined, but simply reverting that commit left other
things broken.
This commit actually targets the problem and seems to fix it in my
testing.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Acq: New lineitems added to existing POs should inherit provider
Jeremy Miller of the Albany Public Library in Albany, OR, reports that
through the interface at
Actions For This Record -> View/Place Orders
in the staff client, when you add a lineitem to an existing PO, the new
lineitem has a null value in the "provider" field, instead of inheriting
the expected value from the PO.
This causes problems for some Acquisitions workflows.
The feature containing the bug appeared in 2.2, and this fix for it can be
backported that far.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Bill Erickson [Wed, 2 May 2012 13:55:06 +0000 (09:55 -0400)]
ACQ support for two-step vandelay imports
If a lineitm is loaded into a queue via ACQ+Vandelay and a later attempt
is made to load the record into the catalog via ACQ+Vandelay, the
attempt will fail, because ACQ+Vandelay treats all
not-yet-fully-imported lineitems as new to vandelay. This change
inspects lineitems at vandelay processing time to determine if they are
already linked to a VL record or if a new one is needed. It also
removes the requirement that a queue be provided when all records in
process are already linked to a VL record (which already lives in a
queue).
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Dan Scott [Mon, 27 Aug 2012 22:38:51 +0000 (18:38 -0400)]
Very rough LDAP authentication enablement for OSUL
Currently requires that the user enters their email address at the
username prompt; we then just use the local-part of the email address to
authenticate against the LDAP server.
In the VirtualHost sections of Apache, we can use SetEnv to force the
physical_loc to match the org unit ID(s) specified in opensrf.xml; for
example:
Fix sorting when printing from FlattenerGrid-based interfaces
This particularly affects the Simplified Hold Pull List. The printed
verison of your data is supposed to reflect the same sort order that has
been selected in the visual interface, and now it does.
Buggy handling of the different avenues of sorting the grid (clicking column
headers, using the column-picker/multicolumn-sort dialog, default sort order)
had broken the flow of the data needed to build the right sort clause for
some situations.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Dan Scott [Fri, 24 Aug 2012 03:02:42 +0000 (23:02 -0400)]
Fix epub complaint about image with extra colon
The "+" operators are typically only used to embed an image within an
ordered or unordered list to avoid breaking the indentation level or
numbering; here, we were using the "+" operators between regular
paragraphs, which doesn't make much sense. What made less sense was the
processing result, which bizarrely added an extra colon to the front of
the image path, leading to a (naturally) missing image and processing
error.
The fix is just to throw the image tag in between the paragraphs with no
special "+" operators; just blank lines.
Dan Scott [Fri, 24 Aug 2012 01:12:40 +0000 (21:12 -0400)]
Document how to create a TPAC/KPAC search box
Now that we're in the land of the TPAC, it's time to ensure that
everyone can update their simple search boxes so that they no longer
point at the JSPAC and point at the TPAC or Kid's OPAC instead.
Art Rhyno [Thu, 23 Aug 2012 01:37:36 +0000 (21:37 -0400)]
Make SHSys in Authority Fixed Fields available to edit and save
This field is missing from FixedFields.js and doesn't seem to be
active in the MARC editor. The position of it is identified as
"Subj". I moved "Subj" to replace "SubjUse" since "Subj" is
mapped in marcedit.xul. This seems to put the fields in sync.
Signed-off-by: Art Rhyno <art632000@yahoo.ca> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Jason Stephenson [Thu, 26 Jul 2012 17:45:06 +0000 (13:45 -0400)]
Make the ContainerCSV reactor output more than 10 records.
Call AppUtils->bib_container_items_via_search with an args hashref
that hard codes the search limit to 1,000 records instead of using
the biblio.multiclass search default of 10.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Steven Chan [Wed, 25 Jul 2012 23:12:19 +0000 (16:12 -0700)]
Fix LP949249, Edit, then Create button creates a new item in all cases
This fix also resolves the following:
* https://bugs.launchpad.net/evergreen/+bug/806585,
Item Attributes saved on Close
* https://bugs.launchpad.net/evergreen/+bug/644753,
check for duplicate barcode during a create session in copy/volume editor
1. The Copy Editor screen is launched from the Volume Copy Creator,
which is launched from the Holdings Maintenance screen. If the default
interface is set, CE is shown in a separate window; if the 'unified'
interface is set, CE is embedded in the same window as VCC. Upon the
user clicking Save or Close in the Copy Editor, the intent is to create
a new item record or not, respectively. However, it happens that a new
record is always created, because VCC instructs CE to let VCC update the
item, which will occur whether the user has clicked either button.
To fix 1, if the default interface is set, we reconfigure CE to update
the item or not, depending on the button clicked; otherwise, in the
unified interface, we allow VCC to update the item or not.
2. Upon updating the item, if the barcode is a duplicate, the ensuing
sequence of events is problematic: a database-level alert message is
shown, Copy Editor is closed, and Volume Copy Creator is closed, thus
forcing the user to re-formulate the request from Holdings Maintenance.
To fix 2, we show a higher-level alert message to the user. If the
default interface is set, we stay within CE, reconfigure the barcode to
be an input field, and focus the user on it; otherwise, in the unified
interface, we return the user to an area of the screen where the barcode
field is available. In either case, the user can re-enter a barcode
value and re-submit without losing any values previously entered into CE.
3. We also take the opportunity to enhance the coding performance of
Copy Editor, by delegating the handling of the button and key clicks to
the parent groupbox element. Previously, the event handler was attached
to several child elements, which is not performant.
And adjust the comment to make more sense. There is no higher level filter
that prevents copy holds on parted items, so there is no filter for them to
"slip through".
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Michael Peters [Thu, 15 Mar 2012 13:49:06 +0000 (09:49 -0400)]
TTPAC image directory cleanup
There are a significant number of images remaining in TTPAC
that are no longer used, leftover from KCLS, etc.
This branch does a little cleanup on the image directory
and nets us about a 200KB savings overall.
Signed-off-by: Michael Peters <mrpeters@library.in.gov> Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Also, we disable the checkbox if there is no email address on file.
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Conflicts:
Open-ILS/src/templates/opac/parts/place_hold.tt2
Dan Scott [Tue, 21 Aug 2012 21:23:26 +0000 (17:23 -0400)]
Protect against installs with no locales
Installs from source outside of tarballs may not have a built locale,
which would result in a make error and an aborted install. Protect
against that by checking for the existence of the locale install
directory before trying to copy the files into place.
In the weird case that Open-ILS/src/data/locale has been generated but
there are no files in it, protect against erroring out via the judicious
application of the - flag.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Conflicts:
Open-ILS/src/Makefile.am
Dan Scott [Mon, 20 Aug 2012 18:11:50 +0000 (14:11 -0400)]
TPAC: Standardize i18n file installation
Make TPAC i18n files act like any other i18n file. In short:
1. When in build/i18n, a 'make LOCALE=fr-CA install' will copy
the i18n file into the Open-ILS/src/data/locale directory.
2. In the build root, a 'make install' will copy all files from
Open-ILS/src/data/locale into (by default) the
/openils/var/data/locale directory.
This also means that when tarballs are created, all of the locales will
get packaged appropriately.
This commit also updates eg_vhost.conf to provide working out-of-the-box
examples for any installed locales, by using the names of the actual
PO files, and adds some contextual comments to explain how the
configuration directives work.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Conflicts:
Open-ILS/examples/apache/eg_vhost.conf
Open-ILS/src/Makefile.am
Bill Erickson [Fri, 17 Aug 2012 21:15:25 +0000 (17:15 -0400)]
ACQ return-to-[search/invoice] buttons repair
With changes in place to support newer version of xulrunner, several
buttons no longer work in the staff client. These include:
Return to Search in PO and Selection List pages
Return to Invoice in PO and Selection List pages
Return in lineitem worksheet page
This fix avoids using document.referrer (which is no longer available)
with an explicit 'source' CGI parameter, which contains the path and
params of the source page.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Jason Stephenson [Thu, 26 Jul 2012 17:45:06 +0000 (13:45 -0400)]
Make the ContainerCSV reactor output more than 10 records.
Call AppUtils->bib_container_items_via_search with an args hashref
that hard codes the search limit to 1,000 records instead of using
the biblio.multiclass search default of 10.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Dan Scott [Tue, 7 Aug 2012 20:39:37 +0000 (16:39 -0400)]
Allow some buttons in Import via Z39.50 to wrap lines
Some of our technicians with 4:3 ratio monitors and a reasonable
font-size are unable to see the "Import Record" button on the Import via
Z39.50 screen, because the buttons in that row are laid out in a single,
non-wrapping row, and there is no affordance for scrolling over to the
side.
Simply changing the containing "hbox" element to a "description" element
allows enough of the buttons to overflow to resolve the problem in our
experience.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Steven Chan [Wed, 25 Jul 2012 23:12:19 +0000 (16:12 -0700)]
Fix LP949249, Edit, then Create button creates a new item in all cases
This fix also resolves the following:
* https://bugs.launchpad.net/evergreen/+bug/806585,
Item Attributes saved on Close
* https://bugs.launchpad.net/evergreen/+bug/644753,
check for duplicate barcode during a create session in copy/volume editor
1. The Copy Editor screen is launched from the Volume Copy Creator,
which is launched from the Holdings Maintenance screen. If the default
interface is set, CE is shown in a separate window; if the 'unified'
interface is set, CE is embedded in the same window as VCC. Upon the
user clicking Save or Close in the Copy Editor, the intent is to create
a new item record or not, respectively. However, it happens that a new
record is always created, because VCC instructs CE to let VCC update the
item, which will occur whether the user has clicked either button.
To fix 1, if the default interface is set, we reconfigure CE to update
the item or not, depending on the button clicked; otherwise, in the
unified interface, we allow VCC to update the item or not.
2. Upon updating the item, if the barcode is a duplicate, the ensuing
sequence of events is problematic: a database-level alert message is
shown, Copy Editor is closed, and Volume Copy Creator is closed, thus
forcing the user to re-formulate the request from Holdings Maintenance.
To fix 2, we show a higher-level alert message to the user. If the
default interface is set, we stay within CE, reconfigure the barcode to
be an input field, and focus the user on it; otherwise, in the unified
interface, we return the user to an area of the screen where the barcode
field is available. In either case, the user can re-enter a barcode
value and re-submit without losing any values previously entered into CE.
3. We also take the opportunity to enhance the coding performance of
Copy Editor, by delegating the handling of the button and key clicks to
the parent groupbox element. Previously, the event handler was attached
to several child elements, which is not performant.
And adjust the comment to make more sense. There is no higher level filter
that prevents copy holds on parted items, so there is no filter for them to
"slip through".
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Michael Peters [Thu, 15 Mar 2012 13:49:06 +0000 (09:49 -0400)]
TTPAC image directory cleanup
There are a significant number of images remaining in TTPAC
that are no longer used, leftover from KCLS, etc.
This branch does a little cleanup on the image directory
and nets us about a 200KB savings overall.
Signed-off-by: Michael Peters <mrpeters@library.in.gov> Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Scott [Wed, 15 Aug 2012 11:18:53 +0000 (07:18 -0400)]
TPAC: Move "Export to RefWorks" into utility area
When the RefWorks functionality was being added to TPAC, the design and
layout were very much in flux. Now that the layout has been established
with utilities like "Place Hold" on the right hand side, move the
"Export to RefWorks" button into the same location.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Art Rhyno <art632000@yahoo.ca>
Dan Scott [Tue, 21 Aug 2012 21:23:26 +0000 (17:23 -0400)]
Protect against installs with no locales
Installs from source outside of tarballs may not have a built locale,
which would result in a make error and an aborted install. Protect
against that by checking for the existence of the locale install
directory before trying to copy the files into place.
In the weird case that Open-ILS/src/data/locale has been generated but
there are no files in it, protect against erroring out via the judicious
application of the - flag.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Dan Scott [Mon, 20 Aug 2012 18:11:50 +0000 (14:11 -0400)]
TPAC: Standardize i18n file installation
Make TPAC i18n files act like any other i18n file. In short:
1. When in build/i18n, a 'make LOCALE=fr-CA install' will copy
the i18n file into the Open-ILS/src/data/locale directory.
2. In the build root, a 'make install' will copy all files from
Open-ILS/src/data/locale into (by default) the
/openils/var/data/locale directory.
This also means that when tarballs are created, all of the locales will
get packaged appropriately.
This commit also updates eg_vhost.conf to provide working out-of-the-box
examples for any installed locales, by using the names of the actual
PO files, and adds some contextual comments to explain how the
configuration directives work.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Bill Erickson <berick@esilibrary.com>
Bill Erickson [Fri, 17 Aug 2012 21:15:25 +0000 (17:15 -0400)]
ACQ return-to-[search/invoice] buttons repair
With changes in place to support newer version of xulrunner, several
buttons no longer work in the staff client. These include:
Return to Search in PO and Selection List pages
Return to Invoice in PO and Selection List pages
Return in lineitem worksheet page
This fix avoids using document.referrer (which is no longer available)
with an explicit 'source' CGI parameter, which contains the path and
params of the source page.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Bill Erickson [Thu, 16 Aug 2012 19:40:58 +0000 (15:40 -0400)]
Sanity check cstore limit/offset param values
Certain cstore calls (direct / json_query) that support limit/offset
params called with a non-string / non-numeric value
e.g. { "limit": null }
result in a cstore segfault as it tries to call atoi(NULL) under the
covers. This patch prevents this by verifying that the limit/offset
values are actual strings or numbers (i.e. return a value from
jsonObjectGetString) and not JSON_NULL, etc.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Dan Scott [Mon, 30 Jul 2012 15:30:50 +0000 (11:30 -0400)]
TPAC: Autosuggest focus() throws a JS error
On page load, the Dojo autosuggest code tries to set focus to the
element with the ID "search_box" - which is fine, except when the page
does not have said ID. Therefore, test for the existence of the ID
before setting focus to it.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Art Rhyno <art632000@yahoo.ca>
Dan Scott [Sat, 4 Aug 2012 14:26:25 +0000 (10:26 -0400)]
TPAC locale picker: use POST instead of GET
Users could (deliberately or not) change another's language
preferences by sharing links with the "set_eg_locale" GET param given
the locale picker's current behaviour. By switching to a POST param, we
prevent this result from accidentally occurring.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Art Rhyno <art632000@yahoo.ca>
Mike Rylander [Thu, 16 Aug 2012 17:45:23 +0000 (13:45 -0400)]
Provide permission for copy editor field hiding
We can adjust what fields are available in the copy editor in 2.2+, but that
requires the general UPDATE_ORG_SETTING permission. The YAOUS-specific
permission here allows more granular control, so that staff can be given the
ability to adjust only that one OU setting.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>