Public Backlog

WebinOne announcements, releases, updates and achievements

v 6.6 Release date: 11 May, 2022

Full Release Notes

BACKLOG

Site Storage Email Notification

Extend the "approaching limit" email notification repetition for site storage (when storage exceeds 90% capacity)

Now to be once a week instead of once a day

Preview and Draft Mode

Preview and Draft mode on pages and custom modules.

DESIGN:

https://invis.io/TXX3577QCWJ 

1) Draft Mode logic

Provide the ability to:

  • save draft content of ‘Settings’ and ‘SEO’ tabs for Module Items
  • save draft content of ‘Settings’ tab for Content Templates
  • delete the draft version of the content
  • switch between draft and live mode
  • preview draft
    • the draft should be accessible by the same URL but with GET param ?DraftPreview=true
    • if no draft content is available - show live content of the item
  • Save draft content to live
    • clicking on the ‘Publish’ button commits the draft version to live (overriding the previous live version)
    • draft content should be deleted on this operation

On opening edit item form

  • always show live version of the content

2) FTP sync of pages logic

  • Changes made via FTP applied to Live content ONLY

3) Special Properties Exceptions

Changing these fields on draft should be ignored:

  • SKU Code
  • URL slug
  • Parent items
  • Home page state
  • Secure zone assignment
  • Product Downloadable File
  • Recurring Type

eg: https://prnt.sc/sba18v 

4) Draft accessibility

Ability to switch to draft mode should be allowed/restricted via Admin User Roles for the ‘Can View And Manage Draft’ option.

5) Admin User Roles/Permissions

Add permissions option to the following module groups:

  • Each Custom module permissions group
  • Default Custom Module permissions group
  • Page permissions group
  • Content Template permissions group
  • Blogs permissions group
  • Blog Posts permissions group
  • Banner Groups permissions group
  • Banners permissions group
  • Galleries/Sliders permissions group
  • Slides permissions group
  • FAQ Groups permissions
  • FAQ Questions permissions
  • Authors permissions group
  • Products permissions group
  • Catalogs permissions group
  • Events Group permissions
  • Event permissions group

Permissions option:

  • Can View And Manage Draft
    if restriction is disabled; do not show switcher between draft and live mode on item edit form in admin [UI]

{{order}} Object To Be Generally Available

Original request:
https://webinone.com/public-backlog-state/request/_order-object-to-be-generally-available

Documentation (shown all places where order object is not available but should)
https://docs.webinone.com/liquid/order-object#secOrderObjectAvailability
Screen shot: https://prnt.sc/ytsrt6

1) BUG Fix:

Supplier System Email:
In ‘Email template’ - {{this.order}} data not working

2) BUG Fix:

All system Emails and autoresponders:
‘From name’ and ‘Subject’ are not parsed via liquid with the same context as body.

3) Improvement: When product with supplier is purchased add supplier email to the order line object https://prnt.sc/s5dy3k 

4) Improvement: Further ‘order’ object support:
Add ‘this.order’ object to the following places (set null value if no payment occurred)

  • form thankyou page
    • for paid secure membership (generic form)
  • workflow (Body)
    • for paid secure membership (generic form)
  • workflow (From, Subject fields)
    • for paid secure membership (generic form)
    • for paid form (generic form)
    • for paid form (single item form)
    • for paid form (checkout form)
  • autoresponer (Body)
    • for paid secure membership (generic form)
  • autoresponer (From, Subject fields)
    • for paid secure membership (generic form)
  • Supplier Email (From, Subject fields)
    • for paid form (checkout form)
  • Low Stock Email (From, Subject fields)
    • for paid form (checkout form)
  • Gift Voucher Email (Body)
  • Gift Voucher Email (From, Subject fields)
  • Secure Zone Details Email (Body)
    • for paid secure membership (generic form)
  • Secure Zone Details Email (From, Subject fields)
    • for paid secure membership (generic form)

[Portal] Emergency Settings

Add a new page in the Portal for Emergency Settings

Page should contain the following settings (just store saved data. No additional logic based on these are required)

All fields are NOT required

  • First name
  • Last name
  • Email
  • Phone number
  • Any additional info

Design:
https://invis.io/8512E2GQU7XY 

Add Shipping Address Fields to Form Builder

1) Address fields on the form settings

Add ‘Shipping Address’ and ‘Billing Address’ buttons to Form builder http://prntscr.com/1juqgk3.

Once selected add a group of fields to the default layout of the form.

Show them on the form builder as a group of fields: https://prnt.sc/fVWSzhSGvoa-

Fields that should be added to the form layout are:

  • Shipping Address
    • Payment_ShippingAddress (Shipping Address)
    • Payment_ShippingCity (Shipping City)
    • Payment_ShippingState (Shipping State)
    • Payment_ShippingZipCode (Shipping ZIP Code)
    • Payment_ShippingCountry (Shipping Country)
  • Billing Address
    • Payment_BillingAddress (Billing Address)
    • Payment_BillingCity (Billing City)
    • Payment_BillingState (Billing State)
    • Payment_BillingZipCode (Billing ZIP Code)
    • Payment_BillingCountry (Billing Country)

Both fields can be marked as required. And once marked as required - all fields inside the group become required (address, city, zip etc) and vice-versa.

2) Form submission flow

When such a form is submitted - add ‘Shipping Address’ and ‘Billing Address’ data to the CRM Order object (like it works previously for Shipping Address fields)

NOTE:

  • For backward compatibility - use value of the ‘formData.Zip_Code’ as value for shipping zip code as well as the value of ‘formData.Payment_ShippingZipCode’
    • if both occurred in the ‘formData’ then use ‘formData.Payment_ShippingZipCode’
  • For backward compatibility - always check if Shipping fields are present in ‘formData’ even if they are not selected on the form builder.
  • Do not use value of ‘Payment_ShippingCountry’ on form (type “checkout”). Use value of the selected shipping country from the shopping cart.

3) Attach billing and shipping address fields to appropriate CRM entities

  • Add ‘billing address’ fields to the ‘contact’ entity
    • migrate data from contact address to contact billing address
    • setup payment logic to take the address from the contact billing address field instead of the contact address field
      • if the billing address field is empty - use the contact address fields
  • Add ‘shipping address’ fields to the ‘order’ entity

4) Update the billing address from the payment gateway

  • When changes to the billing address come from payment providers update ‘contact billing address’ fields instead of ‘contact address’ fields

5) Liquid output

  • Add the following properties to the ‘contact’ liquid object
    • BillingAddress
    • BillingCity
    • BillingState
    • BillingZipCode
    • BillingCountry
  • Contact liquid object occurrence
    • {{request.currentmember}}
    • item from {% component type: "CRMContacts" %}
    • {{ this.member }} on system pages
    • {{ this.member }} on system emails
    • {{ this.member }} on autoresponder emails
      • on form submission
      • on create module item submission
    • {{ this.member }} on workflow and follow-up emails

6) Add these fields to Import/Export processes

  • add billing address fields to contact import/export
  • add shipping address to order import/export

7) Restore to default "checkout" form upgrade

  • Remove adding hard-coded shipping fields to the HTML layout of the form with the type "checkout" when clicking "restore to default" on form layout

Alphabetised Related Products list

Original description:

Currently the ‘related products’ for any product are not listed in alphabetical order and there is no search field.

This means you have to try to locate the product you want by scrolling through a random list of products, to try and find the right product to add as ‘related’.

This needs to be alphabetised based on the name of the product as well as have a search function so you can quickly locate the correct product to add.

Improvement:

Both alphabetical list and search fields added to Related Products UI.

DESIGN:
https://invis.io/V810G318WBN6

eCommerce User Input Field For Products

Allow the capture of user input data (text) against a purchased product.

New Attribute type

  • User Input field

Output via liquid

  • Add new attribute type to ‘item_attributes’ liquid component.
  • Should be output as a text input on the default attributes layout.
  • Add it to the orderline of ‘order’ and ‘shopping cart’ object (the same as any other attribute data)

Advanced Logic of the attribute type

  • If a product with User Input attribute is added to cart more than once, unique text input should specify unique orderline (order, shopping cart), as opposed to adding an additional quality to the same product orderline.

Product Import/Export

Output value via Export function and apply value via an Import

Format:

  • [attribute name][is_required]|[attribute_type]|[is_inventory_item]:;
    • [attribute_type] is ‘8’ or ‘UserInput’

Example

  • Test attr text*|UserInput|False:;

Output via admin UI

  • Display in “Order” > “Products” on orderline

Updated Output in default layouts

  • invoice email
  • shopping cart
  • item_attributes component default layout

DESIGN:
https://invis.io/DY10G2CWHK9S 

Custom reCAPTCHA Key Setup

1) Add new properties to the Settings -> Misc => Recaptcha Settings group (under Recaptcha Version field)

  • reCAPTCHA v2 Site Key
  • reCAPTCHA v2 Secret Key
  • reCAPTCHA v3 Site Key
  • reCAPTCHA v3 Secret Key

All of these fields should be empty by default

2) Rename incorrect reCAPTCHA labels

  • Rename all ‘Recaptcha’ labels in admin to ‘reCAPTCHA’

3) Add the reCaptcha property to the ‘this’ object of the form:

  • {{this.recaptcha_sitekey}}  
    • the value should be determined based on what reCaptcha is added to the form.
    • If no reCaptcha is added to the form - set null

Use Settings -> Misc => reCAPTCHA Settings group fields to retrieve keys for the object.

  • If reCAPTCHA v2 Site Key, reCAPTCHA v3 Site Key are empty - use our system keys

4) Add property ‘system_recaptcha_sitekey’ property to the ‘request’ liquid object which renders the key as saved above or the system key if no custom key is available:

  • {{request.system_recaptcha_sitekey}}

5) Replace reCAPTCHA key instances for the following:

  • all web form layouts
  • default form layouts  (when generated by restore to default request)
  • system form layouts (when generated by toolbox request)
  • System pages
    • 401
    • reset-password
    • request-reset-password
  • System pages default layouts (when generated by restore to default request)
    • 401
    • reset-password
    • request-reset-password
  • CMS ‘Add scripts to head’ functionality (for Google reCAPTCHA API)

6) Change reCaptcha validation logic to use the secret key and site key stored in Settings -> Misc => reCAPTCHA Settings (or system keys if null)

The feature is based on:
https://webinone.com/public-backlog-state/request/custom-recaptcha-key-setup

Custom Modules - Show Image thumbnail in Table Columns

Original Description

The ability to show thumbnail in Custom Module table.

Where a Custom Module has an Item Property>Custom Property that is type Media.

In that Custom Module’s > Table of items can we add the option to show a thumbnail of the actual image as well as the current option to show its path.

https://webinone.com/public-backlog-state/request/custom-modules-show-image-thumbnail-in-table-columns

Improvement:

Show the value of the media property type (if it’s a displayable image format) as an image thumbnail.

Add tooltip on hover that will show image URL.

Images Caching Issues

Add ‘Empty Image Cache’ button to the gear menu.

Once clicked - clear all Image processor cache.

Once done - show message: “Image cache was successfully cleared.”

DESIGN:
https://invis.io/N4YDTMBRUFY

Source:
https://forum.treepl.co/t/images-caching-issues-in-custom-modules-blog-posts/106

Event Anniversary Emails

1) Create a new Settings section on a module settings page

Called “Follow Up Emails” which includes the option:

  • Enable Follow-Up Emails (checkbox) - preset to ‘true’ for Events module

Show section only if “Module” > “Advanced Settings” > “Enable bookings” is true.

2) Create a new tab "DEFAULT FOLLOW-UP EMAILS" on a module edit page

Display only if the module has ‘Follow Up Emails’ -> ‘Enable Follow-Up Emails’ setting set to ‘true’ AND if ‘Module’ -> ‘Advanced Settings’ -> ‘Enable bookings’ is true

Content:

  • List of default follow-up emails
  • ability to add new default follow-up email
  • ability to edit and delete default follow up email

DESIGN:
https://projects.invisionapp.com/share/JA10JVKP2K78#/screens/447175909

Add ‘Date Field’ column after ‘Delivery Type’

  • Show field display name if field exists
  • Show saved field alias if field doesn't exist any more (but alias is saved for a follow-up)

3) Create a new tab "CUSTOM FOLLOW-UP EMAILS" on a module item edit page

  • Display only if the module has ‘Follow Up Emails’ -> ‘Enable Follow-Up Emails’ setting set to ‘true AND if ‘Module’ -> ‘Advanced Settings’ -> ‘Enable bookings’ is true.

Content

  • “Send only custom follow-up emails” (checkbox)
    • When enabled, allow to add/edit/delete custom follow-up emails
      • List of custom follow-up emails
      • ability to add new custom follow-up email
      • ability to edit and delete custom follow up email

DESIGN:
https://projects.invisionapp.com/share/JA10JVKP2K78#/screens/447175909

  • Set title Delivery Time instead Delivery Date
  • Add Date Field column after Delivery Type
    • Show field display name if field exists
    • Show saved field alias if field doesn't exist any more (but alias is saved for a follow-up)

4) Change “Email Notification” -> “Workflow emails” page

Rename default admin menu item name from “Workflow Emails” to “Emails” and EntityAlias from ‘WorkflowEmails’ to ‘Emails’

In custom admin menus, find menu item with alias ‘WorkflowEmails’ and rename to ‘Emails’

Add tabs:

  • Workflow Emails
    • Place existing listing and “add workflow emails” logic here
  • Follow-Up Emails
    • Add listing and add/edit/delete Follow-up emails logic here
    • Show tab only if site plan is BUSINESS or higher

Set following restrictions based on site plan

  • Show ‘Email Notification’ -> ‘Emails’ page starting from BUSINESS plan
    • Show ‘Workflow Emails’ tab starting from PRO plan
    • Show ‘Follow-Up Emails’ tab starting from BUSINESS plan

5) Create/edit follow up email logic

  • Select one of the already created follow-up emails or create a new one (like it works on workflows - https://prnt.sc/TyNsogEjZwIa)
  • Choose the trigger date field
    • Release Date
    • Expiry Date
    • Event Date Start
      • show if the module has ‘Advanced Settings’ -> ‘Enable Booking’ = true
    • Event Date End
      • show if the module has ‘Advanced Settings’ -> ‘Enable Booking’ = true
    • all custom properties with type datetime
  • Choose a time shift for the chosen trigger date field: https://prnt.sc/nKOv35KSrxTw
    • Delivery Time (numeric)
    • Delivery Type (dropdown)
      • Days After
      • Days Before
      • Hours After
      • Hours Before
    • Date Field (dropdown) - list of module item date fields
      • system fields:
        • Release Date
        • Expiration Date
        • Event Date Start
        • Event Date End
      • custom fields (display name is the name of the custom field)
    • on edit
      • do not allow to save follow-up if Date Field is empty (only set field to be empty if the saved alias belongs to the date field that doesn't exist anymore)

6) Follow-Up Email sending logic

If the module has’Follow Up Emails’ -> ‘Enable Follow-Up Emails’ setting set to ‘true’ AND ‘Module’ -> ‘Advanced Settings’ -> ‘Enable bookings’ is true

  • Schedule sending follow-up emails for each module item (for each subscriber to this module item) based on the selected date field:
    • For module items that have ‘Send only custom follow-up emails’ = true
      • send only custom follow-up emails
        • if there are no custom follow-up emails in the list - no email will be sent for this module item
    • For module items that have ‘Send only custom follow-up emails’ = false
      • send only default follow-up emails

7) Email liquid

‘this’ object should contain the following properties:

  • item
    • object that contains same fields as item from component type module (including event fields)
  • member
    • module item subscriber

8) Site Plan Restrictions

Allow view and use of ‘Follow Up Emails’ on module settings if site plan is PRO or higher

Hide DEFAULT FOLLOW-UP EMAILS on module view and CUSTOM FOLLOW-UP EMAILS tab on module item view if site plan is lower than BUSINESS

If site's plan is ESSENTIAL

  • disallow sending followup emails
  • if plan will be restored to BUSINESS or higher all follow-up emails that wasn't sent while site plan was ESSENTIAL should NOT be sent after plan upgrade

9) Admin User Role permissions

Ability to enable/disable Default and custom followup emails should be managed by ‘Can Edit Basic Module Settings’ module's restriction

Add following admin user role permissions:

  • Emails
    • Can View
      • if disabled; hide 'Email Notifications' -> 'Emails' menu item and do not allow to open 'Email Notifications' -> 'Emails' page
  • Follow-ups
    • Can View
      • if disabled; hide DEFAULT FOLLOW-UP EMAILS on module view and CUSTOM FOLLOW-UP EMAILS tab on module item view
    • Can Add
    • Can Edit
    • Can Delete
      • these 3 restriction above should allow to view ‘add’, ‘edit’ and ‘delete’ buttons on DEFAULT and CUSTOM follow-ups pages
  • Follow-up Emails
    • Can View
      • allows to see ‘Follow-up Emails’ tab on mail ‘Notifications’ -> ‘Emails’ page
    • Can Add
      • allows to show ‘add’ button on 'Email Notifications' -> 'Emails' page (tab ‘Follow-up Emails’)
      • allows to show ‘Add new follow-up email’ button on create follow-up form
    • Can Edit
    • Can Delete
      • these 2 restriction above should allow to view ‘edit’ and ‘delete’ buttons on 'Email Notifications' -> 'Emails' page (tab ‘Follow-up Emails’)

On create new admin user role

  • set all permissions above to true by default

For all existed admin user roles

  • All permissions above should be false
  • On update from v6.5 to v6.6
  • Add to all existing admin user roles following permissions with preset value
    • ‘Emails’ -> ‘Can View’ with value TRUE if
      • current user role permission has ‘Workflow Emails’ -> ‘Can View’ == true

10) Duplicating module item logic

Duplicate ‘Send only custom follow-up emails’ checkbox when duplicating the module item

Duplicate ‘Custom follow-ups’  when duplicating the module item

11) Duplicating module logic

Duplicate ‘Enable Default Follow-Up Emails’ AND ‘Enable Custom Follow-Up Emails’ settings

Duplicate ‘Default follow-ups’  when duplicating the module

12) Import/Export of module items

Add ‘Send only custom follow-up emails’ checkbox to import/export process

‘Follow-ups’ should NOT be added to module item import/export process

13)  Import/Export of module logic

Add ‘Enable Default Follow-Up Emails’ AND ‘Enable Custom Follow-Up Emails’ checkboxes to module import/export process

Do NOT add ‘Default follow-ups’  to export file

HTML security for GET url params in liquid request object

Add new filter to liquid

  • unescape

This filter should decode html entities to its original strings (as an opposite to ‘escape’ filter)

Example

  • {{"<br>" | unescape}}
  • result = <br>

Improve liquid XSS security by implementing the following improvements in the ‘request.request_url.params’ liquid object

  • convert all URL get parameters values to become HTML decoded

Example:

  • URL:
    /my_page?myParam=<script>alert(1);</script>
  • page content:
    {{request.request_url.params.myParam}}
  • expected output
    • &lt;script&gt;alert(1);&lt;/script&gt;
  • in case you will need to output original html - using this filter should help
    • {{request.request_url.params.myParam | unescape }}

 Add "Is Main Order" and "Is Recurring Order" property to order fields on Contact and order custom report

Improve Contacts and Orders custom report

  • Add "Is Main Order" property to order fields
    • type
      • boolean
    • Add it to the 'Fields' tab ('Order Fields 'section)
    • Add it to the ‘Filters’ tab
    • Logic: Shows if the current order is a main or a suborder
  • Add "Is Recurring Order" property to order fields
    • type
      • boolean
    • Add it to the 'Fields' tab ('Order Fields 'section)
    • Add it to the ‘Filters’ tab
    • Logic: Shows if the current order is a main or a suborder

BUG FIXES

Secure media file - uploaded images display broken

Secure media file - uploaded images display broken

If the user creates an item from the front and upload an image - (media-files folder should be SECURE https://prnt.sc/PsCLJTjnbpig 

Search engineer - expire date

https://treepl.slack.com/archives/C023SU50YQP/p1650902685179869

If item or custom module has expiry date and those modules expire - they should disappear from site map.

Sitemap and robots.txt

If there is no robot.txt file or it is there but empty, paste it there:

User-agent:*
Disallow:

Sitemap: link to sitemap as it is now

otherwise, we do not update the robots.txt file at all

in this way, we will pre-install default settings on all new sites - and if the file is not empty, then we consider that it is already customized and we do not touch it

and if they want to reset to default - let them delete the file or make it empty

Custom module - name of properties with "-"

https://treepl.slack.com/archives/C023SU50YQP/p1643293254025400

If create name of propery with "-" they do not display correctly on "Update form” on front-end: https://skr.sh/sCIsq9GzArG

ALSO doesn't work in JSON {% component source: "2", layout: "List", object: "collection", collectionVariable: "family", type: "module" %}
<pre>{{family.items[0].mother-in-law}}</pre>

Parent/Child custom module - not correctly display name of properties

  1. Go to Event and open settings
  2. Create several properties on Events and on Event Group
  3. After that change location for those properties
  4. Click on the first property and display not correct name of the property https://prnt.sc/KVh33JDdU6NV 

VIDEO:

https://treepl.slack.com/archives/C023SU50YQP/p1650437259226309

Show more less
New Feature

Event Anniversary Emails

The ability to send a custom email to the subscriber with information about the event they had purchased and anniversary emails to subscribers based on the course date ie. -3, +3 so you can easily remind participants of the event and then request feedback about it.
And being able to download a report of all event participants.


  • BC Equivalent
  • Emails
  • Events
  • Workflow
New Feature

Preview And Draft Mode For Pages And Module Items

The ability to save a draft and preview this, before the page/item is published.

  • BC Equivalent
  • Custom Modules
  • Pages and Templates
Improvement

Add Shipping Address Fields to Form

Add Shipping Address fields to System Form Properties.

Shipping Address
Shipping City
Shipping State
Shipping Zip
Shipping Country
  • BC Equivalent
  • Forms
Improvement

Custom Modules - Show Image thumbnail in Table Columns

The ability to show thumbnail in Custom Module table. Where a Custom Module has an Item Property>Custom Property that is type Media. In that Custom Module’s > Table of items can we add the option to show a thumbnail of the actual image as well as the current option to show its path.
  • Custom Modules
Improvement

Custom reCAPTCHA Key Setup

Ability to setup your own reCAPTCHA key to the particular site (in such way you will have all reCAPTHA statistics in google reCAPTCHA dashboard).
  • Forms
  • Member Area
Improvement

eCommerce User Input Field For Products

Request for BC Equivalent Functionality - The ability to add a user-input field to a product listing to capture details specific to that product. For example - embroidery on a shirt, message on flowers or icing on a cake etc.

This is functionality that BC provided and appears to be common in eCommerce solutions, it would be great to...
  • BC Equivalent
  • Ecommerce
Improvement

{{order}} Object To Be Generally Available

Currently, the Liquid {{order}} object is accessible only in the system Invoice layout.

If possible, requesting this be made generally available - the same as the other form submission related objects: {{formSubmissionData}}, {{workflow}} and {{member}}.

ie: in the forms autoresponder fields, workflow notification email fields and the forms JSON response/confirmation page (system or custom page)....
  • Liquid
Improvement

Related Products Alphabetised

Currently the ‘related products’ for any product are not listed in alphabetical order and there is no search field.

This means you have to try to locate the product you want by scrolling through a random list of products, to try and find the right product to add as ‘related’.

This needs to be alphabetised based on the...
  • Admin Panel
  • BC Equivalent
  • Ecommerce