Bundles now support options. It is now possible to attach an option list to a bundle in a similar way it works for the products. It is useful when a bundle includes products attached to the same option list (e.g. colour). In this case the options can be picked at bundle level, not the bundle products level
Discounts
Several UI improvements for conditions and actions views where the products/bundles/categories can be selected:
A column with Product/Bundle code was added to the table with selected items (only for items added into the list after release 2018.40)
Product/bundle/category publishing status is now displayed in the description field
Newly added items (not yet saved) are highlighted
Once an item has been added to the list, it no longer appears in autocomplete search results
Projects
It is now possible to select User Groups for "Users" and "Super Users" roles
When a new member is added to the project, by default, the new user will be added into the "Users" group
Hooks
Fixed an issue with the incorrect timestamp in Hook logs
Core
Fixed an issue with extraction of source client IP address from X-Forwarded-For HTTP header
"Scheduler Log" now renamed to "Reports" as this better reflects the purpose of the module
Users
Mailchimp sync logs are now available in "Reports"
"Order By" configuration option was added in module config
News
"show_news2" block function now respects the permanent/temporary flag
Centres
Centre::getMetaData() method always returns an instance of \CoreDNA\Collection meaning it is safe to call any methods on it without checking for null value
Added Centre::getMetaData($key) method which returns the value of the specified metadata key
Improved caching of metadata
20 November
Release: 2018.39
E-Commerce
It is now possible to pass JSON Arbitrary data in multiple separate fields using PHP array notation for field names (eg <input name=“order_json_data[level one][level two]” type=“input”>). Also, the arbitrary data submitted on shipping details page and on payment details page will now be merged into a single data structure accessible in order details. Please refer to the documentation for further details and examples.
It is now possible configure the lifespan of the shopping cart. By default, the cart key expires after 15 minutes of inactivity or when the browser has been closed. When the Long Term Cookie option is enabled in Commerce → configure → Manage Configuration, it is now possible to set cart key expiry in days. The cart contents will be preserved until cart has expired. Please note, a cart and a user are separate – a cart is not linked to the logged in user.
default templates were introduced to the feature of exporting order contents in csv, xml or html in order details view in the DXP
Hooks
All events now have access to HTTP request data. A new standard object is now available in all actions and all events – $request. This object stores all HTTP request parameters (except sensitive data, such as passwords), such as query string parameters and POST data. This provides a context for hook action. For example, it is now possible to implement some business logic in the templates, based on the parameters in the URL of the page which triggered the event; or skip execution of some action based on the value of some parameter in the submitted form data.
Custom Fields
Custom fields are now cached
Users
Fixed an issue with flexible user import
Core
Fixed an issue with redirection to canonical host name not occurring when accessing website via CDN host.
13 November
Release: 2018.38
Metadata
Management of metadata variables was moved from the centre maintenance into a separate module which may be accessible by any user. The new module can be located under "Content" section. It has an improved UI and new export and import functionality. It is possible to export all meta variables of the centre into a csv file. Is it also possible to import metadata variables in three modes:
Append - only the new, non-existing variables will be created, while the existing variables will be skipped
Overwrite - all variables in the import file will be added or updated
Replace - all variables in the centre will be deleted and replaced with the variables in the import file
Forms
The Results tab got new table layout, in addition to user name and time completed it displays information about the IP address of the user, the country and region of the user
Hooks
Sometimes User Update events are fired multiple times during the same request cycle. The new EventRegistry system now ensures that each event is only fired only once for each object. This prevents unnecessary triggering of the hooks multiple times.
Fixed an issue with PDF generation in Create File action
UI Improvements
Discounts
In line with phasing out the old Vouchers module in favour of Discounts module, it is no longer possible to create new Vouchers
Fixed an issue where it was not possible to create discounts with fractional (<1) values
Blogs
Fixed a few issues with linked content and image custom fields
5 November
Release: 2018.37
Discounts
New discount condition "Cart Excludes" allows to specify the "stop" products or categories. If such products are added into the cart, the discount will not apply.
The "Discounts" tab is now displayed by default upon entry into the module. The Vouchers are deprecated and will be retired soon.
Hooks
The User Updated event is not fired when a User object is updated by a hook (e.g. Evaluate Template action) to avoid infinite loops
Forms
Fixed an issue when random names were displayed in the User Full Name field in the DXP for the forms completed by Guest users
The "Results" tab now displays date and time in the format according to the regionalisation settings of the centre
Core
In Site Maintenance it is now possible to store Google API keys to be used to services like Geocoding in the Retailers module.
Product Catalogue
Fixed an issue with variant stock issues for bundles