ADF Release Notes v2.7.0

Overview

The Application Development Framework (ADF) version 2.7.0 release contains enhancements and bug fixes to core ADF 2.6.3 functionality.

Version Compatibility

This 2.7.0 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.7.3, 10.8.2, 10.9 or 11 and ADF 2.7.0!


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.7 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

2.6.0 Release Notes

2.6.1 Release Notes

2.6.2 Release Notes

2.6.3 Release Notes

Previous ADF version Release Notes

Notable Enhancements

The ADF 2.7 release contains the following significant enhancements.

General

  • Core
  • Updated Core, Base, and SiteBase components to add the HotFix version patch list to the ADF reset message.

  • Added functionality to add a ceRecordAPI JSON configuration file at the site level to pass configuration options to the ceRecordAPI functions and Apps.

  • Library
  • Added ceRecordAPI wrapper and field-specific utility functions for the new CommonSpot RecordSet API to update Global Custom, Local Custom, Metadata Form, and Simple Forms elements.
  • versions.xml
  • Updated the lib version.xml file to be used with v2.7.

Extensions

  • CustomCF
  • Added a ceAddRecord custom script to allow an "Add CE record" button to be added to a CommonSpot page that will open an add new form dialog for a specified Custom Element.

  • Added an example copyGceRecords.cfm script that uses the ceRecordAPI to copy data from one Global Custom Element to another.

  • Added an example deleteGceRecords.cfm script that deletes records from a Global Custom Element based on basic criteria.

  • Added an example findCeRecords.cfm custom script that uses getCeData() to find Global Custom Element records based on basic criteria.

  • Custom Field Types
  • Updated the Custom Element Hierarchy Selector custom field type to store the element and field names to allow these values to be converted to the FormID and FieldID when the element is exported and imported into a new server.

  • Datasheet Modules
  • Added a new pageID-to-link-for-global-ce-records.cfm datasheet module to create a link around cell data that open's to that records's viewer page.

Library Components

  • apiImage
  • Added a delete() CMDAPI wrapper function to delete images from CommonSpot.

  • apiPage
  • Added the page active state status to the return struct of the create() function.

  • Added a PAGEID key to the return struct of the create() and createRemote() functions with an integer value of the new page or 0 when no page has been created.

  • Updated the create() and createRemote() functions with a new CMDERROR key which outputs a more descriptive error message.

  • ceData
  • Added a CONTROLID argument to the getDataFieldValueByPageID() function to pass in a value greater than 0 to get a specific local custom element's instance data.

  • Added a CONTROLID key to the return struct for the getDataFieldValueByPageID() function.

  • Added a CONTROLID argument to the getCEDataByPageID() function to pass in a value greater than 0 to get a specific local custom element's instance data.

  • ceRecordAPI
  • Added the new ceRecordBase_1_0, ceRecordConfig_1_0, gceRecord_1_0, lceRecord_1_0, mdfRecord_1_0 and sfeRecord_1_0 components to the lib to add wrapper and helper functions for the new CommonSpot ceRecordAPI for saving CommonSpot user-defined object data.

  • csData
  • Added the normalizeCsFilename() function based on the CommonSpot normalizeFilename() function (should replace use of the makeCsSafe() function.

  • Added the getCsImageIDByFileName() function.

  • Added the getCsImageIDByTitle() function.

  • Added the getCsImageDataByFilename() function.

  • Added the and getCsImageDataByTitle() function.

  • Added the getViewerPageID() function to return the page Id for a given Global Custom Element's configured Viewer page.

  • Added the getViewerPageUrl() functions to return the page URL for a given Global Custom Element's configured Viewer page.

  • Add the getImageInfoByURL() function to return the validated structure for an image based on the image URL.

  • Update the parseCSExtURLProps function to return the additional values provided by the call to the ct-decipher-linkurl module.

  • Added a generic getImageInfo() function which returns image data when provided either an imageID or CPImage string.

  • Added a getMultimediaInfo() function for return data for a specific CommonSpot multimedia record based on a title and a subsite path or subsite ID.

  • Added a getMultimediaItems() function for returning data for all matching CommonSpot multimedia records based on specified criteria.

  • Data
  • Added the calcStartEndRows() function.

  • Added the symbolsToASCII() function.

  • Added the convertTagAttrsSingleToDoubleQuotes() function.

  • Added the removeDuplicatesFromArray() function.

  • Added the listToEmptyStruct() function.

  • Added the generateRandomString() function.

  • Added a new data_2_1 component with a new parseHTMLTag() function.

  • Added a parseUrl() function to convert a URL string to a struct of standard URL parts.

  • Added a deepCopy() wrapper function for the CommonSpot deepCopy utility function.

  • Date
  • Enhanced the return struct for the calculateMonthsYears() function with the base dates used for the date calculations.
  • Enhanced the return struct of the calculateWeekDates() function with the base dates used for the date calculations.
  • Resource
  • Updated the default AllScripts data version to be v1.1.

  • Updated the getAllScriptsData function to read the JSON scripts data array from the 'DATA' key to allow metadata (datecreated, version, etc.) to added to the allScripts JSON packet.

  • Scripts
  • Added the jQuery v3.7 resource definitions to the allScripts v1.0 data files.

  • Added the Bootstrap v5.3 resource definitions to the allScripts v1.1 data files.

  • Added the Font-Awesome v6.6 resource definitions to the allScripts v1.1 data files.

  • Added the data-fns v2.30 and data-fns v3.3 resource definitions to the allScripts v1.1 data files.

  • Taxonomy
  • Added a getTermNameListByIDList() function to return a list of terms from a list of term IDs and a given taxonomy ID or taxonomy name.

  • UI
  • Added iconLibrary, iconClass and iconPosition parameters to add an icon to the Add/Edit button generated by the buildAddEditLink() function.

  • Utils
  • Added default the .log extension as the default value for the schedLogFileName argument in the setScheduledTask() function.

  • Added option to replace doubled charToReplace character with a single charToReplace character to the fixFilePathSlashes() function.

  • Updated the ADF abort() function to use CommonSpot's built-in (scheduled job safe) ThrowCSException("Abort") instead of the standard cfml abort function.

ThirdParty

  • Added the javaLoader v1.2 library.

  • Added the jQuery v3.7.1 library.

  • Added the Bootstrap v5.3 library.

  • Adding the jQueryUI v1.14.1 library with themes: Base, Black-Tie, Redmond, Smoothness, Start, UI-Darkness and UI-Lightness.

  • Added the Bootbox 6.0 library.

  • Added the Font-Awesome v6.6.0 (free) library.

  • Added the Datatables v2.1 library with datatables versions to allow use with Bootstrap 5, Bootstrap 4, Bootstrap 3 and jQueryUI.

  • Added the date-fns v3.3 library.

  • Added the clipboard.js v2.0 library.

Notable Updates

The following notable updates were in this 2.7 release:

Extensions

  • Custom Field Types
  • Updated the Custom Script Selector Field to better handle the return value from the utils_2_0.scriptExists() ajaxProxy call
  • Updated the Custom Element Hierarchy Selector Field's component move the the "disable active nodes" functionality and the "disable Ineligible Parent Nodes" functionality to their own separate functions.
  • Updated the Custom Element Hierarchy Selector Field to add ActiveField and ActiveValue parameters to allow inactive items to appear as disabled nodes in the generated tree since using the filter criteria to hide inactive records was breaking the tree.

  • Updated the Custom Element Hierarchy Selector Field to add a parameter to disable the current record's item node and all of its children in the tree when the Custom Element is configured to point to itself.

  • Updated the Custom Element Hierarchy Selector Field to add an override parameter to use the values passed in from the request.params.selected url parameter. The new 'selected' parameter will set the currently selected values if passed to the edit form when it is rendered.

  • Updated Custom Checkbox Field's checkbox logic to correctly detect when the checkbox is checked and assign the correct value to the hidden field.

  • Datasheet Modules
  • Fixed an issue in the edit-delete.cfm v2.0 that required buttons to be clicked twice before edit dialog would open.

  • Updated edit-delete.cfm v2.0 and v1.0 .ds-icons class definitions to better to align the tool icon within the jQueryUI buttons

  • Utilities
  • Updated the make-static-files.cfm custom script to fix an issue when being run on a sever without a valid SSL cert so it sets the correct protocol for the cfhttp page file get request.

Library Components

  • apiPage
  • Fixed an issue when passing in pageData to the create() function and a PublicationDate or PublicReleaseDate keys are found to set the default publicationDate using the CommonSpot FormattedTimestamp variable.

  • Fixed an issue with the ActiveState key returning a struct and not a boolean value.

  • Fixed issue with the CMDRESULTS error key to include the error message value if available.

  • Removed duplicate error struct data from the CMDRESULTS key.

  • ceData
  • Updated the getFormID() and the getCustomMetadataFieldsByCSPageID() functions to remove invalid 'type' attributes from field param WDDX packet structs before parsing the CS Field Param WDDX packet with CFWDDX to resolve a breaking change introduced by ACF 2021 Updater 14.

  • Resolved issue with the getDataFieldValueByPageID() function where shared fields from incorrect forms were being added to the returned query results for a pageid from a different form .

  • csData
  • Fixed an issue with the logic in the createUniquePageTitle() function to not compare with the current page's title when the current pageid is provided.

  • Fixed the issue with the logic of the createUniquePageName() function to not compare with the current page's name when the current pageid is provided.

  • Fixed error message in the output from the getImageInfoByCPIMAGE() and removed dependency for the CMDAPI image component.

  • Updated getSubsiteID() function to normalize the SubsiteURL string value before passing it to the subsite id lookup query.

  • Updated the getCSPageDataByURL() function to combine main pages and subsites queries to use a JOIN instead of two different queries.

  • Resolved an issue with the parseCSExtURLProps function where the onClick value was not passed to the return struct when newWindowParams were populated.

  • Data
  • Updated the convertTagAttrsSingleToDoubleQuotes() function to add argument properties.

  • Date
  • Fixed initial execMS calculation in the calcExecutionTime() function.

  • Fixed incorrect return type in the createTimeStruct() to return a struct instead of a string.

  • Fixed the createValidDate() function to no longer need the while loop with the catch to text for a valid date.

  • Fields
  • Updated the renderHiddenControlsFromRequestParams() function to encode the return value before outputting the field value.

  • Log
  • Fixed the default value for the methodName argument in the doTextLogging() function.

  • Schedular
  • Fixed a typo in scheduleName argument in the setSchedule() function.

  • Scripts
  • Updates to the resource scripts data validation tools to work with the new v1.1 of the allScripts data file.

  • Utils
  • Fixed the fixFilePathSlashes() function to remove the slash validation that breaks the logic if other find/replace characters are passed in.

  • Fixed a typo in the argument being passed into the initTimer() function.

ThirdParty

  • Updated jsTree library to v3.3.17.

  • Updated jQuery Migrate 3.4 library.

  • Moved the previous version of the javaloader library to a v1.0 subfolder under the thirdParty/javaloader directory structure to make it available for backwards compatibility.

  • Updated the JavaLoader.cfc calculateJarName() function to add an algorithm argument for use with the CF hash() function to force the default to be the pre-ACF 2021 updater 14 default of "CFMX_COMPAT".

  • Fixed an issue with the javaLoader.init() v1.0 and v1.2 libraries to remove an extra slash in the compileDirectory default path value.

  • Removed 18 jQueryUI theme css and image file sets from jQueryUI v1.12 and jQueryUI v1.13: blazer, cupertino, dark-hive, dot-luv, eggplant, excite-bike, flick,hot-sneaks, humanity, le-frog, mint-choc, overcast, pepper-grinder, south-street, sunny, swanky-purse, trontastic, and vader.

Updated ADF Applications

The following ADF applications were also updated as part of the ADF 2.7 release. Please check the release notes for these apps for details.

  • ptBlog2 v4.5
  • ptCalendar v4.8
  • ptPageRating v2.4
  • ptPoll v3.2
  • ptProfile v3.6
  • ptSocialMedia v3.4
  • ptTags v3.3