ADF Release Notes v2.6

Overview

The Application Development Framework (ADF) version 2.6 release contains enhancements and bug fixes to core ADF 2.5 functionality. Previous development builds of ADF 2.5.x have been rolled up into this 2.6 release build.

Version Compatibility

This 2.6 version of the ADF is ONLY compatible with CommonSpot 10.5.2 or 10.6.1 (or higher).


If your site is running CommonSpot 10 up to 10.5.1 or 10.6 please use ADF 2.4.x, however we strongly recommend upgrading to CommonSpot 10.5.3, 10.6.2 or 10.7 and ADF 2.6!


ADF 1.8.x and older versions of the ADF are NOT compatible with CommonSpot 10.x. Please note if your site is running CommonSpot 9 or older you will need to use the ADF 1.8.1 release or 1.8.2 development builds.

ADF AjaxProxy CSRF Safe Mode

CommonSpot 10.5.2 and 10.6.1 introduced robust security enhancements to mitigate CSRF vulnerabilities but adding CSRF Token validation to it's form submits as well its internal /loader.cfm requests.


To complement these security enhancements, ADF 2.5 and above and the ADF companion Apps have also be updated to add CSRF validation to its custom forms, internal CommonSpot /loader.cfm requests as well as its own /ajaxProxy.cfm requests.


However, due to the flexibility and customizability of the ADF and the ADF Applications, specifically the powerful ajaxProxy feature, the CSRF attack prevention validation has been disabled by default. It can be enabled when all custom ajaxProxy requests have been updated to take advantage of this security feature.


For more information see the ADF AjaxProxy CSRF Safe Mode documentation regarding enabling the security enhancement.

Field Type CFCs

CommonSpot 10 and above, requires that all Custom Field Type Render modules be converted to be a CFC versus a CFM module. See the ADF 2.0 release notes for more information regarding CFC render modules built for the ADF 2.x releases.

Resource Loading

CommonSpot 10 introduces a new Resource Loading Framework to help efficiently load JavaScript and CSS resources. See the ADF 2.0 release notes for more information regarding using CommonSpot Resource Loading with ADF 2.x releases.


For detailed information about the Resource Loading Framework, see the CommonSpot Developer's Guide.

Installation/Upgrade

For detailed instructions for installing the ADF, see the ADF Installation Guide.


For detailed instructions for upgrading from a previous version of the ADF, see the ADF v2.6 Upgrade Guide.

If you are upgrading from an earlier release, we strongly recommend that you also read the following:

2.0.0 Release Notes

2.0.1 Release Notes

2.3.0 Release Notes

2.3.1 Release Notes

2.4.0 Release Notes

2.4.1 Release Notes

2.5.0 Release Notes

Previous ADF version Release Notes

Notable Enhancements

The ADF 2.6 release contains the following significant enhancements.

General

  • A complete overhaul of the ADF registerAllScripts resource registration process to better control what resources are loaded and where the resource source files are located. Now the registerAllScripts tool no longer is restricted to only resources located in the local ADF thirdParty folder. A select set of resources are configured with the option to load from a CDN javascript library provider as well. Also, javascript resources are set to load "late" by default, however a "useLegacyEarlyJs" flag can be used to load a select set of resources (jQuery, Bootstrap, jQueryUI) early instead.

Library Components

  • Removed previous ADF version nodes from the version.xml file

  • Removed the deprecated csapi_1_0 component, "csapi" lib components folder and the 'csapi_1_0' from the v_2.6 node of the version.xml file.

  • Moved the utility method buildSubsiteFullURL() to the csData_2_0 component

  • Updated csData_1_0.getImagePageURL() method to detect if the CMD API ImageGallery.getImageFileName() method returns a string or a struct (API change as of CommonSpot 10.7).

  • Added a "useWebP" parameter to the csData_1_0.getImagePageURL() method to select if the returned value should be the CS generated webp image file name or the uploaded image file name.

  • Added "replace" and "replaceChar" parameters to the data_1_1.escapeExtendedChars() method to add the option to find and replace extended characters instead of escaping them.

  • Added the replaceExtendedChars to the data_2_0 component that uses data_1_1.escapeExtendedChars() with the "replace" parameter set to true

  • Added an "activePage" parameter to the utils_1_2.buildPaginationStruct() method that when enabled adds an active key to the "page" structure in the returned "page links" array.

  • Added listDeleteValue() method the the data_2_0 data component

  • Updated the ceData_1_0.getCEData() method's "SearchInList" querytype to use the listInCommon ADF data function to better handle searching values in lists.

  • For the scriptsService_2_0 component added a data file, allScripts.cfm, to a new 'data' folder in the "scripts" lib folder, to be used by the "registerAllScripts.cfm" register resources process.

  • Converted over 100 scriptsService.registerResource() method calls to the data structure stored in the allScripts file in the new 'data' folder.

  • Added additional parameters to the registerAllScripts.cfm file to better control the resource registration process: useCDN, preserveAliases, groupList, aliasList, useLegacyEarlyJs

  • Updated the registerAllScripts_jquery.cfm, registerAllScripts_jqueryui.cfm and registerThemes.cfm to use the base "registerAllScript.cfm" file with the groupList set for the specified resource type.

  • Added a validate-script-data.cfm script module to validate the data format of the allScripts.cfm data file. To be used after changes are made to the site level override allScripts.cfm data file.

  • Added several utility functions to the resourceService_1_0 component to handle the parsing of the new allScripts.cfm data file.

  • Moved the previous versions of the registerAllScript.cfm, registerAllScript_jquery.cfm, registerAllScript_jqueryui.cfm, registerAllScriptData.cfm and registerThemes.cfm files to a new /lib/scripts/legacy folder.

  • Updated registerAllScript update script with the new "Third Party JavaScript" and "Third Party StyleSheet" options added for the Integrity and Crossorigin attributes added to Registered Resources in CommonSpot 10.7

  • Added the parameters isCritical, Integrity and Crossorigin default values to the scriptsService.getResourceStruct method to add default value struct keys.

  • Updated the Integrity key for jquery-ui ui-lightness theme.

  • Added integrity keys for the Bootstrap and the Font Awesome external resource definitions.

  • Added the sourceLocation data to the resourceService.getAllScripts function and removed the StructDelete call for the source data.

  • Added additional allowed file types (json,bak,tmp) to utils_2_0.writeDataFile method.

  • Added arrayUnion and arrayDiff methods to th data_2_0 component.

  • Updated csdata_1_0.getImagePageURL and csdata_1_0.decipherCPIMAGE to better handle the CommonSpot version detection.

  • Created a new csData_1_0.parseCPIMAGE method to return imageid from a CPIMAGE string.

  • Created a new csData_2_0.getImageInfoByCPIMAGE function that takes the CPIMAGE string and returns the CommonSpot validated struct to be used with the CMD API image.getPictureHTML.

Extensions

  • Updated the font_awesome_select CFT to better handle the display of long icon class names

  • Updated the bootstrap_glyphicon_select CFT to better handle the display of long icon class names

  • Added a diagnose folder with an example ccapi_pop_ce.cfm test file that can be copied to the site and updated to help with diagnosing issues with the CCAPI

  • Updated the select "multiple" field attribute in he custom_element_select_field CFT to remove the ="multiple" designation

  • Updated the javascript in the custom_element_select_field CFT to replace the option sorting to remove the use of the jQuery Selectboxes library and its SortOptions function (since it deselect previously selected items).

  • Added a post-copypage.cfm hook starter file to the hooks directory

ThirdParty

  • Added ThirdParty Resources:

    • Bootbox 5.4

    • Bootstrap 4.5

    • Bootstrap 3.4

    • Bootstrap-datepicker 1.9

    • Clipboard.js 2.0.6

    • Fancybox 3.5

    • ImagesLoaded 3.2

    • jQuery 3.5

    • jQuery Migrate 3.3

    • MomentJS 2.9

    • TimeAgo 1.6

  • Adding the DataTables 1.10 moment.js sorting plugin

  • Reorganized the ADF's Font Awesome extensions file folder structure

  • Reorganized the ADF's Bootstrap extensions file folder structure

  • Removed obsolete and older versions of JavaScript and CSS ThirdParty resources (see "Removed ThirdParty Resources" table below)

  • Removed the deprecated 'thickbox' js library folder

  • Removed plupload misc .txt and .md files


Removed ThirdParty Resources:

ThirdParty Folder

Library

Removed

Versions

ADF Available Versions

css

Font Awesome

4.2

4.4

5.0

5.9

4.7

5.14
* Syntax changes between 4.x & 5.x

jquery

Bootstrap

3.0

4.0

4.1

4.3

3.4

4.5

* Syntax changes between 3.x & 4.x

jquery

DataTables

1.6

1.7

1.8

1.9

1.10
* API changes between 1.9 & 1.10

jquery

ImagesLoaded

3.0

4.1

3.3

jquery

jsTree

1.0

3.0

3.2

3.3

jquery

Migrate (jQuery Migrate)

1.1

1.2

1.3

3.0

1.4

3.3

jquery

jQuery SWFobject

1.0.7

1.0.9

jquery

ui (jQuery UI)

1.7

1.8

1.9

1.10

1.11

1.12

jquery

uploadify

2.1.0
3.0.0

2.1.4
3.2.1

jquery

jQuery

1.1

1.2

1.3

1.4

1.5

1.6

1.7

1.8

1.9

1.10

1.11

2.0

2.1

3.0

3.1

3.2

3.3

3.4

1.12

2.2

3.5
* It is recommended to use jQuery Migrate to identify issues when updating to a new major version


See the ADF 2.6 Upgrade Guide for options if your site relies on any resources listed above.

Notable Updates

The following notable updates were in this release:

Library Components

  • Updated api_1_0.initAPIConfig() method to resolve an issue that occurred in a multi-site environment where the default remote config value was getting lost during ADF reset
  • Updated the ceData_1_0.getPageIDForElement() used by getCEData() to resolve an issue with 'SearchInList' querytype where the stored value is saved in the MemoValue instead of the FieldValue due to its length, causing matching records to not be returned

Updated ADF Applications

The following ADF application was also updated as part of the ADF 2.6 release. Please check the release notes for these apps for details.