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