<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

			<channel>
			<title>Matthew Williams - CFDev (and admin!) - ColdFusion 7.x</title>
			<link>http://www.geodesicgrafx.com/blog/index.cfm</link>
			<description>Who knows what lurks in the minds of men</description>
			<language>en-us</language>
			<pubDate>Tue, 07 Sep 2010 10:24:42 -0500</pubDate>
			<lastBuildDate>Wed, 01 Jul 2009 16:15:00 -0500</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>webmaster@geodesicgrafx.com</managingEditor>
			<webMaster>webmaster@geodesicgrafx.com</webMaster>
			<itunes:subtitle></itunes:subtitle>
			<itunes:summary></itunes:summary>
			<itunes:category text="Technology" />
			<itunes:category text="Technology">
				<itunes:category text="Podcasting" />
			</itunes:category>
			<itunes:category text="Technology">
				<itunes:category text="Tech News" />
			</itunes:category>
			<itunes:keywords></itunes:keywords>
			<itunes:author></itunes:author>
			<itunes:owner>
				<itunes:email>webmaster@geodesicgrafx.com</itunes:email>
				<itunes:name></itunes:name>
			</itunes:owner>
			<itunes:image href="" />
			<image>
				<url></url>
				<title>Matthew Williams - CFDev (and admin!)</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm</link>
			</image>
			<itunes:explicit>no</itunes:explicit>
			
			
			
			
			
			<item>
				<title>Google brought down my house of cards</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2009/7/1/Google-brought-down-my-house-of-cards</link>
				<description>
				
				For almost three years now we&apos;ve been running ColdFusion (well, really JRun) session based replication and failover on all of our hosted ColdFusion environs.  Things were great!  And then, we let google in the door to index our content.  Things went from &quot;great&quot;, to &quot;why is this always down??&quot;.  I spent far too much time looking at JVM settings, JRun settings, etc., but never really came up with a concrete answer as to what was happening.  Ultimately, we&apos;d see a deluge of errors about the failure of session replication in the log files and a complete breaking of failover and sometimes even the JRun -&gt; IIS connector.

Whilst searching for the session replication errors, I came across Sean Corfields postings across various blogs that replication just does not scale well, and that it remains a broken feature.  Up until a few months ago, I&apos;d argue this to be untrue.  However, it appears that replication works... if you can manage to keep the amount of crap you throw into shared memory scopes down to a minimum.  

It&apos;s been 4 days since I&apos;ve disabled session replication, and my servers have remained standing for an equal amount of time.  We&apos;ve been getting indexed by google (and others), and things are sailing along with nary a blip.  Next stop, creating a guide for users that want/need session based failover that can be accomplished in code.  Otherwise known as, &quot;Help me Sean Corfield, you&apos;re my only hope!&quot; ;).
				
				</description>
						
				
				<category>ColdFusion 7.x</category>				
				
				<category>JRun</category>				
				
				<category>Hosting</category>				
				
				<category>IIS</category>				
				
				<category>ColdFusion 8.x</category>				
				
				<pubDate>Wed, 01 Jul 2009 16:15:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2009/7/1/Google-brought-down-my-house-of-cards</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>PNG not showing using Built-in JRun webserver</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2009/2/4/PNG-not-showing-using-Builtin-JRun-webserver</link>
				<description>
				
				My friend Michael blogged about an issue he was having with viewing PNG files when using the built-in JRun webserver.  Just in case this should ever happen to you, here&apos;s the &lt;a href=&quot;http://www.blogacause.com/blogacause/blog/cfalchemist/2009/02/03/PNG-images-not-displaying-in-browser-not-caused-by-mime-issue&quot;&gt;link&lt;/a&gt;.

It appears I didn&apos;t get the link right.  It&apos;s fixed now.
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<category>JRun</category>				
				
				<category>ColdFusion 8.x</category>				
				
				<pubDate>Wed, 04 Feb 2009 01:45:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2009/2/4/PNG-not-showing-using-Builtin-JRun-webserver</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Error when entering lots of text view the body tag of a FarCry content item</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2009/1/27/Error-when-entering-lots-of-text-view-the-body-tag-of-a-FarCry-content-item</link>
				<description>
				
				I forgot that I&apos;ve seen this before, but I had a client trying to enter text (quite a bit, in fact) and it kept failing.  After finally getting all of the information on the incident, it turns out that the following error was being generated:

&lt;code&gt;
ErrorContext WDDX packet parse error at line 1, column 32001.
   Message WDDX packet parse error at line 1, column 32001. XML
   document structures must start and end within the same entity..
   StackTrace coldfusion.wddx.WddxDeserializationException: WDDX
   packet parse error at line 1, column 32001. XML document
   structures must start and end within the same entity
&lt;/code&gt;

I google&apos;d around a bit before I found the answer.  We&apos;re storing the body field as a CLOB (at least, I&apos;m pretty sure that&apos;s what it is).  The default buffer size for this in the ColdFusion administrator is 32k.  My text input went beyond that.  Whoops.  So, I made sure to check the box for CLOB (and turned on BLOB for good measure) and set the size to 128k.  Problem solved, and now they can enter a very long string of text into the database.  Just throwing this out there in case anyone else stumbles upon this issue.
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<category>ColdFusion 8.x</category>				
				
				<pubDate>Tue, 27 Jan 2009 14:27:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2009/1/27/Error-when-entering-lots-of-text-view-the-body-tag-of-a-FarCry-content-item</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Quick and dirty uptime monitor</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/3/15/Quick-and-dirty-uptime-monitor</link>
				<description>
				
				Although we use FusionReactor to determine the health of our servers on our team, the environment as a whole is still monitored by another group.  And they cannot access FusionReactor.  Our previous method of monitoring just a URL worked fine when the servers were not clustered.  Now, however, you can&apos;t really be sure what instance you&apos;re on.  Therefore, we get false up/down messages for a specific instance.  

What I&apos;ve done is this, I&apos;ve got a new monitor.cfm file such as the one below:

&lt;code&gt;
&lt;cfscript&gt;
	System = createObject(&quot;java&quot;,&quot;java.lang.System&quot;);
    JRun = createObject(&quot;java&quot;,&quot;jrunx.kernel.JRun&quot;);
&lt;/cfscript&gt;
&lt;cfset this_servername = JRun.getServerName()&gt;
&lt;cfoutput&gt;
	Instance:  #this_servername#&lt;br&gt;
	Server Name: #cgi.Server_Name#&lt;br&gt;
&lt;/cfoutput&gt;
&lt;!--- Change timeout behavior if more than one instance is displayed ---&gt;
&lt;cfif isdefined(&apos;url.all&apos;)&gt;
	&lt;cfset timeoutBehavior=15&gt;
&lt;cfelse&gt;
	&lt;cfset timeoutBehavior=28&gt;
&lt;/cfif&gt;
&lt;!--- Ensure that url.instance is defined ---&gt;
&lt;cfparam name=&quot;url.instance&quot; default=&quot;all&quot;&gt;


&lt;cfif url.instance EQ &apos;someinstance&apos; or url.instance EQ &apos;all&apos;&gt;
&lt;br&gt;&lt;br&gt;
&lt;cfset sStatus=&quot;&quot;&gt;
&lt;cftry&gt;
&lt;cfhttp method=&quot;get&quot;
		url=&quot;http://someinstance.com:9301/monitor.cfm&quot;
		timeout=&quot;#timeoutBehavior#&quot;
		throwOnError=&quot;true&quot;&gt;
		&lt;cfcatch type=&quot;any&quot;&gt;&lt;cfset sStatus=&quot;bad&quot;&gt;&lt;/cfcatch&gt;
&lt;/cftry&gt;
&lt;b&gt;SOMEINSTANCE 1 - status&lt;/b&gt; &lt;cfif sStatus EQ &quot;bad&quot;&gt;Down&lt;cfelse&gt;Up&lt;/cfif&gt;
&lt;cfif sStatus EQ &quot;&quot; OR sStatus EQ &quot;good&quot;&gt;
	&lt;cfoutput&gt;#cfhttp.filecontent#&lt;/cfoutput&gt;
&lt;/cfif&gt;
&lt;/cfif&gt;
&lt;/code&gt;

This code calls out to a file sitting within the instances built-in web server path.  Since I need to leave this enabled to effectively manage the instance anyway, it&apos;s a good way to test that it&apos;s &quot;alive&quot;.  That monitor.cfm file contains:

&lt;code&gt;
&lt;cfscript&gt;
	System = createObject(&quot;java&quot;,&quot;java.lang.System&quot;);
    JRun = createObject(&quot;java&quot;,&quot;jrunx.kernel.JRun&quot;);
&lt;/cfscript&gt;

&lt;cfinclude template=&quot;Duration.cfm&quot;&gt;
&lt;cfset uptime = duration(server.coldfusion.expiration,now())&gt;&lt;br&gt;
&lt;b&gt;Uptime&lt;/b&gt;&lt;br&gt;
&lt;cfoutput&gt;#uptime.days# Day(s) #uptime.hours# Hour(s) #uptime.minutes# Minute(s)&lt;/cfoutput&gt;&lt;br&gt;

&lt;cfset this_servername = JRun.getServerName()&gt;
&lt;cfoutput&gt;Instance:  #this_servername#&lt;/cfoutput&gt;
&lt;/code&gt;

This display the instance information, and uses the UDF duration call (from &lt;a href=&quot;http://www.cflib.org/udf.cfm?ID=377&quot;&gt;CFLIB&lt;/a&gt;) to get the uptime count for the server.  This information is then used within the first monitor call to display uptime status.

Why bother?  Well, I need some type of text on the page to tell the monitor (soon to be Nagios) that my instances are up.  And near as I can tell, this is the only accurate way to do so.  It&apos;s not pretty, I admit, but it gets the job done.
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<pubDate>Thu, 15 Mar 2007 14:52:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/3/15/Quick-and-dirty-uptime-monitor</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>FarCry 4 formtools issues</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/3/2/FarCry-4-formtools-issues</link>
				<description>
				
				Here&apos;s a strange one that I came across yesterday.  I was working on making a new site available for some community type work (www.fouroakskidskampus.com), when I found an issue with the default FarCrycms plugin.  I&apos;ll post the code, see if you can spot the error.

&lt;code&gt;
&lt;!--- wiz: General Details ---&gt;
&lt;cfproperty ftseq=&quot;1&quot; ftfieldset=&quot;Event Overview&quot; ftwizardStep=&quot;General Details&quot; name=&quot;title&quot; type=&quot;string&quot; hint=&quot;Title of object.&quot; required=&quot;no&quot; default=&quot;&quot; ftLabel=&quot;Title&quot; ftvalidation=&quot;required&quot; /&gt;
&lt;cfproperty ftseq=&quot;2&quot; ftfieldset=&quot;Event Overview&quot; ftwizardStep=&quot;General Details&quot; name=&quot;startDate&quot; type=&quot;date&quot; hint=&quot;The start date of the event&quot; required=&quot;no&quot; default=&quot;&quot;ftDefaultType=&quot;Evaluate&quot; ftDefault=&quot;now()&quot; ftType=&quot;datetime&quot; ftDateFormatMask=&quot;dd mmm yyyy&quot; ftTimeFormatMask=&quot;hh:mm tt&quot; ftToggleOffDateTime=&quot;false&quot; ftlabel=&quot;Start Date&quot; /&gt;
&lt;cfproperty ftseq=&quot;3&quot; ftfieldset=&quot;Event Overview&quot; ftwizardStep=&quot;General Details&quot; name=&quot;endDate&quot; type=&quot;date&quot; hint=&quot;The end date of the event&quot; required=&quot;no&quot; default=&quot;&quot;ftDefaultType=&quot;Evaluate&quot; ftDefault=&quot;DateAdd(&apos;d&apos;, 5, now())&quot; ftType=&quot;datetime&quot; ftDateFormatMask=&quot;dd mmm yyyy&quot; ftTimeFormatMask=&quot;hh:mm tt&quot; ftToggleOffDateTime=&quot;false&quot; ftlabel=&quot;End Date&quot; /&gt;
&lt;cfproperty ftseq=&quot;5&quot; ftfieldset=&quot;Event Overview&quot; ftwizardStep=&quot;General Details&quot; name=&quot;displayMethod&quot; type=&quot;string&quot; hint=&quot;Display method to render.&quot; required=&quot;yes&quot; default=&quot;display&quot; fttype=&quot;webskin&quot; ftprefix=&quot;displayPage&quot; ftlabel=&quot;Content Template&quot; /&gt;

&lt;/code&gt;

The above was pulled from plugins/farcrycms/packages/types/dmEvent.cfc.  It was not displaying any webskins, even though they were in the correct path.  Placing new webskins in the project folder failed as well.  It&apos;s only when the webskins existed in the core folders that you actually were able to see them.

&lt;code&gt;
&lt;cfproperty ftseq=&quot;1&quot; ftfieldset=&quot;General Details&quot; ftwizardStep=&quot;General Details&quot; name=&quot;title&quot; type=&quot;string&quot; hint=&quot;News title.&quot; required=&quot;no&quot; default=&quot;&quot; ftlabel=&quot;Title&quot; ftvalidation=&quot;required&quot; /&gt;
&lt;cfproperty ftseq=&quot;2&quot; ftfieldset=&quot;General Details&quot; ftwizardStep=&quot;General Details&quot; name=&quot;source&quot; type=&quot;string&quot; hint=&quot;source of the information contained in the content&quot; required=&quot;no&quot; default=&quot;&quot; ftlabel=&quot;Source&quot; /&gt;
&lt;cfproperty ftseq=&quot;3&quot; ftfieldset=&quot;General Details&quot; ftwizardStep=&quot;General Details&quot; name=&quot;displayMethod&quot; type=&quot;string&quot; hint=&quot;Display method to render.&quot; required=&quot;yes&quot; default=&quot;display&quot; fttype=&quot;webskin&quot; ftprefix=&quot;displayPage&quot; ftlabel=&quot;Content Template&quot; /&gt;
&lt;cfproperty ftseq=&quot;4&quot; ftfieldset=&quot;Categorisation&quot; ftwizardStep=&quot;General Details&quot; name=&quot;catNews&quot; type=&quot;string&quot; hint=&quot;News categorisation.&quot; required=&quot;no&quot; default=&quot;&quot; fttype=&quot;category&quot; ftalias=&quot;dmnews&quot; ftlabel=&quot;News Category&quot; /&gt;
&lt;/code&gt;

This next was pulled from plugins/farcrycms/packages/types/dmNews.cfc.  Did you see it?  It&apos;s not real blatant.  Alright, this is where it&apos;s at, if you notice that ftseq in dmNews does not skip a sequence.  The sequence in dmEvent DOES have a gap.  Odd, but that&apos;s what seemed to break it.  Renaming &quot;ftseq=5&quot; to &quot;ftseq=4&quot; fixed the issue.  Groovy, baby.
				
				</description>
						
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Fri, 02 Mar 2007 12:58:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/3/2/FarCry-4-formtools-issues</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>FarCry plugin breakdown - Part III</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/23/FarCry-plugin-breakdown--Part-III</link>
				<description>
				
				&lt;p&gt;Let&apos;s finish this up with Part 3. We only have two things to look at yet, and that&apos;s our Rule and webskin.&lt;/p&gt;
&lt;h2&gt;The Rule  &lt;/h2&gt;
&lt;code&gt;
&lt;cfcomponent displayname=&quot;Mass Mailer Rule&quot; extends=&quot;farcry.core.packages.rules.rules&quot; hint=&quot;Allows you to select a list for user to sign up for&quot;&gt;
	&lt;cfproperty ftSeq=&quot;1&quot; ftFieldSet=&quot;List&quot; name=&quot;intro&quot; type=&quot;longchar&quot; hint=&quot;Introduction HTML for list.&quot; ftLabel=&quot;Intro&quot; ftType=&quot;longchar&quot; /&gt;
	&lt;cfproperty ftSeq=&quot;2&quot; ftFieldSet=&quot;List&quot; name=&quot;ListID&quot; type=&quot;UUID&quot; hint=&quot;ID of the List to be displayed&quot; ftLabel=&quot;List&quot; ftType=&quot;UUID&quot; ftJoin=&quot;massMailerList&quot; /&gt;
	&lt;cfproperty ftseq=&quot;3&quot; ftFieldset=&quot;List&quot; name=&quot;displayMethod&quot; type=&quot;string&quot; hint=&quot;Display method to render.&quot; required=&quot;yes&quot; default=&quot;display&quot; fttype=&quot;webskin&quot; ftprefix=&quot;displayList&quot; ftTypename=&quot;massMailerList&quot; ftlabel=&quot;Content Template&quot; /&gt;
	
&lt;cffunction name=&quot;execute&quot; hint=&quot;Displays the text rule on the page.&quot; output=&quot;true&quot; returntype=&quot;void&quot; access=&quot;public&quot;&gt;
	&lt;cfargument name=&quot;objectID&quot; required=&quot;Yes&quot; type=&quot;uuid&quot; default=&quot;&quot;&gt;
	
	&lt;cfset var stObj = getData(arguments.objectid) /&gt;
	&lt;cfset var oList = createObject(&quot;component&quot;,&quot;farcry.plugins.massMailer.packages.types.massMailerList&quot;) /&gt;
	&lt;cfset var stData = oList.getData(stObj.ListID) /&gt; 
	&lt;cfset var stInvoke = structNew() /&gt;	
	&lt;cfscript&gt;
		if (len(stobj.intro))
			arrayAppend(request.aInvocations,stobj.intro);
		stInvoke.objectID = stData.ObjectID;
		stInvoke.typename = application.types.massMailerList.typepath;
		stInvoke.method = stObj.displayMethod;
		arrayAppend(request.aInvocations,stInvoke);
	&lt;/cfscript&gt;
&lt;/cffunction&gt;
&lt;/cfcomponent&gt;
&lt;/code&gt;
&lt;p&gt;Not too complicated, and once again, formtools comes to our rescue! To get a real breadth of what can be done with rules, you really should take a look at the existing core and farcrycms rules. Some of them have much more functionality than what was required for this rule. &lt;/p&gt;
&lt;p&gt;Basically, if you want to have something displayed on the screen, you need to make a cfproperty for it. The usual formtools ideas apply. The items I required were the ID of the list, and the name of the webskin to display it. Formtools can grab this list of webskins for you with the fttype=&amp;quot;webskin&amp;quot;.&lt;/p&gt;
&lt;p&gt;The real magic is in the execute fucntion. It will create our stObj (which the webskin will use), and also invoke the webskin to be used. To be frank, I&apos;ve not dug into the internals much within rules. This one will get the job done, but I don&apos;t have the greatest of knowledge of this piece of FarCry.&lt;/p&gt;
&lt;h2&gt;The webskin  &lt;/h2&gt;
&lt;p&gt;The essence of the skin is to display two form fields, name and address, and submit this information as a aObjectID into the massMailerList. The nifty drag-n-drop display does this for us, so I simply &amp;quot;borrowed&amp;quot; those pieces to pull this of. &lt;/p&gt;
&lt;code&gt;
&lt;cfsetting enablecfoutputonly=&quot;true&quot;&gt;
&lt;!--- @@displayname: Display Mass Mailer Signup Form ---&gt;
&lt;!--- @@author: Matthew Williams ---&gt;
&lt;cfif isdefined(&apos;form.FARCRYFORMSUBMITBUTTON&apos;)&gt;

&lt;cfimport taglib=&quot;/farcry/core/tags/formtools/&quot; prefix=&quot;ft&quot; &gt;
&lt;cfinclude template=&quot;/farcry/core/admin/includes/utilityFunctions.cfm&quot;&gt;

&lt;cfparam name=&quot;form.primaryObjectID&quot; default=&quot;&quot;&gt;
&lt;cfparam name=&quot;form.primaryTypeName&quot; default=&quot;&quot;&gt;
&lt;cfparam name=&quot;form.primaryFieldName&quot; default=&quot;&quot;&gt;
&lt;cfparam name=&quot;form.primaryFormFieldName&quot; default=&quot;&quot;&gt;
&lt;cfparam name=&quot;form.ftJoin&quot; default=&quot;&quot;&gt;
&lt;cfparam name=&quot;form.wizardID&quot; default=&quot;&quot;&gt;
&lt;cfparam name=&quot;form.LibraryType&quot; default=&quot;array&quot;&gt;
&lt;cfparam name=&quot;form.ftLibraryAddNewWebskin&quot; default=&quot;libraryAdd&quot;&gt;&lt;!--- Method to Add New Object ---&gt;
&lt;cfparam name=&quot;form.ftLibraryPickWebskin&quot; default=&quot;libraryPick&quot;&gt;&lt;!--- Method to Pick Existing Objects ---&gt;
&lt;cfparam name=&quot;form.ftLibraryPickListClass&quot; default=&quot;thumbNailsWrap&quot;&gt;
&lt;cfparam name=&quot;form.ftLibraryPickListStyle&quot; default=&quot;&quot;&gt;
&lt;cfparam name=&quot;form.ftLibrarySelectedWebskin&quot; default=&quot;librarySelected&quot;&gt;&lt;!--- Method to Pick Existing Objects ---&gt;
&lt;cfparam name=&quot;form.ftLibrarySelectedListClass&quot; default=&quot;thumbNailsWrap&quot;&gt;
&lt;cfparam name=&quot;form.ftLibrarySelectedListStyle&quot; default=&quot;&quot;&gt;
&lt;cfparam name=&quot;form.ftAllowLibraryAddNew&quot; default=&quot;&quot;&gt;&lt;!--- Method to Add New Object ---&gt;
&lt;cfparam name=&quot;form.ftAllowLibraryEdit&quot; default=&quot;&quot;&gt;&lt;!--- Method to Edit Object ---&gt;
&lt;cfparam name=&quot;form.PackageType&quot; default=&quot;types&quot;&gt;&lt;!--- Could be types or rules.. ---&gt;
&lt;cfparam name=&quot;form.currentpage&quot; default=&quot;1&quot;&gt;


	
&lt;cfif form.PackageType EQ &quot;rules&quot;&gt;
	&lt;cfset PrimaryPackage = application.rules[form.primaryTypeName] /&gt;
	&lt;cfset PrimaryPackagePath = application.rules[form.primaryTypeName].rulepath /&gt;
&lt;cfelse&gt;
	&lt;cfset PrimaryPackage = application.types[form.primaryTypeName] /&gt;
	&lt;cfset PrimaryPackagePath = application.types[form.primaryTypeName].typepath /&gt;
&lt;/cfif&gt;

&lt;!--- TODO: dynamically determine the typename to join. ---&gt;
&lt;cfset request.ftJoin = listFirst(form.ftJoin) /&gt;
&lt;cfif NOT listContainsNoCase(PrimaryPackage.stProps[form.primaryFieldname].metadata.ftJoin,request.ftJoin)&gt;
	&lt;cfset request.ftJoin = listFirst(PrimaryPackage.stProps[form.primaryFieldname].metadata.ftJoin) /&gt;
&lt;/cfif&gt;


&lt;ft:processForm action=&quot;Attach,Attach &amp; Add Another&quot;&gt;	
	&lt;ft:processFormObjects typename=&quot;#request.ftJoin#&quot; /&gt;&lt;!--- Returns variables.lSavedObjectIDs ---&gt;
	&lt;cfset oPrimary = createObject(&quot;component&quot;,PrimaryPackagePath)&gt;
	&lt;cfset oData = createObject(&quot;component&quot;,application.types[request.ftJoin].typepath)&gt;
	&lt;cfloop list=&quot;#lSavedObjectIDs#&quot; index=&quot;DataObjectID&quot;&gt;
		&lt;cfif len(form.wizardID)&gt;					
			&lt;cfset owizard = createObject(&quot;component&quot;,application.types[&apos;dmWizard&apos;].typepath)&gt;
			&lt;cfset stwizard = owizard.Read(wizardID=form.wizardID)&gt;
			
			&lt;cfif form.LibraryType EQ &quot;UUID&quot;&gt;
				&lt;cfset stwizard.Data[form.PrimaryObjectID][form.PrimaryFieldname] = DataObjectID&gt;
			&lt;cfelse&gt;&lt;!--- Array ---&gt;
				&lt;cfset arrayAppend(stwizard.Data[form.PrimaryObjectID][form.PrimaryFieldname],DataObjectID)&gt;	
				&lt;cfset variables.tableMetadata = createobject(&apos;component&apos;,&apos;farcry.core.packages.fourq.TableMetadata&apos;).init() /&gt;
				&lt;cfset tableMetadata.parseMetadata(md=getMetadata(oPrimary)) /&gt;		
				&lt;cfset stFields = variables.tableMetadata.getTableDefinition() /&gt;
				&lt;cfset o = createObject(&quot;component&quot;,&quot;farcry.core.packages.fourq.gateway.dbGateway&quot;).init(dsn=application.dsn,dbowner=&quot;&quot;)&gt;
				&lt;cfset aProps = o.createArrayTableData(tableName=form.PrimaryTypename &amp; &quot;_&quot; &amp; form.PrimaryFieldName,objectid=form.PrimaryObjectID,tabledef=stFields[PrimaryFieldName].Fields,aprops=stwizard.Data[PrimaryObjectID][form.PrimaryFieldname])&gt;
				&lt;cfset stwizard.Data[form.PrimaryObjectID][form.PrimaryFieldname] = aProps&gt;
			&lt;/cfif&gt;
			
			&lt;cfset stwizard = owizard.Write(ObjectID=form.wizardID,Data=stwizard.Data)&gt;
			&lt;cfset st = stwizard.Data[form.PrimaryObjectID]&gt;
		&lt;cfelse&gt;
			&lt;cfset stPrimary = oPrimary.getData(objectid=form.PrimaryObjectID)&gt;
			
			&lt;cfif form.LibraryType EQ &quot;UUID&quot;&gt;
				&lt;cfset stPrimary[form.PrimaryFieldname] = DataObjectID&gt;		
			&lt;cfelse&gt;&lt;!--- Array ---&gt;
				&lt;cfset arrayAppend(stPrimary[form.PrimaryFieldname],DataObjectID)&gt;						
			&lt;/cfif&gt;		
			
			&lt;cfparam name=&quot;session.dmSec.authentication.userlogin&quot; default=&quot;anonymous&quot; /&gt;
			&lt;cfset oPrimary.setData(objectID=stPrimary.ObjectID,stProperties=&quot;#stPrimary#&quot;,user=&quot;#session.dmSec.authentication.userlogin#&quot;)&gt;
			
		&lt;/cfif&gt;
	&lt;/cfloop&gt;
	
&lt;/ft:processForm&gt;
&lt;/cfif&gt;

&lt;cfscript&gt;
	formObj.primaryHash = stObj.objectid;
	formObj.primaryNoHash = replace(formObj.primaryHash,&apos;-&apos;,&apos;&apos;,&apos;all&apos;);
	formObj.userObjHash = createuuid();
	formObj.userObjNoHash = replace(formObj.userObjHash,&apos;-&apos;,&apos;&apos;,&apos;all&apos;);
&lt;/cfscript&gt;

&lt;cfoutput&gt;
&lt;cfif isdefined(&apos;form.FARCRYFORMSUBMITBUTTON&apos;)&gt;
	&lt;p&gt;Your email address has been added to the list!&lt;/p&gt;
&lt;/cfif&gt;
&lt;form action=&quot;&quot; method=&quot;post&quot; id=&quot;farcryForm936443538&quot; name=&quot;farcryForm936443538&quot; target=&quot;&quot; enctype=&quot;multipart/form-data&quot; onsubmit=&quot;&quot; class=&quot;formtool&quot;  style=&quot;&quot;&gt;&lt;input type=&quot;hidden&quot; name=&quot;phpMyAdmin&quot; value=&quot;6ffe8b831e4bded08a42997de2b6eeaa&quot; /&gt;
	&lt;p&gt;Name: &lt;input type=&quot;Text&quot; name=&quot;#formObj.userObjHash#Title&quot; id=&quot;#formObj.userObjHash#Title&quot; value=&quot;&quot; class=&quot;&quot; style=&quot;&quot; /&gt;&lt;/p&gt;
	&lt;p&gt;Email:&lt;input type=&quot;Text&quot; name=&quot;#formObj.userObjHash#Email&quot; id=&quot;#formObj.userObjHash#Email&quot; value=&quot;&quot; class=&quot;&quot; style=&quot;&quot; /&gt;&lt;/p&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;#formObj.userObjHash#DateAddedinclude&quot; id=&quot;#formObj.userObjHash#DateAddedinclude&quot; value=&quot;1&quot;&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;#formObj.userObjHash#DateAdded&quot; id=&quot;#formObj.userObjHash#DateAdded&quot; value=&quot;#now()#&quot; style=&quot;&quot; /&gt;&lt;/p&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;#formObj.userObjHash#ObjectID&quot; value=&quot;#formObj.userObjHash#&quot;&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;#formObj.userObjHash#Typename&quot; value=&quot;massMailerUser&quot;&gt;
	&lt;input type=&quot;submit&quot; name=&quot;FarcryFormSubmitButton&quot; value=&quot;Attach&quot; onclick=&quot;;$(&apos;FarcryFormSubmitButtonClickedfarcryForm936443538&apos;).value = &apos;Attach&apos;;;return realeasyvalidation.validate();&quot; class=&quot;formButton &quot; style=&quot;&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FarcryFormPrefixes&quot; id=&quot;FarcryFormPrefixes&quot; value=&quot;#formObj.userObjHash#&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FarcryFormSubmitButton&quot; id=&quot;FarcryFormSubmitButton&quot; value=&quot;&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FarcryFormSubmitButtonClickedfarcryForm936443538&quot; id=&quot;FarcryFormSubmitButtonClickedfarcryForm936443538&quot; value=&quot;&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FarcryFormSubmitted&quot; id=&quot;FarcryFormSubmitted&quot; value=&quot;farcryForm936443538&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;SelectedObjectID&quot; id=&quot;SelectedObjectIDfarcryForm936443538&quot; value=&quot;&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;PRIMARYFORMFIELDNAME&quot; value=&quot;#formObj.primaryNoHash#aObjectIDs&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTALLOWLIBRARYADDNEW&quot; value=&quot;massMailerUser&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;CURRENTPAGE&quot; value=&quot;1&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTLIBRARYPICKLISTSTYLE&quot; value=&quot;&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTLIBRARYSELECTEDLISTCLASS&quot; value=&quot;arrayDetail&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTLIBRARYADDNEWWEBSKIN&quot; value=&quot;libraryAdd&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTLIBRARYPICKWEBSKIN&quot; value=&quot;libraryPick&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTLIBRARYSELECTEDWEBSKIN&quot; value=&quot;LibrarySelected&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;PACKAGETYPE&quot; value=&quot;types&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;PRIMARYOBJECTID&quot; value=&quot;#formObj.primaryHash#&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTALLOWLIBRARYEDIT&quot; value=&quot;massMailerUser&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;WIZARDID&quot; value=&quot;&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;LIBRARYTYPE&quot; value=&quot;array&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;PRIMARYTYPENAME&quot; value=&quot;massMailerList&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTLIBRARYPICKLISTCLASS&quot; value=&quot;thumbNailsWrap&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;PRIMARYFIELDNAME&quot; value=&quot;aObjectIDs&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTJOIN&quot; value=&quot;massMailerUser&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;FTLIBRARYSELECTEDLISTSTYLE&quot; value=&quot;&quot; /&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;librarySection&quot; value=&quot;addnew&quot; /&gt;
&lt;/form&gt;
		
		
			&lt;script type=&quot;text/javascript&quot;&gt;
				var realeasyvalidation = new Validation(&apos;farcryForm936443538&apos;, {onSubmit:false});
			&lt;/script&gt;
&lt;/cfoutput&gt;
&lt;cfsetting enablecfoutputonly=&quot;false&quot;&gt;
&lt;/code&gt;
&lt;p&gt;What we have is a call to formtools, supplied with our main object (massMailerList) and our attachment (massMailerUser). This code was wrought from within library.cfm. If you haven&apos;t already looked, it would be a great place to learn more about how the open library function works. I don&apos;t have any validation for the email field, yet. That&apos;s comming down the line. &lt;/p&gt;
&lt;p&gt;Hopefully this makes this a little bit clearer. Or, at the very least, steers someone in the right direction. &lt;/p&gt;
				
				</description>
						
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Fri, 23 Feb 2007 16:35:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/23/FarCry-plugin-breakdown--Part-III</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>FarCry plugin breakdown - Part II</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/23/FarCry-plugin-breakdown--Part-II</link>
				<description>
				
				&lt;p&gt;First, an addendum.  Matthew Bryant pointed out that I had forgetton wrap my objectAdmin tag within an &amp;lt;admin&amp;gt; call.  This would explain why my wizzardStep and CSS formating wasn&apos;t happening correctly.  The updated zip can be found &lt;a href=&quot;http://www.geodesicgrafx.com/blog/files/massMailer.zip&quot;&gt;at this location&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s begin Part II by looking at the customadmin files. These files are responsible for generating the menu at the top of the FarCry administrator, and for providing the links on the left hand pane.&lt;/p&gt;
&lt;p&gt;First up, the massMailer.xml:&lt;/p&gt;
&lt;code&gt;
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;webtop&gt;
	&lt;section mergetype=&quot;merge&quot; id=&quot;massMailerSection&quot; label=&quot;Mass Mailer&quot; labeltype=&quot;value&quot;&gt;
		&lt;subsection mergetype=&quot;merge&quot; id=&quot;massMailerSubSection&quot; label=&quot;Mass Mailer&quot; labeltype=&quot;value&quot;&gt;
			&lt;menu mergeType=&quot;merge&quot; id=&quot;massMailerMenu&quot; label=&quot;Mass Mailer&quot; labelType=&quot;value&quot;&gt;
				&lt;menuitem mergeType=&quot;merge&quot; id=&quot;massMailer&quot; label=&quot;Mass Mailer&quot; link=&quot;/admin/customadmin.cfm?module=customlists/massMailer.cfm&amp;amp;plugin=massMailer&quot; /&gt;
				&lt;menuitem mergeType=&quot;merge&quot; id=&quot;massMailerList&quot; label=&quot;Mass Mailer List&quot; link=&quot;/admin/customadmin.cfm?module=customlists/massMailerList.cfm&amp;amp;plugin=massMailer&quot; /&gt;
				&lt;menuitem mergeType=&quot;merge&quot; id=&quot;massMailerUser&quot; label=&quot;Mass Mailer User&quot; link=&quot;/admin/customadmin.cfm?module=customlists/massMailerUser.cfm&amp;amp;plugin=massMailer&quot; /&gt;
			&lt;/menu&gt;
		&lt;/subsection&gt;
	&lt;/section&gt;
&lt;/webtop&gt;
&lt;/code&gt;
&lt;p&gt;FarCry gives you the ability merge changes to the look and feel of the webtop via XML files.  The above should be fairly straightforward to follow. &lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Section&lt;/strong&gt; - Creates a new tab within the webtop&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Subsection&lt;/strong&gt; - Creates the subsection within the specified tab. More than one subsection may be created, and a drop down list of choices will be presented if more than one subsection exists.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Menu&lt;/strong&gt; - The navigation for the subsection&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Menuitem&lt;/strong&gt; - Navigation links within the subsection
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Link&lt;/strong&gt; - The FarCry custom admin parser&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Module&lt;/strong&gt; - The location of your customadmin files. In this case, customadmin/massMailerxxx.cfm&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Plugin&lt;/strong&gt; - The name of the plugin for the module&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, let&apos;s look at the files behind the link from above:&lt;/p&gt;
&lt;code&gt;
&lt;cfsetting enablecfoutputonly=&quot;true&quot;&gt;

&lt;cfimport taglib=&quot;/farcry/core/tags/formtools&quot; prefix=&quot;tags&quot;&gt;
&lt;cfimport taglib=&quot;/farcry/core/tags/admin/&quot; prefix=&quot;admin&quot; /&gt;

&lt;!--- set up page header ---&gt;
&lt;admin:header title=&quot;Mass Mailer Admin&quot; /&gt;

&lt;tags:objectAdmin
	title=&quot;Mass Mailer User&quot;
	typename=&quot;massMailerUser&quot;
	ColumnList=&quot;label&quot;
	SortableColumns=&quot;label&quot;
	lFilterFields=&quot;label&quot;
	plugin=&quot;massMailer&quot;
	sqlorderby=&quot;datetimelastUpdated desc&quot; /&gt;

&lt;admin:footer /&gt;

&lt;cfsetting enablecfoutputonly=&quot;false&quot;&gt;
&lt;/code&gt;
&lt;p&gt;Let&apos;s start our simplest object, the massMailerUser. We need to first import the formtools and admin tags. The &amp;lt;admin&amp;gt;&amp;lt;/admin&amp;gt; tags allows to setup nifty things like pagination, and also bring along page styling. The formtools tags will automagically style the inputs on our pages based on the CFCs we created before. Neat, huh? &lt;/p&gt;
&lt;p&gt;We need a call to objectAdmin to display our main menu details. The arguments are:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Title&lt;/strong&gt; - The title displayed at the top of the details page&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Typename&lt;/strong&gt; - Very important! This is the type we plan to display&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Columnlist&lt;/strong&gt; - Comma seperated list of list columns to display. This could be any column within the type specific database table. Label, action, and datetimecreated are the default&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;SortableColumns&lt;/strong&gt; - Uh... no further explanation required&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;lFilterFields&lt;/strong&gt; - Fields on which to allow filters (restrict results)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;plugin&lt;/strong&gt; - Plugin to use as a base&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;sqlorderby&lt;/strong&gt; - Order in which records are displayed in the details page   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This set of options should see us through most of what we need to get done. The massMailerList uses much the same call, just a different typename. Things get different for massMailer however.&lt;/p&gt;
&lt;code&gt;
&lt;cfsetting enablecfoutputonly=&quot;true&quot;&gt;

&lt;cfimport taglib=&quot;/farcry/core/tags/formtools&quot; prefix=&quot;tags&quot;&gt;
&lt;cfimport taglib=&quot;/farcry/core/tags/admin/&quot; prefix=&quot;admin&quot; /&gt;

&lt;!--- set up page header ---&gt;
&lt;admin:header title=&quot;Mass Mailer Admin&quot; /&gt;

&lt;tags:objectAdmin
	title=&quot;Mass Mailer User&quot;
	typename=&quot;massMailerUser&quot;
	ColumnList=&quot;label&quot;
	SortableColumns=&quot;label&quot;
	lFilterFields=&quot;label&quot;
	plugin=&quot;massMailer&quot;
	sqlorderby=&quot;datetimelastUpdated desc&quot; /&gt;

&lt;admin:footer /&gt;

&lt;cfsetting enablecfoutputonly=&quot;false&quot;&gt;
&lt;/code&gt;
&lt;p&gt;There is two things of note here. One is the array of buttons. You can override most of the default behavior of FarCry, and in this case, we need to add the &amp;quot;Send&amp;quot; email functionality. You will need to delve into objectAdmin and typeAdmin to sort out what values are expected here. &lt;/p&gt;
&lt;p&gt;The other thing to note is our send functionality. It waits for the form to submit with our &amp;quot;Send&amp;quot; value, then calls to our plugins/massMailer/packages/types/massMailer.cfc with the objectID of the particular massMailer. If you recall from part one, there&apos;s a function within our CFC to handle this call, along with the send.cfm file. &lt;/p&gt;
				
				</description>
						
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Fri, 23 Feb 2007 16:28:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/23/FarCry-plugin-breakdown--Part-II</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Set up muliple instances for just one website - caveats</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/22/Set-up-muliple-instances-for-just-one-website--caveats</link>
				<description>
				
				To expand upon &lt;a href=&quot;http://www.geodesicgrafx.com/blog/index.cfm/2007/2/3/How-to-set-up-muliple-instances-for-just-one-website&quot;&gt;this&lt;/a&gt; earlier post, when you map multiple instances within the same website (via virtual webs), items that use CFCHART will break.  To make sure that the correct CFIDE is called when calling things like cfform, cfchart, etc. you need to make these modifications (thanks to &lt;a href=&quot;http://www.bpurcell.org/blog/index.cfm?mode=entry&amp;entry=998&quot;&gt;Bruce Purcell&lt;/a&gt;)

&lt;ul&gt;
&lt;li&gt;
In {cfmx-root}/lib/neo-graphing.xml&lt;br&gt;
Change /CFIDE/GraphData.cfm to /somesite/CFIDE/GraphData.cfm
&lt;/li&gt;
&lt;li&gt;
In {cfmx-root}/wwwroot/WEB-INF/web.xml&lt;br&gt;
Change /CFIDE/GraphData.cfm to /somesite/CFIDE/GraphData.cfm
&lt;/li&gt;
&lt;/ul&gt;

In addition, we were experiencing issues with session replication when users were moving between virtual webs within the same site.  The fix for this is to place this code into a normal index.html template, and ensure that this template is called first when entering your site.

&lt;code&gt;
&lt;html&gt;
&lt;head&gt;
        &lt;script LANGUAGE=&quot;JavaScript&quot;&gt;
        &lt;!--//
		   document.cookie = &quot;JSESSIONID=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/&quot;;
		   document.cookie = &apos;CFID=; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/&apos;;
		   document.cookie = &apos;CFTOKEN=; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/&apos;;
		   location.replace(&apos;https//&lt;somedomain/&lt;somesite&gt;/index.cfm&apos;);
         //--&gt;
         &lt;/SCRIPT&gt;

	&lt;!-- &lt;META http-equiv=&quot;refresh&quot; content=&quot;0;URL=http://&lt;somedomain&gt;/&lt;somesite&gt;/index.cfm&quot; /&gt; --&gt;
&lt;/head&gt; 
&lt;body&gt;
	&lt;!-- &lt;p&gt;The eBusiness home page can be found at &lt;a href=&quot;http://&lt;somedomain&gt;/&lt;somesite&gt;/index.cfm&quot;&gt;http://&lt;somedomain&gt;/&lt;somesite&gt;/index.cfm&lt;/a&gt;&lt;/p&gt;  --&gt;
&lt;/body&gt;
&lt;/html&gt;

&lt;/code&gt;
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<pubDate>Thu, 22 Feb 2007 11:11:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/22/Set-up-muliple-instances-for-just-one-website--caveats</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>FarCry plugin breakdown - Part I</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/22/FarCry-plugin-breakdown--Part-I</link>
				<description>
				
				&lt;p&gt;I promised a breakdown, and so it shall be writ. This first segment is going to analyze the newly created objects. If I have wherewithal to finish tonight, we&apos;ll move along to the administrator addon. &lt;/p&gt;
&lt;p&gt;Let&apos;s start with our objects then:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt; &lt;strong&gt;massMailer&lt;/strong&gt; - This object will hold all the information about our email. Things like message body, subject, from, to, and the massMailerList objects.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;massMailerList&lt;/strong&gt; - This object contains the name of the list, and holds massMailerUser objects. &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;massMailerUser&lt;/strong&gt; - This object contains the name, email address, and dateTime stamp when the object was created. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let&apos;s look at the code. We&apos;ll start with the massMailerUser.&lt;/p&gt;
&lt;code&gt;
&lt;cfcomponent extends=&quot;farcry.core.packages.types.types&quot; displayname=&quot;Mass Mailer Users&quot; bFriendly=&quot;1&quot; hint=&quot;Mass mailer object to hold the users&quot; bobjectbroker=&quot;true&quot; objectbrokermaxobjects=&quot;1000&quot;&gt;
&lt;!------------------------------------------------------------------------
type properties
-------------------------------------------------------------------------&gt;	
&lt;cfproperty ftSeq=&quot;11&quot; ftFieldset=&quot;User Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;Title&quot; ftLabel=&quot;Name&quot; type=&quot;string&quot; hint=&quot;Users Name&quot; required=&quot;no&quot; default=&quot;&quot;&gt;
&lt;cfproperty ftSeq=&quot;12&quot; ftFieldset=&quot;User Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;Email&quot; ftLabel=&quot;Email&quot; type=&quot;string&quot; hint=&quot;Email Address&quot; required=&quot;no&quot; default=&quot;&quot;&gt;
&lt;cfproperty ftseq=&quot;13&quot; ftFieldset=&quot;User Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;DateAdded&quot; type=&quot;date&quot; hint=&quot;The date user was added&quot; required=&quot;yes&quot; default=&quot;&quot;ftDefaultType=&quot;Evaluate&quot; ftDefault=&quot;now()&quot; ftType=&quot;datetime&quot; ftDateFormatMask=&quot;mm dd yyyy&quot; ftTimeFormatMask=&quot;hh:mm tt&quot; ftToggleOffDateTime=&quot;false&quot; ftlabel=&quot;Date Added&quot; /&gt;

&lt;!------------------------------------------------------------------------
object methods 
-------------------------------------------------------------------------&gt;	
&lt;/cfcomponent&gt;
&lt;/code&gt;
&lt;p&gt;Hmm... so what does THAT mean??  Let&apos;s break this object down. Formtools will generate our object administration page for us, but it needs some help to get along.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;ftSeq&lt;/strong&gt; - Numeric sequence that you wish the fields to be displayed in &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;ftFieldset&lt;/strong&gt; - Gives &amp;quot;groups&amp;quot; within a given page. Usually denoted by a horizontal line&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;ftwizardSet&lt;/strong&gt; - Should give pagination, but it isn&apos;t working (for me) at this time&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;name&lt;/strong&gt; - Name for the object to be created in the database&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;ftLabel&lt;/strong&gt; - Label to displayed in the admin&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;type&lt;/strong&gt; - Type for database creation&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;hint&lt;/strong&gt; - Typical component hint. Although I think there&apos;s a way to give context sensitive help, I just haven&apos;t explored it yet.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;required&lt;/strong&gt; - No need for explanation, right?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;other ft types&lt;/strong&gt; - Not going to into these in detail. There are several examples in the core for working with date/time types with the supplied date/time picker.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next up, our massMailerList object&lt;/p&gt;
&lt;code&gt;
&lt;cfcomponent extends=&quot;farcry.core.packages.types.types&quot; displayname=&quot;Mass Mailer List&quot; bFriendly=&quot;1&quot; hint=&quot;Mass mailer object to create the lists&quot; bobjectbroker=&quot;true&quot; objectbrokermaxobjects=&quot;1000&quot;&gt;
&lt;!------------------------------------------------------------------------
type properties
-------------------------------------------------------------------------&gt;	
&lt;cfproperty ftSeq=&quot;11&quot; ftFieldset=&quot;List Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;Title&quot; type=&quot;string&quot; hint=&quot;Title of object.&quot; required=&quot;no&quot; default=&quot;&quot;&gt;
&lt;cfproperty ftSeq=&quot;12&quot; ftFieldset=&quot;List Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;aObjectIDs&quot; type=&quot;array&quot; hint=&quot;Holds objects to be displayed at this particular node.  Can be of mixed types.&quot; required=&quot;no&quot; default=&quot;&quot; ftLabel=&quot;Users&quot; ftJoin=&quot;massMailerUser&quot;&gt;

&lt;!------------------------------------------------------------------------
object methods 
-------------------------------------------------------------------------&gt;	


&lt;/cfcomponent&gt;
&lt;/code&gt;
&lt;p&gt;Pretty much more of the same, EXCEPT, for this little gem.  Notice that my aObjectIDs is of type array.  This type MUST have an ftJoin attribute applied.  You would specify a component here that you would like to have data populated from. In our case it is massMailerUser. But it could easily be dmImage (default supplied image library) or dmFile (default supplied file library). Heck, it can even be a comma separated list of any of these things. &lt;/p&gt;
&lt;p&gt;So what happens when you add this type of field? Formtools will generate a button for you to click, called open library. This will pop open a window, and you will be given a choice of various tabs. In the main view, you can drag the massMailerUser (or image, or file, or whatever) objects from the right hand pane to the left hand pane. And that&apos;s it, you&apos;re done. You&apos;ve now attached objects as an array to your massMailerList object. And you didn&apos;t even have to write any code!&lt;/p&gt;
&lt;p&gt;This leaves us with massMailer&lt;/p&gt;
&lt;code&gt;
&lt;cfcomponent extends=&quot;farcry.core.packages.types.types&quot; displayname=&quot;Mass Mailer&quot; bFriendly=&quot;1&quot; hint=&quot;Mass mailer object to send to lists created by Mass Mailer List&quot; bobjectbroker=&quot;true&quot; objectbrokermaxobjects=&quot;1000&quot;&gt;
&lt;!------------------------------------------------------------------------
type properties
-------------------------------------------------------------------------&gt;	
&lt;cfproperty ftSeq=&quot;11&quot; ftfieldset=&quot;Mailer Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;Title&quot; type=&quot;string&quot; hint=&quot;Title of object.&quot; required=&quot;Yes&quot; default=&quot;&quot;&gt;
&lt;cfproperty ftSeq=&quot;12&quot; ftfieldset=&quot;Mailer Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;aObjectIDs&quot; type=&quot;array&quot; hint=&quot;FarCry Groups to send email to&quot; required=&quot;Yes&quot; default=&quot;&quot; ftLabel=&quot;Lists&quot; ftJoin=&quot;massMailerList&quot;&gt;
&lt;cfproperty ftSeq=&quot;13&quot; ftfieldset=&quot;Mailer Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;fromEmail&quot; type=&quot;string&quot; hint=&quot;From email address&quot; required=&quot;Yes&quot; default=&quot;&quot;&gt;
&lt;cfproperty ftSeq=&quot;14&quot; ftfieldset=&quot;Mailer Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;replyTo&quot; type=&quot;string&quot; hint=&quot;Address(es) to which the recipient is directed to send replies&quot; required=&quot;no&quot; default=&quot;&quot;&gt;
&lt;cfproperty ftSeq=&quot;15&quot; ftfieldset=&quot;Mailer Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;wraptext&quot; type=&quot;string&quot; hint=&quot;Specifies the maximum line length, in characters of the mail text.&quot; required=&quot;no&quot; default=&quot;&quot;&gt;
&lt;cfproperty ftSeq=&quot;16&quot; ftfieldset=&quot;Mailer Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;failTo&quot; type=&quot;string&quot; hint=&quot;Address to which mailing systems should send delivery failure notifications. Sets the mail envelope reverse path value&quot; required=&quot;no&quot; default=&quot;&quot;&gt;
&lt;cfproperty ftSeq=&quot;17&quot; ftfieldset=&quot;Mailer Details&quot; ftWizzardStep=&quot;General Details&quot; name=&quot;charset&quot; type=&quot;string&quot; hint=&quot;Character encoding of the mail message, including the headers&quot; required=&quot;no&quot; default=&quot;UTF-8&quot;&gt;

&lt;cfproperty ftSeq=&quot;21&quot; ftfieldset=&quot;Text Body&quot; ftWizzardStep=&quot;Text Body&quot; name=&quot;Body&quot; type=&quot;longchar&quot; hint=&quot;Main body of content, text only.&quot; required=&quot;no&quot; default=&quot;&quot;&gt;
&lt;cfproperty ftSeq=&quot;31&quot; ftfieldset=&quot;HTML Body&quot; ftWizzardStep=&quot;HTML Body&quot; name=&quot;htmlBody&quot; type=&quot;longchar&quot; hint=&quot;Main body of content, to be sent to users as HTML&quot; ftType=&quot;richtext&quot;
	ftImageArrayField=&quot;aObjectIDs&quot; ftImageTypename=&quot;dmImage&quot; ftImageField=&quot;StandardImage&quot; required=&quot;no&quot; default=&quot;&quot;
	ftTemplateTypeList=&quot;dmImage,dmFile&quot; ftTemplateWebskinPrefixList=&quot;insertHTML&quot;
	ftTemplateSnippetWebskinPrefix=&quot;insertSnippet&quot;&gt;

&lt;cfproperty name=&quot;bSent&quot; type=&quot;boolean&quot; hint=&quot;Flag for email being sent&quot; required=&quot;yes&quot; default=&quot;0&quot;&gt;


&lt;!------------------------------------------------------------------------
object methods 
-------------------------------------------------------------------------&gt;	

&lt;cffunction name=&quot;send&quot; access=&quot;public&quot; output=&quot;true&quot; hint=&quot;Prepares and sends email to members&quot;&gt;
	&lt;cfargument name=&quot;objectid&quot; required=&quot;yes&quot; type=&quot;UUID&quot;&gt;
	&lt;cfset stObjMail = createobject(&quot;component&quot;, application.types.massMailer.packagepath)&gt;
	&lt;cfset massObj = stObjMail.getData(objectid=arguments.objectid)&gt;		
	&lt;cfinclude template=&quot;send.cfm&quot;&gt;
	
&lt;/cffunction&gt;

&lt;/cfcomponent&gt;
&lt;/code&gt;
&lt;p&gt;Again, more of the same.  Except we also used a rich text for generation of our &quot;Pretty&quot; email body.  Examples of such types exist in the core. Two things worth noting is the send function and the array of massMailerList(s). I plan to fully expound upon this in part II or III, but for now, know that it&apos;s there for us when it comes time to send out our mass mail! &lt;/p&gt;
&lt;p&gt;Oh, and thank the heavens for FireFox&apos;s built in spell checker... it at least keeps these posts from being slightly more legible than I could manage without it.
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Thu, 22 Feb 2007 00:54:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/22/FarCry-plugin-breakdown--Part-I</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>My First Farcry Plugin... it&apos;s done, and here it is</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/21/My-First-Farcry-Plugin-its-done-and-here-it-is</link>
				<description>
				
				Alrighty.  I&apos;ve &lt;a href=&quot;http://www.geodesicgrafx.com/blog/files/massMailer.zip&quot;&gt;created a zip of the plugin&lt;/a&gt;, and it will be available from here to download.  

&lt;h2&gt;Installation instructions:&lt;/h2&gt;

1)  Install the latest version of FarCry Beta from either &lt;a href=&quot;http://www.jeffcoughlin.com/?pg=11&quot;&gt;Jeff Coughlin&apos;s site&lt;/a&gt; or from the &lt;a href=&quot;http://farcrycms.org/go/downloads/farcry-beta-gonzales&quot;&gt;FarCry CMS page&lt;/a&gt;.  Pertinent installation information can be found at their respective sites.

2)  Modify your project/&lt;somesite&gt;/www/Application.cfm so that the plugins list includes massMailer in the list.  This is a comma delimited list.

3)  Open the FarCry admin and click on the &lt;strong&gt;Admin&lt;/strong&gt; tab.  Select &lt;strong&gt;COAPI&lt;/strong&gt; from the dropdown list, and then click types.  Deploy the three massMailer types.  Next click rules, and deploy the massMailer rule.

&lt;h2&gt;Usage&lt;/h2&gt;

&lt;strong&gt;Example 1:&lt;/strong&gt;  You want to have a form add a user to an email distribution list.

1)  Open the FarCry admin and click on the &lt;strong&gt;Mass Mailer&lt;/strong&gt; tab.

2)  Click (in the left hand pane) the &lt;strong&gt;Mass Mailer List&lt;/strong&gt; to create a new list.

3)  Click &lt;strong&gt;Add&lt;/strong&gt; to create a new List.  Each List has two properties, a name, and a list of emails.  We&apos;ll only worry about the name for now.  Give the List a name, and &lt;strong&gt;Save&lt;/strong&gt;.

4)  Open a window to view your FarCry site.  Switch to Design Mode, and click on a container where you&apos;d like the new form to reside.

5)  Choose the Mass Mailer Rule from the list, and add it to the container using the &lt;strong&gt;Commit&lt;/strong&gt; button.  This should take you to the next step.  From here, select the Display Method (one is supplied for you), and use the &lt;strong&gt;Open Library&lt;/strong&gt; to add a list.  You can add only one list per rule!  I&apos;m thinking of modifying this in the future, but for now it stays.  &lt;strong&gt;Save&lt;/strong&gt; the results.

6)  Refresh the page, and you should now see a form containing the &lt;strong&gt;Name&lt;/strong&gt; and &lt;strong&gt;Email&lt;/strong&gt; fields.  Complete the form, and once submitted, it will add a new entry to your list (as well as create a new massMailerUser object).  To verify, open the FarCry admin/Mass Mailer Tab and edit the Mass Mailer List you just created.

&lt;strong&gt;Example 2:&lt;/strong&gt;

1)  Follow steps 1-3 above.  While still in the open library, you can choose to attach a new object.  

2)  Otherwise, click Mass Mailer User, add the new user, and then attach using the open library from Mass Mailer List.

&lt;h2&gt;Sending Mail&lt;/h2&gt;

1)  Open the FarCry admin, and click the &lt;strong&gt;Mass Mailer&lt;/strong&gt; tab.

2)  Click on the &lt;strong&gt;Mass Mailer&lt;/strong&gt; link in the left hand pane.  And then click &lt;strong&gt;Add&lt;/strong&gt; from the top navigation.

3)  Fill out the form fields as required.  You need, at minimum, the Subject and List (open library).  You can add as many lists as you like to the email.

4)  There is a plan to add an attachment to the emails, but that&apos;s slated for the next release.

5)  Save the object.  Then select the object, and from the top/central navigation buttons, click &lt;strong&gt;Send&lt;/strong&gt;.

The end!  Tomorrow (or as time permits) I&apos;ll break down the objects and the &quot;Why&quot; of it.
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Wed, 21 Feb 2007 15:54:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/21/My-First-Farcry-Plugin-its-done-and-here-it-is</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>My First Farcry... well, plugin is the term now, take 3.1</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/20/My-First-Farcry-well-plugin-is-the-term-now-take-31</link>
				<description>
				
				Alright.  We have successful email creation in place.  You can also assign a rule and a webskin to the rule.  The final piece is adding the massMailerUser object to the massMailerList object via an online form.  This should be completed tonight, family willing, and I&apos;ll start the break down/analysis of what each file does, and why.  Thank you ray for the use of code tags, which ya&apos;ll will see extensive use of tomorrow ;).

&lt;strong&gt;Update:&lt;/strong&gt; so close to the finish I can almost taste it... however, it&apos;s late.  I need to sit in on performance tests tomorrow morning, so it will need to wait until tomorrow afternoon to finish up.  The good news, though, is it works!  I need to cull the deadwood of copied functions from the core/admin/facade/library.cfm that will not be used, but it appears that everything is working as it should.  Yay!
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Tue, 20 Feb 2007 17:44:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/20/My-First-Farcry-well-plugin-is-the-term-now-take-31</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>My First FarCry library take 3</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/18/My-First-FarCry-library-take-3</link>
				<description>
				
				I finally got some free time to move this project towards completion.  And then things went to heck in a handbasket when Daemon decided to change around the code base ;).  So, what has changed is that farcry_core is now just core.  Projects have moved to a projects folder.  And farcry_lib is now plugins.  That last is what really affected me.  I had to change my customadmin and customlists to reflect this change.

As Stephen mentioned in previous comments, Formtools is just too sexy for itself.  I went the easy route for the time being, but will climb the hard road in time.

My three objects still exist, one calling the other using the open library feature of Formtools.  The only drawback I can fore see is there is no way to select multiple objects at a time.  I&apos;ll see if anyone has extended this yet.  This is now working smashingly.  

Next up, setup the special columns required to send mail through the admin.  Then, finally, adding users to lists via the web signup form.

&lt;strong&gt;Update:&lt;/strong&gt; And we have success!  You now create a user.  Assign the user to a list(s).  Assign that list to an email to be distributed, and then send.  Full source to be fourth coming as soon as the rule (which can be dropped into a page) and webskin templates are setup.  Maybe tonight, maybe tomorrow.

&lt;strong&gt;Update 2:&lt;/strong&gt; The rule for adding the massMailer to a page has been created (which was pretty simple).  Now the tough part... adding the formtools functionality to the webskin.  Since we&apos;re attaching a new objectid into the massMailerList object, seems to be the most practical way of doing so.  Of course, we could do it by straight database manipulation, but where&apos;s the fun in that ;).
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Sun, 18 Feb 2007 01:23:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/18/My-First-FarCry-library-take-3</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>My First FarCry library take 2</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/15/My-First-FarCry-library-take-2</link>
				<description>
				
				So, I&apos;m going to need three different objects to accomplish this task.  One massMailer, massMailerList and massMailerUser.  The massMailer object is the main object, and it contains fields for From, Body, To (shown as a dropdown, but really a link to the massMailerList object), etc.  The massMailerList object contains a title, and an array of massMailerUser objects.  The massMailerUser object contains things like name, email, date added.  Whew.  These objects have been deployed, and their associated table data has been created.

Next up, creating the display methods and tweaking code so that Formtools displays the object properties correctly.  However, given the lateness of the hour, it&apos;s not happening tonight.

&lt;strong&gt;Update:&lt;/strong&gt; Sorry to those who are watching in anticipation of an early completion.  Due to sick family members, I can&apos;t really finish this up until tomorrow night.  On that note... sleep awaits.
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Thu, 15 Feb 2007 02:12:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/15/My-First-FarCry-library-take-2</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Next up on deck... My First FarCry lib!</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/13/Next-up-on-deck-My-First-FarCry-lib</link>
				<description>
				
				I&apos;ll add to this post, hopefully to completion, tomorrow.  At one point, I had a fairly decent mass mailer set up in FarCry 2.x/3.x.  I left that employer but still have most of the code required.  It was a modification of the dmEmail object to allow for the a list of emails to be inserted into a variable via CFFILE.  You&apos;d upload the list to the server, then import said list to an array.

So, I&apos;m working on site for my son&apos;s preschool, and it would be helpful to have similar functionality.  But, with a twist.  I want the library to capture emails into subscription pools, then use these pools to send out the various emails.  The idea being that those looking to get updates from the preschool will join one (or more) of the mailing lists, then receive updates based on the list that was joined.  I&apos;ll be placing this into the new FarCry 4.0 library feature and making the code available here, and on the FarCry lists/wiki.

&lt;strong&gt;Update:&lt;/strong&gt;  I&apos;ve seriously underestimated this task.  Much has changed under the hood of FarCry that I&apos;m only just getting back into.  At the moment, the extension to formtools has been created.  Dang is that a cool new feature ;).  I&apos;ve got the main display item for Mass Mail distribution 90% complete.  But, I&apos;ve run into an issue of making aObjectIDs for the underlying list emails that gets called.  This has REALLY changed, and will take a little more time to deconstruct.  It&apos;s late, I&apos;m off for now.

&lt;strong&gt;Update2:&lt;/strong&gt;  Please bear with me.  There&apos;s not much going to be accomplished today.  I&apos;ll try finishing up tonight, but we&apos;ll take the day as it comes.
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Tue, 13 Feb 2007 23:55:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/13/Next-up-on-deck-My-First-FarCry-lib</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Installing FarCry as a virtual site in IIS</title>
				<link>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/12/Installing-FarCry-as-a-virtual-site-in-IIS</link>
				<description>
				
				&lt;p&gt;This is specific to the FarCry 4.0 release. At the time of this 
    writing, you can grab it from &lt;a target=&quot;_blank&quot; rel=&quot;nofollow&quot; href=&quot;http://www.jeffcoughlin.com/?pg=11&quot;&gt;http://www.jeffcoughlin.com/?pg=11&lt;/a&gt;. From 
    this site, be sure to get farcry_core, fourq, farcry_mollio, 
    farcry_lib.farcrycms. 
  &lt;/p&gt;
  &lt;p&gt;First, our directory structure. Unzip the zips into 
    &lt;br /&gt;
    C:\farcry40\farcry_core 
    &lt;br /&gt;
    C:\farcry40\fourq 
    &lt;br /&gt;
    C:\farcry40\farcry_mollio 
    &lt;br /&gt;
    C:\farcry40\farcry_lib\farcrycms  &lt;/p&gt;
  &lt;p&gt;You will need to create a project folder. Create a copy of 
    farcry_mollio, and place it into either: 
    C:\farcry40\somesite 
    Or 
    C:\websites\somesite 
  &lt;/p&gt;
  &lt;p&gt;If the folder is placed outside of the FarCry root, additional steps 
    will need to be followed. Those steps will be listed below. Follow the 
    steps below to complete the installation. Please note that the folder 
  paths used are merely provided as an example. &lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;Open the IIS administrator. Add the virtual site somesite off of 
      your main domain website. Eg. Mainsite.com/somesite. To do this, right 
    click the website to modify, and click &lt;strong&gt;New-&amp;gt;Virtual Directory.&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Fill in the Alias as &lt;strong&gt;somesite&lt;/strong&gt;, click Next. Path will be either &lt;strong&gt;C:\farcry40\somesite\www&lt;/strong&gt;, or the optional folder outside of farcry at &lt;strong&gt;C:\websitse\somesite\www&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;Choose access permissions as appropriate for your environment. 
    Click &lt;strong&gt;Next&lt;/strong&gt; then &lt;strong&gt;Finish&lt;/strong&gt; to continue. &lt;/li&gt;
    &lt;li&gt;Create a new virtual directory in a similar fashion for farcry. 
      Right click the newly created somesite folder and click New-&amp;gt;Virtual 
      Directory. The alias is &lt;strong&gt;farcry&lt;/strong&gt; and the path is &lt;strong&gt;C:\farcry40\farcry_core\admin&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;Create a new database user/schema/database/etc to hold the FarCry 
      table information. This document is database agnostic, and assumes the 
      user has some means of affecting these changes. Regardless, FarCry 
    should have its own schema/database to reside in. &lt;/li&gt;
    &lt;li&gt;Log into the ColdFusion (CF for short) administrator and create 
      mapping for a logical path of &lt;strong&gt;/farcry &lt;/strong&gt;and directory path of &lt;strong&gt;C:\farcry40&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Optional&lt;/em&gt; - if the project folder is outside of the FarCry folder, 
      create a mapping for a logical path of &lt;strong&gt;/farcry/somesite&lt;/strong&gt; and a directory 
    path of &lt;strong&gt;C:\websites\somesite&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;Create a new CF datasource called &lt;strong&gt;somesite_farcry&lt;/strong&gt; pointing to the 
    database/schema created in step 5. &lt;/li&gt;
    &lt;li&gt;And, this was submitted to the FarCry list...  change &lt;strong&gt;somesite\www\install\FlightCheck.cfc&lt;/strong&gt; to:&lt;br /&gt;&amp;lt;cfinclude template=&amp;quot;/#arguments.siteName#/install/ping/index.cfm&amp;quot; /&amp;gt;&lt;/li&gt;
    &lt;li&gt;At this point you should now be ready to run the FarCry 
      installation scripts. Open a browser to mainsite.com/somesite/install. 
      If running from somewhere other than localhost, be sure to edit &lt;strong&gt;C:\farcry40\somesite\www\install\Application.cfm&lt;/strong&gt; (or &lt;strong&gt;C:\websites\somesite\www\install\Application.cfm&lt;/strong&gt;) to reflect your IP. &lt;/li&gt;
    &lt;li&gt;Fill in the required fields. The application name must match the 
      folder name you&apos;ve created. In this case it is &lt;strong&gt;somesite&lt;/strong&gt;. Fill in the 
      DSN name, and the database type. The website mapping should be &lt;strong&gt;/somesite&lt;/strong&gt; and the FarCry mapping should be&lt;strong&gt; /somesite/farcry&lt;/strong&gt;. Choose to 
      install the farcrycms library, and if in production, remove the 
    installation folder. &lt;/li&gt;
    &lt;li&gt;At this point, everthing should be ready to go. Click &lt;strong&gt;Install&lt;/strong&gt; and 
      watch the output of the screen. If any errors occur, either report 
      them back to the FarCry mailing list, or investigate where the 
    installer indicates there to be a problem. &lt;/li&gt;
    &lt;li&gt;Add this line to &lt;strong&gt;somesite\config\_serverSpecificVars.cfm&lt;/strong&gt;:
      &amp;lt;cfset application.url.webroot = &amp;quot;/somesite&amp;quot;&amp;gt;    &lt;/li&gt;
  &lt;/ol&gt;
				
				</description>
						
				
				<category>ColdFusion 6.x</category>				
				
				<category>ColdFusion 7.x</category>				
				
				<category>FarCry</category>				
				
				<pubDate>Mon, 12 Feb 2007 23:16:00 -0500</pubDate>
				<guid>http://www.geodesicgrafx.com/blog/index.cfm/2007/2/12/Installing-FarCry-as-a-virtual-site-in-IIS</guid>
				
			</item>
			
		 	
			</channel></rss>