2018/03 Release notes
26 March
Release: 2018.9
e-Commerce
- It is now possible to pass any JSON-encoded arbitrary data in
order_json_data
variable in the cart. This data will be displayed on order details page in the DXP. - Additional back-end validation added at checkout process to ensure no critical user information is lost
- Restore order link now works with the quotes. A quote can be restored into a new order.
- The obsolete e-mail notifications are not dispatched when a hook with Send Mail action exists for the "New Order" event.
- It is now possible to pass any JSON-encoded arbitrary data in
- Wiki
- Fixed auto-loader for Diff module
- Markdown 1.0.1 library replaced with Markdown Extra 1.2.8
- Fixed an issue with CSRF
- Registration
- JSON output is now supported in the registration module. Coredna now uses standardised JSON response object. The unified approach to JSON responses will be gradually extended to other modules.
- Discounts
- Fixed a bug with pagination in conditions
19 March
Release: 2018.8
- Banners
- It is now possible to configure default authority setting for newly created banners, including “Inherit Access”. In this case it will inherit authority settings a the category it belongs to. Also, it is now possible to control the the default publishing status of the newly created banner
- Pages
- It is now possible to configure default authority setting and publishing status for newly created pages
- Faceted Search
- It is now possible to search by all the fields in the index at once (i.e. match product code or product tag) by passing `searchAll=1` parameter to the query
- Product Catalogue
- Added an ability to specify the order of options in the options list at product level. This way the order of options in a sinlge option list can be customised for each product which uses this option list
- PDF
- wkhtmltopdf library was causing http server crashing and now replaced with DOMPDF
- Every template on any page can now be easily rendered as PDF by passing `content_type=pdf` parameter in the URL. The JS Console will provide with a hint on which template is using by the current URL. A copy of this template needs to be created with .pdf.html extension. If such template exsits and `content_type=pdf` is specified, the engine with generate a pdf with the current view.
- Documents
- Enabled notifications on new file uploads
13 March
Release: 2018.7
- Assets
- Changed default sorting for Assets. Files are now sorted by extension and then by name; directories always come first. Also, files and directories starting with `.` are not displayed now
- Pages
- Added a config parameter to specify how many attachments are displayed per page in DXP
- Catalogues
- Option lists can now be assigned to a category. A category has name, type, description and three generic custom fields. The order of categories can be sorted from the DXP. The `CatProduct` class got two new methods: `CatProduct::getOptionlistsWithCategories()` which returns option lists grouped and sorted by category Id, and `CatProduct::getOptionlistsByCategories()` which returns a flat array of option lists sorted according to the category. `Optionlist::getCategory()` is a new method in `Optionlist` class that returns `OptionlistCategory` instance.
- Hooks
- Hook action can now be skipped if the specified condition is met. This allows a better workflow control. An action can be skipped, depending on business logic in the previous action, or if a hook was invoked in development mode. A recent `params` object feature is a great help here. For skip condition any property of any object can be checked. E.g. `order.status = 'new'` or `params.isdev = 1`. Skip conditions are available for all actions.
- Discounts
- Discounts usage statistics is now available for view and export.
- Centres
- Fixed a bug with editing/deleting not working
- e-Commerce:
- Significant improvement in checkout performance for websites with a large number of discount rules.
- Fixed a few issues with changing quantities on products in a cart
5 March
Release: 2018.6
- e-Commerce/Integrations
- Cart 3 now allows to use product options without variants or pricing
- SalesOrder plugin: fixed an issue in SAPByD integration when a space was used as a company name
- Fixed an issue with password reset link when using guest checkout
- Company name field was extended to 64 characters
- Fixed a bug with options when updating product quantities in a cart view
- News
- Fixed a bug with pagination in `show_news2` block function
- Documents
- Maximum file size for upload increased to 50Mb
- Discounts
- Discounts now support multiple codes per rule. Just copy-paste a list of codes separated by space, tab, new line or comma into the “Coupon Codes” field. Usage of each code will be tracked separately.
- It is now possible to set lifetime dollar limit on discount rule or coupon. The limit is set in discount action. When the lifetime value is exceeded, discount will not apply any more. This allows e-commerce customers to have a better control over their discounting policy and even introduce gift cards (100% discounts with $ limit). Note: for discounts with multiple coupon codes, the limit is applied per code.
- It is now possible to set a limit on the number of times a discount rule or coupon code can be used. Note, for discounts with multiple coupon codes, the limit is applied per code
- Hooks
- A new global object `$params` was introduced. It is a typical parameters bag. Within the templates, it is possible to set values with `$params->set('foo', 'bar')` and retrieve values with `$params->get('foo')`. The object is available in all actions within the hook and is passed to the events generated by the hook (e.g. REST Response Received" event). This is a convenient way to pass your own variables to templates.
- A new, unified way to access object properties was introduced in hook actions configuration. This is useful for the fields like the URL in REST Requests. If a URL contains order number, it can be written like this:
https://api.coredna.com/orders/{order.num}
where the first part of the reference is object name: `order`, the second part is property name: `num`. This works with all objects accessible by the hook action, including the `$params` object. It means, in one action a parameter can be set to some value retrieved from REST response and in the second action this parameter value can be used in the URL for another REST API call: https://api.coredna.com/orders/{params.ext_reference}