]> git.evergreen-ils.org Git - Evergreen.git/blob - docs/RELEASE_NOTES_3_7.adoc
docs: more tweaks to 3.7 release notes
[Evergreen.git] / docs / RELEASE_NOTES_3_7.adoc
1 Evergreen 3.7-beta Release Notes
2 ================================
3 :toc:
4 :numbered:
5
6 Upgrade notes
7 -------------
8
9 New Seed Data
10 ~~~~~~~~~~~~~
11
12 New Permissions
13 ^^^^^^^^^^^^^^^
14
15 * Administer geographic location services (`ADMIN_GEOLOCATION_SERVICES`)
16 * Administer library groups (`ADMIN_LIBRARY_GROUPS`)
17 * Manage batch (subscription) hold events (`MANAGE_HOLD_GROUPS`)
18 * Modify patron SSO settings (`SSO_ADMIN`)
19 * View geographic location services (`VIEW_GEOLOCATION_SERVICES`)
20
21 New Global Flags
22 ^^^^^^^^^^^^^^^^
23
24 * Block the ability of expired user with the STAFF_LOGIN permission to log into Evergreen (`auth.block_expired_staff_login`)
25 * Offer use of geographic location services in the public catalog (`opac.use_geolocation`)
26
27 New Internal Flags
28 ^^^^^^^^^^^^^^^^^^
29
30 * Maximum search result count at which spelling suggestions may be offered (`opac.did_you_mean.low_result_threshold`)
31
32 New Library Settings
33 ^^^^^^^^^^^^^^^^^^^^
34
35 * Allow both Shibboleth and native OPAC authentication (`opac.login.shib_sso.allow_native`)
36 * Allow renewal request if renewal recipient privileges have expired (`circ.renew.expired_patron_allow`)
37 * Enable Holdings Sort by Geographic Proximity ('opac.holdings_sort_by_geographic_proximity`)
38 * Enable Shibboleth SSO for the OPAC (`opac.login.shib_sso.enable`)
39 * Evergreen SSO matchpoint (`opac.login.shib_sso.evergreen_matchpoint`)
40 * Geographic Location Service to use for Addresses (`opac.geographic_location_service_for_address`)
41 * Keyboard distance score weighting in OPAC spelling suggestions (`search.symspell.keyboard_distance.weight`)
42 * Log out of the Shibboleth IdP (`opac.login.shib_sso.logout`)
43 * Minimum required uses of a spelling suggestions that may be offered (`search.symspell.min_suggestion_use_threshold`)
44 * Pg_trgm score weighting in OPAC spelling suggestions (`search.symspell.pg_trgm.weight`)
45 * Randomize group hold order (`holds.subscription.randomize`)
46 * Shibboleth SSO Entity ID (`opac.login.shib_sso.entityId`)
47 * Shibboleth SSO matchpoint (`opac.login.shib_sso.shib_matchpoint`)
48 * Show Geographic Proximity in Miles (`opac.geographic_proximity_in_miles`)
49 * Soundex score weighting in OPAC spelling suggestions (`search.symspell.soundex.weight`)
50
51 New Stock Action/Trigger Event Definitions
52 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
53
54 * Hold Group Hold Placed for Patron Email Notification
55
56 New Features
57 ------------
58
59
60
61 Administration
62 ~~~~~~~~~~~~~~
63
64
65
66 Single Sign On (Shibboleth) OPAC integration
67 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
68
69 The Evergreen OPAC can now be used as a Service Provider (SP) in a
70 Single Sign On infrastructure.  This allows system administrators to
71 connect the Evergreen OPAC to an identity provider (IdP).  Such a scenario
72 offers significant usability improvements to patrons:
73
74 * They can use the same, IdP-provided login screen and credentials that they
75 use for other applications (SPs).
76 * If they have already logged into another participating application, when
77 they arrive at the Evergreen OPAC, they can be logged in without needing to
78 enter any credentials at all.
79 * Evergreen can be configured to offer a Single Sign-out service, where
80 logging out of the Evergreen OPAC will also log the user out of all other SPs.
81
82 It can also offer security benefits, if it enables a Shibboleth-enabled
83 Evergreen installation to move away from insecure autogenerated user passwords
84 (e.g. year of birth or last four digits of a phone number).
85
86 Different Org Units can use different IdPs.  This development also supports a
87 mix of Shibboleth and non-Shibboleth libraries.
88
89 Note that only the OPAC can be integrated with Shibboleth at this time; no such
90 support exists for the staff client, self-check, etc.
91
92 Also note that this development does not include automatic provisioning of
93 accounts.  At this time, matching accounts must already exist in Evergreen
94 for a patron to successfully authenticate into the OPAC via Single Sign On.
95
96 Installation
97 ++++++++++++
98
99 Installing and configuring Shibboleth support is a complex project.  In
100 broad strokes, the process includes:
101
102 . Installing Shibboleth and the Shibboleth Apache module (`apt install libapache2-mod-shib2` on Debian and Ubuntu)
103 . Configuring Shibboleth, including:
104   * Setting up a certificate
105   * assigning an Entity ID
106   * getting metadata about the IdP from the IdP (perhaps "locally maintained
107   metadata", where an XML file from the IdP is copied into place on your
108   Evergreen server)
109   * Understanding what attributes the IdP will provide about your users,
110   describing those in the `attribute-map.xml` file.
111 . Providing your Entity ID, information about possible bindings, and any
112 other requested information to the IdP administrator.  Much of this information
113 will be available at http://YOUR_EVERGREEN_DOMAIN/Shibboleth.sso/Metadata
114 . Configuring Apache, including:
115   * Enabling Shibboleth authentication in the `eg_vhost.conf` file
116   * (Optional) Using the new _sso_loc_ Apache variable to identify
117   which org unit should be used as the context location when fetching
118   Shibboleth-related library settings.
119 . As a user with the new `SSO_ADMIN` permission, configure Evergreen using
120 the Library Settings Editor, including:
121   * Enable Shibboleth SSO for the OPAC
122   * (Optional) Configure whether you will use SSO exclusively, or offer
123   patrons a choice between SSO and standard Evergreen authentication
124   * (Optional) Configure whether or not you will use Single Log Out
125   * (Optional) In scenarios where a single Evergreen installation is
126   connected to multiple IdPs, assign org units to the relevant IdPs,
127   referenced by the IdP's Entity Id.
128   * Of the attributes defined in `attribute-map.xml`, configure which one
129   should be used to match users in the Evergreen database.  This defaults
130   to uid.
131   * For the attribute you chose in the previous step, configure which
132   Evergreen field it should match against.  Options are usrname (default),
133   barcode, and email.
134
135 This https://www.youtube.com/watch?v=SvppXbpv-5k[video on the SAML protocol] can
136 be very helpful for introducing the basic concepts used in the installation and
137 configuration processes.
138
139
140
141
142 Architecture
143 ~~~~~~~~~~~~
144
145
146
147 Block Login of Expired Staff Accounts
148 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
149 Evergreen now has the ability to prevent staff users whose
150 accounts have expired from logging in. This is controlled
151 by the new global flag "auth.block_expired_staff_login", which
152 is not enabled by default. If that flag is turned on, accounts
153 that have the `STAFF_LOGIN` permission and whose expiration date
154 is in the past are prevented from logging into any Evergreen
155 interface, including the staff client, the public catalog, and SIP2.
156
157 It should be noted that ordinary patrons are allowed to log into
158 the public catalog if their circulation privileges have expired. This
159 feature prevents expired staff users from logging into the public catalog
160 (and all other Evergreen interfaces and APIs) outright in order to
161 prevent them from getting into the staff interface anyway by
162 creative use of Evergreen's authentication APIs.
163
164 Evergreen admins are advised to check the expiration status of staff
165 accounts before turning on the global flag, as otherwise it is
166 possible to lock staff users out unexpectedly. The following SQL
167 query will identify expired but otherwise un-deleted users that
168 would be blocked by turning on the flag:
169
170 [source,sql]
171 ----
172 SELECT DISTINCT usrname, expire_date
173 FROM actor.usr au, permission.usr_has_perm_at_all(id, 'STAFF_LOGIN')
174 WHERE active
175 AND NOT deleted
176 AND NOT barred
177 AND expire_date < NOW()
178 ----
179
180 Note that this query can take a long time to run in large databases
181 given the general way that it checks for users that have the
182 `STAFF_LOGIN` permission. Replacing the use of
183 `permission.usr_has_perm_at_all()` with a query on expired users
184 with profiles known to have the `STAFF_LOGIN` permission will
185 be much faster.
186
187
188
189
190 Migration From GIST to GIN Indexes for Full Text Search
191 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
192
193 Evergreen now uses GIN indexes for full text search in PostgreSQL.
194 GIN indexes offer better performance than GIST.  For more information
195 on the differences in the two index types, please refer to the
196 https://www.postgresql.org/docs/current/textsearch-indexes.html[PostgreSQL
197 documentation].
198
199 An upgrade script is provided as part of this migration.  If you
200 upgrade normally from a previous release of Evergreen, this upgrade
201 script should run as part of the upgrade process.  The migration
202 script recommends that you run a `VACUUM ANALYZE` in PostgreSQL on the
203 tables that had the indexes changed.  The migration process does not
204 do this for you, so you should do it as soon as is convenient after
205 the upgrade.
206
207 Updating Your Own Indexes
208 +++++++++++++++++++++++++
209
210 If you have added your own full text indexes of type GIST, and you
211 wish to migrate them to GIN, you may do so.  The following query, when
212 run in your Evergreen databsase after the migration from GIST to GIN,
213 will identify the remaining GIST indexes in your database:
214
215 [source,sql]
216 ----------------------------------------
217 SELECT schemaname, indexname
218 FROM pg_indexes
219 WHERE indexdef ~* 'gist';
220 ----------------------------------------
221
222 If the above query produces output, you can run the next query to
223 output a SQL script to migrate the remaining indexes from GIST to GIN:
224
225 [source,sql]
226 ----------------------------------------
227 SELECT 'DROP INDEX ' || schemaname || '.' || indexname || E';\n' ||
228        REGEXP_REPLACE(indexdef, 'gist', 'gin', 'i') || E';\n' ||
229        'VACUUM ANAlYZE ' || schemaname || '.' || tablename || ';'
230 FROM pg_indexes
231 WHERE indexdef ~* 'gist';
232 ----------------------------------------
233
234
235
236
237 Removal of Custom Dojo Build
238 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
239
240 Evergreen had a
241 https://wiki.evergreen-ils.org/doku.php?id=scratchpad:random_magic_spells#custom_dojo_build[method
242 of making a custom build of the Dojo JavaScript library].  Followiing
243 this procedure could improve the load times for the OPAC and other
244 interfaces that use Dojo.  However, very few sites took advantage of
245 this process or even knew of its existence.
246
247 As a part of the process, an `openils_dojo.js` file was built and
248 installed along with the other Dojo files.  Evergreen had many
249 references to load this optional file.  For the majority of sites that
250 did not use this custom Dojo process, this file did not exist.
251 Browsers would spend time and resources requesting this nonexistent
252 file.  This situation also contributed noise to the Apache logs with
253 the 404 errors from these requests.
254
255 In keeping with the goal of eliminating Dojo from Evergreen, all
256 references to `openils_dojo.js` have been removed from the OPAC and
257 other files.  The profile script required to make the custom Dojo
258 build has also been removed.
259
260
261
262
263
264 Cataloging
265 ~~~~~~~~~~
266
267
268
269 Czech language records in sample data
270 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
271
272 This release adds 7 Czech-language MARC records to the
273 sample data set (also known as Concerto data set).
274
275
276
277
278
279 Publisher Catalog Display Includes 264 Tag
280 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
281
282 Publisher values are now extracted for display from tags 260 OR 264.
283
284 Upgrade Notes
285 +++++++++++++
286
287 A partial reingest is required to extract the new publisher data for display.
288 This query may be long-running.
289
290 [source,sql]
291 --------------------------------------------------------------------------
292 WITH affected_bibs AS (
293     SELECT DISTINCT(bre.id) AS id
294     FROM biblio.record_entry bre
295     JOIN metabib.real_full_rec mrfr
296     ON (mrfr.record = bre.id AND mrfr.tag = '264')
297     WHERE NOT bre.deleted
298 )
299 SELECT metabib.reingest_metabib_field_entries(id, TRUE, FALSE, TRUE, TRUE)
300 FROM affected_bibs;
301 --------------------------------------------------------------------------
302
303
304
305
306
307 Circulation
308 ~~~~~~~~~~~
309
310
311
312 Hold Groups
313 ^^^^^^^^^^^
314
315 This feature allows staff to add multiple users to a named hold group
316 bucket and place title-level holds for a record for that entire set of users.
317 Users can be added to such a hold group bucket from either the patron
318 search result interface, via the Add to Bucket dropdown, or through a dedicated
319 Hold Group interface available from the Circulation menu.  Adding new
320 patrons to a hold group bucket will require staff have the PLACE_HOLD
321 permission.
322
323 Holds can be placed for the users in a hold group bucket either directly from
324 the normal staff-place hold interface in the embedded OPAC, or by supplying the
325 record ID within the hold group bucket interface.  In the latter case, the
326 list of users for which a hold was attempted but failed to be placed can be
327 downloaded by staff in order to address any placement issues.  Placing a
328 hold group bucket hold will requires staff have the MANAGE_HOLD_GROUPS
329 permission, which is new with this development.
330
331 In the event of a mistaken hold group hold, staff with the MANAGE_HOLD_GROUPS
332 permission will have the ability to cancel all unfulfilled holds created as
333 part of a hold group event.
334
335 A link to the title's hold interface is available from the list of hold group
336 events in the dedicated hold group interface.
337
338
339
340
341
342 Scan Item as Missing Pieces Angular Port
343 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
344 The 'Scan Item As Missing Pieces' interface is now an Angular interface.
345 The functionality is the same, but the interface displays more details
346 on the item in question (title/author/callnum) before proceeding with the 
347 missing pieces process.
348
349
350
351
352 Opt-In Setting for Overdue and Predue Emails
353 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
354 The "Receive Overdue and Courtesy Emails" user setting permits users to
355 control whether they receive email notifications about overdue items.
356
357 To use the setting, modify any action trigger event definitions which
358 send emails about overdue items, setting the "Opt In Setting" to
359 "circ.default_overdue_notices_enabled" and the "User Field" to "usr".
360 You can accomplish this by running the following query in your database:
361
362 ----
363 UPDATE action_trigger.event_definition
364 SET opt_in_setting = 'circ.default_overdue_notices_enabled',
365     usr_field = 'usr'
366 WHERE opt_in_setting IS NULL
367     AND hook = 'checkout.due'
368     AND reactor = 'SendEmail';
369 ----
370
371 Once this is done, the patron registration screen in the staff client
372 will show a "Receive Overdue and Courtesy Emails" checkbox, which will
373 be checked by default.  To ensure that existing patrons continue to
374 recieve email notifications, you will need to add the user setting to
375 their accounts, which you can do by running the following query in your
376 database:
377
378 ----
379 INSERT INTO actor.usr_setting (usr, name, value)
380 SELECT
381     id,
382     'circ.default_overdue_notices_enabled',
383     'true'
384 FROM actor.usr;
385 ----
386
387
388
389
390
391
392 Allow Circulation Renewal for Expired Patrons
393 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
394 The "Allow renewal request if renewal recipient privileges have
395 expired" organizational unit setting can be set to true to permit
396 expired patrons to renew circulations.  Allowing renewals for expired
397 patrons reduces the number of auto-renewal failures and assumes that a
398 patron with items out eligible for renewals has not been expired for
399 very long and that such patrons are likely to renew their privileges
400 in a timely manner.
401
402 The setting is referenced based on the current circulation library for
403 the renewal.  It takes into account the global flags for "Circ: Use
404 original circulation library on desk renewal instead of the
405 workstation library" and "Circ: Use original circulation library on
406 opac renewal instead of user home library."
407
408
409
410
411 OPAC
412 ~~~~
413
414
415
416 Consistent Ordering for Carousels
417 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
418 Carousel ordering is now stable and predictable:
419
420  * Newly Cataloged Item and Newest Items by Shelving Location carousels are ordered from most recently cataloged to least recently cataloged.
421  * Recently Returned Item carousels is ordered is from most recently returned to least recently returned.
422  * Top Circulated Items carousels is ordered is from most circulated to least circulated.
423  * Manual carousels (as of now, without the ability to adjust the position of items) are in the order they are added to the backing bucket.
424   ** Emptying and refilling the bucket allows reordering.
425
426
427
428
429
430 Default Public Catalog to the Bootstrap Skin
431 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
432 The public catalog now defaults to the Bootstrap skin rather than the
433 legacy TPAC skin.
434
435 Bootstrap is now the default in order to encourage more testing, but
436 users should be aware of the following 
437 https://bugs.launchpad.net/evergreen/+bugs?field.tag=bootstrap-blocker[issues];
438 certain specific functionality is available only in the TPAC skin.
439
440 The TPAC skin remains available for use, but current Evergreen users
441 should start actively considering migrating to the Bootstrap skin.
442
443 In order to continue to use the TPAC skin, comment out the following
444 line in `eg_vhost.conf`
445
446 [source,conf]
447 -------------------
448 PerlAddVar OILSWebTemplatePath "@localstatedir@/templates-bootstrap" # Comment this line out to use the legacy TPAC
449 -------------------
450
451
452
453
454 Did You Mean? Single word search suggestions
455 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
456 This feature is the first in the series to add native search suggestions
457 to the Evergreen search logic.  A significant portion of the code is
458 dedicated to infrastructure that will be used in later enhancements to
459 the functionality.
460
461 Overview
462 ++++++++
463 When searching the public or staff catalog in a single search class (title,
464 author, subject, series, identifier, or keyword) with a single search term
465 users can be presented with alternate search terms.  Depending on how the
466 instance has been configured, suggestions may be provided for only
467 misspelled words (as defined by existence in the bibliographic corpus),
468 terms that are spelled properly but occur very few times, or on every
469 single-term search.
470
471 Settings
472 ++++++++
473
474 The following new library settings control the behavior of the suggestions:
475
476 * Maximum search result count at which spelling suggestions may be offered
477 * Minimum required uses of a spelling suggestions that may be offered
478 * Maximum number of spelling suggestions that may be offered
479 * Pg_trgm score weighting in OPAC spelling suggestions
480 * Soundex score weighting in OPAC spelling suggestions
481 * QWERTY Keyboard similarity score weighting in OPAC spelling suggestions 
482
483 There are also two new internal flags:
484
485 * symspell.prefix_length
486 * symspell.max_edit_distance
487
488 Upgrading
489 +++++++++
490 This feature requires the addition of new Perl module dependencies.  Please
491 run the app server and database server dependency Makefiles before applying
492 the database and code updates.
493
494 At the end of the database upgrade script, the administrator is presented
495 with a set of instructions necessary to precompute the suggestion
496 dictionary based on the current bibliographic database.  The first half
497 of this procedure can be started even before the upgrade begins, as soon
498 as the Evergreen database is no longer accessible to users that might
499 cause changes to bibliographic records.  For very large instances, this
500 dictionary generation can take several hours and needs to be run on a
501 server with significant RAM and CPU resources. Please look at the upgrade
502 script before beginning an upgrade and plan this dictionary creation as
503 part of the overall upgrade procedure.
504
505 Given a server, such as a database server with 64G of RAM, you should
506 be able to run all six of the shell commands in parallel in screen
507 sessions or with a tool such as GNU parallel.
508
509 These commands invoke a script that will generate a class-specific sub-set
510 of the dictionary, and can be used to recreate the dictionary if
511 necessary in the future.
512
513
514
515
516
517 Sort Holdings by Geographical Proximity
518 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
519
520 This functionality integrates 3rd party geographic lookup services to allow patrons
521 to enter an address on the record details page in the OPAC and sort the holdings
522 for that record based on proximity of their circulating libraries to the entered
523 address. To support this, latitude and longitude coordinates may be associated with
524 each org unit. Care is given to not log or leak patron provided addresses or the
525 context in which they are used.
526
527 Requires the following Perl modules: `Geo::Coder::Free`, `Geo::Coder::Google`, and `Geo::Coder::OSM`
528
529 Configuration instructions:
530
531  . Register an account with a third party geographic location service and copy the API Key.
532  . Configure the Geographic Location Service (Server Administration > Geographic Location Service > New Geographic Location Service).
533  . Enable Global Flag by navigating to Server Administration → Global Flags and locating the `opac.use_geolocation` flag. (Any entry in the Value field will be ignored.)
534  . Enable Library Setting: Enable Holdings Sort by Geographic Proximity (set to True).
535  . Enable Library Setting: Geographic Location Service to use for Addresses (use the value from the Name field entered in the Geographic Location Services Configuration entry).
536  . Enable Library Setting: Show Geographic Proximity in Miles (if not set, it will default to kilometers).
537  . Set the geographic coordinates for each location by navigating to Server Administration > Organizational Units. Select the org unit, switch to the Physical Address subtab and either manually enter Latitude and Longitude values or use the Get Coordinate button. 
538
539 Two new permissions, VIEW_GEOLOCATION_SERVICES and ADMIN_GEOLOCATION_SERVICES, control viewing and editing values in the Geolocation Location Services interface. They are added to the System Administrator and Global Administrator permissions groups by default.
540
541
542 Library Groups
543 ^^^^^^^^^^^^^^
544 The Library Groups search feature revives a longstanding internal
545 concept in Evergreen called “Lassos,” which allows an administrator
546 to define a group of organizational units for searching outside of
547 the standard organizational unit hierarchy.
548
549 Use case examples include creating a group of law or science
550 libraries within a university consortium, or grouping all school
551 libraries together within a mixed school/public library consortium.
552
553 Searches can be restricted to a particular Library Group from the
554 library selector in the public catalog basic search page and from
555 the new "Where" selector on the advanced search page.
556
557 Restricting catalog searches by Library Group is available only
558 in the public catalog and "traditional" staff catalog; it is not
559 available in the Angular staff catalog.
560
561 This feature adds a new permission, `ADMIN_LIBRARY_GROUPS`, that
562 allows updating Library Groups and Library Group Maps. This permission
563 is not associated with any profiles by default, and replaces
564 the `CREATE_LASSO`, `UPDATE_LASSO`, and `DELETE_LASSO` permissions. 
565
566 To define new library groups, use the Server Administration Library
567 Groups and Library Group Maps pages. An autogen and a reload of
568 Apache should be performed after making changes to Library Groups.
569
570
571 Easier Styling of Public Catalog Logo and Cart Images
572 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
573
574 Evergreen now has IDs associated with logos and cart images in the TPAC and Bootstrap OPACs to aid in customization.  Images are as follows:
575
576 * small Evergreen logo in navigation bar is 'topnav_logo_image'
577 * the large Evergreen logo in the center of the splash page of the TPAC is 'homesearch_main_logo_image' 
578 * the cart icon is 'cart_icon_image' 
579 * the small logo in the footer is 'footer_logo_image'
580
581 The Bootstrap OPAC does not have a homesearch logo icon as it is added in the background by CSS and can be directly styled through the CSS.
582
583
584
585
586
587 Easier TPAC Customization via colors.tt2
588 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
589 Twelve new colors for TPAC have been added to the colors.tt2 file as well as 
590 having coresponding changes to the style.css.tt2 file. These use 
591 descriptive rather than abstract names. These changes help avoid 
592 situations were unreadable values are placed on top of each other 
593 and where different values are wanted for elements that only refernece 
594 a single color previously. Guidelines are below for setting values that 
595 correspond to the previous values used in the colors.tt2 file.  
596 For more diverse customizations the OPAC should be reviewed before 
597 a production load.
598
599 * 'footer' is used for the background color of the footer. It replaces the 
600 'primary'.
601 * 'footer_text' sets the text color in the footer and replaces 'text_invert' 
602 * 'header' sets the background of the header and replaces 'primary_fade'
603 * 'header_text' sets the color of text in the header and replaces 'text_invert'
604 * 'header_links_bar' sets the background of the links bar that separates the 
605 header on the front page of the opac and replaces 'background_invert'
606 * 'header_links_text' sets the text on the links bar and replaces 'text_invert'
607 * 'header_links_text_hover' set the hover text color on the links bar and 
608 replaces 'primary'
609 * 'opac_button' sets the background color of the My Opac button and replaces 
610 'control'
611 * 'opac_button_text' explicitly sets the text color on the My Opac button  
612 * 'opac_button_hover' sets the background color of the My Opac button when the 
613 mouse is hovering over it and replaces 'primary'
614 * 'opac_button_hover_text' sets the text color of the My Opac button when the 
615 mouse is hovering over it and replaces 'text invert'
616
617 Note that is patch is primarily meant for users who wish to continue
618 using TPAC rather than the Bootstrap skin for a while; new Evergreen
619 users are advised to use the now-default Bootstrap skin.
620
621
622
623
624 Configurable Read More Accordion for OPAC Search and Record View (TPAC)
625 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
626
627 Read More Button
628 ++++++++++++++++
629 Public catalog record fields (in the TPAC skin only) now truncate
630 themselves based on a configurable amount of characters.  The full
631 field may be displayed upon hitting a (Read More) link, which will
632 then toggle into a (Read Less) link to re-truncate the field.
633
634 Configuration
635 +++++++++++++
636 `Open-ILS/src/templates/opac/parts/config.tt2` contains two new
637 configuration variables:
638
639
640 * `truncate_contents` (default: 1)
641 * `contents_truncate_length` (default: 50).
642
643 Setting `truncate_contents` to 0 will disable the read more
644 functionality.  The variable `contents_truncate_length` corresponds
645 to the amount of characters to display before truncating the text.
646 If `contents_truncate_length` is removed, it will default to 100.
647
648 Additional configuration for note fields can be made in
649 `Open-ILS/src/templates/opac/parts/record/contents.tt2`, allowing a
650 `trunc_length` variable for each individual type of note, which will
651 override `contents_truncate_length` for that specific
652 type of note.
653
654
655 Adding Read More Functionality to further fields
656 ++++++++++++++++++++++++++++++++++++++++++++++++
657 To add Read More functionality to any additional fields, you may use
658 the macro `accordion()`, defined in `misc_util.tt2`. It can take three
659 variables: `str`, `trunc_length`, and `element`. `str` corresponds to
660 the string you want to apply it to, `trunc_length` (optional) will
661 override `contents_truncate_length` if supplied, and `element`
662 (optional) provides an alternative HTML element to look at for the
663 truncation process (useful in situations such as the Authors and Cast
664 fields, where each field is processed individually, but needs to be
665 treated as a single field).
666
667
668
669
670 Reports
671 ~~~~~~~
672
673
674
675 Reports Scheduler Improvements
676 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
677 Previously, the reports scheduler allowed duplicated reports
678 under certain circumstances.  A uniqueness constraint now
679 disallows this without adversely affecting the reports process.
680
681
682
683 Miscellaneous
684 -------------
685
686
687 * The 'Create Reservation' form in the Booking module now includes
688   an option to search for the patron by attributes other than just
689   their barcode. (https://bugs.launchpad.net/evergreen/+bug/1816655[Bug 1816655])
690 * The form to add a user to a Course now includes an option to search
691   for the patron by attributes other than just their barcode. (https://bugs.launchpad.net/evergreen/+bug/1907921[Bug 1907921])
692 * For consistency with the menu action Cataloging => Retrieve Record by
693   TCN Value, the staff catalog Numeric Search => TCN search now includes
694   deleted bib records. (https://bugs.launchpad.net/evergreen/+bug/1881650[Bug 1881650])
695 * Add a new command-line script, `overdrive-api-checker.pl`, for testing
696   the OverDrive API. (https://bugs.launchpad.net/evergreen/+bug/1696825[Bug 1696825])
697 * The Shelving Location Groups editor is ported to Angular. (https://bugs.launchpad.net/evergreen/+bug/1852321[Bug 1852321])
698 * The staff catalog now has the ability to add all search results (up to
699   1,000 titles) to the basket in one fell swoop. (https://bugs.launchpad.net/evergreen/+bug/1885179[Bug 1885179])
700 * Add 'All Videos' as a search format. (https://bugs.launchpad.net/evergreen/+bug/1917826[Bug 1917826])
701 * Server-side print templates can now have print contexts set. (https://bugs.launchpad.net/evergreen/+bug/1891550[Bug 1891550])
702 * Add ability to set the print context for a print template to "No-Print"
703   to specify, well, that a given receipt should never be printed. (https://bugs.launchpad.net/evergreen/+bug/1891550[Bug 1891550])
704 * Add Check Number as an available column to the Bill History grids. (https://bugs.launchpad.net/evergreen/+bug/1705693[Bug 1705693])
705 * Adds a new control to the item table in the TPAC public catalog only to
706   specify that only items that are available should be displayed. (https://bugs.launchpad.net/evergreen/+bug/1853006[Bug 1853006])
707 * Adds warning before deleting bib records with holds (https://bugs.launchpad.net/evergreen/+bug/1398107[Bug 1398107])
708 * Library scope on (Angular) Administration pages now defaults to workstation location rather than consortium (https://bugs.launchpad.net/evergreen/+bug/1873322[Bug 173322])
709 * Pending users now set last four digits of phone number as password when library setting is enabled (https://bugs.launchpad.net/evergreen/+bug/1887852[Bug 1887852])
710
711 Acknowledgments
712 ---------------
713 The Evergreen project would like to acknowledge the following
714 organizations that commissioned developments in this release of
715 Evergreen:
716
717 * BC Libraries Cooperative
718 * Community Library (Sunbury)
719 * Consortium of Ohio Libraries (COOL)
720 * Evergreen Community Development Initiative
721 * Evergreen Indiana
722 * Georgia PINES
723 * Linn-Benton Community College
724 * Pennsylvania Integrated Library System (PaILS)
725
726
727 We would also like to thank the following individuals who contributed
728 code, translations, documentation, patches, and tests to this release of
729 Evergreen:
730
731 * John Amundson
732 * Zavier Banks
733 * Felicia Beaudry
734 * Jason Boyer
735 * Dan Briem
736 * Andrea Buntz Neiman
737 * Christine Burns
738 * Galen Charlton
739 * Garry Collum
740 * Eva Cerniňáková
741 * Dawn Dale
742 * Elizabeth Davis
743 * Jeff Davis
744 * Martha Driscoll
745 * Bill Erickson
746 * Jason Etheridge
747 * Ruth Frasur
748 * Blake Graham-Henderson
749 * Katie Greenleaf Martin
750 * Rogan Hamby
751 * Elaine Hardy
752 * Kyle Huckins
753 * Angela Kilsdonk
754 * Tiffany Little
755 * Mary Llewellyn
756 * Terran McCanna
757 * Chauncey Montgomery
758 * Gina Monti
759 * Michele Morgan
760 * Carmen Oleskevich
761 * Jennifer Pringle
762 * Mike Risher
763 * Mike Rylander
764 * Jane Sandberg
765 * Chris Sharp
766 * Ben Shum
767 * Remington Steed
768 * Jason Stephenson
769 * Jennifer Weston
770 * Beth Willis
771
772 We also thank the following organizations whose employees contributed
773 patches:
774
775 * BC Libraries Cooperative
776 * Calvin College
777 * Catalyte
778 * CW MARS
779 * Equinox Open Library Initiative
780 * Georgia Public Library Service
781 * Kenton County Public Library
782 * King County Library System
783 * Linn-Benton Community College
784 * MOBIUS
785 * NOBLE
786 * Westchester Library System
787
788 We regret any omissions.  If a contributor has been inadvertently
789 missed, please open a bug at http://bugs.launchpad.net/evergreen/
790 with a correction.
791