<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.cfwheels.org/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
   <channel>
      <title>ColdFusion on Wheels Bloggers</title>
      <description>A stream of blog posts from CFML developers who use ColdFusion on Wheels.</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=4258363960ec2fbd438d68d764c7faa6</link>
      <pubDate>Fri, 12 Mar 2010 21:13:50 -0800</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.cfwheels.org/cfwheels/bloggers" /><feedburner:info uri="cfwheels/bloggers" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
         <title>Make an RSS Feed for Your Splash Site</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/make-an-rss-feed-for-your-splash-site/</link>
         <description>Using the new Splash Tags for the Splash CMS, you can easily make an RSS feed or an XML sitemap. 1234567891011121314151617181920212223242526272829&amp;#60;cfcontent type=&amp;#34;text/xml&amp;#34; reset=&amp;#34;Yes&amp;#34;&amp;#62;&amp;#60;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;#62;
&amp;#60;rss version=&amp;#34;2.0&amp;#34; xmlns:dc=&amp;#34;http://purl.org/dc/elements/1.1/&amp;#34; &amp;#160; &amp;#160;xmlns:atom=&amp;#34;http://www.w3.org/2005/Atom&amp;#34;&amp;#62;
&amp;#60;channel&amp;#62;
&amp;#160; &amp;#60;atom:link href=&amp;#34;http://www.YourSite.com/index.cfm/feed&amp;#34; &amp;#160; &amp;#160;rel=&amp;#34;self&amp;#34; type=&amp;#34;application/rss+xml&amp;#34; /&amp;#62;
&amp;#160; &amp;#60;title&amp;#62;YourSite.com&amp;#60;/title&amp;#62;
&amp;#160; &amp;#60;link&amp;#62;http://www.YourSite.com&amp;#60;/link&amp;#62;
&amp;#160; &amp;#60;description&amp;#62;Your Description Goes Here&amp;#60;/description&amp;#62;
&amp;#160; &amp;#60;cfoutput&amp;#62;
&amp;#160; &amp;#160; &amp;#60;pubDate&amp;#62;#HTMLEditFormat(DateFormat(now(), 'ddd, dd mmm yyyy'))#
&amp;#160; &amp;#160; &amp;#160; #HTMLEditFormat(TimeFormat(now(), 'HH:mm:ss'))# EST&amp;#60;/pubDate&amp;#62;
&amp;#160; &amp;#60;language&amp;#62;en-us&amp;#60;/language&amp;#62;
&amp;#160; &amp;#60;ttl&amp;#62;40&amp;#60;/ttl&amp;#62;
&amp;#160; &amp;#60;s:find [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=213</guid>
         <pubDate>Sat, 06 Mar 2010 07:38:35 -0800</pubDate>
         <content:encoded><![CDATA[<p>Using the new Splash Tags for the Splash CMS, you can easily make an RSS feed or an XML sitemap.</p>
<pre>
<div style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right:1px solid #9F9F9F;font:normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br /></div></td><td><div class="cfm codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfcontent</span> <span style="color:#0000FF;">type</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"text/xml"</span> reset<span style="color:#0000FF;">=</span><span style="color:#009900;">"Yes"</span><span style="color:#0000FF;">&gt;</span></span><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>?xml <span style="color:#0000FF;">version</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"1.0"</span> encoding<span style="color:#0000FF;">=</span><span style="color:#009900;">"UTF-8"</span>?<span style="color:#0000FF;">&gt;</span></span><br />
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>rss <span style="color:#0000FF;">version</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"2.0"</span> xmlns:dc<span style="color:#0000FF;">=</span><span style="color:#009900;">"http://purl.org/dc/elements/1.1/"</span></span><br />
<span style="color:#333333;"> &nbsp; &nbsp;xmlns:atom<span style="color:#0000FF;">=</span><span style="color:#009900;">"http://www.w3.org/2005/Atom"</span><span style="color:#0000FF;">&gt;</span></span><br />
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>channel<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>atom:<span style="color:#0000FF;">link</span> <span style="color:#0000FF;">href</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"http://www.YourSite.com/index.cfm/feed"</span></span><br />
<span style="color:#333333;"> &nbsp; &nbsp;<span style="color:#0000FF;">rel</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"self"</span> <span style="color:#0000FF;">type</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"application/rss+xml"</span> <span style="color:#0000FF;">/&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/title.html"><span style="color:#000000;font-weight:bold;">title</span></a><span style="color:#0000FF;">&gt;</span></span>YourSite.com<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/title.html"><span style="color:#000000;font-weight:bold;">title</span></a><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/link.html"><span style="color:#000000;font-weight:bold;">link</span></a><span style="color:#0000FF;">&gt;</span></span>http://www.YourSite.com<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/link.html"><span style="color:#000000;font-weight:bold;">link</span></a><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>description<span style="color:#0000FF;">&gt;</span></span>Your Description Goes Here<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>description<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfoutput</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>pubDate<span style="color:#0000FF;">&gt;</span></span>#HTMLEditFormat(DateFormat(now(), 'ddd, dd mmm yyyy'))#<br />
&nbsp; &nbsp; &nbsp; #HTMLEditFormat(TimeFormat(now(), 'HH:mm:ss'))# EST<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>pubDate<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#0000FF;">language</span><span style="color:#0000FF;">&gt;</span></span>en-us<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#0000FF;">language</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>ttl<span style="color:#0000FF;">&gt;</span></span>40<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>ttl<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>s:<span style="color:#0000FF;">find</span> slug<span style="color:#0000FF;">=</span><span style="color:#009900;">"blog"</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>s:children-each order<span style="color:#0000FF;">=</span><span style="color:#009900;">"publishedAt desc"</span> where<span style="color:#0000FF;">=</span><span style="color:#009900;">"status='published'"</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>item<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfset</span> thisChild <span style="color:#0000FF;">=</span> request.tags.currentChild<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/title.html"><span style="color:#000000;font-weight:bold;">title</span></a><span style="color:#0000FF;">&gt;</span></span><span style="color:#0000FF;">#HTMLEditFormat<span style="color:#0000FF;">&#40;</span>thisChild.<span style="color:#0000FF;">title</span><span style="color:#0000FF;">&#41;</span>#</span><span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/title.html"><span style="color:#000000;font-weight:bold;">title</span></a><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>description<span style="color:#0000FF;">&gt;</span></span><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>!<span style="color:#0000FF;">&#91;</span>CDATA<span style="color:#0000FF;">&#91;</span><span style="color:#0000FF;">&lt;</span>s:<span style="color:#0000FF;">content</span> part<span style="color:#0000FF;">=</span><span style="color:#009900;">"body"</span> page<span style="color:#0000FF;">=</span><span style="color:#009900;">"#thisChild#"</span><span style="color:#0000FF;">/&gt;</span></span>]]&gt;<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>description<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>pubDate<span style="color:#0000FF;">&gt;</span></span>#HTMLEditFormat(DateFormat(thisChild.publishedAt, 'ddd, dd mmm yyyy'))#<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#HTMLEditFormat(TimeFormat(thisChild.publishedAt, 'HH:mm:ss'))# EST<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>pubDate<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>guid isPermaLink<span style="color:#0000FF;">=</span><span style="color:#009900;">"true"</span><span style="color:#0000FF;">&gt;</span></span>http://www.yoursite.com/index.cfm/<span style="color:#0000FF;">#thisChild.slug#</span><span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>guid<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/link.html"><span style="color:#000000;font-weight:bold;">link</span></a><span style="color:#0000FF;">&gt;</span></span>http://www.yoursite.com/index.cfm/<span style="color:#0000FF;">#thisChild.slug#</span><span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/link.html"><span style="color:#000000;font-weight:bold;">link</span></a><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>item<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>s:children-each<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>s:find<span style="color:#0000FF;">&gt;</span></span><br />
<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>channel<span style="color:#0000FF;">&gt;</span></span><span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#990000;font-weight:bold;">cfoutput</span><span style="color:#0000FF;">&gt;</span></span><br />
<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>rss<span style="color:#0000FF;">&gt;</span></span><span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#990000;font-weight:bold;">cfcontent</span><span style="color:#0000FF;">&gt;</span></span><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfabort</span><span style="color:#0000FF;">&gt;</span></span></div></td></tr></tbody></table></div>
</pre>
<p>Most of this code is the required RSS XML. Just drop in your site-specific domain name, description, etc.</p>
<p>The &lt;s:find slug=&#8221;blog&gt; tag finds the blog, and then &lt;s:children-each&gt; loops over all the children that are under the blog page. I used thisChild as a convenience variable instead of having to type request.tags.currentChild every time. The &lt;cfabort&gt; at the end keeps Splash from adding extra HTML tags at the end of the file.</p>
<p>You could also create an easy XML site map using a similar approach. Just change out the XML wrapper.</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/zrv8ETPhPUw" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>New Splash Tags for the Splash CMS</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/new-splash-tags-for-the-splash-cms/</link>
         <description>I recently added several new Splash Tags for the Splash content management system. If you don&amp;#8217;t know about Splash, read my Introduction to Splash article. &amp;#60;s: find&amp;#62;
&amp;#60;s: children-each&amp;#62;
&amp;#60;s: children-first &amp;#62;
&amp;#60;s: children-last &amp;#62;
&amp;#60;s: ifFirst &amp;#62;
&amp;#60;s: unlessFirst &amp;#62;
&amp;#60;s: ifLast &amp;#62;
&amp;#60;s: unlessLast &amp;#62; There&amp;#8217;s a complete list of tags and documentation over on the GitHub Wiki. But, I&amp;#8217;ll give you [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=165</guid>
         <pubDate>Fri, 05 Mar 2010 13:10:56 -0800</pubDate>
         <content:encoded><![CDATA[<p>I recently added several new Splash Tags for the Splash content management system. If you don&#8217;t know about Splash, read my <a rel="nofollow" title="Introduction to the Splash CMS" target="_blank" href="http://www.resultantsys.com/index.php/coldfusion/content-management-and-the-splash-cms-introduction/">Introduction to Splash</a> article.</p>
<ul>
<li>&lt;s: find&gt;</li>
<li>&lt;s: children-each&gt;</li>
<li>&lt;s: children-first &gt;</li>
<li>&lt;s: children-last &gt;</li>
<li>&lt;s: ifFirst &gt;</li>
<li>&lt;s: unlessFirst &gt;</li>
<li>&lt;s: ifLast &gt;</li>
<li>&lt;s: unlessLast &gt;</li>
</ul>
<p>There&#8217;s a complete list of tags and documentation over on the <a rel="nofollow" title="Splash Tags Documentation" target="_blank" href="http://wiki.github.com/russjohnson/SplashCMS/splashtags">GitHub Wiki</a>. But, I&#8217;ll give you an overview and show you how to use these tags for a blog.</p>
<p>&lt;s:find&gt; This tag looks up a page and stores the page object so that subsequent tags can use that page object.</p>
<p>&lt;s: children-each&gt; The tag finds all the children of a page and loops over them.</p>
<p>&lt;s: children-first &gt; and &lt;s: children-last &gt; finds the first or last child page.</p>
<p>The rest of the tags are all used inside of a &lt;s: children-each&gt; tag. They check to see if the current child page is the first one, last one, or whatever.</p>
<h2>Making a Blog page with Splash Tags</h2>
<p>Let&#8217;s say you have a page named Blog, that has several posts that are child pages of Blog. Then, in the body for the blog page, put something like this:</p>
<pre>
<div style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right:1px solid #9F9F9F;font:normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="cfm codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/h3.html"><span style="color:#000000;font-weight:bold;">h3</span></a><span style="color:#0000FF;">&gt;</span></span>Articles<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/h3.html"><span style="color:#000000;font-weight:bold;">h3</span></a><span style="color:#0000FF;">&gt;</span></span><br />
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>s:<span style="color:#0000FF;">find</span> slug<span style="color:#0000FF;">=</span><span style="color:#009900;">"blog"</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>s:children-each</span><br />
<span style="color:#333333;"> &nbsp; order<span style="color:#0000FF;">=</span><span style="color:#009900;">"publishedAt desc"</span></span><br />
<span style="color:#333333;"> &nbsp; where<span style="color:#0000FF;">=</span><span style="color:#009900;">"status='published'"</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfset</span> thisChild <span style="color:#0000FF;">=</span> request.tags.currentChild<span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfoutput</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/dt.html"><span style="color:#000000;font-weight:bold;">dt</span></a> <span style="color:#0000FF;">class</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"blogList"</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/a.html"><span style="color:#000000;font-weight:bold;">a</span></a> <span style="color:#0000FF;">href</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"#thisChild.slug#"</span><span style="color:#0000FF;">&gt;</span></span><span style="color:#0000FF;">#thisChild.<span style="color:#0000FF;">title</span>#</span><span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/a.html"><span style="color:#000000;font-weight:bold;">a</span></a><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | #DateFormat(thisChild.publishedAt, 'long')#<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/dt.html"><span style="color:#000000;font-weight:bold;">dt</span></a><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/dd.html"><span style="color:#000000;font-weight:bold;">dd</span></a> <span style="color:#0000FF;">class</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"blogDesc"</span><span style="color:#0000FF;">&gt;</span></span><span style="color:#0000FF;">#thisChild.<span style="color:#0000FF;">description</span>#</span><span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/dd.html"><span style="color:#000000;font-weight:bold;">dd</span></a><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#990000;font-weight:bold;">cfoutput</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>s:children-each<span style="color:#0000FF;">&gt;</span></span><br />
<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span>s:find<span style="color:#0000FF;">&gt;</span></span></div></td></tr></tbody></table></div>
</pre>
<p>&lt;s:find slug=&#8221;blog&#8221;&gt; finds the blog page, and then &lt;s:children-each&gt; loops over all the pages. By the way, &lt;s:children-each&gt; uses the CFWheels <a rel="nofollow" title="findAll Model Method" target="_blank" href="http://cfwheels.org/docs/function/findall">findAll model method</a>, so all of the cool CFWheels parameters are available in &lt;s:children-each&gt;!</p>
<p>If you want to see an example of what this looks like, visit the <a rel="nofollow" title="DonorUp Blog Example" target="_blank" href="http://www.donorup.com/index.cfm/blog">DonorUp blog page</a>.</p>
<p>All in all, that&#8217;s a lot of output for very little programming effort. That&#8217;s what I call the secret to programmer happiness!</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/O04K0Lg8TJA" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Content Management and the Splash CMS — Introduction</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/content-management-and-the-splash-cms-introduction/</link>
         <description>Splash CMS is an open source content management system that runs on top of CFWheels. It&amp;#8217;s designed to be a simple, but elegant content management solutions for websites that are managed by small teams.
CFWheels is an open source ColdFusion framework that is inspired by Ruby on Rails. Besides being easy to use and learn, using [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=156</guid>
         <pubDate>Fri, 05 Mar 2010 12:02:46 -0800</pubDate>
         <content:encoded><![CDATA[<p><a rel="nofollow" title="Splash CMS" target="_blank" href="http://www.splashcms.com/">Splash CMS</a> is an open source content management system that runs on top of <a rel="nofollow" title="CFWheels Framework" target="_blank" href="http://cfwheels.org/">CFWheels</a>. It&#8217;s designed to be a simple, but elegant content management solutions for websites that are managed by small teams.</p>
<p>CFWheels is an open source ColdFusion framework that is inspired by Ruby on Rails. Besides being easy to use and learn, using CFWheels lets you adapt great ideas from Ruby on Rails (RoR) applications. RoR has the Radiant CMS, and Splash is the ColdFusion/CFWheels adaptation!</p>
<p>You can easily download Splash from <a rel="nofollow" title="Download Splash CMS" target="_blank" href="http://wiki.github.com/russjohnson/SplashCMS/">http://wiki.github.com/russjohnson/SplashCMS/</a>. The documentation for Splash is still kind of sparse, but the <a rel="nofollow" title="Radiant CMS Documentation" target="_blank" href="http://wiki.github.com/radiant/radiant/">Radiant </a>documentation is mostly applicable, and you can easily see how most things are supposed to work. Then, if you get stuck, email the <a rel="nofollow" title="Splash CMS Google Group" target="_blank" href="http://groups.google.com/group/splashcms">Google Group</a>.</p>
<h2>Splash Layouts, Snippets, and Pages</h2>
<p>Splash uses Layouts, Snippets, and Pages to build a website.</p>
<p>A layout, as you might imagine, is like a skin for an entire website. You can have multiple layouts and use different layouts for different pages.</p>
<p>Pages are specific URLs on a Splash site, and each page has a specific layout specified. A page can have multiple &#8220;page parts.&#8221; Most pages will have a &#8220;Body&#8221; part, but some might also have a &#8220;Sidebar&#8221; or other parts.</p>
<p>Snippets are reusable content chunks. You might have a navigation snippet that displays the main navigation for your site. Headers and Footers are other common snippets.</p>
<h2>Splash Tags</h2>
<p>There is one other very powerful component to Splash &#8212; Splash Tags. These are ColdFusion custom tags that extend ColdFusion and HTML to work with Splash. Here&#8217;s a simple example: the <code><span class="cfm"><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>s:<span style="color:#0000FF;">title</span> <span style="color:#0000FF;">/&gt;</span></span></span></code> tag. This tag just retrieves the page&#8217;s title from the page object and inserts it in place of the tag. So, in your layout, you would typically have something like:</p>
<p><code><span class="cfm"><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/title.html"><span style="color:#000000;font-weight:bold;">title</span></a><span style="color:#0000FF;">&gt;</span></span><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>s:<span style="color:#0000FF;">title</span> <span style="color:#0000FF;">/&gt;</span></span><span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><a rel="nofollow" target="_blank" href="http://december.com/html/4/element/title.html"><span style="color:#000000;font-weight:bold;">title</span></a><span style="color:#0000FF;">&gt;</span></span></span></code></p>
<p>The pages title information from the database is then easily inserted into the HTML title tag!</p>
<p>There are a lot more tags, so <a rel="nofollow" title="Splash Tags Documentation" target="_blank" href="http://wiki.github.com/russjohnson/SplashCMS/splashtags">see the Wiki</a>.</p>
<h2>Splash in Action</h2>
<p>I recently completed the <a rel="nofollow" title="DonorUp Website" target="_blank" href="http://www.donorup.com">DonorUp.com</a> website using Splash. I was really pleased with how easily I was able to get many thing to come together. So, try Splash and leave a comment to let me know how you like it!</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/IF9cxMIuU0k" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Learning CFWheels — Debugging</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/learning-cfwheels-debugging/</link>
         <description>CFWheels has some great documentation and examples, but there is still a small learning curve. As you are getting going, it helps to have a few debugging tips. So, keep reading &amp;#8230;
On the CFWheels Google Group, Cathy recently asked about the sendEmail() function. This is a pretty good example to show you some debugging tips.
sendEmail() [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=137</guid>
         <pubDate>Wed, 24 Feb 2010 14:06:55 -0800</pubDate>
         <content:encoded><![CDATA[<p>CFWheels has some great documentation and examples, but there is still a small learning curve. As you are getting going, it helps to have a few debugging tips. So, keep reading &#8230;</p>
<p>On the CFWheels Google Group, Cathy recently asked about the sendEmail() function. This is a pretty good example to show you some debugging tips.</p>
<p><a rel="nofollow" title="sendEmail()" target="_blank" href="http://cfwheels.org/docs/function/sendemail">sendEmail()</a> wraps the cfmail tag. Here&#8217;s some more information:</p>
<p><a rel="nofollow" title="Sending email with CFWheels" target="_blank" href="http://cfwheels.org/docs/chapter/sending-email">CFWheels on sending email</a>.</p>
<p>This all looks pretty straightforward, but what do you do if it&#8217;s not working?</p>
<p>First, setup a test view page. Go to the Wheels views folder and add a new folder called test. Then create a new file called index.cfm in the test folder. The path should be <span style="color:#993300;">/views/test/index.cfm</span>.</p>
<p>In the index.cfm file you just create, put the following:</p>
<pre>
<div style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right:1px solid #9F9F9F;font:normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="cfm codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfset</span></span><br />
<span style="color:#333333;">&nbsp; set<span style="color:#0000FF;">&#40;</span>functionName<span style="color:#0000FF;">=</span><span style="color:#009900;">"sendEmail"</span>,</span><br />
<span style="color:#333333;">&nbsp; server<span style="color:#0000FF;">=</span><span style="color:#009900;">"yourServer"</span>,</span><br />
<span style="color:#333333;">&nbsp; <span style="color:#0000FF;">username</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"yourUsername"</span>,</span><br />
<span style="color:#333333;">&nbsp; <span style="color:#0000FF;">password</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"yourPassword"</span><span style="color:#0000FF;">&#41;</span></span><br />
<span style="color:#333333;"><span style="color:#0000FF;">&gt;</span></span></div></td></tr></tbody></table></div>
</pre>
<p>This will trigger the sendEmail() function. You can access the test page at <span style="color:#993300;">http://localhost/index.cfm/test</span>. But, if you go to this page, you&#8217;ll get an error because we didn&#8217;t create myemailtemplate, yet. So, make another CFM page in <span style="color:#993300;">/views/test/</span> called <span style="color:#993300;">myemailtemplate.cfm</span>. The content can be anything you want. Something like &#8220;Test email&#8221; is fine.</p>
<p>Wheels knows you are in the Test controller, so it looks for templates in the <span style="color:#993300;">/views/test</span> folder. Wait a minute! You never said anything about creating a controller. That&#8217;s one of the cool things about Wheels. Even without a controller, it will still show you the view page, and things still work!</p>
<p>Now, go back to the test page at <span style="color:#993300;">http://localhost/index.cfm/test</span>. If everything is working, you should get an email message. If it&#8217;s not working, you can put other stuff in your test page. Try these out:</p>
<ul>
<li>&lt;cfdump var=&#8221;#params#&#8221;&gt; will show you the params structure with your actions, controller, data you&#8217;re passing, etc.</li>
<li>&lt;cfdump var=&#8221;#wheels#&#8221;&gt; will show information on your filters.</li>
<li>&lt;cfdump var=&#8221;#application.wheels#&#8221;&gt; will show all the wheels settings, functions, routes &#8212; All kinds of cool things.</li>
</ul>
<p>Now sendEmail() is a little trickier. It uses ColdFusion&#8217;s &lt;cfmail&gt; tag. Put this in your /views/test/index.cfm file:</p>
<pre>
<div style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right:1px solid #9F9F9F;font:normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="cfm codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfmail</span> <span style="color:#0000FF;">from</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"me@mydomain.com"</span></span><br />
<span style="color:#333333;"> &nbsp; &nbsp;<span style="color:#0000FF;">to</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"me@mydomain.com"</span></span><br />
<span style="color:#333333;"> &nbsp; &nbsp;subject<span style="color:#0000FF;">=</span><span style="color:#009900;">"Test Message"</span><span style="color:#0000FF;">&gt;</span></span><br />
&nbsp; This is a test<br />
<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#990000;font-weight:bold;">cfmail</span><span style="color:#0000FF;">&gt;</span></span></div></td></tr></tbody></table></div>
</pre>
<p>If this won&#8217;t work, then it&#8217;s your server configuration, not Wheels. You may have to specify your server name or login information. That&#8217;s pretty easy, too. Just put the following in your config/settings:</p>
<pre>
<div style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right:1px solid #9F9F9F;font:normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="cfm codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfset</span></span><br />
<span style="color:#333333;">&nbsp; set<span style="color:#0000FF;">&#40;</span>functionName<span style="color:#0000FF;">=</span><span style="color:#009900;">"sendEmail"</span>,</span><br />
<span style="color:#333333;">&nbsp; server<span style="color:#0000FF;">=</span><span style="color:#009900;">"yourServer"</span>,</span><br />
<span style="color:#333333;">&nbsp; <span style="color:#0000FF;">username</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"yourUsername"</span>,</span><br />
<span style="color:#333333;">&nbsp; <span style="color:#0000FF;">password</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"yourPassword"</span><span style="color:#0000FF;">&#41;</span></span><br />
<span style="color:#333333;"><span style="color:#0000FF;">&gt;</span></span></div></td></tr></tbody></table></div>
</pre>
<p>I hope this helps!</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/8hR6dyDstMQ" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CF Wheels ORM Fun!!!</title>
         <link>http://www.cfblogworm.com/post.cfm/cf-wheels-orm-fun</link>
         <description>&lt;p&gt;&lt;a rel="nofollow" title="CF Wheels" target="_blank" href="http://cfwheels.org/"&gt;&lt;img style="border:0pt none;margin:1px;vertical-align:top;float:left;" alt="CF Wheels Logo" width="93" height="121"/&gt;&lt;/a&gt;Today I wanted to have some fun, so I decided to check out the CF Wheels Framework inspired by Ruby on Rails. I've never used Ruby on Rails before, but this framework is pretty nice. It took me all of about ten minutes to have a default page up and running + diplaying data from my model. I wanted to demonstrate just how easy it is to populate tabular data using the framework. &lt;/p&gt;
&lt;p&gt;If you haven't already, you need to download the framework from &lt;a rel="nofollow" title="CF Wheels" target="_blank" href="http://cfwheels.org/"&gt;cfwheels.org&lt;/a&gt;, then extract the zipped file into a folder of you're choosing. The first time you run the application, you should see a CF Wheels Intro page. I'm not going to go over any installation or boilerplate stuff; you can find everything you at &lt;a rel="nofollow" title="CF Wheels" target="_blank" href="http://cfwheels.org/"&gt;cfwheels.org&lt;/a&gt;; they have some great video tutorials. &lt;/p&gt;
&lt;p&gt;The first thing I did was create my database, it just includes a single table for now:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Database Design" width="359" height="271"/&gt;&lt;/p&gt;
&lt;p&gt;CF Wheels is convention based, so the database name needs to be plural. We need to do this, so Wheels can properly setup mappings between our database and model. (just wanted to point out that this not a requirement, you can override pretty much all the default settings)&lt;/p&gt;
&lt;p&gt;Let jump into some code: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Setting up our datasource name (config/settings.cfm)&lt;/li&gt;
&lt;p style="padding-left:60px;"&gt;&amp;lt;cfset set(dataSourceName="dsnPractice") /&amp;gt;&lt;/p&gt;
&lt;li&gt;Setting up our model (model/[YourCFC.cfc])&lt;/li&gt;
&lt;p style="padding-left:60px;"&gt;As you can see in the example below, I didn't follow all of the conventions for Wheels, so I had to override the default properties for my table name . I also set a property for my column name, just to show you that you can override default settings. If you had more than one table and some relationships, you would also define those in here using &lt;a rel="nofollow" title="CF Wheels Documentation" target="_blank" href="http://cfwheels.org/docs/chapter/associations"&gt;associations&lt;/a&gt;.&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&amp;lt;cfcomponent extends="model" output="false"&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;cffunction name="init"&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;cfset table("ParlayStats_MLBSchedule") /&amp;gt;&lt;br /&gt; &amp;lt;cfset property(name="scheduleID", column="scheduleID") /&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;/cffunction&amp;gt;&lt;br /&gt; &lt;br /&gt;&amp;lt;/cfcomponent&amp;gt;&lt;/p&gt;
&lt;li&gt;Connecting you're model to you're controller (controllers/[YourController.cfc])&lt;/li&gt;
&lt;p style="padding-left:60px;"&gt;So to get all the records back from my model, we would call model("schedule").findAll(). There are a ton of built in functions for displaying records anyway you like. You can find those methods &lt;a rel="nofollow" title="CF Wheels Documentation" target="_blank" href="http://cfwheels.org/docs/chapter/reading-records"&gt;here&lt;/a&gt;. I also would like to point out that you should have a controller for each folder inside of you're views directory. Mine is setup like so; views/external/home.cfm. So I have a controller named External with a home function inside of it. Everything that I set in my controller + method home will be available inside the home view:&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&lt;img alt="File Structure" width="182" height="456"/&gt;&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&amp;lt;cfcomponent extends="controller" output="true"&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;cffunction name="home"&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;cfset scheduleRow = 1 /&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;cfset title = "Parlay Stats"&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;cfset scheduleQry = model("schedule").findAll() /&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/cffunction&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/cfcomponent&amp;gt;&lt;/p&gt;
&lt;li&gt;Connecting our view to our controller (views/[YourView.cfm])&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="padding-left:60px;"&gt;In our view we would want to make sure to cfparam the query being passed to it, and then just output those records in a cfloop.&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&amp;lt;cfparam name="scheduleQry" type="query" /&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&amp;lt;dl class="schedule"&amp;gt;&lt;br /&gt; &amp;lt;dt&amp;gt;Giants Schedule&amp;lt;/dt&amp;gt;&lt;br /&gt; &amp;lt;cfloop query="scheduleClass"&amp;gt;&lt;br /&gt; &amp;lt;cfoutput&amp;gt;&lt;br /&gt; &amp;lt;cfif #scheduleRow# mod 2&amp;gt;&lt;br /&gt; &amp;lt;dd class="even"&amp;gt;&amp;lt;a href=""&amp;gt;#scheduleQry.gameNames#&amp;lt;/a&amp;gt;&amp;lt;span&amp;gt;#lsDateFormat(scheduleQry.startDates,'dd mmm yyyy')#&amp;lt;/span&amp;gt;&amp;lt;/dd&amp;gt;&lt;br /&gt; &amp;lt;cfelse&amp;gt;&lt;br /&gt; &amp;lt;dd&amp;gt;&amp;lt;a href=""&amp;gt;#scheduleQry.gameNames#&amp;lt;/a&amp;gt;&amp;lt;span&amp;gt;#lsDateFormat(scheduleQry.startDates,'dd mmm yyyy')#&amp;lt;/span&amp;gt;&amp;lt;/dd&amp;gt;&lt;br /&gt; &amp;lt;/cfif&amp;gt;&lt;br /&gt; &amp;lt;cfset scheduleRow = #scheduleRow# + 1 /&amp;gt;&lt;br /&gt; &amp;lt;/cfoutput&amp;gt;&lt;br /&gt; &amp;lt;/cfloop&amp;gt;&lt;br /&gt; &amp;lt;/dl&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;Final Result:&lt;/p&gt;
&lt;p style="padding-left:60px;"&gt;&lt;img style="float:left;" alt="Tabular Data" width="372" height="257"/&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/NNBIaa6kp4I" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.cfblogworm.com/post.cfm/cf-wheels-orm-fun</guid>
         <pubDate>Sun, 21 Feb 2010 18:21:56 -0800</pubDate>
      </item>
      <item>
         <title>Using Partials In CFWheels To Keep DRY</title>
         <link>http://www.angry-fly.com/post.cfm/using-partials-in-cfwheels-to-keep-dry</link>
         <description>&lt;p&gt;One of the things I like about &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org"&gt;CFWheels&lt;/a&gt; is that its based on sensible conventions. If you follow these conventions, they can really save you a ton of time writing boiler-plate code as well as configuration. Working synergistically with these conventions are a lot of helper methods that will also reduce the amount of code you have to write as well as keeping your application &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself"&gt;DRY (Dont Repeat Yourself)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am working on some new features for &lt;a rel="nofollow" target="_blank" href="http://splashcms.com"&gt;SplashCMS&lt;/a&gt; and ran into a situation that helped clean up quite a bit of code in some of my views and I thought it warranted a little example to show how nice this feature really is.&lt;/p&gt;
&lt;p&gt;I have several places where I want to display a list of snippets in this application. Normally you would just write this code in each of the views that display the listing:&lt;/p&gt;
&lt;h3&gt;Snippets.cfc (controller)&lt;/h3&gt;
&lt;p&gt;
&lt;p&gt;&lt;pre class="brush: cf"&gt; &amp;lt;cffunction name="index"&amp;gt; &amp;lt;cfset snippets = model('snippet').findAll(order="name")&amp;gt; &amp;lt;/cffunction&amp;gt; &lt;/pre&gt;&lt;/p&gt;

&lt;h3&gt;index.cfm&lt;/h3&gt;
&lt;p&gt;
&lt;p&gt;&lt;pre class="brush: cf"&gt; &amp;lt;table&amp;gt; &amp;lt;cfoutput query="snippets"&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;#linkTo(text="#name#", route="edit_snippet_path", key="#id#", class="snippet")#&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;#linkTo(text='#imageTag("remove.png")#', route='delete_snippet_path', key="#id#", confirm='Are you sure?')#&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/cfoutput&amp;gt; &amp;lt;/table&amp;gt; &lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Not really a big deal I know. Pretty simple code to display a small list in a table. But consider this, if you do this 2 or 3 times for each different type of list you have, that could really start to get unruly in a hurry. So to help us keep our views as DRY as possible, we can leverage a feature in CFWheels called partials.&lt;/p&gt;
&lt;p&gt;Partials can best be described as CFINCLUDE on steroids. They work exactly like a CFINCLUDE in their simplest form but, are pretty cool in the fact that they can be as simple or complex in functionality as you need. In order to keep things as simple as possible for this post we will simply look at how using a Wheels Partial over a CFINCLUDE is beneficial for our situation and will delve further into some of their more powerful features in another post.&lt;/p&gt;
&lt;p&gt;So, in order to keep from repeating ourselves and having as little code as possible in our app, lets look at how we can simplify this. Since we know we are outputting a list of snippets thats returned in our query, we can strip out the code thats used in each view and place it into a partial named the same as our query. By doing this, we are going to take advantage of one of the features of partials that allows us to automatically handle data being passed into it.&lt;/p&gt;
&lt;p&gt;First lets look at the code that makes this happen and then I will explain it further.&lt;/p&gt;
&lt;h3&gt;index.cfm&lt;/h3&gt;
&lt;p&gt;
&lt;p&gt;&lt;pre class="brush: cf"&gt; &amp;lt;table:cf&amp;gt; &amp;lt;cfoutput&amp;gt; #includePartial(snippets)# &amp;lt;/cfoutput&amp;gt; &amp;lt;/table&amp;gt; &lt;/pre&gt;&lt;/p&gt;

&lt;h3&gt;_snippet.cfm&lt;/h3&gt;
&lt;p&gt;
&lt;p&gt;&lt;pre class="brush: cf"&gt; &amp;lt;cfoutput&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;#linkTo(text="#name#", route="edit_snippet_path", key="#id#", class="snippet")#&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;#linkTo(text='#imageTag("remove.png")#', route='delete_snippet_path', key="#id#", confirm='Are you sure?')#&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/cfoutput&amp;gt; &lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Notice in the view file (index.cfm) how we are calling the partial and instead of passing a file name, we are passing the actual query into the includePartial() method. By doing this, we are telling Wheels that we want it to find our partial named _snippet and loop over it once for each record in the query. Pretty nice, right? We are letting Wheels handle looping over the query and including our display code for us. This is much more portable now. Any place we want to display this list, we can simply call the partial and we have only one file with display code to manage the list. This helps to DRY up our code.&lt;/p&gt;
&lt;p&gt;One thing to note. You will notice that Im passing a query named "snippets" plural. However the file Wheels will look for is "_snippet.cfm" singular. Partials are always named starting with an underscore "_" and when Wheels evaluates the query passed into it, it knows we are dealing with a Snippet model and our models are always singular, so the convention is to use singular names for the partials as well. Just think of it like this, the partial is always dealing with only one record at a time, thus its singular.&lt;/p&gt;
&lt;p&gt;I hope this helps explain this really cool feature of partials a bit. In my next post we will expand on this example by demonstrating how CFWheels helps you to use grouping in this same partial.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/3Z65tcj8FOA" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.angry-fly.com/post.cfm/using-partials-in-cfwheels-to-keep-dry</guid>
         <pubDate>Wed, 17 Feb 2010 15:02:52 -0800</pubDate>
      </item>
      <item>
         <title>Buggy curly braces</title>
         <link>http://per.djurner.net/buggy-curly-brackets</link>
         <description>&lt;p&gt;&lt;p&gt;Due to my habit of leaving out curly braces on simple if/else statements a ColdFusion 9 bug hit me today. Have a look at the following code:&lt;/p&gt;
&lt;p&gt;&lt;code&gt; if (0==1)
&amp;nbsp;&amp;nbsp;tmp;
else
&amp;nbsp;&amp;nbsp;aStruct = {}; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;There's no reason that code should fail, right? But it does. When you run it you get an error message saying that "&lt;em&gt;Variable ASTRUCT is undefined&lt;/em&gt;".&lt;/p&gt;
&lt;p&gt;It looks like ColdFusion is misinterpreting the curly braces that declares the struct as being the end of the if/else statement. This is also proven by the fact that you can make the code run by adding proper curly braces to the if/else statement or using StructNew to declare the struct instead of the implicit declaration.&lt;/p&gt;
&lt;p&gt;To make matters worse, this used to work in ColdFusion 8.&lt;/p&gt;
&lt;p&gt;Anyway, off to Adobe to report it...&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://per.djurner.net/buggy-curly-brackets"&gt;Permalink&lt;/a&gt; | &lt;a rel="nofollow" target="_blank" href="http://per.djurner.net/buggy-curly-brackets#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/pGOjnDModPI" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://per.djurner.net/buggy-curly-brackets</guid>
         <pubDate>Mon, 08 Feb 2010 06:35:00 -0800</pubDate>
      </item>
      <item>
         <title>Does exactly what it says on the tin</title>
         <link>http://www.clearcrystalmedia.com/pm/ronseal-test-method-naming/</link>
         <description>&lt;iframe class="embeddedvideo" type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/HA_qxAWCwqI&amp;#38;hl=en_US&amp;#38;fs=1&amp;#38;"&gt;&lt;/iframe&gt;
&lt;p&gt;"Does exactly what it says on the tin."&lt;/p&gt;
&lt;p&gt;I love it. All of our method and function names should do exactly the same.&lt;/p&gt;
&lt;p&gt;Read on for more context and why Andy Bellenie is a genius.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=439</guid>
         <pubDate>Sat, 06 Feb 2010 10:39:57 -0800</pubDate>
         <content:encoded><![CDATA[<p><iframe class="embeddedvideo" type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/HA_qxAWCwqI&amp;hl=en_US&amp;fs=1&amp;"></iframe></p>
<p>&#8220;Does exactly what it says on the tin.&#8221;</p>
<p>I love it. All of our method and function names should do exactly the same.</p>
<p>During a discussion with the <a rel="nofollow" target="_blank" href="http://cfwheels.org/community/core-team">ColdFusion on Wheels core team</a> about the <code><a rel="nofollow" target="_blank" href="http://cfwheels.org/docs/function/valid">valid()</a></code> and <code><a rel="nofollow" target="_blank" href="http://cfwheels.org/docs/function/beforevalidation">beforeValidation()</a></code> methods, <a rel="nofollow" target="_blank" href="http://cfwheels.org/user/profile/24">Andy Bellenie</a> made this remark:</p>
<blockquote><p>My point is that a callback called <code>beforeValidation</code> should run, well, before validation &#8211; not during it. This seems self-evident to me and I&#8217;d have a hard time explaining to anyone why it should work differently.</p></blockquote>
<p>Then he pointed to &#8220;the <a rel="nofollow" title="Ronseal TV Advert - Ronseal Quick Drying Woodstain" target="_blank" href="http://www.youtube.com/watch?v=HA_qxAWCwqI">Ronseal test</a>, the holy grail of method naming.&#8221;</p>
<p>Thanks Andy for the inspiration.</p>  <p class='technorati-tags'>Technorati Tags: <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/best+practices'>best practices</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfwheels'>cfwheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/chris+peters'>chris peters</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/clear+crystal+media'>clear crystal media</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/ColdFusion'>ColdFusion</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/coldfusion+on+wheels'>coldfusion on wheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/development'>development</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/polymorphism'>polymorphism</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/Programming'>Programming</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/web+development'>web development</a></p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/V94nweuI_p4" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>onError Handling for CFWheels and Splash CMS</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/onerror-handling-for-cfwheels-and-splash-cms/</link>
         <description>For most websites it&amp;#8217;s usually a good idea to have error pages that have user-friendly error messages that are styled to look like the rest of the site. Also, you may want to send yourself an eMail when an error happens. Read on to see how to make this work.
For the DonorUp website, I used [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=134</guid>
         <pubDate>Thu, 04 Feb 2010 14:55:48 -0800</pubDate>
         <content:encoded><![CDATA[<p>For most websites it&#8217;s usually a good idea to have error pages that have user-friendly error messages that are styled to look like the rest of the site. Also, you may want to send yourself an eMail when an error happens. Read on to see how to make this work.</p>
<p>For the <a rel="nofollow" title="DonorUp Website" target="_blank" href="http://www.DonorUp.com">DonorUp</a> website, I used CFWheels and the Splash CMS. Once I knew the tricks, it turned out to be really easy to make this work. So, I decided to write a post to explain what you need to know.</p>
<p>Typically, in ColdFusion, you add an onError() method to your Application.cfc file. Wheels gives you various hooks into Application.cfc, but Wheels already has an onError() method. So, you can&#8217;t add another one! Fortunately, Wheels has an easy way to handle most errors.</p>
<h2>How to send error messages from CFWheels</h2>
<p>All you have to do to get Wheels to send error message emails is add the following into your <span style="color:#993300;">/config/settings.cfm</span> file:</p>
<p><span style="color:#993300;">&lt;cfset set(sendEmailOnError = true)&gt;<br />
&lt;cfset set(errorEmailAddress = &#8220;you@yourServer.com&#8221;)&gt;</span></p>
<p>Now, whenever there&#8217;s an error, you&#8217;ll get a really nice email with all the troubleshooting info you&#8217;ll need. Easy!</p>
<h2>How to setup a custom error page in CFWheels or Splash</h2>
<p>As part of its built-in error handling, Wheels runs the file at <span style="color:#993300;">/events/onerror.cfm</span>. Just put a redirect to your error page at the top of onerror.cfm and you&#8217;re done:</p>
<p><span style="color:#993300;">&lt;cfset redirectTo(route=&#8221;viewer&#8221;, slug=&#8221;error-page&#8221;)&gt;</span></p>
<p>In my case, I went into the Splash CMS admin and added a page called Error Page. This way, the page is automatically styled to match the rest of the site. The error page apologizes to the user for the error, and let&#8217;s them know I am going to fix it!</p>
<p>When Wheels does its error handling, it will run /events/onerror.cfm, and the redirectTo() will send them to my error page! If you aren&#8217;t running Splash, you could just use the other arguments of <a rel="nofollow" title="redirectTo() Documentation" target="_blank" href="http://cfwheels.org/docs/function/redirectto">redirectTo() </a>to send them to any controller and action.</p>
<p>You can also put your own HTML or CFML code in onerror.cfm, but I like doing it this way better as it uses all the layouts and styling of my site!</p>
<p>Please leave me a comment if you like this approach or have other ideas!</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/Caj5EjYV68Y" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>YM_Gravatar 0.2</title>
         <link>http://gaclabs.com/2010/01/ym_gravatar-0-2</link>
         <description>I just now found an email that Chris Peters sent me about my Gravatar plugin back on 12/15/2009. He said the main thing holding him back from using the plugin was he couldn&amp;#8217;t pass additional arguments to the &amp;#60;img&amp;#62; tag. Based on his input and suggestions, I have modified the Gravatar plugin where you can [...]</description>
         <guid isPermaLink="false">http://gaclabs.com/?p=99</guid>
         <pubDate>Wed, 20 Jan 2010 07:34:52 -0800</pubDate>
         <content:encoded><![CDATA[<p>I just now found an email that <a rel="nofollow" target="_blank" href="http://www.clearcrystalmedia.com/pm/">Chris Peters</a> sent me about my Gravatar plugin back on 12/15/2009. He said the main thing holding him back from using the plugin was he couldn&#8217;t pass additional arguments to the &lt;img&gt; tag. Based on his input and suggestions, I have modified the Gravatar plugin where you can do just that.</p>
<p>Thanks Chris!</p>
<p><a rel="nofollow" target="_blank" href="http://gaclabs.com/projects/wheels-plugins/ym_gravatar">http://gaclabs.com/projects/wheels-plugins/ym_gravatar</a></p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/41UtGVSnx-8" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>DefaultScope 0.6.2 released</title>
         <link>http://illuminerdi.com/2009/12/defaultscope-0-6-2-released/</link>
         <description>DefaultScope plugin 0.6.2 has been released!
* &amp;#60;http://cfwheels.org/plugins/listing/23&amp;#62;
* &amp;#60;http://github.com/illuminerdi/DefaultScope&amp;#62;
The DefaultScope plugin adds the ability to set defaults for the findAll() method on a per-Model basis.
Changes:
### 0.6.2 / 2009.12.19
* 1 minor enhancement:
* fix for DefaultScope causing issues with the calculations methods (andybellenie)
Big thanks to Andy for identifying this issue and supplying patches for it.</description>
         <guid isPermaLink="false">http://illuminerdi.com/?p=426</guid>
         <pubDate>Sat, 19 Dec 2009 14:14:11 -0800</pubDate>
         <content:encoded><![CDATA[<p>DefaultScope plugin 0.6.2 has been released!</p>
<p>* &lt;<a rel="nofollow" target="_blank" href="http://cfwheels.org/plugins/listing/23">http://cfwheels.org/plugins/listing/23</a>&gt;<br />
* &lt;<a rel="nofollow" target="_blank" href="http://cfwheels.org/plugins/listing/23">http://github.com/illuminerdi/DefaultScope</a>&gt;</p>
<p>The DefaultScope plugin adds the ability to set defaults for the findAll() method on a per-Model basis.</p>
<p>Changes:</p>
<p>### 0.6.2 / 2009.12.19</p>
<p>* 1 minor enhancement:</p>
<p>* fix for DefaultScope causing issues with the calculations methods (andybellenie)</p>
<p>Big thanks to Andy for identifying this issue and supplying patches for it.</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/GKhhdMlxoQ8" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CFWheels and ORM</title>
         <link>http://www.akbarsait.com/blog/index.cfm/2009/12/14/CFWheels-and-ORM</link>
         <description>Object Relation mapping is one of the key feature in CFWheels. CFWheels makes things easier to start using ORM in your applications. The ORM configuration in CFWheels is implemented by creating a mapping between a database table and ColdFusion compon... [More]&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/OiyRMkQik3U" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.akbarsait.com/blog/index.cfm/2009/12/14/CFWheels-and-ORM</guid>
         <pubDate>Mon, 14 Dec 2009 21:28:00 -0800</pubDate>
      </item>
      <item>
         <title>DefaultScope plugin 0.5 released</title>
         <link>http://illuminerdi.com/2009/12/defaultscope-plugin-0-5-released/</link>
         <description>The DefaultScope plugin 0.5 has been released!
http://cfwheels.org/plugins/listing/23
http://github.com/illuminerdi/DefaultScope
The DefaultScope plugin adds the same functionality to Wheels found in Rails&amp;#8217; ActiveRecord::Base#default_scope. Go ahead and check the documentation on either the Github or CFWheels plugin pages.
Features:
* defaultScope() takes all of the same options as findAll() and stores them for a specific model
* findAll() now pulls in defaultScope values [...]</description>
         <guid isPermaLink="false">http://illuminerdi.com/?p=422</guid>
         <pubDate>Mon, 07 Dec 2009 22:25:23 -0800</pubDate>
         <content:encoded><![CDATA[<p>The DefaultScope plugin 0.5 has been released!</p>
<p><a rel="nofollow" target="_blank" href="http://cfwheels.org/plugins/listing/23">http://cfwheels.org/plugins/listing/23</a><br />
<a rel="nofollow" target="_blank" href="http://github.com/illuminerdi/DefaultScope">http://github.com/illuminerdi/DefaultScope</a></p>
<p>The DefaultScope plugin adds the same functionality to Wheels found in Rails&#8217; ActiveRecord::Base#default_scope. Go ahead and check the documentation on either the Github or CFWheels plugin pages.</p>
<div>Features:<br />
* defaultScope() takes all of the same options as findAll() and stores them for a specific model<br />
* findAll() now pulls in defaultScope values and uses them if not manually overridden
<p>This is my first plugin and I probably did something wrong somewhere. Thanks to <a rel="nofollow" target="_blank" href="http://iamjamesgibson.com">James Gibson</a> for helping me tackle a particularly odd issue with CF8. Please try it out, and let me know if you have any problems or suggestions. It&#8217;s pretty bare-bones, but it does what it says.</p>
<p>Also, in an odd twist, my first plugin is the 23rd listed on <a rel="nofollow" target="_blank" href="http://cfwheels.org">CFWheels</a>, which happens to be my favorite number. Weird.</div><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/NwHNC4XrwHA" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>My first cfwheels plugin - ioc interface</title>
         <link>http://www.andreacfm.com/post.cfm/my-first-cfwheels-plugin-ioc-interface</link>
         <description>&lt;p&gt;&lt;img style="float:left;margin:10px;" src="http://www.andreacfm.com/assets/content//logos/cfwheels-logo.png" alt="" width="93" height="121"/&gt;I decided to play around with &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org"&gt;cfwheels&lt;/a&gt; cause I was amazed by some examples I saw around and I have to admit is good fun. &lt;/p&gt;
&lt;p&gt;After 1 hr testing I realized that no ioc support is build into cfwheels and ..... I really cannot live with no Ioc container available at any time so I decided to add a plugin for managing a beanFactory into cfwheels.&lt;/p&gt;
&lt;p&gt;Probably is not the best cfwheel plugin ever written but was very easy and painless. While I tend to be very OO guy I am amazed by conventions in last period ( I am also playing with Sean Corfield &lt;a rel="nofollow" target="_blank" href="http://fw1.riaforge.org/"&gt;FW1&lt;/a&gt; ). While I am also an happy user of Coldbox and ModelGlue I find that sometimes frameworks added complexity also to easy tasks. From here my desire to look into frameworks that make of conventions their core basement.&lt;/p&gt;
&lt;p&gt;In my mind conventions means less code in default situations and about this cfwheels and fw1 at the moment are the best. Btw I also think that for a more complex task Coldbox really has something more to help development of more advanced applications.&lt;/p&gt;
&lt;p&gt;You can find the plugin &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org/plugins/listing/22"&gt;here&lt;/a&gt; to play with it and have a look to &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org"&gt;cfwheels&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/cuDsvWFT68M" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.andreacfm.com/post.cfm/my-first-cfwheels-plugin-ioc-interface</guid>
         <pubDate>Mon, 07 Dec 2009 07:24:48 -0800</pubDate>
      </item>
      <item>
         <title>Introducing WordArt for ColdFusion</title>
         <link>http://www.codecurry.com/2009/12/introducing-wordart-for-coldfusion.html</link>
         <author>noreply@blogger.com (Sameer Gupta)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-864954454752009521.post-7788051564124740494</guid>
         <pubDate>Tue, 01 Dec 2009 05:19:00 -0800</pubDate>
      <description>&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/5qJTcS7if3g" height="1" width="1"/&gt;</description></item>
      <item>
         <title>Apache Rewrites for Subfolder Install of CFWheels</title>
         <link>http://nagpals.com/blog/post.cfm/cfwheels-subfolder-rewrites</link>
         <description>&lt;p&gt;&lt;img style="float:right;" alt="CFWheels" width="93" height="121"/&gt;&lt;/p&gt;
&lt;p&gt;By default the CFWheels framework and application is installed in the webroot.&lt;/p&gt;
&lt;p&gt;But if you want to install it in a subfolder in the webroot, you need to change the rewrites slightly.&lt;/p&gt;
&lt;p&gt;I use the following and it works quite well. &lt;/p&gt;
&lt;p&gt;In the example below, I have a server called hello.&lt;span class="monospace"&gt;cfwheels.local&lt;/span&gt;, and it points to a folder under the webroot called &lt;span class="monospace"&gt;hello&lt;/span&gt;. &lt;/p&gt;
&lt;pre class="cf"&gt; ServerName hello.cfwheels.local RewriteEngine On RewriteOptions Inherit RewriteCond %{REQUEST_URI} ^.*/(flashservices|flex2gateway|railo-context|robots.txt)($|/.*$) [NC] RewriteRule ^(.*)$ http://127.0.0.1:8080/$1 [P,L] RewriteCond %{REQUEST_URI} ^.*/(files|images|javascripts|miscellaneous|stylesheets|plugins|sitemap.xml|rewrite.cfm)($|/.*$) [NC] RewriteRule ^(.*)$ http://127.0.0.1:8080/hello$1 [P,L] RewriteRule ^(.*)$ http://127.0.0.1:8080/hello/rewrite.cfm$1 [P,L] RewriteRule ^/(.*)$ http://127.0.0.1:8080/hello/rewrite.cfm/$1 [P,L] ProxyPassReverse / http://127.0.0.1:8080/hello/rewrite.cfm/ ProxyPreserveHost on &lt;/pre&gt;
&lt;p&gt;If you think there is a better way to accomplish this, please drop in a line.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/sU-P34BUC2I" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://nagpals.com/blog/post.cfm/cfwheels-subfolder-rewrites</guid>
         <pubDate>Mon, 30 Nov 2009 10:36:22 -0800</pubDate>
      </item>
      <item>
         <title>CfWheels now at version 1.0 – congratulations!</title>
         <link>http://www.webnibbles.co.uk/cfwheels-now-at-version-1-0-congratulations/</link>
         <description>CfWheels &amp;#8211; my framework of choice for coldfusion has finally been expunged from release candidate status!
CfWheels is a full-stack framework with some quite strong opinions on code organisation and layout. This is not a bad thing at all, if you do things the wheels way, it makes your life easier.
Built into the concept of the [...]</description>
         <guid isPermaLink="false">http://www.webnibbles.co.uk/2009/11/29/cfwheels-now-at-version-1-0-congratulations/</guid>
         <pubDate>Sun, 29 Nov 2009 14:37:59 -0800</pubDate>
         <content:encoded><![CDATA[<p><a rel="nofollow"
 target="_blank" href="http://cfwheels.org/">CfWheels</a> &#8211; my framework of choice for coldfusion has finally been expunged from release candidate status!</p><p>CfWheels is a full-stack framework with some quite strong opinions on code organisation and layout. This is not a bad thing at all, if you do things the wheels way, it makes your life easier.</p><p>Built into the concept of the framework are 3 core pieces of ideology that will make your life easier. When i say built in, i really mean baked in as the level of thought these interactions have had is quite surprising. These features are:</p><p><a rel="nofollow"
 target="_blank" href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM</a> &#8211; Object Relational Management</p><p><a rel="nofollow"
 target="_blank" href="http://en.wikipedia.org/wiki/URL_rewriting">URL Rewriting</a></p><p><a rel="nofollow"
 target="_blank" href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller">MVC</a> &#8211; the Model View Controller ideology for code separation</p><p>Wheels is based on the Ruby on Rails framework, which is widely considered to be a great tool for <a rel="nofollow"
 target="_blank" href="http://en.wikipedia.org/wiki/Rapid_application_development">RAD</a>. Most people who seem to love ruby on rails do so for its speed and ease of use, and there are countless books on this subject. Coldfusion is already a fantastic RAD language, and CfWheels when combined with tools such as Scaffolding can give you a very swift boost into a project.</p><p>Scaffolding allows you to generate controller and views for a table that contain all of the basic functionality you will generally require.</p><p>A quick and dirty example:</p><p>Step 1. Install CfWheels on either Adobe&#8217;s own CF8/9, Railo or BlueDragon.</p><p>Step 2. install the scaffolding plugin by dropping the zip file into the cfwheels plugin folder</p><p>Step 3. Write a simple database table containing the data set you wish to use</p><p>Step 4. Click the scaffolding link at the top of the cfwheels debug information panel</p><p>Step 5. Enter the name of the table</p><p>Step 6. Navigate to the controller (/tablename) and you will see that all the fields are now generated into an input for you, and also basic add/edit/remove functionality exists.</p><p>wow, you just built a fully functional application! While clearly this might not suit every project, it can certainly be a good place to start, and a great introduction into cfwheels.</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/4hquUdq-KsE" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Up and rolling with Git on Snow Leopard</title>
         <link>http://www.clearcrystalmedia.com/pm/git-snow-leopard/</link>
         <description>&lt;p&gt;This morning, I set up a &lt;a rel="nofollow" target="_blank" href="http://github.com/clearcrystalmedia"&gt;GitHub account&lt;/a&gt; so that I could have some public repositories for my &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org/plugins/"&gt;ColdFusion on Wheels plugins&lt;/a&gt;. Feel free to follow me and watch my repositories as I post them up. (Gotta learn how to do that first though!)&lt;/p&gt;
&lt;p&gt;Read on for a summary of how I installed my local copy of Git on Snow Leopard.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=425</guid>
         <pubDate>Sat, 28 Nov 2009 07:34:42 -0800</pubDate>
         <content:encoded><![CDATA[<p>This morning, I set up a <a rel="nofollow" target="_blank" href="http://github.com/clearcrystalmedia">GitHub account</a> so that I could have some public repositories for my <a rel="nofollow" target="_blank" href="http://cfwheels.org/plugins/">ColdFusion on Wheels plugins</a>. Feel free to follow me and watch my repositories as I post them up. (Gotta learn how to do that first though!)</p>
<p>Then came the process of installing Git on Snow Leopard so that my computer can talk to the repository. In my opinion, the Git website could do a better job with their Mac OS X installer (or at least the instructions).</p>
<p>Fortunately, Hivelogic has a great step-by-step on <a rel="nofollow" target="_blank" href="http://hivelogic.com/articles/compiling-git-on-snow-leopard/">installing Git on Snow Leopard</a>. If you&#8217;re running Snow Leopard, I highly recommend doing everything that they say in the post. If they ask you to touch your nose while spinning in circles, do it.</p>
<p>Now on to figuring out how to get my <a rel="nofollow" target="_blank" href="http://cfwheels.org/plugins/listing/19">reCAPTCHA on Wheels</a> plugin into my new repo.</p>  <p class='technorati-tags'>Technorati Tags: <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/ccm'>ccm</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfwheels'>cfwheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/chris+peters'>chris peters</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/clear+crystal+media'>clear crystal media</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/coldfusion+on+wheels'>coldfusion on wheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/Git'>Git</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/github'>github</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/install'>install</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/installation'>installation</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/polymorphism'>polymorphism</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/scm'>scm</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/version+control'>version control</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/web+development'>web development</a></p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/5N8vFlQODOA" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Search CFWheels Documentation</title>
         <link>http://nagpals.com/blog/post.cfm/search-cfwheels-documentation</link>
         <description>&lt;p&gt;&lt;img style="float:right;" alt="" width="93" height="121"/&gt;&lt;/p&gt;
&lt;p&gt;CFWheels has excellent documentation. Well organized, sufficiently detailed, well presented. &lt;/p&gt;
&lt;p&gt;Something that is missing at the moment, and is on the list of things to-do for the CFWheels team, is to add a search feature to the docs.&lt;/p&gt;
&lt;p&gt;Till the time that feature is implemented, I created a Google custom search for CFWheels docs.&lt;/p&gt;
&lt;p&gt;I just find that after one has understood the basics and has started building an application, there is a need to be able to quickly search for information rather than go through listing of topics to figure out where can one find a piece of information.&lt;/p&gt;
&lt;p&gt;To that end, a search interface proves very useful.&lt;/p&gt;
&lt;p&gt;So, if you want to search CFWheels documentation till the time a formal search is put on the site, you are more than welcome to use the custom search that I use.&lt;/p&gt;
&lt;p&gt;You can access the search at: &lt;a rel="nofollow" title="CFWheels Documentation Search"&gt;http://nagpals.com/utils/cfwheels/search/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or use the search box below to search:&lt;/p&gt;
&lt;div id="cse" style="width:100%;"&gt;Loading&lt;/div&gt;
&lt;p&gt;
 
 
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/XkX5RePl16k" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://nagpals.com/blog/post.cfm/search-cfwheels-documentation</guid>
         <pubDate>Fri, 27 Nov 2009 13:15:41 -0800</pubDate>
      </item>
      <item>
         <title>CFWheels - Rediscovering beauty in CF Code</title>
         <link>http://nagpals.com/blog/post.cfm/cfwheels-rediscovering-beauty-in-cf-code</link>
         <description>&lt;p&gt;&lt;img style="float:right;" alt="" width="93" height="121"/&gt;&lt;/p&gt;
&lt;p&gt;I haven't been blogging much of late. Lots of traveling and work
kept me away.&lt;/p&gt;
&lt;p&gt;During this time, however, I have somehow managed to find time to
play with CFWheels. And I must say it has been a pleasure working
with it. &lt;/p&gt;
&lt;p&gt;I've dabbled with Ruby on Rails and Grails in the past and have
always lamented about the fact that the frameworks in CF do not
possess the same beauty and elegance.&lt;/p&gt;
&lt;p&gt;Well, CFWheels changes all that. &lt;/p&gt;
&lt;p&gt;If you ask me, I'd say that all
CF developers should at least try it out to once to see all that it
has to offer.&lt;/p&gt;
&lt;p&gt;Personally, I like they way the MVC architecture is implemented in
CFWheels -- pretty much like Rails/Grails. Plus domain modeling and
URL rewriting using routes -- leading to very nice, readable URL. And
not to mention time-saver features like view helpers that let you
build nice views and forms and add validation to them. And also the
plugins... And also the provision for different environment like
design/development/test/production.&lt;/p&gt;
&lt;p&gt;I've tried it on Railo and it is blazing fast. I'm sure it would
be as quick on CF9.&lt;/p&gt;
&lt;p&gt;I could go on and on. But it is simpler for you to simply head
over &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org/"&gt;CFWheels&lt;/a&gt; to discover the
magic.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/eoj6VqH0HeM" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://nagpals.com/blog/post.cfm/cfwheels-rediscovering-beauty-in-cf-code</guid>
         <pubDate>Fri, 27 Nov 2009 12:57:30 -0800</pubDate>
      </item>
      <item>
         <title>Installing CFWheels 1.0</title>
         <link>http://www.akbarsait.com/blog/index.cfm/2009/11/24/Installing-CFWheels-10</link>
         <description>ColdFusion on Wheels 1.0 a production ready version hits the web today. To be frank I haven't tried it before and just want to understand its specific features over the other frameworks available for ColdFusion. So I have downloaded and installed it ... [More]&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/PaeNB0wpCFQ" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.akbarsait.com/blog/index.cfm/2009/11/24/Installing-CFWheels-10</guid>
         <pubDate>Tue, 24 Nov 2009 16:32:00 -0800</pubDate>
      </item>
      <item>
         <title>Go get it…. CFWheels hits 1.0!!!!</title>
         <link>http://rip747.wordpress.com/2009/11/24/go-get-it-cfwheels-hits-1-0/</link>
         <description>After many long months and some great dedication from all those involved, today CFWheels hit the 1.0 milestone. &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=747&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=747</guid>
         <pubDate>Tue, 24 Nov 2009 04:48:45 -0800</pubDate>
         <content:encoded><![CDATA[<p><a rel="nofollow" target="_blank" href="http://cfwheels.org/"></a>After many long months and some great dedication from all those involved, today <a rel="nofollow" target="_blank" href="http://cfwheels.org/">CFWheels</a> hit the 1.0 milestone.</p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/747/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/747/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/747/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/747/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/747/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=747&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/LWvatGbcXYo" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
      </item>
      <item>
         <title>Using extra CFC attributes for documentation</title>
         <link>http://www.clearcrystalmedia.com/pm/extra-cfc-attributes-documentation/</link>
         <description>&lt;p&gt;For the &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org/docs"&gt;ColdFusion on Wheels API documentation&lt;/a&gt;, we chose to do something a little unconventional (but pretty cool). Using some extra CFC attributes and CFML 's &lt;code&gt;&lt;a rel="nofollow" target="_blank" href="http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7dd9.html"&gt;GetMetaData()&lt;/a&gt;&lt;/code&gt; function, we wrote a pretty cool documentation parser for ColdFusion on Wheels.&lt;/p&gt;
&lt;p&gt;Read on for an example of what we did.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=412</guid>
         <pubDate>Thu, 12 Nov 2009 13:57:02 -0800</pubDate>
         <content:encoded><![CDATA[<p>For the <a rel="nofollow" target="_blank" href="http://cfwheels.org/docs">ColdFusion on Wheels API documentation</a>, we chose to do something a little unconventional (but pretty cool). Instead of trying to write or use a comment parser for our documentation, we just added additional attributes to our CFC s&#8217; <code>&lt;cffunction&gt;</code> tags.</p>
<p>Look at this example for the <a rel="nofollow" target="_blank" href="http://cfwheels.org/docs/function/autolink"><code>autoLink()</code></a> view helper:</p> <div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cffunction</span> <span style="color:#0000FF;">name</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"autoLink"</span> returntype<span style="color:#0000FF;">=</span><span style="color:#009900;">"string"</span> <span style="color:#0000FF;">access</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"public"</span> output<span style="color:#0000FF;">=</span><span style="color:#009900;">"false"</span> <span style="color:#0000FF;">hint</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"Turns all URLs and e-mail addresses into clickable links."</span></span>
<span style="color:#333333;"> examples<span style="color:#0000FF;">=</span></span>
<span style="color:#333333;"> <span style="color:#009900;">'</span>
<span style="color:#333333;"> ##autoLink("Download Wheels from http://cfwheels.org/download")##</span>
<span style="color:#333333;"> -&gt; Download Wheels from &lt;a href="http://cfwheels.org/download"&gt;http://cfwheels.org/download&lt;/a&gt;</span>
&nbsp;
<span style="color:#333333;"> ##autoLink("Email us at info@cfwheels.org")##</span>
<span style="color:#333333;"> -&gt; Email us at &lt;a href="mailto:info@cfwheels.org"&gt;info@cfwheels.org&lt;/a&gt;</span>
<span style="color:#333333;"> '</span></span>
<span style="color:#333333;"> categories<span style="color:#0000FF;">=</span><span style="color:#009900;">"view-helper,text"</span> functions<span style="color:#0000FF;">=</span><span style="color:#009900;">"excerpt,highlight,simpleFormat,titleize,truncate"</span></span>
<span style="color:#333333;"><span style="color:#0000FF;">&gt;</span></span> <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfargument</span> <span style="color:#0000FF;">name</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"text"</span> <span style="color:#0000FF;">type</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"string"</span> <span style="color:#0000FF;">required</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"true"</span> <span style="color:#0000FF;">hint</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"The text to create links in."</span><span style="color:#0000FF;">&gt;</span></span> <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfargument</span> <span style="color:#0000FF;">name</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"link"</span> <span style="color:#0000FF;">type</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"string"</span> <span style="color:#0000FF;">required</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"false"</span> <span style="color:#0000FF;">default</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"all"</span> <span style="color:#0000FF;">hint</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"Whether to link URLs, email addresses or both. Possible values are: `all` (default), `URLs` and `emailAddresses`."</span><span style="color:#0000FF;">&gt;</span></span>
&nbsp; <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfscript</span><span style="color:#0000FF;">&gt;</span></span> var loc = {}; loc.urlRegex = "(?ix)([^(url=)|(href=)'""])(((https?)://([^:]+&#92;:[^@]*@)?)([&#92;d&#92;w&#92;-]+&#92;.)?[&#92;w&#92;d&#92;-&#92;.]+&#92;.(com|net|org|info|biz|tv|co&#92;.uk|de|ro|it)(( / [&#92;w&#92;d&#92;.&#92;-@%&#92;&#92;&#92;/:]* )+)?(&#92;?[&#92;w&#92;d&#92;?%,&#92;.&#92;/&#92;##!@:=&#92;+~_&#92;-&amp;amp;]*(?<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span>!<span style="color:#0000FF;">&#91;</span>&#92;.<span style="color:#0000FF;">&#93;</span><span style="color:#0000FF;">&#41;</span><span style="color:#0000FF;">&#41;</span>?<span style="color:#0000FF;">&#41;</span><span style="color:#009900;">";</span>
<span style="color:#333333;"> loc.mailRegex = "</span><span style="color:#0000FF;">&#40;</span><span style="color:#0000FF;">&#40;</span><span style="color:#0000FF;">&#91;</span>^@&#92;s<span style="color:#0000FF;">&#93;</span>+<span style="color:#0000FF;">&#41;</span>@<span style="color:#0000FF;">&#40;</span><span style="color:#0000FF;">&#40;</span>?:<span style="color:#0000FF;">&#91;</span>-a-z0-<span style="color:#FF0000;">9</span><span style="color:#0000FF;">&#93;</span>+&#92;.<span style="color:#0000FF;">&#41;</span>+<span style="color:#0000FF;">&#91;</span>a-z<span style="color:#0000FF;">&#93;</span><span style="color:#0000FF;">&#123;</span><span style="color:#FF0000;">2</span>,<span style="color:#0000FF;">&#125;</span><span style="color:#0000FF;">&#41;</span><span style="color:#0000FF;">&#41;</span><span style="color:#009900;">";</span>
<span style="color:#333333;"> loc.returnValue = arguments.text;</span>
<span style="color:#333333;"> if (arguments.link != "</span>emailAddresses<span style="color:#009900;">")</span>
<span style="color:#333333;"> loc.returnValue = loc.returnValue.ReplaceAll(loc.urlRegex, "</span>$<span style="color:#FF0000;">1</span><span style="color:#0000FF;">&lt;</span><span style="color:#000000;font-weight:bold;">a</span> <span style="color:#0000FF;">href</span><span style="color:#0000FF;">=</span><span style="color:#009900;">""</span>$<span style="color:#FF0000;">2</span><span style="color:#009900;">""</span><span style="color:#0000FF;">&gt;</span></span>$2<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#000000;font-weight:bold;">a</span><span style="color:#0000FF;">&gt;</span></span>"); if (arguments.link != "URLs") loc.returnValue = REReplaceNoCase(loc.returnValue, loc.mailRegex, "<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#000000;font-weight:bold;">a</span> <span style="color:#0000FF;">href</span><span style="color:#0000FF;">=</span><span style="color:#009900;">""</span>mailto:&#92;<span style="color:#FF0000;">1</span><span style="color:#009900;">""</span><span style="color:#0000FF;">&gt;</span></span>&#92;1<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#000000;font-weight:bold;">a</span><span style="color:#0000FF;">&gt;</span></span>", "all"); <span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#990000;font-weight:bold;">cfscript</span><span style="color:#0000FF;">&gt;</span></span> <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfreturn</span> loc.returnValue<span style="color:#0000FF;">&gt;</span></span>
&nbsp;
<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#990000;font-weight:bold;">cffunction</span><span style="color:#0000FF;">&gt;</span></span></pre></div></div> <p>It makes the function declarations a little beefier, but the documentation is right there with the code. As you can see, we added <code>examples</code>, <code>categories</code>, and <code>functions</code> attributes to the <code>&lt;cffunction&gt;</code> declaration.</p>
<p>Writing a parser took a little over a week, but it was fairly simple with CFML &#8217;s <code><a rel="nofollow" target="_blank" href="http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7dd9.html">GetMetaData()</a></code> function and some extra business rules.</p>
<p>Here&#8217;s a link to the <a rel="nofollow" target="_blank" href="http://cfwheels.org/docs/function/autolink"><code>autoLink()</code></a> documentation on CFWheels.org so you can see what the output looks like. Everything on that page is generated based on the code above.</p>  <p class='technorati-tags'>Technorati Tags: <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/adobe'>adobe</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/ccm'>ccm</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfml'>cfml</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfwheels'>cfwheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/chris+peters'>chris peters</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/clear+crystal+media'>clear crystal media</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/ColdFusion'>ColdFusion</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/coldfusion+on+wheels'>coldfusion on wheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/polymorphism'>polymorphism</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/railo'>railo</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/web+development'>web development</a></p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/8309nbKrM2I" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CFWheels and Git: Ignoring unpacked plugin directories</title>
         <link>http://rip747.wordpress.com/2009/11/02/cfwheels-and-git-ignoring-unpacked-plugin-directories/</link>
         <description>Just a quick little git and Wheels tip. Most of the time, you might only want to track your plugins .zip file in your repo and ignore the plugin&amp;#8217;s unpacked directory since it&amp;#8217;s pretty much redundant to track both. In order to do this, create a .gitignore file where your .git directory lives. In it [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=729&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=729</guid>
         <pubDate>Mon, 02 Nov 2009 13:48:06 -0800</pubDate>
         <content:encoded><![CDATA[<p>Just a quick little <a rel="nofollow" target="_blank" href="http://www.gitscm.org/">git</a> and <a rel="nofollow" target="_blank" href="http://cfwheels.org/">Wheels</a> tip. Most of the time, you might only want to track your plugins .zip file in your repo and ignore the plugin&#8217;s unpacked directory since it&#8217;s pretty much redundant to track both. In order to do this, create a .gitignore file where your .git directory lives. In it add the following:</p>
<p>plugins/**/*</p>
<p>What that does is essentially tells git to ignore any subdirectories off the main plugin directory.</p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/729/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/729/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/729/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/729/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/729/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=729&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/z9qLreeg1lA" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
      </item>
      <item>
         <title>Wheels spotted in the wild…</title>
         <link>http://rip747.wordpress.com/2009/10/22/cwheels-spotted-in-the-wild/</link>
         <description>UPDATE: CFML syntax highlighting has been add to Pygments as of version 1.3. You can see the closed ticket information here.
If there was one thing that always bugged me about github is the lack of support of CFML syntax highlighting. It seems that CFML never gets any love, but that is about to change! The [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=727&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=727</guid>
         <pubDate>Thu, 22 Oct 2009 13:32:54 -0700</pubDate>
         <content:encoded><![CDATA[<p><strong>UPDATE:</strong> CFML syntax highlighting has been add to Pygments as of version 1.3. You can see the closed ticket information <a rel="nofollow" target="_blank" href="http://dev.pocoo.org/projects/pygments/ticket/424">here</a>.</p>
<p>If there was one thing that always bugged me about <a rel="nofollow" target="_blank" href="http://dev.pocoo.org/projects/pygments/ticket/424">github</a> is the lack of support of CFML syntax highlighting. It seems that CFML never gets any love, but that is about to change! The <a rel="nofollow" target="_blank" href="http://pygments.org/">Pygments</a> project is an open source generic syntax highlighter written in <a rel="nofollow" target="_blank" href="http://www.python.org/">python</a> that has support for a ton of different languages. Now it seems the Pygments is working on CFML syntax highlighting <a rel="nofollow" target="_blank" href="http://dev.pocoo.org/projects/pygments/query?status=assigned&amp;status=new&amp;status=accepted&amp;status=reopened&amp;group=status&amp;milestone=1.2">for their next release</a>!</p>
<p>What does this all have to do with <a rel="nofollow" target="_blank" href="http://cfwheels.org/">Wheels</a> you might ask? Well it seems that the CFML code they are <a rel="nofollow" target="_blank" href="http://dev.pocoo.org/projects/pygments/ticket/424">using as a test bed</a> for the highlighting is none other then the Wheels repo!</p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/727/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/727/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/727/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/727/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/727/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/727/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/727/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/727/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/727/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/727/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=727&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/_FD3KxWmCb8" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
         <category>CFWheels</category>
      </item>
      <item>
         <title>Script-based controllers and models, tag-based views</title>
         <link>http://www.clearcrystalmedia.com/pm/script-controllers-models-tag-views/</link>
         <description>&lt;p&gt;I'm looking forward to playing around with &lt;a rel="nofollow" target="_blank" href="http://www.adobe.com/products/coldfusion/"&gt;ColdFusion 9&lt;/a&gt; when I get some more time here in a month or so. One of the areas that interests me in particular is the ability to write full CFC s in CFScript syntax.&lt;/p&gt;
&lt;p&gt;Read on for what I feel is the perfect blend of CFML features used in the different layers of the &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org/"&gt;ColdFusion on Wheels&lt;/a&gt; framework:&lt;/p&gt;
&lt;ul&gt; &lt;li&gt;Controllers in script syntax&lt;/li&gt; &lt;li&gt;Models in script syntax&lt;/li&gt; &lt;li&gt;Views in tag syntax&lt;/li&gt;
&lt;/ul&gt;</description>
         <guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=404</guid>
         <pubDate>Thu, 22 Oct 2009 12:41:48 -0700</pubDate>
         <content:encoded><![CDATA[<p>I&#8217;m looking forward to playing around with <a rel="nofollow" target="_blank" href="http://www.adobe.com/products/coldfusion/">ColdFusion 9</a> when I get some more time here in a month or so. One of the areas that interests me in particular is the ability to write full CFC s in CFScript syntax.</p>
<p>Think about this scenario in <a rel="nofollow" target="_blank" href="http://cfwheels.org/">ColdFusion on Wheels</a>:</p>
<ul>
<li>Controllers in script syntax</li>
<li>Models in script syntax</li>
<li>Views in tag syntax</li>
</ul>
<p>I like the idea of this, though I&#8217;ll admit that I haven&#8217;t tried it yet. The more data- and logic-heavy parts of the app can be script-driven, while the tag-based syntax can be used with HTML .</p>
<p>Imagine this scenario for a Wheels model class:</p> <div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;">component extends="Model" {
&nbsp; /** @hint Initializes associations and validations */ public function init() { // Associations hasMany("chirps"); // Validations validatesPresenceOf("firstName,lastName,email,gender,urlId"); validatesUniquenessOf("email,urlId"); validatesLengthOf(properties="firstName,lastName", maximum=50); }
&nbsp;
}</pre></div></div> <p>And this for a Wheels controller:</p> <div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;">component extends="Controller" {
&nbsp; /** @hint Shows form for registering for social network. */ public function register() { user = model("user").new(); }
&nbsp; /** @hint Saves registration submission. */ public function create() { user = model("user").new(params.user); user.save();
&nbsp; if(user.hasErrors()) { renderPage(action="register"); } else { flashInsert(success="Thank you for registering for Social Network."); redirectTo(controller="home"); } }
&nbsp;
}</pre></div></div> <p>And then any view logic can be mixed in via tags with all the other HTML tags (right where it belongs).</p> <div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfsetting</span> enablecfoutputonly<span style="color:#0000FF;">=</span><span style="color:#009900;">"true"</span><span style="color:#0000FF;">&gt;</span></span>
&nbsp;
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfparam</span> <span style="color:#0000FF;">name</span><span style="color:#0000FF;">=</span><span style="color:#009900;">"user"</span><span style="color:#0000FF;">&gt;</span></span>
&nbsp;
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfoutput</span><span style="color:#0000FF;">&gt;</span></span>
&nbsp;
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#000000;font-weight:bold;">h1</span><span style="color:#0000FF;">&gt;</span></span>Register for Social Network<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#000000;font-weight:bold;">h1</span><span style="color:#0000FF;">&gt;</span></span>
&nbsp;
#startFormTag(action="create")#
&nbsp;
#textField(label="First Name", objectName="user", property="firstName")#
#textField(label="Last Name", objectName="user", property="lastName")#
#textField(label="Email", objectName="user", property="email")#
&nbsp;
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#000000;font-weight:bold;">fieldset</span><span style="color:#0000FF;">&gt;</span></span> <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#000000;font-weight:bold;">legend</span><span style="color:#0000FF;">&gt;</span></span>Gender<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#000000;font-weight:bold;">legend</span><span style="color:#0000FF;">&gt;</span></span> #radioButton(label="Male", objectName="user", property="gender", tagValue="M")# #radioButton(label="Female", objectName="user", property="gender", tagValue="F")#
<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#000000;font-weight:bold;">fieldset</span><span style="color:#0000FF;">&gt;</span></span>
&nbsp;
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#000000;font-weight:bold;">fieldset</span><span style="color:#0000FF;">&gt;</span></span> <span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#000000;font-weight:bold;">legend</span><span style="color:#0000FF;">&gt;</span></span>Profile Address<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#000000;font-weight:bold;">legend</span><span style="color:#0000FF;">&gt;</span></span> #textField(label="http://<span style="color:#0000FF;">#cgi.script_name#</span>/profile/", objectName="user", property="urlId")#
<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#000000;font-weight:bold;">fieldset</span><span style="color:#0000FF;">&gt;</span></span>
&nbsp;
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#000000;font-weight:bold;">div</span><span style="color:#0000FF;">&gt;</span></span> #submitTag(value="Register Now")#
<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#000000;font-weight:bold;">div</span><span style="color:#0000FF;">&gt;</span></span>
&nbsp;
<span style="color:#0000FF;">#endFormTag<span style="color:#0000FF;">&#40;</span><span style="color:#0000FF;">&#41;</span>#</span>
&nbsp;
<span style="color:#333333;"><span style="color:#0000FF;">&lt;/</span><span style="color:#990000;font-weight:bold;">cfoutput</span><span style="color:#0000FF;">&gt;</span></span>
&nbsp;
<span style="color:#333333;"><span style="color:#0000FF;">&lt;</span><span style="color:#990000;font-weight:bold;">cfsetting</span> enablecfoutputonly<span style="color:#0000FF;">=</span><span style="color:#009900;">"false"</span><span style="color:#0000FF;">&gt;</span></span></pre></div></div> <p>This makes me excited for Railo adoption of script-based CFC s and for time to warp 5 years into the future when script-based CFC s are more widely used in general.</p>  <p class='technorati-tags'>Technorati Tags: <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/ccm'>ccm</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cf'>cf</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cf9'>cf9</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfc'>cfc</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfml'>cfml</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfscript'>cfscript</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfwheels'>cfwheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/chris+peters'>chris peters</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/clear+crystal+media'>clear crystal media</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/ColdFusion'>ColdFusion</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/coldfusion+9'>coldfusion 9</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/coldfusion+on+wheels'>coldfusion on wheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/mvc'>mvc</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/polymorphism'>polymorphism</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/railo'>railo</a></p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/ctzfYvxk1Q4" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Shouldn’t be long now…</title>
         <link>http://rip747.wordpress.com/2009/10/20/shouldnt-be-long-now/</link>
         <description>http://code.google.com/p/cfwheels/source/detail?r=3243 &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=724&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=724</guid>
         <pubDate>Tue, 20 Oct 2009 13:48:34 -0700</pubDate>
         <content:encoded><![CDATA[<p><a rel="nofollow" target="_blank" href="http://code.google.com/p/cfwheels/source/detail?r=3243">http://code.google.com/p/cfwheels/source/detail?r=3243</a></p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/724/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/724/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/724/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/724/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/724/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/724/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/724/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/724/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/724/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/724/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=724&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/NJwkwVO_Arw" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
         <category>CFWheels</category>
      </item>
      <item>
         <title>Wheels is only a hammer</title>
         <link>http://www.clearcrystalmedia.com/pm/wheels-is-only-a-hammer/</link>
         <description>&lt;p&gt;My posting this is a seriously delayed reaction. But I must admit that I was using Wheels as a hammer and trying to treat a problem like a nail when I wrote about &lt;a rel="nofollow" target="_blank" href="http://www.clearcrystalmedia.com/pm/wheels-jquery-partial-form-focus/"&gt;creating a Wheels partial for setting form focus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Read on to see where I went wrong.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.clearcrystalmedia.com/pm/?p=385</guid>
         <pubDate>Thu, 08 Oct 2009 03:49:23 -0700</pubDate>
         <content:encoded><![CDATA[<p>My posting this is a seriously delayed reaction. But I must admit that I was using Wheels as a hammer and trying to treat a problem like a nail when I wrote about <a rel="nofollow" target="_blank" href="http://www.clearcrystalmedia.com/pm/wheels-jquery-partial-form-focus/">creating a Wheels partial for setting form focus</a>.</p>
<p>Stephen came up with a much nicer jQuery-only solution for setting form focus:</p> <div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color:#009900;">&#40;</span>document<span style="color:#009900;">&#41;</span>.<span style="color:#660066;">ready</span><span style="color:#009900;">&#40;</span><span style="color:#003366;font-weight:bold;">function</span><span style="color:#009900;">&#40;</span><span style="color:#009900;">&#41;</span><span style="color:#009900;">&#123;</span> $<span style="color:#009900;">&#40;</span>”.<span style="color:#000066;">focus</span>”<span style="color:#009900;">&#41;</span>.<span style="color:#000066;">focus</span><span style="color:#009900;">&#40;</span><span style="color:#009900;">&#41;</span><span style="color:#339933;">;</span>
<span style="color:#009900;">&#125;</span><span style="color:#009900;">&#41;</span><span style="color:#339933;">;</span></pre></div></div> <p>So now you can set form focus on load by setting that element&#8217;s class to <code>focus</code>. No need to create a Wheels partial and set a variable in your CFML .</p>
<p>In my newbness, I wasn&#8217;t thinking that you could have that <code>$(".focus")</code> hanging there without it applying to something on every page. Now I am schooled.</p>
<p>Thanks Stephen!</p>  <p class='technorati-tags'>Technorati Tags: <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfml'>cfml</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/cfwheels'>cfwheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/ColdFusion'>ColdFusion</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/coldfusion+on+wheels'>coldfusion on wheels</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/html'>html</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/javascript'>javascript</a>, <a rel="nofollow" class='technorati-link' target="_blank" href='http://technorati.com/tag/jQuery'>jQuery</a></p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/HVMd_6nomzM" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Interesting Railo mapping bug</title>
         <link>http://per.djurner.net/interesting-railo-mapping-bug</link>
         <description>&lt;p&gt;&lt;p&gt;During a Wheels debug session with &lt;a rel="nofollow" target="_blank" href="http://rip747.wordpress.com/"&gt;Tony&lt;/a&gt; we discovered a bug in Railo 3.1.1 related to mappings.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Normally when you create an object in Railo it is slow the first time but then lightning fast on subsequent creations of the same object. This applies both to the page request (e.g. if you create multiple objects on the same page it is only slow on the first one) and to the life span of the application (e.g. if you create an object on a page, creating that same object is faster on the second page called).&lt;/p&gt;
&lt;p&gt;When testing the latest version of Wheels on Railo we noticed however that the initial slowness would remain the same across page requests, even though the object had already been created in a previous request. It was like Railo was not able to cache the object information internally and thus had to recreate the object from scratch on every page request (excuse the non-technical lingo here but I have no idea how Railo handles this under the hood).&lt;/p&gt;
&lt;p&gt;After messing around with our test code for a bit we came to the conclusion that this bug appears when&amp;nbsp;you have a CFC that extends another CFC via a mapping. When we used a plain folder in the "extends" attribute it would run just fine.&lt;/p&gt;
&lt;p&gt;We're currently implementing a work-around for this issue and hope to include it in the next Wheels version. If this is something you have problems with right now you can remove the mapping that is set in the "wheels/functions.cfm" file (only do this if you're running your site off the web root though).&lt;/p&gt;
&lt;p&gt;By the way, the &lt;a rel="nofollow" target="_blank" href="http://www.getrailo.com/index.cfm/about-us/railo-team/"&gt;Railo team&lt;/a&gt; has been informed and they say they will have this fixed (or at least made faster) in an upcoming patch.&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://per.djurner.net/interesting-railo-mapping-bug"&gt;Permalink&lt;/a&gt; | &lt;a rel="nofollow" target="_blank" href="http://per.djurner.net/interesting-railo-mapping-bug#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/MWq9QdUftZ8" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://per.djurner.net/interesting-railo-mapping-bug</guid>
         <pubDate>Tue, 29 Sep 2009 09:51:00 -0700</pubDate>
      </item>
      <item>
         <title>Wheels 1.0 is coming</title>
         <link>http://rip747.wordpress.com/2009/09/22/wheels-1-0-is-coming/</link>
         <description>It&amp;#8217;s been the buzz around our community lately that Wheels 1.0 will hopefully be hitting the streets in November 2009. Out of all the open and closed source projects I&amp;#8217;ve been involved with over my career, I have to say that Wheels hold a special place in my heart. The entire team (and especially Per) [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=706&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=706</guid>
         <pubDate>Tue, 22 Sep 2009 17:49:05 -0700</pubDate>
         <content:encoded><![CDATA[<p>It&#8217;s been the <a rel="nofollow" target="_blank" href="http://www.clearcrystalmedia.com/pm/coldfusion-on-rails-almost-here/">buzz</a> around our community lately that <a rel="nofollow" target="_blank" href="http://www.cfwheels.org/">Wheels</a> 1.0 will hopefully be hitting the streets in November 2009. Out of all the open and closed source projects I&#8217;ve been involved with over my career, I have to say that Wheels hold a special place in my heart. The <a rel="nofollow" target="_blank" href="http://www.cfwheels.org/community">entire team</a> (and especially <a rel="nofollow" target="_blank" href="http://per.djurner.net/">Per</a>) is doing an outstanding job getting the final code base up to par.</p>
<p>Keep up the great work everyone!</p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/706/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/706/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/706/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/706/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/706/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/706/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=706&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/PtOb_2RQzOc" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
         <category>CFWheels</category>
      </item>
      <item>
         <title>Wheels 1.0, when?</title>
         <link>http://per.djurner.net/wheels-10-when</link>
         <description>&lt;p&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://twitter.com/cf_chrispeters"&gt;Chris Peters&lt;/a&gt; totally gave it away in &lt;a rel="nofollow" target="_blank" href="http://www.cfwheels.org/blog/index.cfm/2009/9/15/Released-Today-ColdFusion-on-Wheels-094"&gt;his post&lt;/a&gt; on the official Wheels blog:&lt;br /&gt;"&lt;em&gt;We're pretty much locked on features until we release 1.0 in a couple months&lt;/em&gt;".&lt;/p&gt;
&lt;p&gt;A "couple" usually means "2", right?&lt;/p&gt;
&lt;p&gt;So, let's do the math in ColdFusion (I could use my brain for the calculation I guess but ColdFusion is already up to version 9 while the last reports from my brain indicate perpetual beta status).&lt;/p&gt;
&lt;p&gt;&lt;code&gt; &amp;lt;cfset releaseDate = Month(Now()) + 2&amp;gt;
&amp;lt;cfdump var="#MonthAsString(releaseDate)#"&amp;gt; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;For those of you who don't have the luxury of having a ColdFusion development server to run this complex code on I can tell you that the answer is "November".&lt;/p&gt;
&lt;p&gt;I'm looking forward to it, are you?&lt;/p&gt;
&lt;p&gt;By the way, the above code was done without any use of a framework!&lt;br /&gt;Yeah, it was painful but I stuck with it.&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://per.djurner.net/wheels-10-when"&gt;Permalink&lt;/a&gt; | &lt;a rel="nofollow" target="_blank" href="http://per.djurner.net/wheels-10-when#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/wUPT81sjLSw" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://per.djurner.net/wheels-10-when</guid>
         <pubDate>Wed, 16 Sep 2009 05:38:00 -0700</pubDate>
      </item>
      <item>
         <title>CFWheels — Using Layouts and Stylesheets</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/cfwheels-using-layouts-and-stylesheets/</link>
         <description>On Page 73 of Head First Rails, we need to add a design for the meBay site.
Just like Rails, CFWheels supports layouts to create a master template and to avoid repeating yourself.
For our simple app, we could just work with the default layout located at /views/layout.cfm. But, to follow the book, let&amp;#8217;s create a controller-specific [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=112</guid>
         <pubDate>Sun, 06 Sep 2009 10:50:21 -0700</pubDate>
         <content:encoded><![CDATA[<p>On <strong>Page 73</strong> of Head First Rails, we need to add a design for the meBay site.</p>
<p>Just like Rails, CFWheels <a rel="nofollow" title="Layouts in CFWheels" target="_blank" href="http://cfwheels.org/docs/chapter/using-layouts">supports layouts</a> to create a master template and to avoid repeating yourself.</p>
<p>For our simple app, we could just work with the default layout located at <span style="color:#800000;">/views/layout.cfm</span>. But, to follow the book, let&#8217;s create a controller-specific layout at: <span style="color:#800000;">/views/ads/layout.cfm</span>. So, this layout.cfm in the /view/ads/ subdirectory will only be used for views associated with the ads controller.</p>
<p>[cf]<br />
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br /> &lt;cfoutput&gt;<br /> &lt;title&gt;Ads: #params.action#&lt;/title&gt;<br /> #stylesheetLinkTag("default")#<br /> &lt;/cfoutput&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br /> &lt;cfoutput&gt;<br /> &lt;div id="wrapper"&gt;<br /> &lt;div id="header"&gt;<br /> &lt;div&gt;<br /> &lt;h1&gt;MeBay&lt;/h1&gt;<br /> &lt;ul id="nav"&gt;<br /> &lt;li&gt;#linkTo(text="All Ads", route="adsNoKey")#&lt;/li&gt;<br /> &lt;/ul&gt;<br /> &lt;/div&gt;<br /> &lt;/div&gt;</p>
<p> &lt;div id="content"&gt;<br /> #contentForLayout()#<br /> &lt;/div&gt;<br /> &lt;div id="clearfooter"&gt;&lt;/div&gt;<br /> &lt;/div&gt;<br /> &lt;div id="footer"&gt;&lt;/div&gt;<br /> &lt;/cfoutput&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
[/cf]</p>
<p>Most of this code is HTML boilerplate. #params.action# inserts the name of the current action in the Title tag. The params structure is always passed from the controller to the view. It includes the name of the action, variables, etc. You can always cfdump it out if you want to see what all is in there.</p>
<p>#stylesheetLinkTag(&#8221;default&#8221;)# uses another CFWheels helper function. By convention, stylesheets are located in the <span style="color:#800000;">/stylesheets</span> directory. So this function builds the link to our stylesheet named default.css. <a rel="nofollow" title="Head First Rails Website" target="_blank" href="http://www.headfirstlabs.com/books/hfrails/">Download the code for Chapter 2</a> from the Head First Rails website, and get default.css from the <span style="color:#800000;">/public/stylesheets/</span> folder. In CFWheels, put default.css in your <span style="color:#800000;">/stylesheets</span> folder. If you have trouble with the stylesheet, make sure all the images references are correct. If your web server configuration is different, you might need to adjust the paths.</p>
<p>On line 16, we&#8217;ve setup a link to our index action.</p>
<p>On line 22, you see <span style="color:#800000;">#contentForLayout()#</span>. This is where CFWheels puts the content from the other view pages &#8212; show.cfm and index.cfm. It&#8217;s the equivalent of <span style="color:#800000;">&lt;%= yield %&gt;</span> in Rails.</p>
<p>That&#8217;s it! Now we have a pretty, styled meBay application. Visit <span style="color:#800000;">http://localhost/index.cfm/ads/</span> and see how pretty things look.</p>
<p>Next, it&#8217;s on to Chapter 3. In software development, things always change. And, now meBay wants to let people post ads online!</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/QoDaQLWSjYg" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CFWheels — Adding a Custom Index Page</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/cfwheels-adding-a-custom-index-page/</link>
         <description>Starting on Page 73 of Head First Rails, we need to add an index page so that people can find the pages they want!
First, let&amp;#8217;s add a new route so that http://localhost/index.cfm/ads/ goes to the new index action we&amp;#8217;ll add in a minute.
Open up /config/routes.cfm, and change it to:
[cf]
&amp;#60;cfset addRoute(name=&amp;#34;ads&amp;#34;, pattern=&amp;#34;/ads/[key]&amp;#34;, controller=&amp;#34;ads&amp;#34;, action=&amp;#34;show&amp;#34;)&amp;#62;
&amp;#60;cfset addRoute(name=&amp;#34;adsNoKey&amp;#34;, pattern=&amp;#34;/ads/&amp;#34;, [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=101</guid>
         <pubDate>Sun, 06 Sep 2009 08:46:43 -0700</pubDate>
         <content:encoded><![CDATA[<p>Starting on <strong>Page 73</strong> of Head First Rails, we need to add an index page so that people can find the pages they want!</p>
<p>First, let&#8217;s add a new route so that <span style="color:#800000;">http://localhost/index.cfm/ads/</span> goes to the new index action we&#8217;ll add in a minute.</p>
<p>Open up <span style="color:#800000;">/config/routes.cfm</span>, and change it to:</p>
<p>[cf]<br />
&lt;cfset addRoute(name="ads", pattern="/ads/[key]", controller="ads", action="show")&gt;<br />
&lt;cfset addRoute(name="adsNoKey", pattern="/ads/", controller="ads", action="index")&gt;<br />
&lt;cfset addRoute(name="catchall", pattern="[path]", controller="redirect", action="index")&gt;<br />
&lt;cfset addRoute(name="home", pattern="", controller="redirect", action="index")&gt;<br />
[/cf]</p>
<p>Notice the new route on line 2: <span style="color:#800000;">&lt;cfset addRoute(name=&#8221;adsNoKey&#8221;, pattern=&#8221;/ads/&#8221;, controller=&#8221;ads&#8221;, action=&#8221;index&#8221;)&gt;</span>. CFWheels checks the routes in order. So, if the URL pattern matches <span style="color:#800000;">/ads/[key]</span>, it will go to the show action. But, if the key isn&#8217;t there, it matches the <span style="color:#800000;">/ads/</span> pattern and goes to the new index action.</p>
<p>Now, we need to add an index action to the controller and then an index.cfm view. Open up <span style="color:#800000;">/controllers/Ads.cfc</span> and add the new index function. Leave the show function alone.</p>
<p>[cf]<br />
&lt;!&#8212; ads/index &#8212;&gt;<br />
&lt;cffunction name="index"&gt;<br /> &lt;cfset ads = model("Ad").findAll()&gt;<br /> &lt;cfdump var="#ads#"&gt;&lt;cfabort&gt;<br />
&lt;/cffunction&gt;<br />
[/cf]</p>
<p>Notice the that we set <span style="color:#800000;">ads = model(&#8221;Ad&#8221;).findAll()</span>. This tells Wheels, to go get the Ad model, and findAll the data &#8212; Pretty Powerful! The data comes back as a ColdFusion query object.</p>
<p>For testing, put the &lt;cfdump&gt;line in your controller, and send your browser to: <span style="color:#800000;">http://localhost/index.cfm/ads/</span>. You&#8217;ll see the query dumped out in all its glory! This is a pretty good debugging trick. Add a &lt;cfdump&gt; to your controller to see what variables and data the controller is passing to the view. Remove the &lt;cfdump&gt; line, and let&#8217;s go create the view.</p>
<p>Go create <span style="color:#993300;">/views/ads/index.cfm</span>:</p>
<p>[cf]<br />
&lt;h1&gt;All Ads&lt;/h1&gt;<br />
&lt;ul&gt;<br />
&lt;cfoutput query="ads"&gt;<br /> &lt;li&gt;#linkTo(text="#ads.name#", route="ads", key="#ads.id#")#&lt;/li&gt;<br />
&lt;/cfoutput&gt;<br />
&lt;/ul&gt;<br />
[/cf]</p>
<p>Pretty simple! Specifying the query attribute in <span style="color:#800000;">&lt;cfoutput&gt;</span> makes this just like a <span style="color:#800000;">&lt;cfloop&gt;</span>. You end up with a bunch of List Items (&lt;li&gt;) &#8212; One for each record in the query we got from the controller.</p>
<p><span style="color:#800000;">linkTo()</span> is another cool Wheels helper function. You could just use an &lt;a&gt; tag. However, using the linkTo() function is a <a rel="nofollow" title="CFWheels linkTo()" target="_blank" href="http://code.google.com/p/cfwheels/wiki/LinkingPages">best practice</a> because it makes your application more portable. We specified the &#8220;ads&#8221; route in the function. If, later on, we changed our subfolders or URL rewriting, everything would still work.</p>
<p>That&#8217;s it. Send your browser to: <span style="color:#800000;">http://localhost/index.cfm/ads/</span> and you should see a list of ads. Each ad will have a link that takes you to the show action and displays the ad.</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/QtFjcO-AiKM" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CFWheels — Fixing the Controller and View</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/cfwheels-fixing-the-controller-and-view/</link>
         <description>Last time, we setup our route, and now if you go to: http://localhost/index.cfm/ads/3, you won&amp;#8217;t get an error. But, just like on Page 63 of Head First Rails, the ads are blank and the page is kind of boring &amp;#8212; There&amp;#8217;s no data.
First, we need to fix our controller at /controllers/Ads.cfc. Make sure your show [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=95</guid>
         <pubDate>Sun, 30 Aug 2009 08:21:04 -0700</pubDate>
         <content:encoded><![CDATA[<p>Last time, we setup our route, and now if you go to: <span style="color:#800000;">http://localhost/index.cfm/ads/3</span>, you won&#8217;t get an error. But, just like on Page 63 of Head First Rails, the ads are blank and the page is kind of boring &#8212; There&#8217;s no data.</p>
<p>First, we need to fix our controller at <span style="color:#800000;">/controllers/Ads.cfc</span>. Make sure your show function looks like:</p>
<p>[cf]<br />
&lt;cffunction name="show"&gt;<br /> &lt;!&#8212; Find the record &#8212;&gt;<br /> &lt;cfset ad = model("Ad").findByKey(params.key)&gt;<br />
&lt;/cffunction&gt;<br />
[/cf]</p>
<p>When Wheels created the model, it automatically adds the findByKey method. All we have to do is tell it which key we want, and params.key has the key value!</p>
<p>We still need to fix <span style="color:#800000;">/views/ads/show.cfm</span> to display the data. Change this file to:</p>
<p>[cf]<br />
&lt;cfoutput&gt;<br />
&lt;p&gt;&lt;b&gt;Name:&lt;/b&gt;#ad.name#&lt;/p&gt;<br />
&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;#ad.description#&lt;/p&gt;<br />
&lt;p&gt;&lt;b&gt;Price:&lt;/b&gt;#ad.price#&lt;/p&gt;<br />
&lt;p&gt;&lt;b&gt;Seller Id:&lt;/b&gt;#ad.seller_id#&lt;/p&gt;<br />
&lt;p&gt;&lt;b&gt;Email:&lt;/b&gt;#ad.email#&lt;/p&gt;<br />
&lt;p&gt;&lt;img src="#ad.img_url#"/&gt;&lt;/p&gt;<br />
&lt;/cfoutput&gt;<br />
[/cf]</p>
<p>Pretty neat. Just put the values in the view and wrap it up in a &lt;cfoutput&gt; tag! Wheels handles the hard part of getting the data from the database into the model.</p>
<p>Go back to: <span style="color:#800000;">http://localhost/index.cfm/ads/3</span>, and you&#8217;ll see that the data is now being correctly displayed.</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/LSvwbmD-FjE" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CFWheels — How to Setup and Use Routes</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/cfwheels-how-to-setup-and-use-routes/</link>
         <description>Routes offer a way to map web URLs to specific controllers in your application. It&amp;#8217;s one place where you might use configuration in CFWheels.
There&amp;#8217;s a good section in the CFWheels docs on Using Routes. But, I&amp;#8217;m going to continue following along with the examples in Head First Rails, starting on page 56.
If you try a [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=84</guid>
         <pubDate>Sun, 30 Aug 2009 07:56:07 -0700</pubDate>
         <content:encoded><![CDATA[<p>Routes offer a way to map web URLs to specific controllers in your application. It&#8217;s one place where you might use configuration in CFWheels.</p>
<p>There&#8217;s a good section in the CFWheels docs on <a rel="nofollow" title="CFWheels -- Using Routes" target="_blank" href="http://cfwheels.org/docs/chapter/using-routes">Using Routes</a>. But, I&#8217;m going to continue following along with the examples in Head First Rails, starting on page 56.</p>
<p>If you try a URL like this: <span style="color:#800000;">http://localhost/index.cfm/ads/3</span>, Wheels will give you an error: <span style="color:#800000;">Could not find the view page for the &#8216;3&#8242; action in the &#8216;ads&#8217; controller</span>. That&#8217;s because, Wheels is looking for the Ads controller with the &#8220;3&#8243; action. Rails would complain that there is no action (Method in the Ads controller) called &#8216;3&#8242;. But, Wheels is smarter and just goes straight to the view. We don&#8217;t have a &#8216;3&#8242; method in Ads.cfc, but Wheels still tries to load a view from <span style="color:#800000;">/views/ads/3.cfm</span>. The file isn&#8217;t there, so it throws an error.</p>
<p>Setting up a Route will let us fix this! Open up <span style="color:#800000;">/config/routes.cfm</span>. It defaults to something like:</p>
<p>[cf]<br />
&lt;cfset addRoute(name="home", pattern="", controller="wheels", action="congratulations")&gt;<br />
[/cf]</p>
<p>Did you ever wonder how you got to that nice congratulations page when you just go to: <span style="color:#800000;">http://localhost/</span>? What happens is that our route, the &#8220;home&#8221; route, says, that if the URL pattern is &#8220;&#8221; (Blank String), Wheels should go the the wheels controller, and run the action congratulations.</p>
<p>Take a peek at <span style="color:#800000;">/controllers/Wheels.cfc</span>. Sure enough, there is a congratulations method that loads up info on the current version of Wheels. And, then of course, it looks for the view in <span style="color:#800000;">/views/wheels/congratulations.cfm</span>. The file is already there as part of the default Wheels installation. If you open it up, you can see the HTML code including the place where it inserts the version information Wheels got from the controller.</p>
<p>The default routes.cfm file is nice, but lets make some changes!</p>
<p>[cf]<br />
&lt;cfset addRoute(name="ads", pattern="/ads/[key]", controller="ads", action="show")&gt;<br />
&lt;cfset addRoute(name="catchall", pattern="[path]", controller="redirect", action="index")&gt;<br />
&lt;cfset addRoute(name="home", pattern="", controller="redirect", action="index")&gt;<br />
[/cf]</p>
<p>It&#8217;s important to understand that Wheels goes through the routes in order from top to bottom. As soon as it finds a match, it goes to the appropriate controller. Here&#8217;s how you interpret this route.cfm:</p>
<ul>
<li><strong>Ads</strong>. If the URL pattern looks like: <span style="color:#800000;">http//localhost/index.cfm/ads/3</span>, go to the show action in the ads controller. Did you notice the pattern includes [key]? This tells Wheels to set the key parameter to whatever is in the URL &#8212; 3 in this case.</li>
<li><strong>Catchall</strong>. If the URL doesn&#8217;t match the Ads pattern, Wheels will try the next pattern. This pattern matches <span style="color:#800000;">[path]</span>. In other words, it matches anything, and puts the value in the path parameter. Actually, it doesn&#8217;t put everything in the path paramter &#8212; Just the part before the next slash, &#8220;/&#8221;. <span style="color:#800000;">http//localhost/index.cfm/xxx/yyy/zzz/3</span> will only have &#8220;xxx&#8221; in the path parameter. A route like this is a good one to add to catch any unknown URLs a user might enter &#8212; Sort of like a 404 Error page.</li>
<li><strong>Home</strong>. If the URL pattern is blank, we&#8217;ve got one more route to cover that case. Remember, the pattern is just the stuff that comes after <span style="color:#800000;">http//localhost/index.cfm/</span>.</li>
</ul>
<p>Ultimately Routes just offer a convenient way to map a URL to a controller. They are useful for having prettier URLs that make more sense to the users. You can always use query params in your URL and completely bypass routes. This URL, <span style="color:#800000;">http://localhost/index.cfm?controller=ads&amp;action=show&amp;key=3</span> directly specifies the controller and action, so there&#8217;s no need for Wheels to check the route!</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/7c7R7KkwnEM" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CFWheels — Creating a Custom Controller and View</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/cfwheels-creating-a-custom-controller-and-view/</link>
         <description>We&amp;#8217;re on Page 52 of Head First Rails, and we need to create a custom Controller and View.
I&amp;#8217;m going to keep following the book, but there is a great tutorial that covers the same ideas over on the CFWheels website.
Convention Rules! CFWheels has conventions for almost everything. As long as you follow the conventions, things [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=69</guid>
         <pubDate>Thu, 27 Aug 2009 13:47:36 -0700</pubDate>
         <content:encoded><![CDATA[<p>We&#8217;re on Page 52 of Head First Rails, and we need to create a custom Controller and View.</p>
<p>I&#8217;m going to keep following the book, but there is a <a rel="nofollow" title="CFWheels Beginner Tutorial" target="_blank" href="http://cfwheels.org/docs/chapter/beginner-tutorial%3a-hello-world">great tutorial </a>that covers the same ideas over on the CFWheels website.</p>
<p>Convention Rules! CFWheels has conventions for almost everything. As long as you follow the conventions, things just work naturally.</p>
<p>For example, look at a URL like this <span style="color:#993300;">http://localhost/ads/show/5</span>. CFWheels will automatically interpret this to run the <span style="color:#993300;">show </span>function in the <span style="color:#993300;">ads </span>controller. The number 5 is passed as a &#8220;key&#8221;.</p>
<p>Before I keep going, I have to touch on URL rewriting. The URL I just used as an example will only work if your server supports full URL rewriting. I&#8217;m using the ColdFusion development server, and it only offers &#8220;partial&#8221; URL rewriting. So, I have to use a URL like this: <span style="color:#993300;">http://localhost/<strong>index.cfm</strong>/ads/show/5.</span> Notice that <strong>index.cfm</strong> has to be inserted in the URL!</p>
<p>You can also specify the Controller and Action like this: <span style="color:#800000;">http://localhost/index.cfm?controller=ads&amp;action=show&amp;key=5</span>. Doing it this way will always work. It bypasses routes and any server URL rewriting problems. You might want to just use this form of URL while you are learning or if you are debugging a problem.</p>
<p>In any case, the idea is to run the show function in the ads controller. CFWheels will look for <span style="color:#800000;">Ads.cfc</span> in the controller folder, and will look for the show function inside Ads.cfc.</p>
<p>Then, it will run the show function and load the view. It will expect there to be a view file in <span style="color:#800000;">/views/ads </span>named <span style="color:#800000;">show.cfm</span> to match the function you called.</p>
<p>But, guess what? If you don&#8217;t create the Ads.cfc controller, CFWheels, will still try to run the view. Normally, you&#8217;ll want the controller to get some data for you, but if not, you could skip the controller altogether.</p>
<p>Here&#8217;s my controller code for <span style="color:#800000;">/controllers/Ads.cfc</span>:</p>
<p>[cf]<br />
&lt;cfcomponent extends="Controller"&gt;</p>
<p> &lt;cffunction name="index"&gt;</p>
<p> &lt;/cffunction&gt;</p>
<p> &lt;cffunction name="show"&gt;</p>
<p> &lt;/cffunction&gt;</p>
<p>&lt;/cfcomponent&gt;<br />
[/cf]</p>
<p>Later, we&#8217;ll add some functionality to the controller, but I&#8217;m following the book. And, for now, the only two actions we need are index and show.</p>
<p>At this point, you could try to go to <span style="color:#800000;">http://localhost/index.cfm?controller=ads&amp;action=show&amp;key=5</span>. But, you&#8217;d get a Wheels error because there is no view file.</p>
<p>Here&#8217;s my view code for <span style="color:#993300;">/views/ads/show.cfm</span>:</p>
<p>[cf]<br />
&lt;p&gt;&lt;b&gt;Name:&lt;/b&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;b&gt;Price:&lt;/b&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;b&gt;Seller Id:&lt;/b&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;b&gt;Email:&lt;/b&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;img src=""/&gt;&lt;/p&gt;<br />
[/cf]</p>
<p>I know, this doesn&#8217;t do much either, but we&#8217;ll add on. Be Patient!</p>
<p>Now, if you go to <span style="color:#800000;">http://localhost/index.cfm?controller=ads&amp;action=show&amp;key=5</span>, you&#8217;ll see the lovely static view file you just created.</p>
<p>Next time, we&#8217;ll look at routes some more, and eventually, we&#8217;ll actually make this app work.</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/L_SD29JdkIA" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CFWheels — Creating a Custom Model</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/cfwheels-creating-a-custom-model/</link>
         <description>Continuing the series on using Head First Rails to learn CFWheels, lets move on to Chapter 2 &amp;#8212; Beyond Scaffolding. We are going to create the MeBay application!
Starting on Page 45 in Head First Rails &amp;#8230;
Whether we use scaffolding or not, we still have to create the database. In Rails, you do this with the [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=57</guid>
         <pubDate>Tue, 25 Aug 2009 08:36:55 -0700</pubDate>
         <content:encoded><![CDATA[<p>Continuing the series on using Head First Rails to learn CFWheels, lets move on to Chapter 2 &#8212; Beyond Scaffolding. We are going to create the MeBay application!</p>
<p>Starting on<strong> Page 45</strong> in Head First Rails &#8230;</p>
<p>Whether we use scaffolding or not, we still have to create the database. In Rails, you do this with the <span style="color:#800000;">script/generate model</span> command and then running <span style="color:#800000;">rake</span>. But, in CFWheels, it&#8217;s easiest to just use SQL and create the database directly. Here is some mySQL code to create the needed ads table.</p>
<p>[sql]</p>
<p>CREATE TABLE `ads` (<br />
`id` INTEGER PRIMARY KEY NOT NULL auto_increment,<br />
`name` varchar(255),<br />
`description` text,<br />
`price` decimal,<br />
`seller_id` integer,<br />
`email` varchar(255),<br />
`img_url` varchar(255),<br />
`created_at` datetime,<br />
`updated_at` datetime<br />
);<br />
[/sql]</p>
<p>Later on, we&#8217;ll want to populate the table with some sample data, so let me go ahead and show the full SQL that creates the table and adds the test data:</p>
<p>[sql]<br />
DROP TABLE IF EXISTS `ads` ;<br />
CREATE TABLE `ads` (<br />
`id` INTEGER PRIMARY KEY NOT NULL auto_increment,<br />
`name` varchar(255),<br />
`description` text,<br />
`price` decimal,<br />
`seller_id` integer,<br />
`email` varchar(255),<br />
`img_url` varchar(255),<br />
`created_at` datetime,<br />
`updated_at` datetime<br />
);<br />
INSERT INTO `ads` VALUES(1,&#8217;Typewriter&#8217;,'Old manual typewriter. Many years useful service. Works best with a bottle next to it.&#8217;,71.95,54,&#8217;dhammett@email.com&#8217;,'http://homepage.mac.com/david_griffiths/typewriter.png&#8217;,&#8221;,&#8221;);<br />
INSERT INTO `ads` VALUES(2,&#8217;Football&#8217;,'Some strings frayed.&#8217;,74.02,45,&#8217;marty@googlemail.com&#8217;,'http://www.freefever.com/freeclipart/clipart/football2.gif&#8217;,&#8221;,&#8221;);<br />
INSERT INTO `ads` VALUES(3,&#8217;Moosehead&#8217;,'Slightly moth-eaten. One of the antlers is broken and there&#8217;&#8217;s a strange buzzing sound behind the eyes&#8230;&#8217;,2978.25,56,&#8217;kathy@hotmail.com&#8217;,'http://saloon.javaranch.com/ubb/moosefly.gif&#8217;,&#8221;,&#8221;);<br />
INSERT INTO `ads` VALUES(4,&#8217;Desk&#8217;,'Milk desk - go&#8230;&#8217;,4800,123,&#8217;andy@allmail&#8230;.&#8217;,'http://picasaweb.goog&#8230;&#8217;,&#8221;,&#8221;);<br />
INSERT INTO `ads` VALUES(5,&#8217;Door curtain&#8217;,'Beaded door cu&#8230;&#8217;,11,773,&#8217;dawn@hotmail&#8230;.&#8217;,'http://www.freewebsit&#8230;&#8217;,&#8221;,&#8221;);<br />
INSERT INTO `ads` VALUES(6,&#8217;Apple Newton&#8217;,'Still works! M&#8230;&#8217;,25,2,&#8217;ahertz@differ&#8230;&#8217;,'http://www.differnet&#8230;.&#8217;,&#8221;,&#8221;);<br />
INSERT INTO `ads` VALUES(7,&#8217;Sinclair C5&#8242;,&#8217;Battery flat t&#8230;&#8217;,372.06,346,&#8217;clive@sinclai&#8230;&#8217;,'http://www.ebay.com/w&#8230;&#8217;,&#8221;,&#8221;);<br />
INSERT INTO `ads` VALUES(8,&#8217;Edsel&#8217;,'Never used aut&#8230;&#8217;,355,755,&#8217;bing@badabing&#8230;&#8217;,'http://pages.google.c&#8230;&#8217;,&#8221;,&#8221;);<br />
INSERT INTO `ads` VALUES(37,&#8217;Diamond&#8217;,'203.4 carats, grade D pear cut diamond. Low price for quick sale. Owner leaving the country.&#8217;,1000000,5234,&#8217;pink@panther.com&#8217;,'http://&#8217;,&#8221;,&#8221;);<br />
[/sql]</p>
<p>It&#8217;s easy enough to manually create the Model, but for convenience, let&#8217;s use the scaffolding plugin anyway.</p>
<p>Click the <strong><span style="text-decoration:underline;"><span style="color:#993300;">Scaffold</span></span></strong> link at the bottom of any CFWHeels page &#8211; In the debug section, next to Plugins. Then, on the scaffold page, enter <span style="color:#800000;">ad</span> as the Object name, select Model from the Type drop down, and click Generate. Remember, the table is named <span style="color:#800000;">ads</span> (plural with an “s”), but the the model is named <span style="color:#800000;">ad</span> (singular).</p>
<p>Now, open /models/Ad.cfc. You&#8217;ll see something that looks like:</p>
<p>[cf]<br />
&lt;cfcomponent extends="Model"&gt;</p>
<p>&lt;!&#8212; All initialization related tasks are done in the "init" function which is run the first time the model is requested. &#8212;&gt;<br />
&lt;cffunction name="init"&gt;<br />
&lt;/cffunction&gt;</p>
<p>&lt;/cfcomponent&gt;<br />
[/cf]</p>
<p>That&#8217;s all it takes to create a model! Your model must extend Model.cfc &#8212; That&#8217;s where all the CFWheels goodness happens. Other than that, all you need is an init function. Later on, you can use the init function to add extra capabilities, but for now, all that&#8217;s needed is a blank init function!</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/bN1-iF1z9Bs" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CFWheels — Adding a new table with model, view, and controller</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/cfwheels-adding-a-new-table-with-model-view-and-controller/</link>
         <description>In Part 2, we looked at Editing the View in CFWheels.
We thought we were done, but now the boss wants to record events along with ticket sales. Remember we are following along in Head First Rails, and converting everything to CFWheels!
Fortunately, with scaffolding, all we need to do is create the new database table and [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=43</guid>
         <pubDate>Sun, 16 Aug 2009 11:34:16 -0700</pubDate>
         <content:encoded><![CDATA[<p>In Part 2, we looked at <a rel="nofollow" title="Editing the View in CFWheels" target="_blank" href="http://www.resultantsys.com/index.php/coldfusion/editing-the-view-in-cfwheels/">Editing the View in CFWheels</a>.</p>
<p>We thought we were done, but now the boss wants to record events along with ticket sales. Remember we are following along in <a rel="nofollow" title="Head First Rails" target="_blank" href="http://www.amazon.com/gp/product/0596515774?ie=UTF8&amp;tag=distanz&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596515774">Head First Rails</a>, and converting everything to CFWheels!</p>
<p>Fortunately, with scaffolding, all we need to do is create the new database table and run the scaffolding plugin.</p>
<p>Here&#8217;s the create table SQL query:</p>
<blockquote><p>CREATE TABLE `events` (<br />
`id` int(11) NOT NULL auto_increment,<br />
`artist` varchar(255) NOT NULL,<br />
`description` text,<br />
`price_low` decimal NOT NULL,<br />
`price_high` decimal NOT NULL,<br />
`event_date` date NOT NULL,<br />
PRIMARY KEY (`id`)<br />
)</p></blockquote>
<p>I got the idea from a Rails app to create a &#8220;spec&#8221; directory to hold application specification information. And, I created a database sub-directory to hold all my table creation SQL. So the query is stored in <span style="color:#993300;">/spec/database/events.sql</span>.</p>
<p>Next, click the <strong><span style="text-decoration:underline;"><span style="color:#993300;">Scaffold</span></span></strong> link. Look in the debug information at the bottom of each page, next to Plugins. Then, on the scaffold page, enter <span style="color:#993300;">event </span>as the Object name, and click Generate. Remember, the table is named <span style="color:#993300;">events </span>(plural with an &#8220;s&#8221;), but the the object is named <span style="color:#993300;">event </span>(singular).</p>
<p>All that&#8217;s left is to open <span style="color:#993300;">/views/events</span>/ and edit the labels in <span style="color:#993300;">edit.cfm, index.cfm, new.cfm</span> and s<span style="color:#993300;">how.cfm</span>. This last step isn&#8217;t really needed to make things work, but the boss is kind of picky.</p>
<p>Great &#8212; We&#8217;ve finished with Chapter 1 of Head First Rails. You now know how to:</p>
<ul>
<li>Create a new CFWheels application</li>
<li>Install the scaffolding plugin to CFWheels</li>
<li>Setup a database table and use scaffolding to automatically generate the Model, View, and Controller code.</li>
<li>Edit HTML in the View</li>
<li>Add fields and new tables to the database</li>
</ul>
<p>Next time, we&#8217;ll start Chapter 2, and build an application from scratch &#8212; Without using scaffolding.</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/TnoYJfAe7ZQ" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Editing the View in CFWheels</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/editing-the-view-in-cfwheels/</link>
         <description>In Part 1, we looked at Scaffolding Basics in CFWheels.
Now, I&amp;#8217;ll continue working through the exercises in Head First Rails and converting things to CFWheels.
Page 27: Edit the HTML in the View
When you use scaffolding, the labels will be the same as the field names in the database. This may be OK, but if you [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=36</guid>
         <pubDate>Wed, 12 Aug 2009 08:55:29 -0700</pubDate>
         <content:encoded><![CDATA[<p>In <strong>Part 1</strong>, we looked at <a rel="nofollow" title="Part 1: Scaffolding Basics" target="_blank" href="http://www.resultantsys.com/index.php/coldfusion/cfwheels-scaffolding-basics/">Scaffolding Basics in CFWheels</a>.</p>
<p>Now, I&#8217;ll continue working through the exercises in Head First Rails and converting things to CFWheels.</p>
<p><strong>Page 27: Edit the HTML in the View</strong></p>
<p>When you use scaffolding, the labels will be the same as the field names in the database. This may be OK, but if you need to change them to make them more readable by humans, it&#8217;s easy enough to edit the HTML in the views.</p>
<ul>
<li>Look at the directory for <span style="color:#993300;">webroot/views/tickets</span>. You&#8217;ll see four files named edit.cfm, index.cfm, new.cfm, and show.cfm. These are the four files that you need to edit.</li>
<li>Open up edit.cfm, and you&#8217;ll see the code like: <span style="color:#993300;">&lt;label&gt;Seat_id_seq&lt;/label&gt;</span>. Seat_id_seq isn&#8217;t a very human-friendly label, so let&#8217;s change it to Seat #.</li>
<li>Change the code to <span style="color:#993300;">&lt;label&gt;Seat ##&lt;/label&gt;</span>. Remember this is inside a &lt;cfoutput&gt; block, so you have to escape the # symbol by typing it twice.</li>
<li>Open index.cfm and change the appropriate line to <span style="color:#993300;">&lt;cfcol header=&#8221;Seat ##&#8221; text=&#8221;#seat_id_seq#&#8221; /&gt;</span>.</li>
<li>Now make similar changes to new.cfm and show.cfm.</li>
<li>Save everything, then go to <span style="color:#993300;">http://localhost/tickets/index.cfm?controller=tickets&amp;action=index<span style="color:#000000;"> to see your beautiful new labels!</span></span></li>
</ul>
<p>I made one other change to the code to make things work correctly! At the bottom of the show.cfm file, there&#8217;s a line that starts out with<br />
<span style="color:#993300;">#linkTo(text=&#8221;Return to the listing&#8221;, action=&#8221;action&#8221;)#</span>. This may be a bug in scaffolding, or maybe I did something wrong. This line should really say:<br />
#linkTo(text=&#8221;Return to the listing&#8221;, action=&#8221;<strong><span style="color:#993300;">index</span></strong>&#8220;)#. This way, the link will go back to the index view.</p>
<p><strong>Page 31: Adding a new data field</strong></p>
<p>The Boss forgot that we need a phone number field, so now we have to add it!</p>
<p>In Rails, you have to do<span style="color:#993300;"> &gt; script/generate migration &#8230;</span> and then run <span style="color:#993300;">&gt; rake db:migrate</span>. In CFWheels, we&#8217;ll just run an Alter Table query on the database. Here&#8217;s the query I ran:</p>
<blockquote><p>ALTER TABLE tickets<br />
ADD phone varchar(255)</p></blockquote>
<p>But, just like with Rails, changing the database isn&#8217;t enough (Page 36). We still have to update the code in the View files to handle the new field. Here&#8217;s the code I added to edit.cfm and new.cfm:</p>
<blockquote><p>&lt;p&gt;&lt;label&gt;Phone&lt;/label&gt; &lt;br /&gt;<br />
#textField(objectName=&#8217;ticket&#8217;, property=&#8217;phone&#8217;)#&lt;/p&gt;</p></blockquote>
<p>Notice the <span style="color:#800000;">textField()</span> function. This is the CFWheels equivalent of <span style="color:#800000;">&lt;%= f.text_field :phone %&gt;</span>. Rails also has the <span style="color:#800000;">f.label</span> function. I&#8217;m not sure of the advantages of using a helper function for labels. But, this doesn&#8217;t seem to be available in CFWheels &#8212; At least not yet!</p>
<p>By the way, you can get details on any helper function like the textField tag at:</p>
<p><a rel="nofollow" title="CFWheels at code.google.com" target="_blank" href="http://code.google.com/p/cfwheels/wiki/textFieldTag">http://code.google.com/p/cfwheels/wiki/textFieldTag</a></p>
<p>The changes to show.cfm and index.cfm are similar. If you have any trouble, leave me a comment!</p>
<p>I heard a rumor that the Boss wants to add event information to our application. We&#8217;ll look at this next time!</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/gZ2RNbdOlCI" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>CFWheels Scaffolding Basics</title>
         <link>http://www.resultantsys.com/index.php/coldfusion/cfwheels-scaffolding-basics/</link>
         <description>I choose CFWheels as my first ColdFusion framework to learn. I was going to learn ColdBox, but quickly discovered that I would really have to learn Transfer or Reactor and Coldspring at the same time. These may be good tools, but I wanted to focus mostly on mastering the Model View Controller pattern.
I&amp;#8217;ve been really [...]</description>
         <guid isPermaLink="false">http://www.resultantsys.com/?p=26</guid>
         <pubDate>Tue, 11 Aug 2009 05:09:27 -0700</pubDate>
         <content:encoded><![CDATA[<p>I choose CFWheels as my first ColdFusion framework to learn. I was going to learn ColdBox, but quickly discovered that I would really have to learn Transfer or Reactor and Coldspring at the same time. These may be good tools, but I wanted to focus mostly on mastering the Model View Controller pattern.</p>
<p>I&#8217;ve been really pleased with CFWheels. It&#8217;s the ColdFusion answer to Ruby on Rails, and it just makes sense to me!</p>
<p>The documentation is good. Still, for a new learner, some things are missing. So, I thought maybe I can leverage some Rails resources. I found a great book &#8212; Head First Rails. I&#8217;m going to do some posts on translating the book to CFML and to CFWheels. I think this will help my learning and may help others.</p>
<p>From here, I&#8217;m assuming that you know something about web development, CFML, and already have a ColdFusion server running on your computer. If not, this information may be too advanced for you. CFWheels runs great on the development edition of ColdFusion that&#8217;s available from Adobe. Railo is also supported. You can learn more about the requirements at: <a rel="nofollow" title="CFWheels System Requirements" target="_blank" href="http://cfwheels.org/docs/chapter/requirements">http://cfwheels.org/docs/chapter/requirements</a>.</p>
<p>Now on to <strong><a rel="nofollow" title="Head First Rails" target="_blank" href="http://www.amazon.com/gp/product/0596515774?ie=UTF8&amp;tag=distanz&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596515774">Head First Rails</a>, Chapter 1: Really Rapid CFWheels</strong></p>
<p><strong>Page 7: Creating a New A</strong><strong>pplication<br />
</strong></p>
<p>In Rails, you open a command prompt and type <span style="color:#993300;">&gt; rails tickets</span>. This sets up the folder structure for your app.</p>
<p>In CFWheels, you do the same thing by <a rel="nofollow" title="Download CFWheels" target="_blank" href="http://cfwheels.org/download">downloading the CFWheels files</a> and just unzipping them to a folder named <span style="color:#993300;">tickets </span>in your webroot. The name of the <em><strong>folder </strong></em>is <em><strong>very </strong></em>important. CFWheels and Rails both rely on convention instead of configuration. Things have to be named consistently!</p>
<p><strong>Page 14: Creating Tables (Migration)</strong></p>
<p>In Rails, you create tables in the database by going to a command prompt and typing <span style="color:#993300;">&gt; ruby script/generate scaffold tickets &#8230;</span> Then, you have to run a migration by typing <span style="color:#993300;">&gt; rake db.migrate</span>. These two commands also write code for your application! Rails will automatically create Model, View, and Controller files for your new table.</p>
<p>CFWheels handles this a little differently, but you can quickly get to the same place. First, you have to install the Scaffolding plugin.</p>
<ul>
<li><a rel="nofollow" title="Download Scaffolding" target="_blank" href="http://scaffoldwheels.riaforge.org/">Download the scaffolding plugin</a></li>
<li>Save the .zip file in your wwwroot/tickets/plugins folder.</li>
<li>Reload CFWheels by running this URL in your browser: <span style="color:#993300;">http://localhost/tickets/?reload=true</span></li>
<li>CFWheels will automatically unzip and install the file! You&#8217;ll see Scaffold listed as a plugin at the bottom of the page along with other debugging information.</li>
<li><span style="text-decoration:line-through;"><em><strong>NOTE: Apparently there&#8217;s a problem with the Plugin Manager right now. </strong></em>I had to delete the Plugin Manager files from the plugins directory. Then, this process worked for me.</span> I discovered the problem was with my ColdFusion server configuration. I had added a Dump() method to Component.cfc. When Wheels tried to load multiple plug-ins, it saw the duplicated method, and threw an error as a result of the naming conflict.</li>
</ul>
<p>You&#8217;ll only need to do the steps above once. Now, lets use scaffolding to create an app in CFWheels. Instead of using the script/generate syntax, CFWheels expects you to just create your table via a SQL query or whatever database tools you like to use. Most developers know how to do this, and I like this approach better than learning a new syntax in Rails!</p>
<p>Here&#8217;s my Create Table SQL script. This is essentially the same command you type into Rails via script/generate.</p>
<blockquote><p>CREATE TABLE `tickets` (<br />
`id` int(11) NOT NULL auto_increment,<br />
`name` varchar(255) NOT NULL,<br />
`seat_id_seq` varchar(255) NOT NULL,<br />
`address` text NOT NULL,<br />
`price_paid` decimal NOT NULL,<br />
`email_address` varchar(255) DEFAULT NULL,<br />
PRIMARY KEY (`id`)<br />
)</p></blockquote>
<p>Now, it get&#8217;s really easy. Either click the Scaffold link on the bottom of your browser screen, or point your browser to <span style="color:#993300;">http://localhost/tickets/index.cfm?controller=wheels&amp;action=plugins&amp;name=scaffold</span>. This will display the scaffolding plugin screen.</p>
<p>Just enter the name of the table and click Generate. That&#8217;s it! Instant Application. Go to <span style="color:#993300;">http://localhost/tickets/index.cfm?controller=tickets&amp;action=index</span> to see your new application. Rails automatically creates a route, so their URL is simpler, and you can easily do the same thing if you want. For me, when learning, I&#8217;d rather see the controller and action clearly shown in the URL. There&#8217;s always time to switch to pretty URL&#8217;s later on.</p>
<p>Next we&#8217;ll edit the HTML in the view. But, that&#8217;s another post. Please leave a comment if I got something wrong or you like my approach!</p><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/HrkCPBi6SQo" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>Announcing WorkingWithCFML.com</title>
         <link>http://www.angry-fly.com/post.cfm/announcing-workingwithcfml-com</link>
         <description>&lt;p&gt;Although there are many downsides to being unemployed, there are a few upsides to it as well. One of which is that you have a TON of time to play with code and learn new things. After almost 3 months between projects now, I started getting the fever to launch something. So I was playing around with &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org"&gt;CFWheels&lt;/a&gt; at that time and decided to throw something together.&lt;/p&gt;
&lt;p&gt;The result is &lt;a rel="nofollow" target="_blank" href="http://workingwithcfml.com"&gt;WorkingWithCFML.com&lt;/a&gt;. Its not nearly feature complete, but I wanted to get something out there and start playing around. Its basically a site that allows CFML developers to create profiles, recommend other developers, etc. The idea is not mine, Most of the functionality is heavily "borrowed" from the Rails site workingwithrails.com. I just thought it would be a cool project and wanted to see how much i could get done with Wheels.&lt;/p&gt;
&lt;p&gt;Currently I have around 45 man hours in the site, that includes bug-fixing the last couple days. Its running on the latest version of &lt;a rel="nofollow" target="_blank" href="http://getrailo.org"&gt;Railo&lt;/a&gt; 3.1.0.026 and was written with version 0.9.3 of &lt;a rel="nofollow" target="_blank" href="http://cfwheels.org"&gt;CFWheels&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;If you are so inclined, create profile and share. If you happen to run into any issues, or if you can think of a feature that you would like added, please let me know. Afterall, I dont have much else to do right now. ;)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/4RDoseWWaYo" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.angry-fly.com/post.cfm/announcing-workingwithcfml-com</guid>
         <pubDate>Fri, 07 Aug 2009 11:30:24 -0700</pubDate>
      </item>
      <item>
         <title>Handling Nested Resources in CFWheels</title>
         <link>http://www.angry-fly.com/post.cfm/handling-nested-resources-in-cfwheels</link>
         <description>&lt;p&gt;Several frameworks these days are including a routing system to make it easy to implement user friendly urls, or as some like to call them, search engine safe urls. These routing systems can also make refactoring much simpler as well if you use them properly. &lt;/p&gt;
&lt;p&gt;I have been playing around with CFWheels lately and was wondering how I could take advantage of nested resources in this framework. Nested resources is something I picked up while working on some Rails projects, its a way to automatically handle related objects in your forms. Let me show you a quick example.&lt;/p&gt;
&lt;p&gt;Say we are building a bug tracker. We have 2 objects, a Projects object and a Ticket object. Here is how the associations are setup.&lt;/p&gt;
&lt;p&gt;
Project.cfc&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;and now our Ticket.cfc&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now normally if you were adding a ticket, you could use a URL like this:&lt;/p&gt;
&lt;p&gt;localhost/tickets/new&lt;/p&gt;
&lt;p&gt;And you could pass in the projectID as a hidden field or something like that to handle the association.&lt;/p&gt;
&lt;p&gt;But, there is a much easier way to handle this. First lets take advantage of the routing system and create a few routes. I like named routes in my applications much better than the defaults. If I ever refactor a controller and rename an action, etc. I can change the route and every link in my site that points to that route is automatically updated for me. Hows that for a time saver?&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;These 3 routes handle the nesting for us. Notice how the project part of the url is always first? Then the nested resource since tickets belong to projects. This URL structure will ensure that our projectID is always available in the params scope. Our URl will now look like this if we are adding a ticket to a project.&lt;/p&gt;
&lt;p&gt;localhost/project/1/tickets/new&lt;/p&gt;
&lt;p&gt;Heres a typical link that would point to our form to create a new ticket.&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;#linkTo(text=&lt;span class='cc_value'&gt;"New Ticket"&lt;/span&gt;, route=&lt;span class='cc_value'&gt;"new_project_ticket"&lt;/span&gt;, projectid=params.projectid)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To setup our form for the new ticket an automatically populate the projectID hidden field, we can write our controller action like this.&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That takes advantage of the built-in associations in Wheels and builds the new ticket object through the project object for us. You form would be a standard Wheels form but will automatically have the projectID set in the hidden field for you.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/bbyaUXPKTPA" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.angry-fly.com/post.cfm/handling-nested-resources-in-cfwheels</guid>
         <pubDate>Wed, 15 Jul 2009 14:24:49 -0700</pubDate>
      </item>
      <item>
         <title>Geek Week: Day 5</title>
         <link>http://rip747.wordpress.com/2009/05/13/geek-week-day-5/</link>
         <description>Well Day3 and 4 ended up with me having to do client work and some work for my day job. Those two days were a bust and I should of ended the days with doing some more coding, but afterwards my mind just wasn&amp;#8217;t into it. I&amp;#8217;m learning that this wasn&amp;#8217;t the smartest idea. I [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=614&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=614</guid>
         <pubDate>Wed, 13 May 2009 20:17:16 -0700</pubDate>
         <content:encoded><![CDATA[<p>Well Day3 and 4 ended up with me having to do client work and some work for my day job. Those two days were a bust and I should of ended the days with doing some more coding, but afterwards my mind just wasn&#8217;t into it. I&#8217;m learning that this wasn&#8217;t the smartest idea. I now see why it takes a long time to get things done.</p>
<p>On top of all that, while I was just sitting down to type this out, I saw that the two commits to trunk that I made today weren&#8217;t the smartest changes either and I was asked to revert them, which I did.</p>
<p>I think I&#8217;m going to take a break tomorrow from testing and trying to find bugs since I basically creating my own <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley'/> </p>
<p>Wheels was donated some <a rel="nofollow" target="_blank" href="http://code.google.com/p/cfwheels/issues/detail?id=94&amp;colspec=ID%20Type%20Status%20Milestone%20Owner%20Summary">migration code</a> quite a <a rel="nofollow" target="_blank" href="http://groups.google.com/group/cfwheels/browse_frm/thread/3285bec6c47a345a?tvc=1&amp;q=migrations">while ago from Ryan</a>. One of my goals this weeks was to try to get migrations working. I figured tomorrow I fork the my local repo and see what I can do to get this in.</p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/614/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/614/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/614/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/614/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/614/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=614&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/0E5VztVpP9A" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
      </item>
      <item>
         <title>Geek Week Update: Day 2</title>
         <link>http://rip747.wordpress.com/2009/05/10/geek-week-update-day-2/</link>
         <description>Today was WAAAAY more productive then yesterday, way more, even though I went to bed at 6:30am this morning. I had to finish a project for a client and decided that I better get it out of the way before it started to haunt me and dip into my Wheels time.
The entire day was spent [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=612&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=612</guid>
         <pubDate>Sun, 10 May 2009 19:33:21 -0700</pubDate>
         <content:encoded><![CDATA[<p>Today was <strong>WAAAAY</strong> more productive then <a rel="nofollow" target="_blank" href="http://rip747.wordpress.com/2009/05/09/geek-week-update-day-1/">yesterday</a>, way more, even though I went to bed at 6:30am this morning. I had to finish a project for a client and decided that I better get it out of the way before it started to haunt me and dip into my Wheels time.</p>
<p>The entire day was spent revamping the testing framework for the last time (I hope) as I think I finally got it to where I want it to be. I did a bunch of optimizations to the testrunner and the output display. In doing so I discover the beauty of getComponentMetaData().</p>
<p>When running the tests, I had some logic in place that basically would inspect the meta data of the component you wanted to test to see if it is extending the wheels.test base component. There&#8217;s no reason to even waste the time searching for tests to run if the component won&#8217;t even have any and the only way it&#8217;s going to have tests is if it extends the wheels.test base component.</p>
<p>In order to do the check I would use createobject to create an instance of the component and then use getMetaData() to inspect the meta data. To me this seemed kinda dumb and it bothered me that I knew there had to be a better way and that&#8217;s when I found getCompoentMetaData(). Basically this does the same thing as getMetaData() but you don&#8217;t have to waste your time instantiating the component. All you have to do is pass the component path to getComponentMetaData() and it does the work for you and returns the exact same meta data that getMetaData() would. Very handy function indeed.</p>
<p>The other thing that was bothering me was the hackery way I was altering the application.wheels.modelPath and the application.wheels.modelComponentPath so that I could call test models with the model() function. Before I was performing my half ass hack inside the test cases themselves in the setup(), but I knew that this was going to get messy. It finally dawned on me to just add them into the testing framework itself for now. Later on we&#8217;ll think of a better way to pass a component path to model(), but as for right now this prevents me from having to do the hack manually and even though it&#8217;s still a hack, it&#8217;s a bit cleaner.</p>
<p>After finally getting the testing framework ironed out, I moved on to refactoring all the tests to get more output and separate the multiple calls to assert() I was doing in each test. All and all, Wheels not has 61 tests in 19 cases. Not bad for a start. It&#8217;s definitely <strong>NOT</strong> where I wanted to be at this point, but there&#8217;s no sense in rushing either.</p>
<p>Tonight I &#8216;m going to do some research into designing a testing database that I can use to properly test the model layer. I&#8217;m sure I&#8217;ll be totally OCD about the way it&#8217;s designed and will spend most of the day second guessing myself over and over. One of the ideas to get around this was was to look at maybe using the <a rel="nofollow" target="_blank" href="http://blogcfc.riaforge.org">blogCFC</a> database since it&#8217;s already been ported to like <strong>EVERY RDBMS</strong> engine out there (go Ray!). We&#8217;ll have to see.</p>
<p>Will update again tomorrow.</p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/612/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/612/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/612/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/612/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/612/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/612/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=612&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/xSnVO2RiACM" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
      </item>
      <item>
         <title>Geek Week Update: Day 1</title>
         <link>http://rip747.wordpress.com/2009/05/09/geek-week-update-day-1/</link>
         <description>So how is it going so far? HORRIBLE!
Well first off, I updated my cygwin install with the latest version of git and subervion-perl a couple of weeks ago and when I went to rebase with the CFWheels repo, it would die. Only one commit at a time would be pulled down and then errors all [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=608&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=608</guid>
         <pubDate>Sat, 09 May 2009 18:27:58 -0700</pubDate>
         <content:encoded><![CDATA[<p>So how is it going so far? <strong>HORRIBLE!</strong></p>
<p>Well first off, I updated my cygwin install with the latest version of git and subervion-perl a couple of weeks ago and when I went to rebase with the <a rel="nofollow" target="_blank" href="http://www.cfwheels.org/">CFWheels</a> repo, <a rel="nofollow" target="_blank" href="http://rctay.spaces.live.com/blog/cns!59D3BFCD027B09E5!792.entry">it would die</a>. Only one commit at a time would be pulled down and then errors all over the place. After searching on google I found out that this is a known problem with the latest subversion-perl so I had to downgrade. That took me about an hour to figure out. I could have <a rel="nofollow" target="_blank" href="http://thelilaeanbellis.com/shared/git-handle.patch">applied a patch</a> to the version that I had already installed, but I wasn&#8217;t in the mood to be jerking around like that and I figured I&#8217;d leave that stuff to the experts.</p>
<p>After that I was finally able to sync with the svn repo and get everything up and running.</p>
<p>With my confidence in the toliet, I started writing tests and finding bugs that needed to be fixed. When I found <a rel="nofollow" target="_blank" href="http://code.google.com/p/cfwheels/source/detail?r=2533">my first bug</a>, I decided to use trusty old tortoisesvn to write the patch and get it into trunk since I had local checkout already. That went well, but it wasn&#8217;t the best way to do it. I should be using git and git-svn to do this stuff and by using tortise I had to litterally duplicate the patch that I already had in git. <strong>NOT SMART!</strong></p>
<p>Anyhow, I continued coding and soon found <a rel="nofollow" target="_blank" href="http://code.google.com/p/cfwheels/source/detail?r=2535#">another bug</a> that needed some attention. &#8220;<strong>WHAT LUCK!</strong>&#8221; I thought because now I could submit the patch through git-svn like I should have been doing all along. <strong>BIG MISTAKE!</strong> Let&#8217;s just say that I fought with this for almost two hours, because I kept screwing up the workflow left and right and having to <strong>git reset &#8211;hard</strong>. Thank God that <a rel="nofollow" target="_blank" href="http://stackoverflow.com">stackoverflow.com</a> exists and after reading carefully, <a rel="nofollow" target="_blank" href="http://stackoverflow.com/questions/190431/is-git-svn-dcommit-after-merging-in-git-dangerous">the solution that I found</a>, and some playing around, I finally got the workflow down and was able to commit the patch.</p>
<p>All and all, I&#8217;m having a rough time. Maybe I&#8217;m just off my game today since I have a lot of other things in my head right now and my mental state isn&#8217;t in sync. No matter, tomorrow is another day and more coding.</p>
<p>Tomorrow I&#8217;m planning on completing the creation of a test database so that I can test out all the functions that depend on models and cleanning up the tests.</p>
<p>About the tests. Right now, the way I&#8217;m writing tests, I&#8217;ll have more then one assert in each test. From what I&#8217;ve seen and researched how other people write tests, this is the wrong way. You should have one assert for each test. After writing a bunch of them, this makes sense. Reason being is because if you have 5 asserts in one test and one of the asserts fails, the whole test fails. Now currently this isn&#8217;t a problem because I know it&#8217;s the last assert I wrote that failed. However, down the road I can see this becoming a problem when we&#8217;re trying to figure out where the test is failing. It&#8217;s not like I want the rest of the team to be commenting out asserts until they find the one thats failing. I come to the conclusion at this point that I&#8217;m going to have to rewrite all the tests I&#8217;ve created into this new format. Oh well it&#8217;s what learning is all about and the reason I love doing open source stuff.</p>
<p>I&#8217;ll update again tomorrow.</p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/608/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/608/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/608/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/608/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/608/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=608&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/A5pXWq60PpM" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
      </item>
      <item>
         <title>CFWheels Geek Week scheduled</title>
         <link>http://rip747.wordpress.com/2009/04/27/cfwheels-geek-week-scheduled/</link>
         <description>I finally got the dates to take off and GEEK OUT ON WHEELS (I like the way that sounds)! I&amp;#8217;ll be officially off from May 9th &amp;#8211; May 17th.
Again, if you want to help in anyway, either use google code or github to check out the code. &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=603&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=603</guid>
         <pubDate>Mon, 27 Apr 2009 07:59:58 -0700</pubDate>
         <content:encoded><![CDATA[<p>I finally got the dates to take off and <a rel="nofollow" target="_blank" href="http://cfwheels.org/"><strong>GEEK OUT ON WHEELS</strong></a> (I like the way that sounds)! I&#8217;ll be officially off from May 9th &#8211; May 17th.</p>
<p>Again, if you want to help in anyway, either use <a rel="nofollow" target="_blank" href="http://code.google.com/p/cfwheels/">google code</a> or <a rel="nofollow" target="_blank" href="http://github.com/rip747/cfwheels/tree/master">github</a> to check out the code.</p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/603/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/603/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/603/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/603/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/603/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=603&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/iMma61u77yU" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
      </item>
      <item>
         <title>CFWheels: 0.9.1 now available</title>
         <link>http://rip747.wordpress.com/2009/04/27/cfwheels-091-now-available/</link>
         <description>Quick annoucement that we have just released version 0.9.1 of CFWheels! &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&amp;blog=295460&amp;post=601&amp;subd=rip747&amp;ref=&amp;feed=1"/&gt;</description>
         <guid isPermaLink="false">http://rip747.wordpress.com/?p=601</guid>
         <pubDate>Mon, 27 Apr 2009 07:47:25 -0700</pubDate>
         <content:encoded><![CDATA[<p>Quick annoucement that we have just released version <a rel="nofollow" target="_blank" href="http://www.cfwheels.org/download">0.9.1</a> of <a rel="nofollow" target="_blank" href="http://www.cfwheels.org/">CFWheels</a>!</p>
<br /> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/rip747.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rip747.wordpress.com/601/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/rip747.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rip747.wordpress.com/601/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/rip747.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rip747.wordpress.com/601/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/rip747.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rip747.wordpress.com/601/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/rip747.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rip747.wordpress.com/601/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rip747.wordpress.com&blog=295460&post=601&subd=rip747&ref=&feed=1"/><img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/r-JozY4eSaI" height="1" width="1"/>]]></content:encoded>
         <media:content url="http://1.gravatar.com/avatar/f09f0a0d45c19276540a9899d0e6b667?s=96&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
            <media:title>rip747</media:title>
         </media:content>
      </item>
      <item>
         <title>Railo really is fast!</title>
         <link>http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/railo-really-is-fast--198</link>
         <description>I&amp;apos;ve had a few hours spare so thought I&amp;apos;d see for myself if Railo is as fast as I&amp;apos;ve heard. Well, after running a few of my own mini applications I can backup the claims.&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/CCXiFCuGwss" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/198</guid>
         <pubDate>Thu, 02 Apr 2009 12:52:00 -0700</pubDate>
      </item>
      <item>
         <title>Cfwheels Sample application</title>
         <link>http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/cfwheels-sample-application-145</link>
         <description>This is a really simple example of getting and displaying data from a database using the ColdFusion of Wheels framework. I should point out that I am not an expert, this is just me learning!&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/-FUMAQxmWls" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/145</guid>
         <pubDate>Tue, 23 Sep 2008 06:29:00 -0700</pubDate>
      </item>
      <item>
         <title>Dynamic Sub-Domain Redirect</title>
         <link>http://riahaiku.blogspot.com/2008/09/dynamic-sub-domain-redirect.html</link>
         <description>&lt;p&gt;Ever wanted an easy to implement, dynamic sub-domain redirect built into your Coldfusion project? Well, here's something I've done using Coldfusion on Wheels' easy-to-append Application.cfc functions, along with a Controller that handles the business logic for the handed-in sub-domain.&lt;/p&gt;
&lt;p&gt;Edit the &lt;code&gt;events&lt;/code&gt;'s &lt;code&gt;onrequeststart.cfm&lt;/code&gt; to have the following:&lt;/p&gt;
&lt;ol&gt; &lt;li&gt;A variable to store the current CGI.SERVER_NAME&lt;/li&gt; &lt;li&gt;A regex (provided below) to parse the data&lt;/li&gt; &lt;li&gt;An if-test to evaluate the results after parsing&lt;/li&gt; &lt;li&gt;A redirect/cflocation to the action of choice&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It could look something like this:&lt;/p&gt;
&lt;p style="font:9.0px Monaco;"&gt;&lt;span style=""&gt;&amp;lt;cfset testPath = ReReplace(CGI.SERVER_NAME, "&amp;#92;.&amp;#92;w*&amp;#92;w*", "", "all")&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font:9.0px Monaco;"&gt;&lt;span style=""&gt;&amp;lt;cfif testPath DOES NOT CONTAIN "www" and testPath DOES NOT CONTAIN "your_domain_here" &amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font:9.0px Monaco;"&gt;&lt;span style=""&gt;&amp;lt;cflocation url="http://www.your_domain_here.com/index.cfm/controller/?your_var=#testPath#"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font:9.0px Monaco;"&gt;&amp;lt;/cfif&amp;gt;&lt;/p&gt;
&lt;p&gt;That's it! Just make sure you have a controller that actually does something (like display certain data based on the handed-in dynamic sub-domain) and you're good to go.&lt;/p&gt;
&lt;p&gt;Thanks to Matthew over at the &lt;a rel="nofollow" target="_blank" href="http://denverdev.blogspot.com/2008/09/dns-tertiary-subdomain-tricks-for-web.html" title="Devnver Dev"&gt;Denver Dev&lt;/a&gt; blog for the help on the regex.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626481988039614050-1713333935790822543?l=riahaiku.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/9DhD1hCq-Js" height="1" width="1"/&gt;</description>
         <author>Jordan M</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-626481988039614050.post-1713333935790822543</guid>
         <pubDate>Sat, 06 Sep 2008 09:09:00 -0700</pubDate>
      </item>
      <item>
         <title>Simplified Scope with CFW</title>
         <link>http://riahaiku.blogspot.com/2008/09/simplified-scope-with-cfw.html</link>
         <description>&lt;p&gt;So as of the start of my entries here, I've really been focused on CFW (Coldfusion Wheels). As I've continued to review and play with some application scenarios, I'm finding a number of really handy simplifications CFW has introduced that trump the standard approach of non-framework based Coldfusion deployments.&lt;/p&gt;
&lt;p&gt;The one that got my attention today was the &lt;code&gt;param&lt;/code&gt; struct. Rather than having a URL "scope" and a "form" scope and some CGI variables (for identifying pathing domain, etc.), everything's tossed into the &lt;code&gt;param&lt;/code&gt; for CFW.&lt;/p&gt;
&lt;p&gt;
Not only does this brain damage of persisting variables from different structures, it just really cleans up code.
&lt;/p&gt;
&lt;p&gt;
Go ahead, check it out: &lt;a rel="nofollow" target="_blank" href="http://www.cfwheels.com/docs/chapter/request-handling" title="The Params Struct in CFW"&gt;The Params Struct in CFW&lt;/a&gt;
&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626481988039614050-3819258137969949671?l=riahaiku.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/-YBw7izzs1M" height="1" width="1"/&gt;</description>
         <author>Jordan M</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-626481988039614050.post-3819258137969949671</guid>
         <pubDate>Sat, 06 Sep 2008 08:55:00 -0700</pubDate>
      </item>
      <item>
         <title>CFWheels Starters</title>
         <link>http://riahaiku.blogspot.com/2008/09/cfwheels-starters.html</link>
         <description>&lt;p&gt;The most important aspect of the Coldfusion on Wheels (CFW) framework is the MVC--model view controller--architecture and the highly extendable aspects that CFW offers. Binding views and controls is as easy as implementing a Coldfusion Component (CFC) within the "controllers" folder (as of version 0.8.1) and a matching CFM page in the "views" folder.&lt;/p&gt;
&lt;p&gt;Where things really get interesting is the flexibility of Coldfusion's Application.cfc as implemented by CFW and how this can affect the view's content and rendering. Whereas a usual implementation of the Application.cfc would include a verbose document defining functions for the onApplicationStart, onError, onRequestStart, and so on, deployment of the CFW's Application.cfc is left alone.&lt;/p&gt;
&lt;p&gt;As I've discovered, rather then messing with the CFW core files (in case of a necessary upgrade), you can simply drop in a Application.cfc corresponding function-named CFC within the CFW's "events" directory and the code will be called along with the same-named function of the Application.cfc.&lt;/p&gt;
&lt;p&gt;Documentation on this can be found &lt;a rel="nofollow" target="_blank" href="http://www.cfwheels.com/docs/chapter/event-handlers" title="CF on Wheels Documentation of Event Handlers"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now that rocks!&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626481988039614050-2255297826542305244?l=riahaiku.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/5uHHAikuRAc" height="1" width="1"/&gt;</description>
         <author>Jordan M</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-626481988039614050.post-2255297826542305244</guid>
         <pubDate>Fri, 05 Sep 2008 09:05:00 -0700</pubDate>
      </item>
      <item>
         <title>Coldfusion on Wheels</title>
         <link>http://riahaiku.blogspot.com/2008/09/coldfusion-on-wheels.html</link>
         <description>&lt;p&gt;I recently was searching for a quick, easy to implement Coldfusion framework, and came across &lt;a rel="nofollow" target="_blank" href="http://www.cfwheels.com" title="CF on Wheels"&gt;CF on Wheels&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Although it's not in a 1.0 release yet, the framework looks extremely promising. I've been working with it this week and from initial download to "hello world" tests of the deployment, I'm impressed.&lt;/p&gt;
&lt;p&gt;Whether you're running on a dedicated (Apache or IIS) server or a shared environment, the tidy URL writing and SEO-friendly pathing is a real clincher.&lt;/p&gt;
&lt;p&gt;More to come.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626481988039614050-5808192689777347133?l=riahaiku.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/U51s3jiCDPU" height="1" width="1"/&gt;</description>
         <author>Jordan M</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-626481988039614050.post-5808192689777347133</guid>
         <pubDate>Fri, 05 Sep 2008 07:43:00 -0700</pubDate>
      </item>
      <item>
         <title>What it's all about</title>
         <link>http://riahaiku.blogspot.com/2008/09/what-it-all-about.html</link>
         <description>&lt;p&gt;Welcome to the RIA Haiku blog. From here on out I'll be posting about the ins, and outs, of RIA development, the technologies I'm currently exploring, and tips I've come across which have helped in my software development career.&lt;/p&gt;
&lt;p&gt;As for the name, posts will focus on being concise and in three piece aspects.&lt;/p&gt;
&lt;p&gt;Look forward to the first post soon.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/626481988039614050-2531526945100790031?l=riahaiku.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/Klyv4ECOBPo" height="1" width="1"/&gt;</description>
         <author>Jordan M</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-626481988039614050.post-2531526945100790031</guid>
         <pubDate>Fri, 05 Sep 2008 07:38:00 -0700</pubDate>
      </item>
      <item>
         <title>ColdFusion on Wheels - table relationships</title>
         <link>http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/coldfusion-on-wheels-table-relationships-87</link>
         <description>If you have two tables in your database that have a one to many relationship then you need to set up the relationship between the two in ColdFusion on Wheels.For example if you have a posts table and a comments table (Note that ColdFusion on Wheels&amp;amp;hellip&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/cv3yTqTGRtg" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/87</guid>
         <pubDate>Wed, 28 May 2008 08:04:00 -0700</pubDate>
      </item>
      <item>
         <title>Coldfusion on wheels</title>
         <link>http://www.cfframeworks.com/blog/index.cfm/2008/4/23/Coldfusion-on-wheels</link>
         <description>As &lt;a rel="nofollow" target="_blank" href='http://www.forta.com/blog/index.cfm/2008/4/23/ColdFusion-On-Wheels-7-Beta-Released'&gt;Mr Forta&lt;/a&gt; has pointed out over on his blog the &lt;a rel="nofollow" target="_blank" href='http://www.cfwheels.com/'&gt;CFWheels&lt;/a&gt; chaps have released an update to their framework. This framework has been quite for a while so im looking forward to checking it out again. &lt;blockquote&gt; ColdFusion on Wheels provides fast application development, a great organization system for your code, and is just plain fun to use. One of our biggest goals is for you to be able to get up and running with Wheels quickly. We want for you to be able to learn it as rapidly as it is to write applications with it.
&lt;/blockquote&gt; &lt;a rel="nofollow" target="_blank" href='http://www.cfwheels.com/blog/'&gt;Chris has blogged here whats new&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/34FCqkb4nd0" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.cfframeworks.com/blog/index.cfm/2008/4/23/Coldfusion-on-wheels</guid>
         <pubDate>Wed, 23 Apr 2008 15:56:00 -0700</pubDate>
         <category>ColdFusion on Wheels</category>
      </item>
      <item>
         <title>ColdFusion on Wheels 0.7 released</title>
         <link>http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/coldfusion-on-wheels-0-7-released-69</link>
         <description>CFWheels, the ColdFusion framework inspired by Ruby on Wheels has just reached version 0.7. I&amp;apos;ve just been reading the docs and really like some of the features it has. It is an MVC framework and as with all frameworks it has it&amp;apos;s strengths and weakn&amp;amp;hellip&lt;img src="http://feeds.feedburner.com/~r/cfwheels/bloggers/~4/ONSNgjIly00" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/69</guid>
         <pubDate>Wed, 23 Apr 2008 10:46:00 -0700</pubDate>
      </item>
   </channel>
</rss><!-- fe5.pipes.re3.yahoo.com uncompressed/chunked Fri Mar 12 21:13:50 PST 2010 -->
