Add kpac to 2.3 release notes
[working/Evergreen.git] / docs / RELEASE_NOTES_2_3.txt
1 Release notes
2 =============
3 :toc:
4 :numbered:
5
6 Upgrade notes
7 -------------
8
9 Coming Soon.
10
11 New features
12 ------------
13
14 Acquisitions
15 ~~~~~~~~~~~~
16
17 ACQ Invoice Inline Lineitem Search and Add
18 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
19
20 The Invoice UI is how composed of two tabs, the main invoice tab and a new Search tab.  The search tab consists of a subset of the Acquisitions unified search interface.  The goal is to allow users to search for lineitems to invoice.  Search results may be added directly to the growing invoice.  A number of small usability features are included.
21
22 Features
23 ++++++++
24
25     * Option (default) to limit searches to invoiceable items.  
26         ** 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.
27     * Search defaults to last-run search (on workstation).
28     * New Lineitem Detail filter options
29     * Sort searches by lineitem number (default) and title.
30     * There is a new Expected Cost field which includes both the total invoiced cost plus the anticipated cost of lineitems as they are added.
31     * New Price per Copy field
32     * Lineitem count field
33     * 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).
34     * A new "Save & Clear" button which saves the current invoice then clears the invoice display to create a new invoice.
35     * Provider, shipper, and receiver fields are auto-populated from the first-added invoice data (when not already set).
36     * Totals are now read-only, since they are derived from existing data (and are informational only).
37
38
39 EDI Invoices
40 ^^^^^^^^^^^^
41
42 The same setup that is required today for retrieving and reacting to EDI Order
43 Response messages (ORDRSP) will also react to Invoices (INVOIC).
44
45 This essentially means you must have a Provider (acq.provider) configured with
46 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
47 the edi_pusher script run periodically by cron.
48
49 An open Evergreen invoice will be created for a each EDI Invoice message.
50 Evergreen invoice entries will be created for each lineitem detected in the
51 EDI message if that lineitem can be linked to a known Evergreen lineitem in
52 your system.  An Evergreen invoice item will be created for a whole-invoice
53 tax.
54
55 OPAC
56 ~~~~
57
58
59 TPAC: Simplified CSS Color Customization
60 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
61 CSS colors are now defined as a pair of Template::Toolkit files,
62 `Open-ILS/src/templates/opac/css/styles.css.tt2` and
63 `Open-ILS/src/templates/opac/parts/css/colors.tt2`. Evergreen administrators
64 can customize the color scheme for a given skin by copying `colors.tt2` into a
65 template override directory and adjusting the colors as desired.
66
67 Change required to eg_vhost.conf
68 ++++++++++++++++++++++++++++++++
69 To enable Apache to pass the CSS file to the Template::Toolkit handler, you
70 must remove `.css` from the list of file extensions that should not be passed
71 to a handler in `eg_vhost.conf` as follows:
72
73 .From
74 ------------------------------------------------------------------------------
75 <LocationMatch ^/eg/.*(\.js|\.css|\.html|\.xhtml|\.xml|\.jpg|\.png|\.gif)$>
76     SetHandler None
77 </LocationMatch>
78 ------------------------------------------------------------------------------
79
80 .To
81 ------------------------------------------------------------------------------
82 <LocationMatch ^/eg/.*(\.js|\.html|\.xhtml|\.xml|\.jpg|\.png|\.gif)$>
83     SetHandler None
84 </LocationMatch>
85 ------------------------------------------------------------------------------
86
87 After making this change, restart Apache to make the change take effect.
88
89
90 Add to Permanent Bookbag
91 ^^^^^^^^^^^^^^^^^^^^^^^^
92
93 TPAC was modified to allow a logged-in user to add records from search
94 results and record summary screens to their permanent bookbags rather
95 than to a temporary bookbag that goes away when logged out.
96
97 Bookbag Selection Menu
98 ++++++++++++++++++++++
99
100 The search results and record summary screens were modified so that
101 the "Add to my list" will show a menu when moused over by a logged-in
102 user.  This menu will display the option to add to a temporary
103 bookbag, the user's default list (if any), up to ten of the user's
104 other bookbags, a "See all" option to allow the user to choose one of
105 the bags not on the menu, and to create a new list and add the record
106 to it.
107
108 Choosing the temporary list from the menu will add the record to the
109 temporary my list as TPAC does before the addition of this feature.
110
111 Choosing a named list will add the record to the chosen list.
112
113 Choosing "See all" or "Add to new list" will take the user to their My
114 Lists page.  (The only difference being that "See all" will actually
115 list all of the user's bookbags if they have more than the current
116 limit.)  The My Lists page will have a new button "Add to this list"
117 next to each of their existing lists.  In addition, if the user
118 creates a new list on this screen, the selected record will
119 automatically be added to this new list.
120
121 You can tell all of the above is working if you are redirected to your
122 search results or record summary after adding to a list.  If there was
123 a problem, you will get either an error page or will see your My Lists
124 page.
125
126 Designating a Default Bookbag/list
127 ++++++++++++++++++++++++++++++++++
128
129 The user's My List screen has had a 'Make Default List' button added
130 for each list.  Clicking the button will cause that list to be
131 registered as the user's default list.  This is the list that will be
132 added to when a user chooses the Default List option on the Add to my
133 list menu in search or record summary.
134
135 The current default list has a 'Remove Default List' button next to
136 it.  Clicking this button will unset the default status of the list
137 and return to a state of having no default list.
138
139 One handy way that users may want to use this feature is to create a
140 new list, and then designate it as the default.  This list could then
141 be used to add records from searches based on a current topic of
142 interest.  Changing the default list is so easy that users may want to
143 do so when changing search topics in order to keep their results
144 better organized.
145
146 A Note on CSS Styles
147 ++++++++++++++++++++
148
149 If a user has a bookbag with an overly long name, the end of it will
150 jut out past the right margin of the menu in FireFox and several other
151 browsers.  To change this behavior, you may want to edit the `.popmenu
152 li:hover li a` css entry in `web/css/skin/default/opac/style.css` by
153 adding an `overflow` property.  If you desire to have the longer names
154 clipped to the size ofthe menu then add `overlow: hidden`.  If you
155 prefer to have a scroll bar for oversized entries, then add `overflow:
156 auto`.
157
158
159 Warn When Adding to a Temporary Bookbag
160 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
161
162 TPAC has been modified so that a user will see a warning before adding
163 a record to a temporary bookbag.  This message serves to inform the
164 user that they are adding to a temporary list that will disappear when
165 their session ends.
166
167 A new org. unit setting has been added,
168 opac.patron.temporary_list_warn, that will enable this warning when
169 set.  Sites may choose not to display this warning.
170
171 The user may also set a preference in their search preferences to
172 disable this warning.  The setting only works when a user is logged
173 in, of course.
174
175 Kid's OPAC
176 ^^^^^^^^^^
177
178 The Kids OPAC (KPAC) is a public catalog search that was designed for children
179 and teens.  Colorful menu items,large buttons, and simple navigation make this
180 an appealing search interface for kids.  Librarians will appreciate the flexible
181 configuration of the KPAC.  Librarians can create links to canned search results
182 for kids and can apply these links by branch.  The KPAC uses the same infrastructure
183 as the Template Toolkit OPAC (TPAC), the adult catalog search, so you can easily
184 extend the KPAC using the code that already exists in the TPAC.  Finally, third
185 party content, such as reader reviews, can be integrated into the KPAC.
186
187
188 Cataloging
189 ~~~~~~~~~~
190
191 Z39.50 Source Attributes Management Interface
192 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
193
194 There is a new interface for managing Z39.50 attributes on a Z39.50
195 source.  The interface is linked from each source name in the Z39.50
196 Source administrative interface.
197
198 Cloning
199 +++++++
200
201 In addition to attribute creation, deletion, and editing, it's also 
202 possible to clone a set of attributes from one source into another.
203 When cloning, any attributes present in the cloned source that are
204 not present in the destination source are copied into the destination 
205 source.
206
207 Vandelay (MARC Import/Export) Copy Overlay
208 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
209
210 Vandelay Item Attributes (Cataloging -> MARC Import / 
211 Export -> Import Item Attribute Definitions) contains 
212 a new field called "Overlay Match ID".  The presence of data 
213 in this field extracted from an import-item copy indicates 
214 to the Vandelay import process that a copy overlay is requested 
215 instead of new copy creation.  The value for the field is the 
216 copy id for bib record queues and the ACQ lineitem_detail ID for 
217 Acquisitions Queues.  For either type of queue, however, overlay 
218 occurs against a real copy (asset.copy).  In the ACQ queue case, 
219 we use the lineitem_detail ID because this is the data ACQ 
220 providers and sub-systems will have access to.
221
222 When a match point ID value is a set and a matching copy is found, 
223 the values extracted from the inbound copy data are used to replace 
224 values on the existing found copy, including the call-number label.  
225 Any fields on the inbound copy that are empty are ignored.
226
227 One use case for this feature are shelf-ready items produced by a 
228 3rd-party (e.g. ACQ provider) and delivered to the library via MARC
229 file for upload.  The file might contain improved MARC bibliographic
230 data as well as real barcodes (i.e. not temporary ACQ generated 
231 barcodes) for the copies already purchased through the vendor.
232
233 Permission
234 ++++++++++
235
236 This adds a new permission called IMPORT_OVERLAY_COPY which is 
237 required to perform the copy overlay step.
238
239 Regardless of permission, it is not possible to overlay values on
240 a copy unless the imported bib record links (creates/overlays/merges)
241 to/with the owning bib record for the copy to be overlaid.  This is 
242 both for security and removal of a potent foot-gun.
243
244 Circulation
245 ~~~~~~~~~~~
246
247 Simplified Hold Pull List
248 ^^^^^^^^^^^^^^^^^^^^^^^^^
249
250 There is a new hold pull list interface based on the Flattener service that's
251 designed to perform faster than existing pull list interfaces, both in staff
252 client display and printing.
253
254 Sorting
255 +++++++
256
257 You can sort on any one column by clicking on it.  Click again to reverse
258 direction.  This is typical of similar interfaces.
259
260 Now you can also sort by multiple columns.  Right click the column headers of
261 the grid in the pull list interface to get a dialog that allows you to sort
262 by multiple columns, in any order.
263
264 Column Picking
265 ++++++++++++++
266
267 The same dialog that allows you to choose multiple sort columns (accessed by
268 right clicking any column header) also allows you to toggle the display of any
269 column available to the pull list on or off.
270
271 Persistence
272 +++++++++++
273
274 Once saved, your changes in this dialog persist for your user account.  Column
275 display, display order, and `sorting choices affect printing as well as
276 displayed output.
277
278 Administration
279 ~~~~~~~~~~~~~~
280
281 Search Filter Groups
282 ^^^^^^^^^^^^^^^^^^^^
283
284 Search filter groups support the collection of free-form search queries into
285 named groups of named filters which can be applied to searches.  The purpose 
286 is to allow systems to fine tune filters in the catalog.
287
288 Editing the groups and their entries is done in the staff client at
289 Admin -> Local Administration -> Search Filter Groups.
290
291 Example
292 +++++++
293
294 Consider a new filter called "reading_level".  It uses a combination of 
295 MARC audience and shelving location to differentiate items.  It might have
296 entries that look like this:
297
298 Children's Materials => audience(a,b,c) locations(1,2,3,4,5,6,7)
299
300 Young Adult => audience(j,d) locations(5,6,7,8,9,10)
301
302 Adult => audience(e,f,g, ) -locations(1,2,3,4,5,6,7,8,9)
303
304 Using the filter in a template
305 ++++++++++++++++++++++++++++++
306
307 [source, html]
308 ---------------------------------------------------
309 <span>[% ctx.filter_groups.reading_level.label %]<span>
310 <span>
311 [%
312     INCLUDE 'opac/parts/filter_group_selector.tt2'
313     filter_group='reading_level'
314     none_ok=1
315     none_label=l('All')
316 %]
317 <span>
318 ---------------------------------------------------
319
320 Staff Client
321 ~~~~~~~~~~~~
322
323 XULRunner / Firefox
324 ^^^^^^^^^^^^^^^^^^^
325 Support for later versions of XULRunner is included, which means that later
326 improvements to XULRunner can be taken advantage of. This also means that the
327 Firefox extension mode works in Firefox 3.6+, though some frequent tweaking
328 will be needed due to the rapid Firefox major release schedule.
329
330 The majority of the actual changes are backend changes, but there are some
331 significant things to note for local customizations.
332
333 Remote XUL
334 ++++++++++
335 Remote XUL no longer works in XULRunner/Firefox 4+, but to work around it a
336 custom extension now creates an oils:// wrapper. Within the staff client that
337 wrapper contains a "remote" host, from which server-side XUL can be loaded.
338
339 Custom XUL pages stored on the server will need to reference the new wrapper
340 to function.
341
342 As a note: The new wrapper is used for all OPAC access and only talks SSL.
343
344 enablePrivilege
345 +++++++++++++++
346 The enablePrivilege command that would allow code to access various protected
347 functionality is no longer available. Any code that depended upon it will need
348 to be adjusted to use the oils:// wrapper created for Remote XUL.
349
350 Cookies
351 +++++++
352 Unfortunately, the oils:// wrapper has one less than useful effect. Any
353 JavaScript loaded via it loses access to cookies. This is most notable when you
354 are dealing with authtoken cookies. This only applies to JavaScript, however,
355 and the server can still see the cookies when it gets requests.
356
357 As a workaround you can load the data stash and fetch authtokens via it instead.
358 This should always work when using the oils:// wrapper due to the elevated
359 permission set it gets (nearly, if not equal to, local XUL).
360
361 url_prefix
362 ++++++++++
363 Finally, as a useful feature, the url_prefix function is now slightly easier to
364 use. Instead of needing to reference urls.SOMETHING you can instead just put the
365 SOMETHING at the start of the url to prefix:
366
367 url_prefix('SOMETHING/stuff.html')
368
369 In this case SOMETHING can be terminated by the end of the string or up to the
370 first instance of a slash (/), question mark (?), or pipe (|). The pipe is a
371 special case and is removed during the replacement.
372
373 For example, if urls.REPLACE were set to 'oils://remote/replace':
374
375 url_prefix('REPLACE/stuff') becomes 'oils://remote/replace/stuff'
376 url_prefix('REPLACE?query') becomes 'oils://remote/replace?query'
377 url_prefix('RPLACE|ment') becomes 'oils://remote/replacement'
378
379 The pipe is intended for cases where the urls entry may or may not already
380 contain a query string, say for differences between OPACs where one requires
381 that something be passed into the query string, but the other uses a path
382 component instead.