<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ricardo Parente&#039;s Blog &#187; Components</title>
	<atom:link href="http://ricardo.parente.us/category/coldfusion/components/feed/" rel="self" type="application/rss+xml" />
	<link>http://ricardo.parente.us</link>
	<description>ColdFusion Developers Network</description>
	<lastBuildDate>Fri, 10 Feb 2012 17:13:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>ColdFusion and Basecamp&#039;s API</title>
		<link>http://ricardo.parente.us/2011/02/coldfusion-and-basecamps-api/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=coldfusion-and-basecamps-api</link>
		<comments>http://ricardo.parente.us/2011/02/coldfusion-and-basecamps-api/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 18:26:40 +0000</pubDate>
		<dc:creator>rparente</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Basecamp]]></category>

		<guid isPermaLink="false">http://ricardo.parente.us/?p=5353</guid>
		<description><![CDATA[Recently I began working on a project that will integrate with Basecamp&#8217;s API to fetch and sync data back and forth. My approach to the application was simple. I began by designing the interface, marking it up, and getting some basic jQuery interactions functional. After a few hours it was time to begin working with [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Recently I began working on a project that will integrate with  Basecamp&#8217;s API to fetch and sync data back and forth.  My approach to  the application was simple.  I began by designing the interface, marking  it up, and getting some basic jQuery interactions functional.  After a  few hours it was time to begin working with <a title="Basecamp's API" rel="external" href="http://developer.37signals.com/basecamp/" target="_blank">Basecamp&#8217;s rather simple to use API</a>.</p></blockquote>
<p>By <a title="Ryan Jeffords" href="http://www.ryanjeffords.com/section/about-me" target="_blank"><strong>Ryan Jeffords</strong></a></p>
<p><a title="ColdFusion and Basecamp's API" href="http://www.ryanjeffords.com/blog/entry/coldfusion-and-basecamp-s-api" target="_blank"><strong>Read the complete article here.</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.parente.us/2011/02/coldfusion-and-basecamps-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lorem Ipsum ColdFusion Builder Extension, by Matt Gifford</title>
		<link>http://ricardo.parente.us/2010/03/lorem-ipsum-coldfusion-builder-extension-by-matt-gifford/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lorem-ipsum-coldfusion-builder-extension-by-matt-gifford</link>
		<comments>http://ricardo.parente.us/2010/03/lorem-ipsum-coldfusion-builder-extension-by-matt-gifford/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 21:07:39 +0000</pubDate>
		<dc:creator>rparente</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion Builder]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[CF_Lipsum]]></category>
		<category><![CDATA[Lipsum Generator]]></category>
		<category><![CDATA[Matt Gilfford]]></category>
		<category><![CDATA[Tim Blair]]></category>

		<guid isPermaLink="false">http://ricardo.parente.us/?p=2041</guid>
		<description><![CDATA[Matt Gifford created the &#8220;Lipsum Generator&#8221; for ColdFusion Builder based on the CFC Lipsum written by Tim Blair. Both products are posted on RiaForge.org.  As himself said, &#8220;you have to love the CF community and sharing code&#8221;. Here is the link to his article.]]></description>
			<content:encoded><![CDATA[<p>Matt Gifford created the &#8220;<a title="Lipsum Generator" href="http://lipsum.riaforge.org/" target="_blank"><strong>Lipsum Generator</strong></a>&#8221; for ColdFusion Builder based on the CFC <a title="CF_LipSum" href="http://cflipsum.riaforge.org/" target="_blank"><strong>Lipsum</strong></a> written by <a title="Tim Blair" href="http://tim.bla.ir/" target="_blank"><strong>Tim Blair</strong></a>. Both products are posted on RiaForge.org.  As himself said, &#8220;you have to love the CF community and sharing code&#8221;.</p>
<p><a title="Lorem Ipsun ColdFusion Builder Extension" href="http://www.mattgifford.co.uk/lorem-ipsum-coldfusion-builder-extension/" target="_blank"><strong>Here is the link to his article</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.parente.us/2010/03/lorem-ipsum-coldfusion-builder-extension-by-matt-gifford/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion Twitter Library Updated</title>
		<link>http://ricardo.parente.us/2010/02/coldfusion-twitter-library-updated/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=coldfusion-twitter-library-updated</link>
		<comments>http://ricardo.parente.us/2010/02/coldfusion-twitter-library-updated/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 20:12:29 +0000</pubDate>
		<dc:creator>rparente</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Components]]></category>

		<guid isPermaLink="false">http://ricardo.parente.us/?p=1822</guid>
		<description><![CDATA[<br />
<b>Warning</b>:  fopen(/a0030277fc9284d75cab3c6e1bc40cf06b4fa128) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Permission denied in <b>/home1/ricards2/public_html/wp-content/plugins/fv-code-highlighter/Includes/Cache.php</b> on line <b>69</b><br />
The ColdFusion library to communicate with the Twitter API was written by a friend from Brazil, Pedro Claudio, and it is available at RiaForge. Library that enables integration of ColdFusion with the Twitter API. Usage: 1 2 3 4 5 6 &#60;cfscript&#62; twitter = createObject('component','Twitter').init('username','password'); /* sent message */ xmlString = twitter.updateStatus('Message for your friend','FriendID','xml'); [...]]]></description>
			<content:encoded><![CDATA[<br />
<b>Warning</b>:  fopen(/a0030277fc9284d75cab3c6e1bc40cf06b4fa128) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Permission denied in <b>/home1/ricards2/public_html/wp-content/plugins/fv-code-highlighter/Includes/Cache.php</b> on line <b>69</b><br />
<p>The ColdFusion library to communicate with the Twitter API was written by a friend from Brazil, <a title="Pedro Claudio Silva" href="http://blog.pcsilva.com/en/index.cfm" target="_blank"><strong>Pedro Claudio</strong></a>, and it is available at <a title="CF_Twitter Library" href="http://cftwitterlib.riaforge.org/" target="_blank"><strong>RiaForge.</strong></a></p>
<p>Library that enables integration of ColdFusion with the Twitter API.</p>
<p>Usage:</p>
<div class="fvch-code">
<pre class="fvch-line-numbers">1
2
3
4
5
6
</pre>
<pre><span class="html"><span class="html-other-element">&lt;cfscript&gt;</span>
twitter = createObject('component','Twitter').init('username','password');
/* sent message */
xmlString = twitter.updateStatus('Message for your friend','FriendID','xml');
xmlString = twitter.updateStatus('Message','','xml');
<span class="html-other-element">&lt;/cfscript&gt;</span></span></pre>
</div>
<p><a title="RiaForge" href="http://cftwitterlib.riaforge.org/" target="_blank">http://cftwitterlib.riaforge.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.parente.us/2010/02/coldfusion-twitter-library-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating Globally-Accessible User Defined Functions</title>
		<link>http://ricardo.parente.us/2009/12/creating-globally-accessible-user-defined-functions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creating-globally-accessible-user-defined-functions</link>
		<comments>http://ricardo.parente.us/2009/12/creating-globally-accessible-user-defined-functions/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 16:07:10 +0000</pubDate>
		<dc:creator>rparente</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Undocumented Features & Functions]]></category>
		<category><![CDATA[getFusionContent]]></category>
		<category><![CDATA[getPageContent]]></category>
		<category><![CDATA[hiddenScope]]></category>

		<guid isPermaLink="false">http://ricardo.parente.us/?p=1233</guid>
		<description><![CDATA[Congratulations Ben Nadel for your experiences on undocumented features of ColdFusion ! I liked the idea of playing with hidden features. I&#8217;m wrinting this re-post just to remind me where I can get this information later. getPageContext().getFusionContext().hiddenScope Here is the link to the full article on Ben&#8217;s blog.]]></description>
			<content:encoded><![CDATA[<p>Congratulations <a title="Ben Nadel's Blog" href="http://www.bennadel.com/index.cfm" target="_blank"><strong>Ben Nadel</strong></a> for your experiences on undocumented features of ColdFusion !<br />
I liked the idea of playing with hidden features.</p>
<p>I&#8217;m wrinting this re-post just to remind me where I can get this information later.<br />
<em> getPageContext().getFusionContext().hiddenScope</em></p>
<p>Here is the <a title="Creating Globallu-Accessible User Defined Functions" href="http://www.bennadel.com/blog/1775-Creating-Globally-Accessible-User-Defined-Functions-In-ColdFusion.htm" target="_blank"><strong>link</strong> </a>to the full article on Ben&#8217;s blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.parente.us/2009/12/creating-globally-accessible-user-defined-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scripting Functions for ColdFusion 7 Users</title>
		<link>http://ricardo.parente.us/2009/02/scripting-functions-for-coldfusion-7-users/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scripting-functions-for-coldfusion-7-users</link>
		<comments>http://ricardo.parente.us/2009/02/scripting-functions-for-coldfusion-7-users/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 04:31:55 +0000</pubDate>
		<dc:creator>rparente</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[cfabort]]></category>
		<category><![CDATA[cfdirectory]]></category>
		<category><![CDATA[cfdump]]></category>
		<category><![CDATA[cffile]]></category>
		<category><![CDATA[cfflush]]></category>
		<category><![CDATA[cflocation]]></category>
		<category><![CDATA[cfquery]]></category>
		<category><![CDATA[cfscript]]></category>
		<category><![CDATA[fileWriteUTF8]]></category>
		<category><![CDATA[mailIt]]></category>
		<category><![CDATA[postError]]></category>
		<category><![CDATA[trace]]></category>

		<guid isPermaLink="false">http://ricardo.parente.us/?p=363</guid>
		<description><![CDATA[In my work environment we have ColdFusion 7 and I like to write my templates in cfscript, but since CF7 does not support some new scripting functions in CF8, I wrote a component to mimic those functions and allow me to stay focused on the scripting. Well, it is not my original idea, I saw [...]]]></description>
			<content:encoded><![CDATA[<p>In my work environment we have ColdFusion 7 and I like to write my templates in cfscript, but since CF7 does not support some new scripting functions in CF8, I wrote a component to mimic those functions and allow me to stay focused on the scripting.</p>
<p>Well, it is not my original idea, I saw it from other blogs, but I added some value to it with some  additional functions.<br />
You may download the component <a href="http://ricardo.parente.us/wp-content/downloads/code/cffunctions.zip"><strong>here</strong></a></p>
<p><span id="more-363"></span><br />
First of all, I instantiate the component as a local variable called CF, then I call it from the script as cf.functionName.<br />
Here is the list of functions available in the component:</p>
<ul>
<li>directory: cf.directory(action, directory, newdirectory, sort, recurse,filter)</li>
<li>file: cf.file(action, file, output, source, destination, charset)</li>
<li>dump: cf.dump(var, label, expand)</li>
<li>abort: cf.abort()</li>
<li>query: cf.query(query, datasource)</li>
<li>location: cf.location(url, addToken)</li>
<li>flush: cf.flush(interval) do not use it if you have a cflocation in your template otherwise the cflocation will not work.</li>
<li>trace: cf.trace(text, interval, crlf) used to display messages on screen during the process for debugging purposes. Same as cf.flush, if you use it, any cflocation in your template will not work.</li>
<li>mailIt: cf.mailIt(mailFrom, mailTo, subject, msg, failTo, mailType) sends email messages</li>
<li>postError: cf.postError(message, sendMail, withTrace, abort, cfLogFile, webmasterEmail, errorType, thread, date, time, aplication, template, line) logs the error, sends message, abort, etc.</li>
<li>fileWriteUTF8: cf.fileWriteUTF8(sFilePath, sInput) creates an empty text file with the BOM header for UTF-8, then you can append to it using cf.file</li>
</ul>
<p>Here is the component:<code>&lt;cfcomponent><br />
&lt;cfset this.logFile = &quot;myLogFile&quot; /><br />
&lt;cfset this.webmasterEmail = &quot;webmaster@myDomain.com&quot; /><br />
&lt;cfset this.applicationName = &quot;myApplication&quot; /><br />
&lt;cffunction name=&quot;resultInit&quot; access=&quot;private&quot; output=&quot;false&quot; returntype=&quot;Any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfscript><br />
&nbsp;&nbsp;&nbsp;result = structNew();<br />
&nbsp;&nbsp;&nbsp;result.status = true;<br />
&nbsp;&nbsp;&nbsp;result.content = &quot;&quot;;<br />
&nbsp;&nbsp;&nbsp;return result;<br />
&nbsp;&nbsp;&nbsp;&lt;/cfscript><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;directory&quot; access=&quot;remote&quot; output=&quot;true&quot; returntype=&quot;any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;action&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;directory&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;newdirectory&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;sort&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;name asc&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;recurse&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;false&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;filter&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfset result = resultInit() /><br />
&nbsp;&nbsp;&nbsp;&lt;cfswitch expression=&quot;#arguments.action#&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;create&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;cfdirectory&quot; type=&quot;exclusive&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfdirectory action=&quot;create&quot; directory=&quot;#arguments.directory#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;delete&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;cfdirectory&quot; type=&quot;exclusive&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfdirectory action=&quot;delete&quot; directory=&quot;#arguments.directory#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch type=&quot;any&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;rename&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;cfdirectory&quot; type=&quot;exclusive&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfdirectory action=&quot;rename&quot; directory=&quot;#arguments.directory#&quot; newdirectory=&quot;#arguments.newdirectory#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch type=&quot;any&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;list&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;cfdirectory&quot; type=&quot;readonly&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfdirectory action=&quot;list&quot; directory=&quot;#arguments.directory#&quot; name=&quot;result.content&quot; sort=&quot;#arguments.sort#&quot; filter=&quot;#arguments.filter#&quot; recurse=&quot;#arguments.recurse#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch type=&quot;any&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfdefaultcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = structNew() /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content.message = &quot;Invalid operation requested!&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content.detail = &quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfdefaultcase><br />
&nbsp;&nbsp;&nbsp;&lt;/cfswitch><br />
&nbsp;&nbsp;&nbsp;&lt;cfreturn result /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;file&quot; access=&quot;remote&quot; output=&quot;true&quot; returntype=&quot;any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;action&quot; type=&quot;string&quot; required=&quot;true&quot; default=&quot;read&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;file&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;output&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;source&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;destination&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;charset&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;UTF-8&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfset result = resultInit() /><br />
&nbsp;&nbsp;&nbsp;&lt;cfswitch expression=&quot;#arguments.action#&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;write&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;myComponent-cffile&quot; type=&quot;exclusive&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cffile action=&quot;write&quot; file=&quot;#arguments.file#&quot; output=&quot;#arguments.output#&quot; charset=&quot;#arguments.charset#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;copy&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;myComponent-cffile&quot; type=&quot;exclusive&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cffile action=&quot;copy&quot; source=&quot;#arguments.source#&quot; destination=&quot;#arguments.destination#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;rename&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;myComponent-cffile&quot; type=&quot;exclusive&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cffile action=&quot;rename&quot; source=&quot;#arguments.source#&quot; destination=&quot;#arguments.destination#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;move&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;myComponent-cffile&quot; type=&quot;exclusive&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cffile action=&quot;move&quot; source=&quot;#arguments.source#&quot; destination=&quot;#arguments.destination#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;delete&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;myComponent-cffile&quot; type=&quot;exclusive&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cffile action=&quot;delete&quot; file=&quot;#arguments.file#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;read&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;myComponent-cffile&quot; type=&quot;readonly&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cffile action=&quot;read&quot; file=&quot;#arguments.file#&quot; variable=&quot;result.content&quot; charset=&quot;#arguments.charset#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcase value=&quot;append&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflock name=&quot;myComponent-cffile&quot; type=&quot;exclusive&quot; timeout=&quot;10&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cffile action=&quot;append&quot; file=&quot;#arguments.file#&quot; output=&quot;#arguments.output#&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cflock><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfdefaultcase><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = structNew() /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content.message = &quot;Invalid operation requested!&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content.detail = &quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfdefaultcase><br />
&nbsp;&nbsp;&nbsp;&lt;/cfswitch><br />
&nbsp;&nbsp;&nbsp;&lt;cfreturn result /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;dump&quot; access=&quot;remote&quot; output=&quot;true&quot; returntype=&quot;any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;var&quot; type=&quot;any&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;label&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;expand&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfdump var=&quot;#arguments.var#&quot; label=&quot;#arguments.label#&quot; expand=&quot;#arguments.expand#&quot; /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;abort&quot; access=&quot;remote&quot; output=&quot;false&quot; returntype=&quot;any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfabort /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;query&quot; access=&quot;remote&quot; output=&quot;false&quot; returntype=&quot;Any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;query&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;datasource&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.mainDSN#&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfset result = resultInit() /><br />
&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfquery name=&quot;result.content&quot; datasource=&quot;#arguments.datasource#&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#arguments.query#<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfquery><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch><br />
&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&lt;cfreturn result /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;location&quot; access=&quot;remote&quot; output=&quot;true&quot; returntype=&quot;Any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;url&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;addToken&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;false&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cflocation url=&quot;#arguments.url#&quot; addtoken=&quot;#arguments.addToken#&quot; /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;flush&quot; access=&quot;remote&quot; output=&quot;true&quot; returntype=&quot;Any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;interval&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;10&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfflush interval=&quot;#arguments.interval#&quot; /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;trace&quot; access=&quot;remote&quot; output=&quot;true&quot; returntype=&quot;Any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;interval&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;10&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;crlf&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfoutput>&lt;cfif arguments.crlf>&lt;br/>&lt;/cfif>#arguments.text#&lt;/cfoutput><br />
&nbsp;&nbsp;&nbsp;&lt;cfflush interval=&quot;#arguments.interval#&quot; /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;mailIt&quot; access=&quot;remote&quot; output=&quot;false&quot; returntype=&quot;Any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;mailFrom&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;mailTo&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;subject&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;msg&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;failTo&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#this.webmasterEmail#&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;mailType&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;html&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfset result = resultInit() /><br />
&nbsp;&nbsp;&nbsp;&lt;cftry><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfmail from=&quot;#arguments.mailFrom#&quot; to=&quot;#arguments.mailTo#&quot; failto=&quot;#arguments.failTo#&quot; subject=&quot;#arguments.subject#&quot; type=&quot;#arguments.mailType#&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#arguments.msg#<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfmail><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfcatch><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.status = false /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result.content = cfcatch /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfcatch><br />
&nbsp;&nbsp;&nbsp;&lt;/cftry><br />
&nbsp;&nbsp;&nbsp;&lt;cfreturn result /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;postError&quot; access=&quot;remote&quot; output=&quot;true&quot; returntype=&quot;any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;message&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;true&quot; type=&quot;string&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;sendMail&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;boolean&quot; default=&quot;false&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;withTrace&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;boolean&quot; default=&quot;false&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;abort&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;boolean&quot; default=&quot;false&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;cfLogFile&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;string&quot; default=&quot;#this.applicationName#&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;webmasterEmail&quot;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;string&quot; default=&quot;#this.webmasterEmail#&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;errorType&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;string&quot; default=&quot;Any&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;thread&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;string&quot; default=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;date&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;string&quot; default=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;time&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;string&quot; default=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;application&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;string&quot; default=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;template&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;string&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;line&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;required=&quot;false&quot; type=&quot;string&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfset result = resultInit() /><br />
&nbsp;&nbsp;&nbsp;&lt;cfif len(trim(arguments.cfLogFile))><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflog file=&quot;#arguments.cfLogFile#&quot; application=&quot;#arguments.application#&quot; type=&quot;#arguments.errorType#&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text=&quot;#arguments.message#&quot; />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;cfelse><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cflog log=&quot;Application&quot; application=&quot;#arguments.application#&quot; type=&quot;#arguments.errorType#&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text=&quot;#arguments.message#&quot; />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&lt;cfif arguments.sendMail><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfsavecontent variable=&quot;msg&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfoutput><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;body><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;head><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title>Error Message&lt;/title><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/head><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&quot;wrapper&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&quot;title&quot;>ERROR Occurred in #this.applicationName#&lt;/div><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&quot;text&quot;>Message time stamp: #dateFormat(now(),&quot;yyyy-mm-dd&quot;)# #timeFormat(now(),&quot;HH:mm:ss&quot;)#&lt;/div><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif len(trim(arguments.template))><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&quot;template&quot;>Template: #arguments.template#&lt;/div><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif len(trim(arguments.line))><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&quot;line&quot;>Line: #arguments.line#&lt;/div><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&quot;text&quot;>#arguments.message#&lt;/div><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/body><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfoutput><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfsavecontent><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset result = mailIt(&quot;errorHandler@myDomain.com&quot;, &quot;#arguments.webmasterEmail#&quot;, &quot;Error occurred in #this.applicationName#&quot;, &quot;#msg#&quot;) /><br />
&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&lt;cfif arguments.withTrace><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset trace(arguments.message) /><br />
&nbsp;&nbsp;&nbsp;&lt;/cfif>&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;cfif arguments.abort><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfabort /><br />
&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&lt;cfreturn result /><br />
&lt;/cffunction><br />
&lt;cffunction name=&quot;fileWriteUTF8&quot; access=&quot;remote&quot; output=&quot;false&quot; returntype=&quot;Any&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;sFilePath&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;sInput&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfscript><br />
&nbsp;&nbsp;&nbsp;// declare jWrite object<br />
&nbsp;&nbsp;&nbsp;var jWriter = &quot;&quot;;<br />
&nbsp;&nbsp;&nbsp;// create the file stream<br />
&nbsp;&nbsp;&nbsp;var jFile = createobject(&quot;java&quot;, &quot;java.io.File&quot;).init(sFilePath);<br />
&nbsp;&nbsp;&nbsp;var jStream = createobject(&quot;java&quot;, &quot;java.io.FileOutputStream&quot;).init(jFile);<br />
&nbsp;&nbsp;&nbsp;result = resultInit();<br />
&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// output the UTF-8 BOM byte by byte directly to the stream<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jStream.write(239); // 0xEF<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jStream.write(187); // 0xBB<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jStream.write(191); // 0xBF<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// create the UTF-8 file writer and write the file contents<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jWriter = createobject(&quot;java&quot;, &quot;java.io.OutputStreamWriter&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jWriter.init(jStream, &quot;UTF-8&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jWriter.write(sInput);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// flush the output, clean up and close<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jWriter.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jWriter.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jStream.close();<br />
&nbsp;&nbsp;&nbsp;} catch (Any excpt) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.status = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.content = excpt;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;return result;<br />
&nbsp;&nbsp;&nbsp;&lt;/cfscript><br />
&lt;/cffunction><br />
&lt;/cfcomponent><br />
</code><br />
So, from my template I will call the cffile function for example like this:<br />
<code>&lt;cfscript><br />
cf = createObject(&quot;component&quot;,&quot;cffunctions&quot;);<br />
result = cf.file(action=&quot;read&quot; file=expandPath(myFile.txt);<br />
if (not result.status) cf.postError (result.content.message &#038; &quot;&lt;br />&quot; &#038; result.content.detail, true, true, true); // this will log the error, send a message, show on screen and abort<br />
myDoc = result.content;<br />
&lt;/cfscript><br />
</code><br />
Another example, listing a directory and deleting its contents:<br />
<code>&lt;cfscript><br />
result = cf.directory(action=&quot;list&quot;, directory=expandPath(myDirectory), filter=&quot;*.jpg&quot;);<br />
if (not result.status) cf.postError(result.content.message &#038; &quot;&lt;br/>&quot; &#038; result.content.detail, true, true, true); it logs error, sends message, outputs error and aborts<br />
qDir = result.content;<br />
for (i=1; i lte qDir.recordCount; i=i+1){<br />
&nbsp;&nbsp;&nbsp;result = cf.file(action=&quot;delete&quot;, file=qDir.directory[i] &#038; &quot;\&quot; &#038; qdir.name[i]);<br />
&nbsp;&nbsp;&nbsp;if (not result.status) cf.postError(result.content.message &#038; &quot;&lt;br/>&quot; &#038; result.content.detail, true, true, false); // it logs error, sends message, output error and continue without aborting<br />
}<br />
</code><br />
Generating a UTF-8 file with BOM header:<br />
<code>&lt;cfscript><br />
result = cf.fileWriteUTF8(expandPath(myFile.xml), &#39;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#39;);<br />
if (not result.status) cf.postError(result.content.message &#038; &quot; - &quot; result.content.detail, true, true, true);<br />
//.... here you add your logic to generate the content for the file<br />
result = cf.file(action=&quot;append&quot;, file=expandPath(myFile.xml), output=myContent, newLine=true);<br />
if (not result.status) cf.postError(result.content.message &#038; &quot; - &quot; result.content.detail, true, true, true);<br />
&lt;/cfscript><br />
</code><br />
Feel free to add more functions to the component, but please don&#8217;t forget to send me a copy so I can update mine too.</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.parente.us/2009/02/scripting-functions-for-coldfusion-7-users/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Query Sorted Results in HTML Table</title>
		<link>http://ricardo.parente.us/2008/10/query-sorted-results-in-html-table/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=query-sorted-results-in-html-table</link>
		<comments>http://ricardo.parente.us/2008/10/query-sorted-results-in-html-table/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 01:42:15 +0000</pubDate>
		<dc:creator>rparente</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://ricardo.parente.us/?p=234</guid>
		<description><![CDATA[Nowadays we have ways of sorting the display results from a query without resubmitting the page by using Ajax. Long time ago I wrote a custom tag with the help of my coworker Jason Sheppard to do the same by submitting the page with the new sort field information. So, for those who do not [...]]]></description>
			<content:encoded><![CDATA[<p>Nowadays we have ways of sorting the display results from a query without resubmitting the page by using Ajax. Long time ago I wrote a custom tag with the help of my coworker Jason Sheppard to do the same by submitting the page with the new sort field information.</p>
<p>So, for those who do not want Ajax or do not know how to do it, I converted my custom tag into a component and I&#8217;m making it available here. Feel free to implement more features, just don&#8217;t forget to send me a copy.</p>
<p>You may download the code <a title="Sorted Query Display" href="http://ricardo.parente.us/wp-content/downloads/code/sortedQueryDisplay.zip" target="_blank"><strong>here</strong></a>.</p>
<p><span id="more-234"></span></p>
<p>To call the function you will need to pass the following required arguments:</p>
<ul>
<li>datasource: your datasource</li>
<li>tableName: the data table</li>
<li>fieldNames: the columns you want to retrieve</li>
</ul>
<p>There are other optional parameters:</p>
<ul>
<li>whereClause</li>
<li>groupClause</li>
<li>sortBy</li>
<li>orderBy</li>
<li>loadURL</li>
<li>queryName</li>
<li>dbUserName</li>
<li>dbPassword</li>
<li>border</li>
<li>cellPadding</li>
<li>cellSpacing</li>
<li>thBgColor</li>
<li>tdBgColorEven</li>
<li>tdBgColorOdd</li>
<li>tdBgColor</li>
<li>rowStripes</li>
<li>thTextColor</li>
<li>tdTextColor</li>
<li>width</li>
<li>align</li>
<li>fontFamily</li>
<li>fontSize</li>
<li>thFontSize</li>
<li>isFusebox</li>
</ul>
<p>Here is the component:<br />
<code>&lt;cfcomponent displayname=&quot;sorteQueryDisplay&quot;><br />
&lt;cffunction name=&quot;qDisplay&quot; access=&quot;remote&quot; returntype=&quot;Any&quot; output=&quot;false&quot;><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;datasource&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;tableName&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;fieldList&quot; type=&quot;string&quot; required=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;whereClause&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;groupClause&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;sortBy&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;orderBy&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;loadURL&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#cgi.script_name#&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;queryName&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;qSorted&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;dbUserName&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;dbPassword&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;border&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;0&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;cellPadding&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;2&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;cellSpacing&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;1&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;thBgColor&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;gray&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;tdBgColorEven&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;ffffcc&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;tdBgColorOdd&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;f0f0f0&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;tdBgColor&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;Cornsilk&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;rowStripes&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;true&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;thTextColor&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;white&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;tdTextColor&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;navy&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;width&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;100%&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;align&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;left&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;fontFamily&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;Arial,Helvetica,Sans-serif&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;fontSize&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;9pt&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;thFontSize&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;11pt&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfargument name=&quot;isFusebox&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;false&quot; /><br />
&nbsp;&nbsp;&nbsp;&lt;cfquery name=&quot;#arguments.queryName#&quot; datasource=&quot;#arguments.datasource#&quot; dbUserName=&quot;#arguments.dbUserName#&quot; dbPassword=&quot;#arguments.dbPassword#&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select #arguments.fieldList#<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from #arguments.tableName#<br />
&nbsp;&nbsp;&nbsp;&lt;cfif len(trim(arguments.whereClause))><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where #arguments.whereClause#<br />
&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&lt;cfif len(trim(arguments.groupClause))><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group by #arguments.groupClause#<br />
&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&lt;cfif len(trim(arguments.sortBy))><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;order by #arguments.sortBy# #arguments.orderBy#<br />
&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&lt;/cfquery><br />
&nbsp;&nbsp;&nbsp;&lt;cfif arguments.fieldList is &quot;*&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset arguments.fieldList = evaluate(&quot;#arguments.queryName#.columnList&quot;)><br />
&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&lt;cfsavecontent variable=&quot;result&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfoutput><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;table border=&quot;#arguments.border#&quot; cellpadding=&quot;#arguments.cellPadding#&quot; cellspacing=&quot;#arguments.cellSpacing#&quot; width=&quot;#arguments.width#&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfloop list=&quot;#arguments.fieldList#&quot; delimiters=&quot;,&quot; index=&quot;field&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th style=&quot;font-family:#arguments.fontFamily#;font-size:#arguments.thFontSize#;color:#arguments.thTextColor#;background-color:#arguments.thBgColor#&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href=&quot;#arguments.loadURL#?#Querystring(cgi.QUERY_STRING,arguments.isFusebox)#&#038;sort=#field#&quot;>#field#&lt;/a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/th><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfloop><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfloop query=&quot;#arguments.queryName#&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfif arguments.rowStripes><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset bgcolor = &quot;#iif(evaluate(arguments.queryName &#038; &#39;.currentRow&#39;) mod 2,de(arguments.tdBgColorEven),de(arguments.tdBgColorOdd))#&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfelse><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfset bgcolor = arguments.tdBgColor><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfif><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cfloop list=&quot;#arguments.fieldList#&quot; delimiters=&quot;,&quot; index=&quot;field&quot;><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td style=&quot;font-family:#arguments.fontFamily#;font-size:#arguments.fontSize#;color:#arguments.tdTextColor#;background-color:#bgcolor#&quot;>#evaluate(arguments.queryName &#038; &quot;.&quot; &#038; field)#&lt;/td><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/cfloop><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr><br />
&nbsp;&nbsp;&nbsp;&lt;/cfloop><br />
&nbsp;&nbsp;&nbsp;&lt;/table><br />
&nbsp;&nbsp;&nbsp;&lt;/cfoutput><br />
&nbsp;&nbsp;&nbsp;&lt;/cfsavecontent><br />
&nbsp;&nbsp;&nbsp;&lt;cfreturn result /><br />
&lt;/cffunction><br />
&lt;cfscript><br />
function QueryString(str,isFusebox) {<br />
&nbsp;&nbsp;&nbsp;var newstr=&quot;&quot;;<br />
&nbsp;&nbsp;&nbsp;for (i=1;i LTE ListLen(str,&quot;&amp;&quot;); i=IncrementValue(i)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(not isFusebox){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (NOT ReFindNoCase(&quot;sort=&quot;, ListGetAt(str,i,&quot;&amp;&quot;)) AND NOT ReFindNoCase(&quot;ord=&quot;, ListGetAt(str,i,&quot;&amp;&quot;)) AND NOT ReFindNoCase(&quot;fuseaction=&quot;, ListGetAt(str,i,&quot;&amp;&quot;))) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newstr=ListAppend(newstr,ListGetAt(str,i,&quot;&amp;&quot;),&quot;&amp;&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (NOT ReFindNoCase(&quot;sort=&quot;, ListGetAt(str,i,&quot;&amp;&quot;)) AND NOT ReFindNoCase(&quot;ord=&quot;, ListGetAt(str,i,&quot;&amp;&quot;))) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newstr=ListAppend(newstr,ListGetAt(str,i,&quot;&amp;&quot;),&quot;&amp;&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;return newstr;<br />
}<br />
&lt;/cfscript><br />
&lt;/cfcomponent></code><br />
Here is how you call the component:<br />
<code>&lt;cfparam name=&quot;url.sort&quot; default=&quot;&quot; /><br />
&lt;cfparam name=&quot;url.ord&quot; default=&quot;&quot; /><br />
&lt;cfscript><br />
com = createObject(&quot;component&quot;,&quot;sortedQueryDisplay&quot;);<br />
result = com.qDisplay(<br />
	tableName = &quot;myTable&quot;<br />
,	datasource = &quot;myDatasource&quot;<br />
,	fieldList = &quot;productID,title,price&quot;<br />
,	sortBy = &quot;#url.sort#&quot;<br />
,	orderBy = &quot;#url.ord#&quot;<br />
);<br />
&lt;/cfscript><br />
&lt;cfoutput>#result#&lt;/cfoutput></code></p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.parente.us/2008/10/query-sorted-results-in-html-table/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

