1 Evergreen 2.6 Release Notes
2 ===========================
14 Evergreen 2.5 introduced the `Library information URL` library setting to
15 associate a web page with a library. If set, this value was used as the target
16 of the library link in the copy table on the record details page. However, the
17 new default behavior is to link to the automatically generated TPAC library
18 page, which in turn links to the external web site.
20 If you wish to maintain the previous behavior, you can set the `Use external
21 library information URL` library setting to `True`.
24 Disable Autosuggest by Default
25 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
26 As described in https://bugs.launchpad.net/evergreen/+bug/1187993, the
27 community is aware of ongoing accessibility issues caused through use of
28 the autosuggest feature of the Evergreen catalog. The decision has been
29 made to disable autosuggest by default for new installations. Existing sites
30 are cautioned to take note of this change and decide for themselves whether
33 It is possible to disable the autosuggest feature via a global flag. Look in
34 `Admin -> Server Administration -> Global Flags`, find the `OPAC: Show
35 auto-completing suggestions dialog...` setting, then edit and uncheck the
43 Removal of open-ils.ingest service
44 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
45 The open-ils.ingest service is no longer required, and has been
48 You should update your opensrf.xml file to remove references to
49 open-ils.ingest, and you may also wish to remove the
50 OpenILS/Application/Ingest.pm file from your Perl @INC path.
52 In opensrf.xml, remove the entire <open-ils.ingest> element from the
53 <apps> element, and remove <appname>open-ils.ingest</appname> from
54 any <activeapps> elements where it is present.
56 If you have the perldoc command installed, you can use the following
57 command to locate the path on disk of the Ingest.pm file, which is
58 no longer required and can be removed:
61 -----------------------------------------------------------------
62 perldoc -l OpenILS::Application::Ingest
63 -----------------------------------------------------------------
66 Reporter view 'classic_current_circ' dropped
67 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
68 As part of the DB upgrade, the reporter view
69 "reporter.classic_current_circ" was dropped. If you previously
70 installed this view from example.reporter-extension.sql, it will
71 have to be re-installed by executing the "CREATE OR REPLACE
72 VIEW reporter.classic_current_circ AS..." SQL once again from
73 example.reporter-extension.sql.
83 Add granular settings for requiring staff initials for notes
84 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
85 There are now three separate library settings for controlling whether staff
86 are required to input their initials when creating different types of notes.
87 See new library settings below.
89 Any pre-existing library setting for requiring staff initials are preserved
90 during the upgrade process. After upgrading, you may choose to change the set
91 behavior for any of the three new settings.
95 * Require staff initials for entry/edit of patron standing penalties and messages. (ui.staff.require_initials.patron_standing_penalty)
96 * Require staff initials for entry/edit of patron notes. (ui.staff.require_initials.patron_info_notes)
97 * Require staff initials for entry/edit of copy notes. (ui.staff.require_initials.copy_notes)
103 Enhancements to Evergreen's MARC Editor Concerning Fixed Fields
104 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
105 This work is a combination of two features. One provides suggested
106 values in a right-click context menus for fixed field values based on
107 the 'type' of the record being edited. The other provides a wizard to
108 help specifically with the Physical Characteristics of the record, i.e.
111 Right-Click Context Menus
112 +++++++++++++++++++++++++
113 Users will be able to right-click on the value control for fixed fields
114 in the MARC Editor, and Evergreen will provide a menu from which the
115 user can select a possible value. This will work for fixed fields where
116 Evergreen already contains information from the Library of Congress's
121 image::media/ffer-right-click.png["Right-clicking the BLvl field"]
123 Evergreen already comes loaded with information from the Library of
124 Congress's MARC 21 standard on possible values for some fixed fields.
126 The following table shows which fixed fields for which 'Record Types'
127 have values already loaded into Evergreen.
129 ---------------------------------------------------------
131 Fixed Field | Record Types
132 -------------+-----------------------------------
133 Audn | {BKS,COM,REC,SCO,SER,VIS}
134 BLvl | {BKS,COM,MAP,MIX,REC,SCO,SER,VIS}
135 Form | {BKS,MAP,MIX,REC,SCO,SER,VIS}
136 Lang | {BKS,COM,MAP,MIX,REC,SCO,SER,VIS}
138 Type | {BKS,COM,MAP,MIX,REC,SCO,SER,VIS}
141 ---------------------------------------------------------
143 A 'Record Type' is itself a combination of the 'Type of Record' (fixed
144 field name: Type) and 'Bibliographic Level' (fixed field name: BLvl)
145 elements of the MARC leader (positions 06 and 07 respectively). You can
146 see a record's Record Type in the MARC Editor as shown in
151 image::media/ffer-record-type.png["This Record Type is REC"]
153 A user may add values to these fixed fields as well as to other fixed
154 fields through the MARC Coded Value Maps interface found under the Admin
155 -> Server Administration menu in the staff client. These are grouped by
156 Record Attribute Types (a superset of fixed fields) which have labels
157 such as 'Alph', 'Biog', 'Videorecording format', and 'Language'.
159 From LOC Fixed Fields documentation, 'Alph' is 'Original alphabet or
160 script of title', 'Biog' is 'Biography', 'Videorecording format' is from
161 the 007 field, 'Language' is positions 35-37 of the 008, and so on.
162 Other Record Attribute Types such as 'Author' are, of course, not fixed
165 When users add new values here, the right-click context menus of the
166 fixed fields in the MARC Editor will include those values.
168 All values added for any fixed field in the Coded Value Map will display
169 for any 'Record Type' that uses that fixed field.
171 Users of the MARC Editor always retain the option of leaving a fixed
172 field blank, entering the special values # or |, or entering a value not
173 provided by the right-click context menu.
175 Physical Characteristics Wizard
176 +++++++++++++++++++++++++++++++
177 By right-clicking on an existing or new 007 field in the MARC Editor, users
178 will be able to enter a wizard that leads them step-by-step through the
179 positions in that 007 field, telling them the significance of the current
180 position and providing a drop-down list of possible values.
182 Launching the Physical Characteristics Wizard:
184 image::media/ffer-open-wizard.png["Launching the Physical Characteristics Wizard"]
186 Choosing the Category of Material:
188 image::media/ffer-007-00.png["Choosing the Category of Material"]
190 Choosing a value for a later position:
192 image::media/ffer-007-smd.png["Choosing a value for a later position"]
195 marc_export script replacement
196 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
197 The `/openils/bin/marc_export` script is completely rewritten. This
198 new version accepts all of the same command line options as the old
199 version as well as some new options.
201 The rewritten `marc_export` talks directly to your Evergreen database
202 and is a great deal faster than the previous version. Because the new
203 script talks directly to the database, it needs to know how to
204 connect. To facilitate this, a new option, `--store`, was added that
205 allows the user to specify one of three Evergreen storage backends to
206 use when exporting records. The valid choices are `reporter`,
207 `cstore`, or `storage`. The default of `reporter` should work in most
208 cases, but if you do have a separate reporter database and you know
209 you want to talk directly to your main production database, then you
210 will probably want to choose either `cstore` or `storage`.
212 In addition to the `--store` option, a `--since` option is also added
213 so that you can specify output of an update file of records changed,
214 added, and/or deleted since the given date. The `--since` option uses
215 a fairly flexible date parser and can accept a wide range of date
216 formats including ISO 8601, man common date formats such as M/D/Y
217 (common in the US) or D/Mon/Y (with the first 3 characters or more of
218 the month spelled out), as well as several less common date formats.
219 Special date strings such as `yesterday`, `today`, `yesterday week`,
220 and `today week` are also supported. For more information see the
221 VALID DATE FORMATS section of the `Date::Manip::Date` man page.
222 Available online here:
224 http://search.cpan.org/~sbeck/Date-Manip-6.42/lib/Date/Manip/Date.pod#VALID_DATE_FORMATS
226 There is one final difference between the new script and the old
227 `marc_export`. The new script does not output progress as it
228 executes. Many of the statistics that the script reported are not
229 readily available to the new script. It was deemed better to just not
230 output any progress rather than to output something different from the
231 old program. If your scripts parse the output from `marc_export`,
232 they will need to modified not to expect any.
238 Lost Item Billing: New Min/Max Price Settings
239 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
240 When an item is marked lost, the user is typically billed for the item.
241 In Evergreen, they can either be charged the amount recorded in the item
242 object, or if that value is blank (or zero), charged a default price
243 (controlled by settings).
245 In addition to these existing settings, now we can accommodate a range of
246 prices by saying the patron should be billed at least 'X' and not more
247 than 'Y'. This also allows you to effectively set a fixed price for all
248 lost items by setting min and max to the same amount.
250 New Org Unit Settings
251 +++++++++++++++++++++
252 * Minimum Item Price: circ.min_item_price
253 * Maximum Item Price: circ.max_item_price
257 * UPDATE_ORG_UNIT_SETTING.circ.min_item_price
258 * UPDATE_ORG_UNIT_SETTING.circ.max_item_price
261 User Editor: "Update Expire Date" button
262 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
263 A new button labeled "Update Expire Date" is added in the user
264 editor next to expire date field. This button can be used to
265 re-calculate the user's expire date based on the current profile's
266 permission interval and today's date.
268 This is similar to how the expire date is populated when creating a
269 new user, or when changing the profile group.
271 This button simplifies the process of "renewing" a user, by
272 eliminating the requirement that staff manually enter a new expire
275 A button is used here so that the updating of the expire date
276 remains an intentional process, not one that happens upon any edit.
282 Composite Record Attributes
283 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
284 With this feature we create an abstraction on top of the Record Attribute
285 infrastructure to allow the aggregation of multiple, cross-Attribute values
286 under a single search filter value, accessible through new, dynamic filters.
288 Each QueryParser filter will be created by the addition of a Composite Record
289 Attribute Definition. For instance, one may wish to create a Composite Record
290 Attribute Definition for an abstract "Item Type" interface component that
291 uses information from the item_type, vr_format, bib_level and item_form
292 Record Attribute Definitions, with each Composite Record Attribute Value
293 having a different combination of Record Attribute Values from some or all of
294 these Record Attribute Definitions. In this way, as single interface
295 component might be presented as a dropdown with options such as "All Books",
296 "All video recordings", "DVDs", "VHS Tapes", "E-Books", "Audio Books" and
297 "Large Print Books". Of particular note are the "DVDs" and "VHS Tapes"
298 entries, which include information from Record Attribute Definitions
299 completely separate from the others. Additionally, the Composite Record
300 Attribute Values defined by this Composite Record Attribute Definition
301 can be used to drive behavioral logic, such as alternate icon display or
302 link generation, in upgrade-friendly template adjustments.
304 Included in this development is a replacement for the single-attribute
305 Format filter supplied for basic search. Instead, a Composite Attribute
306 is used to combine the values from Item Type, Item Form and Videorecording
307 Format in various ways that provide a more patron-friendly set of choices.
309 This new Format filter can be adjusted, or even replaced with a completely
310 local one, through configuration and without template adjustment.
314 Located URI visibility options
315 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
316 Before this, Evergreen restricted the visibility of bibliographic records
317 that make use of Located URIs in a way that attempts to model licensing
320 There now exists a global flag to allow sites the option of changing the
321 behaviour of Located URIs so that they act in a way analogous to copies
322 for visibility testing. When the opac.located_uri.act_as_copy global flag
323 is enabled, Located URIs will cause their containing bib records to become
324 visible in searches where the URI is in scope to either ancestors of the
325 search library, as before, or descendants of the search library, as copies
326 do. As before, if a preferred library is supplied by the user, it is
327 added to the list of visible org units to check.
329 Additionally, while the underlying UnAPI and supporting code was capable
330 of providing a reasonable and logical sort order for the Located URIs when
331 embedded as XML holdings elements, the client-facing UnAPI method was not
332 making use of that. It now does, and uses the same sorting algorithm as
336 Multi-valued Record Attributes and Controlled Record Attributes
337 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
338 Having identified common use cases and reasonable restrictions that can be
339 placed on the feature set, we have extended the Record Attribute
340 infrastructure to support both the extraction and storage of all instances
341 of a defined Attribute found within a bibliographic record, as well as
342 provide new and more powerful indexing of existing data, in several ways.
344 Record Attributes can now be defined by configuration as either single-valued
345 or multi-valued. For any Attribute configured as single-valued, only the
346 first value extracted from a record will be stored. This configuration
347 parameter and restriction is in place to support potential query
348 optimizations based on foreknowledge of whether a given Attribute is multi-
351 Record Attributes will be defined by configuration as either controlled or
352 uncontrolled. A controlled Record Attribute is one that has entries in the
353 Coded Value Map infrastructure specifying the valid values the record may
354 carry for this attribute. If defined as a controlled Attribute, any unknown
355 values extracted from a record will be ignored. Uncontrolled Attributes,
356 however, may contain any value. This configuration parameter and restriction
357 also supports potential query optimization.
359 We store uncontrolled attribute values in a new table with a monotonically
360 decreasing ID sequence, separating it from controlled values, reducing storage
361 requirements by retaining only unique values, and making lookup faster.
365 * A Record Attribute's values must match Coded Value Map entries if it is to be a Controlled Attribute. Coded Value Map control is indicated by a new "controlled" boolean on the config.record_attr_definition table.
366 * Record Attributes must "opt in" to multi-valued-ness. Record Attributes will opt in via a new "multi" boolean on config.record_attr_definition; this restriction enforces site config requirements by being explicit about the definition of "multi" fields.
367 * If controlled but not opt'd in to multi-mode, only the first value will be recorded but the new search mechanism will be used.
368 * Only single-valued Record Attributes will be available for use by the system as Sort Axes.
369 * Only controlled Record Attributes will be available for use by the TPAC as dynamically generated filter UI components, such as filter dropdowns or multi-selects.
371 New External Dependency
372 +++++++++++++++++++++++
373 This new feature requires the addition of the intarray extension to Postgres.
374 This is a stock extension available on most linux distributions via the same
375 package as the already-required plperl extension.
378 Restore OpenSearch Support
379 ^^^^^^^^^^^^^^^^^^^^^^^^^^
380 Restore previously held functionality from JSPAC to support OpenSearch in TPAC.
381 This allows users to easily add the Evergreen search engine to their browser's
382 built-in set of search engines.
385 Accepting payments with Stripe
386 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
387 Stripe is a payment processing service that lets
388 sites take credit card payments without payment card information ever
389 touching the sites' own servers.
391 NOTE: Using Stripe as a payment processor means that clients *must*
392 have Javascript enabled in order to submit fine payments through your
397 The following settings need to be set at the appropriate org level for
398 sites wanting to use Stripe.
400 * "Allow Credit Card Payments" (should be 'true')
402 credit.payments.allow
404 * "Enable Stripe payments" (should be 'true')
406 credit.processor.stripe.enabled
408 * "Stripe publishable key" (value provided by Stripe)
410 credit.processor.stripe.pubkey
412 * "Stripe secret key" (value provided by Stripe)
414 credit.processor.stripe.secretkey
416 * "Name default credit processor" (should be 'Stripe')
418 credit.processor.default
423 This feature adds one web page per library in the system to the TPAC at
424 `http://hostname/eg/opac/library/<SHORTNAME>` and
425 `http://hostname/eg/opac/library/<ID>`. The pages publish the following
426 information from Evergreen (if available):
428 * Name of the library
429 * Link to the library web site (from `Library Information URL` library setting)
434 * Link to parent library (if applicable)
436 Library pages are linked from the copy table on the record details page.
440 The library web pages publish schema.org structured data, which can enable
441 search engines and other systems to better understand your libraries and their
445 TPAC Metarecord Search and Holds
446 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
447 This feature adds support for searching and placing holds against
452 In the top search bar and in the advanced search page, there is a new
453 search modifier labeled "Group Formats and Editions". When selected,
454 searches are performed against metarecords and metarecords are shown
457 For each metarecord, format icons for all constituent records are shown.
458 When a use clicks on a metarecord, if the metarecord has multiple
459 constituent records, the user is taken to the constituent records
460 list. Similarly, when a metarecord only has one constituent record,
461 the user is directed to the record detail page for the constituent
466 Clicking the place hold link from the metarecord results page shows
467 the available formats and languages for the metarecord, allowing
468 the user to limit the scope of the hold. Non-metarecord holds now
469 get a new "Advanced Holds Options" link which allows user to promote
470 a title hold to a metarecord hold, thus providing access
471 to the formats / editions selector, before the hold is placed.
473 In the My Account holds list, icons for all selected formats are
474 displayed in the Format columns for the hold. When editing a
475 metarecord hold, users may modify the desired formats and languages.
479 Admins may disable this feature by un-commenting the "metarecord.disabled"
480 attribute in config.tt2
483 Web Content Accessibility Guidelines (WCAG) Compliance
484 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
485 To make the catalog more accessible to users with a range of disabilities,
486 including blindness and low vision, the catalog has been revised to better
487 comply with the Web Content Accessibility Guidelines (WCAG) 2.0. These
488 revisions target level "AA" of compliance.
490 For more information on WCAG, see http://www.w3.org/WAI/intro/wcag
496 IMPORTANT SECURITY INFORMATION
497 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
498 A serious security flaw that allows unauthorized remote access to
499 organizational unit settings is fixed in the following releases of
500 Evergreen: 2.5.9, 2.6.7, and 2.7.4. All prior releases of Evergreen
501 are vulnerable to exploitation of this flaw to reveal sensitive system
502 information. If you are running a vulnerable release of Evergreen you
503 are *strongly* encouraged to upgrade to a non-vulnerable release as
506 Set resource limits for Clark Kent
507 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
508 Several parameters are now available for the reporter daemon process
509 (`clark-kent.pl`) to control resource usage. These can be used to
510 reduce the chances that a malformed report can cause indigestion
511 on a database or reports server. The new parameters, which can be
512 set in `opensrf.xml` or as command-line switches for `clark-kent.pl` are
514 * `//reporter/setup/statement_timeout` / `--statement-timeout`
516 Number of minutes to allow a report's underlying SQL query
517 to run before it gets cancelled. Default value is
518 60 minutes. If a report's query gets cancelled, the
519 error_text value will be set to a valid that indicates that
520 the allowed time was exceeded.
522 * `//reporter/setup/max_rows_for_charts` / `--max-rows-for-charts`
524 Number of rows permitted in the query's output before
525 Clark Kent refuses to attempt to draw a graph. Default
528 * `//reporter/setup/resultset_limit` / `--resultset-limit`
530 If set, truncates the report's output to the specified
531 number of hits. Note that it will not be apparent
532 to a staff user if the report's output has been
533 truncated. Default value is unlimited.
535 The report concurrency (i.e., the number of reports that Clark
536 Kent will run in parallel) can now also be controlled via
537 the `opensrf.xml` setting `//reporter/setup/parallel`.
541 The Evergreen project would like to acknowledge the following
542 organizations who commissioned developments in this release of
545 * Butler Public Library, IN, USA
546 * British Columbia Libraries Cooperative
547 * Carnegie Public Library of Steuben County, IN, USA
548 * Centerville-Center Township Public Library, IN, USA
549 * Flora Public Library, IN, USA
550 * Hagerstown - Jefferson Township Library, IN, USA
551 * Howe Library, Hanover, NH, USA
552 * Massachusetts Library Network Cooperative
553 * Newton County Public Library, IN, USA
554 * Noble County Public Library, IN, USA
555 * Natural Resources Canada
556 * North of Boston Library Exchange
557 * Perry County Public Library, IN, USA
558 * Plainfield-Guilford Township Public Library, IN, USA
559 * Rodgers Memorial Library, Hudson, NH, USA
561 * Union County Public Library, IN, USA
562 * Westfield Washington Public Library, IN, USA
564 We would also like to thank the following individuals who contributed
565 code and documentations patches to this release of Evergreen:
572 * Lebbeous Fogle-Weekley
585 We also thank the following organizations whose employees contributed
588 * Berklee College of Music
591 * Equinox Software, Inc.
592 * Georgia Public Library Service
593 * Indiana State Library
594 * Laurentian University
595 * Merrimack Valley Library Consortium
596 * Pohjois-Karjalan Tietotekniikkakeskus Oy
597 * Saint Louis Christian College
598 * Traverse Area District Library
600 We regret any omissions. If a contributor has been inadvertently
601 missed, please open a bug at http://bugs.launchpad.net/evergreen/