<?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"
	>

<channel>
	<title>joe-ferraro.com</title>
	<atom:link href="http://joe-ferraro.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://joe-ferraro.com</link>
	<description>best viewed in safari  :)</description>
	<pubDate>Thu, 13 Nov 2008 20:27:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>wrapper class and force.com sites</title>
		<link>http://joe-ferraro.com/2008/11/wrapper-class-and-forcecom-sites/</link>
		<comments>http://joe-ferraro.com/2008/11/wrapper-class-and-forcecom-sites/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 20:17:05 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[apex]]></category>

		<category><![CDATA[visualforce]]></category>

		<category><![CDATA[Force.com]]></category>

		<category><![CDATA[force.com sites]]></category>

		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/?p=49</guid>
		<description><![CDATA[Force.com Sites was announced last week at Dreamforce ‘08 and what a game changing announcement it was.  Here’s my foray into Sites development, with nifty sample code...]]></description>
			<content:encoded><![CDATA[<p>Force.com Sites was announced last week at Dreamforce &#8216;08 and what a game changing announcement it was.  Here&#8217;s my foray into Sites development, with nifty sample code (please note the table of opportunity data below is a live Salesforce.com Visualforce page from my development environment embedded into this post):</p>
<div>
 <IFRAME src="http://crmmanager-developer-edition.na6.force.com/OpportunityHeatList" height="500" width="500" ></IFRAME>
</div>
<div>
<b>Controller</b></p>
<pre name="code" class="java">

public class OpportunityList_Controller
{
	public class MyOpportunity
	{
	    Opportunity o;
	    public MyOpportunity(Opportunity opp) { o = opp; }
	    public Opportunity getOpportunity(){ return o; }

	    public String getColor()
	    {
		    if (o.Probability &lt; 25) return &#039;#2A73F0&#039;;
		    else if (o.Probability &gt;= 25 &amp;&amp; o.Probability &lt;= 75) return &#039;#E0B60D&#039;;
		    else if (o.Probability &gt; 75) return &#039;#FF0000&#039;;
		    else return &#039;#000000&#039;;
	    }
    }

    public List&lt;MyOpportunity&gt; results = new List&lt;MyOpportunity&gt;{};

	public List&lt;MyOpportunity&gt; getOpportunities()
	{
		results.clear();
        for (Opportunity o : [Select Id, Name, StageName, Closedate, Probability
From Opportunity where StageName != &#039;Closed Won&#039; order by Name limit 20])
        {
        	results.add(new MyOpportunity(o));
        }
		return results;
    }
}
</pre>
</div>
<p></p>
<div>
<b>Visualforce Page</b></p>
<pre name="code" class="java">

&lt;apex:page controller=&quot;OpportunityList_Controller&quot;
tabStyle=&quot;Opportunity&quot; showHeader=&quot;false&quot; sidebar=&quot;false&quot; &gt;
	&lt;apex:form &gt;
		&lt;apex:pageBlock title=&quot;&quot; id=&quot;pageBlock&quot;&gt;
			&lt;apex:pageMessages &gt;&lt;/apex:pageMessages&gt;
			&lt;apex:pageBlockTable value=&quot;{!opportunities}&quot; var=&quot;o&quot;
rendered=&quot;{!NOT(ISNULL(opportunities))}&quot;&gt;
				&lt;apex:column &gt;
					&lt;apex:facet name=&quot;header&quot;&gt;Opportunity Name&lt;/apex:facet&gt;
					&lt;div style=&quot;color:{!o.color};font-weight:bold;text-decoration:underline;cursor:hand;cursor:pointer;&quot;&gt;
					{!o.Opportunity.Name}
					&lt;/div&gt;
				&lt;/apex:column&gt;
				&lt;apex:column value=&quot;{!o.Opportunity.Probability}&quot;&gt;&lt;/apex:column&gt;
				&lt;apex:column value=&quot;{!o.Opportunity.StageName}&quot;&gt;&lt;/apex:column&gt;
				&lt;apex:column value=&quot;{!o.Opportunity.CloseDate}&quot;&gt;&lt;/apex:column&gt;
			&lt;/apex:pageBlockTable&gt;
		&lt;/apex:pageBlock&gt;
	&lt;/apex:form&gt;
&lt;/apex:page&gt;
</pre>
</div>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/11/wrapper-class-and-forcecom-sites/feed/</wfw:commentRss>
		</item>
		<item>
		<title>crippled google date search&#8230;a workaround</title>
		<link>http://joe-ferraro.com/2008/09/crippled-google-date-searcha-workaround/</link>
		<comments>http://joe-ferraro.com/2008/09/crippled-google-date-searcha-workaround/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 03:09:56 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[google]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[greasemonkey]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/?p=48</guid>
		<description><![CDATA[


The other day while browsing in Safari, I realized Google had limited my advanced date searches (which I use incessantly).  Then it occurred to me I had not suffered the same fate in Firefox.  It turns out I was using a Greasemonkey script I had written (quite poorly, I may add) and uploaded [...]]]></description>
			<content:encoded><![CDATA[<div><img src="http://joe-ferraro.com/images/googleAdvanced.png" alt="Advanced Google Search" class="alignnone" /><br />
<img style="border-bottom: 1px solid rgb(204, 204, 204); margin-bottom: 15px;" class="alignnone" src="http://www.joe-ferraro.com/images/googleDate.png" alt="Crippled Google Date Search" />
</div>
<p>The other day while browsing in Safari, I realized Google had limited my advanced date searches (which I use incessantly).  Then it occurred to me I had not suffered the same fate in Firefox.  It turns out I was using a Greasemonkey script I had written (quite poorly, I may add) and uploaded to Userscripts.org.  It can be found <a target="_blank" href="http://userscripts.org/scripts/show/21566">here</a> and obviously requires the<a target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/748"> greasemonkey Firefox add-on</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/09/crippled-google-date-searcha-workaround/feed/</wfw:commentRss>
		</item>
		<item>
		<title>winter &#8216;09 is (almost) here</title>
		<link>http://joe-ferraro.com/2008/09/winter-09-is-almost-here/</link>
		<comments>http://joe-ferraro.com/2008/09/winter-09-is-almost-here/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 01:48:55 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Salesforce.com]]></category>

		<category><![CDATA[winter09]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/?p=45</guid>
		<description><![CDATA[
I got the good old scheduled maintenance window message on na1 this week, but I didn&#8217;t expect it to be for the Winter &#8216;09 release. Kudos to SFDC for the early release (a month before Dreamforce).
Release Preview
Release Notes (pdf)
]]></description>
			<content:encoded><![CDATA[<p><img src="http://joe-ferraro.com/images/winter09.png" alt="winter 09" width="183" height="204" /></p>
<p>I got the good old scheduled maintenance window message on na1 this week, but I didn&#8217;t expect it to be for the Winter &#8216;09 release. Kudos to SFDC for the early release (a month before Dreamforce).</p>
<p><a href="http://www.salesforce.com/products/previews/winter09/" target="_blank">Release Preview</a></p>
<p><a href="http://www.salesforce.com/assets/pdf/misc/winter09_release_preview.pdf" target="_blank">Release Notes (pdf)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/09/winter-09-is-almost-here/feed/</wfw:commentRss>
		</item>
		<item>
		<title>visualforce autocomplete component</title>
		<link>http://joe-ferraro.com/2008/08/visualforce-autocomplete-component/</link>
		<comments>http://joe-ferraro.com/2008/08/visualforce-autocomplete-component/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 13:29:30 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Salesforce.com]]></category>

		<category><![CDATA[apex]]></category>

		<category><![CDATA[featured]]></category>

		<category><![CDATA[visualforce]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/?p=44</guid>
		<description><![CDATA[I saw this on the boards and I wanted to make sure everyone knew it was out there.
http://www.jonathanrm.com/blog/?p=12
 
 
]]></description>
			<content:encoded><![CDATA[<p>I saw this on the boards and I wanted to make sure everyone knew it was out there.</p>
<p><a href="http://www.jonathanrm.com/blog/?p=12">http://www.jonathanrm.com/blog/?p=12</a></p>
<p> </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/08/visualforce-autocomplete-component/feed/</wfw:commentRss>
		</item>
		<item>
		<title>(unofficial) adobe air tasks</title>
		<link>http://joe-ferraro.com/2008/08/adobe-air-tasks/</link>
		<comments>http://joe-ferraro.com/2008/08/adobe-air-tasks/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 01:36:11 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Salesforce.com]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[adobe air]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/?p=42</guid>
		<description><![CDATA[i'm gauging interest from other consultants that track time in Salesforce.com.  Would you use an AIR app?  See a screencast after the jump...
]]></description>
			<content:encoded><![CDATA[<div><img src="http://www.joe-ferraro.com/images/airtasks1.png" alt="airtasks"/></div>
<p>I got tired of logging into our Salesforce.com instance to log billable activities, so I developed this AIR app&#8230;is this something people would use?<br />
<br />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="350" height="443"><param name="movie" value="http://www.joe-ferraro.com/video/airtasks.swf"></param><param name="quality" value="high"></param><param name="bgcolor" value="#FFFFFF"></param><param name="flashVars" value="thumb=http://content.screencast.com/users/jf317820/folders/Jing/media/cc8c2eb2-32a2-4caf-b6df-23a418e6c0ec/FirstFrame.jpg&#038;content=http://www.joe-ferraro.com/video/airtasks.swf&#038;width=350&#038;height=443"></param><param name="allowFullScreen" value="true"></param><param name="scale" value="showall"></param><param name="allowScriptAccess" value="always"></param>  <embed src="http://www.joe-ferraro.com/video/airtasks.swf" quality="high" bgcolor="#FFFFFF" width="350" height="443" type="application/x-shockwave-flash" allowScriptAccess="always" flashVars="thumb=http://content.screencast.com/users/jf317820/folders/Jing/media/cc8c2eb2-32a2-4caf-b6df-23a418e6c0ec/FirstFrame.jpg&#038;content=http://www.joe-ferraro.com/video/airtasks.swf&#038;width=350&#038;height=443" allowFullScreen="true" scale="showall"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/08/adobe-air-tasks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>populating a flex combobox with picklist values</title>
		<link>http://joe-ferraro.com/2008/08/populating-a-flex-combobox-with-picklist-values/</link>
		<comments>http://joe-ferraro.com/2008/08/populating-a-flex-combobox-with-picklist-values/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 23:03:49 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Salesforce.com]]></category>

		<category><![CDATA[apex]]></category>

		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/?p=41</guid>
		<description><![CDATA[i've had some requests concerning filling flex combobox's with picklist values returned from a describe call...]]></description>
			<content:encoded><![CDATA[<pre name="code" class="javascript">

//actionscript
[Bindable] var comboList:Array = new Array();
var myPicklistValues:ArrayCollection = new ArrayCollection();
apex.describeSObjects([&quot;Task&quot;],
	new AsyncResponder(function (result:Object):void
	{
		myPicklistValues = result[0].fields.Status.picklistValues;
		for (var p:int=0;p&lt;myPicklistValues.length;p++)
		{
			if (myPicklistValues[p].active)
			{
				var foo:PickListEntry = myPicklistValues[p].label;
				comboList.push(foo);
			}
        }
	} 

}, genericFault));
</pre>
<pre name="code" class="javascript">

//Flex code
&lt;mx:ComboBox width=&quot;180&quot; dataProvider=&quot;{comboList}&quot; /&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/08/populating-a-flex-combobox-with-picklist-values/feed/</wfw:commentRss>
		</item>
		<item>
		<title>force.com migration tool</title>
		<link>http://joe-ferraro.com/2008/08/forcecom-migration-tool/</link>
		<comments>http://joe-ferraro.com/2008/08/forcecom-migration-tool/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 22:03:04 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[featured]]></category>

		<category><![CDATA[Force.com]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/?p=40</guid>
		<description><![CDATA[All you consultants out there better pick this thing up: force.com migration tool
]]></description>
			<content:encoded><![CDATA[<p>All you consultants out there better pick this thing up: <a href="http://blog.sforce.com/sforce/2008/07/announcing-forc.html">force.com migration tool</a></p>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/08/forcecom-migration-tool/feed/</wfw:commentRss>
		</item>
		<item>
		<title>r.i.p. bernie</title>
		<link>http://joe-ferraro.com/2008/08/rip-bernie/</link>
		<comments>http://joe-ferraro.com/2008/08/rip-bernie/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 16:06:31 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[bernie mac]]></category>

		<category><![CDATA[comedy]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/?p=39</guid>
		<description><![CDATA[
A bit late, but I just wanted to pay my respects to one of the greatest comedians of our generation, Bernie Mac.  Bernie became a Hollywood staple in part due to his outstanding support roles in movies like the Ocean&#8217;s 11 series and Charlie&#8217;s Angles, but his real genius is evident in his standup [...]]]></description>
			<content:encoded><![CDATA[<div><img src="http://www.joe-ferraro.com/images/bernie.jpg" alt="bernie" width="200" /></div>
<p>A bit late, but I just wanted to pay my respects to one of the greatest comedians of our generation, Bernie Mac.  Bernie became a Hollywood staple in part due to his outstanding support roles in movies like the Ocean&#8217;s 11 series and Charlie&#8217;s Angles, but his real genius is evident in his standup act (and role in <a href="http://www.imdb.com/title/tt0236388/">The Original Kings of Comedy</a>).  RIP Bernie.</p>
<div>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/S4FOJFLJVlQ&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/S4FOJFLJVlQ&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
</div>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/08/rip-bernie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>running a trigger via workflow</title>
		<link>http://joe-ferraro.com/2008/08/running-a-trigger-via-workflow/</link>
		<comments>http://joe-ferraro.com/2008/08/running-a-trigger-via-workflow/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 20:55:09 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Salesforce.com]]></category>

		<category><![CDATA[apex]]></category>

		<category><![CDATA[triggers]]></category>

		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/?p=38</guid>
		<description><![CDATA[Those of you who follow Steve Andersen&#8217;s blog may have seen his post re: cron jobs using Apex in April 2007.  Kudos to you, Steve for a fantastic post (better late than never!) not only because of its universal application, but also because it got me thinking of other roundabout ways of utilizing Apex.
*Let [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://www.joe-ferraro.com/images/apexLogo.png" alt="Apex" />Those of you who follow <a href="http://www.gokubi.com">Steve Andersen&#8217;s blog</a> may have seen his post re: <a href="http://gokubi.com/archives/daily-cron-jobs-with-apex">cron jobs using Apex</a> in April 2007.  Kudos to you, Steve for a fantastic post (better late than never!) not only because of its universal application, but also because it got me thinking of other roundabout ways of utilizing Apex.</p>
<p>*Let me preface the rest of this post by saying there should be an option in Time-Based Workflow to run a trigger (I know I&#8217;ve seen this on the IdeaExchange, but I haven&#8217;t been able to track it down).</p>
<p>Over the last several months, I&#8217;ve had several clients request that a record be checked for certain conditions after a certain amount of time has elapsed.  While the solution to this requirement may be intuitive to some of us seasoned Salesforce.com fanboys, I figured I&#8217;d walk through it for those new to the platform.</p>
<p><strong>Sample Requirement:</strong> After a Lead is inserted, wait three days, then check if any tasks have been associated with this record.  If not, send an email alert to the user&#8217;s manager.</p>
<p>First, we create a custom checkbox field on Leads called &#8220;Check for Activity&#8221;.  Then, create a workflow rule that runs when a Lead is inserted (add any additional filters if necessary).  Add to this workflow rule a time-based field update that runs three days after the Lead was inserted.  The field update will mark the &#8220;Check for Activity&#8221; checkbox &#8220;TRUE&#8221;.  Then, we create an Apex trigger that runs After Update on Leads:</p>
<p><code><br />
trigger checkForLeadActivity on Lead (after update)<br />
{<br />
    for (Lead l : Trigger.new)<br />
    {<br />
        if (l.check_for_activity__c == true)<br />
        {<br />
            //run our code<br />
        }<br />
    }<br />
}<br />
</code></p>
<p>Obviously, I&#8217;ve left you high and dry on the code, but if you need more assistance feel free to reach out to me and I&#8217;d be happy to walk you through the code.</p>
<p>Happy Apex-ing!</p>
<p>*<strong>EDIT</strong><br />
I want to make sure I stress the importance of coding your triggers for bulk processing.  The code block above should <em>actually</em> read like so:</p>
<p><code><br />
trigger checkForLeadActivity on Lead (after update)<br />
{<br />
    List&lt;Lead&gt; myLeads = new List&lt;Lead&gt;();</code></p>
<p><code>    for (Lead l : Trigger.new)<br />
    {<br />
        if (l.check_for_activity__c == true)<br />
        {<br />
            myLeads.add(l);<br />
        }<br />
    }</code></p>
<p><code> </code></p>
<p><span style="font-family: -webkit-monospace;">    //process myLeads outside the for loop </span></p>
<p><span style="font-family: -webkit-monospace;">    //to avoid governor limits on things like SOQL queries</span></p>
<p><code> }<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/08/running-a-trigger-via-workflow/feed/</wfw:commentRss>
		</item>
		<item>
		<title>First post from my iphone</title>
		<link>http://joe-ferraro.com/2008/07/first-post-from-my-iphone/</link>
		<comments>http://joe-ferraro.com/2008/07/first-post-from-my-iphone/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 18:13:12 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://joe-ferraro.com/2008/07/first-post-from-my-iphone/</guid>
		<description><![CDATA[I&#8217;ve finally joined the wonderful world of the iphone&#8230;I&#8217;ll be checking back in a day or so when I&#8217;ve had the chance to play with the salesforce app&#8230;anything I should know from the iPhone vets out there?  The wordpress app is great!
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally joined the wonderful world of the iphone&#8230;I&#8217;ll be checking back in a day or so when I&#8217;ve had the chance to play with the salesforce app&#8230;anything I should know from the iPhone vets out there?  The wordpress app is great!</p>
]]></content:encoded>
			<wfw:commentRss>http://joe-ferraro.com/2008/07/first-post-from-my-iphone/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
