<?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>WebProNews &#187; Spry</title>
	<atom:link href="http://www.webpronews.com/tag/spry/feed" rel="self" type="application/rss+xml" />
	<link>http://www.webpronews.com</link>
	<description>Breaking News in Tech, Search, Social, &#38; Business</description>
	<lastBuildDate>Sun, 12 Feb 2012 22:29:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Update to LighthousePro/JSON/Spry Post</title>
		<link>http://www.webpronews.com/update-to-lighthousepro-json-spry-post-2007-07</link>
		<comments>http://www.webpronews.com/update-to-lighthousepro-json-spry-post-2007-07#comments</comments>
		<pubDate>Tue, 03 Jul 2007 21:11:29 +0000</pubDate>
		<dc:creator>Raymond Camden</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Spry]]></category>
		<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=38921</guid>
		<description><![CDATA[<p>Yesterday I <a href="http://www.coldfusionjedi.com/index.cfm/2007/7/2/Case-Study--Moving-to-Spry-15-and-JSON-for-Lighthouse-Pro">blogged</a> about how I moved <a href="http://lighthousepro.riaforge.org/">Lighthouse Pro</a> over to JSON using CFJSON and Spry. In general it worked nice and gave me some size savings on the data, but I had run into one problem.</p>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I <a href="http://www.coldfusionjedi.com/index.cfm/2007/7/2/Case-Study--Moving-to-Spry-15-and-JSON-for-Lighthouse-Pro">blogged</a> about how I moved <a href="http://lighthousepro.riaforge.org/">Lighthouse Pro</a> over to JSON using CFJSON and Spry. In general it worked nice and gave me some size savings on the data, but I had run into one problem.</p>
<p>The format of the data returned from CFJSON wasn&#8217;t working right with Spry. I had to tell CFJSON to return it&#8217;s data in &quot;array&quot; format. This gave me data that looked like so (and by the way, this is borrowed from the Spry docs that I&#8217;ll be linking to in a moment):</p>
<p><code>{<br />
<span style="color: rgb(0, 0, 255);">&quot;data&quot;</span>:<br />
[<br />
{ <span style="color: rgb(0, 0, 255);">&quot;firstname&quot;</span>: <span style="color: rgb(0, 0, 255);">&quot;John&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;lastname&quot;</span>: <span style="color: rgb(0, 0, 255);">&quot;Smith&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;id&quot;</span>: <span style="color: rgb(0, 0, 255);">&quot;3001&quot;</span> },<br />
{ <span style="color: rgb(0, 0, 255);">&quot;firstname&quot;</span>: <span style="color: rgb(0, 0, 255);">&quot;Jane&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;lastname&quot;</span>: <span style="color: rgb(0, 0, 255);">&quot;Doe&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;id&quot;</span>: <span style="color: rgb(0, 0, 255);">&quot;4532&quot;</span> },<br />
{ <span style="color: rgb(0, 0, 255);">&quot;firstname&quot;</span>: <span style="color: rgb(0, 0, 255);">&quot;Ann&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;lastname&quot;</span>: <span style="color: rgb(0, 0, 255);">&quot;Hunt&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;id&quot;</span>: <span style="color: rgb(0, 0, 255);">&quot;5462&quot;</span> }<br />
]<br />
}</code></p>
<p>Turns out though &#8211; that Spry had built in support for the default way that CFJSON returned cfqueries. Why? The default way CFJSON returns queries is actually even smaller. Consider this version:</p>
<p><code>{<br />
<span style="color: rgb(0, 0, 255);">&quot;data&quot;</span>:<br />
{<br />
<span style="color: rgb(0, 0, 255);">&quot;firstname&quot;</span>: [ <span style="color: rgb(0, 0, 255);">&quot;John&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;Jane&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;Ann&quot;</span> ],<br />
<span style="color: rgb(0, 0, 255);">&quot;lastname&quot;</span>: [ <span style="color: rgb(0, 0, 255);">&quot;Smith&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;Doe&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;Hunt&quot;</span> ]<br />
<span style="color: rgb(0, 0, 255);">&quot;id&quot;</span>: [ <span style="color: rgb(0, 0, 255);">&quot;3001&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;4532&quot;</span>, <span style="color: rgb(0, 0, 255);">&quot;5462&quot;</span> ]<br />
}<br />
}</code></p>
<p>Notice that the main change is the columns are not repeated. In order for Spry to work with this form, I simply had to add a new attribute to my JSONDataSet creation:&nbsp;</p>
<p><code>var dsIssues = new<br />
Spry.Data.JSONDataSet<br />
(<span style="color: rgb(0, 0, 255);">&quot;issuesxml.cfm?id=#p.getID()#&amp;stupid=#rand(&quot;</span>SHA1PRNG<span style="color: rgb(0, 0, 255);">&quot;)#&quot;</span>,<br />
{path:<span style="color: rgb(0, 0, 255);">&quot;data&quot;</span>,pathIsObjectOfArrays: true});</code></p>
<p>Note specifically the pathIsObjectOfArray attribute.</p>
<p>Ok &#8211; so why is this a big deal? Well as I mentioned in the last post, I had hoped the savings in size would be a bit better. For my 300 issue project I went from 130k to 90k. Guess what the size was for this alternate version? 40k. Now <strong>that</strong> is a nice savings.</p>
<p>For more information on the options concerning JSON datasets in Spry, see <a href="http://labs.adobe.com/technologies/spry/articles/data_api/apis/json_dataset.html#constructor">this page</a>. Thanks go to Kin Blas of Adobe for pointing this out to me. (And Lighthouse Pro users will see this in the zip later today.)</p>
<p><a href="http://www.coldfusionjedi.com/index.cfm/2007/7/3/Update-to-LighthouseProJSONSpry-Post">Comment</a><a href="http://www.coldfusionjedi.com/index.cfm/2007/7/3/MAX-BOF-Announcement"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/update-to-lighthousepro-json-spry-post-2007-07/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Form Post in Spry</title>
		<link>http://www.webpronews.com/form-post-in-spry-2007-01</link>
		<comments>http://www.webpronews.com/form-post-in-spry-2007-01#comments</comments>
		<pubDate>Wed, 31 Jan 2007 15:58:24 +0000</pubDate>
		<dc:creator>Raymond Camden</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[ONE]]></category>
		<category><![CDATA[Spry]]></category>
		<category><![CDATA[VAR]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=34920</guid>
		<description><![CDATA[Last week or so I <a href="http://ray.camdenfamily.com/index.cfm/2007/1/14/Doing-a-form-POST-in-Spry" class="bluelink">blogged</a> about doing form postings with Spry.
]]></description>
			<content:encoded><![CDATA[<p>Last week or so I <a href="http://ray.camdenfamily.com/index.cfm/2007/1/14/Doing-a-form-POST-in-Spry" class="bluelink">blogged</a> about doing form postings with Spry.</p>
<p>I was asked to provide a bit more documentation so I thought I&#8217;d show a slightly more detailed example. </p>
<p>First lets start with a very simple form: </p>
<p><code>&lt;form&gt;<br />
number one: &lt;input type="text" name="one" id="one"&gt;&lt;br&gt;<br />
number two: &lt;input type="text" name="two" id="two"&gt;&lt;br&gt;<br />
&lt;/form&gt;</code></p>
<p>This form has two simple text fields named one and two. I want to use Spry to send the values of these two fields to the server. First lets add a simple button: </p>
<p><code>&lt;input type="button" value="Add" onClick="doAddPost()"&gt;</code></p>
<p>This simply fires off a JavaScript function. I&#8217;m going to break the function up and explain each and every line to make it as clear as possible. First, start the function. </p>
<p><code>function doAddPost() {</code></p>
<p>We need to know <i>where</i> we will be posting the form, so next I define the URL: </p>
<p><code>var url = "moon.cfm";</code></p>
<p>Now I need to grab the values I want to post. Normally with a submit button you don&#8217;t have to worry about this. The browser simply sends all the form fields. In this case though I have to specify the fields manually. First I&#8217;ll grab the value of the form field, one, using the Spry/Prototype $() shortcut: </p>
<p><code>var one = $("one").value;</code></p>
<p>Then I&#8217;ll grab the value from the second form field: </p>
<p><code>var two = $("two").value;</code></p>
<p>The form post data must be sent like a query string: foo1=value1&#038;foo2=value2. Again, I have to do this by hand: </p>
<p><code>var formData = 'one='+one+'&#038;two='+two;</code></p>
<p>Next I encode any values in the string, like spaces or other special characters: </p>
<p><code>formData = encodeURI(formData);</code></p>
<p>So the last thing we do is run the Spry code that will handle the form post. I talked about this more in the <a href="http://ray.camdenfamily.com/index.cfm/2007/1/14/Doing-a-form-POST-in-Spry" class="bluelink">last post</a> so I won&#8217;t spend a lot of time on it. </p>
<p>Spry.Utils.loadURL(&#8216;POST&#8217;, url, true, resFunc, {postData: formData, headers: {&#8220;Content-Type&#8221;: &#8220;application/x-www-form-urlencoded; charset=UTF-8&#8243;}});</p>
<p>The first argument defines the type of request (GET or POST). The second argument is the URL value I defined earlier. The third argument defines if the call is asynchronous or not. The fourth argument defines a function to run with the result of the HTTP call. </p>
<p>Lastly there is a structure of arguments that define the request. Again I have to thank Keith for figuring this out. </p>
<p>So here is the function again all in one code block: </p>
<p><code>function doAddPost() {<br />
&nbsp; &nbsp;   var url = "moon.cfm";<br />
&nbsp; &nbsp;    var one = $("one").value;<br />
&nbsp; &nbsp;    var two = $("two").value;<br />
&nbsp; &nbsp;    var formData = 'one='+one+'&#038;two='+two;<br />
&nbsp; &nbsp;    formData = encodeURI(formData);<br />
&nbsp; &nbsp;    Spry.Utils.loadURL('POST', url, true, resFunc, {postData: formData, headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}});<br />
}</code></p>
<p>So how do we handle this server side? We have a few options. As I mentioned, the loadURL function lets you define code to run with the result. So whatever the server returned I can work with in JavaScript. This can be either a string or XML or WDDX. To make it easier I&#8217;ll just return a simple string: </p>
<p><code>&lt;cfsetting enablecfoutputonly=true&gt;<br />
&lt;cfparam name="form.one" default="0"&gt;<br />
&lt;cfparam name="form.two" default="0"&gt;</p>
<p>&lt;cfif isNumeric(form.one) and isNumeric(form.two)&gt;<br />
&nbsp; &nbsp;    &lt;cfoutput&gt;#form.one+form.two#&lt;/cfoutput&gt;<br />
&lt;cfelse&gt;<br />
&nbsp; &nbsp;    &lt;cfoutput&gt;0&lt;/cfoutput&gt;<br />
&lt;/cfif&gt;</code></p>
<p>Obviously there isn&#8217;t anything too complex here, just the addition of two numbers. I take the result and simply output it directly to the client requesting the data. With me so far? </p>
<p>Now let&#8217;s return to JavaScript and work with the result. I had specified the a function named resFunc would handle the result. The function is all of 4 lines: </p>
<p><code>function resFunc(request) {<br />
&nbsp; &nbsp;    var result = request.xhRequest.responseText;<br />
&nbsp; &nbsp;    $("result").innerHTML = "Result was: " + result;<br />
}</code></p>
<p>Spry automatically passes a collection of data back. The information I&#8217;m interested in resides in xhRequest.responseText. Once I have that, I can write out the result in the browser. </p>
<p>So I had mentioned more than once I wanted to make this process a bit simpler. Here is my first draft at it: </p>
<p><code>function doFormPost(url,formlist,resfunc) {<br />
&nbsp; &nbsp;    var formdata = '';<br />
&nbsp; &nbsp;    var formarray = formlist.split(',');<br />
&nbsp; &nbsp;    for(var i=0; i &lt; formarray.length; i++) {<br />
&nbsp; &nbsp; &nbsp;       formdata+='&#038;'+formarray[i]+'=';<br />
&nbsp; &nbsp; &nbsp;       var fValue = $(formarray[i]).value;<br />
&nbsp; &nbsp; &nbsp;       formdata+=fValue;<br />
&nbsp; &nbsp;    }<br />
&nbsp; &nbsp;    formData = encodeURI(formdata);<br />
&nbsp; &nbsp;    Spry.Utils.loadURL('POST', url, true, resfunc, {postData: formdata, headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}});<br />
}</code></p>
<p>This lets you pass in a url and a list of form fields to post. The third argument is optional. So to do a Spry post you can do this instead of the button and custom function I had before: </p>
<p><code>&lt;input type="button" value="Add3" onClick="doFormPost('moon.cfm', 'one,two',resFunc)"&gt;</code></p>
<p>As I said though this is just a first draft. Right now it assumes just text fields. </p>
<p><a href="http://ray.camdenfamily.com/index.cfm/2007/1/29/Doing--form-Post-in-Spry-2#comments" class="bluelink">Comments</a></p>
<p>Tag:   </p>
<p><a href="javascript:void   window.open('http://digg.com/submit?phase=2&#038;url='+encodeURIComponent(window.   location.href)+'&#038;ei=UTF-8','popup','width=520px,height=420px,status=0,location=0,resizable=1,scrollbars=1,left=100,top=50',0)"><img   src="http://images.ientrymail.com/webpronews/digg-pic.png" border=0> Digg</a> | <a href="javascript:location.href='http://reddit.com/submit?url='+encodeURIComponent(location.href)+'&#038;title='+encodeURIComponent(document.title)"><img  src="http://images.ientrymail.com/webpronews/reddit.png" border=0>Reddit</a> | <a href="javascript:location.href='http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(document.location.href)+'&#038;t='+encodeURIComponent(document.title)+ '   '"><img src="http://images.ientrymail.com/webpronews/furl-pic.png" border=0> Furl</a> </p>
<p> Bookmark WebProNews: <a href="http://www.webpronews.com"><img src="http://images.ientrymail.com/webpronews/wpn-readit.jpg" border=0></a></p>
<p>Raymond Camden, ray@camdenfamily.com<br />
<a href="http://ray.camdenfamily.com">http://ray.camdenfamily.com</a></p>
<p>Raymond Camden is Vice President of Technology for roundpeg, Inc. A long<br />
time ColdFusion user, Raymond has worked on numerous ColdFusion books<br />
and is the creator of many of the most popular ColdFusion community web<br />
sites. He is an Adobe Community Expert, user group manager, and the<br />
proud father of three little bundles of joy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/form-post-in-spry-2007-01/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How Many Rows of Data to Use with Spry</title>
		<link>http://www.webpronews.com/how-many-rows-of-data-to-use-with-spry-2006-12</link>
		<comments>http://www.webpronews.com/how-many-rows-of-data-to-use-with-spry-2006-12#comments</comments>
		<pubDate>Wed, 27 Dec 2006 22:05:29 +0000</pubDate>
		<dc:creator>Raymond Camden</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Spry]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=33997</guid>
		<description><![CDATA[Bob sent in an interesting email to me:
]]></description>
			<content:encoded><![CDATA[<p>Bob sent in an interesting email to me:</p>
<blockquote><p>Ray, we&#8217;re about to use spry on one of our sites but i was wondering what you would recommend to be the max records to return in the XML? We may have 2,000 records returned at a time (in a directory format)?<br />
Do you have any performance tips etc. </p>
<p>When it comes to determining how many rows of data should be returned, you can&#8217;t just focus on the number of rows. You must also consider the size of each row. So imagine a set of XML that had one column per row: </p></blockquote>
<p><code>&lt;people&gt;<br />
&lt;name&gt;Jack Abbot&lt;/name&gt;<br />
&lt;name&gt;Victor Newman&lt;/name&gt;<br />
&lt;name&gt;Nick Newman&lt;/name&gt;<br />
&lt;/people&gt;  </code></p>
<p>In the example above the XML only contains the person&#8217;s name. If it contained other information (gender, age, marital status, salary, etc), then the size of the XML dramatically increases with each row. </p>
<p>So the first thing you want to do is get a gut feeling for the size of your rows. </p>
<p>Next you want to figure out how long its taking for the browser to load your XML. </p>
<p>The best tool for that (well, for Firefox users) would be Firebug. It lets you trace AJAX requests. </p>
<p>This includes the URL, the response, and important to you in this post is the time it took to load. If you can&#8217;t use Firebug, you should also look at ServiceCapture. </p>
<p>I actually use them both as ServiceCapture is great for monitoring Flash Remoting requests. </p>
<p>One of these days I&#8217;m going to get together a simple demo showing how to combine client side paging and server side paging to handle very large data sets in Spry. </p>
<p><a href="http://ray.camdenfamily.com/index.cfm/2006/12/22/Ask-a-Jedi-Figuring-out-how-many-rows-of-data-to-use-with-Spry#comments" class="bluelink">Comments</a></p>
<p>Tag:     </p>
<p><a   href="javascript:location.href='http://reddit.com/submit?url='+encodeURIComponent(location.href)+'&#038;title='+encodeURIComponent(document.title)"><img    src="http://images.ientrymail.com/webpronews/reddit.png" border=0>Reddit</a> | <a   href="javascript:location.href='http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(document.location.href)+'&#038;t='+encodeURIComponent(document.title)+ '     '"><img src="http://images.ientrymail.com/webpronews/furl-pic.png" border=0> Furl</a>    </p>
<p>Bookmark WebProNews: <a href="http://www.webpronews.com"><img src="http://images.ientrymail.com/webpronews/wpn-readit.jpg" border=0></a></p>
<p>Raymond Camden, ray@camdenfamily.com<br />
<a href="http://ray.camdenfamily.com">http://ray.camdenfamily.com</a></p>
<p>Raymond Camden is Vice President of Technology for roundpeg, Inc. A long<br />
time ColdFusion user, Raymond has worked on numerous ColdFusion books<br />
and is the creator of many of the most popular ColdFusion community web<br />
sites. He is an Adobe Community Expert, user group manager, and the<br />
proud father of three little bundles of joy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/how-many-rows-of-data-to-use-with-spry-2006-12/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spry: Custom Columns</title>
		<link>http://www.webpronews.com/spry-custom-columns-2006-12</link>
		<comments>http://www.webpronews.com/spry-custom-columns-2006-12#comments</comments>
		<pubDate>Wed, 27 Dec 2006 19:16:23 +0000</pubDate>
		<dc:creator>Raymond Camden</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Custom]]></category>
		<category><![CDATA[Spry]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=33982</guid>
		<description><![CDATA[A few days ago I <a href="http://ray.camdenfamily.com/index.cfm/2006/12/22/New-Spry-Code-Paged-Datasets" class="bluelink">posted</a> a link to a few new Spry demos including one that shows how to build <a href="http://labs.adobe.com/technologies/spry/samples/data_region/CustomColumnsSample.html" class="bluelink">custom columns</a> in Spry.
]]></description>
			<content:encoded><![CDATA[<p>A few days ago I <a href="http://ray.camdenfamily.com/index.cfm/2006/12/22/New-Spry-Code-Paged-Datasets" class="bluelink">posted</a> a link to a few new Spry demos including one that shows how to build <a href="http://labs.adobe.com/technologies/spry/samples/data_region/CustomColumnsSample.html" class="bluelink">custom columns</a> in Spry.</p>
<p>This is a pretty cool feature so I thought I&#8217;d whip up another demo so folks can really appreciate how handy this is. The idea is simple: You tell Spry to run code after the data is loaded and simply manipulate the data structure to add the new column. The new column can contain anything you want. This is great if you don&#8217;t have control over the XML that your Spry page is using. </p>
<p>Consider an XML document that returns a ColdFusion date: </p>
<p><code>&lt;cfsetting enablecfoutputonly="true" showdebugoutput="false"&gt;  </p>
<p>&lt;cfcontent type="text/xml"&gt;<br />
&lt;cfoutput&gt;&lt;people&gt;<br />
&nbsp;&nbsp;&nbsp;    &lt;person&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        &lt;name&gt;Raymond Camden&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        &lt;date&gt;#now()#&lt;/date&gt;<br />
&nbsp;&nbsp;&nbsp;    &lt;/person&gt;<br />
&nbsp;&nbsp;&nbsp;    &lt;person&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        &lt;name&gt;Jacob Camden&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        &lt;date&gt;#now()#&lt;/date&gt;<br />
&nbsp;&nbsp;&nbsp;    &lt;/person&gt;<br />
&lt;/people&gt;&lt;/cfoutput&gt;  </code></p>
<p>This simple XML file will return two people. The date value for each will be set to the current time. If used as is, the date would look like this: </p>
<p>{ts &#8217;2006-12-27 09:20:35&#8242;} </p>
<p>Pretty ugly, eh? So lets make it nicer. First lets add an &#8220;Observer&#8221; to the Spry dataset. This tells Spry to run a function on any type of change in the data set: </p>
<p><code>data.addObserver(processData);   </code></p>
<p>Now lets look at the processData function: </p>
<p><code>function processData(notificationType, notifier, thisdata) {<br />
&nbsp;&nbsp;&nbsp;    if (notificationType != "onPostLoad") return;   </p>
<p>&nbsp;&nbsp;&nbsp;    var rows = data.getData();<br />
&nbsp;&nbsp;&nbsp;    var numRows = rows.length;   </p>
<p>&nbsp;&nbsp;&nbsp;    for (var i = 0; i < numRows; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        var row = rows[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        row.datepretty = myDateFormat(cfToDate(row.date));<br />
&nbsp;&nbsp;&nbsp;    }<br />
}   </code></p>
<p>First note that we check the event type with the notificationType variable. (I based my function on the <a href="http://labs.adobe.com/technologies/spry/samples/data_region/CustomColumnsSample.html" class="bluelink">Adobe sample</a>, so thanks go to them.) We get the data and the number of rows and then simply loop over the rows of data. </p>
<p>To add my custom column, I simply set a new value in the row. If I did: </p>
<p><code>row.goober = "foo";   </code></p>
<p>Then the dataset would have a new column named goober with a static value of foo. </p>
<p>In my sample code, I wrote two custom functions, cfToDate, and myDateFormat. These are ugly functions that parse the date sent from ColdFusion and handle the formatting of the date. This could probably be done better, but you get the idea. I've included them in the zip (see Download link below). </p>
<p>Anyway - this is a very handy feature! Obviously you want to correct the XML server side if at all possible, but if you can't, this is a great way to handle it. </p>
<p><a href="http://ray.camdenfamily.com/index.cfm/2006/12/27/Custom-columns-in-Spry#comments" class="bluelink">Comments</a></p>
<p>Tag:     </p>
<p><a   href="javascript:location.href='http://reddit.com/submit?url='+encodeURIComponent(location.href)+'&#038;title='+encodeURIComponent(document.title)"><img    src="http://images.ientrymail.com/webpronews/reddit.png" border=0>Reddit</a> | <a   href="javascript:location.href='http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(document.location.href)+'&#038;t='+encodeURIComponent(document.title)+ '     '"><img src="http://images.ientrymail.com/webpronews/furl-pic.png" border=0> Furl</a>    </p>
<p>Bookmark WebProNews: <a href="http://www.webpronews.com"><img src="http://images.ientrymail.com/webpronews/wpn-readit.jpg" border=0></a></p>
<p>Raymond Camden, ray@camdenfamily.com<br />
<a href="http://ray.camdenfamily.com">http://ray.camdenfamily.com</a></p>
<p>Raymond Camden is Vice President of Technology for roundpeg, Inc. A long<br />
time ColdFusion user, Raymond has worked on numerous ColdFusion books<br />
and is the creator of many of the most popular ColdFusion community web<br />
sites. He is an Adobe Community Expert, user group manager, and the<br />
proud father of three little bundles of joy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/spry-custom-columns-2006-12/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Oddness (and Evenness) of Spry 1.4</title>
		<link>http://www.webpronews.com/the-oddness-and-evenness-of-spry-2006-12</link>
		<comments>http://www.webpronews.com/the-oddness-and-evenness-of-spry-2006-12#comments</comments>
		<pubDate>Thu, 21 Dec 2006 17:31:21 +0000</pubDate>
		<dc:creator>Raymond Camden</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[Reddit]]></category>
		<category><![CDATA[Spry]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=33913</guid>
		<description><![CDATA[Ok, I'm not sure if "evenness" is really a word, but if Steve Colbert can make stuff up - so can I. Before Spry 1.4, Spry supported a simple way to apply different CSS styles to datasets rows to support even/odd colors.
]]></description>
			<content:encoded><![CDATA[<p>Ok, I&#8217;m not sure if &#8220;evenness&#8221; is really a word, but if Steve Colbert can make stuff up &#8211; so can I. Before Spry 1.4, Spry supported a simple way to apply different CSS styles to datasets rows to support even/odd colors.</p>
<p>It was done using the built in variable ds_EvenOddRow. On execution, this would be replaced with even or odd. So in this example:</p>
<p><code>&lt;tr spry:repeat="dsEmployees" class="{ds_EvenOddRow}"&gt;</p>
<p>&lt;tr spry:repeat="dsEmployees" class="{ds_EvenOddRow}"&gt;</code></p>
<p>You would end up with this when the dataset was generated:</p>
<p><code>&lt;tr class="even"7&gt;<br />
 ...<br />
&lt;tr class="odd"&gt; </p>
<p>&lt;tr class="even"&gt; ... &lt;tr class="odd"&gt;</code></p>
<p>If you wanted different names, you could prepend or append a value to the class like so:</p>
<p><code>&lt;tr spry:repeat="dsEmployees" class="myds_{ds_EvenOddRow}"&gt;</p>
<p>&lt;tr spry:repeat="dsEmployees" class="myds_{ds_EvenOddRow}"&gt;</code></p>
<p>While this worked, it wasn&#8217;t the cleanest method. Spry 1.4 introduces a new spry:even and spry:odd tag. This allows you to specify the class to use in each particular case. Consider this example:</p>
<p><code>&lt;tr spry:repeat="dsEmployees" spry:even="even" spry:odd="odd"&gt;</p>
<p>&lt;tr spry:repeat="dsEmployees" spry:even="even" spry:odd="odd"&gt;</code></p>
<p>This ends up being the exact same as the first example, but is a bit more clear.</p>
<p>One more quick example. If you are repeating over multiple datasets, you can tell spry:even and spry:odd what dataset to check for &#8220;oddness&#8221;. Adobe provides an example of that.</p>
<p>So to see live examples of all of these, visit:</p>
<p><a href="http://labs.adobe.com/technologies/spry/samples/data_region/EvenOddRowSample.html" class="bluelink">http://labs.adobe.com/technologies/spry/samples/data_region/EvenOddRowSample.html </a></p>
<p><a href="http://ray.camdenfamily.com/index.cfm/2006/12/19/The-new-oddness-and-evenness-of-Spry-14#comments" class="bluelink">Comments</a></p>
<p><a href="javascript:location.href='http://reddit.com/submit?url='+encodeURIComp onent(location.href)+'&#038;title='+encodeURIComponent(document.title)"><img  src=http://images.ientrymail.com/webpronews/reddit.png border=0>Reddit</a> | <a href="javascript:location.href='http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(document.location.href)+'&#038;t='+encodeURIComponent(document.title)+ ' '"><img src=http://images.ientrymail.com/webpronews/furl-pic.png border=0> Furl</a></p>
<p>Bookmark WebProNews: <a href=http://www.webpronews.com><img src=http://images.ientrymail.com/webpronews/wpn-readit.jpg border=0></a></p>
<p>Raymond Camden, ray@camdenfamily.com<br />
<a href="http://ray.camdenfamily.com">http://ray.camdenfamily.com</a></p>
<p>Raymond Camden is Vice President of Technology for roundpeg, Inc. A long<br />
time ColdFusion user, Raymond has worked on numerous ColdFusion books<br />
and is the creator of many of the most popular ColdFusion community web<br />
sites. He is an Adobe Community Expert, user group manager, and the<br />
proud father of three little bundles of joy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/the-oddness-and-evenness-of-spry-2006-12/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spry 1.4 Released!</title>
		<link>http://www.webpronews.com/spry-released-2006-12</link>
		<comments>http://www.webpronews.com/spry-released-2006-12#comments</comments>
		<pubDate>Mon, 18 Dec 2006 17:05:20 +0000</pubDate>
		<dc:creator>Raymond Camden</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Spry]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=33788</guid>
		<description><![CDATA[The site still says 1.3, but you can now download <a href="http://www.macromedia.com/go/labs_spry_download" class="bluelink">Spry 1.4</a>.
]]></description>
			<content:encoded><![CDATA[<p>The site still says 1.3, but you can now download <a href="http://www.macromedia.com/go/labs_spry_download" class="bluelink">Spry 1.4</a>.</p>
<p>I&#8217;ll have some examples later on. </p>
<p>Some folks are getting the wrong zip. If you do, just give it an hour. </p>
<p>Straight from the changelist here are the updates: </p>
<p>Changes for Spry PreRelease 1.4 &#8211; 2006/12/14</p>
<p><b>Data </b></p>
<li>Added function Spry.Utils.serializeObject() for serializing a JS Object into JSON format. </li>
<li>Added Spry.XML.nodeToObject() and Spry.XML.documentToObject() utility methods which allow developers to access XML data as JS properties on an object in a manner which is similar to E4X. </li>
<li>Added Spry.Utils.updateContent() for dynamically loading an HTML fragment into an element. </li>
<li>Added Spry.Utils.setInnerHTML() for setting the innerHTML of an element and executing any scripts within the content string. This method is now used by Spry regions when regenerating their content. </li>
<li>Added support for mapping a region state name to another state name. This can be useful for overriding the built-in states, like &#8220;ready&#8221;, &#8220;loading&#8221;, and &#8220;error&#8221;, so that they use markup from a custom state when they fire. </li>
<li>Added support for more attributes:
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; spry:even &#8211; Conditionally adds the user specified CSS class name to an element based on the current row number used at the time that element was re-generated. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; spry:odd &#8211; Conditionally adds the user specified CSS class name to an element based on the current row number used at the time that element was re-generated. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; spry:setrow &#8211; Attaches a non-destructive onclick handler that sets the current row by row ID. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; spry:setrownumber &#8211; Attaches a non-destructive onclick handler that sets the current row by row number. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; spry:sort &#8211; Attaches a non-destructive onclick handler that sorts a specific data set based on columns specified by the user. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; spry:readystate &#8211; Maps the &#8220;ready&#8221; state name to the name specified in its value. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; spry:errorstate &#8211; Maps the &#8220;error&#8221; state name to the name specified in its value. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; spry:loadingstate &#8211; Maps the &#8220;loading&#8221; state name to the name specified in its value. </li>
<li>Added code to report and error when nested regions and detail regions are detected. </li>
<li>Added new methods to the DataSet API:
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; getRowCount() </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; getRowByID() </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; getRowByRowNumber() </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; findRowsWithColumnValues() </li>
<p><b>Effects </b></p>
<li>Minor updates of documentation (effects_api and effects_coding, especially of the allowed elements to which the effects can be applied to). </li>
<li>Fixed bugs:<br />
&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; GrowShrink effect: if border is set, width&#038;height style doesn&#8217;t get reset to the original value after you toggled the target element </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; GrowShrink effect: text size inside the target element is alternated after the effect has been finished </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Slide and Blind effect: Scrollbar disappears if overflow:scroll is set and you toggle the element </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; GrowShrink effect: nested image elements doesn&#8217;t grow if you grow the target element </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Slide effect: Text inside sliding element doesn&#8217;t appear once you toggle the effect (IE 7 only) </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Shake effect: doesn&#8217;t work perperly in Opera 9.0 </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; AppearFade effect: not working for content of a &lt;div&gt; inside a &lt;td&gt; (IE only)</li>
<li>new feature:<br />
&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; GrowShrink effect: added options &#8216;referHeight&#8217; and &#8216;growCenter&#8217;</li>
<li>IE 7 related fixes also take effect on Windows Vista (not only on XP) </li>
<li>new feature:
<p>Slide effect: added option &#8216;horizontal&#8217; to allow horizontal sliding </li>
<li>Slightly updated documentation to reflect new slide option </li>
<li>Simplified cluster construction: cluster now is an effect, too, which accepts setup and finish callbacks as option arguments of its constructor </li>
<li>Base effects (like Move, Size, etc.) can be called without from argument. Instead of passing element, fromPos, toPos, options as arguments, the effects can be called with element, toPos, options. The fromPos is calculated on the fly based on the current position. </li>
<li>AppearFade, Blind, GrowShrink, Slide and Squish effects now can be triggered for initially invisible elements (&#8216;display:none&#8217; or &#8216;visibility:hidden&#8217;) </li>
<p><b>Widgets </b></p>
<li>Added Menu Bar widget </li>
<li>Added Tabbed Panels widget </li>
<li>Added Collapsible Panel widget </li>
<li>Added Form Validation Widgets
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Check Box </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Text Area </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Text Field </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Select </li>
<li>Accordion:
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Added support for variable height panels. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Added some new constructor options: </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;  &#8211; useFixedHeightPanels &#8211; This value is true by default. If false allows for variable height panels. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;  &#8211; fixedPanelHeight &#8211; Number of pixels to use as the height of each panel when animating. By default this is the same as the first open panel. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;  &#8211; duration &#8211; Number of milliseconds it takes to open/close a panel. Default is 500 msecs. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Fixed bug that prevented panels from animating properly when the accordion started out with a display:none style. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Removed addNewPanel(), getNewPanelSnippet(), getNewAccordionSnippet(), and getNewAccordionConstructorSnippet() methods. They don&#8217;t work cross-browser, and should&#8217;ve never seen the light of day. </li>
<p><b>Docs </b></p>
<li>Added overview for Tabbed Panels widget. </li>
<li>Added overview for Collapsible Panel widget. </li>
<li>Added overview docs for each Form widget</li>
<p><b>Demos </b></p>
<li>Gallery
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Switch from using an interval timer to manually firing off the slide show timer after each image loads. This will allow images loading over slow connections to completely load. </li>
<li>Products
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; index.html to use spry:sort and spry:setrow. </p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Use a spry:choose attribute to show/preserve the currently selected product on initial load and after a sort. </li>
<li>RSS Reader
<p>&nbsp; &nbsp; &nbsp; &nbsp;  &#8211; Modified index.{html,cfm,php} to use spry:setrow. </li>
<li>Added Form Validation demo. </li>
<p><b>Samples </b></p>
<li>Added sample for Tabbed Panels widget. </li>
<li>Added sample for Collapsible Panel widget. </li>
<li>Added samples for 4 Form widgets. </li>
<li>Moved data set and region examples to the samples/data_region folder. </li>
<li>Changed Effects sample files to use standard samples.css file. </li>
<li>Added a samples/utils folder with samples of Spry utility functions. </li>
<li>Released a query-to-XML sample page that shows how to convert dynamic data into XML. </li>
<li>Added to EvenOddRowSample.html to include spry:even and spry:odd. </li>
<li>Added SprySetRowSample.html. </li>
<li>Modified the AccordionSample:
<p>Added sample for changing the duration of animations. </p>
<p>Modified variable height accordion sample to use animation.<br />
Added a style for spans used as content panels so that they animate properly. </li>
<li>Added SetCurrentRowByValueSample.html to show how to select a row based on some column values. </li>
<li>Added StateMappingSample.html to show how to map the built-in region states to your own custom states. </li>
<p><a href="http://ray.camdenfamily.com/index.cfm/2006/12/14/Spry-14-Released#comments" class="bluelink">Comments</a></p>
<p>Add to <a href="http://del.icio.us/post"  onclick="window.open('http://del.icio.us/post?v=4&#038;partner=wpn&#038;noui&#038;jump=close&#038;url='+encodeURIComponent(location.href)+'&#038;title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=700,height=400'); return false;"   CLASS="printMailTop"><img  src=http://images.ientrymail.com/webpronews/delicious-pic.png border=0> Del.icio.us</a> | <a href="javascript:void window.open('http://digg.com/submit?phase=2&#038;url='+encodeURIComponent(window. location.href)+'&#038;ei=UTF-8','popup','width=520px,height=420px,status=0,location=0,resizable=1,scrollbars=1,left=100,top=50',0)"><img src=http://images.ientrymail.com/webpronews/digg-pic.png border=0> Digg</a> | <a href="javascript:location.href='http://reddit.com/submit?url='+encodeURIComp onent(location.href)+'&#038;title='+encodeURIComponent(document.title)"><img  src=http://images.ientrymail.com/webpronews/reddit.png border=0>Reddit</a> | <a href="javascript:location.href='http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(document.location.href)+'&#038;t='+encodeURIComponent(document.title)+ ' '"><img src=http://images.ientrymail.com/webpronews/furl-pic.png border=0> Furl</a></p>
<p>Bookmark WebProNews: <a href=http://www.webpronews.com><img src=http://images.ientrymail.com/webpronews/wpn-readit.jpg border=0></a></p>
<p>Raymond Camden, ray@camdenfamily.com<br />
<a href="http://ray.camdenfamily.com">http://ray.camdenfamily.com</a></p>
<p>Raymond Camden is Vice President of Technology for roundpeg, Inc. A long<br />
time ColdFusion user, Raymond has worked on numerous ColdFusion books<br />
and is the creator of many of the most popular ColdFusion community web<br />
sites. He is an Adobe Community Expert, user group manager, and the<br />
proud father of three little bundles of joy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/spry-released-2006-12/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dreamweaver 8 Advises You On CSS</title>
		<link>http://www.webpronews.com/dreamweaver-advises-you-on-css-2006-12</link>
		<comments>http://www.webpronews.com/dreamweaver-advises-you-on-css-2006-12#comments</comments>
		<pubDate>Fri, 15 Dec 2006 20:13:19 +0000</pubDate>
		<dc:creator>WebProNews Staff</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dreamweaver 8]]></category>
		<category><![CDATA[Spry]]></category>
		<category><![CDATA[Universal]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=33763</guid>
		<description><![CDATA[Developers at Adobe pursued improvements with the number one web development tool by focusing on an issue that has proven a real time waster for developers.
]]></description>
			<content:encoded><![CDATA[<p>Developers at Adobe pursued improvements with the number one web development tool by focusing on an issue that has proven a real time waster for developers.</p>
<table width="128" border="0" align="right">
<tr>
<td width="122" height="62"><a href="http://www.webproworld.com"><img src="http://images.ientrymail.com/CommentImage-4.gif" width="130" height="60" border="0"></a></td>
</tr>
</table>
<p>By collaborating with the development community, Adobe believes they have knocked out a problem facing web developers everywhere. <a href=http://www.adobe.com/products/dreamweaver/ class=bluelink>Dreamweaver</a> product manager Kenneth Berger talked with WebProNews ahead of the release of the new version about their approach to making CSS an obedient servant to the webmaster.</p>
<p>First the essentials. Dreamweaver 8 is out now, in upgrade and full versions. The product supports multiple technologies a webmaster may have in place to operate a site. In 2007, Adobe will add Dreamweaver 8 support for Windows Vista, and deliver a Mac <a href=http://www.adobe.com/products/pdfs/intelmacsupport.pdf class=bluelink>Universal Binary</a>.</p>
<p>Berger noted what web developers have known for quite some time. Cross-browser development can be more problematic when it comes to CSS. This poses some time wasting showstoppers as developers try to shift from working in table-based layouts to ones based on CSS properties.</p>
<p>During the MAX 2006 conference in October, Adobe provided a sneak peek at <a href=http://www.adobe.com/go/cssadvisor class=bluelink>CSS Advisor</a>, which will be a centralized destination for browser compatibility issues. Finding solutions for them has been difficult, but an approach that will be boosted by Dreamweaver&#8217;s user community should change this.</p>
<p>Berger demonstrated how CSS Advisor will operate. When a cross-browser issue crops up, the developer will see Dreamweaver auto-detect it, and show a link from the problem to the CSS Advisor site. </p>
<p>CSS Advisor will be community-driven, and Berger described it as having features similar to popular social media sites. User contributions will fill in the repository of CSS-related issues and fixes. That content can be tagged for more efficient discovery.</p>
<p>As developers rank the solutions presented for a given issue, CSS Advisor will display the highest-ranked one prominently on the page concerning the problem. Over time CSS Advisor should become more comprehensive, which should lead to significant time savings while troubleshooting CSS.</p>
<p>Berger also highlighted another technology from Adobe, the <a href=http://www.adobe.com/devnet/logged_in/pgubbay_spry.html class=bluelink>Spry Framework for Ajax 1.5</a>. Along with Dreamweaver 8, Adobe Spry addresses what the company sees as a need in the marketplace for an Ajax framework to be oriented toward the non-technical designer and copywriter-types of people.</p>
<p>Visual effects can be dropped into a page from Spry. The effects are controlled by CSS, while Spry defines the behavior of the effect. Berger said Spry provides a cleaner, more understandable code than other options would.</p>
<p>Spry also contains a complete set of validation widgets. These serve to provide a more secure web application when used. Since many problems in web applications in the past have proven exploitable through the injection of unvalidated code, use of the validation widgets should help limit the scope of those attacks.</p>
<p>Since the Spry Framework is client-side focused, there will not be a need to employ a server technology to support it. Spry handles the data, widgets, and effects included with a web application.</p>
<p>Dreamweaver 8 and Adobe Spry should find their way into plenty of web development toolboxes over the next year. Since Dreamweaver is so heavily used by developers, we expect to see much more Ajax adoption reaching the Web as those developers try out Spry too.</p>
<p>&#8212;<br />
Tag: </p>
<p>Add to <a href="http://del.icio.us/post" onclick="window.open('http://del.icio.us/post?v=4&#038;partner=wpn&#038;noui&#038;jump=close&#038;url='+encodeURIComponent(location.href)+'&#038;title='+encodeURIComponent(document.title),'delicious','toolbar=no,width=700,height=400'); return false;" CLASS="printMailTop"><img src=http://images.ientrymail.com/webpronews/delicious-pic.png border=0> Del.icio.us</a> | <a href="javascript:void window.open('http://digg.com/submit?phase=2&#038;url='+encodeURIComponent(window.location.href)+'&#038;ei=UTF-8','popup','width=520px,height=420px,status=0,location=0,resizable=1,scrollbars=1,left=100,top=50',0)"><img src=http://images.ientrymail.com/webpronews/digg-pic.png border=0> Digg</a>  | <a href="javascript:location.href='http://reddit.com/submit?url='+encodeURIComponent(location.href)+'&#038;title='+encodeURIComponent(document.title)"><img src=http://images.ientrymail.com/webpronews/reddit.png border=0> Reddit</a> | <a href="javascript:location.href='http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(document.location.href)+'&#038;t='+encodeURIComponent(document.title)+' '"><img src=http://images.ientrymail.com/webpronews/furl-pic.png border=0> Furl</a></p>
<p>Bookmark WebProNews: <a href=http://www.webpronews.com><img src=http://images.ientrymail.com/webpronews/wpn-readit.jpg border=0></a> </p>
<p><script language=JavaScript src="http://aj.600z.com/aj/1095/0/vj?z=1&#038;dim=1088&#038;pos=15"></script></p>
<p>David Utter is a staff writer for WebProNews covering technology and business. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/dreamweaver-advises-you-on-css-2006-12/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion/Spry Kit Proof of Concept</title>
		<link>http://www.webpronews.com/coldfusionspry-kit-proof-of-concept-2006-11</link>
		<comments>http://www.webpronews.com/coldfusionspry-kit-proof-of-concept-2006-11#comments</comments>
		<pubDate>Mon, 06 Nov 2006 18:17:15 +0000</pubDate>
		<dc:creator>Raymond Camden</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[Concept]]></category>
		<category><![CDATA[Spry]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=32602</guid>
		<description><![CDATA[So - in case folks are curious - I now have both a dishwasher and the Internet back at my house. I feel like I've returned to the modern world. (Yes, I'm spoiled.)
]]></description>
			<content:encoded><![CDATA[<p>So &#8211; in case folks are curious &#8211; I now have both a dishwasher and the Internet back at my house. I feel like I&#8217;ve returned to the modern world. (Yes, I&#8217;m spoiled.)</p>
<p>Last night instead of my normal useless browsing, I worked up a quick set of tags that will make it easier for folks to use Spry widgets. So for example, to create tabs (with the not yet officially released Spry Tab code), you can do this: </p>
<p><code>&lt;cf_tab id="demo0"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;   &lt;cf_page title="Tab 1"&gt;<br />
&nbsp;&nbsp;&nbsp;   Orig Ganster<br />
&nbsp;&nbsp;&nbsp;   &lt;/cf_page&gt;</p>
<p>&nbsp;&nbsp;&nbsp;   &lt;cf_page title="Tab 2"&gt;<br />
&nbsp;&nbsp;&nbsp;   Tab 2<br />
&nbsp;&nbsp;&nbsp;   &lt;/cf_page&gt;</p>
<p>&lt;/cf_tab&gt;</code></p>
<p>Accordions are much more difficult: </p>
<p><code>&lt;cf_accordion id="demo1"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;   &lt;cf_page title="Page One"&gt;<br />
&nbsp;&nbsp;   This is the content for the first accordion panel.<br />
&nbsp;&nbsp;&nbsp;   &lt;/cf_page&gt;</p>
<p>&nbsp;&nbsp;   &lt;cf_page title="Page Two"&gt;<br />
&nbsp;&nbsp;   This is the second page with some dynamic content, &lt;cfoutput&gt;#timeFormat(now())#&lt;/cfoutput&gt;<br />
&nbsp;&nbsp;   &lt;/cf_page&gt;</p>
<p>&lt;/cf_accordion&gt;</code></p>
<p>The custom tags are smart enough to know when they have been run once in the request and will not re-include the JavaScript files more than once. Before I tell you where to download this &#8211; please note that this is <b>very</b> rough code. It doesn&#8217;t have documentation (bah, docs are for wimps!) or proper error handling, or even strong testing. It really is just something I was playing with. </p>
<p>This all stemmed from a long talk I had with Charlie Arehart about CF and Spry and he will be working on this project as well. The project is being hosted &#8211; where else &#8211; at RIAForge: <a href="http://cfspry.riaforge.org/" class="bluelink">http://cfspry.riaforge.org</a> </p>
<p>I also have some ideas for how to work with Spry datasets as well &#8211; but that is still way in the planning stages. </p>
<p>p.s. I said the code was a bit ugly &#8211; and it is &#8211; but check out how the custom tags are written, especially page.cfm. Notice how it checks for the parent and based on this can check to see if it properly wrapped. Custom tags are cool. Don&#8217;t let them CFC folks fool ya! </p>
<p><a href="http://ray.camdenfamily.com/index.cfm/2006/11/2/ColdFusionSpry-Kit-Proof-of-Concept#comments" class="bluelink">Comments</a></p>
<p>Tag: </p>
<p>Add to <a href="http://del.icio.us/post"    onclick="window.open('http://del.icio.us/post?v=4&#038;partner=wpn&#038;noui&#038;jump=close&#038;url='+encodeURIComponent(location.href)+'&#038;title='+encodeURIComponent(document.t  itle),'delicious','toolbar=no,width=700,height=400'); return false;"   CLASS="printMailTop"><img    src=http://images.ientrymail.com/webpronews/delicious-pic.png border=0> Del.icio.us</a> | <a href="javascript:void   window.open('http://digg.com/submit?phase=2&#038;url='+encodeURIComponent(window.   location.href)+'&#038;ei=UTF-8','popup','width=520px,height=420px,status=0,location=0,resizable=1,scrollbars=1,left=100,top=50',0)"><img   src=http://images.ientrymail.com/webpronews/digg-pic.png border=0> Digg</a> | <a href="javascript:location.href='http://reddit.com/submit?url='+encodeURIComp   onent(location.href)+'&#038;title='+encodeURIComponent(document.title)"><img  src=http://images.ientrymail.com/webpronews/reddit.png border=0>Reddit</a> | <a   href="javascript:location.href='http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(document.location.href)+'&#038;t='+encodeURIComponent(document.title)+ '   '"><img src=http://images.ientrymail.com/webpronews/furl-pic.png border=0> Furl</a></p>
<p>Bookmark WebProNews: <a href=http://www.webpronews.com><img src=http://images.ientrymail.com/webpronews/wpn-readit.jpg border=0></a></p>
<p>Raymond Camden, ray@camdenfamily.com<br />
<a href="http://ray.camdenfamily.com">http://ray.camdenfamily.com</a></p>
<p>Raymond Camden is Vice President of Technology for roundpeg, Inc. A long<br />
time ColdFusion user, Raymond has worked on numerous ColdFusion books<br />
and is the creator of many of the most popular ColdFusion community web<br />
sites. He is an Adobe Community Expert, user group manager, and the<br />
proud father of three little bundles of joy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/coldfusionspry-kit-proof-of-concept-2006-11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spry Built-in Variables for Datasets</title>
		<link>http://www.webpronews.com/spry-builtin-variables-for-datasets-2006-11</link>
		<comments>http://www.webpronews.com/spry-builtin-variables-for-datasets-2006-11#comments</comments>
		<pubDate>Wed, 01 Nov 2006 20:17:28 +0000</pubDate>
		<dc:creator>Raymond Camden</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[articles]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Spry]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=32506</guid>
		<description><![CDATA[This is mainly for my own reference - but as I always have trouble finding it - I thought I'd share.
]]></description>
			<content:encoded><![CDATA[<p>This is mainly for my own reference &#8211; but as I always have trouble finding it &#8211; I thought I&#8217;d share.</p>
<p>When working with Spry datasets, you have access to both the data in the set (obviously) as well as a set of built-in variables prefixed by ds_. The variables you can use:
<ul>
<li>ds_RowID &#8211; This is the id of a row in the data set. This id can be used to refer to a specific record in the data set. It does not change even when the data is sorted. </li>
<li>ds_RowNumber &#8211; This is the row number of the &#8220;current row&#8221; of the data set. Within a loop construct, this number reflects the position of the row currently being evaluated. </li>
<li>ds_RowNumberPlus1 &#8211; This is the same as ds_RowNumber except that the first row starts at index 1 instead of index 0. </li>
<li>ds_RowCount &#8211; This is the number of rows in the data set. If there is a non-destructive filter set on the data set, this is the total number of rows after the filter is applied. </li>
<li>ds_UnfilteredRowCount &#8211; This is the number of rows in the data set before any non-destructive filter is applied. </li>
<li>ds_CurrentRowID &#8211; This is the id of the &#8220;current row&#8221; of the data set. This value will not change, even when used within a looping construct construct. </li>
<li>ds_CurrentRowNumber &#8211; This is the row number of the &#8220;current row&#8221; of the data set. This value will not change, even when used within a looping construct. </li>
<li>ds_SortColumn &#8211; This is the name of the column last used for sorting. If the data in the data set has never been sorted, this will output nothing (an empty string). </li>
<li>ds_SortOrder &#8211; This is the current sort order of the data in the data set. This data reference will output the words &#8220;ascending&#8221;, &#8220;descending&#8221;, or nothing (an empty string). </li>
<li>ds_EvenOddRow &#8211; This looks at the current value of ds_RowNumber and returns the string &#8220;even&#8221; or &#8220;odd&#8221;. This is useful for rendering alternate row colors. </li>
</ul>
<p>The text above was ripped from: <a href="http://labs.adobe.com/technologies/spry/articles/data_set_overview/" class="bluelink">http://labs.adobe.com/technologies/spry/articles/data_set_overview/ </a></p>
<p>I&#8217;m thinking of creating a Spry cheat sheet to contain stuff like this and other tips that may be useful for development. If folks have some ideas for what to include, let me know by posting here. </p>
<p><a href="http://ray.camdenfamily.com/index.cfm/2006/11/1/Spry-builtin-variables-for-Datasets#comments" class="bluelink">Comments</a></p>
<p>Tag: </p>
<p>Add to <a href="http://del.icio.us/post"    onclick="window.open('http://del.icio.us/post?v=4&#038;partner=wpn&#038;noui&#038;jump=close&#038;url='+encodeURIComponent(location.href)+'&#038;title='+encodeURIComponent(document.t  itle),'delicious','toolbar=no,width=700,height=400'); return false;"   CLASS="printMailTop"><img    src=http://images.ientrymail.com/webpronews/delicious-pic.png border=0> Del.icio.us</a> | <a href="javascript:void   window.open('http://digg.com/submit?phase=2&#038;url='+encodeURIComponent(window.   location.href)+'&#038;ei=UTF-8','popup','width=520px,height=420px,status=0,location=0,resizable=1,scrollbars=1,left=100,top=50',0)"><img   src=http://images.ientrymail.com/webpronews/digg-pic.png border=0> Digg</a> | <a href="javascript:location.href='http://reddit.com/submit?url='+encodeURIComp   onent(location.href)+'&#038;title='+encodeURIComponent(document.title)"><img  src=http://images.ientrymail.com/webpronews/reddit.png border=0>Reddit</a> | <a   href="javascript:location.href='http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(document.location.href)+'&#038;t='+encodeURIComponent(document.title)+ '   '"><img src=http://images.ientrymail.com/webpronews/furl-pic.png border=0> Furl</a></p>
<p>Bookmark WebProNews: <a href=http://www.webpronews.com><img src=http://images.ientrymail.com/webpronews/wpn-readit.jpg border=0></a></p>
<p>Raymond Camden, ray@camdenfamily.com<br />
<a href="http://ray.camdenfamily.com">http://ray.camdenfamily.com</a></p>
<p>Raymond Camden is Vice President of Technology for roundpeg, Inc. A long<br />
time ColdFusion user, Raymond has worked on numerous ColdFusion books<br />
and is the creator of many of the most popular ColdFusion community web<br />
sites. He is an Adobe Community Expert, user group manager, and the<br />
proud father of three little bundles of joy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/spry-builtin-variables-for-datasets-2006-11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fun Little AJAX/Internet Explorer Issue</title>
		<link>http://www.webpronews.com/fun-little-ajaxinternet-explorer-issue-2006-10</link>
		<comments>http://www.webpronews.com/fun-little-ajaxinternet-explorer-issue-2006-10#comments</comments>
		<pubDate>Fri, 13 Oct 2006 18:06:15 +0000</pubDate>
		<dc:creator>Raymond Camden</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Spry]]></category>

		<guid isPermaLink="false">http://www.webpronews.com/?p=32065</guid>
		<description><![CDATA[A few days ago I mentioned a little issue I ran into with Spry.
]]></description>
			<content:encoded><![CDATA[<p>A few days ago I mentioned a little issue I ran into with Spry.</p>
<p>Today I was helping my friend diagnose some issues with his application and IE and I ran into a new little bug. </p>
<p>This isn&#8217;t a Spry issue &#8211; but just IE in general. </p>
<p>Imagine this situation: You have a drop down field being populated by Spry. Let&#8217;s call it Categories. Whenever you change the category, you use Spry to populate a second drop down of products. </p>
<p>Pretty simple related selects type feature, right? </p>
<p>Turns out in IE, something interesting happens. Whenever I would change the category, the products drop down would be correctly populated &#8211; but defaulted to the last item in the drop down. </p>
<p>In FireFox, the first item would be selected. </p>
<p>What&#8217;s worse is that in my friend&#8217;s demo, he had a detail region tied to the second drop down. It would correctly show the detail for the first item in the drop down, but visually you saw the last item selected. </p>
<p>Once again I went to my buddy Kin Blas of Adobe. Turns out this isn&#8217;t a bug really &#8211; but a &#8220;feature&#8221; of IE, where it simply uses the last option as the default if you don&#8217;t mark one as the selected item. </p>
<p>Luckily there is a cool little way to fix this in Spry using conditionals. Spry gives you a hook to various bits of information related to the current dataset. These are named ds_Something or another. The following example shows how we can use them. </p>
<p><code>&lt;div spry:region="categories"&gt;<br />
&lt;select spry:repeatchildren="categories" spry:choose="choose" name="category" onChange="categories.setCurrentRow(this.selectedIndex);"&gt;<br />
&lt;option spry:when="{ds_RowNumber} == {ds_CurrentRowNumber}" selected="selected"&gt;{category}&lt;/option&gt;<br />
&lt;option spry:default="default"&gt;{category}&lt;/option&gt;<br />
&lt;/select&gt;<br />
&lt;/div&gt;</code></p>
<p>Of particular note look at the when and default clause on the option tags. </p>
<p>This will apply logic before letting the item be printed when the dataset is applied. Note the use of ds_RowNumber and ds_CurrentRowNumber. </p>
<p>When the dataset is applied, these values will be dynamic and checked as Spry prints out the option tags. </p>
<p>Make sense? If not &#8211; let me know. </p>
<p><a href="http://ray.camdenfamily.com/index.cfm/2006/10/11/Fun-little-AJAXInternet-Explorer-issue-with-cool-Spry-fix#comments" class="bluelink">Comments</a></p>
<p>Tag: </p>
<p>Add to <a href="http://del.icio.us/post"onclick="window.open('http://del.icio.us/post?v=4&#038;partner=wpn&#038;noui&#038;jump=close&#038;url='+encodeURICo  mponent(location.href)+'&#038;title ='+encodeURIComponent(document.title),'delicious','toolbar=no,width=700,height=400'); return   false;" CLASS="printMailTop"><img src=http://images1.ientrymail.com/webpronews/delicious-pic.png border=0> Del.icio.us</a> |   <a  href="javascript:voidwindow.open('http://digg.com/submit?phase=2&#038;url='+encodeURIComponent(window.location.href)+'&#038;ei=UTF-8','  popup','width=520px,height=420px,status=0,location=0,resizable=1,scrollbars=1,left=100,top=50',0)"><img   src=http://images1.ientrymail.com/webpronews/digg-pic.png border=0> Digg</a>  | <a href="javascript:void   window.open('http://myweb2.search.yahoo.com/myresults/bookmarklet?t='+encodeURIComponent(document.title)+'&#038;u='+encodeURICompo  nent(window.location.href),'popup','width=520px,height=420px,status=0,location=0,resizable=1,scrollbars=1,left=100,top=50',0)   "><img src=http://images1.ientrymail.com/webpronews/yahoo-pic.png border=0> Yahoo! My Web</a> | <a href="javascript:location.href='http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(document.location.href)+'&#038;t='+encodeUR  IComponent(document.title)+' '"><img src=http://images1.ientrymail.com/webpronews/furl-pic.png border=0> Furl</a></p>
<p>Bookmark WebProNews: <a href=http://www.webpronews.com><img src=http://images.ientrymail.com/webpronews/wpn-readit.jpg border=0></a></p>
<p>Raymond Camden, ray@camdenfamily.com<br />
<a href="http://ray.camdenfamily.com">http://ray.camdenfamily.com</a></p>
<p>Raymond Camden is Vice President of Technology for roundpeg, Inc. A long<br />
time ColdFusion user, Raymond has worked on numerous ColdFusion books<br />
and is the creator of many of the most popular ColdFusion community web<br />
sites. He is an Adobe Community Expert, user group manager, and the<br />
proud father of three little bundles of joy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webpronews.com/fun-little-ajaxinternet-explorer-issue-2006-10/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 1/47 queries in 0.019 seconds using memcached
Object Caching 574/680 objects using memcached

Served from: webpronews.com @ 2012-02-12 17:50:26 -->
