LP#1849208 - Add PostgreSQL 10 Makfile.install targets
[working/Evergreen.git] / docs / RELEASE_NOTES_3_4.adoc
1 Evergreen 3.4 Release Notes
2 ===========================
3 :toc:
4 :numbered:
5
6 Evergreen 3.4.0
7 ---------------
8 The Evergreen 3.4.0 release is a major feature release.
9
10 Upgrade notes
11 -------------
12
13 Minimum Required OpenSRF Version
14 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 Evergreen 3.4 requires OpenSRF 3.2.x or later.
16
17 Updating OPAC colors.tt2 file
18 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19
20 Sites that have customized `colors.tt2` should add a line for
21 the new `link` color.  For example:
22
23 [source,perl]
24 ----
25 link = "#3ef624", # lime green
26 ----
27
28 The template can be found at opac/parts/css/colors.tt2.
29
30 marc_stream_importer.pl configuration file
31 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32
33 Because `marc_stream_importer.pl` now expects its configuration file to
34 be in the configuration directory, not the binary directory, existing
35 users will likely need to manually move the configuration file into
36 place.
37
38
39
40 New Features
41 ------------
42
43
44
45 Administration
46 ~~~~~~~~~~~~~~
47
48 Ability to specify specific date in action_trigger_aggregator.pl
49 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50
51 An option, `--date`, has been added to the `action_trigger_aggregator.pl`
52 support script that allows the user to specify a specific date to aggregate
53 event output for.  This new argument cannot be used with either `--start-date`
54 or `--end-date`.  This option was added to simplify pulling event output for a 
55 single day.
56
57 Aged Billings and Payments
58 ^^^^^^^^^^^^^^^^^^^^^^^^^^
59
60 Two new database tables are added for tracking aged billings and payments:
61 `money.aged_billing` and `money.aged_payment`.
62
63 Two new database views are added, `money.all_billings` and `money.all_payments`
64 for aggregating data across the active and aged tables.
65
66 When a circulation is aged, billings and payments linked to the circulation
67 are migrated from the active billing and payment tables to the new aged 
68 tables.
69
70 The new tables are accessible to the reporter.
71
72 New Action Trigger - Fine Limit Exceeded
73 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
74 New optional email notification that is sent when a block is applied
75 to a patron's account due to excess fines.
76
77 (The patron block functionality itself already exists and is based on
78 the settings in Local Administration -> Standing Penalties (PATRON_EXCEEDS_FINES)
79 and Local Administration -> Group Penalty Thresholds.)
80
81 Install marc_stream_importer.pl By Default
82 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
83 The script for the MARC stream importer, `marc_stream_importer.pl`,
84 is now installed in the Evergreen `bin` directory (typically
85 `/openils/bin`) by default. It now also expects that its configuration
86 file will be in the usual config directory (typically `/openils/conf`)
87 and the example configuration file is installed there by default.
88
89
90 AuthProxy Support for Arbitrary LDAP Usernames
91 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
92
93 AuthProxy now supports LDAP-based login with a username that is
94 different from your Evergreen username.
95
96 This feature may be useful for libraries that use an LDAP server for
97 single sign-on (SSO).  Let's say you are a post-secondary library using
98 student or employee numbers as Evergreen usernames, but you want people
99 to be able to login to Evergreen with their SSO credentials, which may
100 be different from their student/employee number.  To support this,
101 AuthProxy can now be configured to accept your SSO username on login,
102 use it to look up your student/employee number on the LDAP server, and
103 log you in as the appropriate Evergreen user.
104
105 For this to work, in the AuthProxy configuration for your LDAP server in
106 `opensrf.xml`, set `bind_attr` to the LDAP field containing your LDAP
107 username, and "id_attr" to the LDAP field containing your student or
108 employee number (or whatever other value is used as your Evergreen
109 username).  If `bind_attr` is not set, Evergreen will assume that your
110 LDAP username and Evergreen username are the same.
111
112 Now, let's say your LDAP server is only an authoritative auth provider
113 for Library A.  Nothing prevents the server from reporting that your
114 student number is 000000, even if that Evergreen username is already in
115 use by another patron at Library B.  We want to ensure that AuthProxy
116 does not use Library A's LDAP server to log you in as the Library B
117 patron.  For this reason, a new `restrict_by_home_ou` setting has been
118 added to AuthProxy config.  When enabled, this setting restricts LDAP
119 authentication to users belonging to a library served by that LDAP
120 server (i.e. the user's home library must match the LDAP server's
121 `org_units` setting in `opensrf.xml`).  Use of this setting is strongly
122 recommended.
123
124 Angular Organizational Units Admin Page
125 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
126
127 The Administration -> Server Administration -> Organizational Units 
128 page has been migrated to Angular.
129
130 pingest.pl Now Has a --rebuild-rmsr Option
131 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
132
133 An option, `--rebuild-rmsr`, has been added to the `pingest.pl` support
134 script.  This option will rebuild the
135 `reporter.materialized_simple_record` (rmsr) table after the ingests are
136 complete.
137
138 This option might prove useful if you want to rebuild the table as
139 part of a larger reingest.  If all you wish to do is to rebuild the
140 rmsr table, then it would be just as simple to connect to the database
141 server and run the following SQL:
142
143 [source,sql]
144 ----
145 SELECT reporter.refresh_materialized_simple_record();
146 ----
147
148 Links in Public Catalog Now Have Separate Color
149 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
150 Hyperlinks in the public catalog now have a separate color definition
151 in the `colors.tt2` template to make it easier to style the public
152 catalog header/footer to use the same background color as the center
153 panel.
154
155
156 Server-Managed Print Templates for Angular
157 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
158
159 Adds support for generating print content via server-side web service.  
160 Server print templates are implemented as Template Toolkit and content
161 is compiled and generated on the server, based on runtime data provided
162 by clients.
163
164 Feature includes a new Angular admin interface for testing and editing
165 server-managed print templates.  The UI is accessed under Administration ->
166 Server Administration -> Print Templates, though the menu entry may be
167 moved to Administration -> Local Administration, once Local Administration is migrated
168 to Angular.
169
170 Two sample templates are included to demonstrate the format and 
171 functionality.  The `Holds For Bib Record` template may be tested by
172 navigating to the record holds tab in the Angular staff catalog 
173 (/eg2/en-US/staff/catalog/record/<record-id>/holds) and chose the 
174 `Print Holds` grid action.
175
176 Apache Configuration
177 ++++++++++++++++++++
178
179 Apply Apache configuration changes to `eg_vhost.conf` and `eg_startup`.
180
181 * Add to `eg_vhost.conf`
182 [source,conf]
183 ---------------------------------------------------------------------------
184 <Location /print_template>
185     SetHandler perl-script
186     PerlHandler OpenILS::WWW::PrintTemplate
187     Options +ExecCGI
188     PerlSendHeader On
189     Require all granted
190 </Location>
191 ---------------------------------------------------------------------------
192
193 * Add to `eg_startup`
194 [source,conf]
195 ---------------------------------------------------------------------------
196 # Pass second argument of '1' to enable process-level template caching.
197 use OpenILS::WWW::PrintTemplate ('/openils/conf/opensrf_core.xml', 0); 
198 ---------------------------------------------------------------------------
199
200 New Perl Dependency
201 +++++++++++++++++++
202
203 A new Perl module `HTML::Defang` is required for cleansing generated HTML 
204 of executable code for security purposes.  The dependency is added to 
205 the Makefile.install process for new builds.  Existing Evergreen instances
206 will need the dependency manually installed.
207
208 Installing on (for example) Ubuntu:
209
210 [source,conf]
211 ---------------------------------------------------------------------------
212 sudo apt-get install libhtml-defang-perl
213 ---------------------------------------------------------------------------
214
215 Angular Standing Penalty Admin Page
216 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
217
218 The Administration -> Local Administration -> Standing Penalties
219 page has been migrated to Angular.
220
221 Copy Alert Permissions Added to Seed Data
222 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
223 Copy alerts were improved in recent releases of Evergreen,
224 but the permissions were not assigned to any of the stock
225 permission profiles in the "seed data" supplied to first time
226 installations.
227
228 The VIEW_COPY_ALERT permission is now assigned to all profiles
229 under the "Staff" parent profile, and ADMIN_COPY_ALERT is now
230 assigned to Cataloging Administrator and should be available to
231 all Administrator profiles.
232
233 This change does NOT include an upgrade script, so site server
234 administrators are responsible for updating the permissions
235 profiles for their individual systems.
236
237 Architecture and Internals
238 ~~~~~~~~~~~~~~~~~~~~~~~~~~
239
240 Angular Grid Improvements
241 ^^^^^^^^^^^^^^^^^^^^^^^^^
242 Grids in new Angular staff interfaces now have options to
243
244 * allow users to filter results per-column
245 * make the grid header in tall/long grids sticky (i.e., the
246   grid header continues to be displayed while the user
247   scrolls through the grid)
248 * allow users to edit a record in a grid and save the results
249   without losing one's place in grid paging.
250
251 Configurable APIs for Patron Authentication and Retrieval
252 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
253 Many external services need to authenticate patrons and retrieve information
254 about their accounts from Evergreen.  Most of these services support some form
255 of HTTP-based authentication, but every service has its own requirements and
256 none of them support native Evergreen authentication.  Meanwhile, libraries
257 often need to restrict access to these external services based on patron type,
258 current status, standing penalties, and so on.
259
260 To meet these needs, Evergreen now has support for separate, configurable HTTP
261 API endpoints for remote patron authentication and retrieval.  Each RemoteAuth
262 endpoint handles a different external service or authentication method.  You
263 set up the endpoints you want in your Apache config; each one uses a generic
264 mod_perl handler to manage incoming requests, and specifies a Perl module that
265 can actually talk to the external service, as well as an authentication profile
266 that determines which patrons can be authenticated at this endpoint.  Support
267 for https://tools.ietf.org/html/rfc7617["Basic" HTTP Authentication] is
268 provided as a reference implementation.
269
270 open-ils.circ.renew.auto API Deprecated
271 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
272 The `open-ils.circ.renew.auto` API added in release 3.2 is deprecated
273 and will be removed in Evergreen release 3.5.  Please switch to using
274 the `open-ils.circ.renew` API with the `auto_renew` option set to 1 in any
275 custom code.
276
277 Cataloging
278 ~~~~~~~~~~
279
280 New Cancel Edit Button In Record Merge Interface
281 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
282 The web staff client's Record Merge dialog now has a "Cancel Edit"
283 button that is displayed when editing the lead record in place. Using
284 this button will abandon any pending record edits without requiring
285 that the entire dialog be dismissed.
286
287 Staff Catalog Basket Export Option
288 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
289
290 Adds a new "Export Records" option to the staff catalog basket menu.
291 When selected, the user is directed to the Vandelay record export
292 interface, which will be set to "basket export" mode.  Staff can then
293 apply export preferences (usmarc, marxml, etc.) and export the basket
294 records.  In "basket export" mode, Vandley provides a link to return to
295 the catalog (preserving search parameters).
296
297 Copy Edit Interface Display Modifications
298 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
299
300 Hide Disabled Fields
301 ++++++++++++++++++++
302
303 Disabling a field in the "Defaults" tab in the copy editor now hides the 
304 field instead of simply disabling it.
305
306 Working Items Moves Down
307 ++++++++++++++++++++++++
308
309 The "Working Items" grid now sits below the item attribute edit area, so the
310 attributes are allowed to fill the horizontal space.
311
312 New Options for Importing Copies
313 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
314
315 Two new options for importing holdings have been added to MARC Batch
316 Import/Export:
317
318 . **Auto-overlay On-order Cataloguing Copies**: This is similar to
319   "Auto-overlay In-process Acquisitions Copies," but for copies that were not
320   created from an acquisitions workflow.  Holdings information in the incoming
321   record will be used to overlay any existing On Order copies for the matching
322   record which belong to the owning library defined in the Holdings Import
323   Profile.  The Holdings Import Profile is also used to match incoming copies to
324   existing copies, if possible; otherwise, On Order copies are overlaid in the
325   order they were created.  The call number will also be overlaid if the
326   incoming record provides one.
327 . **Use Org Unit Matching in Copy to Determine Best Match**: When there are
328   multiple potential matching records, this feature allows the user to
329   automatically select the record which has the most copies at libraries near
330   the importing library in the org tree.  That is, starting at the importing
331   library, it climbs the org tree, gradually expanding the scope at which it
332   checks for holdings on matching records; once holdings are found, the record
333   with the most holdings at that scope is selected for overlay.  If there are
334   no matching records with holdings, then the default best match overlay is
335   attempted.
336
337 Permissions
338 +++++++++++
339
340 Two new permissions control the use of these new features:
341
342 * IMPORT_ON_ORDER_CAT_COPY
343 * IMPORT_USE_ORG_UNIT_COPIES
344
345 Enhanced Request Items Functionality
346 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
347
348 The Request Items action available in the Item Status and Item Buckets
349 interfaces has been given an Honor User Preferences checkbox which does
350 the following for the selected user when checked:
351
352  * Change the Pickup Lib selection to match the user's Default Hold Pickup Location
353  * Honor the user's Holds Notification settings (including Default Phone Number, etc.)
354
355 Success and Failure toasts have also been added based on what happens
356 after the Request Items interface has closed.
357
358 Also, a Title Hold option has been added to the Hold Type menu.  This will create
359 one title-level hold request for each unique title associated with the items that were selected
360 when Request Items was invoked.
361
362 Display Codes in Physical Characteristics Wizard Drop-downs (LP#1776003)
363 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
364 Drop-downs in the Physical Characteristics Wizard in the MARC editor
365 now display both code and label.
366
367 Circulation
368 ~~~~~~~~~~~
369
370 Booking Module Refresh
371 ^^^^^^^^^^^^^^^^^^^^^^
372
373 The Booking module has been redesigned, with many of its interfaces being
374 redesigned in Angular.
375
376 This adds a new screen called "Manage Reservations", where staff can check details about
377 all outstanding reservations, including those that have been recently placed, captured,
378 picked up, or returned.
379
380 On many screens within the new booking module, staff are able to edit reservations.  Previously,
381 they would have needed to cancel and recreate those reservations with the new data.
382
383 There is a new notes field attached to reservations, where staff can leave notes about the
384 reservation.  One use case is to alert staff that a particular resource is being stored in
385 an unfamiliar location.  This field is visible on all screens within the booking module.
386
387 The Create Reservations UI is completely re-designed, and now includes a calendar-like view
388 on which staff can view existing reservations and availability.
389
390 New Permission: CREATE_PRECAT
391 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
392
393 This permission is required to create (or re-create) a pre-cataloged item
394 through the "Barcode ??? was mis-scanned or is a non-cataloged item."
395 dialog.  All form elements in the pre-cat dialog other than the Cancel
396 button will be disabled if the current user lacks the CREATE_PRECAT
397 permission when an uncataloged (or already pre-cataloged item) is scanned.
398 This permission is not needed to renew pre-cataloged items.
399
400 The upgrade script for this feature will insert the permission into every
401 permission group that has the STAFF_LOGIN permission, so out-of-the-box no
402 behavior will change.
403
404 Enhanced Mark Item Functionality
405 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
406
407 Evergreen's Mark Item Damaged and Mark Item Missing functionality has
408 been enhanced, and the ability to mark an item with the Discard/Weed
409 status has been added.  This enhancement affects both the Evergreen
410 back end code and the staff client.
411
412 Staff Client Changes
413 ++++++++++++++++++++
414
415 The option to "Mark Item as Discard/Weed" has been added to areas
416 where the option(s) to "Mark Item as Missing" and/or "Mark Item as
417 Damaged" appear.  This is primarily in the action menus on the
418 following interfaces:
419
420  * Item Status
421  * Checkin
422  * Renew
423  * Holds Pull List
424  * Patron Holds List
425  * Record Holds List
426  * Holds Shelf
427  * Holdings Edit
428
429 This new option allows staff to mark a copy with the Discard/Weed
430 status quickly and easily without necessarily requiring the
431 intervention of cataloging staff.  In order to mark an item with the
432 Discard/Weed status, staff will require either the `MARK_ITEM_DISCARD`
433 or `UPDATE_COPY` status at the item's owning library.  (NOTE: This
434 permission choice is consistent with the permission requirements for
435 the current Mark Item Damaged or Missing functionality.)
436
437 If the item to be marked Discard/Weed is checked out to a patron, the
438 staff will be presented with a dialog informing them that the item is
439 checked out and asking if they would like to check it in and proceed.
440 If they choose to continue, the item will be checked in and then
441 marked with the Discard/Weed status.  If the staff person chooses to
442 cancel, then the item will not be checked in, and it will not be
443 marked Discard/Weed.  The Mark Item Missing functionality has also
444 been changed to exhibit this behavior with checked out items.  The
445 Mark Item Damaged functionality already handles checked out items.
446
447 Should the item have a status of In Transit at the time it is to be
448 marked, then staff will be prompted to abort the transit before
449 proceeding with changing the item's status.  If they choose to abort
450 the transit and they have the permission to do so, the transit will be
451 aborted and the item's status changed.  If they choose to cancel, then
452 the transit will not be aborted and the item's status will remain
453 unchanged.  This change applies to all three of the current Mark Item
454 statuses: Missing, Damaged, and Discard/Weed.
455
456 Marking an item Discard/Weed is typically one step away from deleting
457 the item.  For this reason, if the item to be marked Discard/Weed is
458 not in a Checked Out or In Transit status, but it is in a status that
459 restricts item deletion, the staff will be presented with a dialog
460 notifying them of the item's status and asking if they wish to
461 proceed.  If staff choose to proceed and they have the
462 `COPY_DELETE_WARNING.override` permission, then the item will be
463 marked with the Discard/Weed status.  Naturally, the item's status
464 will be unchanged if they choose not to proceed.  This change does not
465 affect the marking of an item as Missing or Damaged.
466
467 Marking an item as Discard/Weed has one more additional check that the
468 other statuses do not.  If the item being marked as Discard/Weed is
469 the last copy that can fill a hold, then staff will also be notified
470 of this condition and asked if they wish to continue.  In this case,
471 there is no permission required.  Whether or not the item is marked as
472 Discard/Weed in this case depends solely on the staff's choice.
473
474 Back End Changes
475 ++++++++++++++++
476
477 In order to accommodate the presentation of dialogs and overrides in
478 the staff client, the `OpenILS::Application::Circ` module's method for
479 marking item statuses has had a few changes made.  Firstly, the code
480 of the `mark_item` function has been rearranged to a more logical
481 flow.  Most of the condition and permission checks are made before
482 creating a transaction.  Secondly, it has been modified to return 3
483 new events when certain conditions are met:
484
485  * `ITEM_TO_MARK_CHECKED_OUT`
486  * `ITEM_TO_MARK_IN_TRANSIT`
487  * `ITEM_TO_MARK_LAST_HOLD_COPY`
488
489 The `COPY_DELETE_WARNING` event will be returned when attempting to
490 mark an item with the Discard/Weed status and the status has the
491 `restrict_copy_delete` flag set to true.
492
493 The function now also recognizes a hash of extra arguments for all
494 statuses and not just for the mark Damaged functionality.  This
495 argument hash can be used to bypass or override any or all of the
496 above mentioned events.  Each event has a corresponding argument that
497 if set to a "true" value will cause the `mark_item` to bypass the
498 given event.  These argument flags are, respectively:
499
500  * `handle_checkin`
501  * `handle_transit`
502  * `handle_last_hold_copy`
503  * `handle_copy_delete_warning`
504
505 The code to mark an item damaged still accepts its previous hash
506 arguments in addition to these new ones.
507
508 The function still returns other errors and events as before.  It
509 still returns 1 on success.
510
511 It is also worth noting here that the staff client can be easily
512 extended with the ability to mark items into the other statuses
513 offered by the back end functions.  Most of the staff client
514 functionality is implemented in two functions with placeholders in the
515 main function (`egCirc.mark_item`) for the unimplemented statuses.
516
517 Library Links in Billing Details screen
518 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
519
520 The Billing Full Details view now includes links to information about the billing and owning
521 libraries. This can be useful in situations where circulation staff are troubleshooting a
522 bill and would like to quickly find contact information for the billing or owning library.
523
524 Client
525 ~~~~~~
526
527 Cross-Tab Communication Demo
528 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
529 The Angular Sandbox now includes an example
530 for developers interested in sharing data
531 between staff client browser tabs.
532
533 (Experimental) Staff Catalog: Record Holds Tab
534 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
535 Adds support for the Holds tab in the record detail view of the Angular
536 staff catalog.  Includes grid and hold-related actions.
537
538  * Holds grid
539  * Batch cancel holds
540  * Batch retarget holds
541  * Batch edit holds
542   ** Unified form to modify notify options, dates, etc.
543  * Hold detail page (menu and row double-click)
544  * Batch mark items damaged
545  * Batch mark items missing
546  * Show last few circulations
547  * Retrieve patron
548
549 (Experimental) Staff Catalog: Call Number Browse
550 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
551
552 Adds support for call number browsing in the staff catalog.  The browse
553 results display vertically for consistency with the regular search and
554 browse result interfaces.
555
556 (Experimental) Staff Catalog: Recent Searches & Templates
557 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
558
559 Recent Searches
560 +++++++++++++++
561
562 Adds support for Recent Searches in the Angular staff catalog, consistent
563 with TPAC staff recent searches.  Setting a value for the library setting
564 `opac.staff_saved_search.size` is required for the recent searches to appear.
565
566 Search Templates
567 ++++++++++++++++
568
569 Adds support for named catalog search templates.  Templates allow staff to
570 create predefined searches (e.g. title =, subject =, format =, etc.) 
571 where all that's left do to perform the search is fill in the search 
572 values.
573
574 Templates may be built from any of the search tabs -- search, numeric search, 
575 marc, and browse -- except shelf browse, which uses no filters.
576
577 Templates are stored by default as workstation settings, using the setting
578 key `eg.catalog.search_templates`.
579
580 Port Permission Group Admin to Angular
581 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
582
583 The Administration -> Server Administration -> Permission Groups admin page has been migrated to 
584 Angular.
585
586 As an added feature, the interface now displays inherited permissions
587 alongside linked permissions for each group.  Inherited permissions
588 are read-only and act to indicate to the user when a group already has
589 a certain permission and therefore may not need a new one added.
590
591 Additionally, a new filter option is available in the linked permissions
592 interface for filtering the displayed linked permissions by code or 
593 description.
594
595 Port Org Unit Type Admin to Angular
596 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
597 The Administration -> Server Admininistration -> Organization Types admin page has been migrated to 
598 Angular.
599
600 Port Local Administration Page to Angular
601 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
602 The Administration -> Local Administration page has been migrated
603 to Angular along with the following specific Local Administration
604 interfaces:
605
606  * Address Alerts
607  * Barcode Completion
608  * Group Penalty Thresholds
609  * Hold Policies
610  * Item Alert Suppression
611  * Item Tags
612  * Non-Cataloged Types Editor
613  * Shelving Location Editor
614  * Statistical Popularity Badges
615
616 Public Catalog
617 ~~~~~~~~~~~~~~
618
619 Carousels
620 ^^^^^^^^^
621 This feature fully integrates the creation and management of book carousels
622 into Evergreen, allowing for the display of book cover images on a library’s
623 public catalog home page.  Carousels may be animated or static.  They can be
624 manually maintained by staff or automatically maintained by Evergreen.  Titles
625 can appear in carousels based on newly cataloged items, recent returns,
626 popularity, etc.  Titles must have copies that are visible to the public
627 catalog, be circulating, and holdable to appear in a carousel.  Serial titles
628 cannot be displayed in carousels.  
629
630 Administration
631 ++++++++++++++
632 This feature introduces the concepts of Carousel Types, Carousels, and Carousel
633 Library Mappings. The first can be administered in Server Administration
634 while the latter two can be administerd in Local Administration.
635
636 Carousel Types define the attributes of a carousel, such as whether it is
637 automatically managed and how it is filtered.  A carousel must be associated
638 with a carousel type to function properly.    
639
640 There are five stock Carousel Types:
641
642   * Newly Cataloged Items - titles appear automatically based on the active date of the title’s copies
643   * Recently Returned Items - titles appear automatically based on the mostly recently circulated copy’s check-in scan date and time  
644   * Top Circulated Titles - titles appear automatically based on the most circulated copies in the Item Libraries identified in the carousel definition; titles are chosen based on the number of action.circulation rows created during an interval specified in the carousel definition and includes both circulations and renewals
645   * Newest Items by Shelving Location - titles appear automatically based on the active date and shelving location of the title’s copies 
646   * Manual - titles are added and managed manually by library staff
647
648 While additional Carousel Types can be added using the administration
649 interface, new automatic types currently require additional Perl code
650 to be recognized.
651
652 Carousel definitions allow the operator to specify the type, owner,
653 name and, for automatically-maintained types, the item libraries and
654 shelving locations to look for titles to populate the carousels as
655 well as how far back to look for titles.
656
657 Carousel Library Mappings specify the libraries that the carousel
658 should be displayed out. The visibility of a carousel at a given organizational
659 unit is not automatically inherited by the descendants of that unit.  The
660 carousel’s owning organizational unit is automatically added to the list of
661 display organizational units.
662
663 A server-side job, `refresh_carousels.srfsh`, is available to periodically
664 refresh the contents of automatic carousels.
665
666 Staff Interface
667 +++++++++++++++
668 Each carousel has a record bucket associated with it. Library staff can
669 add titles to a carousel's bucket, and for the manual Carousel Type, that
670 is the only way to populate the carousel. Records added to an automatic
671 carousel's bucket will be removed whenever the carousel is next
672 refreshed.
673
674 Public Catalog
675 ++++++++++++++
676 A new Template Toolkit macro called “carousels” allows the Evergreen
677 administrator to inject the contents of one or more carousels into any point in
678 the OPAC.  The macro will accept the following parameters:
679
680   * `carousel_id`
681   * `dynamic` (Boolean, default value false)
682   * `image_size` (small, medium, or large)
683   * `width` (number of titles to display on a “pane” of the carousel)
684   * `animated` (Boolean to specify whether the carousel should automatically cycle through its panes)
685   * `animation_interval` (the interval (in seconds) to wait before advancing to the next pane)
686
687 If the `carousel_id` parameter is supplied, the carousel with that ID will be
688 displayed.  If `carousel_id` is not supplied, all carousels visible to the public
689 catalog’s `physical_loc` organizational unit is displayed.
690
691 Item Tags Now Display Tag Type Labels
692 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
693 When item tags display in the catalog, they will now include the label from the
694 item tag type.  For example, for a tag of type "Digital Bookplate", here is a
695 comparison of the old and new display:
696
697  * Old output: "(Tag Value Here)"
698  * New output: "Digital Bookplate: (Tag Value Here)"
699
700 The type label is wrapped in a new CSS class `copy_tag_type_label` that allows
701 it to be styled separately from the tag value or hidden entirely.
702
703 New Column in Items Out Display
704 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
705 A new column, Owning Library, is now optionally available for the OPAC
706 Items Out display which shows the owning library of the item (not
707 necessarily the library at which the item was picked up).  Clicking on
708 the library name will provide contact information for that library.
709 This is useful for When a patron has run out of renewals and the
710 owning library, not the patron's home library, is the one with whom
711 the patron will negotiate additional renewals.  If the patron will
712 negotiate additional renewals with their home library or the checkout
713 library, then display of this field is superfluous.
714
715 The display of this column is controlled by the organization setting
716 `opac.show_owning_library_column.`
717
718 SIP
719 ~~~
720
721 Fine Item Detail Enhancements
722 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
723 SIP now suppports enhancements for the Fine Item Detail returned by
724 by Patron Information Response (code 64).  Different manufacturers
725 of self-check systems specify the format of the fine item detail
726 differently.  A new option allows you to select the format to return.
727
728 Configuration
729 +++++++++++++
730 After installation of Evergreen and SIP, in the Evergreen configuration
731 directory (typically /openils/conf) the SIP configuration file
732 oils_sip.xml awaits your modifications to use this feature.
733
734 In the <accounts><login> sections, you can add an attribute of the form
735     `av_format="__<value>__"`
736
737 where __<value>__ is one of thsee values:
738
739 * `3m`
740 * `eg_legacy`
741 * `swyer_a`
742 * `swyer_b`
743
744 For example:
745
746 <login id="sipclient" password="password" institution="gapines" av_format="3m"/>
747
748 If you omit the option, 'eg_legacy' will be used as the default.
749
750 Currently, the behaviour of `eg_legacy` is close to, but not precisely
751 that of `3m`.  The `eg_legacy` produces the pre-enhancement behavior in
752 Evergreen.  Currently, the `swyer_a` behavior is identical to that of
753 `3m`, but there is no guarantee that this will always be the case.
754
755 If you change the brand of your self-check equipment, you may need to
756 change the value of the option to be consistent with the new brand.
757
758 Option to Limit Hold Items to Available
759 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
760
761 A new option has been added to the SIP2 implementation configuration,
762 `msg64_hold_items_available`.  When set, this option will limit the
763 count and list of hold items in the SIP2 patron information response
764 message (64) to only those holds that are available for pickup.  When
765 not set, the full list of the patron's holds will continue to be sent.
766 This option is useful because some self checks expect to receive only
767 the list of available holds in the hold items and have few settings to
768 control the display of holds.
769
770 Acknowledgments
771 ---------------
772 The Evergreen project would like to acknowledge the following
773 organizations that commissioned developments in this release of
774 Evergreen:
775
776 * BC Libraries Cooperative
777 * CW MARS
778 * Georgia Public Library Service
779 * Indiana State Library
780 * King County Library System
781 * MassLNC
782 * Pennsylvania Integrated Library System
783
784
785 We would also like to thank the following individuals who contributed
786 code, translations, documentation, patches, and tests to this release of
787 Evergreen:
788
789 * Felicia Beaudry
790 * A. Bellenir
791 * Jason Boyer
792 * Mark Bucholtz
793 * Christine Burns
794 * Eva Cerninakova
795 * Galen Charlton
796 * Garry Collum
797 * Jeff Davis
798 * Bill Erickson
799 * Jason Etheridge
800 * Rogan Hamby
801 * Abdul Munif Hanafi
802 * Kyle Huckins
803 * Sam Link
804 * Kathy Lussier
805 * Terran McCanna
806 * Andrea Buntz Neiman
807 * Dan Pearl
808 * Mike Risher
809 * Mike Rylander
810 * Geoff Sams
811 * Jane Sandberg
812 * Chris Sharp
813 * Ben Shum
814 * Remington Steed
815 * Jason Stephenson
816 * Josh Stompro
817 * Meg Stroup
818 * Cesar Velez
819 * Dan Wells
820 * Liam Whalen
821
822 We also thank the following organizations whose employees contributed
823 patches:
824
825 * BC Libraries Cooperative
826 * Calvin College
827 * Catalyte
828 * CW MARS
829 * Equinox Open Library Initiative
830 * Georgia Public Library Service
831 * Grand Rapids Public Library
832 * Greater Clarks Hill Regional Library
833 * Indiana State Library
834 * Kenton County Public Library
835 * King County Library System
836 * Linn-Benton Community College
837 * Roanoke Public Library
838 * South Carolina State Library
839
840 We regret any omissions.  If a contributor has been inadvertently
841 missed, please open a bug at http://bugs.launchpad.net/evergreen/
842 with a correction.