]> git.evergreen-ils.org Git - Evergreen.git/blob - docs/RELEASE_NOTES_3_2.adoc
Docs: adding info about testing action triggers
[Evergreen.git] / docs / RELEASE_NOTES_3_2.adoc
1 Evergreen 3.2 Release Notes
2 ===========================
3 :toc:
4 :numbered:
5
6 Upgrade notes
7 -------------
8
9 Disabling of Legacy XUL Staff Client
10 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11 The legacy XUL staff client is no longer supported in Evergreen
12 3.2.x and the server-side installation no longer supports a
13 direct connection by a version XUL client by default.  *All
14 users of Evergreen 3.2.x are strongly urged to complete their
15 switch to the web staff client as part of upgrading to 3.2.x.*
16
17 Evergreen administrators who for some reason continue to wish
18 to deploy the XUL staff client can do so at their risk by
19 supplying `STAFF_CLIENT_STAMP_ID` during the `make install` step
20 and using `make_release` to create installers for the staff client.
21 However, no community support will be provided for the XUL client.
22
23
24
25 Acq Invoice Reports
26 ~~~~~~~~~~~~~~~~~~~
27
28 Existing Acquisitions report templates that reference the invoice 'complete'
29 field should be modified to check whether the new close_date field is NOT NULL
30 instead.
31
32 At deploy time, all invoices with a 'complete' value of TRUE will have their
33 'close_date' field set to NOW.  A value is required, since this field is
34 now the source of whether an invoice is open or closed.
35
36 However, no values will be applied to the closed_by field for already closed
37 invoices.
38
39
40 Angular6 Base Application
41 ~~~~~~~~~~~~~~~~~~~~~~~~~
42
43 System Admin Upgrade Notes
44 ^^^^^^^^^^^^^^^^^^^^^^^^^^
45
46 Like the AngularJS application, Evergreen releases will come with all
47 web browser staff client code pre-compiled.  Admins only need to add an
48 Apache configuration change.
49
50 Add the following stanza to /etc/apache2/eg_vhost.conf.
51
52 [source,conf]
53 --------------------------------------------------------------------------
54 RewriteCond %{REQUEST_URI}  ^/eg2/
55 RewriteCond %{REQUEST_URI}  !^/eg2/([a-z]{2}-[A-Z]{2})/
56 RewriteRule ^/eg2/(.*) https://%{HTTP_HOST}/eg2/en-US/$1 [R=307,L]
57
58 <Directory "/openils/var/web/eg2/en-US">
59     FallbackResource /eg2/en-US/index.html
60 </Directory>
61 --------------------------------------------------------------------------
62
63 For multi-locale sites, see the bottom section of
64 Open-ILS/examples/apache[_24]/eg_vhost.conf.in for a sample fr-CA
65 configuration.  The section starts with "/eg2/ client setup and locale
66 configuration"
67
68 Developer Upgrade Notes
69 ^^^^^^^^^^^^^^^^^^^^^^^
70
71 Developers building Angular code on existing installations need to update
72 their version of NodeJS by re-running the -developer prereqs installer.
73
74 [source,sh]
75 --------------------------------------------------------------------------
76 sudo make -f Open-ILS/src/extras/Makefile.install <osname>-developer
77 --------------------------------------------------------------------------
78
79
80 Asynchronous Vandelay Imports
81 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
82
83 Users of NGINX as a reverse proxy may need to set a suitable
84 `client_max_body_size` value in the NGINX configuration so that large
85 MARC record uploads are not truncated. Note that this would have
86 always been necessary, but since this feature allows larger files
87 to be more reliably queued and imported, the need to set `client_max_body_size`
88 became more apparent.
89
90
91 Browser Client Settings & Preferences Stored on the Server
92 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
93
94 A new permission APPLY_WORKSTATION_SETTING has been added to control who
95 may apply values to workstation settings.  Use something like the following
96 to apply the permission to all staff accounts (mileage may vary):
97
98 [source,sh]
99 --------------------------------------------------------------------------
100 INSERT INTO permission.grp_perm_map (grp, perm, depth)
101 VALUES (
102     (SELECT id FROM permission.grp_tree WHERE name = 'Staff'), -- name may vary
103     (SELECT id FROM permission.perm_list WHERE code =
104 'APPLY_WORKSTATION_SETTING'),
105     0 -- or 1, 2, etc.
106 );
107 --------------------------------------------------------------------------
108
109 Workstation setting types matching values previously stored in the browser
110 (via localStorage or Hatch) are created as part of this feature.  During
111 upgrade, admins should consider whether any of these new setting types
112 should be transferred to user and/or org unit settings instead.  Setting
113 type changes can be made at any time, but when a setting type is deleted
114 all of its data is deleted, so a change in type means re-applying the
115 settings in the browser client.
116
117 Values stored in the browser will automatically migrate to server settings
118 as each setting is accessed in the browser client.  Once migrated, the
119 in-browser copies are deleted.
120
121 If a setting type does not exist where the browser expects one, the
122 value is stored in-browser instead and a warning is issued in the console.
123
124
125
126
127 New Features
128 ------------
129
130
131 Acquisitions
132 ~~~~~~~~~~~~
133
134 Auto-Cancel Line items When All Copies Are Canceled
135 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
136 When a copy (line item detail) is canceled through the Acquisitions interface, 
137 the parent line item is also canceled if all copies for that line item are also 
138 canceled.  The cancel reason given will come from:
139
140 . The cancel reason for the just-canceled copy if it's a Keep Debits true 
141 cancel reason.
142 . The cancel reason from any other copy on the lineitem that has a Keep 
143 Debits true cancel reason.
144 . The cancel reason for the just-canceled copy if no copies have a Keep
145 Debits true cancel reason.
146
147
148 Invoice Closed Date and Closed By Fields
149 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
150 Acquisitions invoices have 2 new fields:
151
152 * Close Date -- This is set to the time when the ACQ user clicks the "Close"
153   button in the invoice interface.
154   ** This field 'replaces' the existing 'complete' field.  An invoice is
155      considered complete if a close date value is set.
156 * Closed By -- This is set to the logged in staff user who performs the 
157   "Close" action.
158
159 As with the now-defunct 'complete' field, but new fields are cleared in the 
160 event an invoice is reopened.
161
162 These new fields are visible in the invoice interface under the 
163 'Show Details' action for closed invoices.
164
165 Upgrading Invoice Reports
166 +++++++++++++++++++++++++
167
168 Existing report templates that reference the invoice 'complete' field 
169 should be modified to check whether the new close_date field is NOT NULL
170 instead.
171
172 Other Upgrade Considerations
173 ++++++++++++++++++++++++++++
174
175 At deploy time, all invoices with a 'complete' value of TRUE will have their
176 'close_date' field set to NOW.  A value is required, since this field is
177 now the source of whether an invoice is open or closed.
178
179 However, no values will be applied to the closed_by field for already closed
180 invoices.
181
182
183
184 Patron Acquisitions Requests
185 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
186
187 The existing interface for staff-mediated patron acquisition requests has been replaced in the web staff client with a re-implementation written in AngularJS, with some minor bug fixes (including access from the Patron interface) and other improvements.
188
189
190
191 Administration
192 ~~~~~~~~~~~~~~
193
194 Hold Targeter Script has been Replaced
195 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
196
197 The original hold_targeter.pl script has been renamed to
198 "hold_targeter_legacy.pl", and the new-style hold targeting
199 script has been renamed to "hold_targeter.pl".  Administrators
200 will want to change their crontab files to reflect this.
201
202 .Previous Syntax
203 [source,bash]
204 ---------------------------------------------------------------------
205 -*/15 * * * *   . ~/.bashrc && $EG_BIN_DIR/hold_targeter.pl $SRF_CORE
206 ---------------------------------------------------------------------
207
208 .New Syntax
209 [source,bash]
210 -----------------------------------------------------------------------------------
211 -*/15 * * * *   . ~/.bashrc && $EG_BIN_DIR/hold_targeter.pl --osrf-config
212 $SRF_CORE
213 -----------------------------------------------------------------------------------
214
215 The sample crontab file at `Open-ILS/examples/crontab.example` reflects
216 this change.
217
218
219
220 Architecture
221 ~~~~~~~~~~~~
222
223 Angular6 Base Application
224 ^^^^^^^^^^^^^^^^^^^^^^^^^
225 With Evergreen 3.2, we introduce the initial infrastructure for
226 migrating to a new version of Angular.  The structure of the new code
227 is quite different from the AngularJS code and it runs as a separate
228 application which communicates with the AngularJS app via shared storage
229 and in-page URLs that link back and forth between the two.
230
231 For this release, users will only be directed to the new Angular site
232 when navigating to Administration => Acquisitions Administration.  Once
233 on this page, some of the admin interfaces will presented as Angular6
234 interfaces, while others will direct users back to the AngularJS
235 application.  The Angular6 interfaces are the simpler, grid-based
236 interfaces.
237
238 Acquisitions Admin Angular6 Interfaces
239 ++++++++++++++++++++++++++++++++++++++
240
241  * Cancel Reasons
242  * Claim Event Types
243  * Claim Policies
244  * Claim Policy Actions
245  * Claim Types
246  * Currency Types
247  * EDI Accounts
248  * EDI Messages
249  * Exchange Rates
250  * Fund Tags
251  * Invoice Item Types
252  * Invoice Payment Method
253  * Line Item Alerts
254  * Line Item MARC Attribute Definitions
255
256 System Admin Upgrade Notes
257 ++++++++++++++++++++++++++
258
259 Like the AngularJS application, Evergreen releases will come with all
260 web browser staff client code pre-compiled.  Admins only need to add an
261 Apache configuration change.
262
263 Add the following stanza to /etc/apache2/eg_vhost.conf.
264
265 [source,conf]
266 --------------------------------------------------------------------------
267 RewriteCond %{REQUEST_URI}  ^/eg2/
268 RewriteCond %{REQUEST_URI}  !^/eg2/([a-z]{2}-[A-Z]{2})/
269 RewriteRule ^/eg2/(.*) https://%{HTTP_HOST}/eg2/en-US/$1 [R=307,L]
270
271 <Directory "/openils/var/web/eg2/en-US">                                       
272     FallbackResource /eg2/en-US/index.html                                     
273 </Directory>  
274 --------------------------------------------------------------------------
275
276 For multi-locale sites, see the bottom section of
277 Open-ILS/examples/apache[_24]/eg_vhost.conf.in for a sample fr-CA
278 configuration.  The section starts with "/eg2/ client setup and locale
279 configuration"
280
281 Developer Upgrade Notes
282 +++++++++++++++++++++++
283
284 Developers building Angular code on existing installations need to update 
285 their version of NodeJS by re-running the -developer prereqs installer.
286
287 [source,sh]
288 --------------------------------------------------------------------------
289 sudo make -f Open-ILS/src/extras/Makefile.install <osname>-developer
290 --------------------------------------------------------------------------
291
292
293 Cataloging
294 ~~~~~~~~~~
295
296 Add UPC to z39.50 search for OCLC and LOC
297 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
298 Add UPC as a search attribute for both OCLC and LOC targets in
299 z39.50 for cataloging.
300
301
302 Asynchronous Vandelay Imports
303 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
304
305 Vandelay imports are now monitored from the browser client asynchronously,
306 meaning the client requests updates from the server instead of waiting for 
307 the server to respond to the original import request.  This changes allows 
308 for incremental progress updates in the browser client.
309
310 New Database Table
311 ++++++++++++++++++
312
313 This adds a new database table vandelay.session_tracker for tracking
314 in-progress vandelay upload activity.  A new tracker row is added for
315 each of "upload", "enqueue", and "import" actions, linked for a given
316 session by the value stored in the "session_key" field.
317
318 The table tracks other potentially useful data, like the staff member
319 and workstation where the action was performed.
320
321 Upgrade notes
322 +++++++++++++
323 Users of NGINX as a reverse proxy may need to set a suitable
324 `client_max_body_size` value in the NGINX configuration so that large
325 MARC record uploads are not truncated. Note that this would have
326 always been necessary, but since this feature allows larger files
327 to be more reliably queued and imported, the need to set `client_max_body_size`
328 became more apparent.
329
330
331
332
333 Support for Last Inventory Date
334 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
335 Evergreen now provides an option to add an inventory date to items to facilitate
336 the process of performing inventory in libraries. Staff can add an inventory
337 date to an item in one of the following ways:
338  * From the check in screen, there is now an Update Inventory check in modifier.
339 When selected, scanned barcodes will have the current date/time added as the
340 inventory date while the item is checked in.
341  * From the Item Status screen, an action is available to add the current 
342 date/time as the inventory date to selected items.
343
344 This new feature will also store the workstation that was used when the
345 inventory date was updated.
346
347
348
349 Parallel Ingest with pingest.pl
350 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
351 A program named pingest.pl is now installed to allow faster bibliographic record
352 ingest.  It performs ingest in parallel so that multiple batches can
353 be done simultaneously.  It operates by splitting the records to be
354 ingested up into batches and running all of the ingest methods on each
355 batch.  You may pass in options to control how many batches are run at
356 the same time, how many records there are per batch, and which ingest
357 operations to skip.
358
359 NOTE: The browse ingest is presently done in a single process over all
360 of the input records as it cannot run in parallel with itself.  It
361 does, however, run in parallel with the other ingests.
362
363 Command Line Options
364 ++++++++++++++++++++
365 pingest.pl accepts the following command line options:
366
367 --host::
368     The server where PostgreSQL runs (either host name or IP address).
369     The default is read from the PGHOST environment variable or
370     "localhost."
371
372 --port::
373     The port that PostgreSQL listens to on host.  The default is read
374     from the PGPORT environment variable or 5432.
375
376 --db::
377     The database to connect to on the host.  The default is read from
378     the PGDATABASE environment variable or "evergreen."
379
380 --user::
381     The username for database connections.  The default is read from
382     the PGUSER environment variable or "evergreen."
383
384 --password::
385     The password for database connections.  The default is read from
386     the PGPASSWORD environment variable or "evergreen."
387
388 --batch-size::
389     Number of records to process per batch.  The default is 10,000.
390
391 --max-child::
392     Max number of worker processes (i.e. the number of batches to
393     process simultaneously).  The default is 8.
394
395 --skip-browse::
396 --skip-attrs::
397 --skip-search::
398 --skip-facets::
399 --skip-display::
400     Skip the selected reingest component.
401
402 --start-id::
403     Start processing at this record ID.
404
405 --end-id::
406     Stop processing when this record ID is reached.
407
408 --pipe::
409     Read record IDs to reingest from standard input.  This option
410     conflicts with --start-id and/or --end-id.
411
412 --max-duration::
413     Stop processing after this many total seconds have passed.  The
414     default is to run until all records have been processed.
415
416 --help::
417     Show the help text.
418
419
420
421 View Authority Record by Database ID
422 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
423
424 A new interface allows catalogers to retrieve a specific
425 authority record using its database ID.  Catalogers can
426 find those IDs in subfield $0 of matching fields in
427 bibliographic records.
428
429 To use the new authority record viewer:
430
431 . Click *Cataloging -> Retrieve Authority Record by ID*.
432 . Type in the ID number of the authority record you are
433 interested in. Don't include any prefixes, just the ID
434 number.
435 . Click *Submit*.
436 . View or edit the authority record as needed.
437
438
439
440 Circulation
441 ~~~~~~~~~~~
442
443
444
445 Autorenewal of Loans
446 ^^^^^^^^^^^^^^^^^^^^
447 Circulation policies in Evergreen can now be configured to automatically renew
448 certain items checked out on patron accounts. Circulations will be renewed
449 automatically up to a custom limit (the `max_auto_renewal` field) and patrons
450 will not need to log in to their OPAC accounts or ask library staff to manually
451 renew materials.
452
453 Two new action triggers have been added to Evergreen that permit the Auto-Renew
454 feature. They can be found, configured, and enabled in Administration>Local
455 Administration>Notifications/Action Triggers. They are named **Autorenew** and
456 **AutorenewNotify**.
457
458 The **Autorenew** A/T definition uses the `checkout.due` hook to automatically
459 validate and renew (in the reactor) circulations on the day they are due,
460 grouped by user. The output events of this definition is is the input used by
461 the related **AutorenewNotify** A/T that simply uses a new hook called
462 `autorenewal` to notify patrons via email of their currently due or
463 auto-renewed items.
464
465 In the webstaff's Patron Items Out page, the new column `AutoRenewalsRemaining`
466 indicates how many autorenewals are available for a particular circulation.
467
468
469
470
471
472 Emergency Closing Handler
473 ^^^^^^^^^^^^^^^^^^^^^^^^
474
475 Staff are provided with interfaces and mechanisms to create library closings
476 that, in addition to affecting future circulation and booking due dates, and
477 hold shelf expirations, will automatically move existing circulation and booking
478 due dates and hold shelf expiration times. This new functionality is
479 conceptually described as Emergency Closings and business logic implementing it
480 as the Emergency Closing Handler. It contains additions and adjustments to the
481 user interface, business logic, and database layers. Access to this
482 functionality is available through the Closed Dates Editor interface in the
483 staff client which has been ported to AngularJS.
484
485 Overview
486 ++++++++
487
488 This development has created new business logic code to inspect, in real time,
489 existing circulation, booking, and hold records, and modify such date and time
490 stamps so that the circulation, booking, or hold will end in the same state it
491 would have if the closing had existed at the time the circulation or booking
492 occurred, or the hold was placed and captured. Of specific note, hourly loans
493 will have their due date adjusted to be the end of the day following the
494 closing.
495
496 When the Emergency Closing is saved, any fines accrued during the closing may be
497 voided, as settings dictate, with the exception of circulations that have been
498 marked as LOST or LONG OVERDUE. That is, even for LOST and LONG OVERDUE
499 circulations with due dates that fall within the Emergency Closing, no fine
500 adjustment will be applied. Emergency Closing processing is permanent, and
501 cannot be rolled back.
502
503 This functionality is explicitly initiated by staff action. If staff do not
504 request an Emergency Closing, existing circulations, bookings, and holds will
505 not be processed and adjusted. However, if staff request any Closing that starts
506 nearer in time than the length of the longest circulation duration configured
507 for use in the Evergreen instance they will be prompted with the option to
508 create the closing as an Emergency Closing.
509
510 Action/Trigger hooks have been created for circulations and bookings that are
511 adjusted by the Emergency Closing Handler. These will facilitate the creation of
512 notifications to patrons that the due date has changed and to alert them to
513 potential changes in accrued fines.
514
515 Booking start dates are explicitly ignored in this implementation. Because an
516 Emergency Closing is, by its nature, an unexpected event, it will be up to staff
517 to address any bookings which intersect with a new Emergency Closings. Reports
518 can be used to identify booking start dates that overlap with a closing and that
519 may require staff intervention.
520
521 Staff requesting and Emergency Closing must have the new EMERGENCY_CLOSING
522 permission.  Some text describing the feature.
523
524
525
526
527
528 Patron Preferred Name and Name Search Keywords
529 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
530
531 Preferred Name
532 ++++++++++++++
533
534 Adds a new set of patron preferred name fields for prefix, first,
535 middle, last, and suffix allowing patrons to provide preferred name
536 information.  Preferred names are optional and each acts as an overlay
537 to the analogous primary name field, making it possible to provide
538 preferred name values for individual fields.
539
540 For example, a patron named William Erickson may have a preferred first
541 name (pref_first_given_name) of Bill, in which case the preferred name
542 would be Bill Erickson.  Note a preferred last name is not required in
543 this case as the code uses primary name values as defaults when not
544 replaced with a preferred version.
545
546 * Patrons will see primary names displayed in the catalog when set.
547 * Staff will see both primary name and preferred name in the patron
548   summary side bar.
549 * Patron searches for any given name field will search both the primary
550   and preferred name data.
551 * Preferred name fields are available in Action/Trigger templates and
552   are present in various patron-focused print templates.
553
554 Name Keywords
555 ++++++++++++++
556
557 Adds a new field to store miscellaneous patron name search terms.  These
558 values are only for searching and do not appear in any interfaces, apart
559 from the patron summary side bar and the patron edit UI.
560
561 Included is a new search field in the patron search UI which searches
562 keyword values and all other name fields.  It's essentially a global patron
563 name keyword search.
564
565
566
567
568 Client
569 ~~~~~~
570
571 Disabling of legacy XUL staff client
572 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
573 The legacy XUL staff client is no longer supported in Evergreen
574 3.2.x and the server-side installation no longer supports a
575 direct connection by a version XUL client by default.  All
576 users of Evergreen 3.2.x are strongly urged to complete their
577 switch to the web staff client as part of upgrading to 3.2.x.
578
579 Evergreen administrators who for some reason continue to wish
580 to deploy the XUL staff client can do so at their risk by
581 supplying `STAFF_CLIENT_STAMP_ID` during the `make install` step
582 and using `make_release` to create installers for the staff client.
583 However, no community support will be provided for the XUL client.
584
585
586
587
588 Permission Group Display Entries
589 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
590 In some cases, it is useful to have the ability to reorder permission, or to make
591 only specific groups available in the permission group selector for specific
592 Org Units. An interface has been made available to allow this.
593
594 Group Tree Display Entry Interface
595 ++++++++++++++++++++++++++++++++++
596
597 Permission Group Display Entries can be reordered, added, or removed via
598 _Administration -> Local Admin -> Permission Tree Display Entries_.
599 Select the Org Unit you wish to edit the entries in.
600
601 Entries may be added using the Add functionality, creating entries based
602 on permission groups that have not been added to the tree for the Org
603 Unit you wish to add them to.
604
605 image::media/pgtde_01.png[Group Tree Display Entry Admin UI]
606
607 Moving an Entry
608 +++++++++++++++
609 Moving an entry will shift its position up or down in the patron profile
610 selector for a given Org Unit.
611
612 * Select an entry
613 * Press either the *Move Up* or *Move Down* button. The entry will be 
614 moved up or down, accordingly.
615 * Click *Save* to save your edits.  
616
617 NOTE: You may only move up or down entries that have sibling entries.
618
619 Removing an Entry
620 +++++++++++++++++
621 If you want a particular Org Unit to not have access to specific
622 entries, you may remove an entry. Removing an entry will remove it from 
623 view. The entry will be removed from the database.
624
625 * Select an entry and press the *Remove* button.
626
627 Adding an Entry
628 +++++++++++++++
629 You may add entries from permission groups that are not currently
630 reflected in the permission group tree. This is useful for moving 
631 entries to different parents, or making them root entries.
632
633 image::media/pgtde_02.png[Add Entry modal]
634
635 * If desired, select an entry to be used as the parent entry. 
636 * Press the *Add* button. 
637 * Select a permission group from the dropdown.
638 * If you've selected a parent entry, you may check the *Add Root Entry*
639 box to override that parent and add the entry on the root level. 
640 * If you did not select a parent entry, the entry will be added on the root 
641 level of the tree.
642
643
644
645 Browser Client Settings & Preferences Stored on the Server
646 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
647 Browser client settings and preferences that should persist over time are
648 now stored as settings on the server.  This allows settings to follow
649 users and workstations and reduces problems associated with losing settings 
650 as a result of clearing browser data.
651
652 The browser client honors setting values stored as user settings, workstation
653 settings, and org unit settings, depending on which setting types are
654 locally configured.
655
656 Setting Types
657 +++++++++++++
658
659 * No setting can be both a user and workstation setting.  They are mutually
660   exclusive.
661 * Any setting can be an org unit setting in addition to being a user or
662   workstation setting.
663
664 Read-Only Settings
665 ++++++++++++++++++
666
667 Read-only settings are useful for defining values that staff can use but
668 not modify.  For example, admins may wish to prevent users from locally
669 modifying the grid configuration for a given interface so it remains
670 consistent for all users.
671
672 A setting is read-only when an org unit setting type exists (regardless of 
673 whether a value is applied) and no user or workstation setting type exists.
674
675 Server-Stored Workstation Settings Workstation Admin View
676 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
677
678 There's a new "Server Workstation Prefs" tab to the stored preferences
679 workstation admin interface.  From here, users can view which
680 preferences are stored as server-stored workstation preferences and
681 delete select values.
682
683 Upgrade Notes
684 +++++++++++++
685
686 A new permission APPLY_WORKSTATION_SETTING has been added to control who
687 may apply values to workstation settings.  Use something like the following
688 to apply the permission to all staff accounts (mileage may vary):
689
690 [source,sh]
691 --------------------------------------------------------------------------
692 INSERT INTO permission.grp_perm_map (grp, perm, depth) 
693 VALUES (
694     (SELECT id FROM permission.grp_tree WHERE name = 'Staff'), -- name may vary
695     (SELECT id FROM permission.perm_list WHERE code = 'APPLY_WORKSTATION_SETTING'),
696     0 -- or 1, 2, etc.
697 );
698 --------------------------------------------------------------------------
699
700 Workstation setting types matching values previously stored in the browser
701 (via localStorage or Hatch) are created as part of this feature.  During
702 upgrade, admins should consider whether any of these new setting types 
703 should be transferred to user and/or org unit settings instead.  Setting
704 type changes can be made at any time, but when a setting type is deleted
705 all of its data is deleted, so a change in type means re-applying the 
706 settings in the browser client.
707
708 Values stored in the browser will automatically migrate to server settings
709 as each setting is accessed in the browser client.  Once migrated, the
710 in-browser copies are deleted.  
711
712 If a setting type does not exist where the browser expects one, the 
713 value is stored in-browser instead and a warning is issued in the console.
714
715
716 More consistent terminology in the client
717 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
718 Terminology has been updated in the staff client so that we consistently use
719 the same name to describe the same thing. The following updates have been made:
720
721   * The term 'item' is now consistently used to describe the barcoded entity
722 that had been previously been called both an 'item' and a 'copy'. As a result,
723 we now use the terms 'item buckets', 'item tags', and 'item alerts'.
724   * The term 'volume' is no longer used in the client, with the exception of
725 serials, where the term is used to describe serial volumes. The term 'call
726 number' will replace volume in most other places.
727   *'Holdings' is a more general term used to describe a combination of items
728 and call numbers.
729   * The term 'Shelving Location' is used consistently in favor of 'Copy
730 Location.'
731
732
733
734
735 OPAC
736 ~~~~
737
738
739
740 Batch Actions In the Public Catalog
741 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
742 The public catalog now displays checkboxes on the bibliographic and
743 metarecord constituents results pages. Selecting one or more titles
744 by using the checkboxes will dynamically add those title to the
745 temporary list, which is now renamed the cart.
746
747 Above the results lists there is now a bar with a select-all checkbox,
748 a link to the cart management page that also indicates the number of
749 of titles in the cart, and a link to remove from the cart titles that
750 are selected on the currently displayed results page.
751
752 The search bar now includes an icon of a cart and displays the number
753 of titles currently in the cart. Next to that icon is a menu of cart
754 actions.
755
756 The cart actions available are Place Hold, Print Title Details,
757 Email Title Details, Add Cart to Saved List, and Clear Cart. In the
758 web staff client, the cart actions also include Add Cart to Bucket.
759 When an action is selected from this menu, the user is given an
760 opportunity to confirm the action and to optionally empty the cart
761 when the action is complete. The action is applied to all titles
762 in the cart.
763
764 Clicking on the cart icon brings the user to a page listing the
765 titles in the cart. From there, the user can select specific records
766 to request, print, email, add to a list, or remove from the cart.
767
768 The list of actions on the record details page now provides separate
769 links for adding the title to a cart or to a permanent list.
770
771 The permanent list management page in the public catalog now also
772 includes batch print and email actions.
773
774 Additional information
775 ++++++++++++++++++++++
776 * The checkboxes do not display on the metarecord results page, as
777   metarecords currently cannot be put into carts or lists.
778 * The checkboxes are displayed only if JavaScript is enabled. However,
779   users can still add items to the cart and perform batch actions on
780   the cart and on lists.
781 * A template `config.tt2` setting, `ctx.max_cart_size`, can be used to
782   set a soft limit on the number of titles that can be added to the
783   cart. If this limit is reached, checkboxes to add more records to the
784   cart are disabled unless existing titles in the cart are removed
785   first. The default value for this setting is 500.
786
787 Developer notes
788 +++++++++++++++
789
790 This patch adds to the public catalog two routes that return JSON
791 rather than HTML:
792
793 * `GET /eg/opac/api/mylist/add?record=45`
794 * `GET /eg/opac/api/mylist/delete?record=45`
795
796 The JSON response is a hash containing a mylist key pointing to the list
797 of bib IDs of contents of the cart.
798
799 The record parameter can be repeated to allow adding or removing
800 records as an atomic operation. Note that this change also now available
801 to `/eg/opac/mylist/{add,delete}`
802
803 More generally, this adds a way for EGWeb context loaders to specify that
804 a response should be emitted as JSON rather than rendering an HTML
805 page using `Template::Toolkit`.
806
807 Specifically, if the context as munged by the context loader contains
808 a `json_response` key, the contents of that key will to provide a
809 JSON response. The `json_response_cookie` key, if present, can be used
810 to set a cookie as part of the response.
811
812 Template Toolkit processing is bypassed entirely when emitting a JSON
813 response, so the context loader would be entirely responsible for
814 localization of strings in the response meant for direct human
815 consumption.
816
817
818
819
820 New class for searchbar when on the homepage
821 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
822
823 This adds the `.searchbar-home` class to the div that contains the searchbar
824 when on the homepage.  This allows sites to customize the searchbar differently
825 on the homepage than in other places the search bar appears (for example,
826 offering a large, Google-style search bar on the homepage only).
827
828
829 Username Login Hint
830 ^^^^^^^^^^^^^^^^^^^
831 To make customization easier, the username hint on the OPAC login page ("Please
832 include leading zeros...") has been moved to a separate TT2 template.  If you
833 have customized the hint text, you will need to add your modifications to
834 username_hint.tt2.
835
836
837
838 Acknowledgments
839 ---------------
840 The Evergreen project would like to acknowledge the following
841 organizations that commissioned developments in this release of
842 Evergreen:
843
844 * BC Libraries Cooperative
845 * Consortium Of Ohio Libraries
846 * CW MARS
847 * Georgia Public Library Service
848 * Indiana State Library
849 * Lake Agassiz Regrional Library
850 * MassLNC
851 * North Texas Library Consortium
852 * Northwest Regional Library
853 * Pennsylvania Integrated Library System
854 * South Carolina State Library
855
856 We would also like to thank the following individuals who contributed
857 code, translations, documentations patches and tests to this release of
858 Evergreen:
859
860 * Felicia Beaudry
861 * Jason Boyer
862 * Andrea Buntz Neiman
863 * Eva Cerninakova
864 * Galen Charlton
865 * Garry Collum
866 * Jeff Davis
867 * Bill Erickson
868 * Jason Etheridge
869 * Lynn Floyd
870 * Jeff Godin
871 * Blake Graham-Henderson
872 * Francisco J Guel-Mendoza
873 * Kyle Huckins
874 * Mary Jinglewski
875 * Angela Kilsdonk
876 * Kathy Lussier
877 * Katie G. Martin
878 * Jennifer Pringle
879 * Morkor Quarshie
880 * Mike Rylander
881 * Jane Sandberg
882 * Chris Sharp
883 * Ben Shum
884 * Remington Steed
885 * Jason Stephenson
886 * Cesar Velez
887 * Dan Wells
888 * Stephan Woidowski
889
890 We also thank the following organizations whose employees contributed
891 patches:
892
893 * BC Libraries Cooperative
894 * Calvin College
895 * Catalyte
896 * Equinox Open Library Initiative
897 * Government of Manitoba
898 * Kenton County Public Library
899 * King County Library System
900 * Linn-Benton Community College
901 * MassLNC
902 * Sigio
903
904 We regret any omissions.  If a contributor has been inadvertently
905 missed, please open a bug at http://bugs.launchpad.net/evergreen/
906 with a correction.
907