Docs: release notes for 3.6.1
[Evergreen.git] / docs / RELEASE_NOTES_3_6.adoc
1 = Evergreen 3.6 Release Notes =
2 :toc:
3 :numbered:
4
5 == Evergreen 3.6.1 ==
6
7 This release contains bug fixes improving on Evergreen 3.6.0.
8
9 === Bug Fixes ===
10
11 ==== Administration ====
12
13 * Improves description of an org unit setting
14 (https://bugs.launchpad.net/evergreen/+bug/1325704[Bug 1325704])
15
16 ==== Cataloging ====
17
18 * Fixes the journal title search in the Angular Staff Catalog
19 (https://bugs.launchpad.net/evergreen/+bug/1901038[Bug 1901038])
20
21 ==== Circulation ====
22
23 * The Register Patron form can now set default password according to a patron's
24 phone number when the org setting "Patron: password from phone #" is TRUE
25 (https://bugs.launchpad.net/evergreen/+bug/1900184[Bug 1900184])
26 * Fixes an issue with the hold targeter
27 (https://bugs.launchpad.net/evergreen/+bug/1508208[Bug 1508208])
28 * Fixes an issue that prevents items from circulating when OpenSRF is installed
29 with non-default router names
30 (https://bugs.launchpad.net/evergreen/+bug/1904220[Bug 1904220])
31
32
33 ==== Client ====
34
35 * Fixes an issue that caused a blank screen to appear
36 (https://bugs.launchpad.net/evergreen/+bug/1855737[Bug 1855737])
37
38
39 === Acknowledgements ===
40
41 We would like to thank the following individuals who contributed code,
42 testing and documentation patches to the 3.6.1 point release of Evergreen:
43
44 * Jason Boyer
45 * Dan Briem
46 * Galen Charlton
47 * Garry Collum
48 * Bill Erickson
49 * Jason Etheridge
50 * Katie Greenleaf Martin
51 * Terran McCanna
52 * Mike Rylander
53 * Jane Sandberg
54 * Chris Sharp
55 * Remington Steed
56
57
58 == Evergreen 3.6.0 ==
59
60 === Upgrade notes ===
61
62 This release adds a new OpenSRF service called `open-ils.courses`.
63 While strictly speaking this is an optional service and could be
64 omitted if you are not planning on using the new Course Materials
65 module, it is recommended that the service be run in case future
66 work bakes in an assumption that it will always be present.
67
68 This release also a new OpenSRF service, `open-ils.curbside`, which
69 must be enabled and registered with the public router for the
70 Curbside Pickup feature to function.
71
72 This release also includes a new experimental public catalog skin
73 based on the Bootstrap framework. Instructions for turning it on
74 can be found below.
75
76 This release adds a new Perl module dependency, `Config::General`.
77
78 This release adds two new rows to action_trigger.event_definition,
79 two into action_trigger.hook, and six into action_trigger.environment.
80
81 === New Features ===
82
83 ==== Acquisitions ====
84
85 ===== Angular Acquisitions Search =====
86
87 The acquisitions search interfaces are now written in Angular
88 and provide a new centralized place for searching Line Items,
89 Purchase Orders, Invoices, and Selection Lists in the Acquisitions
90 module of Evergreen. The Acquisitions Search interface can be accessed
91 under Acquisitions -> General Search.
92
93 The search interface has four tabs for line item search, purchase order
94 search, invoices search, and selection list search.  Each tab
95 offers a search form allowing the user to select one or more
96 fields to search on. Each search tab stores a separate default search
97 that the user can update; for example, a user could have their
98 line item search default to showing all on-order line items from
99 a particular provider.
100
101 The grid that displays search results in each tab is filterable.
102
103 The line items and PO search interfaces allow the user to navigate to
104 linked POs, invoices, and so forth, but offers no direct actions. The
105 invoices search tab includes a 'Print Selected Invoices' action,
106 while the selection lists search tab offers actions to create,
107 clone, delete, and merge selection lists.
108
109 The Angular search page contains a link to the legacy Dojo search
110 interface if needed. The Dojo interface will be removed in a future
111 release of Evergreen.
112
113 The Angular search interface offers various usability improvements
114 over the Dojo interface, including:
115
116 * only the search operators that are relevant for a given field
117   are displayed.
118 * search fields that are associated with controlled vocabularies
119   will display drop-downs on the search form.
120 * results are sortable.
121 * the line item and PO state fields have been relabeled to "Status".
122 * greater than and less than are now available as search operators.
123 * publication date searches are more flexible.
124
125 As part of this feature, the stock permissions for the Acquisitions
126 and Acquisitions Administrator profiles have been expanded. In
127 particular, the Acquisitions Administrator profile can now be
128 more readily used to perform normal acquisitions work in addition
129 to configuring the acquisitions module.
130
131 ===== Angular Providers Interface =====
132
133 The interfaces for searching for and managing Acquisitions provider
134 records have been rewritten in Angular. This rewrite includes the
135 following significant changes:
136
137 * The provider search interface is now available directly from the
138   Acquisitions menu, supplementing its longstanding availability from
139   the Acquisitions Administration page.
140 * The search interface is modeled after the patron interface, including
141   a search form that can be hidden or displayed, a provider summary box,
142   and a multi-tabbed interface for managing the provider itself.
143 * The grid displaying search results is filterable and sortable.
144 * The provider display tabs are
145 ** Details, allowing the user to view, and if permitted, edit the base provider record.
146 ** Addresses
147 ** Contacts
148 ** Attribute Definitions
149 ** Holdings Definitions
150 ** EDI
151 ** Invoices, providing an interface for viewing the invoices associated with the provider.
152 ** POs, providing an interface for viewing the purchase orders associated with the provider.
153 * The new interface makes it possible to edit contact addresses.
154 * The base provider record now has an optional primary contact field.
155   Selecting a contact as the primary one is managed on the Contacts
156   tab.  The primary contact, if set, is displayed on the provider
157   summary box.
158
159 Interfaces that used to link to the Dojo provider interface now link
160 to the Angular one instead.
161
162 ==== Administration ====
163
164
165 ===== Changes to Autorenewal Action/Trigger Failure Reasons =====
166
167 Previously the "reason" field in the userdata for an Autorenewal
168 event would contain both the failure code and the description for
169 the failure event as a single string such as
170 "MAX_RENEWALS_REACHED : Circulation has no more renewals remaining."
171
172 Now the "reason" field will only contain the description of the issue
173 (Circulation has ...) while a new "textcode" field will contain the
174 event code (MAX_RENEWALS_REACHED) if administrators still want to
175 display it in template outputs.
176
177
178 ===== EZProxy authentication =====
179
180 Evergreen can now provide CGI authentication for EZProxy.
181 To enable this, you will need to:
182
183 . Add a new User Activity Type to Evergreen for EZProxy CGI authentications.
184 . Add a new Remote Authentication Profile to Evergreen. You will probably want
185 to use `EZProxyCGI` as the name.
186 . Edit the `<Location /api/ezproxy>` stanza in Evergreen's eg_vhost configuration
187 file. In particular, you will need to allow access to from your EZProxy server,
188 fill in the base uri of your EZProxy server, and add a secret to the
189 _OILSRemoteAuthEZProxySecret_ variable.
190 . Restart Apache.
191 . Edit the EZProxy user.txt file.  You will likely want to add a stanza such
192 as the following:
193
194 .Sample user.txt stanza
195 ----
196 ::CGI=http://your-evergreen-catalog.com/api/ezproxy?url=^R
197 ::Ticket
198 MD5 <same secret as in eg_vhost config>
199 Expired; Deny expiredticket.htm
200 /Ticket
201 ----
202
203 When this feature is enabled, users will see an Evergreen-based login screen.
204 You may customize the look and feel of this login screen by editing the relevant
205 template toolkit files.
206
207 ===== Matomo Support =====
208
209 Support for the open source web analytics platform Matomo is now
210 native to Evergreen. Support is on an org unit level so different
211 libraries can have separate or no analytics. Once you setup
212 a Matomo service you will need the URL and site ID. Typically
213 Matomo will give you a block of javascript you can insert into
214 web sites. One line will look like :
215
216 `var u="http://mylibrary.lib/matomo/";`
217
218 The full URL in the double quotes will be your URL.  Another line
219 will look like:
220
221 `_paq.push(['setSiteId', '1']);`
222
223 In this case the number 1 will be your site ID.
224
225 These are set by the Library Settings opac.analytics.matomo_url and
226 opac.analytics.matomo_id respectively.  A new permission,
227 MATOMO_UPDATE_SETTINGS, controls access to these.
228
229 ===== "PatronAPI" authentication =====
230
231 Evergreen now supports the III "PatronAPI" scheme for authenticating
232 patrons and supplying some information about them.
233
234 To enable this, you will need to:
235
236 . Add a new User Activity Type to Evergreen for PatronAPI authentications.
237 . Add a new Remote Authentication Profile to Evergreen. You will probably want
238 to use `PatronAPI` as the name.
239 . Edit the `<Location /api/patronapi>` stanza in Evergreen's eg_vhost configuration
240 file. In particular, you will need to allow access to it from the server(s)
241 wanting to make PatronAPI requests, determine whether to enable the PatronAPI
242 "dump" feature, and specify whether users can be identified by username
243 or barcode.
244 . Restart Apache.
245 . Update the PatronAPI client to use https://your.evergreen.server/api/patronapi
246   as its base URL.
247
248 Example PatronAPI URLs look something like this:
249
250 .PatronAPI URLs
251 ----
252 # test a patron's PIN:
253 https://evergreen.example.org/api/patronapi/USERNAME/PASSWORD/pintest
254
255 # dump some information about the patron. Note that this
256 # does _not_ require the the patron's password be supplied.
257 https://evergreen.example.org/api/patronapi/USERNAME/dump
258 ----
259
260 The responses for the `pintest` and `dump` actions are specified by
261 Template Toolkit templates under (e.g.) `/openils/var/templates/remoteauth`.
262
263
264 ===== Preloaded Audio Icon and Search Format =====
265
266 A new search and icon format called Preloaded Audio now exists
267 that overlaps with the eAudio format.  If you want to exclude
268 the Preloaded Audio format from overlapping with eAudio
269 you can use the following SQL:
270
271 ----
272 UPDATE config.composite_attr_entry_definition SET definition = '{"0":{"_attr":"item_type","_val":"i"},"1":[{"_attr":"item_form","_val":"o"},{"_attr":"item_form","_val":"s"}]}'
273     WHERE coded_value IN (SELECT id FROM config.coded_value_map WHERE code = 'eaudio');
274 ----
275
276 It is also recommended that you reingest your bibliographic records
277 to updated the fixed field indexes. You can accomplish this by running
278 the following query in your database:
279
280 ----
281 SELECT metabib.reingest_record_attributes(source)
282 FROM metabib.record_attr_vector_list WHERE
283 (SELECT id FROM config.coded_value_map WHERE ctype = 'item_form' AND code = 'q') = ANY(vlist)
284 AND (SELECT id FROM config.coded_value_map WHERE ctype = 'item_type' AND code = 'i') = ANY(vlist);
285 ----
286
287
288
289
290
291 ==== API ====
292
293
294
295 ===== Override Label for draw_field_label Patron Edit Fields =====
296
297 Evergreen developers may now specify a label for fields in
298 the patron registration/patron edit form (generated by
299 the draw_field_label macro). By default,
300 draw_field_label uses the label of supplied IDL field class.
301 Now a developer may supply an additional third parameter,
302 label_override, which overrides the default IDL-based label.
303 This would typically be done in the course of customizing
304 the web staff client template `circ/patron/t_edit.tt2`.
305
306
307
308
309 ==== Architecture ====
310
311
312
313
314 ===== New Action/Trigger reactor for 3rd party signaling =====
315
316 This new Action/Trigger reactor module allows an Evergreen administrator to
317 create event defintions that use HTTP (or HTTPS) to contact external services
318 and let them know that something has happened in Evergreen.
319
320 For instance, a discovery layer can be informed when a bib record is updated
321 or when a user's barcode changes.
322
323 ====== Reactor Template Syntax ======
324
325 The new reactor module uses a template to define its behavior.  While the
326 template is processed by Template Toolkit, as with any A/T templates, its
327 output format is new to Evergreen.
328
329 The template should output data that can be parsed by the Config::General Perl
330 module.  See: https://metacpan.org/pod/Config::General
331
332 Top level settings should include the HTTP *method* and the *url*.
333
334 A block called *Headers* can be used to supply arbitrary HTTP headers.
335
336 A block called *Parameters* can be used to append CGI parameters to the URL,
337 most useful for GET form submission.  Repeated parameters are allowed.  If
338 this block is used, the URL should /not/ contain any parameters, use one or
339 the other.
340
341 A HEREDOC called *content* can be used with POST or PUT to send an arbitrary block
342 of content to the remote server.
343
344 If the requested URL requires Basic or Digest authentication, the template can
345 include top level configuration parameters to supply a *user*, *password*, *realm*,
346 and hostname:port *location*.
347
348 A default user agent string of "EvergreenReactor/1.0" is used when sending requests.
349 This can be overridden using the top level *agent* setting.
350
351 Here is an example template that could be used by a definition attached to the
352 *bib.edit* hook:
353
354 [source,conf]
355 ----
356 method   post # Valid values are post, get, put, delete, head
357 url      https://example.com/api/incoming-update
358 agent    MySpecialAgent/0.1
359
360 user     updater
361 password uPd4t3StufF
362 realm    "Secret area"
363 location example.com:443
364
365 <Headers>
366   Accept-Language en
367 </Headers>
368
369 <Parameters>
370   type bib
371   id   [% target.id %]
372 </Parameters>
373
374 content <<MARC
375 [% target.marc %]
376 MARC
377 ----
378
379
380
381
382
383 ===== Documentation Now Uses the Antora Toolchain =====
384
385 The core Evergreen documentation under the `docs/` subdirectory
386 has been changed to use Antora, a documentation site generator
387 for AsciiDoc. The result of this change is the ability to generate
388 documentation for the `docs.evergreen-ils.org` website that is
389 searchable, easier to maintain, and readily installable on a
390 local Evergreen site if desired.
391
392 For instructions on how to build the documentation, consult
393 the file `README.adoc` under the `docs` directory.
394
395
396
397
398 ==== Cataloging ====
399
400
401
402 ===== Manage Authorities Angular Port =====
403
404 The Cataloging -> Manage Authorities interface has been ported to Angular.
405
406 New functionality includes displaying additional authority data, like create
407 and edit dates, etc.  It's also possible to view the list of linked bib
408 records.
409
410
411
412
413 ===== MARC Batch Edit UI Angular Port =====
414
415 The MARC Batch Edit interface has been ported to Angular.
416
417
418
419
420 ===== Preloaded Audio Icon and Search Format =====
421
422 A new search and icon format called Preloaded Audio now exists
423 using the following atttributes: itemtype i, item form q.  This
424 overlaps with the eAudio format.  If you want to exclude
425 preloaded audio from eAudio there is a script in the Administration
426 notes to exclude it.
427
428
429
430
431 ===== Item Status Allows Pasting a List of Barcodes in csv Format =====
432
433 The item status input box will now accept a string of barcodes, separated with commas, as well as a single barcode.
434
435
436 ===== Fix For "Blank" (Empty String) TCN Source =====
437
438 Previously, it was possible for sparsely-populated MARC records to be
439 saved with a TCN Source of '' (the "empty string"), which caused the
440 901 $b subfield to be void of data, causing errors when exporting
441 MARC records to such third-party programs as Zotero.
442
443 A site that has been running without this patch for a long time might want to
444 check how many bib records they have with an empty tcn_source:
445
446 ----
447 SELECT COUNT(*) FROM biblio.record_entry WHERE deleted IS FALSE AND tcn_source = '';
448 ----
449
450 Sites can fix the problem by issuing UPDATE statements to set the 901$b to a value
451 like 'AUTOGEN' or 'Unknown'. They should probably do it per-record, however, to
452 avoid locking the table in a huge commit.
453
454
455 ==== Circulation ====
456
457
458
459 ===== Booking Capture is now in Angular =====
460
461
462 The interface to capture resources for booking
463 reservations has been re-implemented in Angular.
464 Other booking screens, such as Pick Up and
465 Manage Reservations, now include an option to
466 re-print capture slips.
467
468 System administrators can now edit the template
469 for booking capture slips in Administration ->
470 Server administration -> Print templates.
471
472
473
474
475
476 ===== New Fields for AutorenewNotify Event Template =====
477
478
479 Two new fields, `auto_renewal_remaining`, and `total_renewal_remaining` have
480 been added to the AutorenewNotify action/trigger event code.  They will
481 report the number of autorenewals and regular renewals, respectively,
482 remaining on the new circulation if renewed, or on the old circulation
483 if not renewed.  This is provided as a convenience to avoid possibly
484 inaccurate math in the template.  You may access them in the template via
485 the `udata`:
486
487 ----
488 Automatic Renewals Remaining: [% udata.auto_renewal_remaining %]
489 Total Renewals Remaining: [% udata.total_renewal_remaining %]
490 ----
491
492
493
494
495
496 ===== Course Materials Module =====
497
498 This version of Evergreen includes an optional course materials module.
499 Like course reserves modules in other library software, this module
500 makes reserves collections more discoverable and easier to manage.
501 The module also provides similar functionality for library electronic
502 resources and open educational resources, whether they have been
503 cataloged or not.
504
505 To enable the course materials module, go to Administration ->
506 Local Administration -> Library Settings Editor. Find the setting
507 called "Opt Org Unit into the Course Materials Module".  Set it to
508 True for the org units that want to use the module.
509
510 To use the course materials module effectively, staff will need a
511 new permission called _MANAGE_RESERVES_.  By default, circulation
512 administrators will receive this permission.
513
514 Staff members with the _MANAGE_RESERVES_ permission can create
515 courses, attach materials to them, attach users to them, and
516 archive them when they are no longer needed.
517
518 When associating physical materials from the catalog to a
519 course, staff members can choose temporary item attributes.
520 These attributes will last until the course is archived or
521 the item is detached from the course, whichever happens
522 first.
523
524 Staff can also choose to associate electronic resources from
525 the catalog (which must have a transcendent bib source or
526 a located URI).  They can also create a brief bib record
527 to attach to the course from within the course materials
528 module.
529
530 Staff members can attach users to the course.  These users
531 can have either a public role (e.g. instructor) or private
532 roles (e.g. student).  The public roles will be displayed
533 in the OPAC.
534
535
536 If the module is enabled, the OPAC will include a course search
537 and a course browse option.
538
539
540 Libraries may also want to use this module to manage their
541 displays.  Each display can be treated as a course, and staff
542 can attach the items they wish to display to the course along
543 with the temporary attributes (e.g. a shelving location called
544 "On display").  When the display is over, staff members can
545 archive the course.
546
547
548
549
550 ===== Hopeless Holds Interface =====
551
552 A new interface under Local Administration has been added called
553 Hopeless Holds.  Using a new Hopeless Date field on hold requests,
554 this interface gives staff a way to resolve issues with hold
555 requests that may have become unfulfillable or "hopeless".
556
557 The Hopeless Date is set for a given request by the hold targeter
558 whenever the potential items list for the hold is empty, or when
559 all potential items have a copy status that has been designated
560 as Hopeless Prone (a new boolean field on Item Statuses).
561
562
563
564
565
566 ===== In-house use now records workstations =====
567
568 Evergreen now records the workstation along with each
569 in-house use.  Staff can now run reports on which
570 workstation created which in-house use.
571
572
573
574
575 ===== Option to Make Effective Date of Checkin Sticky =====
576
577 Adds a checkbox to the Checkin screen that will make the backdate effective until logout.
578
579
580
581
582 ===== Purge User Preferred Names =====
583
584 The new, user preferred name fields are now set to NULL in the
585 database when a user account is purged via the staff client or using
586 the actor.usr_delete function in the database.
587
588 To clear the preferred name fields from records that have already been
589 purged, run the following SQL update:
590
591 [source,sql]
592 ----
593 UPDATE actor.usr
594 SET pref_prefix = NULL,
595     pref_first_given_name = NULL,
596     pref_second_given_name = NULL,
597     pref_family_name = NULL,
598     pref_suffix = NULL,
599     name_keywords = NULL
600 WHERE usrname ~ ('^' || id || '-PURGED')
601 AND NOT active
602 AND deleted
603 AND (
604   pref_prefix IS NOT NULL OR
605   pref_first_given_name IS NOT NULL OR
606   pref_second_given_name IS NOT NULL OR
607   pref_family_name IS NOT NULL OR
608   pref_suffix IS NOT NULL OR
609   name_keywords IS NOT NULL
610 );
611 ----
612
613
614
615
616 ===== Test Notification Method =====
617
618 Patrons and staff may request a test notification for a patron's default email address or SMS
619 number via the Patron Registration interface in the staff client or the OPAC preferences interface. The OPAC_LOGIN permissions are required to
620 request a notification. When a notification is sent, it will be sent to either the user's default email or default SMS number, depending on what was requested.
621
622 ====== Upgrade Notes ======
623
624 This feature adds two new rows to action_trigger.event_definition, two into
625 action_trigger.hook, and six into action_trigger.environment.
626
627
628
629 ===== Curbside Pickup =====
630
631 The Curbside Pickup feature in Evergreen provides an interface to help
632 facilitate contact-free pickup of library materials.  It provides a dedicated
633 interface in the staff client for library staff to track and manage curbside
634 pickup appointments and materials through the various stages of the process.
635 Staff can also schedule pickup appointments on behalf of patrons.  This feature
636 also allows patrons to schedule their own curbside pickup appointments in their
637 OPAC account, as well as inform the library when they have arrived and are
638 waiting for their materials.  
639
640 This is an extension of the existing holds functionality in Evergreen.  A hold
641 must be placed for an item to be eligible for curbside pickup.  After an item
642 has been captured for a hold and is available for pickup from the holds shelf,
643 a curbside pickup appointment can be scheduled to allow the materials to be
644 obtained in a contact-free transaction.
645
646 It can accommodate several different workflows depending on how the library
647 decides to implement curbside pickup services.  It can help library staff track and
648 checkout batches of items to be picked up curbside and help facilitate
649 communication between library staff and patrons.  It does not prescribe nor require a
650 specific workflow for curbside pickup.
651
652 It can be used alongside regular (i.e. inside the library) hold pickup.  Curbside pickup
653 can be an option offered patrons in addition to regular pickup or it can
654 be the primary pickup option depending on the library’s current service plan.
655
656 It assumes the library will have a staff member assigned to managing curbside
657 pickup throughout the day.
658
659 ====== Library Settings ======
660
661 This feature adds the following library settings:
662
663  * `circ.curbside`: whether to enable curbside appointments for
664    picking up available hold requests. This defaults to off.
665     
666  * `circ.curbside.granularity`: interval between appointment slots. This
667    defaults to 15 minutes.
668  
669  * `circ.curbside.max_concurrent`: how many appointments to permit per
670    time slot.  This defaults to 10.
671
672  * `circ.curbside.disable_patron_input`: if turned on, display scheduled
673     and pending appointments in My Account in the public catalog but
674     do not give the patron the ability to change them from My Account.
675     This defaults to false, i.e., allowing patrons to modify appointments
676     from My Account.
677
678 ====== Notifications And Action Triggers ======
679
680 There are several new patron notice options related to curbside pickup.
681
682 When a patron’s holds are marked as ready for pickup in Evergreen, an email or
683 text/SMS notification can be sent to let them know that curbside pickup is an
684 option at their library.  This notice can be used to promote this service and
685 the default message will prompt patrons to log in to their OPAC account to
686 schedule an appointment or call the library to schedule an appointment.
687 Notice message is customizable.  The Trigger Event Definitions for this notice
688 are called:
689
690  * Curbside offer Email notification, triggered by CurbsideSlot reactor on a
691    definition attached to the hold available hook.
692  * Curbside offer SMS notification, triggered by CurbsideSlot reactor on a
693    definition attached to the hold available hook.
694
695 If a patron has scheduled a curbside pickup appointment, an email or text/SMS
696 notification can be sent to confirm the appointment.  It will also prompt them
697 to log into their account or call the library when they have arrived for their
698 pickup appointment.  The Trigger Event Definitions for this notice are called:
699
700  * Curbside confirmation Email notification.
701  * Curbside confirmation SMS notification.
702
703 Patrons can receive an email with a list of the items they checked out.  To
704 receive this notice patrons must have an email address associated with their
705 account and the option for “Email checkout receipts by default?” must be
706 selected in their account.  This is an existing notice in Evergreen that ties
707 in to the curbside pickup workflow.
708
709 There is another action trigger called “Trigger curbside offer events and
710 create a placeholder for the patron, where applicable”.  This action trigger
711 does not send a notice to patrons or staff.  It is a silent action behind the
712 scenes that initiates the curbside offer email or SMS notification described
713 above.  
714
715 ====== Upgrade Notes ======
716
717 This feature adds a new OpenSRF service, `open-ils.curbside`, which must be
718 enabled and registered with the public router for the feature to function.
719
720 This feature adds no new staff permissions.
721
722
723
724 ===== Allow Use of Adjusted Proximity for Age-protection =====
725
726 Introduces a new library setting to consult adjusted proximity for age-protected items at hold placement time.
727
728
729
730
731 ==== Client ====
732
733
734
735 ===== New Angular Staff Catalog Default =====
736
737 The experimental Angular staff catalog has been promoted to operate as the
738 default catalog in the browser staff client.  It will be used for all
739 catalog entry points, except for the menu entries for the traditional
740 catalog and any links within the traditional catalog.
741
742 ====== Menu Changes ======
743
744 * Search -> 'Search The Catalog' now searches to new catalog.
745 * Cataloging -> 'Search The Catalog' now searches to new catalog.
746 * Cataloging -> 'Search The Catalog (Traditional)' searches the traditional
747   TPAC-style catalog.
748 * Staff client splash page -> 'Search the catalog' inline form uses the
749   new catalog.
750
751
752
753
754
755 ===== Basket To Bucket Action Now Allows Adding To Shared Buckets =====
756
757 The Angular staff catalog's 'Add Basket to Bucket' action now
758 gives the user the option of adding the contents of the basket
759 to a shared bucket.
760
761
762 ===== Angular catalog recall/force/part holds =====
763
764 The Angular staff catalog now has entry points for placing Recall,
765 Force, and Part-level holds.
766
767 For any item-level hold type, the user now has the option to cycle
768 between Item, Recall, and Force hold types.  The selected type affects
769 the full batch of holds.
770
771 For title-level holds, the user now has the option to select a part
772 as the hold target for each record in the list.  Part selection is
773 optional.
774
775
776 ==== OPAC ====
777
778
779 ===== New Bootstrap-based OPAC =====
780
781
782 This release includes a new experimental OPAC with a cleaner, more modern design.
783
784 To enable the new OPAC design, open the `/etc/apache2/eg_vhost.conf` file.
785
786 Find the following line:
787
788 ----
789 PerlAddVar OILSWebTemplatePath "/openils/var/templates"
790 ----
791
792 Add the following line directly below it:
793
794 ----
795 PerlAddVar OILSWebTemplatePath "/openils/var/templates-bootstrap"
796 ----
797
798 Be sure that, if you have any local customizations, that they are referenced below
799 this line.  This way, your customizations will still appear in the new OPAC design
800 (although they may need to be adjusted to better fit the new style).
801
802 You can also turn on the new OPAC for some virtual hosts only, by adding it to the
803 appropriate virtual host entry.  Be sure to reference the OILSWebTemplatePath for
804 the `templates-bootstrap` directory before referencing any local customizations
805 used by that virtual host.
806
807 To emphasize, the new OPAC skin is considered experimental for 3.6.x. There
808 are some discrepancies between its functionality and the functionality
809 present in the original "TPAC" skin. The Evergreen community aims to
810 resolve those discrepancies and make the Bootstrap skin become the default
811 OPAC for the Spring 2021 release (though the original TPAC skin will still
812 be available). Using the Bootstrap skin in production for 3.6 is at your own risk.
813
814
815
816
817 ===== Enhanced Public Catalog Printing and Email =====
818
819 Evergreen now provides additional functionality for printing and emailing
820 bibliographic record and holdings information from the catalog, including
821 from an individual record or from a list or basket.
822
823 After selecting Print or Email, the user will be presented with a preview of
824 the printout or email, respectively.  From the preview users can chose to view
825 Brief or Full record information (Full includes holdings information) and how
826 records should be sorted (Author, Title, Publication Date).  Holdings
827 information can also be limited to a certain library.
828
829 Users can be required to log in to their OPAC account to send an email, or this
830 feature can be configured to allow sending an email without signing in to the
831 public catalog. If the option to allow emailing without signing in is enabled
832 (by turning on the new 'Allow record emailing without login' library setting),
833 user will be asked to solve an arithmetic CAPTCHA in order to send the email.
834
835 ====== Administration ======
836
837 Two new interfaces have been added to Local Administration: Event Definition
838 Groups and Event Definition Group Members.  The Event Definition Groups defines
839 the various groups for Action Trigger Event Definitions -- currently Print
840 Record(s) or Email Record(s).  The Event Definition Group Members defines the
841 options within each group -- currently Brief or Full record information.
842
843 These two interfaces expose the infrastructure behind the new print and
844 email functionality and library staff will not need to make any changes to
845 these interfaces to use the existing print and email options.  The stock print
846 and email Action Trigger Event Definitions can be cloned and modified to
847 provide additional bibliographic format options.  After creating the custom
848 Event Definition, add it to the appropriate Event Definition Group (Print
849 Record or Email Record) and the new format will be available in the catalog.
850
851
852
853
854
855 ===== Credit card payments using Stripe now on version 3 (Elements) =====
856
857 When Stripe payments are enabled, the public catalog will now
858 use version 3 of the Stripe client library, as well as its
859 Elements API for building the credit card form.  For
860 technical reasons, this more easily lends a site to PCI
861 compliance.
862
863 On the staff side, the credit card option is disabled for
864 Stripe, as that has not been implemented and in the past
865 would just give an error.
866
867
868
869
870 ===== Improve Access to Libray Info in OPAC =====
871
872 Adds the library's address, email, phone, and website link to the myopac patron account preferences page.
873
874
875
876
877 ==== Reports ====
878
879
880
881 ===== Combined Aged and Active Circulations Source Naming =====
882
883 A recent improvement to aid web client data retrieval
884 speed resulted in a new reports source that was named
885 nearly identically to a long-existing one, and both
886 were appearing in the "Core Sources" section of reports.
887 The newer source has been renamed for clarity and removed
888 from the core sources to prevent confusion:
889
890  * "Combined Aged and Active Circulations" is now named "Combined Aged and Active Circulations (Slim Version)"
891    and is removed from the Core Sources.
892  * "Combined Aged and Active Circulations", which contains more linkages to other data sources, remains in the
893    Core Sources list.
894
895
896
897
898 ===== Reports Subtotals =====
899
900 Reports now allow group subtotals and grand totals.  By checking the
901 new "Calculate grouping subtotals" checkbox under "Output Options",
902 a new unlabeled row or column is created with the subtotals for each
903 grouping and an unlabeled grand total row or column.
904
905 This takes advantage of PostreSQL's built-in ROLLUP feature.  See the
906 PostgreSQL documentation for details:
907
908 https://www.postgresql.org/docs/9.6/queries-table-expressions.html#QUERIES-GROUPING-SETS
909
910 An example of a report that could use this new feature is
911 one based on the Circulation source with the following fields:
912
913  * Circulation -> Checkout / Renewal Library -> Short (Policy) Name (Raw Data)
914  * Circulation -> Checkout Date/Time (Year)
915  * Circulation -> Shelving Location -> Name (Raw Data)
916  * Circulation -> Circ ID (Count Distinct)
917
918 Turning on the "Calculate grouping subtotals" checkbox would make
919 the report show subtotals for each combination of
920 short name, checkout year, and shelving location name.
921
922
923
924
925 ==== SIP ====
926
927
928
929 ===== Allow Username in Patron ID =====
930
931 Evergreen now accepts a patron's username in the SIP2 Patron ID field
932 (AA) in addition to the barcode.  This modification is useful for
933 vendors, such as Overdrive, who can accept a user's username.
934 Additionally, it is easier for a patron to find and remember their
935 username over their barcode.
936
937 The new feature determines if the value in the Patron ID field is a
938 barcode or username by comparing the field value against the
939 `opac.barcode_regex` setting for the organizational unit of the logged
940 in SIP2 account as configured in the oils_sip.xml file.  This is
941 similar to what the OPAC does when a patron logs in.
942
943 This feature requires activation.  To activate, uncomment (or add) the
944 following line in the oils_sip.xml configuration file and change the
945 value from 'false' to 'true'.
946
947 [source,xml]
948 ----
949 <option name='support_patron_username_login' value='true' />
950 ----
951
952
953
954 === Acknowledgments ===
955
956 The Evergreen project would like to acknowledge the following
957 organizations that commissioned developments in this release of
958 Evergreen:
959
960 * C/W MARS
961 * Equinox Open Library Initiative
962 * Evergreen Community Development Initiative
963 * Georgia Public Library Service
964 * Indiana State Library
965 * Linn-Benton Community College
966 * MassLNC
967 * NOBLE
968 * PaILS
969 * Treasure Valley Community College
970
971 We would also like to thank the following individuals who contributed
972 code, translations, documentation, patches, and tests to this release of
973 Evergreen:
974
975 * John Amundson
976 * Nelson Appell
977 * Zavier Banks
978 * a. bellenir
979 * Felicia Beaudry
980 * Jason Boyer
981 * Dan Briem
982 * Chris Burton
983 * Steven Callender
984 * Lisa Carlucci
985 * Galen Charlton
986 * Garry Collum
987 * Dawn Dale
988 * Jeff Davis
989 * Diane Disbro
990 * Bill Erickson
991 * Jason Etheridge
992 * Lynn Floyd
993 * Ruth Frasur
994 * Blake Graham-Henderson
995 * Rogan Hamby
996 * Elaine Hardy
997 * Kyle Huckins
998 * Angela Kilsdonk
999 * Owen Leonard
1000 * Troy Leonard
1001 * Shula Link
1002 * Tiffany Little
1003 * Mary Llewellyn
1004 * Terran McCanna
1005 * Gina Monti
1006 * Christine Morgan
1007 * Michele Morgan
1008 * Andrea Buntz Neiman
1009 * Jennifer Pringle
1010 * Mike Risher
1011 * Mike Rylander
1012 * Jane Sandberg
1013 * Dan Scott
1014 * Chris Sharp
1015 * Remington Steed
1016 * Jason Stephenson
1017 * Josh Stompro
1018 * Dan Wells
1019 * Jennifer Weston
1020 * Beth Willis
1021 * John Yorio
1022
1023 We also thank the following organizations whose employees contributed
1024 patches:
1025
1026 * Ann Arbor District Library
1027 * BC Libraries Cooperative
1028 * Bibliomation
1029 * Calvin College
1030 * Catalyte
1031 * C/W MARS
1032 * Equinox Open Library Initiative
1033 * Georgia Public Library Service
1034 * Grand Rapids Public Library
1035 * Greater Clark Hills Regional Library System
1036 * Indiana State Library
1037 * Kenton County Public Library
1038 * King County Library System
1039 * Laurentian University
1040 * Linn-Benton Community College
1041 * MOBIUS
1042 * Niagara Falls Public Library
1043 * NOBLE
1044 * Scenic Regional Library
1045 * Sigio
1046 * Washington County (MO) Public Library
1047 * Westchester Library System
1048 * Zivot Design
1049
1050 We regret any omissions.  If a contributor has been inadvertently
1051 missed, please open a bug at http://bugs.launchpad.net/evergreen/
1052 with a correction.
1053