Justin Carter's madfellas.com

ColdExt Beta 3: Lots of Ext JS goodness!

Quite a lot has happened in this release of ColdExt, but I'll try to keep things as short and sweet... If that's possible :)

If you haven't heard of ColdExt before you are probably wondering what it is. ColdExt is a ColdFusion tag library which makes it easier to build rich user interfaces using the amazing Ext JS library. ColdFusion 8 has built-in support for some of the features of Ext JS 1.1, but the idea behind ColdExt is to stay up to date with the current Ext JS release (currently version 2.2) while providing support for as many UI components as possible, and to support CFMX7 as well as other CFML engines (more on this below).

I had originally planned to get Beta 3 out the door much sooner, but after reviewing the small amount of code generation I was doing I thought I should take it a step further. The result is that almost 75% of the ColdExt tags are being generated from a set of easy to update metadata (courtesy of some data scraping). In the event of a new version of Ext JS being released (as was the case with Ext JS 2.2) I can update existing tags with modified attributes or help text, across the whole library, in minutes instead of hours. This also makes it much easier to add new tags to support new components, which is fairly evident from the tag counts in this release (see below).

Making an appearance in Beta 3 is support for User Extensions which live in the new "ux" tag namespace, i.e. <ux:tagName>. The first wave of supported extensions include Grid Filters, Grid Group Summary, Grid Panel Resizer, Grid Row Expander, Grid Row Actions and Portals. If you're after support for a particular extension please put a request on the ColdExt forums and I'll see what I can do.

The changes to ColdExt Beta 3 in a nutshell:

  • Supports Ext JS 2.2
  • 12 new Ext core tags, 11 new User Extension tags (supporting 6 extensions) and 11 new Demos
  • Support for new UI components such as Checkbox and Radio Groups, Date Picker (different to Date Field), Label, Progress Bar and Status Bar
  • Support for User Extensions such as Grid Filters, Grid Group Summary, Grid Panel Resizer, Grid Row Expander, Grid Row Actions and Portals
  • 75% of the tags built by code generation, improving consistency and reliability
  • The <ext:init> tag is now implicit in the <ext:onReady> tag and so is no longer required on every page, however it is still useful for page-level settings such as turning on ext-all-debug.js with the debug attribute 
  • New loadingMask boolean attribute on the <ext:onReady> tag to enable a loading indicator while the page and resources load
  • New passThrough attribute on all tags to allow insertion of arbitrary JSON-formatted data (including potentially unimplemented Ext config properties) directly into Ext components for greater flexibility
  • New attributeCollection attribute on all tags to support passing a ColdFusion Struct into the tag as attribute config data
  • All string type attributes formatted with JSStringFormat() to avoid JavaScript errors
  • Updated ColdExt XML dictionary for CFEclipse tag insight

Also, good news on the CFML engine compatibility front is that ColdExt is now supported on Railo The latest version on the Railo site is still but you can update to the latest preview release by following the preview patch instructions.

Unfortunately there is no OpenBD support just yet as there is a bug with nested custom tags that I'm waiting on a fix for, but hopefully ColdExt will be supported on all major CFML engines soon. Feel the love :)

So without further ado, download ColdExt Beta 3 and see the demos in action!

P.S. I moved to London last week and I'll be attending the UKCFUG meeting on 6th November, so feel free to say "Hi" if you see me because I don't know any CF'ers in London yet :) Happily I've found a great room to rent which I'll be moving into on Sunday with my girlfriend, so now the big challenge is to find a job at a time where the world's economy is in rather poor shape. Fingers crossed...

Related Blog Posts