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