New feature: maintain control numbers (001, 003, 035) for MARC records
If a site wishes to maintain their control numbers and control number
identifiers in authority, bibliographic, and MFHD MARC records according
to the MARC21 specification, they will now be able to:
1. Enable the global flag 'cat.maintain_control_numbers' to turn on
control number maintenance. This is disabled by default, so no changes
will be made by the system until the flag is enabled.
2. (Optionally) Set the cat.marc_control_number_identifier OU setting
to override the control number identifier for records owned by that OU;
if this is not set, then the control number identifier defaults to the
OU shortname.
3. Set the owner field for the records that are to be controlled; otherwise
they will fall back to the global default which is currently hardcoded as
'EVRGRN'.
Initial support for wrapping long subfields in the MARC editor
Limitations of the current approach are that the line width is arbitrarily set
to break at 100 characters, and is only calculated on a per-subfield basis. So
if a given field contains 50 subfields, each with 90 characters, this commit
isn't going to help you. (But really... in that scenario, you're beyond help
anyway!)
Also, the double-dagger aligns itself at the top of the box rather than the
middle once the box goes into multiline mode, which is annoying; but long 505
fields that scroll ten screens to the right are more annoying, so I'll commit
this for now rather than waste more time trying to CSS it into shape.
SuperCat requests for plain marcxml were returning holdings / links
This could cause "great fun" in the MARC editor as a bib record suddenly
grew volume and xhtml:link elements; everything would spiral downward
from there.
r15562 contained a fix for this to rel_1_6_0, but apparently I never
forward-ported that "fix". Unfortunately, this leads to broken interfaces in
the i18n build (bug re-found by Robert Souilliere in the 1.6.1.1 release).
Fixes Mark Claimed Returned. It seems that dojo isn't the only library picky about ISO8601; DateTime::Format::ISO8601->parse_datetime was choking in this case
Reclaim cataloguing real estate by hiding unnecessary rows in fixed field grid editor
The fixed field grid editor currently shows blank rows for fixed field
attributes that don't apply to the currently displayed MARC record type. We
can hide these rows and offer more screen real estate for the MARC record
proper.
record the billing_last and billing_first fields from bill_cc_info.xul into cc_first_name and cc_last_name on money.credit_card_payment, even for out-of-band (externally processed) payments. Also protect the bill_cc_info dialog from patrons with no billing address (such as admin)
senator [Thu, 8 Jul 2010 15:11:24 +0000 (15:11 +0000)]
Acq: If you go from a catalog record to "View/Place orders", there are now
easy shortcuts for adding a new lineitem to a selection list or a PO if there
aren't already any existing lineitems to work with.
If there is a permacrud entry for the relevant action, but the list of
permissions is empty, we grant access.
The change: grant access as soon as the permission list can be known
to be empty, instead of doing a lot of irrelevant stuff first
(including extra database fetches in some cases).
instead of reading the MARC data directly from the socket, set the end-of-line character appropriately and read the data directly from STDIN. The 'wait' time is now only used as a security measure to prevent accidental hogging of worker processes
Enable plain up-arrow and down-arrow to jump to next row in MARC editor
As TAB/shift-TAB move between each editable element of the MARC record,
we already have fine-grained keyboard navigation. However, moving down
10 data fields requires around 50 TAB presses or more, depending on how
many subfields are in the intervening data fields, or a looonng hold of
the tab key; not good for RSI.
The up-arrow and down-arrow keys, then, move directly to the next or
previous row, placing the focus in the first editable subfield element
rather than in the tag name (under the assumption that cataloguers are
most likely to want to edit the contents of a given subfield, and not
the tag name or indicators).
Now, in the worst-case scenario, a cataloguer who wants to edit the tag
name of a field 10 rows below their current position will have to
make 14 key presses (10 down arrows, 4 shift-TABs). Not too shabby.
When checking a row for permissions, we often read a fresh copy of the
row in order to ensure that we have all the foreign keys that we need.
However in some cases (mainly when the class is a view), there is no
primary key, so we can't re-read the row.
Solution: if there is no primary key, don't try to do a fresh read.
Use the row image that we already have.
For these cases, this solution re-creates the possibility that we may
not have all the necessary columns. There's no good way around that
problem.
This CGI script might be useful for providing an easy way for EZproxy to authenticate users against an Evergreen instance.
For example, if you modify your eg_vhost.conf by adding this:
<Directory "/openils/var/cgi-bin/ezproxy">
AddHandler cgi-script .pl
AllowOverride None
Options +ExecCGI
allow from all
</Directory>
and make that directory and copy remoteauth.cgi to it:
mkdir /openils/var/cgi-bin/ezproxy/
cp remoteauth.cgi /openils/var/cgi-bin/ezproxy/
Then you could add a line like this to the users.txt of your EZproxy instance:
added OPAC support for 1) selecting SSL manually and having it stick and 2) forcing SSL when the user is logged in to protect auth tokens and other private data. The latter option is enabled via new apache env variable
showing the more descriptive cc payment errors in self-check. printing CC payment receipts from self-check. added a commented-out cc type picker for possible future use
added ability to tag bib record results from staged multiclass search as previously checked out by the user. the code compares search results to the set of circs in the user's visible circulations history. the ultimate goal is to provide the ability to style rows in search results so the patron can see if he/she already circulated the item (assuming some widget to turn this feature on/off for a search)
senator [Tue, 6 Jul 2010 13:44:59 +0000 (13:44 +0000)]
Booking: fixed the last db upgrade script. It was trying to insert a row
in config.org_unit_setting_type that had already been covered by 0109, but
which had not been in the seed data until recently, so I think one would have
only noticed this if hadn't installed a new schema from scratch in some time.
If you already ran 0323 and it worked for you, you don't have to do anything.
Also, this now avoids clobbering already-set default_elbow_room values.
repaired bug where parsing intervals with months failed becuase dojo.date.add() wants the full word 'months' whereas postgres stores them abbreviated as 'mons'
gmc [Wed, 30 Jun 2010 23:06:15 +0000 (23:06 +0000)]
bug #600432: fix MARC expert search
Fix gitch introduced via overzealous tidying that broke MARC
expert search; in the expression @array || $scalar, @array
is evaluated in scalar context and thus returns the number
of elements in it.
scottmk [Wed, 30 Jun 2010 13:32:28 +0000 (13:32 +0000)]
1. Degrade gracefully when the database connection dies.
2. Validate the user-specified operator in a series expression.
M Open-ILS/include/openils/oils_buildq.h
M Open-ILS/src/c-apps/oils_qstore.c
M Open-ILS/src/c-apps/oils_buildq.c
M Open-ILS/src/c-apps/oils_storedq.c
M Open-ILS/src/c-apps/oils_execsql.c
phasefx [Tue, 29 Jun 2010 18:20:02 +0000 (18:20 +0000)]
File->Join Tabs experiment. Can disable through prefs.js, and I may make disabled the default before we branch trunk depending how things play out. One current limitation is that the interfaces thus joined get reloaded as a consequence of their respective DOM nodes being relocated, so tab joining is most useful to setup prior to retrieving information you'd like to view side by side. I haven't found an easy way around this, though we could roll our own tab browser (bleh) or come up with a generic way for interfaces to save their state. Tab labels are also imperfect, given that interfaces are able to dynamically modify the tab label and can clobber each other if sharing a tab
senator [Tue, 29 Jun 2010 17:53:39 +0000 (17:53 +0000)]
Booking: begin forward-porting code from rel_1_6.
Booking (regrettably) was largely written directly against a 1.6 environment
instead of written for trunk and backported. So now we have booking code in
rel_1_6 and rel_1_6_1 that works, but that needs to be cleanly merged with
trunk. There has been a lot of drift, and this won't be easy.
Here is the first step (some of the easy stuff). These files have been updated
wholesale with their contents from rel_1_6, since they don't affect anything
other than booking itself.
Just to be clear: this commit does not complete the booking foward-port. The
booking module did not work in trunk before this commit, and it does not work
after this commit. For the moment, booking only works in the rel_1_6 branch,
in the rel_1_6_1 branch, and in 1.6.1.* releases. It still does not work in
trunk, and it will take a few more hairy commits to get things in sync.
Once that's finally done, any future Booking code can be written the Right Way
(in trunk) and *back*ported thence to whatever other branches as needed.
scottmk [Mon, 28 Jun 2010 19:45:43 +0000 (19:45 +0000)]
Represent a subfield expression as a variant of a function call
expression, rather than a function call in its own right.
1. Eliminate 'xfld' as a valid value for query.expression.type.
2. Eliminate the query.expr_xfld view.
3. Expand the query.expr_xfunc view to include the column_name column.
M Open-ILS/src/sql/Pg/002.schema.config.sql
M Open-ILS/src/sql/Pg/008.schema.query.sql
A Open-ILS/src/sql/Pg/upgrade/0322.schema.query.no-xfld-expr.sql
M Open-ILS/examples/fm_IDL.xml
scottmk [Mon, 28 Jun 2010 15:43:28 +0000 (15:43 +0000)]
Support function calls with subfields, e.g. (func(args))."id".
Note that this support treats the subfield as an optional
component of the functional call, not as a type of expression
in its own right. A subsequent commit will eliminate the "xfld"
expression type.
M Open-ILS/include/openils/oils_buildq.h
M Open-ILS/src/c-apps/oils_storedq.c
M Open-ILS/src/c-apps/buildSQL.c
miker [Fri, 25 Jun 2010 17:31:21 +0000 (17:31 +0000)]
add bib-authority linking table; add stored proc to extract linking; add hook to ingest (controlled by internal_flag) to implement authority link extraction
miker [Fri, 25 Jun 2010 14:47:56 +0000 (14:47 +0000)]
vandelay.add_field bug fix; add stored procs to 1) create an authority-based overlay template and 2) allow simple application of said template directly with marcxml
dbs [Fri, 25 Jun 2010 03:54:46 +0000 (03:54 +0000)]
Provide support for Class::DBI::Frozen::301 via UNIVERSAL::require
Class::DBI changed its API interfaces after the 3.0.1 release, causing much
pain (and incompatibility for existing applications like Evergreen). Some
distributions package Class::DBI 0.96 or 3.0.1, but newer distributions
package an incompatible 3.0.17. An alternative is to install the
Class::DBI::Frozen::301 module from source; UNIVERSAL::require enables us
to try loading both and use whichever one we find.
scottmk [Thu, 24 Jun 2010 17:15:16 +0000 (17:15 +0000)]
1. Degrade (relatively) gracefully when the database connection dies.
Problem to be solved: a server drone that loses its database connection
immediately becomes unusable. It might manage to reconnect, but that
wouldn't help if a transaction was in progress at the time of the failure.
If the drone merely reports an error and then makes itself available
for more requests, every request that it services thereafter will fail.
It will continue to fail repeatedly until it reaches the max_requests
limit, or until someone kills it manually.
Solution: terminate immediately, without waiting for max_requests or a
DISCONNECT request. The listener can replace it with a new drone,
which will try to establish its own database connection.
2. Correct an oversigt in doUpdate() and doDelete().
If the database operation fails, report an error to the client.
The old code would log an error message but otherwise behave as if
the operation had succeeded.
It is conceivable that this change will appear to break something,
because an operation will fail that would otherwise have appeared
to succeed. However if that happens, whatever breaks was already
broken; the appearance of success was a snare and a delusion.
M Open-ILS/include/openils/oils_sql.h
M Open-ILS/src/c-apps/oils_sql.c
dbs [Thu, 24 Jun 2010 03:29:02 +0000 (03:29 +0000)]
First stab at Fedora 13 support in prerequisite installer
Of possible concern: the use of -JS_THREADSAFE in JavaScript::SpiderMonkey.
Need to test this change on other distros - but it enabled me to avoid
the libperl.so linking hacks used on RHEL and CentOS.
scottmk [Thu, 24 Jun 2010 02:57:58 +0000 (02:57 +0000)]
Whenever a database call fails -- i.e. whenever dbi_conn_query() or
dbi_conn_queryf() returns NULL -- call dbi_conn_error() to get a
description of the error, and include that description in the log
message.
atz [Wed, 23 Jun 2010 21:27:32 +0000 (21:27 +0000)]
Cancel reasons from EDI spec
Technically, these aren't all cancellation reasons, they are just
"Action request/notification description codes". A "5" (or 1005, here)
actually means success, for example.
Examine the EDI list here: http://www.stylusstudio.com/edifact/D04B/1229.htm
Include keep_debits field although it does not necessarily apply to each row.
Signed-off-by: Joe Atzberger <atz@esilibrary.com>
git-svn-id: svn://svn.open-ils.org/ILS/trunk@16795 dcc99617-32d9-48b4-a31d-7c20da2025e4