Public Backlog

WebinOne announcements, releases, updates and achievements

v 4.7 Release date: 21 Aug, 2019

Full Release Notes

Bug

Site Information incorrect “Value” column

The Value column in the Site Information Module, shows the Field Type, instead of the Field Value.

Bug

Boolean value is ON instead of TRUE

A boolean form field now returns string “true” or “false” instead of “on” (changes made in liquid formSubmissionData object and on CRM -> form submission -> submission detail page). http://prntscr.com/ovp5e4 

Bug

{{counter}} tag issue with  ‘New Liquid Engine’

Counter tag in list layouts when ‘New Liquid Engine’ beta feature is enabled now renders as intended.

Beta

Custom Columns In List View

Customizable columns for module items view.

Allows customized columns on custom and system modules list and tree views.

Create new module settings page for editing columns settings. Showing preview of columns and ability to change their order position via drag and drop.

If there are too many columns on the view - show horizontal scroll. When drag column to the right or left edge of the view - trigger auto scroll functionality in order to provide the ability to move that column out of visible columns area.

Ability to go to add, edit and delete columns. Add/Edit view consists of the following settings:

  • Title - input field - name that will be viewed as column title.
  • Property - selector of system and custom properties of the module.
  • Column Width -  input field - number of pixels that determines the column width.
  • Mobile Column Width -  input field - number of pixels the determines the column width in mobile view.
  • Hide on mobile - checkbox 

The ‘Actions’ column will always be present and will be the last column in the view.


Design:

http://prntscr.com/ovpcpq 

New List/Tree view layout for custom columns:

  • All custom columns that reflects module properties should support sorting (ASC, DESC) by clicking column header.
  • When layout contains more columns than allowed by screen width - add horizontal scroll.
  • Move preview link and action icons (duplicate, edit, delete...) to one separate ‘Actions’ column fixed to the right of the table. 
  • Allow columns resizing via dragging the edges of the column title.

Design:

http://prntscr.com/ovpd5m 

Tree View Layout:

Merge columns of two modules by their names. Merging should take equal named columns and all unique child module columns (basically columns of tree view are ALWAYS child module table columns). 
Unique Parent module columns should be skipped. 
For each parent module item on tree view show empty cell is column attached to child module only.

Example:
Module 1 has Property 1Property 2 and Name
Module 2 has Property 1Property 3 and Name

Module 1 is parent module to Module 2

Columns selected for 
Module 1 is Property 1Property 2 and Name
Columns selected for 
Module 2 is Property 1Property 3 and Name

Result view on tree view of both modules: 
Module 1 or Module 2

| Name                 | Property 1      | Property 3    |
|----------------------|-------------------|------------------|
| Module 1 item  | some value 1 |                         |
| Module 2 item  | some value 2 | some value 3 |

Pagination Changes:

1) Display current page number as input with number value between prev and next buttons http://prntscr.com/o70umf.

On change - show page that is entered in the input.

2) Duplicate pagination to the top of the table.

Lowest plan allowed is ”Pro+”

Add feature to the Admin User Roles: “Can Edit Module Items Columns Settings”

Backlog

Module settings UI change

Redesign ‘steps’ into ‘tabs’ on module settings sections.
From this:
http://prntscr.com/osng3p

To this: http://prntscr.com/ovpetu 

Backlog

File System' API Endpoint (Component Tag)

Add new component tag of type:"api", source:"File System"

Pattern:

{% component type:"api", resource:"File System", folder:"[[folderUrl]]", collectionVariable:"[[variableName]]" %}

  • type:"api" system param
  • resource: ”File System”
  • collectionVariable: name of Liquid variable for object data.
  • folder (not required param): folder URL to retrieve files from (default value is "/" for root directory). 

Examples

{% component type:"api", resource:"File System", folder:"/images/galleries/gallery 001", collectionVariable:"myVar" %}

item context contains:

  • url (file URL)

This component does not render any layout. If no collectionVariable specified - just skip the component processing.

Added to Component Toolbox:

1) Add new toolbox group:

"Liquid Data"

  • "File System"

provides ability to build component type:"api", resource:"File System" 

2) For folder selection use folder picker:

  • clicking on folder in picker modifies component code
  • clicking on icon next to folder modifies code and copies it to clipboard

Lowest plan allowed is “Pro”

Add feature to the Admin User Roles:

Liquid Data

  • File System

Backlog

Analytics dashboard settings

Remove condition that requires ’TrackingID’ for displaying analytics dashboard page. 

Only ‘ViewId’ is required
(This change allows you to add Google js snippet yourself using desired custom options but still having an ability to see analytics in the dashboard)

Backlog

Component type module_tag_list

Add new component tag of type:"module_tag_list"

Pattern:

{% component type:"module_tag_list", object:"[[object]]", module:"[[moduleIdentifier]]", parentItemId:"[[parentItemId]]", limit:"[[limit]]", collectionVariable:"", layout:"", sortBy:"", sortOrder:"" %}

  • module (required param) - moduleName or moduleId.
  • parentItemId (not required param) - id of the module parent group to retrieve tagged items from
  • object (not required param) - item|collection (default is collection)
  • limit (not required param) - max number of tags to be rendered (default value is ALL)
  • collectionVariable (not required param) - liquid data variable
  • layout (not required param) - path to FTP file that will contain layout content to be parsed. 
    If empty string - does not render anything.
    If not specified at all - render default virtual layout (see below).
  • sortBy (not required param):
    - Name (default)
    - ItemsCount 
  • sortOrder (not required param):
    - ASC (default)
    - DESC

item context contains:

  • Name
  • Url
    Pattern:
    [[parentItemUrl]]?prop_ModuleId=[[moduleId]]&prop_ParentId=[[parentItemId]]&prop_ItemTags=[[tagName (UrlEncoded) ]]

    Example, using the following component tag with ‘parentItemId’:
    {% component type:"module_tag_list", module:"Blog Post", parentItemId:"1234" %}
    Where 1234 - is ID of the Blog "My Blog"
    URL output is:
    /my-blog?prop_ModuleId=1534&prop_ParentId=1234&prop_ItemTags=My%20Tag

    Example, using the following component tag with no ‘parentItemId’:
    {% component type:"module_tag_list", module:"Blog Post" %}
    URL output is:
    ?prop_ModuleId=1534&prop_ItemTags=My%20Tag
  • ItemsCount - number of module items tagged by this tag

Default virtual layout:

<ul>

    {% for item in this.items %}

        <li> 

            <a href="{{item.url}}" title="{{item.name}}">{{item.name}} <span>({{item.itemsCount}})</span></a>

        </li>

    {% endfor %}

</ul>

VIRTUAL LAYOUT RETURNS ITEMS THAT HAVE itemsCount > 0  ONLY

Backlog

Component type module_category_list

Add new component tag component type:"module_category_list"

Pattern:

{% component type:"module_category_list", object:"[[object]]", module:"[[moduleIdentifier]]", parentItemId:"[[parentItemId]]", limit:"[[limit]]", collectionVariable:"", layout:"", sortBy:"", sortOrder:""  %}

  • module (required param) - moduleName or moduleId.
  • parentItemId (not required param) - id of the module parent group to retrieve categorized items from
  • object (not required param) - item|collection (default is collection)
  • limit (not required param) - max number of tags to be rendered (default value is ALL)
  • collectionVariable (not required param) - liquid data variable
  • layout (not required param) - path to FTP file that will contain layout content to be parsed. 
    If empty string - does not render anything.
    If not specified at all - render default virtual layout (see below).
  • sortBy (not required param):
    - Name (default)
    - ItemsCount 
  • sortOrder (not required param):
    - ASC (default)
    - DESC

item context contains:

  • Name
  • Url
    Pattern:
    [[parentItemUrl]]?prop_ModuleId=[[moduleId]]&prop_ParentId=[[parentItemId]]&prop_ItemCategories=[[categoryName (UrlEncoded) ]]

    Example, using the following component tag with ‘parentItemId’:
    {% component type:"module_category_list", module:"Blog Post", parentItemId:"1234" %}
    Where 1234 - is ID of the Blog "My Blog"
    URL output is:
    /my-blog?prop_ModuleId=1534&prop_ParentId=1234&prop_ItemCategories=My%20Tag

    Example, using the following component tag with no ‘parentItemId’:
    {% component type:"module_category_list", module:"Blog Post" %}
    URL output is:
    ?prop_ModuleId=1534&prop_ItemCategories=My%20Tag
  • ItemsCount - number of module items categorized by this category

Default virtual layout:

<ul>

    {% for item in this.items %}

        <li> 

            <a href="{{item.url}}" title="{{item.name}}">{{item.name}} <span>({{item.itemsCount}})</span></a>

        </li>

    {% endfor %}

</ul>

VIRTUAL LAYOUT RETURNS ITEMS THAT HAVE itemsCount > 0  ONLY

Backlog

Component type module_archive

Add new component tag component type:"module_archive"

Pattern:

{% component type:"module_archive", object:"[[object]]", module:"[[moduleIdentifier]]", parentItemId:"[[parentItemId]]", numberOfMonth:"[[numberOfMonth]]", collectionVariable:"", layout:"", sortBy:"", sortOrder:""  %}

  • module (required param) - moduleName or moduleId.
  • parentItemId (not required param) - id of the module parent group to retrieve categorized items from
  • object (not required param) - item|collection (default is collection)
  • numberOfMonth (not required param) - max number of months into the past to be rendered (default value is Eternity)
  • collectionVariable (not required param) - liquid data variable
  • layout (not required param) - path to FTP file that will contain layout content to be parsed. 
    If empty string - does not render anything.
    If not specified at all - render default virtual layout (see below).
  • sortBy (not required param):
    - Date (default)
  • sortOrder (not required param):
    - ASC (default)
    - DESC

Item context contains:

years (array)

  • Name - year (Example: 2018)
  • Url
    Pattern:
    [[parentItemUrl]]?prop_ModuleId=[[moduleId]]&prop_ParentId=[[parentItemId]]&prop_ReleaseDate_Min=[[periodStartDate]]&prop_ReleaseDate_Max=[[periodEndDate]]

    Example, with parentItemID:
    {% component type:"module_archive", module:"Blog Post", parentItemId:"1234" %}
    Where 1234 - is ID of the Blog "My Blog"
    URL (for period of 2018):
    /my-blog?prop_ModuleId=1534&prop_ParentId=1234&prop_ReleaseDate_Min=2018-01-01&prop_ReleaseDate_Max=2018-12-31

    Example, without parentItemID:
    {% component type:"module_archive", module:"Blog Post" %}
    URL (for period of 2018):
    ?prop_ModuleId=1534&prop_ReleaseDate_Min=2018-01-01&prop_ReleaseDate_Max=2018-12-31
  • ItemsCount - number of module items in the year
  • Months (array)
    - Name - month (Example: August)
    - Url
    Pattern:
    [[parentItemUrl]]?prop_ModuleId=[[moduleId]]&prop_ParentId=[[parentItemId]]&prop_ReleaseDate_Min=[[periodStartDate]]&prop_ReleaseDate_Max=[[periodEndDate]]

    Example, with parentItemId:
    {% component type:"module_archive", module:"Blog Post", parentItemId:"1234" %}
    Where 1234 - is ID of the Blog "My Blog"
    URL (for period of August ):
    /my-blog?prop_ModuleId=1534&prop_ParentId=1234&prop_ReleaseDate_Min=2018-08-01&prop_ReleaseDate_Max=2018-08-31

    Example, without parentItemId:
    {% component type:"module_archive", module:"Blog Post" %}
    URL (for period of August ):
    ?prop_ModuleId=1534&prop_ReleaseDate_Min=2018-08-01&prop_ReleaseDate_Max=2018-08-31

    - ItemsCount - number of module items in the month

Default virtual layout:

<ul>
    {% for yearData in this.years %}

            {% for month in yearData.months %}

                <li> 

                    <a href="{{month.url}}" title="{{yearData.name}}-{{month.name}}">{{month.name}} {{yearData.name}} ({{month.itemsCount}})</a>

                </li>

            {% endfor %}

    {% endfor %}

</ul>

MODULE RETURNS ITEMS THAT HAVE itemsCount > 0  ONLY

Backlog

Component type module searchScope extending

Component type module extended by param that allows using FULL search capabilities WITHOUT actual search via GET params (search form). Realization is described below:

1) Extend component type module with new param:

  • searchScope: ""

2) Parse content of search scope as JSON. If any exception occured while parsing - ignore this param.

3) Use retrieved object just like GET parameters from a search.

Priorities when several params and/or search via GET params occured:

filterBy, FilterValue pair < searchScope < GET params if searching THIS module

Example:

Both options described below should show the same result

  • Option 1:
    URL
    /blog_1?prop_ModuleId=1534&prop_ReleaseDate_Min=2018-07-01&prop_ReleaseDate_Max=2018-07-31&prop_ParentId=1842&prop_ItemTags=tag1&prop_ItemTags=tag2&page=2

    Component  on the /blog_1 page
    {% component type:"module", source: "Blog Post", layout:"List", isSearchResult: "true", filterBy:"id", filterValue:"123" %}

  • Option 2
    URL
    /blog_1

    Component on the /blog_1 page
    {% component type:"module", source: "Blog Post", layout:"List", searchScope: '{"prop_ReleaseDate_Min":"2018-07-01","prop_ReleaseDate_Max":"2018-07-31","prop_ParentId":"1842","prop_ItemTags":["tag1","tag2"],"page":"2"}', filterBy:"id", filterValue:"123" %}

    OR

    {% capture searchScopeVar %}{"prop_ReleaseDate_Min":"2018-07-01","prop_ReleaseDate_Max":"2018-07-31","prop_ParentId":"1842","prop_ItemTags":["tag1","tag2"],"page":"2"}{% endcapture %}

    {% component type:"module", source: "Blog Post", layout:"List", searchScope: "{{searchScopeVar}}", filterBy:"id", filterValue:"123" %}
Show more less
Improvement

Custom Columns In List View

Give the user the ability to setup how list view is shown in the different modules/pages etc. to match the need of the user.

See an example in this video

  • General
  • UI/UX
Improvement

File System' API Endpoint (Component Tag) That Can List Files And Folders From The File Manager

This, for example, could allow us to build gallery apps from a directory of images, list downloadable files from organised in directories, and other file system related functions. Similar to BCs File System API here: https://docs.worldsecuresystems.com/reference/rest-apis/file-system/get-folder-content.html

  • File Manager
  • Open API