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