Full Release Notes
|
BACKLOG |
Payment Flow For Europe: |
1) Add new setting to the form settings (show only if at least one of the selected payment gateways support Two-step card payments)
2) Payment gateways with Two-step card payments support:
3) Current payment flow logic is Instant payment.
4) Add Amount captured column on the Order -> Payments table http://prntscr.com/tfci79 |
|
BACKLOG |
Payment Flow For Europe: Stripe for EU (SCA via 3D Secure) |
1) Implement Strong Customer Authentication (SCA): (SCA) is a regulatory requirement in effect as of September 14, 2019, that impacts many European online payments.
2) Add setting to stripe Payment Gateway (Enable 3D Secure) Enabling this setting will force payment form to trigger Payment Intents flow with support of 3D Secure rather then Charges
3) Create new system page: Checkout payment (/checkout-payment)
4) Payment Intents flow will not ask you for card details on the form but once the form is sent - it should redirect you to Checkout payment system page. In case you are paying for Event, secure zone subscription or general payment:
5) If shopping cart total price was changed after user comes to Checkout payment system page - show validation error on submit: “Price of the shopping cart was changed. |
|
BACKLOG |
Payment gateways: Bambora Payment gateway |
1) Create support for Bambora Payment gateway. Use Norway and Switzerland logic version: https://developer.bambora.com/europe/checkout/getting-started/create-payment
2) Gateway logic should support following flows of capturing price that should be configured via gateway settings (similar as for stripe):
3) Show error message if domain is not verified (endpoint is not valid error from bambora) on charging: “The payment can't be processed. This domain is not verified by Bambora. Please contact their support in order to get the domain verified.” |
|
BACKLOG |
Custom Reports: Builder |
DESIGN http://prntscr.com/thh497
1) Add page and menu item: ‘Reports’ > ‘Custom Reports’ Provide ability to:
3) Reports Builder: SETTINGS Save the report by name and set as public option that allows you to share the report with other admin users. If Make public set to false - you are the only one who will see this report.
TYPE The type determines what fields should be collected for Fields and Filters steps and what entities should be collected for the final report. - Contacts (default) - Contacts and Cases - Contacts and Orders - Contacts and Event Bookings
FORM FILTER Select a form (from all available web forms) to filter only those cases,orders or event bookings that belong to this form. Show section only if type is one of: - Contacts and Cases - Contacts and Orders - Contacts and Event Bookings
---------
FIELDS Select Fields to be seen on report as column headers
---------
FILTERS
Ability to add additional filtering rules
---------
RESULTS Generate sortable and paginated results table. Ability to export to Excel file. |
|
BACKLOG |
Custom Reports: Export |
Provide ability to export Custom report to Excel file. Columns should be the same as the report. |
|
BACKLOG |
Import/Export of prices, attributes and inventory |
Export format:
Add all system properties of the product after default properties and before custom properties
Product area should be defined as (http://prntscr.com/rhxeho):
Add following fields for specific-serialized relations:
|
|
BACKLOG |
Liquid security issue on form submission |
Add algorithm that will protect user-submitted content of liquid and JS injection in all form submissions and when user adds or edits a module item, for all text fields.
IMPORTANT: Validate text value length AFTER the wrapping if it has occurred. So if original value fits the single line text field but once wrapped it doesn't - the validation error should be shown.
Example: <div> <h1>Some title</h1> {{this}} <script>location.href = "https://some-fishing.site"</script> <style>body{display: none !important;}</style> </div>
Replace with:
<h1>Some title</h1> {{this}} <script-is-not-allowed>location.href = "https://some-fishing.site";</script-is-not-allowed> <style-is-not-allowed>body{display: none !important;}</style-is-not-allowed> </div> |
|
BACKLOG |
Datasource Field: When focus a field - get first 50 datasource items |
Improve Datasource Form control:
|
|
BACKLOG |
Recaptcha v3 validation JS fix |
Fix for general form Fix for payment form CMS generated javascript changes to avoid conflicts with payment JS. No Partner/front-end changes required. |
|
BACKLOG |
Advanced CRM: Custom Fields Groups CRUD Page |
Add page for Custom CRM groups list (http://prntscr.com/thh86e). Provide ability to add, edit, delete the Custom CRM group. Provide ability to use pagination for Custom CRM groups. Add/Edit form should contain following fields:
Design: http://prntscr.com/thh7y7 |
|
BACKLOG |
Advanced CRM: Custom CRM Field Groups attaching rules and linkage |
There should be 2 types of custom crm groups linkage Global setting:
Individual Contact record Attachment:
Saved custom crm group values for the contact should be saved as group-field-contact-value records. group-field-contact-value records should not be deleted on unassigning Global setting or Certain Contact record Attachment from the crm contact. Description
Linkage entities (each should have EDIT entity button and "Add Custom Fields" button https://prnt.sc/orpcbb):
Group Displaying Rules:
|
|
BACKLOG |
Advanced CRM: Attach Custom field groups to web forms |
Provide ability to choose Custom CRM Groups and attach them to the form.
Default layout builder should build all fields of each group similar to the form's custom fields.
Name should be: [[GroupAlias]]_[[FieldAlias]]
Example: |
|
BACKLOG |
Advanced CRM: Add custom CRM field groups to CRM record |
CRM contact detail page should contain new button: “Add Custom Fields”
Clicking on that button should show panel that allows to select existing custom CRM forms.
|
|
BACKLOG |
Advanced CRM: Liquid component tag for custom CRM fields |
Add new component tag component type:"CRMContactCustomGroup":
Pattern: {% component type:"CRMContactCustomGroup", groupAlias:"[[groupAlias]]", fieldAlias:"[[fieldAlias]]", entityType:"[[entityType]]", entityId:"[[contactId]]", collectionVariable:"", layout:"" %}
Item context: {
Default virtual layout: {{this.fields[0].value}} |
|
BACKLOG |
Advanced CRM: Toolbox - Liquid component tag for custom CRM fields |
Add new item to toolbox:
|
|
BACKLOG |
Advanced CRM: Plan restrictions |
All functionality with advanced CRM custom groups should be available starting from Pro plan.
Add to menu:
|
|
BACKLOG |
CRM Records as Datasource: System property for allowing using crm contact records |
Add new system property to CRM Contact record: isDataUsingAllowed (bool)
CRM records that has this checkbox ticked ON will be allowed to:
|
|
BACKLOG |
CRM Records as Datasource: Module item custom property - CRMRecord |
Add new Module item property type: CRM record
|
|
BACKLOG |
CRM Records as Datasource: Liquid output of CRM records |
Add new component tag component type:"CRMContacts":
Pattern: {% component type:"CRMContacts", filterBy:"", filterValue:"", limit:"", offset:"", sortBy:"", sortOrder:"", collectionVariable:"", layout:"" %} Component should filter, sort and return list of CRM contacts that has isDataUsingAllowed equal to true ONLY
Default virtual layout: <ul> {% for contact in this.items %} <li>{{contact.FirstName}} {{contact.LastName}} - {{contact.Email}}</li> {% endfor %} </ul>
Item context: { "items" : [ { "id": 0, "email": "", "firstname": "", "lastname": "", "address": "", "city": "", "state": "", "zipcode": "", "country": "", "site": "", "phone": "", "status": "", "notes": "", "createddatetime": "", "updateddatetime": "", }, ... ] } |
|
BACKLOG |
CRM Records as Datasource: Toolbox - Liquid output of crm records |
Add new item to toolbox
|
|
BACKLOG |
Ability To Parse JSON With Liquid |
1) Add new component tag: component type:"json": Pattern: {% component type: "json", source_type:"[[source_type]]", source:"[[source]]", layout:"[[layout]]", collectionVariable:"[[collectionVariable]]" %}
Default virtual layout: {{this}}
{{this}} variable contains the parsed json object. If parse error occurred {{this}} will be NULL
2) Component added to Toolbox (https://prnt.sc/s2pmv2):
================= Public Backlog item: |
|
BACKLOG |
Extend URL slug max length |
Allow slug max length to be 254 symbols instead of current 200 |
|
BACKLOG |
Add shipping address to order (system fields) |
1) Add shipping address as system fields to the order in the admin Extend order model by adding shipping address as system fields http://prntscr.com/tet3te
Separate address to the following fields and allow editing via order edit operation:
2) Extend Order liquid object Extend Order liquid object by adding following fields:
So they could be listed like
|
|
BACKLOG |
Last sorting state saving for the module list view |
Remember the latest sorting field and sorting direction for each module on list view http://prntscr.com/t97vsn Once admin user comes back to the module items list view in the admin - the sorting should be the exact same as it was saved earlier. |
|
BACKLOG |
Re-send Invoice |
1) Provide ability to re-send invoice email from the admin dashboard (on edit order page) to: - Custom email (‘Send Test Email’ button): once clicked - shows text field to enter email address (pre-filled by current admin email)
|
|
BETA |
Feature flags updates for v5.4 |
For Trial Sites: Flags moved to internal section AND set to enabled:
For Live sites: Flags move to internal section AND set to enabled:
|
|
BETA |
Make reCaptcha to be required for users not logged in |
1) Feature flag: Anti-spam protection Enables logic restriction that doesn't allow to submit any web form for not logged in users if the form doesn't include reCAPTCHA (v2 or v3)
Apply restriction as part of validation if
2) WARNING: The flag will be force enabled in 5.5 release (but it still could be temporarily disabled for certain sites on demand). So change your forms accordingly for 5.5 release. And in 5.6 this logic will be applied permanently. |
|
Bug |
Url (and all other system properties) names should be restricted for custom properties of the module |
When creating custom properties, for any module, using a name of any system property the property should not be created since such alias in use. System should say “Property with specified name already exists” THIS FLOW SHOULD WORK FOR ALL SYSTEM PROPERTIES |
|
Bug |
Verified domains to be case insensitive |
Validate email domains using case insensitive comparison: |
|
Bug |
{{this}} in Snippet is incorrect |
Snippet should contain the same object within this variable that is accessible outside snippet. 1. Create snippet and write {{this}} http://prntscr.com/sos6mn 2. Create a Page and output that snippet http://prntscr.com/sos7qe 3. Create another page and write {{this}}
Expected: The only difference between those 2 pages should be only in additional “params” property available in snippet this output http://prntscr.com/sos9nf
Actual: Properties of this object shown incorrectly http://prntscr.com/thgqkk
|
|
Bug |
Treepl main CSS link position |
Fixed to be prepended to the head section instead of append. https://forum.treepl.co/t/treepl-ecommerce-css-link/1063
|
Advanced CRM
- Customization of forms, form submissions and contacts by a set of predefined groups of fields.
- BC Equivalent
- CRM
Assign CRM Records To Module Items As Datasource
-
1) "isDataUsingAllowed" - system property type checkbox added to CRM record
(only crm records that has this checkbox ticked on will be allowed to be assigned to module items (should help with the GDPR since this checkbox allows user to disallow using his record just by uncheckin the checkbox on the profile page).
2) CRM record - type property...
- CRM
- Custom Modules
Custom Reports
- Ability to create custom records based form submissions, booking records, contacts etc.
- CRM