Mike Rylander [Thu, 14 Jul 2011 15:42:26 +0000 (11:42 -0400)]
Correct CDBI thinko -- search_where is smart about wantarray, search is not
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Bill Erickson [Tue, 12 Jul 2011 21:49:10 +0000 (17:49 -0400)]
Remove deprecated, conflicting version of vandelay.match_bib_record from base schema. Thanks, Galen
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Jason Etheridge [Tue, 12 Jul 2011 21:55:54 +0000 (17:55 -0400)]
pin an upgrade version for fix_maintain_901_quoting
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Galen Charlton [Tue, 12 Jul 2011 20:56:10 +0000 (16:56 -0400)]
upgrade script for bugfix for lp#809540
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Galen Charlton [Tue, 12 Jul 2011 20:51:31 +0000 (16:51 -0400)]
lp#809540: quote replacement values properly in maintain_901()
Prevents a failure if, for example, the tcn_value of a bib to be
added or updated contains the string '\1'.
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Jason Etheridge [Tue, 12 Jul 2011 18:36:37 +0000 (14:36 -0400)]
alert the user when the OPAC's Quick Search->Item Barcode function returns a pre-cataloged item
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Jason Etheridge [Tue, 12 Jul 2011 14:42:08 +0000 (10:42 -0400)]
"Mark Local Result as Overlay Target" action in z39.50 client
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Mike Rylander [Tue, 12 Jul 2011 13:40:54 +0000 (09:40 -0400)]
Removing errant comma spotted by Thomas Berezansky
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Galen Charlton [Mon, 11 Jul 2011 19:09:34 +0000 (15:09 -0400)]
append line items to table in specified order
Prior to this patch, the order that line items were displayed
in (e.g.) a purchase order view was effetively randomized based
on the amount of time it would take for async calls to fetch
additional line item details to return.
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Mon, 11 Jul 2011 18:26:16 +0000 (14:26 -0400)]
Merge branch 'authority-control-sets-squashed_for_master'
Authority control sets! Largely by Mike Rylander, somewhat by me and
others.
This is the merge commit. See individual commit messages for more
detail.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Mon, 11 Jul 2011 18:23:30 +0000 (14:23 -0400)]
Stamping Mike's upgrade script for authority control sets
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Mike Rylander [Mon, 11 Jul 2011 15:41:35 +0000 (11:41 -0400)]
Unstamped upgrade script for Authority Control Sets
... with additional fixes from Lebbeous Fogle-Weekley
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Mike Rylander [Mon, 11 Jul 2011 13:52:26 +0000 (09:52 -0400)]
Merge/rebase cleanup -- remove useless/incorrect versions of the MARC flattener for different record types
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Mon, 11 Jul 2011 13:51:33 +0000 (09:51 -0400)]
Merge/rebase cleanup -- authority template by id is needed
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Lebbeous Fogle-Weekley [Tue, 5 Jul 2011 19:50:20 +0000 (15:50 -0400)]
Make search by authority ID actually work on the first try
and also show an odd number of authority record results so that
there can actually be a "middle."
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Tue, 5 Jul 2011 18:22:38 +0000 (14:22 -0400)]
Provide sorters for browse axes
Make the default bib result sorter 'titlesort' for every
browse axis, which is what makes sense if you think about it.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Thu, 30 Jun 2011 21:25:06 +0000 (17:25 -0400)]
Create facet for going right to records linked to a given authority record
Still need an upgrade script, of course, but so does this whole branch
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Thu, 30 Jun 2011 20:54:35 +0000 (16:54 -0400)]
attempted to add sanity to paging, but not really there yet
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Thu, 30 Jun 2011 19:59:07 +0000 (15:59 -0400)]
Make linking to bib records work better by saying any format will do.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Wed, 29 Jun 2011 23:34:56 +0000 (19:34 -0400)]
working! with paging and linking to bibs, except:
... my new facet thingy doesn't seem to work. here's what I did
sql-wise:
INSERT INTO config.metabib_field (
id, field_class, name, label, xpath,
format, search_field, facet_field
) VALUES (
28, 'identifier',
'authority_id', 'Authority Record ID',
'//marc:datafield/marc:subfield[@code=''0'']', 'marcxml', false, true
);
INSERT INTO config.metabib_field_index_norm_map (field, norm)
VALUES (28, 5);
Yet after re-ingesting my bibs I have nothing new in
metabib.facet_entry. So the "show related bibliographic holdings" links
don't quite work (I believe they /would/, though, if I had the facet
thingy right).
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Wed, 29 Jun 2011 19:45:40 +0000 (15:45 -0400)]
Finally starting to get somewhere: record display
Record display kind of works. Need paging and links to bibs.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Tue, 28 Jun 2011 19:28:40 +0000 (15:28 -0400)]
Closer to being able to get authority control set from thesaurus code
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Tue, 28 Jun 2011 15:49:17 +0000 (11:49 -0400)]
towards using fielder in openils.AuthorityControlSet
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Tue, 28 Jun 2011 14:43:54 +0000 (10:43 -0400)]
working on an auth browser
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Mike Rylander [Mon, 27 Jun 2011 14:12:33 +0000 (10:12 -0400)]
Add function to set Control Set by Thesaurus Code
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Mon, 27 Jun 2011 14:03:34 +0000 (10:03 -0400)]
Normalize fixed field names to OCLC values where they exist (what catalogers are used to)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Lebbeous Fogle-Weekley [Thu, 23 Jun 2011 22:04:28 +0000 (18:04 -0400)]
config ui trivial improvements, scratching out a place for a browse UI
Lebbeous Fogle-Weekley [Wed, 22 Jun 2011 21:22:54 +0000 (17:22 -0400)]
Fix minor glitch when trying to create new authority fields
The Autogrid can handle empty arrays as values for acsaf.bib_fields and
acsaf.axis_maps, but can't handle undefined.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Wed, 22 Jun 2011 20:49:35 +0000 (16:49 -0400)]
Move the authority control set config interfaces back into conify
Really, that's where they make sense. And they're done.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Wed, 22 Jun 2011 20:25:59 +0000 (16:25 -0400)]
Axis-field map editor and editor for the axes themselves
The editor for the axes themselves is accessed directly from staff
client menu. Everything else is reached indirectly from the control set
editor.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Wed, 22 Jun 2011 18:04:14 +0000 (14:04 -0400)]
Add bib field editor. Also make all the editors written so far...
... for authority control sets-related objects do the right thing to
help users create/edit new child objects linked to the right parent
table without extra effort.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Wed, 22 Jun 2011 14:50:06 +0000 (10:50 -0400)]
Ability to return to specific authority.control_set or
to specific authority.control_set_authority_field from a child table.
Other improvements heading toward finishing authority control set config UI
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Tue, 21 Jun 2011 18:22:26 +0000 (14:22 -0400)]
Editor for authority fields
Due to time constraints (and AutoGrid limitations) a click-through UI
with separate pages for separate objects used by the new authority
control sets feature is necessary for now rather than a comprehensive
interface with multiple grids on the same page.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Lebbeous Fogle-Weekley [Tue, 21 Jun 2011 18:08:55 +0000 (14:08 -0400)]
Thesauri editor
Lebbeous Fogle-Weekley [Tue, 21 Jun 2011 16:43:52 +0000 (12:43 -0400)]
moving stuff where it goes
Lebbeous Fogle-Weekley [Tue, 21 Jun 2011 14:27:11 +0000 (10:27 -0400)]
conify type interfaces in progress.
not completely deleting old unfinished ones yet; there are probably
things to salvage
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Mike Rylander [Wed, 15 Jun 2011 19:45:10 +0000 (15:45 -0400)]
Put thesaurus-z handling back in
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Fri, 3 Jun 2011 14:29:52 +0000 (10:29 -0400)]
Beginnings of the config interfaces
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Tue, 31 May 2011 03:49:18 +0000 (23:49 -0400)]
Move RULE down so that the named tables actually exist
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Mon, 30 May 2011 00:30:27 +0000 (20:30 -0400)]
Switch authority startwith index back to the pre-checking-deletedness version
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Sat, 28 May 2011 16:23:24 +0000 (12:23 -0400)]
correcting template generation; filter out subfields that we do not use in the authority record
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Sat, 28 May 2011 15:27:04 +0000 (11:27 -0400)]
Minor bug fixes (alignment of fm classes, etc); Do not check deletedness, just remove the afr data upon "delete" of an authority; We still need the non-tpo index on afr.value
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Sat, 28 May 2011 01:12:18 +0000 (21:12 -0400)]
Heading normalization bug; Use CStoreEditor, not Editor; syntax-y bugs
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Fri, 27 May 2011 20:38:43 +0000 (16:38 -0400)]
General bug fixes and formatting cleanup
Signed-off-by: Mike Rylander <mrylander@gmail.com>
berick [Thu, 26 May 2011 19:34:07 +0000 (15:34 -0400)]
Repaired syntax errors in SuperCat.pm
Signed-off-by: berick <berick@esilibrary.com>
berick [Thu, 26 May 2011 19:13:48 +0000 (15:13 -0400)]
Repaired syntax errors and thinkos
* Syntax in AuthorityControlSet.js
* Protect against empty kwargs hash
* marcedit.js fixes: Load dojo class before use; Load in my_init(), before which dojo is not defined
Signed-off-by: berick <berick@esilibrary.com>
berick [Thu, 26 May 2011 18:44:48 +0000 (14:44 -0400)]
Protect against empty lists of linked bib searches
Instead of returning undef when passed an empty list of bibs, always
return an array from
open-ils.cat.authority.records.count_linked_bibs
Apart from consistency, this prevents JS errors in the Manage
Authorities UI.
Signed-off-by: berick <berick@esilibrary.com>
Mike Rylander [Mon, 16 May 2011 18:00:04 +0000 (14:00 -0400)]
SQL typo cleanup
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Thu, 12 May 2011 15:10:42 +0000 (11:10 -0400)]
Use the configured set of authority browse axes in the authority browse interfaces
Mike Rylander [Thu, 12 May 2011 14:18:58 +0000 (10:18 -0400)]
Use the new singular methods that accept an axis as a param for browse and startwith
Mike Rylander [Thu, 12 May 2011 14:18:15 +0000 (10:18 -0400)]
Add method for returning valid authority browse axes
Mike Rylander [Thu, 12 May 2011 00:28:39 +0000 (20:28 -0400)]
Browse axis based browse and startswith methods; minor documentation corrections
Mike Rylander [Wed, 11 May 2011 23:31:36 +0000 (19:31 -0400)]
Use ACS utility functions instead of hard-wired mapping
Mike Rylander [Wed, 11 May 2011 23:31:15 +0000 (19:31 -0400)]
Fetch ACS stuff up front; enhance inter-object mapping per IDL; utility functions
Mike Rylander [Wed, 11 May 2011 23:30:05 +0000 (19:30 -0400)]
Add axis_maps virtual field to control set authority field
Mike Rylander [Wed, 11 May 2011 21:06:45 +0000 (17:06 -0400)]
Adding tables for browse axis mapping
Mike Rylander [Wed, 11 May 2011 17:24:17 +0000 (13:24 -0400)]
Use MARC.FixedFields.setFixedField and validate by startwith search against simple_normalized_heading
Mike Rylander [Wed, 11 May 2011 16:54:16 +0000 (12:54 -0400)]
Function to find authority records matching a MARC field
Mike Rylander [Wed, 11 May 2011 16:52:04 +0000 (12:52 -0400)]
adjust parameters and documentation note
Mike Rylander [Wed, 11 May 2011 16:31:13 +0000 (12:31 -0400)]
use the new transformed-value starwith operator
Mike Rylander [Wed, 11 May 2011 16:30:08 +0000 (12:30 -0400)]
add a special startwith op for use with transformed values (cannot do it another way currently)
Mike Rylander [Mon, 9 May 2011 23:36:12 +0000 (19:36 -0400)]
Methods for searching by marcxml, constrained (or not) by control set
Mike Rylander [Mon, 9 May 2011 22:48:53 +0000 (18:48 -0400)]
Add an index using authority.simple_normalize_heading for search
Mike Rylander [Mon, 9 May 2011 22:19:19 +0000 (18:19 -0400)]
Variant of authority.normalize_heading which ignores thesaurus for comparing slim auth records generated from bibs
Mike Rylander [Mon, 9 May 2011 20:35:30 +0000 (16:35 -0400)]
functions for converting bibs to authorities based on ACS
Mike Rylander [Mon, 9 May 2011 19:17:41 +0000 (15:17 -0400)]
Move the AuthorityControlSet module into openils -- it loads data from the server
Mike Rylander [Mon, 9 May 2011 19:15:41 +0000 (15:15 -0400)]
Utility methods
Mike Rylander [Mon, 9 May 2011 19:13:41 +0000 (15:13 -0400)]
Bug fixes; Add a method for setting fixed fields; Set the Type FF when rtype=AUT
Mike Rylander [Mon, 9 May 2011 19:12:04 +0000 (15:12 -0400)]
Move the function to before its first use
Mike Rylander [Mon, 9 May 2011 18:21:17 +0000 (14:21 -0400)]
Only load control sets once, set the default to the first (for now... YAOUS later)
Mike Rylander [Fri, 6 May 2011 20:53:17 +0000 (16:53 -0400)]
Add some logic for fetching stored controlsets and switching amongst them
Mike Rylander [Fri, 6 May 2011 19:29:38 +0000 (15:29 -0400)]
Initial move of fixed-field manipulation out to the MARC Dojo module
Mike Rylander [Fri, 6 May 2011 19:29:07 +0000 (15:29 -0400)]
bring backend version up to date with the marc-editor embedded version
Mike Rylander [Fri, 6 May 2011 19:28:00 +0000 (15:28 -0400)]
Stub of a new Dojo module for manipulating ACSs
Mike Rylander [Fri, 6 May 2011 16:58:17 +0000 (12:58 -0400)]
Use unicode escape instead of raw bytes, for ease of maintenance
Mike Rylander [Thu, 21 Apr 2011 16:36:05 +0000 (12:36 -0400)]
replace the perlish authority.normalize_heading with a nearly-equiv plpgsql version that understands control sets
Mike Rylander [Mon, 11 Apr 2011 15:59:39 +0000 (11:59 -0400)]
Fix XPath in tracing links view; Replace authority overlay template building function with a PLPGSQL + SQL/XML version that is control set aware
Mike Rylander [Mon, 11 Apr 2011 15:57:55 +0000 (11:57 -0400)]
Add See From tracings to LoC authority control set
Mike Rylander [Mon, 11 Apr 2011 14:24:41 +0000 (10:24 -0400)]
Use control sets to drive the tracing links view
Mike Rylander [Mon, 11 Apr 2011 13:23:51 +0000 (09:23 -0400)]
Add pcrud controller to control set classes; realign IDL to match tables
Mike Rylander [Mon, 11 Apr 2011 13:16:58 +0000 (09:16 -0400)]
Trigger to map from thesaurus to control set
Mike Rylander [Mon, 11 Apr 2011 01:33:40 +0000 (21:33 -0400)]
Actually use authority.rec_descriptor, populating it with RecStat, ELvl and Subj (aka Thesaurus)
Mike Rylander [Mon, 4 Apr 2011 20:12:45 +0000 (16:12 -0400)]
figure out non-authoritive fields to search based on the main_entry field on subordinate fields
Mike Rylander [Sun, 3 Apr 2011 22:49:08 +0000 (18:49 -0400)]
Seed data for Authority Control Sets -- LoC
Mike Rylander [Sun, 3 Apr 2011 22:48:30 +0000 (18:48 -0400)]
Reworking tables a bit to include subfield list on controlling tags, specify hierarchy of tags (main-entry pointers for non-main fields), and remove unneeded name/description on bib fields
Mike Rylander [Sun, 3 Apr 2011 19:17:15 +0000 (15:17 -0400)]
Fieldmapper additions for Authority Control Set tables/classes
Mike Rylander [Sun, 3 Apr 2011 14:19:38 +0000 (10:19 -0400)]
Initial schema changes for Authority Control Sets; some whitespace cleanup
Mike Rylander [Wed, 6 Jul 2011 20:34:41 +0000 (16:34 -0400)]
Correct CDBI field name on biblio::peer_bib_copy_map
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Bill Erickson [Thu, 7 Jul 2011 18:08:28 +0000 (14:08 -0400)]
Ignore part-mapped copies for mr/title/volume holds
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Mike Rylander [Fri, 24 Jun 2011 18:53:50 +0000 (14:53 -0400)]
Add Class::DBI linking for monograph parts (and some for conjoined items AKA peer bibs)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Mike Rylander [Fri, 24 Jun 2011 18:54:31 +0000 (14:54 -0400)]
Correct a documentation comment
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Mike Rylander [Fri, 24 Jun 2011 18:55:49 +0000 (14:55 -0400)]
Filter out copies that have a monograph part designator when the hold is a non-P hold
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Bill Erickson [Tue, 28 Jun 2011 18:51:43 +0000 (14:51 -0400)]
Suggest parts selection on failed parts-capable hold
When a title has copy parts and the user does not select a specific part
for the hold, treat it as a regular title hold. If the title hold
fails, suggest to the user that he/she should select a specific part,
since that opens the door to a new set of potentially capturable copies,
which allow the hold to be successfully placed.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Bill Erickson [Thu, 7 Jul 2011 18:24:45 +0000 (14:24 -0400)]
Stamped DB version for hold_pull_list_template w/ parts
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Jason Etheridge [Wed, 6 Jul 2011 16:05:58 +0000 (12:05 -0400)]
Add "parts" to Print Full Pull List and Print Full Pull List (Alternate strategy)
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Mike Rylander [Thu, 7 Jul 2011 17:06:48 +0000 (13:06 -0400)]
Stamping upgrade version number for staff_search_find_no_copies branch
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Thomas Berezansky [Wed, 6 Jul 2011 16:54:42 +0000 (12:54 -0400)]
Unwrapped upgrade script
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Thomas Berezansky [Wed, 6 Jul 2011 16:54:03 +0000 (12:54 -0400)]
Allow staff search to find bibs sans copies
AKA, no call number OR no call numbers with copies
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Jason Etheridge [Fri, 17 Jun 2011 05:27:11 +0000 (01:27 -0400)]
in unified vol/copy editor disallow editing of item attributes when no copies except via templates
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Bill Erickson [Wed, 6 Jul 2011 19:21:58 +0000 (15:21 -0400)]
Vandelay matching, quality, error reporting, and queue export additions
* Configuration of direct MARC field comparisons of incoming record to existing records
* Support for nested boolean MARC comparison expressions: e.g. 100a and (020a or 024a)
* Support for field-level match scores to create an overall per-record match score
* Support for best match merge/overlay
* Support for field-level quality metrics to determine overall record quality
* Support for enforcing a minimum quality ratio on import to prevent import of lower quality records
* Support for capturing and reporting record and item import failures.
* Support for exporting record queues and items as print, CSV, and email
* Various small display fixes and cleanup
Signed-off-by: Bill Erickson <berick@esilibrary.com>