v 3.3 Release date: 27 Feb, 2019

Full Release Notes

Backlog

Documentation link in the admin

Documentation link in the admin should be viewed only for partners:

http://prntscr.com/mmlqzg

Backlog

'Do not use template' and 'use default' template behavior

Modify content template and email template wrapping behavior:

  1. Assigned template field is number field
  2. If number is int value > 0
    • Try find template by this ID. Apply found template to the content.
    • If template not found - go to step 4
  3. If number is int value == 0
    • Check for default template for this type of content. If found - Apply found template to the content.
    • If default template not found (or not provided) - go to step 4
  4. If number is int value == -1 or null (force apply -1 in this case if it happens while saving process)
    • Force apply Pseudo-template with the content:
      {{pageContent}} - for the Content Templates
      {{this.emailContent}} - for the Email Templates

In Admin added 2 options when assigning Content Template and Email Templates:

  • Don't use template (value -1)
  • Use default template (value 0)

Backlog

Event - Calendar Support

Design: http://prntscr.com/mu68eb

Responsive calendar support for Events:

  • Create JS plugin that builds month based calendar for events
  • Add ajax query for events for current month and display them on the calendar
  • Calendar should be responsive

Created new include file "/cms-assets/includes/event-calendar.inc".

Add component toolbox option

  • Events->Calendar
  • Select event group:
    • all (all items)
    • ungrouped (items in the root level, outside of any group)
    • (name of any created event group)
    • ...
  • show code:

Backlog

Add "Parentname" To module Component

  1. Add "templatename" to the module component to target the name of the template.
  2. Add "parentname" to the module component to target the name of the parent item (that can be defined by parentid).
  3. Add parenturl

{% component source: "Page", layout: ""...
{
"id": 1832,
"url": "",
" parentid": 1833,
" parentname": "Name of Parent",
" parenturl": "/relative/url",
"templatename": "Name of Template",
"lastupdateddate": "2018-10-21T23:34:21","

Backlog

Home Page Status Available In {{this}} Object

Include the ‘Set as Home Page’ data within the {{this}} object so we have it available in Liquid.

It can be helpful to know for setting certain conditions in the template; just some examples:

· Show a hero slider above content when on home page
· Do not show a global subscription pop-up/modal window when on home page


{{this}}:


{
"id": 1832,
"url": "",
"parentid": 1833,

"isHome" : true,

...
}

Backlog

Direct Link To CRM Form Submission Entry

  • Ability to grab direct link to CRM form submission entry from either the 'formsubmission' or workflow collections to place in workflow email.
    This is so that one can direct a workflow recipient straight to the Form submission in the admin console. Something like
  • {{this.formSubmissionData.crmContactLink}}
  • {{this.formSubmissionData.crmFormSubmissionLink}}
  • {{this.formSubmissionData.crmEventBookingLink}}
  • Add link to CRM contact from within the Form Submissions in the Admin: http://prntscr.com/mmlfnn (email address goes to CRM record, not a mailto: their email address)

Backlog

Internal Custom Module Search

The ability to search all items in Module List even with “Disable from Site Search” checked.

“Disable from Site Search" should only be for the front end site only, and not internally.

Looks like you lose search functionality within the custom module list when it is checked.

https://treepl.co/images/public-roadmap/Internal-Custom-Module-Search.png

Backlog

File Exports: Prepend Site URL And Postpend Date

When exporting files add the site url to the beginning of the file name and the date to the end of the filename i.e.

'website.com-team-module-export-2018-12-30.xls'

Backlog

Remove Event specific fields from Event Group module

These fields should not be present and are used for Event items, not their groups:

http://prntscr.com/mhi8h7

Backlog

Global setting for enable/disable text wrapping on a new line

Add a global setting that will enable/disable text wrapping on a new line in the ace editor.

'Settings' > 'Misc'

Backlog

Keyboard shortcut to save content in ACE and WYSIWYG editors

Apply CTRL+S/Command+S Shortcut Keys to save content when in ACE and WYSIWYG editors

Backlog

Reindex site - checkstatus and disallow reindex when indexing in progress

Apply loader and disabling of reindex site button in order to prevent multiple reindex process trigering. Button should be disabled even after page reloading.

Once reindex is finished - remove the loader and activate reindex button.

Design - http://prntscr.com/mu66s9

Backlog

Show treepl cms version in the admin


Show treepl cms version in the admin

Design - http://prntscr.com/mu679j

Backlog

Rename Documents to File Manager in WYSIWYG link manager

Rename "Documents" title to "File Manager" in WYSIWYG link manager http://prntscr.com/mnbls0

Backlog

Show Template and release date on module item list view

Add columns to module item list view in Admin:

  • Template
  • Release Date

Provide ability to sort by Release Date

Bug

Empty google analytics view ID showing and missing

http://prntscr.com/mgwu2g

Fix bugs with head auto added items:

  • tag is missing
  • google analytics code should not be output if no tracking id is set in the analytics settings.

Bug

OpenGraph Properties in Liquid not accessible

`{{this.opengraphproperties}}` renders the sub-properties as JSON ok, but couldn't access those sub-properties directly, ie: `{{this.opengraphproperties.title}}`.

Show more less
New Feature

Add TreeplCMS Version Number In Admin

Add version number in the admin

{% unless request.request_url.href contains "?tag" -%} version-number.png

{% endunless -%} ...
  • Admin Panel
New Feature

Calendar Support

Responsive calendar support for Events.
  • Events
New Feature

Use Blank Template

Sometimes when you want to create a new page on a site you don't want to use a template - perhaps for a differently style landing page or some other random page. Currently the system pulls in the default template. Can we have a page option that allows 'Don't use a template'.

  • Templates
Improvement

Add "Parentname" To Component Source: “Page”

Add "parentname" to component source: page to target the name of the template.

{ % component source: "Page", layout: "".........
{
"id": 1832,
"url": "",
"parentid": 1833,
"parentname":
"lastupdateddate": "2018-10-21T23:34:21","


  • Pages and Templates
Improvement

Direct Link To CRM Form Submission Entry

Ability to grab direct link to CRM form submission entry from the either the formsubmission or workflow collections to place in workflow email.
This is so that one can direct a workflow recipient straight to the Form submission in the admin console. something like {{ this.formSubmissionData.crm_link }} ...
  • CRM
  • Liquid
Improvement

File Exports: Prepend Site URL And Postpend Date

When exporting files add the site url to the beginning of the file name and the date to the end of the filename i.e. website.com-team-module-export-2018-12-30.xls
  • Admin Panel
  • General
Improvement

Home Page Status Available In {{this}} Object

Include the ‘Set as Home Page’ data within the {{this}} object so we have it available in Liquid.
It can be helpful to know for setting certain conditions in the template; just some examples:

· Show a hero slider above content when on home page
· Do not show a global subscription pop-up/modal window when on home page...
  • Liquid
Improvement

Internal Custom Module Search

The ability to search all items in Module List even with “Disable from Site Search” checked. “Disable from Site Search" should only be for the front end site only, and not internally. Looks like you lose search functionality within the custom module list when it is checked.

Internal-Custom-Module-Search.png
  • Custom Modules
v 3.2 Release date: 12 Feb, 2019

Full Release Notes

Backlog

Custom module items: Inheriting default settings on import/create from frontend

Use custom module settings on events below.

-> Settings -> 'Secure Zones'

  • Select Secure Zones

-> Item Properties -> 'Default Properties'

  • Default Template
  • Disable All Items From Site Search

Therefore, new imported items will inherit Custom Module setting. So if you have "Disable from Site Search" checked - all new imported items will have "Disable from Site Search" checked (already existing items will not be affected).


System flow:

  • Import Process:
    • IF items are new (create process):
      • If item template column is not specified: Set item template to "Default Template" setting of the module
      • Set Items' "Disable All Items From Site Search" property using value of the "Disable All Items From Site Search" setting of the module
      • Assign Items to Secure Zones that are Selected in the "Secure Zones" setting of the module http://prntscr.com/mgctf9
    • If Update Process
      • process remains the same as it is right now
  • Create module item from frontend (public create item API):
    • Set item template to "Default Template" setting of the module
    • Set Item's "Disable All Items From Site Search" property using value of the "Disable All Items From Site Search" setting of the module
    • Assign Items to Secure Zones that are Selected in the "Secure Zones" setting of the module http://prntscr.com/mgctf9

Backlog

Datetime oriented by site Timezone

On site creation process, save selected timezone to the site.

On the site use saved timezone for all date based variables.

Backlog

SiteSearch index rebuild function

Added Rebuild Index button to the header of the admin http://prntscr.com/mlioin

Clicking on it will trigger background process that will rebuild search index that is used by site search and custom module search

Backlog

Global 'Show this page for search engines' button

SEO:

Added two buttons under 'Pages search engines settings:'

  • Enable all
  • Disable all

Both do one time action - either enables or disables "Show this page for search engines" option in every system and custom module item.

http://prntscr.com/mlipzc


On click show confirmation message:

  • Are you sure you want to enable all pages for search engines?
  • Are you sure you want to disable all pages for search engines?

Backlog

Added SUBSCRIPTIONS tab to event item

http://prntscr.com/mlir0a

Backlog

Events in secure zones

Add ability to select event items from secure zone items combobox

Backlog

Add Event links to Menu link widget

Add ability to select event groups/items for menu items http://prntscr.com/mgihun

Backlog

restore_password/activate_account token lifetime change

Increase restore_password/activate_account token lifetime from 30 min to 24h (allowed secure zone users not respond longer on restore password emails. Especially make sense if restore password was triggered manually by the admin)

Backlog

File creation during copy page bugfix

Fixed issue caused during copying of a page: page file was not created.

Backlog

Add search form to Component Manager + search by trpEvents fields

Add Events -> Search Form item to the Component Manager http://prntscr.com/mgimch

Provide same iterface as for the Custom Module search form (except for selecting module since Event is the only module available for the section)

Generated search form should contain Event specific fields and be able to search by them:

  • prop_Price_Min (text input)
  • prop_Price_Max (text input)
  • prop_EventStartDate_Min (text input)
  • prop_EventStartDate_Max (text input)
  • prop_EventEndDate_Min (text input)
  • prop_EventEndDate_Max (text input)
  • prop_AllowMultipleSubscriptionPerEmail (checkbox)
  • prop_HideWhenFull (checkbox)
  • prop_Capacity_Min (text input)
  • prop_Capacity_Max (text input)
  • prop_Allocation_Min (text input)
  • prop_Allocation_Max (text input)

Backlog

Implement Emmet In The ACE Editor

Emmet is a system that allows coders to write shorthand and have it expanded when you push the tab key. It can save a lot of typing when writing web pages. Eg. you type 'p' and then press 'tab' and you get:

, or you type 'div.wrapper' and 'tab' you get:

You can even do more advanced things like creating multiple instances with nested objects.

Here is an code playground of Emmet implemented in Ace (Go ahead and type p +tab on an empty line or ul>(li.item>a)*5 plus tab. ) https://ace.c9.io/demo/emmet.html

Here is the documentation for Emmet https://docs.emmet.io/abbreviations/syntax/

Backlog

Collapse, And/Or Pre-collapse Content Boxes

Ability to collapse/expand content boxes in pages / templates / modules, etc. https://prnt.sc/mgi9l7

Backlog

Rename "seoTitle" To "metaTitle"

Module Item -> SEO tab:

Rename "seoTitle" to "metaTitle" for consistency and accuracy.

Backlog

WYSIWYG - Image and links titles

Add ability to set/edit titles for links and alt text for Images inside the WYSIWYG

Backlog

Extend meta description symbols limitation

Extend meta description symbols limitation to 1000

Backlog

Inactive state for module items (by dates)

Display inactive state on items list and tree view:

Item is inactive when currentDate < Release date or currentDate > Expiry date

Backlog

WYSIWYG - URL browser for links

Add ability to choose URL for links from:

  • Built-in modules (Pages, Blogs, etc.) and Custom Module items
  • Documents (File Manager))
  • external url

Similar to BC widget:

http://prntscr.com/mgiv0i

Backlog

Improve load speed of the pages

Pages that uses many liquid components now loads faster.

Backlog

Rollback overriden params in modules

When rendering module inside layout of the another module - params variable should not be overriden by the nested module.

Example

On any page:

Inside "List" layout of the "Example" module:





Inside "List" layout of the "Example 2" module:

any string


Expected:

  • myValue
    Any StringAny String
    myValue
    Any StringAny String
    myValue
    Any StringAny String

Actual

  • myValue
    Any StringAny String

    Any StringAny String

    Any StringAny String

Bug

ACE editor cut of JS content

Steps:

  • Enter code below to the page
  • Before



    After

  • click save

Expected:

  • Before



    After

Actual:

  • Before


Bug

Allow create sites under trialsite.co

Sites under trialsite.co now creating properly(previously was created under treepl.co domain)

Bug

Empty Google Analytics view ID showing

Google Analytics code will not be viewed if no tracking id is set in the analytics tab.

Bug

Liquid: Roll back number filter

" | number" filter is restored(previously was accidently removed from filters).

Bug

Allow event start date to be set to past

When saving Event:

Expected:

  • Start Date can be set to the past.

Actual

  • Validation error: The event has already ended.
Show more less
New Feature

BONUS: Advanced Link Manager inside WYSIWYG Editor

In the WYSIWIG editor on pages or any other location where a url / link is may be added (blog, page edits, custom modules ) -

- "browse to url"

- link option to open in a popup

- add "title" tag to url links


insert-link">

  • General
  • WYSIWYG Editor
New Feature

Match Date Format To Site's Time Zone

Display dates in the correct format depending on time zone selected in site settings in partner portal.
  • Admin Panel
Improvement

BONUS: Enable/Disable All Pages/Module Items for Search Engines

Ability to show or hide all pages/modules of the site for search engines (sitemap.xml needs be regenerated after disabling/enabling this feature).
enable-disable.png
  • SEO
Improvement

Collapse, And/Or Pre-collapse Content Boxes

Ability to collapse, and/or pre-collapse content boxes in pages / templates / modules, etc.


collapse-content-boxes.png

  • UI/UX
Improvement

Implement Emmet In The ACE Editor

Emmet is a system that allows coder to write shorthand and have it expanded when you push the tab key. It can save a lot of typing when writing web pages. Eg. you type p the tab and you get <p></p>, or you type div.wrapper and tab you get <div class="wrapper"></div> You can even do more advanced things like creating...
  • Admin Panel
Improvement

Rename "seoTitle" To "metaTitle"

Rename "seoTitle" to "metaTitle" for consistency and accuracy.
  • Blogs
  • Custom Modules
  • Pages and Templates
  • UI/UX
v 3.1 Release date: 29 Jan, 2019

Full Release Notes

Backlog

Event Groups and Events (CRUD)

Create two nested system modules (Event Group and Event) similar to the blog structure (Blog and Blog Post).

Event Group module created in order to help grouping events rather than keeping them all in one single list. Although, you're still able to view events in one list. For this reason List View was set as default layout (with ability to switch to Tree View http://prntscr.com/mf70zr
Unlike the blog and blog posts - events are allowed to be created in the root level of Event Groups and events (Blog post can’t be created in the root level only in the blog for example).

Event module has event specific fields:

  • Date From
  • Date To
  • Capacity: (number)
  • Hide when full: (boolean)
  • Price : (number)
  • Allow multiple subscription per one email: (boolean)

Backlog

CRM -> Booking Subscriptions created by an Event Form submission

If formData.eventId is not null - trigger eventSubscription flow:

  • Set allocations from formData.allocations. If value is empty or "<1" then set allocations=1
  • Validate Event Subscription (separate task created with the description)
  • If event has price not null and ">0" then trigger event payment flow
    • if payment is succeed
      • use standard form's redirect/output flow
    • Otherwise show payment error message from the payment flow
  • Otherwise - create event booking record from formData info and use standard form's redirect/output flow

Backlog

Form -> Event subscription validation

Event Subscription Validation:

  • Check event exists by formData.eventId:
    • if not found, alert: Event with such id does not exist
  • Check event is still available:
    • not disabled
    • Current Date is between EventDateStart and EventDateEnd (if EventDateEnd is empty - use EventDateStart with time 23:59:59)
    • Current Date is between ReleaseDate and ExpiryDate (same way as used now in custom modules), alert: The event you are subscribing for is not available
  • Check capacity and allocation requested. Messages:
    • if capatity = current event allocation, alert: The event is full
    • elseif capatity < (currentEventAllocation + formData.allocation), alert: The event hasn't enough seats. Only [[capatity-currentEventAllocation]] seats left.
  • Check Allow multiple subscription per one email
    • If Allow multiple subscription per one email option is false and formData.email is already subscribed to the event, alert: You already subscribed to this event

Backlog

Events

Permissions and Menu integration

Backlog

CRM -> Booking Subscription

Permissions and Menu integration

Backlog

CRM -> Orders section

Permissions and Menu integration

Backlog

Component box -> Events

  • List of Events and Event Groups (same as for module items but with such fields as capacity, price etc)
  • Event Subscription Form
    • List of Events to choose from. Default option is "For detail layout" which gives the form a value as {{this['id']}}. Example:
      {% component type: "form", alias: "[[formAlias]]", eventId: "{{this['id']}}" %}
    • list of forms (that has acceptEventSubscription field enabled).
    • Once user selects form and an event item, show code for copying, example: {% component type: "form", alias: "payment_form", eventId: 1939 %}

Backlog

Settings -> Payment Settings

Payments Gateways Section (also added to Permissions and Menu integration)

Gateway (select) options:

  • Stripe

Backlog

Payments Gateway - Section [Stripe]


Stripe Settings:

  • Key (required) (string)
  • Currency (string) (Default USD)
  • Image (string) (with upload widget like http://prntscr.com/mbx4v0
    Tooltip: A relative or absolute URL pointing to a square image of your brand or product.
    The recommended minimum size is 128x128px.The supported image types are: .gif, .jpeg, and .png

Specified image will be shown here http://prntscr.com/mf7c8a

Backlog

Form -> Form builder -> 'Accept Payment' and 'Accept Event Subscription' buttons

Option to add 'Accept Payment' and 'Accept Event Subscription' to the form on form builder section

  • Accept Event Subscription, generates the below code before the
    element:

    {% if params.eventId != null %}

    {% component source: "Event", layout: "", filterBy: "id", filterValue: "{{params.eventId}}", collectionVariable: "formEventData", type: "module" %}

    {% assign formEvent = formEventData.items[0] %}

    {% assign paymentAmount = formEvent.price %}

    {% assign orderDescription = formEvent.name %}

    {% assign orderName = "Book an event" %}

    {% endif %}

    Generated inside the element:

    {% if params.eventId != null %}

    <input type="hidden" name="eventId" value="{{formEvent.id}}" data-trp_price="{{paymentAmount}}">

    <label for="allocations">Allocation</label>

    <input type="text" name="allocations" data-trp_quantity="1" value="1">

    {% endif %}

    Therefore:

    If form has “Accept Event Subscription” field selected – you can specify event you want to subscribe for by id in component tag:
    {% component type: "form", alias: " [[formAlias]]", eventId: "1939" %}

  • Accept Payment, generates the below code inside the element:

    <label for="PaymentType">Payment Type</label>

    <select id="PaymentType" name="paymentType"> <option data-currency="" data-image="" data-key="" value="stripe">Stripe</option> </select>

    <input type="hidden" name="paymentData" value="">

    <label for="Amount">Amount</label>

    {% if paymentAmount == null %}

    {% assign paymentAmount = params.price | default: 0 %}

    {% endif %}

    <input type="text" id="Amount" name="Amount" value="{{paymentAmount}}" data-trp_price="{{paymentAmount}}">

    Generated as data-attributes on the element:


    data-trp_order_name="{{orderName | default: this.name}}" data-trp_order_description="{{orderDescription}}"

    Generated inside the page element:

    <script src="https://checkout.stripe.com/checkout.js"></script>
    <script src="/cms-assets/js/payment.js"></script>

    Therefore:

    If form has “Accept Payment” field selected – you can specify price in component tag:
    {% component type: "form", alias: "[[formAlias]]", price: "20" %}

Backlog

Add file payment.js and main.css to /cms-assets directory

Create/Update files:

  • /cms-assets/js/payment.js
    (for payment flow in general and stripe flow in particular)
  • /cms-assets/css/main.css
    (minified version of the default styles)

NOTE:

All files in /cms-assets folder could be overridden by treepl team via sprint updates. So don’t make any changes in those files. If you want to change something that is affected by those files – add them to your own files or remove default scripts and styles from desired pages.

Backlog

Payment Form Processing Logic

Payment flow

  1. If Form Payment type:
    • Event:
      • Get event.price
      • get totalAmount = event.price * allocations
    • General:
      • get totalAmount = formData.Amount
  2. Payment process:
    • If formData.paymentType == 'stripe'
      • Get token from formData.paymentData
      • Verify totalAmount with token
      • If success - end flow
      • else - show message: Payment is failed: [[error message from stripe]]

Backlog

System Email -> Invoice

Create new System Email that should be sent on successful payment

{{this.order}} liquid object contains

  • {{this.order.id}}
  • {{this.order.MemberEmail}}
  • {{this.order.MemberId}}
  • {{this.order.MemberLink}} (link to admin to CRM -> Order -> particular order)
  • {{this.order.Link}}
  • {{this.order.items}} collection of objects. Object ({% for item in this.order.items %}):
    • {{item.entityid}}
    • {{item.entityType}} (Event, Form)
    • {{item.name}}
    • {{item.price}} (totalCost/quantity)
    • {{item.quantity}}
    • {{item.totalCost}}
    • {{item.currency.code}}
    • {{item.currency.symbol}}
    • {{item.currency.digitalCode}}
    • {{item.currency.name}}
  • {{this.order.Status}}
  • {{this.order.PaymentType}}
  • {{this.order.TotalCost}}
  • {{this.order.currency.code}}
  • {{this.order.currency.symbol}}
  • {{this.order.currency.digitalCode}}
  • {{this.order.currency.name}}
  • {{this.order.TransactionID}}
  • {{this.order.CreatedDateTime}}
  • {{this.order.UpdatedDateTime}}

Backlog

Submission Process -> Custom Invoice behavior

On form submission process:

  • If payment
    • Check for name="customInvoiceId" field.
      • If found Email by that id - use that content for invoice
      • If not found or name="customInvoiceId" is null - send default System Email -> invoice

Backlog

Set admin page titles

Setup page titles in admin the same as in the title inside the content http://prntscr.com/m8rw77

Backlog

Recaptcha V3

  • Recaptcha v3 now a new button in the Form -> form builder.
  • Disallow - recaptcha v2 and recaptcha v3 to be selected together for a form (validation upon save)

Backlog

Add form related scripts only if they are required

Scripts should be automatically added before ONLY if there is at least one form that requires it.

  • recaptchav2
  • recaptchav3
  • acceptPayment field

Backlog

Sitemap generator - release/expiry options fix

Apply release/expiry options on Sitemap generator Only if they are Enabled in the module settings

Example:

  1. http://prntscr.com/m82qpa
  2. http://prntscr.com/m82qdp

Backlog

Upgrade liquid filters to the latest version of the liquid library

This fixed some issues like:

  • Divided_by will no longer be integer division.
    {{3 | divided_by : 2}} will be 1.5 instead of 1 as it was before
  • Sort filter now can sort simple arrays (not only array of objects by object’s field as it was before)
    {% assign arr = "c,d,a,b" | split: ","| sort | join: "," %}
    {{arr}}
    now returns a,b,c,d
  • Added sort_natural filer (case insensitive sorting)

Filter list now is (bolded items are new):

  • Array Filters:
    • join
    • first
    • last
    • concat
    • map
    • reverse
    • size
    • sort
    • sort_natural
    • uniq
  • Misc Filters
    • default
    • date
    • format_date
    • compact
    • url_encode
    • url_decode
    • strip_html
    • escape
    • escape_once
    • handle
    • handleize
  • Number Filters
    • ceil
    • divided_by
    • floor
    • minus
    • modulo
    • plus
    • round
    • times
  • String Filters
    • append
    • capitalize
    • downcase
    • lstrip
    • rstrip
    • newline_to_br
    • prepend
    • removefirst
    • remove
    • replacefirst
    • replace
    • slice
    • split
    • strip
    • truncate
    • truncatewords
    • upcase

Backlog

Empty custom menu fix

If custom menu consist only from empty items force redirect to menu configurator not the login screen.

Backlog

Add datasource name and datasource url to the item liquid data

Add datasource name and datasource url to the item liquid data:

  • {{this.dataSourcePropertyAlias}} - ID as it is now
  • {{this.dataSourcePropertyAlias_name}} - name of the datasource item OR null (if no item found by dataSourcePropertyAlias ID).
  • {{this.dataSourcePropertyAlias_url}} - url of the datasource item OR null (if no item found by dataSourcePropertyAlias ID).

Backlog

Convert Author image custom property from type Text to type Media

Convert Author image custom property from type Text to type Media (without losing currently saved values)

Backlog

Search custom modules by parentId and url slug

Add ability to search custom modules using

  • prop_Slug (equals rule)
  • prop_Url (contains rule)
  • prop_ParentId (add by default to search form html under prop_ModuleId with value "":
    • "-1" means the parent module's root folder id.
    • Empty means skip this filter

Backlog

Create new module - disable save button while saving

While creating a custom module when clicked save once Save button should become inactive.

If validation errors occurs - enable button

Bug

Default gallery layout wasn't patched

In Gallery/Slider Layouts -> Default List now creates correctly functioning layout code:

Bug

First login (after some time past) to the site admin issue

When admin user tried to login to the admin panel (after some time past) - it just keeps looping the login page (first time).

After refresh the page login works fine

Bug

Can't save page when its ftp html file name contains Capital letters

After creating an HTML page via the File Manager an error would be thrown if attempting to later save that page via the admin 'Pages' section.

Bug

Liquid engine – recursion fix

  • In menu sub item layout (/_MenuLayouts//sub_items.layout)
  • if replace {% for item in currentItem.items %} with {% for item in this.items %}
  • would result in infinite recursion that dramatically slowed down the site
Show more less
New Feature

Canada (Central) Data Center

Ability to create sites on Canada (Central) data center. Existing live and trial sites of Treepl Partners from Canada will be transferred by our admins upon request.
  • Infrastructure
New Feature

Booking Records

Adding event subscriptions as separate records inside CRM.
  • CRM
  • Events
New Feature

Payable Events, Items, Forms

- Ability to create events
- Ability to create event subscriptions
- Ability to create forms with payments
- Payments go through Stripe
  • Custom Modules
  • Ecommerce
  • Events
Improvement

reCAPTCHA v3 Support

The ability to add reCAPTCHA "invisible" so the user would not have to "solve" the reCAPTCHA by clicking the relevant images.
  • Forms
  • Secure Zones
v 3.0 Release date: 08 Jan, 2019

Full Release Notes

Backlog

Admin User Roles CRUD

Add ability to create, delete, update and view list of roles.

Each role detail layout provides a list of permissions based on the current site plan.

Backlog

Admin Users - permissions setup

Ability to set admin user role for every Admin User created.
Admin user can't setup role to themselves.

No admin user can edit/delete partner admin account.

Backlog

Admin menu configurator

Add ability to customize order, visibility and names of admin panel menu items.

Backlog

Change of custom menus and role restrictions with site plan upgrade/downgrade

  1. Plan Upgrade:
    1. Change site plan permission
  2. Plan Downgrade
    1. Change site plan permission
    2. Go through all admin user's roles and remove all permissions that is not exist in the current site plan permission
  3. New Module added
    1. Add new permission node to site plan permission
  4. Existing module deleted
    1. Remove permission node from site plan permission
  1. User Roles
    1. Go through all admin user's roles and remove permission for that module if such exists.

Backlog

Advanced admin search

Add ability to filter admin menu items by keyword

Backlog

{{this.formSubmissionData}} on thank you page

Added support for {{this.formSubmissionData}} to get access to formSubmissionData object the same way as now does {{formSubmissionData}}

{{formSubmissionData}} should also work as it does now for backward compatibility.

Custom thank you pages (by use of 'redirectURL' parameter) will also support both data tags.

Backlog

User friendly mailchimp error messages

Change "The resource submitted could not be validated. For field-specific details, see the 'errors' array." error message

http://prntscr.com/m2iqt3

To like:

"Validation error:

[Error key]: [error message]

..."

Backlog

System Pages and Emails default UI

Created folder in File Manager/FTP:

/cms-assets
Added here .css, .js, etc. that are needed for system pages and system emails.

Default system pages and emails on blank site include:

  • System pages
    • 404
    • Email Confirmation
    • Forbidden
    • Form Submission Results
    • Request Reset Password
    • Request Reset Password Result
    • Reset Password
    • Unauthorized
  • Galleries
    • Layout markup and js (with fancybox)
  • System Emails
    • Password Retrieve Email
    • Secure Zone Login Details
    • Workflow Notification
    • Confirm Email Notification
  • Forms
    • Email Notification (autoresponder)

Bug

Author column duplication in export bug

Repro Steps

  1. Go to any custom module.
  2. Enable authors in Properties section
  3. Go to items list
  4. Create item
  5. Call export
  6. Call export
  7. Call export

Expected

  • All 3 export files should contain only one Author column

Actual

  • Each next file has one more Author header column

Bug

Custom module search bug

Search by custom module form requires &paginatedModule=[[module_id]] param in order to paginate

Repro Steps

  • Go to page
  • Insert module search form via toolbox (check Display Pagination checkbox)
  • Save the page
  • Go to page
  • Click search
  • Go to second page
  • Remove &paginatedModule=[[module_id]] from the URL

Expected:

  • &prop_ModuleId=[[module_id]] is enough to determine module

Actual:

  • &prop_ModuleId=[[module_id]] is ignored, still waiting for &paginatedModule=[[module_id]]

Show more less
New Feature

Admin Menu Configurator

Ability to customize order and names of admin panel menu items.
  • Admin Panel
New Feature

Admin User Custom Restrictions

Ability to set custom restrictions for every Admin User created via roles.
  • Admin Panel
New Feature

Advanced Admin Search

Quick search of admin menu items.
  • Admin Panel
  • UI/UX
Improvement

_is_mobile_ Liquid Detection

Suggestion for {{request.request_data.is_mobile}} to become {{request.request_data.device_class}} with the output being 'mobile|tablet|desktop|...' as this will provide greater flexibility and future scalability as more device types could be added in over time. eg: 'tv|watch|glasses|car|spaceship|...'. Much like in BC we have {{globals.visitor.deviceClass}} giving us 'desktop|tablet|phone'.


The {{request.request_data.is_mobile}} just gives us a 'true|false' to whether it's mobile or not. I feel that the BC...
  • Liquid