phasefx [Wed, 11 Aug 2010 06:33:37 +0000 (06:33 +0000)]
change Check Barcodes? checkbox in Volume/Item creator to Use Checkdigit. In addition to checking the barcodes, it also dictates whether the Auto-Generate Barcodes function will use checkdigits or not
phasefx [Wed, 11 Aug 2010 06:33:34 +0000 (06:33 +0000)]
tweak auto-barcode method to support barcodes of arbitrary length. trims last digit from seed barcode if 9 or 14 digits. works with alphanumeric barcodes like b1, test1, demo1 with no checkdigits (so it'll generate demo2, demo3, etc.)
gmc [Tue, 10 Aug 2010 21:10:53 +0000 (21:10 +0000)]
bug 592777: allow authoritative version of open-ils.circ.retrieve
Part of a fix to avoid race condition that can occur
when patron renews an item in the OPAC in a database
that uses pgpool and replication, which sometimes
results in an erroneous 'action_circulation_not_found' error.
erickson [Tue, 10 Aug 2010 14:45:21 +0000 (14:45 +0000)]
similar to findbib, replace dojox.data.dom.textContent (which fails for unknown reasons) with node.textContent for bibtemplate rendering in related lineitems page
miker [Mon, 9 Aug 2010 20:54:35 +0000 (20:54 +0000)]
In order to speed up the API call where we ask for the number of visible (or total, in the staff client), available and "unshadow" (aka total) copies, as well as record transcendance visiblity, we create here 10 stored procedures. Eight of them implement the record/metarecord, staff/opac, OU/lasso varients, and two more are wrappers simplifying the calling API.
dbs [Mon, 9 Aug 2010 20:33:26 +0000 (20:33 +0000)]
Teach the staff client volume copy creator to respect OU call number preferences
To teach the "Add volumes" dialog in the staff client how to show the correct
set of call numbers based on the workstation OU's default classification
scheme, this commit:
* Adds a column "field" to the asset.call_number_class table that specifies
the list of tag/subfield combinations to search for a candidate call number
for a given classification scheme
* Adds a new OU setting, 'cat.default_classification_scheme', that points
to the asset.call_number_class ID
* Extends the open-ils.cat.biblio.record.marc_cn.retrieve method to support
a second argument, identifying the classification scheme for the call
number extraction
* Fixes the IDL for asset.call_number_class to include the ID as an explicit
field
* Makes the "Add volumes" dialog look up the 'cat.default_classification_scheme'
setting for the workstation OU and apply that to the call to the
open-ils.cat.biblio.record.marc_cn.retrieve method
TODO:
* Provide a means of switching the classification scheme for the current volume,
repopulating the call number selector widget
* Save the chosen scheme as part of the acn object
dbs [Mon, 9 Aug 2010 13:13:36 +0000 (13:13 +0000)]
Patch from Ben Ostrowsky <ben@esilibrary.com> to specify "staff account" in proxied pages
This change will make it a bit more clear that we're not looking for a
patron barcode/PIN in the Selfcheck Login screen (and make the wording
consistent across similar login pages).
dbs [Sat, 7 Aug 2010 03:53:01 +0000 (03:53 +0000)]
Basic call-number sorting by classification scheme
Until now, call numbers like 'K 22 .U748 v.18' and 'K 215 .E53 W37 1997' would
sort incorrectly in Evergreen, making call number browsing painful.
The following patch adds the following to Evergreen to support better call
number sorting:
* asset.call_number gains two new columns:
- label_class - identifies the classification scheme for the given callnumber
- label_sortkey - holds the normalized callnumber suitable for sorting
* a new table, asset.call_number_class, which holds the names of each
classification scheme and the name of the assorted normalization function
* implementations of three normalization functions:
* a generic normalizer
* a Dewey Decimal Classification normalizer (courtesy the Koha project)
* an LC classification normalizer (courtesy Bill Dueber's Library::CallNumber::LC)
* a routine in Makefile.install to checkout and install Library::CallNumber::LC
* call number sorting routines were modified to use label_sortkey instead of
label, where I could find them
* corresponding changes to fm_IDL.xml for the new columns + table
A suggested means for applying this to an existing library would be to issue
update statements against asset.call_number setting label_class to the value
in asset.call_number_class that corresponds to owning_lib's scheme, for example:
UPDATE asset.call_number SET label_class = 3 WHERE owning_lib IN (4,5);
We need to teach the staff client holdings maintenance interfaces how to set
the classification scheme for a given call number, and we should also create
an org_unit setting that can set the preferred default classification scheme
that the staff client should inherit. Or maybe we could just make that a
sticky value and have a BEFORE trigger check the incoming value of label_class
and only set it to the org_unit default value if it is NULL (to support bulk
loads).
dbs [Sat, 7 Aug 2010 03:26:11 +0000 (03:26 +0000)]
Build 210.serial before 200.acq, because 200.acq references serials
Confusing due to the order implied by the filename numbers, but priority
has to be on getting trunk to build cleanly again; we can sort out a
better way later.
gmc [Fri, 6 Aug 2010 20:39:35 +0000 (20:39 +0000)]
bug 532217: work around caching issue resulting doubled title display
Quick hack shamelessly borrowed from Dan Scott to fix problem
of title being displayed twice on bib details page when back
button is used in OPAC or staff client.
This is a temporary fix in lieu of rewriting the bib details
display to use BibTemplate exclusively.
phasefx [Fri, 6 Aug 2010 19:45:49 +0000 (19:45 +0000)]
menu.js and patron/display.js were passing xulG functions to browser.js differently. This makes browser.js a little smarter (so that it doesn't trampled xulG-destined members sent via passthru_content_params) and sidesteps some security blockers with inspecting xulG. xulG is a namespace/object for shoving foreign data and/or functions into a given window
scottmk [Fri, 6 Aug 2010 15:33:11 +0000 (15:33 +0000)]
Refine the way we detect loss of the database connection.
This is a terrible, horrible, no good, very bad kludge.
We do an innocuous SELECT 1. If this query succeeds, then we know that the
connection is still good. If it fails, well...
Sometimes the SELECT 1 query fails, not because the database connection is dead,
but because (due to a previous error) the database is ignoring all commands,
even innocuous SELECTs, until the current transaction is rolled back. The only
known way to detect this condition via the dbi library is by looking at the error
message returned by dbi_conn_error(). This approach will break if the language
or wording of the message ever changes.
Note: the dbi_conn_ping function purports to determine whether the database
connection is live. At this writing, it follows the same approach as described
above: try a SELECT 1 and see if it works. Consequently it presumably suffers
from the same shortcoming: it may erroneously report a dead connection when the
database is in fact just ignoring commands due to a previous error. In addition,
if it determines (rightly or wrongly) that the connection is dead, it silently
tries to reconnect; if the reconnect is succesful, the function reports that the
connection is still alive, as if nothing had happened. If you were in the middle
of a transaction at the time, you wouldn't know that it got rolled back.
gmc [Fri, 6 Aug 2010 01:21:31 +0000 (01:21 +0000)]
bug 614150: bail out on ACTOR_USER_NOT_FOUND
This fixes a bug where uploading an offline checkout
that refers to a missing patron returns an INTERNAL_SERVER_ERROR
instead of ACTOR_USER_NOT_FOUND. More generally, this avoids
an exception in case case where a circ operation is made
without checking the existence of the patron record beforehand.
phasefx [Thu, 5 Aug 2010 21:16:01 +0000 (21:16 +0000)]
Fixed form validation with surveys (the filteringSelect dijits were treating themselves as invalid if not set)
Some I18N for form validation
Removed some lingering (and annoying) scrollOnFocus behavior with the non-autoField widgets
erickson [Thu, 5 Aug 2010 20:19:46 +0000 (20:19 +0000)]
updated IDL parser to 1) load oils_object:required attr at field level
instead of class level and 2) added the oils_persist:i18n attr as
another field-level boolean
phasefx [Thu, 5 Aug 2010 19:08:08 +0000 (19:08 +0000)]
fix open-ils.circ.prev_renewal_chain.retrieve_by_circ.summary to return the correct user for the previous circ chain, and some debugging tweaks to Item Status Alternate View and avoid a widget collision with hold patrons
dbs [Thu, 5 Aug 2010 14:40:40 +0000 (14:40 +0000)]
The old default skin is the new default skin
We need people willing to maintain the craftsman skin, as it is falling
behind "default" in functionality and goes for long periods in a broken state.
This change gives Evergreen the most functional and most likely to work skin
by default, which is important for making positive first impressions on
possible adopters of the project.
phasefx [Wed, 4 Aug 2010 22:28:34 +0000 (22:28 +0000)]
add Required to copy stat cat editor, add User Summary to patron stat cat editor for initial stat cat creation, and fix a bug where editing an existing copy stat cat would attempt to set usr_summary. Modified behavior a bit so that an update is attempted whenever the user presses update, and not just if data is changed (this was me punting instead of trying to modify the test for both copy and patron stat cats)
erickson [Wed, 4 Aug 2010 20:19:14 +0000 (20:19 +0000)]
require latest last_xact_id for payments
To prevent accidental multiple payments on the transaction or payments
against stale information, require the latest user last_xact_id to be
passed into the payment API call. Update staff client (thanks jason)
and self-check payment interfaces to match.
scottmk [Tue, 3 Aug 2010 20:45:45 +0000 (20:45 +0000)]
New org unit setting type: serial.prev_issuance_copy_location
M Open-ILS/src/sql/Pg/002.schema.config.sql
A Open-ILS/src/sql/Pg/upgrade/0359.data.setting-prev-iss-copy-loc.sql
M Open-ILS/src/sql/Pg/950.data.seed-values.sql
erickson [Tue, 3 Aug 2010 20:11:22 +0000 (20:11 +0000)]
added open-ils.circ.copy.due_date.retrieve API call to return the due date for a given copy if it's circulating. method does not require auth, so only the due date is exposed, not the circ or user, etc.
dbs [Tue, 3 Aug 2010 03:14:49 +0000 (03:14 +0000)]
Slight overhaul of ISBN indexing focused on the translate_isbn1013 function
* Switch to a PLPERLU function built on Business::ISBN for more robust
indexing of records with problematic ISBNs; thanks to Jason Stephenson
<jstephenson@mvlc.org> for the initial implementation
* Remove the first_word, naco_normalize, and split_date_range normalizers
from the indexing chain for ISBNs, as these unnecessarily munge the
ISBNs. We can trust Business::ISBN to determine what is a real ISBN,
hyphens and all.
* Index all ISBNs in a given record and generate the corresponding
ISBN10/ISBN13 variations. Also, fix the checksum if given an ISBN with
a bad checksum, but be sure to index the original bad-checksum ISBN as
well.
* Add a set of 10 MARC records with bad ISBNs (thanks to Jason Stephenson
again for these) for testing purposes to Open-ILS/tests/datasets
* Add the Business::ISBN Perl module as a prerequisite to the installer
* Remove contrib/isn from the PostgreSQL install instructions
This patch replaces the result page sidebar new-search trees
(implemented before "faceting" became a thing, and designed for
new-search, not drill-down) with and implementation of what has become
the generally accepted "way to do faceting". This is implemented as a
Dojo Dijit, and the markup and code footprints within the OPAC proper
are small, just a couple <div>s and a little bit of glue code to help
the facet rendering engine find the data it needs. The set and order
of facet classes to display in a given facet bar (title, author,
subject, etc) is configurable in the markup, as are the number of
values displayed for each facet when collapsed (before the [More...]
button is pushed).
Also included is a Searcher Dijit which implements an embeddable
advanced search interface. This is mainly useful for constructing
boolean-chained searches (we support AND and OR now, though they're
spelled && and || in the query string), and has the beginnings of
support for filters and modifiers.
Build a threadsafe libjs so that JavaScript::SpiderMonkey can be threadsafe
Thomas Berezansky <tsbere@mvlc.org> reported problems building
JavaScript::SpiderMonkey on 64-bit Ubuntu and offered some
patches to build it without -JS_THREADSAFE. The real problem, however,
was that libjs was not itself being built with the JS_THREADSAFE
option.
Enabling the JS_THREADSAFE option pulls in the requirement of
the nspr4-dev package on Ubuntu and Debian.
Tested on 64-bit Ubuntu Lucid and 64-bit Debian Lenny. 64-bit Fedora 13
worked previously because it uses the packaged version of libjs - which
was already built with the JS_THREADSAFE option.
The patch adds (BinaryEncoding => 'UTF-8') wherever MARC::File::XML is used in the database
PgPerl functions where it is not already being done. This stops the functions like
maintain_control_number() from trying to convert records from MARC8 to UTF-8 and blowing up,
when the records are already UTF-8.
since we're re-circulating to previous patrons sometimes as a poor man's check-in undo, give us the power to turn off these fee-generating features. berick++