Another ColdFusion Builder Extension example

Every day I use ColdFusion Builder I like it a bit more. Last night I built out a new extension. Before I describe how it works, let me demonstrate with a video (and once again I apologize for the size - my 30 inch monitor spoils me):

This extension demonstrates how you can hook into the "New Project" action of CFB. In this case I added support for generating a "skeleton" application for Framework One. FW/1 doesn't ship with a skeleton application in the zip. I've logged a request for it - but honestly, with FW/1 having such a small amount of absolutely necessary files, it may not make sense. However - there are some things that I think a typical FW/1 application will need - hence the need for the extension. So what does the code look like? First, here is the XML for my ide_config.xml:

<application> <name>FW/1 Assistant</name> <author>Raymond Camden</author> <version>0</version> <email></email> <description>intro.html</description> <license>license.html</license> <menucontributions> </menucontributions> <events> <event type="onprojectcreate" handlerid="projectcreate" /> </events> <handlers> <handler id="projectcreate" type="CFM" filename="projectcreate.cfm" /> </handlers> </application>

As you can see it has one event defined - projectcreate - that then links to my handler. The handler is pretty simple as well:

<cfparam name="ideeventinfo"> <cfset xmldoc = XMLParse(ideeventinfo)> <cfset project=xmldoc.event.ide.eventinfo.xmlattributes["projectname"]> <cfset projectloc=xmldoc.event.ide.eventinfo.xmlattributes["projectlocation"]> <!--- Create the following folders /controllers /layouts /services /views /views/main Create the following files: /Application.cfc /index.cfm /views/main/default.cfm ---> <cfdirectory action="create" directory="#projectloc#/controllers"> <cfdirectory action="create" directory="#projectloc#/layouts"> <cfdirectory action="create" directory="#projectloc#/services"> <cfdirectory action="create" directory="#projectloc#/views"> <cfdirectory action="create" directory="#projectloc#/views/main"> <!--- copy my _App.cfc (named so as to not be a real app.cfc) ---> <cffile action="copy" source="#expandPath('./files/_App.cfc')#" destination="#projectloc#/Application.cfc"> <!--- copy my index.cfm ---> <!--- FYI, yes, index.cfm is blank, so why bother using a file at _all_? Well, if in the future stuff goes in there, this will be a bit more future proof. That's my logic for now. ---> <cffile action="copy" source="#expandPath('./files/index.cfm')#" destination="#projectloc#/index.cfm"> <cffile action="copy" source="#expandPath('./files/default.cfm')#" destination="#projectloc#/views/main/default.cfm">

Basically the extension simply makes a few folders and copies three 'template' files over into the new project.

I'm not sure if I'll release this as a proper RIAForge project. I'd like to hear what other FW/1 users think and see if they have ideas on how to expand it. (And yes, I'm also supposed to be working on the Model-Glue CFB extension - sorry - I get distracted easily by shiny objects.) I've included a zip to this entry. Enjoy.

Download attached file.

Raymond Camden's Picture

About Raymond Camden

Raymond is a developer advocate. He focuses on JavaScript, serverless and enterprise cat demos. If you like this article, please consider visiting my Amazon Wishlist or donating via PayPal to show your support.

Lafayette, LA