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