+++ /dev/null
-Batch Patron Contact Invalidation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The following methods are used to mark patron contact fields
-as invalid by moving the invalid value to a standing penalty:
-
- * `open-ils.actor.invalidate.email`
- * `open-ils.actor.invalidate.day_phone`
- * `open-ils.actor.invalidate.evening_phone`
- * `open-ils.actor.invalidate.other_phone`
-
-These methods now accept a fifth argument specifying the value
-of the contact field, e.g., a specific phone number or email
-address. If supplied, and if a specific patron ID (the first
-argument) is not supplied, all patrons with that specific contact
-value will have it marked invalid.
+++ /dev/null
-New open-ils.auth.login API
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The open-ils.auth service has a new API for requesting an authentication
-token. It performs the same steps as the
-open-ils.auth.authenticate.init and .complete APIs in a single call,
-using the bare password. No intermediate password hashing is required.
-
-The paramters are the same as the .complete call with a few modifications.
-
-1. Using the generic "identifier" parameter in combination with the
- "org" parameter allows the API to reliably determine if an identifier
- value is a username or barcode. The caller is no longer required to
- make that determination up front.
-
-2. The 'nonce' parameter is no longer used.
-
-Upgrade Notes
-+++++++++++++
-
-The new open-ils.auth.login API must be added to the list of <log_protect>
-API's in the opensrf_core.xml file.
-
-Sample diff:
-
-[code,sh]
----------------------------------------------------------------------
---- a/Open-ILS/examples/opensrf_core.xml.example
-+++ b/Open-ILS/examples/opensrf_core.xml.example
-@@ -180,6 +180,7 @@ Example OpenSRF bootstrap configuration file for Evergreen
- <log_protect>
- <match_string>open-ils.auth.authenticate.verify</match_string>
- <match_string>open-ils.auth.authenticate.complete</match_string>
-+ <match_string>open-ils.auth.login</match_string>
- <match_string>open-ils.auth_proxy.login</match_string>
- <match_string>open-ils.actor.patron.password_reset.commit</match_string>
- <match_string>open-ils.actor.user.password</match_string>
----------------------------------------------------------------------
-
+++ /dev/null
-RTL and LTR Public Catalog Stylesheets Merged
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The RTL stylesheet for the public catalog,
-`templates/opac/css/style-rtl.css.tt2`, has been merged into the LTR
-one (`templates/opac/css/style.css.tt2`). The combined stylesheet
-template will emit RTL or LTR styles based on the value of
-the `rtl` flag of the active locale. An `rtl` variable is also available
-in the template to allow the correct style to be chosen.
-
-Upgrade notes
-+++++++++++++
-Administrators of Evergreen who use RTL locales and who have customized
-`style-rtl.css.tt2` should now incorporate their customizations into
-`style.css.tt2`.
+++ /dev/null
-Tweaks to Caching/Expiry of Public Catalog Assets
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The default cache expiration time for static assets (e.g.,
-CSS, image, and JavaScript files) in the public catalog and
-the Kid's PAC has been increased to one year. Links to all
-such assets now have a cache-busting value tacked on as a
-query parameter. This value is refreshed when `autogen.sh` is
-run, but it can also be manually set by adjusting the
-`ctx.cache_key` Template Toolkit variable.
+++ /dev/null
-New EDI Order Generator
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Configuration
-+++++++++++++
-
-. New database tables exist for configuring vendor-specific EDI order
-attributes.
-
- * acq.edi_attr
- ** List of EDI order generation toggles, e.g. "INCLUDE_COPIES" to add
- GIR segments
- * acq.edi_attr_set
- ** Collection of edi_attr's. Each edi_account may be linked to one
- edi_attr_set.
- ** One edi_attr_set per known vendor is added to the stock data, matching
- the stock configuration found in the JEDI template.
- * acq.edi_attr_set_map
- ** Link between edi_attr's and edi_attr_set's.
-
-. EDI Attribute Sets are manged via a new (browser client only) configuration
- interface at Administration -> Acquisistions Administration -> EDI
- Attribute Sets.
-
-. Each acq.edi_account should be linked to an acq.edi_attr_set. If a link
- is not set, default values will be used. Links between an EDI account
- and an attribute set are managed in the EDI Accounts configuration
- interface.
-
-. Local modifications to the stock EG JEDI template are managed by modifying
- and/or adding additional edi_att_set's as needed.
-
-. A new edi_order_pusher.pl script is added which replaces the functionality
- of edi_pusher.pl. edi_pusher.pl is still avaialable.
-
-. After moving to edi_order_pusher.pl, the JEDI Action/Trigger event
- definition is no longer required. It can be disabled.
-
-Migration
-+++++++++
-
-EDI accounts have a new boolean field "Use EDI Attributes" (use_attrs) that
-specifies whether PO's generated via the account should be built using
-EDI attributes or fall back to traditional JEDI A/T template generation.
-
-This allows sites to activate EDI attributes on a per-account basis, making
-it possible to migrate piecemeal to EDI attributes. For the initial roll
-out of this new features, no accounts will be configured to use EDI
-attributes by default.
-
+++ /dev/null
-3 Day Courtesy Notice by SMS
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-New optional SMS text notification to be sent out 3 days prior to the due
-date of any circulating item for patrons who have an SMS text number and
-carrier stored in their accounts. This action trigger is disabled by default,
-but can be enabled and modified by going into Admin > Local Administration >
-Notifications / Action Triggers.
-
-You may wish to make use of granularity so that these messages are batched
-and sent at the same time each day.
+++ /dev/null
-Add Description Field to Circulation and Hold Configuration Entries
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The circulation and hold policy configuration rules now each have a
-description field. This allows administrators to add comments to
-describe the purpose of each rule.
+++ /dev/null
-Apache Internal Port Configuration Option
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Apache configuration now supports a new variable which allows admins to
-specify the port used by Apache to handle HTTP traffic. The value is
-used for HTTP requests routed from Perl handlers back to the same Apache
-instance, like added content requests. Use this when running Apache
-with a non-standard port, typical with a proxy setup. Defaults to "80".
-
-[source,conf]
--------------------------------------------------------------------
-<Location /eg>
- ...
- PerlSetVar OILSWebInternalHTTPPort "7080"
- ...
-</Location>
--------------------------------------------------------------------
+++ /dev/null
-Configurable Bib Record Display Fields
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Admin -> Server Admin -> 'MARC Search/Facet Fields' have 2 new configuration
-fields: 'Display Field?' and 'Display XPATH'.
-
-When 'Display Field' is set to true, data from the field will be extracted
-from each record and added to a new table of display data for each bib
-record.
-
-If a value is present in the 'Display XPATH' field, this XPATH will be
-applied to the extracted data *after* the base XPATH (from the 'XPath'
-field) is applied to each field.
-
-This data acts as a replacement for the various and sundry ways bib record
-data is currently extracted, including inline XPATH in the TPAC, reporter
-views, real-time 'MVR' compilation from MODS, etc. and will be available
-to the user interface, notification templates, etc. for rendering bib
-records.
-
-The browser client gets a new service 'egBibDisplay' which is capable
-of translating the display field data from various formats into
-data more suitable for JavaScript usage.
-
-The database gets 3 new VIEWs for representing display data in various
-formats:
-
- * metabib.flat_display_entry
- ** List of all display fields linked to their configuration.
- * metabib.compressed_display_entry
- ** Same as metabib.flat_display_entry except there's one row
- per display field type, which 'mulit' rows compressed into
- JSON arrays. Non-multi fields are represented as JSON
- strings/numbers.
- * metabib.wide_display_entry
- ** Tabular view of display field data, one column per well-known
- field. Values are represented JSON, consistent with
- metabib.flat_display_entry. The view DOE NOT CONTAIN locally
- configured dispaly fields, as each field must be encoded in
- the view and IDL definition. This is essentially a replacement
- for reporter.simple_record.
-
-Reingesting
-+++++++++++
-
-After making changes to display field configuration, it's possible to
-reingest only display field data in the database using the following:
-
-[source,sql]
----------------------------------------------------------------------
-SELECT metabib.reingest_metabib_field_entries(id, TRUE, FALSE, TRUE, TRUE,
- (SELECT ARRAY_AGG(id)::INT[] FROM config.metabib_field WHERE display_field))
- FROM biblio.record_entry WHERE NOT deleted AND id > 0;
----------------------------------------------------------------------
-
+++ /dev/null
-Fix COPY_STATUS_LONGOVERDUE.override Permission Typo
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The existing permission was incorrectly created with a code of
-COPY_STATUS_LONGOVERDUE.override, while the event thrown requires a
-permission with a code of COPY_STATUS_LONG_OVERDUE.override. This
-update changes the permission code to match what the event requires.
-
+++ /dev/null
-Hold Targeter V2 Repairs and Improvements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-* Make the batch targeter more resilient to a single-hold failure.
-* Additional batch targeter info logging.
-* Set OSRF_LOG_CLIENT in hold_targeter_v2.pl for log tracing
-* Removes the confusingly named --target-all option
- ** The same behavior can be achieved by using --retarget-interval "0s"
-* Removes --skip-viable (see --soft-retarget-interval below)
-
-New --next-check-interval Option
-++++++++++++++++++++++++++++++++
-Specify how long after the current run time the targeter will retarget
-the currently affected holds. Applying a specific interval is useful
-when the retarget-interval is shorter than the time between targeter
-runs.
-
-For example, if the targeter is run nightly at midnight with a
---retarget-interval 36h, you would set --next-check-interval to 48hr,
-since the holds won't be processed again until 48 hours later. This
-ensures that the org unit closed date checks are looking at the correct
-date.
-
-This setting overrides the default behavior of calculating the next
-retarget time from the retarget-interval.
-
-New --soft-retarget-interval Option
-+++++++++++++++++++++++++++++++++++
-This is a replacement for (and rebranding of) the --skip-viable option.
-The new option allows for time-based soft-targeting instead simple binary
-on/off soft-targeting.
-
-How soft-targeting works:
-* Update hold copy maps for all affected holds
-* Holds with viable targets (on the pull list) are otherwise left alone.
-* Holds without viable targets are retargeted in the usual manner.
-
+++ /dev/null
-New marc_export --descendants option
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The marc_export script has a new option, --descendants. This option
-takes one argument of an organizational unit shortname. It works much
-like the existing --library option except that it is aware of the
-org. tree and will export records with holdings at the specified
-organizational unit and all of its decendants. This is handy if you
-want to export the records for all of the branches of a system. You
-can do that by specifying this option and the system's shortname,
-instead of specifying multiple --library options for each branch.
-
-The --descendants option can be repeated, as the --library option can.
-All of the specified org. units and their descendants will be included
-in the output. It can also be combined with individual --library
-options when necessary.
+++ /dev/null
-Miscellaneous Improvements
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- * If a filter is in effect in the Library Settings Editor,
- changing the selected library now results in the filter
- continuing to be applied.
- * Copy templates used for serials now correct link to age
- protection rules and MARC item type values (for the
- "Circ as Type" field). During upgrade, the database update
- will set to NULL any age protection and circ as type fields
- in serial copy templates that do not point to defined values.
+++ /dev/null
-Obsolete Internal Flag Removed
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An obsolete, and unused, ingest.disable_metabib_field_entry internal
-flag was removed from the config.internal_flags table. It was
-rendered obsolete by the addition of the 3 flags to control the
-browse, search, and facet indexing.
+++ /dev/null
-Action/Trigger Events Data Purging
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Action/Trigger event definitions have a new field called "Retention
-Interval". When an optional interval value is applied, events and
-template output data linked to the event definition will be deleted
-from the database once they reach the specified age.
-
-Retention Interval Restrictions for Passive Hooks
-+++++++++++++++++++++++++++++++++++++++++++++++++
-
-Restrictions are placed on retention interval values for event definitions
-using passive hooks to prevent data from being deleted while it's still
-needed by the system.
-
-The presence of event data is how the system knows not to send duplicate
-events. As long as a scenario exists where a duplicate event may be
-generated, the events must be retained.
-
-To apply a retention interval value to a passive-hook event definition:
-
- * The event definition must have a max_delay value.
- * The retention interval must be larger than the difference between
- the delay and max_delay values.
-
-For example, if the delay is 7 days and max_delay is 10 days, the retention
-interval must be greater than 3 days to ensure no duplicate events are
-created between the first event on day 7 and the end of the event validity
-window on day 10.
-
-Deployment
-++++++++++
-
-A new purge_at_events.sh script is installed in the bin directory
-(typically /openils/bin) wich should be added to CRON for regular
-maintanence.
-
-NOTE: On large data sets, this script can take a long time to run and
-create higher than normal I/O load as it churns though the event and
-event_output tables. You may wish to run the script by hand the first
-time so it can be monitored. It can be run in psql like so:
-
-[source,sql]
----------------------------------------------------------------
-SELECT action_trigger.purge_events();
----------------------------------------------------------------
-
-NOTE: On *very* large data sets (10s to 100s of millions of event and
-event_output rows), it may be advisable to first to repopulate the event
-and event_output tables with only the desired data before starting
-regular purges. This can be done, for example, using the copy to temp
-table, truncate source table, repopulate source table from temp table
-approach. This will be much faster than the purge_events() function
-in cases where most of the data will be purged.
-
-Hook Data Cleanup
-+++++++++++++++++
-
-A number of action_trigger.hook entries which have always been treated
-as active hooks, though are configured as passive hooks, have been
-updated to properly reflect the non-passive-ness. This allows for
-simpler configuration of their retention interval values.
-
+++ /dev/null
-Remove JSPAC Redirects
-^^^^^^^^^^^^^^^^^^^^^^
-Future versions of Evergreen will no longer contain automatic redirects
-from JSPAC URLs to TPAC URLs, with the exception of myopac.xml, given
-that the JSPAC is no longer supported. Existing sites, however, may
-wish to retain JSPAC redirects in their Apache configuration files since
-JSPAC URLs may still be used in the wild to access their catalogs.
-
-The original JSPAC URL redirects are all retained in the file
-Open-ILS/examples/jspac_redirects.conf for reference.
+++ /dev/null
-Pure-SQL catalog searching
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-Public and staff catalog search is now both more accurate and faster
-by redesigning how the visibility of records is calculated.
+++ /dev/null
-Authority Record and Headings Browse Improvements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Various improvements are made to support for authority records
-and headings browsing:
-
- * The MARC to MADS XSLT stylesheet is now used as part of parsing
- headings from authority records. Since the MODS and MADS stylesheets
- extract headings in similar ways, duplicate browse entries are now
- much less likely to occur.
- * A new configuration table, `authority.heading_field`, is now used
- to specify how headings should be extracted from authority records.
- * Related headings can now be identified as narrower or broader when
- browsing in the public catalog.
- * See references are now more reliably included in the browse list.
- * Scope (public) notes now display only under the main heading.
- * There is now a global flag, Display related headings (see-also) in browse,
- that can be used to control whether related headings (see-alsos) are
- displayed in the public catalog list.
- * A complete set of thesauruses are now included in the seed data. Thesauruses
- can now be identified using short and long codes.
- * The labels for see and see-also references in the public catalog are now
- a bit more patron-friendly, and can now be tweaked via TPAC template
- customization.
-
+++ /dev/null
-Copy Tags and Digital Bookplates
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Copy tags will allow staff to apply custom, pre-defined labels or tags
-to copies. Copy tags are searchable in both the staff client and public
-catalog. This feature was designed to be used for Digital Bookplates to
-attach donation or memorial information to copies, but may be used for
-broader purposes to tag items.
-
-Each copy tag can either be publicly-visible or visible only to staff.
-Copy tags also have types that can be used for restricting catalog
-searches on copy tags to particular types.
-
-Copy tags are displayed in the copy table in the record summary page in
-the public catalog, and a new library setting can be used to add
-a "Digital Bookplate" search field. Copy tags can also be used
-as a search filter, e.g.,
-
- * `copy_tag(bookplate, jane smith)`: search for records that have a
- copy tag of type `bookplate` whose value contains `jane smith`.
- * `copy_tag(*, jane smith)`: search for records that have a
- copy tag of any type whose value contains `jane smith`.
-
-All staff-side interfaces related to copy tags exist only in the web
-staff client. There are two new administration interfaces for managing
-copy tags and copy tag types. The copy editor now has a `Copy Tags`
-button for applying copy tags to copies; that interface can also be
-used to create new copy tags on the fly. Furthermore, the copy buckets
-interface now has an `Apply Tags` action for assigning tags to groups
-of copies.
-
-Permissions
-+++++++++++
-
-Two new permission are included:
-
- * `ADMIN_COPY_TAG_TYPES`: required to create a new tag type under
- Server Administration->Copy Tag Types
- * `ADMIN_COPY_TAG`: required to create a new tag under
- Local Administration->Copy Tags
-
-The existing permission `UPDATE_COPY` controls whether or not a user
-can link copies to tags.
-
-Library Settings
-++++++++++++++++
-A new library setting, "Enable Digital Bookplate Search", controls
-whether to display a "Digital Bookplate" field in the search index
-drop-downs in the catalog. A "Digital Bookplate" search will include
-all records that have a copy that matches the tag specified by the user.
-It should be noted that this library settings does not affect the
-display of copy tags on the catalog record summary page.
+++ /dev/null
-Include Call Number Prefixes and Suffixes in Export and Z39.50 output
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The call number prefix and suffix, when present, are now included in
-subfields $k and $m of the 852 field when running `marc_export` with
-the `--items` switch. Similarly, when using Evergreen as a Z39.50
-server configured to embed item data in 852 fields, the affixes are now
-included in subfields $k and $m.
+++ /dev/null
-Batch Editing of Patron Records
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-There is a now a new interface analogous to the Copy Bucket interface
-to record the selection and grouping of a set of users into a User Bucket.
-The addition of users to a User Bucket is possible from the Patron Search
-interface by the use of a new grid Action, and directly on the User Bucket
-interface by user barcode. It is also possible to add users by uploading
-a text file that contains a list of user barcodes.
-
-From this interface it is possible to perform a set of specific batch update
-operations against users generally.
-
-Editing users
-+++++++++++++
-
-The fields can now be changed in batch via an action on the User Bucket
-grid if the staff user has the UPDATE_USER permission:
-
- * Active flag
- * Primary Permission Group (group application permissions consulted)
- * Juvenile flag
- * Home Library (UPDATE_USER checked against both old and new value)
- * Privilege Expiration Date
- * Barred flag (BAR_PATRON permission consulted)
- * Internet Access Level
-
-Each change set requires a name. Buckets may have multiple change sets. All
-users in the Bucket at the time of processing are updated when the change
-set is processed, and change sets are processed immediately upon successful
-creation. The interface delivers progress information regarding the
-processing stage and percent of completion.
-
-While processing the users, the original value for each field edited is
-recorded for potential future rollback. Users can examine the success and
-failure of applied change sets.
-
-The user will be able to rollback the entire change set, but not parts thereof.
-The rollback will affect only those users that were successfully updated by the
-original change set and may be different from the current set of users in the
-Bucket. Users can manually discard change sets, removing them from the
-interface but preventing future rollback.
-
-As a batch process, rather than a direct edit, this mechanism explicitly skips
-processing of Action/Trigger event definitions for user update.
-
-Deleting users
-++++++++++++++
-
-The batch edit mechanism also allows for the batch deletion of user. The staff
-user must have both the UPDATE_USER and DELETE_USER permissions.
-
-Each delete set requires a name. Buckets may have multiple delete sets. All
-users in the Bucket at the time of processing are marked as deleted when
-the delete set is processed. The interface delivers progress information
-regarding the processing stage and percent of completion.
-
-While processing the users, the original value for the "deleted" field will be
-recorded for potential future rollback. Users are able to examine the
-success and failure of applied delete sets in the same interface used for the
-above described change sets.
-
-As a batch process, rather than a direct edit, this mechanism explicitly skips
-processing of Action/Trigger event definitions for user deletion.
-
-This mechanism does not use the Purge User functionality, but instead simply
-marks the users as deleted.
-
-Editing Statistical Category Entries
-++++++++++++++++++++++++++++++++++++
-
-All users in the bucket can have their Statistical Category Entries
-modified. Unlike user data field updates, modification of Statistical
-Category Entries is permanent and cannot be rolled back. No named change
-sets are required. The interface will deliver progress information regarding
-the processing stage and percent of completion.
-
-As a batch process, rather than a direct edit, this mechanism explicitly skips
-processing of Action/Trigger event definitions for user update.
-
-New service requirement
-+++++++++++++++++++++++
-
-This new functionality makes use of the QStore service, which was previously
-unused in production. If this service has been removed from the configuration
-of a live Evergreen instances, it will need to be added back in order for
-batch user editing to succeed.
+++ /dev/null
-Patron Search from Place Hold
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Patron Search from Place Hold allows staff members, when placing a
-hold on behalf of a patron in the web staff client, to search for
-patrons by names and other searchable patron information, rather than
-relying on barcode alone. In particular, after performing a catalog
-search or going to a specific bib record and clicking the 'Place Hold'
-button, the form now includes a 'Patron Search' button. This button
-will open a dialog allowing the staff member search for and select
-a patron record.
+++ /dev/null
-Transit Cancel Time and Terminology Change
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Transit Cancel Time
-+++++++++++++++++++
-
-Previously, Evergreen deleted canceled (aborted) transits from the database. Now
-the rows in action.transit_copy, action.hold_transit_copy, and action.reservation_transit_copy
-are preserved in the database, though still not visible to the end user in the staff client.
-This allows for better tracking of when transits are canceled for the purposes of knowing
-which staff member canceled the transit, etc.
-
-NOTE: This change may require the re-creation of transit reports to filter out canceled
-transits from the results. Cloning the template and adding a Base Filter of Cancel Time
-Is NULL will suffice.
-
-"Canceled Transit" Terminology Change
-+++++++++++++++++++++++++++++++++++++
-
-The term "abort" has been replaced with "cancel" in all of the affected user interfaces.
-For internal continuity, however, the following permission codes have not changed:
-
- * ABORT_TRANSIT
- * ABORT_REMOTE_TRANSIT
- * ABORT_TRANSIT_ON_LOST
- * ABORT_TRANSIT_ON_MISSING
+++ /dev/null
-Honor timezone of the acting library
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Summary
-+++++++
-
-* Display day-granular due dates in the circulating library's timezone.
-* Only display the date portion of the due date for day-granular circulations.
-* Display the full timestamp, in the client's timezone rather than the circulation library's, for hourly circulations.
-* Provide infrastructure for more advanced formatting of timestamps.
-* Override the built-in AngularJS date filter with an implementation that uses moment.js, providing consistency and better standards compliance.
-
-Upgrade note
-++++++++++++
-
-The following query will adjust all historical, unaged circulations so
-that if their due date field is pushed to the end of the day, it is done
-in the circulating library's time zone, and not the server time zone.
-
-It is safe to run this after any change to library time zones.
-
-Running this is not required, as no code before this change has
-depended on the time string of '23:59:59'. It is also not necessary
-if all of your libraries are in the same time zone, and that time zone
-is the same as the database's configured time zone.
-
-[source,sql]
-----
-DO $$
-declare
- new_tz text;
- ou_id int;
-begin
- for ou_id in select id from actor.org_unit loop
- for new_tz in select oils_json_to_text(value) from actor.org_unit_ancestor_setting('lib.timezone',ou_id) loop
- if new_tz is not null then
- update action.circulation
- set due_date = (due_date::timestamp || ' ' || new_tz)::timestamptz
- where circ_lib = ou_id
- and substring((due_date at time zone new_tz)::time::text from 1 for 8) <> '23:59:59';
- end if;
- end loop;
- end loop;
-end;
-$$;
-----
-
-Details
-+++++++
-
-This is a followup to the work done in bug 1485374, where we added the ability
-for the client to specify a timezone in which timestamps should be interpreted
-in business logic and the database.
-
-Most specifically, this work focuses on circulation due dates and the closed
-date editor. Due dates, where displayed using stock templates (including
-receipt templates) and used for fine calculation, are now manipulated in the
-library's configured timezone. This is controlled by the new 'lib.timezone'
-YAOUS, loaded from the server when required. Additionally, closings are
-recorded in the library's timezone so that so that due date calculation is more
-accurate. The closed date editor is also taught how to display closings in the
-closed library's timezone. Closed date entries also explicitly record if they
-are a full day closing, or a multi-day closing. This significantly simplifies
-the editor, and may be useful in other contexts.
-
-To accomplish this, we use the moment.js library and the moment-timezone addon.
-This is necessary because the stock AngularJS date filter does not understand
-locale-aware timezone values, which are required to support DST. A simple
-mapper translates the differences in format values from AngularJS date to
-moment.js.
-
-Of special note are a set of new filters used for formatting timestamps under
-certain circumstances. The new egOrgDateInContext, egOrgDate, and egDueDate
-filters provide the functionality, and autogrid is enhanced to make use of
-these where applicable. egGrid and egGridField are also taught to accept
-default and field-specific options for applying date filters. These filters may
-be useful in other or related contexts.
-
-The egDueDate filter, used for all existing displays of due date via Angular
-code, intentionally interprets timestamps in two different ways WRT timezone,
-based on the circulation duration. If the duration is day-granular (that is,
-the number of seconds in the duration is divisible by 86,400, or 24 hours worth
-of seconds) then the date is interpreted as being in the circulation library's
-timezone. If it is an hourly loan (any duration that does not meet the
-day-granular criterium) then it is instead displayed in the client's timezone,
-just as all other timestamps currently are, because of the work in 1485374.
-
-The OPAC is adjusted to always display the due date in the circulating
-library's timezone. Because the OPAC displays only the date portion of the due
-date field, this difference is currently considered acceptable. If this proves
-to be a problem in the future, a minor adjustment can be made to match the
-egDueDate filter logic.
-
-Now that due dates are globally stored in the configured timezone of the
-circulating library, the automatic adjustment to day-granular due dates needs
-to take those timezones into account.
-
-An optional SQL command is provided by the upgrade script to retroactively
-adjust existing due dates after library configuration is complete.
-
-This work, as with 1485374, was funded by SITKA, and we thank them for their
-partnership in making this happen!
-
+++ /dev/null
-Enhancements to Hard Due Date Functionality
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-It will now be possible to delete Hard Due Date Values for dates that have
-passed. Also, the Hard Due Date updater will no longer change Ceiling Dates
-to a past date. This allows editing Ceiling Dates directly in a Hard Due Date
-as well as scheduling Ceiling Date changes via Hard Due Date Values.
+++ /dev/null
-Patron Search by Birth Date
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-* Now you can include the patron birth year and/or birth month and/or
- birth day when searching for patrons using the web based staff client.
-* Day and month values are exact matches. E.g. month "1" (or "01")
- matches January, "12" matches December.
-* Year searches are "contains" searches. E.g. year "15" matches 2015,
- 1915, 1599, etc. For exact matches use the full 4-digit year.
\ No newline at end of file
+++ /dev/null
-Retrieve Recent Patrons
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Adds a new library setting 'Number of Retrievable Recent Patrons'
-('ui.staff.max_recent_patrons') that specifies the number of recently
-retrieved patrons that can be re-fetched from the staff client.
-
-A value of 0 means no recent patrons can be retrieved.
-A value greater than 1 means staff will be able to retrive multiple
-recent patrons via a new Circulation 'Retrieve Recent Patrons' menu entry.
-
-The default value is 1 for backwards compatibility.
-
-
+++ /dev/null
-Fuller title in XUL client Simplified Pull List
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The Simplified Pull List in the XUL client will now display subfields n and
-p in the title field. The addition will make it easier for staff to distinguish
-between different parts or seasons in a series.
-
+++ /dev/null
-Add Circ Modifier to Record Detail Page in Staff TPAC
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The circ_modifier field is added to the copy table to make
-more information available to staff without having to open
-the Holdings Maintenance view.
-
+++ /dev/null
-Date+Time Format Settings for Web Client
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This change deprecates the existing Format Dates and Format Times settings
-and adds two settings for use with the webstaff client:
-
- * Format Dates with this pattern
- * Format Date+Time with this pattern
-
-These settings use format strings as documented here:
-
-https://docs.angularjs.org/api/ng/filter/date
-
-There is overlap with how the Dojo formats worked, but also some differences.
-
-The original Format Dates and Format Times settings worked together, but the
-new settings work independently. Certain field elements will use one, and
-certain field elements will use the other. These distinctions are hard-coded
-in the various UI templates, with the idea being that timestamp fields in
-which the date component alone is sufficient information (for example, DOB)
-will use the Format Dates setting. Fields where the time component is
-important (for example, Checkout Time) will use the Format Date+Time setting.
-
-When the settings Format Dates and Format Date+Time are unset, we will default
-to "shortDate" (M/d/yy) and "short" (M/d/yy h:mm a), respectively.
-
+++ /dev/null
-Global option to remove sound for a specific event
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-A new nosound.wav file has been added to the web client. The file can be used
-to globally disable audio alerts for a specific event on an Evergreen system.
-
-For example, to silence the alert that sounds after a successful patron search:
-
- * mkdir -p /openils/var/web/audio/notifications/success/patron/
- * cd /openils/var/web/audio/notifications/success/patron/
- * ln -s ../../nosound.wav by_search.wav
-
+++ /dev/null
-Improvements to Bill Payment Pages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The bill payment pages in the public catalog have been revamped
-to
-
- * use "charges" instead of "fees"
- * include images of credit cards accepted
- * make the print receipt template match other itemized receipts;
- note that this change is not automatically applied when upgrading.
- * display billing type
- * add button to pay just selected charges
- * reformat the page for inputting the credit card number
+++ /dev/null
-Clickable Copy Locations
-^^^^^^^^^^^^^^^^^^^^^^^^
-Adds a url field to the copy locations editor. When a url is entered in this field,
-the associated copy location will display as a link in the opac summary display.
+++ /dev/null
-Download Checkout History CSV Fixed for Large Number of Circulations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Downloading checkout history as a CSV from My Account has been fixed
-for users with a large circulation history. Previously, this would
-time out for patrons with more than 100 or so circulations.
-
-This feature no longer uses the action/trigger mechanism and the OPAC
-now generates the CSV directly. The old action/trigger code is still
-present in the database and should be removed at some point in the
-near future.
+++ /dev/null
-Google Books Preview rewrite
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The Google Books Preview functionality in record detail pages has been
-rewritten to modernize its style and optimize its performance:
-
-* The Dojo JavaScript framework is no longer used, saving approximately
- 150K of JavaScript and CSS and four network requests per page load.
-* The Embedded Viewer is not loaded unless a possible preview is found,
- saving more network and memory overhead.
-* The Google Books Loader is used to load the Embedded Viewer instead of the
- https://productforums.google.com/forum/#!topic/books-api/lZrq5cWKrTo;context-place=forum/books-api[deprecated
- Google Loader].
-* All variables are self-contained and do not pollute the global namespace.
-* Event listeners are registered to handle clicks, rather than attaching
- `href="javascript:function()"` to <a> elements.
-* Book previews are displayed in a panel sized according to the viewport
- of the browser, improving its appearance on both mobile and desktop
- browsers.
-* The rewritten code is now served up directly from
- `/js/ui/default/opac/ac_google_books.js` rather than as a TT2 template.
+++ /dev/null
-jQuery for the TPAC
-^^^^^^^^^^^^^^^^^^^
-This release adds optional support for jQuery in the TPAC. This support
-enabled by setting the ctx.want_jquery variable to a true value in the
-config.tt2 TPAC template.
-
+++ /dev/null
-New Popularity Parameter
-^^^^^^^^^^^^^^^^^^^^^^^^
-New popularity parameters for in-house use over time and for count of distinct
-organizational units that own a title are now available. Evergreen sites
-can use these parameters to create new statistical popularity badges for
-sorting in the catalog by Most Popular or by Popularity-Adjusted Relevance.
-
-The in-house use parameters will apply a badge to titles that have the most
-in-house use activity over time. The organizational unit count parameter
-will apply a badge to titles owned by the most number of libraries in a
-consortium. Ownership is determined by the copy's circulation library.
+++ /dev/null
-Option to Suspend Holds at the Time They are Placed
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Users now have the option to suspend a hold at the same time they place the
-hold. The _Place Hold_ screen has a checkbox that can be enabled for users
-who want to suspend a hold at the time it is placed. There is also an option
-to set the activation date at the same time. This option is also available
-when placing holds on a batch of titles from _My List_ and will apply to
-all the titles in the batch.
-
+++ /dev/null
-Link ILS User and Working Location Reporting Sources
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The Working Location reporting source now has labels
-and it is now linked to the ILS User reporting source, allowing
-reports to display or filter on staff working location.
+++ /dev/null
-Fix to reporter.classic_current_circ view
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The `reporter.classic_current_circ` view, which is part of some
-extra views defined in `Open-ILS/src/sql/Pg/example.reporter-extension.sql`,
-has been fixed to not exclude loans for patrons who do not have a
-billing address set. Users of this view should rerun
-`Open-ILS/src/sql/Pg/example.reporter-extension.sql` during upgrade.
+++ /dev/null
-New report source table allowing report of "last" deleted copy
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This source table allows you to construct a clever aggregate report template
-which will report bibliographic ID's where a library or a group of libraries
-no longer have a copy attached but had* a copy attached. This is especially
-useful when a holdings sync is required with an external vendor.
-
-
-Instructions for creating the report template:
- * Create a new report template using the "Library Holdings Count with Deleted" as the source
- * Add "Has Only Deleted Copies 0/1" (Min) to the Aggregate Filters -> Change Value to "1"
- * Add "Last Edit Date" (Max) to Aggregate Filters -> Change Operator to "Between"
- * Add Circulation Library -> "Organizational Unit ID" Raw Data to Base Filters -> Change Operator to "In list"
- * Add "Bib ID" to Displayed Fields
- * Add "Last Edit Date" to Displayed Fields and Change Transform to Max
- * Add "Has Only Deleted Copies 0/1" to Displayed Fields and Change Transform to Min
- * Add "Total copies attached" to Displayed Fields and Change Transform to Sum
-
-
-This template will only output bibliographic ID's where all of the copies for the specified branch(es)
-are deleted. Furthermore, it will only output bibs whose copies were edited (deleted) during the
-specified date range. Unfortunatly the user will have to manually type the date range without the date
-picker. This view will also allow you to answer questions like "Show me bibs where I have one visible
-copy and more than two deleted copies."
+++ /dev/null
-Add Provider to Provider Note link
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The Provider reporting source now includes a link to Provider Note.
+++ /dev/null
-New circulation report source "All Circulation Combined Types"
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This report source will allow you to create a single report template for all of the following:
- * In House
- * In House Non Cat
- * Circulation (standard)
- * Non Cat Circulation
-
-These columns are important to display:
- * Item Type
- * Circulation Type
+++ /dev/null
-Reports Template Searching
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-A new form appears along the top of the reports interface for searching
-report templates. Once found, typical template actions (e.g. create new
-report) are available from within the results interface.
-
-Searches may be performed across selected (visible) folders or all
-folders visible to the logged in user.
-
-Searches are case-insensitive, any word order, with left-anchored words.
-All searched words must appear in at least one of the searched fields.
-
-Examples
-++++++++
-
- * Searching for 'stat cat' matches:
- ** stat cat
- ** statistical category
- ** categories, statistical
- ** patrons (stat cat)
- * Searching for 'stat cat' does not match:
- ** stat
- *** both words must be present in the searched field(s)
- ** stat location
- *** location contains 'cat' but it's not left-anchored.
-
-Reporter Paging
-+++++++++++++++
-
-The templates, reports, and output interfaces now support paging via
-new 'Next', 'Prev', and 'Start' links next to the output limit selector.
-
-
+++ /dev/null
-SIP Bugfix Requires SIPServer Upgrade
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The fix for Launchpad Bug 1542495: "OpenILS::SIP::clean_text() can
-crash" requires that you also upgrade SIPServer with the fix for
-Launchpad Bug 1463943: "Non-ascii Unicode characters in messages cause
-SIP client problems." This means that if you use SIP2 with Evergreen,
-you must also upgrade SIPServer to the latest commit in the git
-repository. Conversely, if you upgrade SIPServer to the latest commit
-in git, you must also upgrade Evergreen or, at least, apply the patch
-for Launchpad Bug 1542495. These two patches are complementary and
-cannot be applied independently of one another.
-
-SIP Bugfix Changes How Encoding Is Determined in Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The combined fix for the above mentioned SIP bugs alters the way that
-the output encoding is looked up in the configuration file (typically
-oils_sip.xml). SIPServer now looks for the encoding in the following
-places:
-
-1. An +encoding+ attribute on the +account+ element for the currently active SIP account.
-2. The +encoding+ element that is a child of the +insitution+ element of the currently acctive SIP account.
-3. The +encoding+ element that is a child of the +implementation_config+ element that is itself a child of the +insitution+ element of the currently acctive SIP account.
-4. If none of the above exist, then ASCII encoding is used by default.
-
-Number 3 is provided to ease the transition to the new code. It is
-the current location of the +encoding+ element in the sample
-configuration file and as such, where it is likely to be found in
-actual files. It is recommended that you alter your configuration to
-move this element out of the +implementation_config+ element and into
-its parent +institution+ element. SIPServer should *not* look into
-the implementation config, and this check may be removed at some time
-in the future.
+++ /dev/null
-Web Staff Client Serials Module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The serials module has been ported over to the web staff
-client, implementing a unified serials interface that combines
-ideas from both the serial control view and alternate serials
-control view from the old staff client.
-
-In addition to carrying over functionality that was available
-in the old staff client, several new features are included:
-
-* the ability to save prediction pattern codes as templates
- that can be shared and reused within an Evergreen database
-* a more streamlined interface for managing subscriptions,
- distributions, and streams
-* it is no longer necessary to create a starting issue in
- order to predict a run of issues; the dialog box for
- generating a set of predicted issues now lets you specify
- the starting point directly.
-* the ability to more directly edit MFHDs
-
-The new serials interfaces can be accessed from the record
-details page via a Serials drop-down button that links to
-a subscription management page, a quick-receive action, and
-a MFHD management page. There is also a new Serials Administration
-page where prediction pattern and serial copy templates can
-be managed.