Document log redaction XML chunk for opensrf_core.xml
[working/Evergreen.git] / docs / RELEASE_NOTES_2_3.txt
1 Release notes
2 =============
3 :toc:
4 :numbered:
5
6 Upgrade notes
7 -------------
8
9 Log Protect (redaction)
10 ~~~~~~~~~~~~~~~~~~~~~~~
11 To prevent sensitive information such as passwords from being logged
12 in general activity logs, add the following XML chunk to the bottom of
13 `opensrf_core.xml`, just inside the `<config>` section:
14
15 [source, xml]
16 ----------------------------------------------------------------
17   ...
18   </routers>
19   <shared> <!-- new block starts here -->
20     <log_protect>
21       <match_string>open-ils.auth.authenticate.verify</match_string>
22       <match_string>open-ils.auth.authenticate.complete</match_string>
23       <match_string>open-ils.auth_proxy.login</match_string>
24       <match_string>open-ils.actor.user.password</match_string>
25       <match_string>open-ils.actor.user.username</match_string>
26       <match_string>open-ils.actor.user.email</match_string>
27       <match_string>open-ils.actor.patron.update</match_string>
28       <match_string>open-ils.cstore.direct.actor.user.create</match_string>
29       <match_string>open-ils.cstore.direct.actor.user.update</match_string>
30       <match_string>open-ils.cstore.direct.actor.user.delete</match_string>
31     </log_protect>
32   </shared> <!-- new block ends here -->
33 </config>
34 ----------------------------------------------------------------
35
36 New features
37 ------------
38
39 Acquisitions
40 ~~~~~~~~~~~~
41
42 ACQ Invoice Inline Lineitem Search and Add
43 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44
45 The Invoice UI is how composed of two tabs, the main invoice tab and a new
46 Search tab.  The search tab consists of a subset of the Acquisitions unified
47 search interface.  The goal is to allow users to search for lineitems to
48 invoice.  Search results may be added directly to the growing invoice.  A number of small usability features are included.
49
50 Features
51 ++++++++
52
53     * Option (default) to limit searches to invoiceable items.  
54         ** These are lineitems that are not cancelled, have at least one invoiceable copy, linked to a PO whose provider matches that of the current invoice, and are not already linked to the current invoice.
55     * Search defaults to last-run search (on workstation).
56     * New Lineitem Detail filter options
57     * Sort searches by lineitem number (default) and title.
58     * There is a new Expected Cost field which includes both the total invoiced cost plus the anticipated cost of lineitems as they are added.
59     * New Price per Copy field
60     * Lineitem count field
61     * Show / Hide Invoice details button.  Details are displayed by default, but hidden when the user enters the search tab.  From there it remains hidden until manually shown (or a new invoice is opened).
62     * A new "Save & Clear" button which saves the current invoice then clears the invoice display to create a new invoice.
63     * Provider, shipper, and receiver fields are auto-populated from the first-added invoice data (when not already set).
64     * Totals are now read-only, since they are derived from existing data (and are informational only).
65
66
67 EDI Invoices
68 ^^^^^^^^^^^^
69
70 The same setup that is required today for retrieving and reacting to EDI Order
71 Response messages (ORDRSP) will also react to Invoices (INVOIC).
72
73 This essentially means you must have a Provider (acq.provider) configured with
74 an EDI Account (acq.edi_account) containing login credentials for a vendor, you must have the edi_webrick service running (EDI translator), and you must have
75 the edi_pusher script run periodically by cron.
76
77 An open Evergreen invoice will be created for a each EDI Invoice message.
78 Evergreen invoice entries will be created for each lineitem detected in the
79 EDI message if that lineitem can be linked to a known Evergreen lineitem in
80 your system.  An Evergreen invoice item will be created for a whole-invoice
81 tax.
82
83 Enriched EDI
84 ^^^^^^^^^^^^
85
86 Support for Enriched EDI with copy-level data via EDI in ORDER messages.
87
88 Encumbrance-only Rollover
89 ^^^^^^^^^^^^^^^^^^^^^^^^^
90
91 A new Library Setting allows the year-end close-out operation to roll over
92 encumbrances while dumping any unspent money.
93
94 Fund Report
95 ^^^^^^^^^^^
96
97 A new IDL reporter view that provides summary information for funds for
98 reporting. The resulting table looks like a fund with four additional fields:
99 allocated_total, spent_total, encumbrance_total, and combined_balance.
100
101 OPAC
102 ~~~~
103
104 TPAC: Simplified CSS Color Customization
105 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
106 CSS colors are now defined as a pair of Template::Toolkit files,
107 `Open-ILS/src/templates/opac/css/styles.css.tt2` and
108 `Open-ILS/src/templates/opac/parts/css/colors.tt2`. Evergreen administrators
109 can customize the color scheme for a given skin by copying `colors.tt2` into a
110 template override directory and adjusting the colors as desired.
111
112 Change required to eg_vhost.conf
113 ++++++++++++++++++++++++++++++++
114 To enable Apache to pass the CSS file to the Template::Toolkit handler, you
115 must remove `.css` from the list of file extensions that should not be passed
116 to a handler in `eg_vhost.conf` as follows:
117
118 .From
119 ------------------------------------------------------------------------------
120 <LocationMatch ^/eg/.*(\.js|\.css|\.html|\.xhtml|\.xml|\.jpg|\.png|\.gif)$>
121     SetHandler None
122 </LocationMatch>
123 ------------------------------------------------------------------------------
124
125 .To
126 ------------------------------------------------------------------------------
127 <LocationMatch ^/eg/.*(\.js|\.html|\.xhtml|\.xml|\.jpg|\.png|\.gif)$>
128     SetHandler None
129 </LocationMatch>
130 ------------------------------------------------------------------------------
131
132 After making this change, restart Apache to make the change take effect.
133
134
135 Add to Permanent Bookbag
136 ^^^^^^^^^^^^^^^^^^^^^^^^
137
138 TPAC was modified to allow a logged-in user to add records from search
139 results and record summary screens to their permanent bookbags rather
140 than to a temporary bookbag that goes away when logged out.
141
142 Bookbag Selection Menu
143 ++++++++++++++++++++++
144
145 The search results and record summary screens were modified so that
146 the "Add to my list" will show a menu when moused over by a logged-in
147 user.  This menu will display the option to add to a temporary
148 bookbag, the user's default list (if any), up to ten of the user's
149 other bookbags, a "See all" option to allow the user to choose one of
150 the bags not on the menu, and to create a new list and add the record
151 to it.
152
153 Choosing the temporary list from the menu will add the record to the
154 temporary my list as TPAC does before the addition of this feature.
155
156 Choosing a named list will add the record to the chosen list.
157
158 Choosing "See all" or "Add to new list" will take the user to their My
159 Lists page.  (The only difference being that "See all" will actually
160 list all of the user's bookbags if they have more than the current
161 limit.)  The My Lists page will have a new button "Add to this list"
162 next to each of their existing lists.  In addition, if the user
163 creates a new list on this screen, the selected record will
164 automatically be added to this new list.
165
166 You can tell all of the above is working if you are redirected to your
167 search results or record summary after adding to a list.  If there was
168 a problem, you will get either an error page or will see your My Lists
169 page.
170
171 Designating a Default Bookbag/list
172 ++++++++++++++++++++++++++++++++++
173
174 The user's My List screen has had a 'Make Default List' button added
175 for each list.  Clicking the button will cause that list to be
176 registered as the user's default list.  This is the list that will be
177 added to when a user chooses the Default List option on the Add to my
178 list menu in search or record summary.
179
180 The current default list has a 'Remove Default List' button next to
181 it.  Clicking this button will unset the default status of the list
182 and return to a state of having no default list.
183
184 One handy way that users may want to use this feature is to create a
185 new list, and then designate it as the default.  This list could then
186 be used to add records from searches based on a current topic of
187 interest.  Changing the default list is so easy that users may want to
188 do so when changing search topics in order to keep their results
189 better organized.
190
191 A Note on CSS Styles
192 ++++++++++++++++++++
193
194 If a user has a bookbag with an overly long name, the end of it will
195 jut out past the right margin of the menu in FireFox and several other
196 browsers.  To change this behavior, you may want to edit the `.popmenu
197 li:hover li a` css entry in `web/css/skin/default/opac/style.css` by
198 adding an `overflow` property.  If you desire to have the longer names
199 clipped to the size ofthe menu then add `overlow: hidden`.  If you
200 prefer to have a scroll bar for oversized entries, then add `overflow:
201 auto`.
202
203
204 Warn When Adding to a Temporary Bookbag
205 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
206
207 TPAC has been modified so that a user will see a warning before adding
208 a record to a temporary bookbag.  This message serves to inform the
209 user that they are adding to a temporary list that will disappear when
210 their session ends.
211
212 A new org. unit setting has been added,
213 opac.patron.temporary_list_warn, that will enable this warning when
214 set.  Sites may choose not to display this warning.
215
216 The user may also set a preference in their search preferences to
217 disable this warning.  The setting only works when a user is logged
218 in, of course.
219
220 Kid's OPAC
221 ^^^^^^^^^^
222
223 The Kids OPAC (KPAC) is a public catalog search that was designed for children
224 and teens.  Colorful menu items,large buttons, and simple navigation make this
225 an appealing search interface for kids.  Librarians will appreciate the flexible
226 configuration of the KPAC.  Librarians can create links to canned search results
227 for kids and can apply these links by branch.  The KPAC uses the same infrastructure
228 as the Template Toolkit OPAC (TPAC), the adult catalog search, so you can easily
229 extend the KPAC using the code that already exists in the TPAC.  Finally, third
230 party content, such as reader reviews, can be integrated into the KPAC.
231
232
233 Locale picker
234 ^^^^^^^^^^^^^
235
236 In situations in which more than a single locale is configured, the TPAC header
237 will display a locale picker based on the registered locales. 
238
239 Hidden Place Hold Links
240 ^^^^^^^^^^^^^^^^^^^^^^^^^
241
242 The title-level 'Place Hold' link in TPAC will be hidden on the search result
243 and record summary screens when there are no holdable copies on the bib. This
244 is based on the copy, status and location holdable flags.
245
246 When enabled in config.tt2, the 'Place Holds' link in TPAC will also be hidden
247 if copies are available in the search location. 
248
249 Library Selectors in Advanced Searches
250 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
251
252 The library selector is now available on the numeric and expert search pages.
253
254 Journal Title Search
255 ^^^^^^^^^^^^^^^^^^^^
256
257 A journal title search is now available as a stock TPAC filter.
258
259 Public Patron Notes
260 ^^^^^^^^^^^^^^^^^^^
261
262 Public patron notes are now visible in the 'Account Summary' box of 'My
263 Account'.
264
265 Auto-Override Permissable Patron Hold Fail Events
266 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
267
268 A new Library Setting is available that tells TPAC to automatically override
269 hold placement failure events in cases where the patron has the permission to
270 do so. The goal is to skip the confirmation step previously required by patrons
271 when overriding a TPAC hold.
272
273 Cataloging
274 ~~~~~~~~~~
275
276 Z39.50 Source Attributes Management Interface
277 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
278
279 There is a new interface for managing Z39.50 attributes on a Z39.50
280 source.  The interface is linked from each source name in the Z39.50
281 Source administrative interface.
282
283 Cloning
284 +++++++
285
286 In addition to attribute creation, deletion, and editing, it's also 
287 possible to clone a set of attributes from one source into another.
288 When cloning, any attributes present in the cloned source that are
289 not present in the destination source are copied into the destination 
290 source.
291
292 Vandelay (MARC Import/Export) Copy Overlay
293 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
294
295 Vandelay Item Attributes (Cataloging -> MARC Import / 
296 Export -> Import Item Attribute Definitions) contains 
297 a new field called "Overlay Match ID".  The presence of data 
298 in this field extracted from an import-item copy indicates 
299 to the Vandelay import process that a copy overlay is requested 
300 instead of new copy creation.  The value for the field is the 
301 copy id for bib record queues and the ACQ lineitem_detail ID for 
302 Acquisitions Queues.  For either type of queue, however, overlay 
303 occurs against a real copy (asset.copy).  In the ACQ queue case, 
304 we use the lineitem_detail ID because this is the data ACQ 
305 providers and sub-systems will have access to.
306
307 When a match point ID value is a set and a matching copy is found, 
308 the values extracted from the inbound copy data are used to replace 
309 values on the existing found copy, including the call-number label.  
310 Any fields on the inbound copy that are empty are ignored.
311
312 One use case for this feature are shelf-ready items produced by a 
313 3rd-party (e.g. ACQ provider) and delivered to the library via MARC
314 file for upload.  The file might contain improved MARC bibliographic
315 data as well as real barcodes (i.e. not temporary ACQ generated 
316 barcodes) for the copies already purchased through the vendor.
317
318 Permission
319 ++++++++++
320
321 This adds a new permission called IMPORT_OVERLAY_COPY which is 
322 required to perform the copy overlay step.
323
324 Regardless of permission, it is not possible to overlay values on
325 a copy unless the imported bib record links (creates/overlays/merges)
326 to/with the owning bib record for the copy to be overlaid.  This is 
327 both for security and removal of a potent foot-gun.
328
329 Circulation
330 ~~~~~~~~~~~
331
332 Simplified Hold Pull List
333 ^^^^^^^^^^^^^^^^^^^^^^^^^
334
335 There is a new hold pull list interface based on the Flattener service that's
336 designed to perform faster than existing pull list interfaces, both in staff
337 client display and printing.
338
339 Sorting
340 +++++++
341
342 You can sort on any one column by clicking on it.  Click again to reverse
343 direction.  This is typical of similar interfaces.
344
345 Now you can also sort by multiple columns.  Right click the column headers of
346 the grid in the pull list interface to get a dialog that allows you to sort
347 by multiple columns, in any order.
348
349 Column Picking
350 ++++++++++++++
351
352 The same dialog that allows you to choose multiple sort columns (accessed by
353 right clicking any column header) also allows you to toggle the display of any
354 column available to the pull list on or off.
355
356 Persistence
357 +++++++++++
358
359 Once saved, your changes in this dialog persist for your user account.  Column
360 display, display order, and `sorting choices affect printing as well as
361 displayed output.
362
363 Administration
364 ~~~~~~~~~~~~~~
365
366 Search Filter Groups
367 ^^^^^^^^^^^^^^^^^^^^
368
369 Search filter groups support the collection of free-form search queries into
370 named groups of named filters which can be applied to searches.  The purpose 
371 is to allow systems to fine tune filters in the catalog.
372
373 Editing the groups and their entries is done in the staff client at
374 Admin -> Local Administration -> Search Filter Groups.
375
376 Example
377 +++++++
378
379 Consider a new filter called "reading_level".  It uses a combination of 
380 MARC audience and shelving location to differentiate items.  It might have
381 entries that look like this:
382
383 Children's Materials => audience(a,b,c) locations(1,2,3,4,5,6,7)
384
385 Young Adult => audience(j,d) locations(5,6,7,8,9,10)
386
387 Adult => audience(e,f,g, ) -locations(1,2,3,4,5,6,7,8,9)
388
389 Using the filter in a template
390 ++++++++++++++++++++++++++++++
391
392 [source, html]
393 ---------------------------------------------------
394 <span>[% ctx.filter_groups.reading_level.label %]</span>
395 <span>
396 [%
397     INCLUDE 'opac/parts/filter_group_selector.tt2'
398     filter_group='reading_level'
399     none_ok=1
400     none_label=l('All')
401 %]
402 </span>
403 ---------------------------------------------------
404
405 Standing Penalty CAPTURE and FULFILL Blocks
406 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
407
408 This feature adds two additional types of standing penalty blocks to manage
409 holds. 
410
411 When a user has a standing penalty containing 'CAPTURE' in the block list, the
412 user can place holds (pending no 'HOLD' block), but no holds for the user will
413 be captured. This is effectively a policy-based freeze of the hold.
414
415 Users that have penalties with 'FULFILL' in the block list will be able to
416 place holds and have their holds captured (i.e. delivered) but will not be able
417 to check out the captured holds. This is basically a way to get patrons in to
418 pay outstanding balances.
419
420 Copy Location Additions to Circulation Policies
421 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
422
423 Similar to circulation modifiers, circ policies can now be based on copy
424 location. This also adds copy location to the circ matrix weights and to circ
425 limit sets.
426
427 Staff Client
428 ~~~~~~~~~~~~
429
430 XULRunner / Firefox
431 ^^^^^^^^^^^^^^^^^^^
432 Support for later versions of XULRunner is included, which means that later
433 improvements to XULRunner can be taken advantage of. This also means that the
434 Firefox extension mode works in Firefox 3.6+, though some frequent tweaking
435 will be needed due to the rapid Firefox major release schedule.
436
437 The majority of the actual changes are backend changes, but there are some
438 significant things to note for local customizations.
439
440 Remote XUL
441 ++++++++++
442 Remote XUL no longer works in XULRunner/Firefox 4+, but to work around it a
443 custom extension now creates an oils:// wrapper. Within the staff client that
444 wrapper contains a "remote" host, from which server-side XUL can be loaded.
445
446 Custom XUL pages stored on the server will need to reference the new wrapper
447 to function.
448
449 As a note: The new wrapper is used for all OPAC access and only talks SSL.
450
451 enablePrivilege
452 +++++++++++++++
453 The enablePrivilege command that would allow code to access various protected
454 functionality is no longer available. Any code that depended upon it will need
455 to be adjusted to use the oils:// wrapper created for Remote XUL.
456
457 Cookies
458 +++++++
459 Unfortunately, the oils:// wrapper has one less than useful effect. Any
460 JavaScript loaded via it loses access to cookies. This is most notable when you
461 are dealing with authtoken cookies. This only applies to JavaScript, however,
462 and the server can still see the cookies when it gets requests.
463
464 As a workaround you can load the data stash and fetch authtokens via it instead.
465 This should always work when using the oils:// wrapper due to the elevated
466 permission set it gets (nearly, if not equal to, local XUL).
467
468 url_prefix
469 ++++++++++
470 Finally, as a useful feature, the url_prefix function is now slightly easier to
471 use. Instead of needing to reference urls.SOMETHING you can instead just put the
472 SOMETHING at the start of the url to prefix:
473
474 url_prefix('SOMETHING/stuff.html')
475
476 In this case SOMETHING can be terminated by the end of the string or up to the
477 first instance of a slash (/), question mark (?), or pipe (|). The pipe is a
478 special case and is removed during the replacement.
479
480 For example, if urls.REPLACE were set to 'oils://remote/replace':
481
482 url_prefix('REPLACE/stuff') becomes 'oils://remote/replace/stuff'
483 url_prefix('REPLACE?query') becomes 'oils://remote/replace?query'
484 url_prefix('RPLACE|ment') becomes 'oils://remote/replacement'
485
486 The pipe is intended for cases where the urls entry may or may not already
487 contain a query string, say for differences between OPACs where one requires
488 that something be passed into the query string, but the other uses a path
489 component instead.
490
491 New Operator Change Features
492 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
493
494 The operator change dialog has a new dropdown allowing the selection of a
495 Temporary, Staff, or Permanent authtoken. The first option provides a temporary
496 operator change as has typically been done through this menu item. 'Staff' uses
497 a normal staff login authtoken for a multi-hour timeout. 'Permanent' is a staff
498 change that disregards the previous login instead of allowing it to be
499 recovered by using the menu item again.
500
501 Additional Work Log Entries
502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
503
504 Entries for bill payment and hold placement are now available in the 'Work Log'.
505
506 SIP
507 ~~~
508
509 Support for credit card payment type and fine items details
510 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
511
512 Support is now available to create a credit card payment type in the SIP Fee
513 Paid message. There is also now support for SIP clients to retrieve and
514 display a detailed/itemized list of billings to the patron.
515