Changes between version 1.6.1.0 and 2.0.0 (approximately) ========================================================= 2010-06-14 senator * Tiny bug in 16714; fixing it prevents a useless logline in some cases 2010-06-14 phasefx * the dojo code now behind the util.date iso8601 formatter neither needs nor likes us appending timestamps to dates like that 2010-06-15 phasefx * in patron editor, prevent Save and Save & Clone from working with an invalid form, or duplicate barcode or usrname 2010-06-15 dbs * Avoid spurious errors when searching more granular indexes The storage service automatically generates methods for each top-level search class, like open-ils.storage.authority.keyword.see_from.controlled.atomic, but here we were trying to access more granular methods (which storage does not know about) when a granular index was used. This generated an ugly error in the logs. To avoid these errors, we'll only look for cross references from the broad index class to which the granular index belonds. 2010-06-15 miker * support pre-indexing normalizers for facet value normalization (negative pos value in the field-norm map) 2010-06-15 senator * Acq: minor menu reorganization. Move admin-oriented interfaces to admin menu. Also remove "Purchase Order Events" from the acq menu: it's outmoded. 2010-06-15 phasefx * specify @autoscroll=false for xul browser elements 2010-06-15 erickson * no need to start a xact in lineitem search api call, especially if it's not closed out when done 2010-06-15 senator * Acq: misc minor bugfixes to various admin interfaces that didn't load consistently. Also a little more menu re-org. 2010-06-16 phasefx * the layer/bundle version of dojo I was using hid the need for this dojo.require line 2010-06-16 miker * add support for status and copy location filters to supercat browse apis for call number, title/author/etc, item age and general tag browsing 2010-06-16 erickson * make logout with receipt the default for self-check 2010-06-16 senator * Acq: bugfixes for "Import Catalog Records by ID" Previously, this interface did not correctly interpret realistic CSV data as produced by the Reporter module, as it was intended to do. 2010-06-16 miker * update the documentation for browse methods re status/location filters * steps toward wiring up authority browse via supercat * use the authority, instead of bib, general tag browse method * add authority marcxml retrieve method, switch on record type * typo in json_query for authority browse * split registration of authority browse urls out from record; add authority formats ML method 2010-06-16 senator * Acq: Fix display failure in fund tag interface. Add admin interfaces for invoice_payment_method and invoice_item_type. * Acq: remove PO search interface from staff client's acquisitions menu The PO search interface is redundant with the generalized Acquisitions Search interface 2010-06-17 scottmk * Support CAST expressions, taking care to avoid SQL injection. 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 2010-06-17 phasefx * id collision preventing proper use of these columns * correctly sort date/timestamp columns in xul lists now that they're localized * more column id collisions and code to rename such id's if they slip through in the future * Kludge to fix ISO timestamp parsing in AutoFieldWidget 2010-06-17 miker * protecting facet_xpath from returning empty nodesets 2010-06-17 phasefx * typo 2010-06-17 miker * record evidence of the perl-xpath experiment ... not faster enough to warrant the danger of XML::LibXML 2010-06-17 senator * Acq: Remove the "Selection Lists" entry from the staff client's menu The unified search interface now does everything that the Selection Lists interface could. Also, merging selection lists now updates the edit_time field on the lead list. 2010-06-17 scottmk * 1. Disable fleshing for PCRUD. Otherwise fleshing would provide a back door whereby a user could see stuff he has no permission to see. 2. For the id_list method: strip out the "flesh_fields" entry, not the "flesh_columns" entry (which doesn't exist). This actually makes no difference, but if we're going to do something useless, we might as well do it right. M Open-ILS/src/c-apps/oils_sql.c 2010-06-18 miker * support unapi tag embedding in authority records * pushing unapi depth support back into trunk 2010-06-18 scottmk * Define some stock datatypes in query.datatype. Set the sequence for query.datatype to leave room for more stock datatypes if we want to add them. 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/0311.data.query-seed-datatypes.sql M Open-ILS/src/sql/Pg/950.data.seed-values.sql 2010-06-18 miker * add prompt to install Google Chrome Frames when in IE * setting the noGCF cookie to expire after a year, instead of at the end of the browser session 2010-06-18 atz * EDI/JEDI Translator test client Signed-off-by: Joe Atzberger * Repo note * Extra field in display (slight reorder) * Log message to both STDERR and log. * 0312 - JEDI template support for multiple ISBNs of same or different types. The first ISBN-13 is treated as primary, if there is one. Otherwise the first ISBN-10 is used. Signed-off-by: Joe Atzberger 2010-06-18 miker * add serial.subscription.owning_lib * make sure $depth is defined, and used 2010-06-18 senator * Acq: more menu reorganization New entry points to selection list, PO, and invoice interfaces. Also replaced visible references to "Pick List" with "Selection List" wherever I could think of, for consistency's sake. 2010-06-18 phasefx * stop the autoscrolling behavior with AutoFieldWidget * expose the internal record id and create date for a user as a tooltip over the user's name in the patron display 2010-06-18 miker * add serials holdings to the holdings_xml data for bibs 2010-06-19 dbs * Apply RHEL5 prerequisite installer patch by Lee Dickens Tweaked slightly to break some long lines over multiple shorter lines 2010-06-21 senator * Acq: add default sort order to canned searches, and provide middle layer support for sort order for unified search generally. The UI for that may come later. * Acq: yet another menu-reorganizing commit 2010-06-21 phasefx * rough cut at integrating ChiliFresh reviews with OPAC search results and record details page. Needs polish 2010-06-22 scottmk * 1. In oils_sql.c: make the functions is_identifier() and is_good_operator() global instead of static. 2. Use them to protect qstore against various forms of sql injection. M Open-ILS/include/openils/oils_sql.h M Open-ILS/src/c-apps/oils_storedq.c M Open-ILS/src/c-apps/oils_sql.c 2010-06-22 gmc * bug #597245: remove ersatz $7 "tags" from MARC tag selector Signed-of-by: Galen Charlton 2010-06-22 erickson * when you execute MARC, it opens a portal to the hellmouth * added warnings for missing params to MinPassiveTargetAge validator; missing params results in invalid for all target objects (noop_false) * removed deprecated MaxPassiveDelayAge validator from default courtesy notice definition 2010-06-22 phasefx * better way of setting these environment variables * this should place things better across different browsers re: Chilifresh 2010-06-22 senator * Acq: add a Create PO interface for workflows starting with new, blank POs * Acq: make the PO summary pane less monstrously vertical; add PO history link 2010-06-22 miker * caching extention for org tree traversal 2010-06-22 gmc * add 954.data.marc21expand880.sql to build-db.sh so that it gets picked up during new installations Signed-of-by: Galen Charlton 2010-06-22 atz * Script for git-svn repos (with possible github remote) Please heed WARNING in the script comments. 2010-06-23 atz * SIP Callnumber extensions, POD Use org_unit shortname everywhere, no owning_lib. Checkin response and Item Info response now return callnumber w/ current SIP code. 2010-06-23 miker * protect templated slots from errors when there are no template variables 2010-06-23 phasefx * correct the logic for detecting whether ChiliFresh has been configured, and add similar support for Novelist * proper spelling of this trademark 2010-06-23 miker * a bit more protection for non-cached values; beware the null depth in the two-param version of actor.org_unit_descendants! 2010-06-23 dbs * Add an explicit link to the favicon.ico per http://www.w3.org/2005/10/howto-favicon Yeah, we're not using the profile attribute on the HEAD element. Do we really need that? 2010-06-23 atz * 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 2010-06-24 scottmk * 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. M Open-ILS/src/c-apps/oils_sql.c 2010-06-24 gmc * remove duplicate entries for tag 760 from MARC21 tag list Signed-of-by: Galen Charlton 2010-06-24 dbs * 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. * We don't need to install plpython for PostgreSQL; also, add a target for the Fedora PostgreSQL server prereqs. * Fix Fedora 13 compiling for libdbi/libdbd * Add libdbi-devel as a prereq * Add Fedora's 64-bit location for the dbd driver libraries * Fix compile error due to undefined LONG_MAX constant, which is defined in limits.h * Make '3 Day Pre-Overdue Notice' work in seed data; we were missing a validator This was inserted properly in upgrade 0054, so we're just playing catch-up here * Use a valid validator for 3 Day Pre-Overdue notice event Curse traitorous middle-click and my tired eyes. 2010-06-24 atz * 0314 Baseline data Signed-off-by: Joe Atzberger 2010-06-24 miker * and imagine that, the ou passed to actor.org_unit_descendants(INT) might also be null. super. * add agency-stripping and btrim normalizers; add identifier|arcn index def as facet * arg ... thinkos. 0315 will work now 2010-06-24 scottmk * 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 2010-06-24 miker * doh, another thinko. spotted by Scott McKellar 2010-06-24 dbs * Return NULL if we don't have anything else to return (keeps the compiler happy) 2010-06-25 dbs * 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. 2010-06-25 miker * 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 * we will use a real mapping table instead 2010-06-25 dbs * Make CentOS/RHEL use Class::DBI::Frozen::301 and remove Class::DBI::Pg (not necessary) 2010-06-25 senator * Acq: fixing misc UI glitches Creating allocations and credits in the Funding Source Details interface didn't populate the appropriate grid immediately, but now it does. New tags didn't seem to persist in the Fund Details interface if you switched tabs and then came back to the Tags tab. Fixed. Changed some tab names of misc Acq interfaces to match their current names in the staff client menu. 2010-06-25 miker * add bib-authority linking table; add stored proc to extract linking; add hook to ingest (controlled by internal_flag) to implement authority link extraction * add stored procs to implement authority propagation if links exist; add trigger to optionally fire this propagation (default ON) 2010-06-25 phasefx * proxied added content support for ContentCafe 2010-06-27 dbs * Correct syntax for dojo.string.substitute() and remove offending unpaired parens 2010-06-28 miker * thinko when trying to preserve any user change to the internal_flag version of the ingest.disable_authority_linking enabled setting 2010-06-28 scottmk * 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 2010-06-28 miker * forcibly maintain an appropriate 901 field in all MARC data via triggers * add missed stored proc to base schema; adjust said stored proc to use 901 (or provided id) instead of 035 for bib-authority linking 2010-06-28 scottmk * 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 2010-06-29 senator * 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. * Fix copy-and-paste-o. 2010-06-29 miker * improve browse support; correct thinkos in new holdings fleshing code; improve generated MODS XML (remove some namespace prefixes) 2010-06-29 phasefx * 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 2010-06-29 senator * Booking: forward-porting bit-by-bit; see commit msg for r16827 * Booking: bit-by-bit forward-port; see commit msg for r16827 * Booking: thinko: default value for an org_unit_setting has to come after the org_unit_setting_type is defined 2010-06-30 scottmk * 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 2010-06-30 dbs * explode_array() is needed by 030.schema.metabib.sql now; create it early so that database schema creation doesn't fail * Lenny needs DBD::Pg; the unnecessary Class::DBI::Pg had pulled that in as a dependency 2010-06-30 gmc * 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. Signed-off-by: Galen Charlton 2010-07-01 gmc * bug #600021: fix lookup of FIFO holds OU setting Patch from Anoop Atre that fixes enabling FIFO holds via the circ.holds_fifo org unit setting. Signed-off-by: Galen Charlton 2010-07-01 scottmk * 1. Support the peculiar syntax of EXTRACT(). 2. Repair a regression to make SELECT * work again. M Open-ILS/src/c-apps/oils_storedq.c M Open-ILS/src/c-apps/buildSQL.c * Support the following built-in functions with peculiar syntax. They take no parameters and don't even accept empty parentheses: current_date current_time current_timestamp localtime localtimestamp M Open-ILS/src/c-apps/buildSQL.c 2010-07-01 senator * Fix missing dojo.require() in a couple of interfaces. This bug doesn't manifest itself in releases, as the openils_dojo.js layer seems to take care of overlooked calls to dojo.require() anyway. 2010-07-01 miker * remove as many namespace prefixes as I can from the MODS record output 2010-07-02 erickson * repaired bug where parsing intervals with months failed becuase dojo.date.add() wants the full word 'months' whereas postgres stores them abbreviated as 'mons' 2010-07-06 senator * 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. * Selfcheck: Show friendly error messages based on circ event fail_part field Messages lifted from opac.dtd 2010-07-06 erickson * added stored proc to return the distinct set of target copies from a users visible circ history 2010-07-06 scottmk * Add a configuration entry for the qstore server. This entry will look just like the entry for open-ils.cstore, except: 1. The is oils_qstore.so instead of oils_cstore.so, obviously. 2. There is no need (or use) for the max_query_recursion element. M Open-ILS/examples/opensrf.xml.example 2010-07-06 miker * integrate serial.unit by relaxing fkeys against asset.copy and adding hold support 2010-07-06 phasefx * augment these payment receipt templates with more info 2010-07-06 miker * use SQL function for speed, instead of PLPGSQL 2010-07-06 erickson * 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) 2010-07-06 miker * remove all the 901 mangling -- handled by the db now * add metarecord support to "already circulated" tagging 2010-07-06 senator * CC payments: address situations where Business::CreditCard::validate() returns true yet Business::CreditCard::cardtype() returns the string "Unknown" Curse you inconsistent APIs! :-) 2010-07-06 erickson * return IDs of newly created payments on success * 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 2010-07-06 phasefx * adjust code for an API change. Assume success if no ils_event 2010-07-06 erickson * added opac user setting for default sort order for search results 2010-07-06 scottmk * Add new program test_qstore, a command-line utility for testing and exercising most of the code for the qstore server. A Open-ILS/src/c-apps/test_qstore.c M Open-ILS/src/c-apps/Makefile.am 2010-07-07 miker * adding status/copy_location filter support to call number browse 2010-07-07 erickson * updated call number browse pass-thru to accommodate new copy location and status filters * 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 2010-07-07 phasefx * define these variables as parameters 2010-07-07 miker * Forward port of r16867: add missing event definition required by vandelay authority import 2010-07-07 phasefx * Merge branch 'browser' * Lost my commit msg the first time around, so... 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: AddHandler cgi-script .pl AllowOverride None Options +ExecCGI allow from all 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: ::external=https://hostname/cgi-bin/ezproxy/remoteauth.cgi,post=user=^u&passwd=^p 2010-07-08 scottmk * Fix a bug in pcrud. 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. M Open-ILS/src/c-apps/oils_sql.c 2010-07-08 phasefx * populate some fields in Item Status->Alternate View->Circulation History->Most Recent Circ Group when we're not bothering to retrieve the circ chain * hold/transit data in Item Status->Alternate View->Holds/Transit * adding a cc_name field to money.credit_card_payment to hold the human name on the credit card * column tweaks. If you already ran 0328, see comments at top 2010-07-08 dbs * 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. 2010-07-08 erickson * 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 2010-07-08 scottmk * Streamline pcrud a bit. 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). M Open-ILS/src/c-apps/oils_sql.c 2010-07-08 senator * 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. 2010-07-08 phasefx * 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) 2010-07-08 dbs * 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. 2010-07-08 senator * Acq: try looking up jacket image by UPC if ISBN is not available 2010-07-08 phasefx * 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 2010-07-08 dbs * Give the "About" button a legitimate accesskey 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). 2010-07-08 erickson * add sig handler back in for alarm. log error when read times out from alarm 2010-07-08 miker * fix initial subfield detection bug 2010-07-09 dbs * 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. * vandelay.dtd already includes the arrows in the entity definition for next/previous page 2010-07-09 miker * add support for switching between xul and textarea marc editors 2010-07-09 dbs * 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. * Restore whitespace consistency (spaces not tabs) * 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'. * dojo == elegant; refactor cursor up/down and hide fixed fields in MARC editor 2010-07-11 miker * break facets out to a separate table for speed * thinko in upgrade script 2010-07-12 miker * facet query correction 2010-07-12 dbs * NFC() needs Unicode::Normalize - strange that this didn't come up in previous testing * Several fixes for authority-controlled field and control number syncing The fix for maintain_control_numbers() was committed earlier, but wasn't part of a new upgrade script; this will ensure that everyone following trunk picks up the correction. 2010-07-12 gmc * cache OPAC-visibility of copies and bibs Create a new "materialized view" table, asset.opac_visible_copies, for use during the copy visibility check during OPAC searches. This is used by search.query_parser_fts(), replacing a check of a five-table join for each bib in the search results that proved to be far too slow on some large databases. This table is maintained by triggers on inserts and updates to the following tables: actor.org_unit biblio.record_entry config.copy_status asset.call_number asset.copy asset.copy_location serial.unit During a migration or large global change operation, it is recommended that those triggers be disabled. To (re)populate the materialized view, do SELECT asset.refresh_opac_visible_copies_mat_view(); Thanks to Mike Ryladner for his help with this. Signed-off-by: Galen Charlton * protect against deletion of serial.unit rows Rules are not inherited by child tables, so must add one explicitly. Signed-off-by: Galen Charlton 2010-07-12 phasefx * printing the contents of iframes is sometimes problematic, especially with complex DHTML, etc. This change allows content to define a printable_output() function for simple text to print instead of the rendered content itself * printable_output() for the patron editor, given that printing the Dojo here is problematic 2010-07-12 senator * Make a translate button available in the name column of copy locations editor 2010-07-12 dbs * Prevent MARC batch import from blindly trusting the user by checking LDR/06 With this commit, Vandelay will now check the leader of the incoming MARC record to ensure that its MARC type matches the indicated import record type. This is useful, for example, if you have a mixed set of bib & holdings records that you want to import; you don't want to import the holdings records as bib records. This is a fairly strict implementation; we could relax this by turning the check on its head and allowing the import as the user-indicated type as long as the LDR/06 doesn't explicitly match another record type. * Whitespace consistency for Vandelay 2010-07-13 dbs * Add 100$e (relator) and 711$c (Location of meeting) to controlled field map We'll probably flesh this out further as we get more serious about authority control, but these ones stood out in our initial testing. 2010-07-13 scottmk * Add limit_count and offset_count columns to query.stored_query table. 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/0334.schema.query-limit-offset.sql M Open-ILS/examples/fm_IDL.xml 2010-07-13 dbs * Stub script for adding authority control to an existing set of bibs The goal of this script is to iterate over every bib record listed at the command line (or --all) and check every controlled bib field for matching subfield combinations in authority records. This is going to be slow, friends, but for this iteration we're looking at paying a one-time cost; after that, controlled fields will automatically be maintained by triggers on the authority.record_entry tables. The bib field-to-auth field mapping needs to be fleshed out (should be comparable to the mapping in marcedit.js) and floating subdivisions still need to be controlled. Probably in a separate pass over the bibs, given the current "design". We extend open-ils.s*.authority.validate.tag to offer an id_list() variant so that we can get the corresponding authority record ID back from the call, instead of just a count. * Make maintain_901() more robust in the presence of namespaces Some records manage to get XML namespace declarations into each element, like as_xml_record() receives a record with anything other than 'a' in LDR/09 position, it will try to run a MARC8-to-UTF8 conversion on the record - even though the source file itself was XML and clearly couldn't have been MARC8. This code corrects the leader on the fly so that MARC::File::XML won't try to convert it and throw a "wide character" warning, but the fix means that something was wrong with the leader to begin with, so we also write a warning to the log about the situation. 2010-07-14 dbs * Improve auto-authority-control processing script: * Prevent duplicate $0 subfields from being generated by multiple runs * Provide more bib field/subfield -> auth field/subfield mappings * Protect against missing bib->auth maps * Correct --all option to actually retrieve all undeleted records * validate.tag.id_list: Return an empty list instead of 0 in the case of no matching records This makes it a little easier to handle cases where there was no match, rather than having to check to see if we have a scalar or a reference to a list. * In theory, this would be a step towards MFHD records in the editor looking saner. In practice, the BKS fixed fields are hidden. Sadly, the leader values for the MFHD record are not displayed either. * Set the 004 of the new MFHD record to the ID of the targeted bib record 2010-07-14 scottmk * When returning a list of bind variables: If a default_ or actual_value is undefined for a given variable, leave it out of the JSON object altogether, rather than create an entry with a JSON null for it. That way the client can distinguish between an undefined value and a value defined as null. M Open-ILS/src/c-apps/buildSQL.c 2010-07-14 dbs * CSS makes things visible, or not. Display the nascent MFHD fixed-field editor. * Authority records get some fixed-field love in the MARC Editor 2010-07-15 dbs * Teach assets.merge_record_assets() to also merge authority->bib links * On second thought, delete authority links pointing to stale bib records This avoids the overhead of updating controlled fields in deleted bib records. * asset.merge_record_assets() needs auth_link declaration (was in upgrade script) 2010-07-15 gmc * bug 605884: make MARC expert search of control fields work Allows users to search on the 001 and 003 fields, for example. Signed-off-by: Galen Charlton * bug 605921: fix bib search hang on queries like "title ; subtitle" More generally, the fix avoids a to_tsquery exception in cases where a search term is normalized away to the empty string. Signed-off-by: Galen Charlton 2010-07-15 dbs * Delete links to deleted bib records as part of biblio.indexing_ingest_or_delete() Moves authority.bib_linking cleanup from the special case of merging bib record assets to the general case of deleting bib records 2010-07-15 miker * companion to "browse", which drops you into the middle of a list centered on your input, "startwith" browses only from your input on 2010-07-15 dbs * Protect authority records from real deletion and add a "merge authorities" function 2010-07-15 erickson * return # of imported and failed records to the caller 2010-07-15 miker * ARG! Missed a semicolon. Perl, be like JS and make them optional. On second thought do not be like JS in any way. 2010-07-15 senator * make openils.widget.TranslatorPopup a little more environment-agnostic 2010-07-15 phasefx * add copy circ lib to alternative item details view * allow open-ils.circ.hold.update.batch to apply nulls to fields * wrong variable; could refresh the wrong rows * more configuration options for date/timepicker dialog, and use that dialog with staff editing of hold thaw date and expire time * Have open-ils.circ.circulation.due_date.update return the circ instead of the circ id so that modified rows in Items Out refresh correctly, and have Items Out -> Edit Due Date, -> Renew with Specific Date, and -> Mark Claimed Returned use the date/timepicker dialog 2010-07-15 senator * This should have been part of r16946. Now the TranslatorPopup works in the Copy Location Editor 2010-07-16 miker * use a left join instead of -not-exists for anti-join -- much faster for large nullable-side sets in this case 2010-07-16 gmc * whitespace consistency improvements Signed-off-by: Galen Charlton * add --timeout switch to marc_export Provides way to export bibs with holdings that have a large number of copies attached. Default timeout remains 1 second when exporting bibs; increased to 300 seconds when exporting holdings based on empirical tests on a big database. Signed-off-by: Galen Charlton 2010-07-16 erickson * rearrange while loop to prevent error: Can't 'last' outside a loop block 2010-07-16 dbs * Add the new owner column to the are object in the IDL * serial.record_entry already had an owner column spelled "owning_lib" Adjust the table and affected function accordingly 2010-07-16 gmc * make --timeout actually work if setting a timeout > 60 seconds Also remove ersatz XML declarations so that XML output is well-formed. Signed-off-by: Galen Charlton 2010-07-16 phasefx * get rid of the chrome instantiated sound object so it's every interface for itself, and have remote xul load server/skin/custom.js instead of chrome 2010-07-16 erickson * return NULL terminator to indicate successful read; fixed typo 2010-07-16 dbs * It is important to update the upgrade_log to prevent collisions and such. Updating config.upgrade_log to 0340. 2010-07-16 gmc * add seed for COPY_NEEDED_FOR_HOLD.override permission Being careful during the upgrade since a fair number of EG database in the wild had this one added manually. Signed-off-by: Galen Charlton 2010-07-17 dbs * Fix schema creation breakage. Damn you dangling commas. * Switch to ingesting authority records automatically via database triggers Taken largely from the existing approach for ingesting biblio records, there is some duplication here that we could genericize. But for now, we'll go with the working-but-separate approach to avoid introducing badness into the relatively stable biblio ingest pipeline. Also, move some of the existing authority-related functions out of the metabib schema file and into 999.functions.global.sql. Finally, the direct_ingest.pl script is no longer necessary for ingest of authority records, either, so die in that case as well. * Teach marc2sre.pl MFHD record ingest script to read a mapping of library names to OU IDs The past approach required workarounds that weren't fun for a library without in-house scripting expertise; this provides a straightforward mapping approach with docs and a working sample. Which should be helpful for all of the libraries that will go with the MFHD serials approach in the future. Heh. 2010-07-18 miker * remove ingest service call from authority import thanks to in-db ingest of auth by dbs; send final message with total and count processed; send record counts at most every 3%; rearrange queue cleanup code to aviod needless rollback and cover all queues, not just the first one we test * put the null return back, in case that is important on the client side 2010-07-19 erickson * repaired sql syntax for upgrade log commit * when calculating estimed hold wait time, don't ignore copies that have no circ modifier * updated default estimated hold wait display to handle seconds instead of days returned by the ML API call. TODO, consider if/how to handle sub-day intervals 2010-07-19 miker * use LEFT JOIN to allow a single query to count copies per circ mod * use abs() to get page number in either direction 2010-07-20 erickson * md5 module is deprecated; move to hashlib 2010-07-20 miker * backporting r16982: use the correct table and field, caught by Doug Kyle and reported via IRC * Patch from John Craig providing a saner timestamp cleansing setup for backdated circs 2010-07-20 erickson * added support for selecting individual copy statuses that will prevent checkout at self-check even when the generic copy_not_available event has been overridden to allow for non-standard copy circs from selfcheck. TODO: ui for managing the list * flush the xmpp socket before attempting to process new marc stream requests * login just before starting work and log out after each request is handled. this is removes the need to check for bad authtokens and re-login mid-process 2010-07-20 gmc * set truncation to 1 for all biblios.net Z39.50 attributes Thanks to Anoop Atre for spotting the problem. Signed-off-by: Galen Charlton 2010-07-21 scottmk * Two new tables in action schema: fieldset and fieldset_col_val. M Open-ILS/src/sql/Pg/090.schema.action.sql M Open-ILS/src/sql/Pg/999.functions.global.sql M Open-ILS/src/sql/Pg/002.schema.config.sql A Open-ILS/src/sql/Pg/upgrade/0346.schema.action-fieldset.sql M Open-ILS/examples/fm_IDL.xml 2010-07-21 miker * index which /greatly/ speeds collection of pending active events 2010-07-21 gmc * improve documentation of macros available to receipt templates Signed-off-by: Galen Charlton 2010-07-21 miker * add copy_circ_lib and copy_owning_lib to circ matrix matchpoints, closer one (if both are set) is more important to the ordering * add parameter support to acn, acp and auri unapi axes * protect acn, acp and auri from our $lib faking 2010-07-21 erickson * pushed view-in-catalog link up to the main lineitem display. moved pl/po/worksheet/catalog links to a row of their own for a more consistent location (visually). replaced 'PO:' 'PL:' with small icons to easier catch the eye; added 'worksheet' tag to the worksheet icon for clarity TODO: plug in bib discovery and linking mechanism for freerange lineitems * add collection code as non-i18n version of shelving location * added an 'Add Brief Record' button to the PO interface, which is visible when there are no lineitems on an existing PO. 2010-07-22 miker * retain the indicators on located uri 856 merge during asset merge; update script and backporting to come * upgrade script and version bump for r17007 2010-07-22 senator * Acq: always show "add to new selection list" / "create new PO" buttons in related lineitems interface * Acq: attempt to fix issue where adding copies in an LI table's copies interface, then returning to the table view, then going back to copies doesn't show the most recent saved changes. 2010-07-22 gmc * bug #608937: make barcode search from main patron search form case-insensitive Signed-off-by: Galen Charlton 2010-07-22 erickson * fixed bug in related lineitems page where it was attempting to fetch the bib record based on the lineitem id * Added option to link a (freerange) lineitem to a catalog record via simple pop-up search page. 2010-07-22 senator * Acq: revert something I didn't mean in r17013 2010-07-23 erickson * log the IP address of the connecting client 2010-07-23 phasefx * support printing of stat cats and surveys from patron editor * logic error preventing deletion of addresses in patron editor 2010-07-23 miker * Forward-port r17024: include null fields, via .toStoreItem(), when creating a permission map store item 2010-07-23 scottmk * Add procedure action.apply_fieldset. M Open-ILS/src/sql/Pg/090.schema.action.sql M Open-ILS/src/sql/Pg/002.schema.config.sql A Open-ILS/src/sql/Pg/upgrade/0350.schema.action-apply-fieldset.sql 2010-07-26 dbs * Update README and prereq installer for Evergreen trunk: * Favour PostgreSQL 8.4 * Add ISN contrib * Update Dojo to 1.3.3 * Add Ubuntu Lucid as a target * Remove Gentoo support (until we have a volunteer) * Remove Ubuntu Karmic support (can add back in at release time if warranted) * Mention oils_web.xml in the README 2010-07-26 gmc * improve description of VIEW_PERMIT_CHECKOUT and VIEW_HOLD_PERMIT permissions Signed-off-by: Galen Charlton 2010-07-26 scottmk * New table: actor.usr_saved_search M Open-ILS/src/sql/Pg/005.schema.actors.sql M Open-ILS/src/sql/Pg/002.schema.config.sql A Open-ILS/src/sql/Pg/upgrade/0351.schema.usr_saved_search.sql M Open-ILS/examples/fm_IDL.xml 2010-07-26 phasefx * tweak hold "status" for canceled holds. And one whitespace fix 2010-07-27 dbs * We require Buttons on this form. Continuing the good work senator started. 2010-07-27 scottmk * Merge Dan Wells' changes to the serial schema from the seials-integration branch. M Open-ILS/src/sql/Pg/002.schema.config.sql A Open-ILS/src/sql/Pg/upgrade/0352.schema.serials-integration.sql M Open-ILS/src/sql/Pg/210.schema.serials.sql M Open-ILS/examples/fm_IDL.xml 2010-07-27 dbs * Reverse dojo.mixin() order in AutoFieldWidget to favour passed-in constraints; otherwise we stomp them * Prevent years in "New Fund" dialog from being displayed with a comma separator Also limit to a seemingly reasonable range of 2000 - 2200 for the year 2010-07-27 phasefx * put these command elements into the overlay, closer to where they're being used * entry point and function stub for Mark Item as Missing Pieces entry point for scanning item as missing pieces and stub dialog * flesh out scan item as missing pieces dialog * 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++ * middle layer support and client-side utility function. missing messagecat for missing pieces dialog 2010-07-28 miker * documentation for facet value retrieve method 2010-07-28 senator * Syntax error in serials schema file. 2010-07-29 miker * Patch from Jason Stephenson: 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. 2010-07-29 dbs * Build a threadsafe libjs so that JavaScript::SpiderMonkey can be threadsafe Thomas Berezansky 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. * Add Developer Instructions section, like the OpenSRF README, per tsbere's suggestion 2010-07-29 atz * Need to die if we fail to find a picklist, symmetric to the top of the conditional. Otherwise, we crash out on $conn->respond($picklist->id); 2010-07-29 senator * Acq: better labels for adding catalog record based item to PL or PO 2010-07-29 miker * 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
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. 2010-07-29 erickson * repaired copy/paste thinko in the vandelay auto-overlay-with-merge-profile logic 2010-07-30 atz * Admin Menu link for viewing EDI Messages Modifies and uses the existing page for viewing one PO's messages. TODO: Other kinds of filtering/searching. TODO: Display PO number where name unavailable. 2010-08-02 phasefx * toward printing slip and letter for missing pieces 2010-08-02 miker * update schema list for Slony replication * create correct primary key constraints for some view-based / inheritted tables 2010-08-02 atz * 0356 fixup - the updates otherwise failed for syntax or dependent constraints 2010-08-02 miker * escape more in the cn label for browse xml 2010-08-03 dbs * Correct DDL for creating a fresh schema - match upgrade 0356 * 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 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 2010-08-03 erickson * 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. 2010-08-03 atz * 0358 more values for acq.cancel_reason Note: we won't be using all of them, the set is just there for completeness. 2010-08-03 scottmk * 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 2010-08-04 atz * Simple 1-line feature for EDI translator Allows us to know what the effective version of openils-mapper is. 2010-08-04 phasefx * previous changes to better support the embedded browser Print button broke printing elsewhere * print missing pieces slip 2010-08-04 erickson * updated patron fee amount call to use cstore for speed 2010-08-04 dbs * Close LP bug 613551 - JS error in Internet Explorer from google.loader.callbacks.books Bizarre, this line does not appear to be necessary at all. Vamoose it. * Firefox is picky about having attribute values quoted, let's oblige it Still some generated dojo.query() expressions throwing warnings but we can tackle those... later 2010-08-04 miker * segregate the old version of facet-modified JS to be craftsman-specific * a glue method used to apply a template to a set of records 2010-08-04 phasefx * tweak to item attribute editor to support hiding of fields with cat_custom.css 2010-08-04 erickson * 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. 2010-08-04 miker * allow ACQ-driven ordering and claiming of serial items 2010-08-04 phasefx * required column for item stat cats 2010-08-04 senator * Provide a handy method for dojo-based interfaces to correctly show timestamps from fieldmapper object fields. 2010-08-04 erickson * no need to search for patron summary, instead retrieve directly by usr id 2010-08-04 phasefx * 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) 2010-08-05 gmc * bug 613703: normalize backdate on item checkin better Fixes bug that appears to cause all checkins uploaded via offline circ to fail with an "invalid date format" error. Signed-off-by: Galen Charlton 2010-08-05 dbs * Fix typo in --boostrap option, keeping it as an alias for possible automated scripts 2010-08-05 phasefx * updating some auditor tables that were causing problems in cstore with missing columns, but not sure how to reset the _lifecycle views * the caption id was important after all, for keyboard navigation * fix color highlighting for xulrunner 1.9.2 * disable Create/Modify button in item attribute editor if Required fields are Unset 2010-08-05 erickson * removed some deprecated code 2010-08-05 dbs * Remove OpenILS::Utils::FlatXML - code that has been unused since before 1.0 * 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. 2010-08-05 erickson * return the matched circ rule during inspect * Log the found matchpiont with indb circ policy test 2010-08-05 scottmk * Correcting some mistakes. Sequence names must be qualified by schema. M Open-ILS/examples/fm_IDL.xml 2010-08-05 miker * speed up open circ counting and listing 2010-08-05 erickson * prev commit left some un-esacped <'s. fixed * repaired primary key column; removed trailing semi's from SQL 2010-08-05 phasefx * 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 2010-08-05 erickson * 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 * honoring IDL 'required' attr for autofieldwidget for styling * added oils_obj:required attrs for circ_matrix_matchpoint 2010-08-05 phasefx * 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 2010-08-06 gmc * bug 614132: fix glitch when used cached permission group widget Fixes bug where the initial permission group value in a circ or hold matrix entry was not displayed when editing an existing matchpoint. Signed-off-by: Galen Charlton * 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. mk_env could use a better name, too. Signed-off-by: Galen Charlton * added CentOS/RHEL packages for Business::ISBN and friend Signed-off-by: Galen Charlton 2010-08-06 scottmk * 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. M Open-ILS/src/c-apps/oils_sql.c 2010-08-06 miker * Index the internal bib id and tcn value to make searching simpler 2010-08-06 erickson * repaired circ-mod retrieval call to use retrieve instead of search 2010-08-06 phasefx * 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 2010-08-06 gmc * 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. Signed-off-by: Galen Charlton 2010-08-06 erickson * add some tests for copy existence in checkin routines 2010-08-07 dbs * Functionality-affecting typo: subjet -> subject * 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. * 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). 2010-08-09 dbs * Patch from Ben Ostrowsky 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). * Get the entries into asset.call_number_class before altering asset.call_number * Avoid the NOT NULL problem on the auditor table by not creating the constraint in the first place The auditor schemas will be different for a from-scratch DB vs an upgraded database, but just like the would-be iPhone purchaser says, "I don't care." 2010-08-09 erickson * combine circ and user fetch into 1 cstore call for SIP items. minor cleanup 2010-08-09 dbs * And let's create those new auditor columns first, before any changes ripple through the base table * And... keep the index creation on asset.call_number in the right place There's tears in my coffee. These are not tears of joy. 2010-08-09 scottmk * Add middle layer functions for maintaining actor.usr_saved_search. M Open-ILS/src/perlmods/OpenILS/Application/Actor.pm 2010-08-09 dbs * 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 * SQL 101: Remember to name all of the columns before you insert values into said columns 2010-08-09 miker * 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. 2010-08-09 dbs * Copy/paste-o; asset.call_number ne asset.call_number_class * Create the label_class object if null was returned from the method call 2010-08-09 gmc * removed executable bit from files that don't need it set Signed-off-by: Galen Charlton 2010-08-10 erickson * repaired typo/pasto in copy vis upgrade script 2010-08-10 miker * aaaaand, another typo of the r17147 ilk 2010-08-10 erickson * similar to findbib, replace dojox.data.dom.textContent (which fails for unknown reasons) with node.textContent for bibtemplate rendering in related lineitems page 2010-08-10 phasefx * easier to read and corrected regexp for munging iso8601 dates so that they're usable by dojo * replace this broken regexp with cleanse_ISO8601 2010-08-10 miker * Two things: 1) match old output, with rows for no holdings 2) calculate transcendance only once per function call 2010-08-10 gmc * fix age protection proximity test for in-DB circ Patch from John Craig. Signed-off-by: Galen Charlton 2010-08-10 erickson * use staff query for lineitem->bib linking ui 2010-08-10 gmc * 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. Signed-off-by: Galen Charlton 2010-08-10 senator * Acq: fix certain dialogs needlessly flashing on-screen while li_table loads 2010-08-11 erickson * added an UI for editing vandelay import item attribute definitions. it's a basic autogrid version for now. TODO: fix some grid height styling issues 2010-08-11 phasefx * 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.) * 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 * tweak the layout for the volume/copy creator so that buttons/etc are always on-screen, with just the input textboxes in the scrollable area 2010-08-11 miker * missed one fix in previous optimisation effort 2010-08-11 atz * Add page title and tidy up * Respect activate_po option in interface 2010-08-11 miker * Use a COALESCE/NULLIF nested structure instead of CASE (one branch, easy peasy) for 4x speedup in the core search query 2010-08-11 phasefx * redundant with util_overlay.xul 2010-08-11 erickson * Gave the base login code the ability to find username/password from a cookie. for security reasons, we don't put login data into cookies, but if the login info is available to us in that format already (say, via external means), we'll use it. This can be useful for persistent logins (e.g. self-check) or automatic logins (pushing cookie data out to workstations) Minor cleanup of the login code to make it more re-use friendly. Added self-check support for verifying the staff login before each patron login. 2010-08-11 scottmk * Plug some memory leaks. In many places we were creating dbi_results without freeing them; pretty much everything involving transactions, savepoints, inserts, updates, and deletes. M Open-ILS/src/c-apps/oils_sql.c 2010-08-12 miker * register the autoloader earlier, and log about the use it gets 2010-08-12 scottmk * Complain when a sequence name is not qualified by a schema. M Open-ILS/src/c-apps/idlval.c 2010-08-12 dbs * Remove broken old JavaScript in Google Book preview code I /think/ this was supposed to change the title of the "Preview" link to "Read this online" or the like in the case that the full text is available, but it was relying on a function that didn't exist (setText) and trying to reference an ID that didn't exists. So it broke in those rare cases where Google Books did provide the full text. 2010-08-12 erickson * avoid confusion by not installing the non-functional GenerateBatchOverduePDF reactor with the seed data. * created batch/streaming versions of hold placement and possibility check calls: open-ils.circ.holds.create[.override].batch and open-ils.circ.title_hold.is_possible.batch. Arguments are the same as non-batch, just delivered as an array; responses are delivered in order inbound params 2010-08-12 phasefx * yet more auto-scrolling to stamp out * yet more auto-scrolling to stamp out 2010-08-12 erickson * yet more auto-scrolling to stamp out * re-label recv_date as 'Invoice Date' to avoid confusion around the 'receive date' of constituent physical items 2010-08-12 atz * Allow * in file portion of pathname Example: incoming/*.xpo => incoming/yegagufoNy.xpo You cannot put an asterisk in the path portion of the string, however, since that would mean the target directory was not determined. 2010-08-13 miker * protect authority linking trigger against broken $0 values 2010-08-13 phasefx * change the (Copy) link next to addresses in the patron summary to (Copy/Print), with a popup menu for choosing which action to do 2010-08-13 erickson * DOM text/pattern highlighter openils.Util.hilightNode( node, [pattern1, pattern2, ...], {classname:foo} ); 2010-08-13 miker * fix cut-n-paste-o 2010-08-13 phasefx * add title to item notes window and an accesskey for closing the window. Spawn the item note window during the Mark Item Missing Pieces workflow * add standing penalty prompt to Mark Item Missing Pieces workflow * spawn external text editor for Patron Letter during Mark Item Missing Pieces workflow. Put configuration option under Admin -> Local System Administration -> External Text Editor Command 2010-08-13 erickson * repaired class name typo (thanks dbs). made args more generally useable 2010-08-13 phasefx * playing around with Find in Page functionality; the recent dojo highlighter commit prompted me to share this * go ahead and expose the Find in Page functionality, but hide it under the Debug label for now. Other than being incomplete (no Find Next, etc.), the main problem I see are our dynamic dojo interfaces where the text one might be tempted to search for won't actually be rendered yet on the screen (say in a scrolling list) * meant to hide these Find in Page buttons 2010-08-13 dbs * Add Debian Squeeze prereq support, drop out-of-date items * Drop Debian Etch ("Security updates have been discontinued as of the end of February 2010.") * Drop PostgreSQL server packages pre-8.4 as they are no longer supported TODO: To continue to support Ubuntu Hardy and Debian Lenny, we'll need to start pulling in backports of postgresql-8.4. 2010-08-13 senator * merge seials-integration [sic] branch into trunk Dan Wells has provided tremendous efforts in developing a user interface and middle-layer logic for controlling serials. His work builds on the serial schema hashed out earlier in the year, also with his heavy involvement, and it provides ways to manage subscriptions, distribution, prediction, receiving and more. Although this code is but a beginning, much of it is functional today. This commit brings Dan's work into trunk. Dan has provided some release notes here: http://www.open-ils.org/dokuwiki/doku.php?id=acq:serials:release_notes:initial_trunk_merge 2010-08-14 scottmk * Pedantic change for const-correctness: changed three calls to jsonObjectGetKey() to call jsonObjectGetKeyConst() instead. M Open-ILS/src/c-apps/oils_utils.c 2010-08-15 scottmk * Pedantic change for const-correctness: replaced a call to jsonObjectGetKey() with a call to jsonObjectGetKeyConst(). M Open-ILS/src/c-apps/oils_auth.c * Pedantic change for const-correctness: replaced two calls to jsonObjectGetKey() with calls to jsonObjectGetKeyConst(). M Open-ILS/src/c-apps/test_json_query.c * Pedantic changes for const-correctness: 1. Add the const qualifier to most of the parameters of SELECT(). 2. In almost all cases: replace calls to jsonObjectGetKey() with calls to jsonObjectGetKeyConst(). A couple of calls remain that would be more trouble to replace than they're likely to be worth. M Open-ILS/src/c-apps/oils_sql.c 2010-08-16 phasefx * Disable Replace Barcode button for new patrons, and disable the barcode field for existing patrons. If Replace Barcode is activated, then enable the barcode field, give it focus, and disable the Replace Barcode button. * tsbere pointed out this typo * redundant refresh() can cause duplicate rows in list. Also, perm failure is an "expected" error here, so we can skip the skull and crossbones if folks without the permission cancel the Void All Billings action 2010-08-16 atz * 0372 - acq.edi_message.vendacct Needed for some but not all vendors (separate from SAN). 2010-08-16 phasefx * forwardport of 17216, org hiding depth in opac * ui.circ.suppress_checkin_popups disables dialog prompts during check-in, but in the case print slip dialogs, it should still print the slips if the Auto-Print Hold and Transit Slips checkbox is toggled on (the action is still occuring). However, only the dedicated Check-In interface had such a checkbox, and if you were to check-in from Item Status or Items Out with that org unit setting active, you'd have no option to print any slips associated with the check-in. This fixes all that 2010-08-16 erickson * patch from Ben Ostrowsky to help clarify the CREATE_MARC and IMPORT_MARC permissions descriptions 2010-08-17 erickson * libbusiness-creditcard-perl is installed with DEBS. removing from squeeze-specific debs. make sure we install the EXTRA_DEBS_SQUEEZE as part of install_extra_debs_squeeze 2010-08-17 dbs * Fix typo in i18n Makefile that afflicted install * Move to CSS-based styling of validated vs. unvalidated fields This sets the stage for differentiating between validated fields that match authority records, and validated fields with a controlling $0 subfield that match an authority record. This also gives sites a bit of an easier entry point to customize their MARC editor - say, for example, to support accessibility requirements if red vs. black doesn't satisfy the needs of those who are colour-blind. * Tell developers that they need to install Dojo 2010-08-18 dbs * Create indexes on some Vandelay tables to speed up retrieval and delete operations 2010-08-18 phasefx * thinko here was throwing off the tallies for checked_out.count 2010-08-18 atz * Descriptive notes in interface * Fix closing tags 2010-08-18 dbs * Fedora packages perl-MARC-Record at 2.0.0, but 2.0.1 is required 2010-08-18 phasefx * some defensive coding. TODO: disable actions in Holds list interfaces that affects items when the selected holds have no Current Copy 2010-08-18 dbs * Give authority records an XML-valid XML formats list Still need to trim the actual list of formats for authority records, as marcxml-full and marcxml-uris get listed, and those do not work or make sense for authority records. 2010-08-18 miker * so, some datasets have records with multiple 245a subfields. yeah, really. * so, some datasets have records with multiple 245a subfields. yeah, really. 2010-08-18 atz * Fixup ctx.page_title and script type declarations Some had ctc.page_title, another had page_titel, but most didn't have any. 2010-08-18 dbs * Only Debian Squeeze currently packages MARC::Record > 2.0.1 2010-08-18 erickson * provide an explicit import() sub to collect the boostrap config name at import. force child_init to run (once) if not run by Apache * money_open_user_summary may not exist if the user has no transactions to summarize. protect against null summary object 2010-08-19 dbs * Add basic authority browse/edit/delete interface http://localhost/eg/cat/authority/list should get you where you need to be The paging is comical, the JS should probably be split out from the declarative markup, the interface needs i18n, the UI needs to become usable - but at least we have exposed some functionality for working with authority records now. Ideally this becomes a widget that we can just embed into other interfaces to maintain context (which suggests using openils.cgi to seed the initial values of the widget). Note that the delete function works - it sets the deleted flag for an are to "true" - but the underlying authorities browse interface currently doesn't care about such niceties and always returns deleted records along with undeleted records. So that might be the next stop. * Forgot to set the open-ils.pcrud controller for are in r17255 And making the new perm section tab-consistent while I'm at it * Don't return deleted authority records in a browse list * Don't show deleted authority records in startwith browse, either Also restore the >= operator that was stomped in r17257 * Fix some defects in the first iteration of the authority edit/delete interface * Ensure that the correct ID is assigned to the edit/delete request * Prevent caching of results so that when a record is deleted, we don't continue to see it * Give the authority list interface a place on the staff client Cataloging menu The interface itself still needs usability love, but exposing basic edit/delete functionality for authority records should give authoritarians some level of happiness. 2010-08-19 erickson * downgraded a debug log message from error() to debug() * added clear_marc to po li retrieval to cut down network; mild code cleanup * automatically create lineitem assets (i.e. load bibs and items) during po activation when necessary since activation requires it; only do this during non-dry-run calls * for consistency, use same 'icons' to indicate PO and PL. don't show PO/PL links when no such object is linked to the lineitem * added missing closing td 2010-08-19 miker * Add support to BibTemplate for arbitrary XML chunks (DOM node) via the "xml" constructure param, which disables automatic format-specific fetching. Add a new module, openils.FeedTemplate which, given: * an xml feed (URI or pre-collected DOM node) * a dojo.query to pull out items from the feed * the DOM node of a template to clone for each item * the target DOM node into which it should shove the item-filled template instances will render a feed of arbitrary xml for you. 2010-08-19 dbs * Further enhancements to the authority list interface * Offer Next / Previous buttons instead of forcing the number spinner * Submit searches onBlur of the search box instead of having to click Submit * Accept CGI params so we can kick off a search from other interfaces * Factor out the displayRecords() code so we can attach other events to it 2010-08-19 senator * Acq: make view/place orders open a new tab w/ xul browser wrapped therearound * Serials: an alternative batch receiving interface, to support certain heavy-barcoding workflows. Still needs some things hooked up in the middle layer to create serial.units. Still needs some configurability. Access from "Actions for this Record" in the staff-client-wrapped OPAC for a record with subscriptions and items attached. 2010-08-19 erickson * added util function for printing an html string; use new func for PO printing; TODO, use new func in selfcheck code to reduce duplication * circ_modifier codes could be defined, but non-true (i.e. '0'). test for defined instead of truthiness when analyzing LID circ modifiers. repaired (invisible) bug that unnecessarily lead to using circ mod objects instead of codes, depending on context 2010-08-19 dbs * Class::DBI::Frozen::301 needs to be forcefully installed on Debian Squeeze 2010-08-19 erickson * move PO status to top of page for clarity * submit unified search query on Enter when focused on value widget 2010-08-20 dbs * Give the Authority List interface the ability to merge records... almost Separate the interface into separate JavaScript vs markup files To-do: * Provide a middle layer method that accepts the array of records to merge and merges them * Teach the mergeRecords() to call that method when it exists * Provide a way of reordering the records or otherwise flagging which record should be the lead * Prevent the same record from being added to the merge slushbox twice * Add a speedbump (confirmation dialog) when deleting authority records * Add a speedbump to the MFHD delete workflow * When initiating a new authority search, reset the pager to zero to avoid surprises * Hitting ENTER in the term search box fires off a search now, as you would expect 2010-08-20 gmc * bug 620899: fix broken test for oils_web.xml Patch from Rick Scott Signed-off-by: Galen Charlton 2010-08-20 dbs * Add the authority record merge middle-layer API (open-ils.cat.authority.records.merge) Also add a pertinent permission (MERGE_AUTH_RECORDS) * Hook up the authority management interface to the middle layer For now, uses the first record in the list as the master; we either need to give users the ability to select the master record at merge time, or to select it prior to clicking "Merge" 2010-08-20 erickson * repair faulty lineitem detachment from invoices * propagate estimated price to created copy as copy price (aka list price or replacement price); propagate invoiced amount to created copy as copy cost (aka library cost); caveats and consderations noted in the code. * until distrib formula skip_count is used (and possibly even then), let's hide it from the setup UI * during LI creation, adopt the provider of the PO if linked to a PO (and no provider was selected). repair event description copy/paste error 2010-08-20 dbs * Apply a little bit of style to group form elements together in confined spaces 2010-08-20 phasefx * eliminate false positives for ContentCafe features for a given bib 2010-08-20 erickson * added support for a SIP config option that forces the server to return the no_i18n version of the patron profile group name from the 'ptype' sub (aka PC field in patron-info requests); added config options getter sub; cleaned up some string concats to prevent warnings 2010-08-20 dbs * Add an API for counting the number of bibs linked to each authority record in the input list srfsh# request open-ils.cat open-ils.cat.authority.records.count_linked_bibs [1,2,3,4,5,6] Received Data: [ { "bibs":1, "authority":1 }, { "bibs":1, "authority":2 }, { "bibs":2, "authority":3 } ] 2010-08-20 senator * Booking: more progress on the forward-port from rel_1_6 This completes the merging of changes from r15878 except for those to Circulate.pm, which are more involved and call for more untangling. More to come soon. 2010-08-20 erickson * added internal_id handler in anticipation of possible sip extension for returning patron ID * added sample SIP config for patron_type_uses_code option * re-tab to use tabs for consistency with rest of file; for now, add embedded vim command to settle the issue 2010-08-20 atz * Add type="text/javascript" to