Skip to content

@neokoenig neokoenig released this Apr 12, 2020

Bug Fixes

  • Fixed pagination order ambiguous column name exception - #980 [Adam Chapman, Mike Lange]
  • Renames findLast() to findLastOne() for lucee@5.3.5+92 upwards compatibility #988
Assets 3
Pre-release

@neokoenig neokoenig released this Feb 24, 2020 · 110 commits to master since this release

Potentially breaking changes

(Or, just things to look out for...)

  • The new CFWheels internal GUI is more isolated and runs in it's own component: previously this was extending the developers main Controller.cfc which caused multiple issues. The migrator, test runner and routing GUIs have therefore all been re-written.
  • The plugins system behaviour no longer chains multiple functions of the same name as this was a major performance hit. It's recommended that plugin authors check their plugins to run on 2.1
  • HTTP Verb/Method switching is now no longer allowed via GET requests and must be performed via POST (i.e via _method)

Model Enhancements

  • Migrator now automatically manages the timestamp columns on addRecord() and updateRecord() calls - #852 [Charley Contreras]
  • Migrator correctly honors CFWheels Timestamp configuration settings (setUpdatedAtOnCreate, softDeleteProperty, timeStampMode, timeStampOnCreateProperty, timeStampOnUpdateProperty) - #852 [Charley Contreras]
  • MSSQL now uses NVARCHAR(max) instead of TEXT #896 [Reuben Brown]
  • Allow createdAt and updatedAt to be explicitly assigned using the allowExplicitTimestamps=true argument - #887 - [Adam Chapman]

Controller Enhancements

  • New set(flashAppend=true) option allows for appending of a Flash key instead of replacing - #855 - [Tom King]
  • flashMessages() now checks for an array of strings or just a string and outputs appropriately - #855 - [Tom King]
  • flashInsert() can now accept a one dimensional array - #855 - [Tom King]

Bug Fixes

  • Allow uppercase table names containing reserved substrings like OR and AND - #765 [Dmitry Yakhnov, Adam Chapman]
  • Calculated properties can now override an existing property - #764 [Adam Chapman, Andy Bellenie]
  • Filters are now correctly called if there is more than one after filter - #853 [Brandon Shea, Tom King, Adam Chapman]
  • Minor fix for duplicate debug output in the test suite - #176 [Adam Chapman, Tom King]
  • Convert handle to a valid variable name so it doesn't break when using dot notation - #846 [Per Djurner]
  • The validatesUniquenessOf() check now handles cases when duplicates already exist - #480 [Randall Meeker, Per Djurner]
  • validatesConfirmationOf() now has a caseSensitive argument to optionally perform a case sensitive comparison - #918 [Tom King]
  • sendFile() no longer expands an already expanded directory on ACF2016 - #873 [David Paul Belanger, Tom King, strubenstein]
  • Automatic database migrations onApplicationStart now correctly reference appropriate Application scope - #870 [Tom King]
  • usesLayout() now can be called more than once and properly respects the order called - #891 [David Paul Belanger]
  • Migrator MSSQL adapter now respects Time and Timestamp Column Types - #906 [Reuben Brown]
  • Automatic migrations fail on application start - #913 [Adam Chapman]
  • Default cacheFileChecking to true in development mode - [Adam Chapman, Steve Harvey]
  • Migrator columnNames list values are now trimmed - #919 [Adam Chapman]
  • Fixes bug when httpRequestData content is a JSON array - #926 [Adam Chapman]
  • When httpRequestData content is a JSON array, contents are now automatically added to params._json - #939 [Tom King]
  • Fixes bug where Migrator $execute() always appends semi-colon - #924 [Adam Chapman]
  • Fixes bug where model createdAt property is changed upon update - #927 [Brandon Shea, Adam Chapman]
  • Fixed silent application.wheels scope exception hampering autoMigrateDatabase - #957 [Adam Chapman, Tom King]

Miscellaneous

  • Added the ability to pass &lock=false in the URL for when reload requests won't work due to locking - [Per Djurner]
  • Basic 302 redirects now available in mapper via redirect argument for GET/PUT/PATCH/POST/DELETE - #847 - [Tom King]
  • .[format] based routes can now be turned off in resources() and resource() via mapFormat=false - #899 - [Tom King]
  • mapFormat can now be set as a default in mapper() for all child resources() and resource() calls - #899 - [Tom King]
  • HEAD requests are now aliased to GET requests #860 - [Tom King]
  • Added the includeFilters argument to the processRequest function for skipping execution of filters during controller unit tests - [Adam Chapman]
  • Added the useIndex argument to finders for adding table index hints #864 - [Adam Chapman]
  • HTTP Verb/Method switching is now no longer allowed via GET requests and must be performed via POST #886 - [Tom King]
  • CORS Header Access-Control-Allow-Origin can now be set either via a simple value or list in accessControlAllowOrigin() #888 [Tom King]
  • CORS Header Access-Control-Allow-Methods can now be set via accessControlAllowMethods(value) #888 [Tom King]
  • CORS Header Access-Control-Allow-Credentials can now be turned on via accessControlAllowCredentials(true); #888 [Tom King]
  • accessControlAllowMethodsByRoute() now allows for automatic matching of available methods for a route and sets CORS Header Access-Control-Allow-Methods appropriately #888 [Tom King]
  • CORS Header can now be set via accessControlAllowHeaders(value) #888 [Tom King]
  • Performance Improvement: Scanning of Models and Controllers #917 [Adam Chapman]
  • Added the authenticityToken() function for returning the raw CSRF authenticity token #925 [Adam Chapman]
  • Adds enablePublicComponent, enableMigratorComponent,enablePluginsComponent enviroment settings to completely disable those features #926 [Tom King]
  • New CFWheels Internal GUI #931 [Tom King]
  • pluginRunner() now removed in favour of 1.x plugin behaviour for performance purposes #916 [Core Team]
  • Adds validateTestPackageMetaData environment setting for skipping test package validation on large test suites #950 [Adam Chapman]
  • Added aliases for migrator.TableDefinition functions to allow singular variant of the columnNames property #922 [Sébastien FOCK CHOW THO]
  • onAbort is now supported via events/onabort.cfm #962 [Brian Ramsey]
Assets 3

@neokoenig neokoenig released this Oct 17, 2019

Security Release

It is strongly recommended to update to CFWheels 2.0.2 if you are running either 2.0.0 or 2.0.1. This issue does not affect 1.x releases. This release introduces a potentially breaking change, so you are encouraged to test your application appropriately before deploying.

Potential Breaking Changes

  • Blank strings in SQL are no longer converted to null
Assets 3

@perdjurner perdjurner released this Jan 31, 2018 · 303 commits to master since this release

Bug Fixes

  • Fixes reload links on application test suite page.
  • Set dbname in cfdbinfo calls when using custom database connection string.
  • Fixes humanize() function.
  • Enables the rel attribute for stylesheetlinkTag().
  • Returning a NULL value from a query with NULL support enabled no longer throws an error.
  • Accessing a route with incorrect verb now provides a more useful error message.
  • Fixed bug with arrays in URLs.
  • startFormTag now properly applies the method attribute.
  • Incompatible plugin notice now ignores patch releases unless specified.
Assets 3

@perdjurner perdjurner released this Oct 1, 2017

Bug Fixes

  • Made humanize() keep spaces in input.
  • Added spatial datatypes for MySQL.
  • Scope variable to avoid object being returned as NULL.
  • Include "MariaDB" in database check connection string.
  • Fixes MySQL attempts to insert nulls for blank strings.
Assets 3

@perdjurner perdjurner released this Sep 30, 2017 · 339 commits to master since this release

Bug Fixes

  • Support passing in encode="attributes" to submitTag(), buttonTag(), paginationLinks(), checkBoxTag(), and checkBox() - #816 [Per Djurner, Tom King]
  • Support passing in encode="attributes" to date helpers - #818 [Per Djurner]
Assets 3
Pre-release

@perdjurner perdjurner released this Aug 21, 2017 · 353 commits to master since this release

Model Enhancements

  • Added global setting (createMigratorTable) for creating migrations table - #796 [Adam Chapman, Per Djurner]

View Enhancements

  • Use association to create automatic property labels on belongsTo() - #618 [Andy Bellenie, Chris Peters]
  • The output of all view helpers is now encoded by default - #777 [Per Djurner]

Controller Enhancements

  • Added global setting (allowCorsRequests) for allowing CORS requests to go through - #623 [Chris Peters, David Belanger, Per Djurner, Tom King]

Bug Fixes

  • Support CSRF in buttonTo() - #808 [Per Djurner, Tom King]
  • Fix encoding on buttonTo() - #798 [Per Djurner]
  • Fix error when creating default table for migrations - #791 [Adam Chapman, Per Djurner]
  • Fix so calling usesLayout() in Controller.cfc does not affect layout of internal CFWheels pages - #793 [Adam Chapman, Per Djurner]
  • Fix slow performance of findAll - #806 [Andy Bellenie]

Breaking Changes

  • Minimum version when running Lucee 5 is now 5.2.1.9 (can be disabled with the disableEngineCheck setting).
  • Minimum version when running ACF 2016 is now 2016,0,04,302561 (can be disabled with the disableEngineCheck setting).
  • includePartial() now requires the partial and query arguments to be set (if using a query)
Assets 3
Pre-release

@perdjurner perdjurner released this May 31, 2017 · 409 commits to master since this release

Model Enhancements

  • Support for passing in select=false to property() to not include a calculated property by default in SELECT clauses - #122 [Adam Chapman, Per Djurner]
  • Support for setting calculated properties to a specific data type - [Per Djurner]
  • Support for returnIncludedAs and returnIncluded arguments to properties() for returning nested properties - [Adam Chapman]
  • Support for calling updateProperty() with dynamic argument, e.g. updateProperty(firstName="Per") - [Per Djurner]
  • Support for using boolean transaction argument, e.g. update(transaction=false) - #654 [Adam Chapman]
  • Support for MariaDB - #563 [AlexeiCF, Adam Chapman]
  • Model instance isPersisted() and propertyIsBlank() methods - #559 [Chris Peters]
  • Database Migrations (dbmigrate) now available in the core - #664 [Adam Chapman, Tom King, Mike Grogan]
  • Databases can now be automatically migrated to the latest version on application start - #766 [Tom King]
  • New timeStampMode setting ("utc", "local" or "epoch") for the createdAt and updatedAt columns - [Andy Bellenie]
  • Allow nested transactions - #732 [Andy Bellenie]
  • The handle argument to finders now set the variable name for the query so it's easier to find in the debug output - [Per Djurner]
  • Support added for HAVING when using aggregate functions in the where argument - #483 [Per Djurner]
  • Added support for the JSON data type in the MySQL adapter - #759 [Joel Stobart]
  • Corrected mapping for text types in the MySQL adapter - #759 [Joel Stobart]
  • Added global setting, lowerCaseTableNames, to always lower case table names in SQL statements - [Per Djurner]

View Enhancements

  • flashMessages() are now in default layout.cfm - #650 [Tom King]
  • Added ability to override value in textField(), passwordField() and hiddenField() - #633 [Per Djurner, Chris Peters]
  • Support for the method argument in buttonTo() helper - #761 [Adam Chapman]

Controller Enhancements

  • Support for HTTP verbs, scopes, namespaces, and resources in routes (ColdRoute) [Don Humphreys, James Gibson, Tom King]
  • Support for passing in ram:// resources to sendFile() - #566 [Tom King]
  • Extended sendMail() so that it can return the text and/or html content of the email - #122 [Adam Chapman]
  • renderWith() can now set http status codes in header with the status argument - #549 [Tom King]
  • Cross-Site Request Forgery (CSRF) protection - #613 [Chris Peters]
  • Parse JSON body and add to params struct - [Tom King, Per Djurner]

Bug Fixes

  • Fixes skipped model instantiation due to Linux file case sensitivity - #643 [Adam Chapman, Tom King]
  • Added spatial datatypes for MySQL - #660 [Normal Cesar]
  • Made humanize() keep spaces in input - #663 [Per Djurner, Chris Peters]
  • Avoid double redirect error when doing delayed redirects from a verification handler function - [Per Djurner]
  • Fixes attempts to insert nulls for blank strings - #654 [Andy Bellenie, Per Djurner]
  • Fix for using validatePresenceOf() with default on update - [Andy Bellenie]
  • Fixes so paginated finder calls with no records include column names - #722 [Per Djurner]
  • Fixes "invalid data" error when using unsigned integers in MySQL - #768 [Per Djurner]

Plugins

  • Plugins now distributed via forgebox.io [Tom King]
  • Update to the plugin system to allow overriding of the same framework method multiple times - #681 [James Gibson, Tom King]
  • Added ability to turn off incompatible plugin warnings from showing - [Danny Beard]
  • Plugins now have any java lib/class files automatically mapped onApplicationStart 731 [Andy Bellenie, Tom King]
  • Plugins now read version number off their box.json files and are displayed in debug area #68 [Tom King]
  • Plugin meta data as set in box.json now available in application.wheels.pluginMeta scope #68 [Tom King]

Miscellaneous

  • Redirect away after a reload request - [Chris Peters]
  • Support checking IP in http_x_forwarded_for when doing maintenance mode exclusions - [Per Djurner]
  • Support checking user agent string when doing maintenance mode exclusions - [Per Djurner]
  • Added JUnit and JSON format test results - [Adam Chapman]
  • Added empty application test directories - [Chris Peters, Adam Chapman]
  • Added default urlrewrite.xml to support Tuckey URL rewriting with Commandbox #649 - [Tom King]
  • Added beforeAll(), afterAll(), packageSetup(), packageTeardown() methods to test framework #651 - [Adam Chapman]
  • Added errorEmailFromAddress and errorEmailToAddress config settings - #95 [Andy Bellenie, Tony Petruzzi, Per Djurner]
  • Support for passing in any "truthy" value to assert() in tests - [Per Djurner]
  • Added /app/ mapping pointing to the root of the application - [Per Djurner]
  • Added a processRequest() function that simplifies testing controllers - [Per Djurner]
  • Added new embedded documentation viewer/generator for JavaDoc - #734 [Tom King]
  • Removes all references to Railo - #656 (Adam Chapman)
  • Made uncountable and irregular words configurable - #739 [Per Djurner]
  • Removed design mode - [Per Djurner]
  • Removed cacheRoutes setting - [Per Djurner]
  • The cacheFileChecking and cacheImages settings are now turned off in development mode - [Per Djurner]
  • Added includeErrorInEmailSubject setting - [Per Djurner]
  • Environment switching via URL can now be turned off via allowEnvironmentSwitchViaUrl - #766 [Tom King]

Breaking Changes

  • Minimum Lucee version is now 4.5.5.006.
  • Minimum ACF version is now 10.0.23 / 11.0.12.
  • Support for Railo has been dropped.
  • Rewrite and config files for IIS and Apache have been removed and has to be added manually instead.
  • The events/functions.cfm file has been moved to global/functions.cfm.
  • The models/Model.cfc file should extend wheels.Model instead of Wheels (models/Wheels.cfc can be deleted).
  • The controllers/Controller.cfc file should extend wheels.Controller instead of Wheels (controllers/Wheels.cfc can be deleted).
  • The init function of controllers and models should now be named config instead.
  • The global setting modelRequireInit has been renamed to modelRequireConfig.
  • The global setting cacheControllerInitialization has been renamed to cacheControllerConfig.
  • The global setting cacheModelInitialization has been renamed to cacheModelConfig.
  • The global setting clearServerCache has been renamed to clearTemplateCache.
  • The updateProperties() method has been removed, use update() instead.
  • Form labels automatically generated based on foreign key properties will drop the "Id" from the end (e.g., the label for the "userId" property will be "User", not "User Id").
  • Routes need to be updated to use the new routing system by calling mapper().
  • JavaScript arguments like confirm and disable have been removed from the link and form helper functions (use the JS Confirm and JS Disable plugins to reinstate the old behaviour).
  • Timestamping (createdAt, updatedAt) is now in UTC by default (set the global timeStampMode setting to local to reinstate the old behaviour).
  • Blank strings in SQL are now converted to null checks (e.g. where="x=''" becomes where="x IS NULL").
  • Tags are now closed in HTML5 style (e.g. <img src="x"> instead of <img src="x" />).
  • The encode argument to mailTo now encodes tag content and attributes instead of outputting JavaScript.
  • Class output is now dasherized (e.g. field-with-errors instead of fieldWithErrors).
  • The renderPage function has been renamed to renderView.
Assets 3

@perdjurner perdjurner released this Mar 30, 2016 · 1617 commits to master since this release

Bug Fixes

  • Display URL correctly in error email when on HTTPS.
  • Added the datetimeoffset data type to the Microsoft SQL Server adapter.
  • Fix for test link display in debug footer.
  • Don't include query string when looking for image on file through imageTag().
  • Format numbers in paginationLinks().
  • Correct plugin filename case on application startup.
  • Clear out cached queries on reload.
Assets 3

@perdjurner perdjurner released this Dec 10, 2015 · 1617 commits to master since this release

Bug Fixes

  • Check global "cacheActions" setting.
  • Fixed parsing for SQL IN parameters.
  • Pass through all arguments properly when using findOrCreateBy.
  • Make it possible to disable session management on a per request basis.
  • Allow mailParams to be passed through to sendEmail().
  • Fixed inconsistency in form helpers for nested properties.
  • Fixed issue with grouping on associated models.
  • Made the pagination() function available globally.
Assets 3
You can’t perform that action at this time.