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