Raymond Camden's Blog Rss

Another ColdFusion Builder Extension example

8

Posted in ColdFusion | Posted on 02-09-2010 | 4,073 views

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:

view plain print about
1<application>
2 <name>FW/1 Assistant</name>
3 <author>Raymond Camden</author>
4 <version>0</version>
5 <email>ray@camdenfamily.com</email>    
6 <description>intro.html</description>
7 <license>license.html</license>
8
9<menucontributions>
10    
11</menucontributions>
12
13
14<events>
15    <event type="onprojectcreate" handlerid="projectcreate" />
16</events>    
17
18<handlers>
19    <handler id="projectcreate" type="CFM" filename="projectcreate.cfm" />
20</handlers>
21
22</application>

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

view plain print about
1<cfparam name="ideeventinfo">
2
3<cfset xmldoc = XMLParse(ideeventinfo)>
4
5<cfset project=xmldoc.event.ide.eventinfo.xmlattributes["projectname"]>
6<cfset projectloc=xmldoc.event.ide.eventinfo.xmlattributes["projectlocation"]>
7
8<!---
9Create the following folders
10/controllers
11/layouts
12/services
13/views
14/views/main
15
16Create the following files:
17/Application.cfc
18/index.cfm
19/views/main/default.cfm
20--->

21
22<cfdirectory action="create" directory="#projectloc#/controllers">
23<cfdirectory action="create" directory="#projectloc#/layouts">
24<cfdirectory action="create" directory="#projectloc#/services">
25<cfdirectory action="create" directory="#projectloc#/views">
26<cfdirectory action="create" directory="#projectloc#/views/main">
27
28<!--- copy my _App.cfc (named so as to not be a real app.cfc) --->
29<cffile action="copy" source="#expandPath('./files/_App.cfc')#" destination="#projectloc#/Application.cfc">
30
31<!--- copy my index.cfm --->
32<!--- 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. --->
33<cffile action="copy" source="#expandPath('./files/index.cfm')#" destination="#projectloc#/index.cfm">
34
35<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

Comments

[Add Comment] [Subscribe to Comments]

I, for one, would love to see this in RIAForge. I'm just now getting into FW/1, so this would be a time-saver.
This could be extended over time, so thumbs up for riaforge.
I think skeletons are useful no matter what type of framework that you're using. It always gives you a clean slate to start with and helps speed up development. I would also love to see this in RIAForge.
I always wondered how I could use the project create event, great example!
Great example.

This post is ALSO cool cause it mentions FW/1, and FW/1 ROCKS!
I like it...of course if you cf9 at a remote server, you have to create it locally, then copy it to your cf9 server...it beats remembering all the folders and files.
I was wondering why you did not include the org/framework.cfc folder into your install?
Did you not do this because that folder should be created outside your framework and just extend to it?

thanks for this CFB extension.
FW/1 is the first framework I have seriously worked with. I picked it because I got in on the ground floor and am learning along with everyone else.

Honestly Ray, this extension will help me use FW/1 more, which I view as good.
@Dan: I made the assumption that you had already "installed" the FW/1 framework (I hate to say install when its all of one file ;).

[Add Comment] [Subscribe to Comments]