An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

FW/1 Release 1.1 Available!

June 11, 2010 ·

The latest stable release of Framework One is now available for download from github! The previous stable release is still available on that page.

This release features a large number of enhancements suggested by the community including:

  • A skeleton application
  • The list of keys in populate() can contain spaces for improved readability
  • The delimiter for subsystems can be configured (the default is still : )
  • You can override the behavior when a view is missing by defining your own onMissingView() handler
  • The name of the application is automatically generated allowing you to omit assignment in Application.cfc
  • Controller calls can be queued up in setupApplication(), setupSession() and setupRequest() via the controller() API - doController() is officially deprecated
  • populate() now works with CFCs that use generated setters or onMissingMethod() via the new trustKeys argument - and onPopulateError() to trap any errors that arise
  • Sample applications now work on installations with a non-empty context root (except for a couple clearly marked as such)
  • Skinning is possible via a new override point: customizeViewOrLayoutPath()
  • When you queue up service() calls, you can now provide a struct of additional arguments so you add arguments that are not in the request context
  • The list of extensions and file paths that are ignored by FW/1 is now configurable (so you can easily allow certain parts of your application to operate outside the framework)
  • A new API getConfig() returns a readonly copy of the framework's configuration structure which may be useful in controllers
  • You can now override the view conventions easily in a controller via the new setView() API
  • The action arguments is now consistently optional in all of the getters for subsystem / section / item combinations
  • An example of security / access control with FW/1 has been added as a variant of the user manager
  • buildURL() and redirect() can generate SES URLs via new FW/1 configuration settings: generateSES and SESOmitIndex
  • buildURL() and redirect() now all embedded query strings to make URL generation easier, as well as allowing control over which name/value pairs are folded into SES URLs vs regular query string format

Tags: coldfusion · fw1 · oss

6 responses

  • 1 Dutch Rapley // Jun 11, 2010 at 11:26 AM

    Nice work everyone!
  • 2 Dan Vega // Jun 11, 2010 at 11:45 AM

    Great work!

    Sean - I know the reason why this is the way it is now but it would be really nice if you could just turn accessors=true and define a service

    property BookService;
    property AuthorService;

    And have those services injected into the controller. Writing setters for every service you need is a PITA. Just a thought, thanks again!
  • 3 Sean Corfield // Jun 11, 2010 at 11:52 AM

    @Dutch, yes, definitely a team effort as can be seen from the commit list:

    @Dan, open an issue for that. Given that FW/1 2.0 will target CF9 / Railo 3.2 / OpenBD 1.4, I suspect that implementing that across all engines will be portable and so it's something worth considering for the 2.0 release.
  • 4 Dan Vega // Jun 11, 2010 at 11:54 AM

    Awesome! Will do!
  • 5 Frank // Jun 21, 2010 at 1:46 AM

    Dunno if this is a bug, but when I change the defaultItem parameter in the variables.framework scope to another value (e.g. main), the default.cfm file in the layouts folder is still being called. Though changing the filename default.cfm to the other value (e.g. main.cfm) also works. When both files exist (default.cfm and main.cfm) even both files are being called.

    I noticed this when I had to change the defaultItem to something else when I changed the code in the controllers and services to cfscript and default for the function name is not allowed.

  • 6 Sean Corfield // Jun 21, 2010 at 1:10 PM

    @Frank, I can't reproduce that. When I change variables.framework.defaultItem, the change is picked up immediately. I suggest you post on the mailing list with some more details about your code to see if anyone can repro.