Archive for the ‘Releases’ Category


CFWheels 1.4.6 maintenance Release

Today sees a maintenance release for the 1.4.x series. Please note that as 2.0 is now released, future updates to the 1.x branch will be limited to essential bug fixes only.

Download 1.4.6 today to fix the following:

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.

CFWheels 2.0 Released

Ok, it’s been a while, but *finally*, CFWheels 2.0 has gone gold!

  • Direct Download: Download zip
  • Commandbox quick install : install cfwheels (Just downloads and unzips)
  • Commandbox install wizard via CFWheels CLI (with url rewriting included):  wheels new
    (make sure your version of the CLI is up to date with install cfwheels-cli)

Make sure to check the “Breaking Changes” section, and please report any bugs.

Needless to say, this has been a massive undertaking with over 1000 commits, and over a year in the making. The core team wishes to thank all the many contributors, testers, and well, just users of the framework. We think we’re in a pretty strong place to move forward with loads more exciting things in the future.

For a comprehensive list of changes, check the Changelog, but for a quick summary:

Need help upgrading? Check the upgrade notes, and feel free to post questions to the Google Group, or hit us up on the #cfwheels room on the CFML Slack Channel

CFWheels 2.0.0-beta.1 Now Available

It’s been about a year in the making, and well over 1000 commits, but the beta for 2.0 has now arrived! We’re still catching up on the main documentation as there’s so much to cover in this release, so bear with us a bit! In the meantime, please do check it out:

  • Direct Download: Download zip
  • Commandbox quick install : install cfwheels@be (Just downloads and unzips)
  • Commandbox install wizard via CFWheels CLI (with url rewriting included):  wheels new
    (make sure your version of the CLI is up to date with install cfwheels-cli)

Make sure to check the “Breaking Changes” section below, and please report any bugs.


Need a little help upgrading?

There will be some more posts coming up covering some of the big topics like routing & migrations, but in the meantime:

  • Check out Adam’s upgrade advisor plugin (Commandbox: install upgradeadvisor)
  • Get in touch via the Mailing List, Slack channel etc.

Changelog

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 updatedAtcolumns – [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 timeStampModesetting 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.

CFWheels 1.4.5 maintenance Release

Today sees another maintenance release for the 1.4.x series

Download 1.4.5 today to fix the following:

Bug Fixes

  • Display URL correctly in error email when on HTTPS – [Per Djurner]
  • Added the datetimeoffset data type to the Microsoft SQL Server adapter – [Danny Beard]
  • Fix for test link display in debug footer – #588 [Tom King]
  • Don’t include query string when looking for image on file through imageTag() – [Per Djurner]
  • Format numbers in paginationLinks() – [Per Djurner]
  • Correct plugin filename case on application startup – #586 [Chris Peters]
  • Clear out cached queries on reload – #585 [Andy Bellenie]

Also don’t forget to check the upgrade notes.

CFWheels 1.4.4 maintenance Release

Today sees another maintenance release for the 1.4.x series

Download 1.4.4 today to fix the following:

Bug Fixes

  • Check global “cacheActions” setting – #572 [Andy Bellenie, Per Djurner]
  • Fixed parsing for SQL IN parameters – #564 [Lee Bartelme, Per Djurner]
  • Pass through all arguments properly when using findOrCreateBy – #561 [Per Djurner]
  • Make it possible to disable session management on a per request basis – #493 [Andy Bellenie, Per Djurner]
  • Allow mailParams to be passed through to sendEmail() – #565 [Tom King]
  • Fixed inconsistency in form helpers for nested properties – [Marc Funaro, Per Djurner, Chris Peters]
  • Fixed issue with grouping on associated models – [Song Lin, Per Djurner]
  • Made the pagination() function available globally – #560 [Chris Peters, Per Djurner]

Also don’t forget to check the upgrade notes.

CFWheels 1.4.3 maintenance release

Today sees another maintenance release for the 1.4.x series

Download 1.4.3 today to fix the following:

Bug Fixes

  • Fix for using cfscript operators in condition and unless arguments.
  • Added try / catch on getting host name since CreateObject(“java”) can be unavailable for security reasons.
  • Fixed bug with cache keys always changing even though the input was the same.
  • Remove white space character in output.
  • Use correct path info in error email and debug area.
  • Fixed plugin injection issue on start-up.
  • Skip calculated properties that are aggregate SQL functions in the GROUP BY clause.
  • Fixed error when trying to validate uniqueness on blank numeric properties.

Also don’t forget to check the upgrade notes.

CFWheels 1.4.2 maintenance release

Today sees another maintenance release for the 1.4.x series

Download 1.4.2 today to fix the following:

Bug Fixes

  • Fix for selecting distinct with calculated property – [Edward Chanter, Per Djurner]
  • Fixed so default values are applied to non persistent properties – #519 [Andy Bellenie]
  • Fixed missing var scope causing error on Lucee – [Russ Michaels, Tom King]
  • Don’t show debug info on AJAX requests – #496 [Leroy Mah, Per Djurner]
  • Fixed permissions issue with imageTag() when running on shared hosting – [Per Djurner]
  • Removed use of ExpandPath() in debug file since it was causing file permission issues – [Peter Hopman, Per Djurner]
  • Skip setting object property when NULL is passed in – #507 [Andy Bellenie, Per Djurner]
  • Fixed edge case issue with calling dynamic association methods – #501 [Dominik Hofer, Per Djurner]
  • Fixed lock name in onSessionEnd event – #499 [Per Djurner]
  • Ignore white space in the “where” argument to finders – #503 [Per Djurner]
  • Ignore spaces in the “keys” argument to hasManyCheckBox() and hasManyRadioButton() – [Song Lin, Per Djurner]
  • Skip running callbacks when validating uniqueness and similar situations – #492 [Andy Bellenie, Per Djurner]
  • Avoid plugin directory exception during first application load – #541 [Adam Chapman, Per Djurner]
  • Fix for using cfscript operators in “condition” and “unless” argument on ACF 8 – #531 [Per Djurner]
  • Fix for rolling back nested properties – #539 [James Gibson, Chris Peters, Per Djurner]
  • afterSave and afterCreate callbacks are not firing on nested objects – #525 [Adam Chapman, Chris Peters, Per Djurner]
  • Ability to pass in list to “includeBlank” argument on dateSelect() and similar functions – #502 [Thorsten Eilers, Per Djurner]
  • Ability to set attributes on the input element created by buttonTo() – [Per Djurner]
  • Added missing “onlyPath” argument to imageTag() – #508 [Per Djurner]
  • Corrected output of property labels in error messages – #494 [Andy Bellenie]

Also don’t forget to check the upgrade notes.

CFWheels 1.4.1 maintenance release

Today sees a small maintenance release for the 1.4.x series

Download 1.4.1 today to fix the following:

Bug Fixes

  • Skip callbacks when running calculation methods  [Adam Chapman, Per Djurner]
  • Fixed rewrite rules so base URL is rewritten correctly on Apache  [Jeremy Keczan, Per Djurner]
  • Removed incorrect path info information set by Apache [David Belanger, Per Djurner]
  • Fixed routing bug when running from a sub folder on Adobe ColdFusion 10 – [Brant Nielsen, Per Djurner]
  • Made sure error emails never depend on application variables being set – [Per Djurner]

Miscellaneous

  • Removed tests folder – [Per Djurner]
  • Updates to framework utility pages – Update logo, Fix links on congrats page to point to new documentation site – [Chris Peters]

Also don’t forget to check the upgrade notes

CFWheels 1.4.0 released, New documentation too..

First, some new announcements

You may have noticed a few changes around here! With the release of 1.4, we’ve taken the opportunity to greatly simplify our web footprint.

  • All documentation now lives on http://docs.cfwheels.org/ (thanks to readme.io). We hope this will allow people to more easily contribute to the fantastic documentation already there; you need a (free) readme.io account, but you should be able to ‘suggest edits’ for any page – feel free to help us out! We’re in the process of adding redirects from the old documentation – please bear with us on this one.
  • You’ll notice the plugin listings are greatly simplified – this is a temporary measure whilst we look at the whole plugin ecosystem generally
  • Downloads now live on the readme.io site at http://docs.cfwheels.org/page/download, but don’t forget you can always get everything at the Git Repo
  • You’ll notice a small change in the cfWheels logo – don’t panic, you’re not going mad, we just thought it might be nice to have something new and shiny to look at.
  • Tom King and Tim Badolato are now part of the Wheels core team. “Per” still does all the actual real work 🙂

Onwards and upwards!

1.4 is released, which brings the usual host of fixes and improvements, most noticeably a few tweaks to get Wheels running with Lucee Server: CFWheels should now correctly identify itself as Lucee in the debug output, and various other (older) Railo specific tweaks should get applied. Note, if you’re ever testing for ‘railo’ in the server scope on Lucee, it will return as true.

A couple of other changes might catch you out too, noticeably removal of the h() function, and “development” now being the default environment mode.

Get 1.4 Now!

Upgrading from 1.3x

  • Replace the entire /wheels/ folder
  • Replace URL rewriting rule files – i.e, /.htaccess, /web.config, /IsapiRewrite4.ini

Release notes:

Model Enhancements

  • Allow spaces in list passed in to the “include” argument on finders – #150 [Per Djurner]
  • Added findOrCreateByProperty, findAllKeys(), findFirst() and findLast() finder methods – [Per Djurner]
  • Add support for “GROUP BY” in sum(), average() etc. – #464 [Per Djurner]
  • Made exists() check for any record when “key” and “where” is not passed in [Per Djurner]
  • Added clearChangeInformation() for clearing knowledge of object changes – #433 [Jeremy Keczan, Per Djurner]
  • Evaluate validation error messages at runtime – #470 [Per Djurner]

View Enhancements

  • Respect blank “text” argument in linkTo() – #365 [Adam Chapman, Tony Petruzzi, Per Djurner]
  • Allow styleSheetLinkTag() and JavaScriptIncludeTag() to reference files starting from the root – [Per Djurner]
  • Added “monthNames” and “monthAbbreviations” arguments to form helpers for easy localization – [Per Djurner]

Controller Enhancements

  • Ability to prepend functions to the filter chain instead of appending – #321 [Per Djurner]
  • Pass in “appendToKey” to caches() to cache content separately – #439 [Per Djurner]
  • Allow external attachments with sendEmail() – [Adam Chapman, Tony Petruzzi]
  • Ability to redirect to a specific URL – [Simon Allard]
  • Option to correct JSON output by passing in x=”string” or x=”integer” to renderWith() – [Per Djurner]

Bug Fixes

  • Fix for blank path_info in CGI scope – #447 [Tim Badolato, Tony Petruzzi, Per Djurner]
  • Fix for accessing request scope key that does not exist from session – #446 [Brent Alexander, Per Djurner]
  • Removed “validate” property that was incorrectly set when calling create() – [Per Djurner]
  • Pass through “parameterize” in exists() [Per Djurner]
  • Do not remove “AS” when it’s in the SQL for a calculated property – #453 [Jean Duteau, Per Djurner]
  • Obfuscate parameters in named route patterns when URL rewriting is off – #455 [Amber Cline, Per Djurner]
  • Pass through “includeSoftDeletes” argument correctly – #451 [Jon Brose]

Miscellaneous

  • Support for the Lucee server – [Tom King]
  • Made “development” the default environment mode – [Per Djurner]
  • Removed deprecation work-around for the “if” argument on validation helpers – [Per Djurner]
  • Removed deprecation work-around for the “class” argument on association initialization methods – [Per Djurner]
  • Removed the “lib” folder – [Per Djurner]
  • Removed the h() function, use XMLFormat() instead – [Per Djurner]

CFWheels 1.3.3 maintenance release

Today, we release the third maintenance release in the 1.3.x series.

Download version 1.3.3 to fix the following bugs:

  • Correct output of boolean HTML attributes using new global booleanAttributes setting
  • Make sure locks cannot be affected by other applications running on the same server
  • Fixed bug with updating an integer column from NULL to 0
  • Fixed potential permissions issue when running on shared hosting

More info in the 1.3.3 CHANGELOG.

If you’re upgrading from 1.3.0+, you just need to replace the wheels folder with the new one from the download. If you’re upgrading from an older version of CFWheels, see the instructions.