<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>SOS</title>
	<atom:link href="http://shaneosullivan.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://shaneosullivan.wordpress.com</link>
	<description>Shane O'Sullivan's technical blog... really ties the room together</description>
	<pubDate>Tue, 13 May 2008 15:42:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>New Demos for Dojo &#38; Google search engine online</title>
		<link>http://shaneosullivan.wordpress.com/2008/05/13/new-demos-for-dojo-google-search-engine-online/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/05/13/new-demos-for-dojo-google-search-engine-online/#comments</comments>
		<pubDate>Tue, 13 May 2008 15:42:36 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Demo Engine]]></category>

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

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

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

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

		<category><![CDATA[dojo.data]]></category>

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=106</guid>
		<description><![CDATA[I&#8217;ve previously written about the data stores I committed to the Dojo Ajax Toolkit that enable you to search Google&#8217;s services for all sorts of things - books, news, blogs, images and everything else.
Now I&#8217;ve put some demos up on DojoCampus that show off a few of the stores.  Check them out at http://dojocampus.org/explorer/#Dojo_Data_GoogleSearchStore , [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve <a href="http://shaneosullivan.wordpress.com/2008/05/01/google-and-dojo-sitting-in-a-tree/" target="_blank">previously</a> <a href="http://shaneosullivan.wordpress.com/2008/05/06/google-and-dojo-feeding/" target="_blank">written</a> about the data stores I committed to the <a href="http://www.dojotoolkit.org" target="_blank">Dojo Ajax Toolkit</a> that enable you to search Google&#8217;s services for all sorts of things - books, news, blogs, images and everything else.</p>
<p>Now I&#8217;ve put some demos up on DojoCampus that show off a few of the stores.  Check them out at <a href="http://dojocampus.org/explorer/#Dojo_Data_GoogleSearchStore" target="_blank">http://dojocampus.org/explorer/#Dojo_Data_GoogleSearchStore</a> , especially the <a href="http://dojocampus.org/explorer/#Dojo_Data_GoogleSearchStore_GoogleImageSearchStore" target="_blank">Google Images</a> one - it&#8217;s shiny <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/106/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/106/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=106&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/05/13/new-demos-for-dojo-google-search-engine-online/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Keep up with the latest Dojo Demos</title>
		<link>http://shaneosullivan.wordpress.com/2008/05/08/keep-up-with-the-latest-dojo-demos/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/05/08/keep-up-with-the-latest-dojo-demos/#comments</comments>
		<pubDate>Thu, 08 May 2008 15:32:23 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=105</guid>
		<description><![CDATA[The Dojo Feature Explorer now has an Atom feed you can subscribe to to keep up with all the latest demos that have been added.  So, point your browser at http://dojocampus.org/explorer/featureexplorer/latestDemos.xml and subscribe!
For all the Web 2.0 addicts out there, I&#8217;ve also added access to the list via SCRIPT IO.  If you point your browser [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The <a href="http://www.dojocampus.org/explorer" target="_self">Dojo Feature Explorer</a> now has an <a href="http://dojocampus.org/explorer/featureexplorer/latestDemos.xml" target="_self">Atom feed</a> you can subscribe to to keep up with all the latest demos that have been added.  So, point your browser at <a href="http://dojocampus.org/explorer/featureexplorer/latestDemos.xml" target="_blank">http://dojocampus.org/explorer/featureexplorer/latestDemos.xml</a> and subscribe!</p>
<p>For all the Web 2.0 addicts out there, I&#8217;ve also added access to the list via SCRIPT IO.  If you point your browser to <a href="http://dojocampus.org/explorer/featureexplorer/latestDemos.php" target="_blank">http://dojocampus.org/explorer/featureexplorer/latestDemos.php</a>, you will receive a file containing a JavaScript array of the last ten demos added to the feature explorer.  By default, it will call the function <strong>dojocDemos, </strong>passing it the array.  You can specify the callback function you want using the <strong>callback </strong>parameter. e.g.</p>
<p>http://dojocampus.org/explorer/featureexplorer/latestDemos.php<span style="color:#ff0000;">?callback=myFunction</span></p>
<p>will call the <strong>myFunction</strong> JavaScript function.  You can load this file, as I mentioned, using SCRIPT IO.  This could be hard coded into your HTML page, e.g.:</p>
<p>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;http://dojocampus.org/explorer/featureexplorer/latestDemos/php?callback=myFunction&#8221;&gt;&lt;/script&gt;</p>
<p>or loaded using <strong><a href="http://dojocampus.org/explorer/#Dojo_IO_Script" target="_blank">dojo.io.script</a>.</strong></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/105/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/105/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=105&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/05/08/keep-up-with-the-latest-dojo-demos/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Google and Dojo, F.E.E.D.I.N.G</title>
		<link>http://shaneosullivan.wordpress.com/2008/05/06/google-and-dojo-feeding/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/05/06/google-and-dojo-feeding/#comments</comments>
		<pubDate>Tue, 06 May 2008 22:19:43 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

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

		<category><![CDATA[dojo.data]]></category>

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

		<category><![CDATA[dojox.data]]></category>

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=104</guid>
		<description><![CDATA[This is the second in series of posts on the work I&#8217;m doing to bring the Google Ajax APIs and Dojo Ajax Toolkit together.  The first post was Google And Dojo, Sitting in a Tree, which you can read for some background.
I have submitted a new data store to the DojoX project, dojox.data.GoogleFeedStore, which [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This is the second in series of posts on the work I&#8217;m doing to bring the <a href="http://code.google.com/apis/ajaxfeeds/documentation/" target="_blank">Google Ajax APIs</a> and <a href="http://www.dojotoolkit.org" target="_blank">Dojo Ajax Toolkit</a> together.  The first post was <a href="http://shaneosullivan.wordpress.com/2008/05/01/google-and-dojo-sitting-in-a-tree/" target="_blank">Google And Dojo, Sitting in a Tree</a>, which you can read for some background.</p>
<p>I have submitted a new <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/data-retrieval-dojo-data-0" target="_self">data store</a> to the DojoX project, <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/data/demos/demo_GoogleFeedStore.html" target="_blank">dojox.data.GoogleFeedStore</a>, which makes it possible to access any <a href="http://en.wikipedia.org/wiki/Rss" target="_blank">RSS </a>or <a href="http://en.wikipedia.org/wiki/Atom_%28standard%29" target="_blank">Atom </a>feed, anywhere, directly from your own web page.  Simply pass the URL of the feed to the GoogleFeedStore, and it will return it to you using the <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/what-dojo-data/dojo-data-design/read-api" target="_blank">dojo.data.Read API</a>.</p>
<p><strong>Example</strong></p>
<pre><code>var store = new dojox.data.GoogleFeedStore();
store.fetch({
  query:{url:"http://shaneosullivan.wordpress.com/feed/"},
  onComplete: function(items) {
    dojo.forEach(items, "alert('Got feed entry with title ' + this.getValue(item, 'title'))", store);
  },
  count: 10
});
</code></pre>
<p>This will retrieve the first 10 entries in my blogs feed, and alert the title of each.</p>
<p>The huge advantage of this is that you no longer need any server side redirects to access RSS and Atom feeds from your own website.  This Google service is the basis for Google Reader and iGoogle.</p>
<p>If you want to access an Atom feed from your own web server, you can also use the dojox.data.AtomReadStore that <a href="http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo/" target="_blank">I wrote earlier</a>.  However, this is only useful if you have direct access to the Atom XML document using Ajax, and due to browser security issues, you can only load these documents from the web server hosting the web page.  This new GoogleFeedStore removes that restriction, and has the added advantage that it also works with RSS.</p>
<p>Check out the <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/data/demos/demo_GoogleFeedStore.html" target="_blank">demo page</a> to get a feel for it (available in the May 6th nightlies), and there should be an example up on the <a href="http://www.dojocampus.org/explorer" target="_blank">Dojo Feature Explorer</a> quite soon too.</p>
<p>As before, a big thanks to Google for providing such a cool service.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/104/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/104/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=104&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/05/06/google-and-dojo-feeding/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Google and Dojo, Sitting in a tree&#8230;</title>
		<link>http://shaneosullivan.wordpress.com/2008/05/01/google-and-dojo-sitting-in-a-tree/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/05/01/google-and-dojo-sitting-in-a-tree/#comments</comments>
		<pubDate>Thu, 01 May 2008 17:15:55 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

		<category><![CDATA[dojo.data]]></category>

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

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

		<category><![CDATA[open source]]></category>

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

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=102</guid>
		<description><![CDATA[I&#8217;ve submitted a bunch of new data stores to the Dojo Ajax Toolkit that make it simple to search Google directly from your own site (ticket here).
Update: I&#8217;ve also submitted a store to read any Atom or RSS feed, anywhere, without any server redirects. See Google And Dojo, F.E.E.D.I.N.G
This is different from putting a search [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve submitted a bunch of new data stores to the <a href="http://www.dojotoolkit.org" target="_blank">Dojo Ajax Toolkit</a> that make it simple to search Google directly from your own site (ticket <a href="http://trac.dojotoolkit.org/ticket/6595" target="_blank">here</a>).</p>
<p><strong>Update: I&#8217;ve also submitted a store to read any Atom or RSS feed, anywhere, without any server redirects. See <a href="http://shaneosullivan.wordpress.com/2008/05/06/google-and-dojo-feeding/">Google And Dojo, F.E.E.D.I.N.G</a></strong></p>
<p>This is different from putting a search box on your site and redirecting to Google.  With the new dojox.data.GoogleSearchStore family of data stores, you can retrieve google search results in JSON format, and display them on your site directly.</p>
<p>Pause a second&#8230;. let it sink in&#8230;..</p>
<p>There are no cross domain issues, and no server side component is required.  It uses the <a href="http://www.dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/ajax-transports/alternate-transports" target="_blank">dojo.io.script</a> transport to access the <a href="http://ajaxian.com/by/topic/google/" target="_blank">Google Ajax API service</a>. Just stick the following on your page:</p>
<p><strong>&lt;div dojoType=&#8221;dojox.data.GoogleWebSearchStore&#8221; jsID=&#8221;googleStore&#8221;&gt;&lt;/div&gt;</strong></p>
<p>and you have Google&#8217;s millions of servers at your fingertips.</p>
<p>The following data stores are available:</p>
<ul>
<li><strong>GoogleWebSearchStore </strong>- does a standard web search.</li>
<li><strong>GoogleBlogSearchStore </strong>- searches blogs. A future enhancement I will be writing will be to write a data store that accesses Google&#8217;s extremely cool Ajax Feed API, which provides access to any ATOM feed, anywhere, in JSON. It&#8217;ll be possible to do a full web search of all blogs for certain topics, then using the feed store to pull down that complete feed .</li>
<li><strong>GoogleLocalSearchStore </strong>- searches the Google Local service to find places, businesses etc.</li>
<li><strong>GoogleVideoSearchStore </strong>- Does what it says on the tin, searches for videos.</li>
<li><strong>GoogleNewsSearchStore </strong>- Finds news stories&#8230;. noticing a pattern yet?</li>
<li><strong>GoogleBookSearchStore </strong>- Um, finds books..</li>
<li><strong>GoogleImageSearchStore </strong>- Finds images. This provides both a thumbnail and full sized version, similar to the FlickrRestStore already provided by Dojo.</li>
</ul>
<p>The potential applications are more or less infinite.  Demos included in the check-in show how to integrate this with the extremely cool dojox.dtl templating engine to display the results in a number of different ways, as well as how to feed the results into the Dojo Grid, Gallery and SlideShow.</p>
<p>This code is included in the nightly checkouts of Dojo, and not in v1.1.  To get it, either <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-4-meta-dojo/using-subversion" target="_blank">check it out from source control</a>, or get it from <a href="http://archive.dojotoolkit.org/nightly/" target="_blank">http://archive.dojotoolkit.org/nightly/</a>.</p>
<p>Have a look at the simplistic demo of it in action at <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/data/demos/demo_GoogleSearchStore.html" target="_blank">http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/data/demos/demo_GoogleSearchStore.html</a> (available from the May 1st nightlies).</p>
<p>A big thank you to Google for making this service available.  Now go play!</p>
<p>P.S. Stay tuned for the Yahoo variant, coming soon!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/102/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/102/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=102&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/05/01/google-and-dojo-sitting-in-a-tree/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Dojo Developers: Subscribe to this now!</title>
		<link>http://shaneosullivan.wordpress.com/2008/05/01/dojo-developers-subscribe-to-this-now/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/05/01/dojo-developers-subscribe-to-this-now/#comments</comments>
		<pubDate>Thu, 01 May 2008 12:45:06 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=103</guid>
		<description><![CDATA[DojoCampus.org has created a feed for their amazingly useful series of tutorials on all things Dojo, called Dojo Cookies, at http://dojocampus.org/content/category/dojo-cookies/feed/.  Bookmark it. Now. Seriously. Or, as this guy says, Do It  

       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>DojoCampus.org has created a feed for their amazingly useful series of tutorials on all things Dojo, called Dojo Cookies, at <a href="http://dojocampus.org/content/category/dojo-cookies/feed/" target="_blank">http://dojocampus.org/content/category/dojo-cookies/feed</a>/.  Bookmark it. Now. Seriously. Or, as this guy says, <a href="http://youtube.com/watch?v=lmUZGdi7Ty4" target="_blank">Do It</a> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><span style="text-align:center; display: block;"><a href="http://shaneosullivan.wordpress.com/2008/05/01/dojo-developers-subscribe-to-this-now/"><img src="http://img.youtube.com/vi/lmUZGdi7Ty4/2.jpg" alt="" /></a></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/103/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/103/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=103&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/05/01/dojo-developers-subscribe-to-this-now/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/lmUZGdi7Ty4/2.jpg" medium="image" />
	</item>
		<item>
		<title>Great Dojo Widget tutorial</title>
		<link>http://shaneosullivan.wordpress.com/2008/04/22/great-dojo-widget-tutorial/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/04/22/great-dojo-widget-tutorial/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 13:01:48 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

		<category><![CDATA[open source]]></category>

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

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=101</guid>
		<description><![CDATA[Pete Higgins has posted a great tutorial on how to write a Dojo widget, taking as an example his recent addition, FisheyeLite.  Check it out at http://dojocampus.org/content/?p=100
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Pete Higgins has posted a great tutorial on how to write a Dojo widget, taking as an example his recent addition, FisheyeLite.  Check it out at <a href="http://dojocampus.org/content/?p=100" target="_self">http://dojocampus.org/content/?p=100</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/101/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/101/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=101&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/04/22/great-dojo-widget-tutorial/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>DojoX Calendar widget committed</title>
		<link>http://shaneosullivan.wordpress.com/2008/04/11/dojox-calendar-widget-committed/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/04/11/dojox-calendar-widget-committed/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 10:05:47 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=100</guid>
		<description><![CDATA[Following on from my previous post about the cool new Calendar widget I wrote for the Dojo Ajax toolkit, the initial version has now been committed to the DojoX project.

Check out the calendar test page at http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/widget/tests/test_Calendar.html
Check out the dropdown date text box at http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/form/tests/test_DateTextBox.html
Some more work still has to go into the widgets, including [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Following on from my <a href="http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo/" target="_blank">previous post</a> about the cool new <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/widget/tests/test_Calendar.html" target="_blank">Calendar widget</a> I wrote for the <a href="http://www.dojotoolkit.org" target="_blank">Dojo Ajax toolkit</a>, the initial version has now been <a href="http://trac.dojotoolkit.org/ticket/6297" target="_blank">committed to the DojoX project</a>.</p>
<p><img src="http://shaneosullivan.files.wordpress.com/2008/03/calendarviews.jpg?w=592&h=196" alt="dojox.widget.Calendar" width="592" height="196" /></p>
<p>Check out the calendar test page at <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/widget/tests/test_Calendar.html" target="_blank">http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/widget/tests/test_Calendar.html</a></p>
<p>Check out the dropdown date text box at <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/form/tests/test_DateTextBox.html" target="_blank">http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/form/tests/test_DateTextBox.html</a></p>
<p>Some more work still has to go into the widgets, including allowing individual dates to be highlighted for specific event, and perhaps including a refactoring into a series of mixin classes, but it should be in great shape for 1.2!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/100/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/100/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=100&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/04/11/dojox-calendar-widget-committed/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2008/03/calendarviews.jpg" medium="image">
			<media:title type="html">dojox.widget.Calendar</media:title>
		</media:content>
	</item>
		<item>
		<title>DojoCampus - The best Dojo learning resource</title>
		<link>http://shaneosullivan.wordpress.com/2008/04/09/dojocampus-the-best-dojo-learning-resource/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/04/09/dojocampus-the-best-dojo-learning-resource/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 13:19:59 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=99</guid>
		<description><![CDATA[DojoCampus.org is an ever-growing learning resource for users of the Dojo Ajax toolkit, and also for anyone wanting to do cool (and mundane) things with JavaScript.  It is designed to complement, rather than replace, the existing Dojo documentation.  It features:

Tutorials - examples aimed at both beginners and advanced hackers
Videos - step by step [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.dojocampus.org" target="_blank">DojoCampus.org</a> is an ever-growing learning resource for users of the <a href="http://www.dojotoolkit.org" target="_blank">Dojo Ajax toolkit</a>, and also for anyone wanting to do cool (and mundane) things with JavaScript.  It is designed to complement, rather than replace, the<a href="http://dojotoolkit.org/docs" target="_blank"> existing Dojo documentation</a>.  It features:</p>
<ul>
<li><strong>Tutorials </strong>- examples aimed at both beginners and advanced hackers</li>
<li><strong>Videos</strong> - step by step videos showing off Dojo capabilities, and showing how to get the most out of the toolkit.</li>
<li><strong>Cookies</strong> - small nuggets of handy information, as discovered by Dojo hackers. These come both from the Dojo contributors, and can also be submitted by the general public through the website.</li>
<li><strong>Feature Explorer</strong> - a great demo engine, written by myself and Nikolai Onken, that shows off most of the capabilities of the Dojo toolkit, and shows how it is done. I wrote a previous post about this <a href="http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released/" target="_blank">here</a>.</li>
<li><strong>Community Polls</strong> - polls to allow the community to vote on what features they would prefer were covered next in tutorials, cookies and demos.</li>
<li><strong>Dojo News</strong> - updates on what&#8217;s happening in Dojo-Land.</li>
</ul>
<p>Many people have helped out on making DojoCampus what it is today, but biggest props have to go to Peter Higgins and Nikolai Onken, who have both done, and are doing, a great job.  However, it&#8217;s up to the community now to <a href="http://dojocampus.org/content/?page_id=82" target="_blank">participate and make it even better</a>.  You can:</p>
<ul>
<li>Submit new Dojo Cookies</li>
<li>Submit new tutorials</li>
<li>Send in ideas about something that would make a good tutorial.  A good example is to take two technologies that may not be used together in demos or unit tests, but would complement each other.</li>
<li>Once the development environment is stable for the Feature Explorer, you will be able to submit new demos.</li>
</ul>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/99/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/99/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=99&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/04/09/dojocampus-the-best-dojo-learning-resource/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Dojo Ajax Demo Engine released</title>
		<link>http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 13:47:34 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Demo Engine]]></category>

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

		<category><![CDATA[Image Gallery]]></category>

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

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

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

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

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

		<category><![CDATA[dojo.charting]]></category>

		<category><![CDATA[dojo.data]]></category>

		<category><![CDATA[dojo.event]]></category>

		<category><![CDATA[dojo.image]]></category>

		<category><![CDATA[dojo.query]]></category>

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

		<category><![CDATA[dojox.data]]></category>

		<category><![CDATA[dojox.image]]></category>

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=98</guid>
		<description><![CDATA[A great new demo engine has just been released for the Dojo Toolkit. Check it out at http://dojocampus.org/explorer/. It is based on the initial attempt at a demo engine I wrote a few months ago, but has since been updated with new demos, and made infinitely more sexy by css/theme master Nikolai Onken.

The features include:

Demos [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A great new <a href="http://www.dojocampus.org/explorer" target="_blank">demo engine</a> has just been released for the <a href="http://www.dojotoolkit.org" target="_blank">Dojo Toolkit</a>. Check it out at <a href="http://dojocampus.org/explorer/" target="_blank">http://dojocampus.org/explorer/</a>. It is based on the initial attempt at a demo engine I <a href="http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/" target="_blank">wrote a few months ago</a>, but has since been updated with new demos, and made infinitely more sexy by css/theme master Nikolai Onken.</p>
<p><a href="http://www.dojocampus.org/explorer" target="_blank" title="Dojo Demo Engine"><img src="http://farm4.static.flickr.com/3207/2384278455_9abfaf9ae7.jpg" alt="Dojo Demo Engine" align="middle" border="0" /></a></p>
<p>The features include:</p>
<ul>
<li><b>Demos for all three Dojo projects</b> - Dojo (the base toolkit), Dijit (widgets) and DojoX (all that is newest and coolest) .</li>
<li><b>Source views for all demos</b>.  Not only do we show what Dojo can do, we show you how to do it!  The source views also benefit from the very cool <a href="http://dojocampus.org/explorer/#Dojox_Highlight" target="_blank">dojox.highlight</a> project, which provides client side syntax highlighting.</li>
<li><b>Addressability </b>- you can link directly to a demo, as I did with the dojox.highlight link above.</li>
<li><b>Search feature</b> - a combo box that you can use to quickly find a demo on any subject.  For example, type &#8220;<i>image</i>&#8221; into the box, and you&#8217;ll be shown a list of all demos to do with displaying images, such as <a href="http://dojocampus.org/explorer/#Dojox_Image_Gallery_Default" target="_blank">dojox.image.Gallery</a>, <a href="http://dojocampus.org/explorer/#Dojox_Image_SlideShow_Basic" target="_blank">dojox.image.SlideShow</a> etc.</li>
<li><b>Cool animated menus</b> - totally aesthetic I know, but a very pretty addition by Peter Higgins.  The menus separate the three projects, providing easier, clearer navigation.</li>
<li><b>Link hierarchies</b> - each set of demos can have links attached to it, for example to extra tutorials or documentation.  If you click a parent of that demo, you are shown all links of all children of that section.  For example, click on the DojoX link on the top of the page, and you&#8217;ll be presented with a list of all links to all DojoX projects.</li>
<li><b>Browser Back Button management</b>. Using the <b>dojo.back</b> package, you can navigate back and forward through the application using the browser&#8217;s back and forward buttons.</li>
</ul>
<p>The demo engine is hosted on the extremely cool <a href="http://www.dojocampus.org" target="_blank">Dojo Campus</a> website, which is a new learning resource for all things Dojo. It contains videos, tutorials and much more.</p>
<p>This version of the demo engine has many many examples in it. However, it is only the beginning, and there is a lot of room to add more content.  The next step is to open the development process for community submissions of all the cool things people have done with Dojo. We will be making available the demo engine on Subversion, and writing development and submission processes to make it as easy as possible for people to contribute.</p>
<p>This is gonna be big!</p>
<p><b>Update: see <a href="http://ajaxian.com/archives/dojo-mini-and-the-feature-explorer" target="_blank">http://ajaxian.com/archives/dojo-mini-and-the-feature-explorer</a> for the Ajaxian post.</b><br />
<b>Share this post:</b><a href="http://www.digg.com/submit?url=http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released&amp;phase=2" target="_blank" title="Post 'Dojo Ajax Demo Engine released">digg it</a>|<a href="http://www.dotnetkicks.com/submit/?url=http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released&amp;title=Dojo+Ajax+Demo+Engine+released" target="_blank" title="Post 'Dojo Ajax Demo Engine released">kick it</a>|<a href="mailto:?body=Thought%20you%20might%20like%20this:%20http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released&amp;subject=Dojo+Ajax+Demo+Engine+released" target="_blank" title="Post 'Dojo Ajax Demo Engine released">Email it</a>|<a href="http://del.icio.us/post?url=http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released&amp;title=Dojo+Ajax+Demo+Engine+released" target="_blank" title="Post 'Dojo Ajax Demo Engine released">bookmark it</a>|<a href="http://reddit.com/submit?url=http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released&amp;title=Dojo+Ajax+Demo+Engine+released" target="_blank" title="Post 'Dojo Ajax Demo Engine released">reddit</a>|<a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released&amp;title=Dojo+Ajax+Demo+Engine+released&amp;top=1" target="_blank" title="Post 'Dojo Ajax Demo Engine released">liveIt</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/98/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/98/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=98&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3207/2384278455_9abfaf9ae7.jpg" medium="image">
			<media:title type="html">Dojo Demo Engine</media:title>
		</media:content>
	</item>
		<item>
		<title>Dojo 1.1 is cooked and ready to eat!</title>
		<link>http://shaneosullivan.wordpress.com/2008/03/28/dojo-11-is-cooked-and-ready-to-eat/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/03/28/dojo-11-is-cooked-and-ready-to-eat/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 12:05:44 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Alex Russell]]></category>

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

		<category><![CDATA[Date Picker]]></category>

		<category><![CDATA[Demo Engine]]></category>

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

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

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

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

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

		<category><![CDATA[dojo.data]]></category>

		<category><![CDATA[dojox.data]]></category>

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

		<category><![CDATA[open source]]></category>

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

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=96</guid>
		<description><![CDATA[The latest and greatest release of the Dojo Ajax Toolkit has just hit the presses, and she&#8217;s looking good. As Alex mentioned, the number of cool features in Dojo can be difficult to keep up with, so I&#8217;ll just list some of the things I&#8217;ve either written for Dojo, helped along, or just been damn [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The latest and greatest release of the <a href="http://www.dojotoolkit.org" target="_blank">Dojo Ajax Toolkit</a> has just hit the presses, and she&#8217;s looking good. As <a href="http://alex.dojotoolkit.org/?p=655" target="_blank">Alex mentioned</a>, the number of cool features in Dojo can be difficult to keep up with, so I&#8217;ll just list some of the things I&#8217;ve either written for Dojo, helped along, or just been damn impressed by in this release:</p>
<p><b>Dojo Datastores</b></p>
<p>The number of useful <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/data-retrieval-dojo-data-0" target="_blank">data stores</a> for Dojo just keeps growing and growing, under the watchful eye of Jared.   For release 1.1, I submitted a data store to read Atom XML documents, <i>dojox.data.AtomReadStore</i>.  See more about this at <a href="http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo/" target="_blank">http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo/</a>.</p>
<p><b>FisheyeLite</b></p>
<p>Peter Higgins submitted an amazingly simple, but oh-so-cool widget called <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/widget/tests/test_FisheyeLite.html" target="_blank">dojox.widget.FisheyeLite</a>.  Rather than act like a &#8216;true&#8217; Fisheye widget, which would generally only work on images (á la OS X), this widget can apply cool Fisheye-like behaviors to just about anything - text, divs, spans, you name it.  Check out the <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/widget/tests/test_FisheyeLite.html" target="_blank">test page</a> for some cool examples, or see my <a href="http://www.skynet.ie/~sos" target="_blank">personal website </a>for an example of how I used it to spruce up my site menu.</p>
<p><b>Django Template Languate - dojox.dtl </b></p>
<p>The Django Template Language is an amazingly powerful templating language, with which you can turn your JavaScript data into HTML.  While this was originally designed to be a server side templating solution, Neil Roberts has done a brilliant job of converting it over to work in the browser.  While I though I&#8217;d had an original idea when I pitched the idea to him that it&#8217;d be cool to integrate Dojo data stores directly into DTL, <a href="http://alex.dojotoolkit.org" target="_blank">Alex </a>already had the whole thing implemented and about to check it in.  Typical <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   I&#8217;ve written up a tutorial on how to integrate DTL with Dojo data stores, specifically the AtomReadStore I wrote, at <a href="http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores/" target="_blank">http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores/</a>.</p>
<p><b>Functional Programming</b></p>
<p>This enables you perform many operations on data using just a single function call.  Once of the cool things it provides is the ability to specify a function as a simple string, drastically reducing the complexity and size of your own code.  Eugene Lazutkin wrote a <a href="http://ajaxian.com/archives/functional-programming-with-javascript-and-dojo" target="_blank">great blog post</a> about this, which is well worth a read.  I wrote a <a href="http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips/" target="_blank">follow up post</a>, as a quick reference to some of the cool things you can do with this feature.  Some of this was available in 1.0, but I&#8217;ve just discovered it, so here you go!</p>
<p><b>Dojo Campus</b></p>
<p><a href="http://higginsforpresident.net/" target="_blank">Peter Higgins</a>, <a href="http://nikolaionken.com/" target="_blank">Nikolai Onken</a> and myself have been working on a new learning resource for Dojo developers, called <a href="http://www.dojocampus.org" target="_blank">Dojo Campus</a>.  It provides a lot of learning materials, including videos, tutorials for beginners and more advanced programmers, and much more.  We also have a still-under-wraps-but-soon-to-be-release demo engine that has loads of easy to use runtime examples of things to make and do with Dojo.  I blogged about a very early version of it at <a href="http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/" target="_blank">http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/</a>, but it&#8217;s come a long way since then.  Keep you eyes peeled for it&#8217;s release. Any day now&#8230;..</p>
<p><b>And finally&#8230;.</b></p>
<p>A very sexy Calendar widget I&#8217;ve written got submitted just a bit too late to make in into 1.1 (read: the day before release), but will be in the nightlies soon, and will make it into 1.2. See the blog post about it at <a href="http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo/" target="_blank">http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo/</a>.</p>
<p>This is nowhere near a comprehensive list of course, just the bits I&#8217;ve been fiddling with over the last few months:</p>
<ul>
<li> See <a href="http://www.sitepen.com/blog/2008/03/28/introducing-the-dojo-toolkit-11/" target="_blank">Dylan&#8217;s post</a> for some more info.</li>
<li>Get the release notes <a href="http://dojotoolkit.org/book/dojo-1-1-release-notes" target="_blank">here</a>.</li>
<li>See the Ajaxian post <a href="http://ajaxian.com/archives/dojo-11-released" target="_blank">here</a>.</li>
<li>See Alex Russell&#8217;s (Dojo project lead) post <a href="http://alex.dojotoolkit.org/?p=663" target="_blank">here</a>.</li>
</ul>
<p>So <a href="http://dojotoolkit.org/downloads" target="_blank">go forth and explore</a>, it&#8217;s good healthy nerd-fun! <b>Share this post:</b><br />
<a href="http://www.digg.com/submit?url=http://shaneosullivan.wordpress.com/2008/03/28/dojo-11-is-cooked-and-ready-to-eat&amp;phase=2" target="_blank" title="Post 'Dojo 11 is cooked and ready to eat!">digg it</a>|<a href="http://www.dotnetkicks.com/submit/?url=http://shaneosullivan.wordpress.com/2008/03/28/dojo-11-is-cooked-and-ready-to-eat&amp;title=Dojo+11+is+cooked+and+ready+to+eat" target="_blank" title="Post 'Dojo 11 is cooked and ready to eat!">kick it</a>|<a href="mailto:?body=Thought%20you%20might%20like%20this:%20http://shaneosullivan.wordpress.com/2008/03/28/dojo-11-is-cooked-and-ready-to-eat&amp;subject=Dojo+11+is+cooked+and+ready+to+eat" target="_blank" title="Post 'Dojo 11 is cooked and ready to eat!">Email it</a>|<a href="http://del.icio.us/post?url=http://shaneosullivan.wordpress.com/2008/03/28/dojo-11-is-cooked-and-ready-to-eat&amp;title=Dojo+11+is+cooked+and+ready+to+eat" target="_blank" title="Post 'Dojo 11 is cooked and ready to eat!">bookmark it</a>|<a href="http://reddit.com/submit?url=http://shaneosullivan.wordpress.com/2008/03/28/dojo-11-is-cooked-and-ready-to-eat&amp;title=Dojo+11+is+cooked+and+ready+to+eat" target="_blank" title="Post 'Dojo 11 is cooked and ready to eat!">reddit</a>|<a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=http://shaneosullivan.wordpress.com/2008/03/28/dojo-11-is-cooked-and-ready-to-eat&amp;title=Dojo+11+is+cooked+and+ready+to+eat&amp;top=1" target="_blank" title="Post 'Dojo 11 is cooked and ready to eat!">liveIt</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/96/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/96/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=96&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/03/28/dojo-11-is-cooked-and-ready-to-eat/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Sexy new Calendar widget for Dojo</title>
		<link>http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 21:52:05 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

		<category><![CDATA[Date Picker]]></category>

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

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

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

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

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=93</guid>
		<description><![CDATA[I&#8217;ve submitted a sexy new Calendar widget to the Dojo Toolkit, called dojox.widget.Calendar.  Check out a test page for it at http://www.skynet.ie/~sos/js/demo/dojo/dojox/widget/tests/test_Calendar.html. The ticket tracking it is at http://trac.dojotoolkit.org/ticket/6297.
The features of this calendar widget are:

Day view - the standard view, showing all the days in a month
Month view - lists the twelve months of [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve submitted a sexy new Calendar widget to the <a href="http://www.dojotoolkit.org" target="_blank">Dojo Toolkit</a>, called dojox.widget.Calendar.  Check out a test page for it at <a href="http://www.skynet.ie/~sos/js/demo/dojo/dojox/widget/tests/test_Calendar.html" target="_blank">http://www.skynet.ie/~sos/js/demo/dojo/dojox/widget/tests/test_Calendar.html</a>. The ticket tracking it is at <a href="http://trac.dojotoolkit.org/ticket/6297" target="_blank">http://trac.dojotoolkit.org/ticket/6297</a>.</p>
<p>The features of this calendar widget are:</p>
<ul>
<li><b>Day view</b> - the standard view, showing all the days in a month</li>
<li><b>Month view</b> - lists the twelve months of the year.</li>
<li><b>Year view</b> - lists all the years that can be chosen.</li>
<li>Cool animations between these views.</li>
<li>Cool animations when moving from month to month, and from year to year.</li>
<li>Cool animations when moving the mouse over the widget, courtesy of the <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/widget/tests/test_FisheyeLite.html" target="_blank">dojox.widget.FisheyeLite</a> widget. (tired of cool animations yet? Nah, me neither)</li>
</ul>
<p><b>The daily, monthly and yearly views of the Calendar</b><br />
<img src="http://shaneosullivan.files.wordpress.com/2008/03/calendarviews.jpg" alt="The day, month and year views of the calendar widget" /></p>
<p>I was inspired to write it after seeing the very cool Calendar widget in the <a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Calendar/Calendar.aspx" target="_blank">AjaxControl Toolkit</a>,  a .NET Ajax framework, which made me think &#8220;<i>I wonder how long this would take to write with Dojo?</i>&#8220;, taking into account the obvious: not a single line of code could be copied from the original.</p>
<p>The answer turned out to be about 3 hours or so, since Dojo already provided the majority of what I needed.</p>
<ul>
<li>All the Date-related heavy lifting is done with <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/tests/test_Calendar.html" target="_blank">dijit._Calendar</a>, the existing Dojo calendar widget.  This also handles the majority of the localisation issues.</li>
<li>Most of the animations are done using the <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojo/tests/_base/fx.html" target="_blank">dojo.animateProperty</a> function.</li>
<li>Generating the HTML of the widget is mostly taken care of by the standard Dijit templating system.</li>
</ul>
<p>What remained to do was changing the exiting dijit._Calendar HTML template to give a month and year view, and fiddling with CSS to get it looking right. A textbox popup widget was also submitted to integrate the Calendar with a text input field, called dojox.form.DateTextBox;</p>
<p>Hopefully this will make it&#8217;s way into the DojoX project fairly soon, and be available for general use.<br />
<b>Share this post:</b><a href="http://www.digg.com/submit?url=http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo&amp;phase=2" target="_blank" title="Post 'Sexy new Calendar widget for Dojo">digg it</a>|<a href="http://www.dotnetkicks.com/submit/?url=http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo&amp;title=Sexy+new+Calendar+widget+for+Dojo" target="_blank" title="Post 'Sexy new Calendar widget for Dojo">kick it</a>|<a href="mailto:?body=Thought%20you%20might%20like%20this:%20http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo&amp;subject=Sexy+new+Calendar+widget+for+Dojo" target="_blank" title="Post 'Sexy new Calendar widget for Dojo">Email it</a>|<a href="http://del.icio.us/post?url=http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo&amp;title=Sexy+new+Calendar+widget+for+Dojo" target="_blank" title="Post 'Sexy new Calendar widget for Dojo">bookmark it</a>|<a href="http://reddit.com/submit?url=http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo&amp;title=Sexy+new+Calendar+widget+for+Dojo" target="_blank" title="Post 'Sexy new Calendar widget for Dojo">reddit</a>|<a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo&amp;title=Sexy+new+Calendar+widget+for+Dojo&amp;top=1" target="_blank" title="Post 'Sexy new Calendar widget for Dojo">liveIt</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/93/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/93/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/93/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=93&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/03/24/sexy-new-calendar-widget-for-dojo/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2008/03/calendarviews.jpg" medium="image">
			<media:title type="html">The day, month and year views of the calendar widget</media:title>
		</media:content>
	</item>
		<item>
		<title>Writing a Django Template Widget With Dojo Data Stores</title>
		<link>http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 00:43:16 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

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

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

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

		<category><![CDATA[dojox.data]]></category>

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=91</guid>
		<description><![CDATA[One of the very cool recent additions to the Dojo toolkit is support for the Django Template engine. It is essentially a very advanced browser based templating engine, that enables you to use things like FOR loops, IF statements and much more directly in a HTML template. Or, as the author puts it:
The Django Template [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One of the very cool recent additions to the <a href="http://www.dojotoolkit.org/" target="_blank">Dojo</a> toolkit is support for the <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-5-dojox/dojox-dtl" target="_blank">Django Template engine</a>. It is essentially a very advanced browser based templating engine, that enables you to use things like <i>FOR</i> loops, <i>IF</i> statements and much more directly in a HTML template. Or, as the author puts it:</p>
<blockquote><p>The <a href="http://www.djangoproject.com/documentation/templates/">Django Template Language</a> is one part of <a href="http://djangoproject.com/">Django</a>, a &#8220;high-level Python Web framework that encourages rapid development and clean, pragmatic design.</p></blockquote>
<p>This blog post is an in depth tutorial on working with DTL, Atom XML and Dojo data stores. To see the final working version, have a look <a href="http://www.skynet.ie/%7Esos/blog.php" target="_blank">here</a>, or get the code from <a href="http://www.skynet.ie/%7Esos/misc/AtomDtlDemo.zip" target="_blank">here</a>. Extract the code at the same level as Dojo, and open the <i>demoAtomDTL.html</i> file. Note that you need either the nightly Dojo code, or v1.1 or later for this to work.</p>
<p><b>Simple Example</b></p>
<p>As a very simple example, you could write a single template, such as<br />
<code></code></p>
<pre>&lt;ul&gt;
    &lt;!--{% for item in items %}--&gt;
        &lt;li value="{{item.value}}"&gt;{{item.text}}&lt;/li&gt;
    &lt;!--{% endfor %}--&gt;
&lt;/ul&gt;</pre>
<p>Then, you populate the template with some JSON data, e.g.<br />
<code></code></p>
<pre>{
    items:[
        {value:1,text:"Choice 1"},
        {value:2,text:"Choice 2"},
        {value:3,text:"Choice 3"}
    ]
}</pre>
<p>and it generates the following HTML.<br />
<code></code></p>
<pre>&lt;ul&gt;
    &lt;li value="1"&gt;Choice 1&lt;/li&gt;
    &lt;li value="2"&gt;Choice 2&lt;/li&gt;
    &lt;li value="3"&gt;Choice 13&lt;/li&gt;
&lt;/ul&gt;</pre>
<p><b>Writing A Widget And Template To Work With Atom XML</b></p>
<p>The example above is simplistic, though still very useful of course. However it is possible to do much more interesting things with <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-5-dojox/dojox-dtl" target="_blank">DTL</a>. A recent enhancement to the code base means that a template can now be built using data from a <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/data-retrieval-dojo-data-0">dojo.data</a> repository, rather than a simple <a href="http://en.wikipedia.org/wiki/Json" target="_blank">JSON </a>object. This means that you can have a single template that can be used with data from many different data sources (see <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/dtl/demos/demo_Tree.html" target="_blank">here for an ItemFileReadStore</a> and <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/dtl/demos/demo_Data.html" target="_blank">here for a Flickr data store</a> example).</p>
<p>This post shows how to write a templated widget that uses a Dojo data store I have written for reading Atom XML data (which has been <a href="http://trac.dojotoolkit.org/ticket/5924" target="_blank">committed to the Dojox project</a>), and transforming it using DTL into a nice fancy HTML widget, complete with visual effects. See <a href="http://www.skynet.ie/%7Esos/blog.php" target="_blank">http://www.skynet.ie/~sos/blog.php</a> to see the final result. Do a &#8220;<i>View Source</i>&#8221; on that page to see how simple it is to include it on a page.</p>
<p><a href="http://www.skynet.ie/~sos/blog.php" target="_blank" title="A Django templated widget built from an Atom XML file"><img src="http://shaneosullivan.files.wordpress.com/2008/03/dtl_pic.jpg" alt="A Django templated widget built from an Atom XML file" /></a></p>
<p><b>Writing the Template</b></p>
<p>Firstly, the structure of the HTML to be produced must be decided. For this example, I&#8217;ll just create a series of DIV elements that contain a header for the title, and a body for the text. The body will also contain another DIV to list all the tags (or <i>categories</i> in Atom-speak). So, a single entry will end up looking like:<br />
<code></code></p>
<pre>&lt;div class="entry"&gt;
    &lt;div class="entryTitle"&gt;This is an entry title&lt;/div&gt;
    &lt;div class="entrySummary"&gt;
        This is some summary text
        &lt;div&gt;
            Tags: &lt;a href="http://shaneosullivan.wordpress.com/category/ajax"&gt;Ajax&lt;/a&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre>
<p>A template for this looks as follows:</p>
<p><code></code></p>
<pre>&lt;!--{% load dojox.dtl.contrib.html %}--&gt;
&lt;div id="{{rootId}}" &gt;
    &lt;!--{% for item in items %}--&gt;
        &lt;div class="entry"&gt;
            &lt;div class="title"&gt;&lt;!--{{item.title.text}}--&gt;&lt;/div&gt;
            &lt;div class="summary"&gt;
                &lt;!--{% if item.summary.type == "html" %}--&gt;
                    &lt;!--{% html item.summary.text %}--&gt;
                &lt;!--{% else %}--&gt;
                    &lt;!--{{ item.summary.text }}--&gt;
                &lt;!--{% endif %}--&gt;
            &lt;div&gt;
                &lt;!--{% if item.category %}--&gt;
                    Tags:
                    &lt;!--{% for cat in item.categorys %}--&gt;
                        &lt;a href="{{cat.scheme}}/category/{{cat.term}}"&gt; &lt;!--{{cat.term}}--&gt;  &lt;/a&gt;
                    &lt;!--{% endfor %}--&gt;
                &lt;!--{% endif %}--&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;!--{% endfor %}--&gt;</pre>
<p><b>Break it down!</b></p>
<p>Ok, so let&#8217;s have a look at this.</p>
<p><span id="more-91"></span><br />
<code>&lt;!--{% load dojox.dtl.contrib.html %}--&gt;</code></p>
<p>This tells the template system to load an optional module that can convert text into HTML DOM nodes. This function is used when the summary type is &#8220;html&#8221;, meaning that the text contained in the data is acually HTML tags. The module is used on the line<br />
<code>&lt;!--{% html item.summary.text %}--&gt;</code><br />
Here you can see a Django function , &#8220;<i>html</i>&#8221; being called - this takes the text in the <i>item.summary.text</i> data object and renders it to HTML, rather than creating a text node.</p>
<p><!--more--><br />
<code>&lt;div id="{{rootId}}" &gt;</code></p>
<p>Give the root node of our template an ID. The <i>rootId</i> parameter must be provided by the widget. Note that when you want to put a piece of data in a HTML attribute, you do not need to escape it with <b>&lt;!&#8211;{{</b>, just <b>{{</b>.</p>
<p><!--more--><br />
<code>&lt;!--{% for item in items %}--&gt;</code></p>
<p>This is a FOR loop that iterates over all the elements of a data structure called <i>items</i>. This parameter must be provided by the widgets, and should be an array. The <i>item</i> (singular) is a value that can be referenced inside the loop, and is not something that must be provided by the widget. Note that <b>{%</b> is used for calling functions, for loops etc, and <b>{{</b> is used to access data</p>
<p><!--more--><br />
<code>&lt;div class="title"&gt;&lt;!--{{item.title.text}}--&gt;&lt;/div&gt;</code></p>
<p>This creates a DIV, and places the value of <i>item.title.text</i> in it. The <i>item</i> parameter is the element of the <i>items</i> array that is currently accessed as part of the FOR loop. This item should have a parameter called <i>title</i>, which in turn should have a parameter called <i>text</i>. If it were a simple JSON object, it would look something like:</p>
<p><code>{ title: {text:"This is the title"}}</code></p>
<p>However, due to the wonder of the Dojo.data and dojox.DTL integration, it will also work if <i>item</i> is a data store item, that contains an attribute called <i>title</i>. In that case, the data will be retrieved using something like:</p>
<p><code>store.getValue(item, "title")</code></p>
<p>However, the template does not need to be concerned with this. Which is cool <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><!--more--><br />
<code></code></p>
<pre>&lt;!--{% if item.summary.type == "html" %}--&gt;
    &lt;!--{% html item.summary.text %}--&gt;
&lt;!--{% else %}--&gt;
    &lt;!--{{ item.summary.text }}--&gt;
&lt;!--{% endif %}--&gt;</pre>
<p>Here you see an <i>IF </i>statement being used. It checks to see if the summary has a <i>type</i> parameter equal to &#8220;html&#8221;. If so, it prints out the value as HTML, using the HTML function discussed above. Otherwise, it simply prints out the text verbatim.</p>
<p><!--more--><br />
<code>&lt;!--{% if item.category %}--&gt;</code></p>
<p>This checks if the item has a parameter called <i>category</i>. Note that is not checking it for any particular value, just for existence. <!--more--><br />
<code>&lt;!--{% for cat in item.categorys %}--&gt;</code><br />
As before, this is a <i>FOR</i> loop. It iterates over an array. However, note the plural <i>categorys</i>. The actual name of the attribute is <i>category</i>, but because a plural is used, when <i>item</i> is a accessed using a data store, the <i>getValues</i> function is called instead of <i>getValue</i>. This ensures that an array is available.</p>
<p><!--more--><code>&lt;a href="{{cat.scheme}}/category/{{cat.term}}"&gt;<br />
&lt;!&#8211;{{cat.term}}&#8211;&gt; &lt;/a&gt;</code><br />
This one is quite simple, just accessing the category. A category in Atom has a <i>scheme</i> and a <i>term</i>. The scheme can be thought of as a namespace, and the term is generally what you are interested in. Here you can see how to include multiple pieces of data in a single attribute. As this template was written to display a transformed Atom document, which comes from my blog, it is constructing a url that looks like <i>http://shaneosullivan.wordpress.com/category/dojo</i>.</p>
<p>And that&#8217;s it for the template!</p>
<p><b>Writing the Widget</b></p>
<p>The widget, called <i>demo.AtomDtl</i>, uses two mixin classes:</p>
<ul>
<li><i>dijit._Widget</i> - The standard base widget type.</li>
<li><i>dojox.dtl._HtmlTemplated</i> - The base for a DTL widget that contains a template.</li>
</ul>
<p>So, declare the widget like:</p>
<p><code></code></p>
<pre>dojo.declare("demo.AtomDtl", [dijit._Widget, dojox.dtl._HtmlTemplated],
{
    templateString: &#8216;{% load dojox.dtl.contrib.data %}{% bind_data items to store as items %}{% include templateFile %}&#8217;,
    templateFile: dojo.moduleUrl(&#8221;dojox.data.demos.widgets.templates&#8221;, &#8220;atomTemplate.html&#8221;),</pre>
<p>The <i>templateFile</i> parameter points to the file name of the template described earlier. The <i>templateString</i> parameter enables the widget to use dojo.data stores. First it loads the <i>dojox.dtl.contrib.data</i> module, which adds special handling for data stores to DTL. Secondly, it states that the <i>items</i> parameter should be accessed using the <i>store</i> parameter.</p>
<p>So far so simple! Now we just have to retrieve the data, and tell the widget to render.<br />
<code></code></p>
<pre>postCreate: function(){
    //Create the data store
    this.store = new dojox.data.AtomReadStore({url: this.href,unescapeHTML: true});
    var _this = this;
    //Set the rootId
    this.rootId = this.id+"_entries";
    //Tell the store to get all Atom entries
    this.store.fetch({
        query: {},
        onComplete: function(entries){
            _this.items = entries;
            _this.render();
        }
    });
}</pre>
<p>This <i>postCreate</i> function</p>
<ol>
<li>Creates a new data store, <i>dojox.data.AtomReadStore</i>, which can interpret ATOM XML documents. This is not yet part of Dojo, but I am attempting to get it committed, see the ticket tracking it <a href="http://trac.dojotoolkit.org/ticket/5924" target="_blank">here</a>.</li>
<li>Sets a root ID to be used for the root element of the template.</li>
<li>Calls the store&#8217;s <i>fetch</i> method. This retrieves the data, and passes an array of entries to the <i>onComplete</i> function.</li>
<li>Adds the entries to the widget as the <i>items</i> parameter.  This is what the template expects.</li>
<li>Calls the render method.</li>
</ol>
<p>That&#8217;s it for a simple widget! See the AtomDTL.js file in the <a href="http://www.skynet.ie/%7Esos/misc/AtomDtlDemo.zip" target="_blank">demo zip file</a> for the full version of this.</p>
<p>Extract that zip file alongside the latest version of Dojo. Open the file <i>demoAtomDtl.html</i> to see this widget in action. The widget code is in the AtomDtl.js file.</p>
<p>A more complex widget is available in AtomDtlAnim.js, which adds animations to the basic class. To see that in action, open the <i>demoAtomDtl_animations.html</i> file. Both widgets use the same template, and the same data source.</p>
<p>Enjoy!</p>
<p><b>Share this post:</b><a href="http://www.digg.com/submit?url=http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores&amp;phase=2" target="_blank">digg it</a>|<a href="http://www.dotnetkicks.com/submit/?url=http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores&amp;title=Writing+Django+Template+Widgets+With+Dojo+Data+Stores" target="_blank" title="Post 'Writing A Django Template Widget with Dojo Data Stores">kick it</a>|<a href="mailto:?body=Thought%20you%20might%20like%20this:%20http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores&amp;subject=Writing+Django+Template+Widgets+With+Dojo+Data+Stores" target="_blank" title="Post 'Writing A Django Template Widget with Dojo Data Stores">Email it</a>|<a href="http://del.icio.us/post?url=http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores&amp;title=Writing+Django+Template+Widgets+With+Dojo+Data+Stores" target="_blank" title="Post 'Writing A Django Template Widget with Dojo Data Stores">bookmark it</a>|<a href="http://reddit.com/submit?url=http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores&amp;title=Writing+Django+Template+Widgets+With+Dojo+Data+Stores" target="_blank" title="Post 'Writing A Django Template Widget with Dojo Data Stores">reddit</a>|<a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores&amp;title=Writing+Django+Template+Widgets+With+Dojo+Data+Stores&amp;top=1" target="_blank" title="Post 'Writing A Django Template Widget with Dojo Data Stores">liveIt</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/91/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/91/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=91&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/03/03/writing-a-django-template-widget-with-dojo-data-stores/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2008/03/dtl_pic.jpg" medium="image">
			<media:title type="html">A Django templated widget built from an Atom XML file</media:title>
		</media:content>
	</item>
		<item>
		<title>New Atom data store for Dojo</title>
		<link>http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 22:10:49 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Alex Russell]]></category>

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

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

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

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

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

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

		<category><![CDATA[dojo.data]]></category>

		<category><![CDATA[dojox.data]]></category>

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=90</guid>
		<description><![CDATA[I&#8217;ve just submitted a patch to the DojoX project for a dojo.data data store that can read Atom XML documents.  It&#8217;s relatively simple for the moment, but is capable of taking an XML document that conforms to the Atom spec, and returning the entries using the dojo.data.Read API.
Update: this has now been committed to [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve just submitted a <a href="http://trac.dojotoolkit.org/ticket/5924" target="_blank">patch</a> to the <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-5-dojox-extensions-dojo-0" target="_blank">DojoX</a> project for a <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/data-retrieval-dojo-data-0" target="_blank">dojo.data</a> data store that can read <a href="http://en.wikipedia.org/wiki/Atom_(standard)" target="_blank">Atom XML</a> documents.  It&#8217;s relatively simple for the moment, but is capable of taking an XML document that conforms to the Atom spec, and returning the entries using the <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/what-dojo-data/dojo-data-design/read-api" target="_blank">dojo.data.Read</a> API.</p>
<p><b>Update: this has now been <a href="http://trac.dojotoolkit.org/ticket/5924" target="_blank">committed to the DojoX project</a>.</b></p>
<p>This arose out a desire to rewrite the <a href="http://www.skynet.ie/~sos/blog.php" target="_blank">page on my personal website</a> that mirrors this blog.  At time of writing, that has a strong dependency on PHP to query my blog for the Atom feed, parse the feed, and output it using a server side HTML template.</p>
<p>This is of course be easily achievable on the browser also, except for the fetching of the XML document from the remote website which the server would still have to do. Of course, if the Atom URL is on the same server as the page, even this dependency could be removed, and all the work, from the fetching, parsing and templating, could be done on the browser.</p>
<p>However, implementing this as a <a href="http://www.dojotoolkit.org" target="_blank">Dojo</a> data store has many advantages, the primary one being that I get to play with integrating a Dojo data store with the very very cool Django templating language package in DojoX, <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-5-dojox/dojox-dtl" target="_blank">dojox.dtl</a>. <a href="http://alex.dojotoolkit.org/?page_id=525" target="_blank">Alex</a> recently checked in a patch to dojox.dtl that enables the use of dojo.data stores directly in templates, so I can&#8217;t wait to get this checked in (once any issues <a href="http://www.ibm.com/developerworks/blogs/page/webtwooh?tag=Jared_Jurkiewicz" target="_blank">Jared</a> has with it are satisfied) and get going on my site!<br />
<b>Share this post:</b><a href="http://www.digg.com/submit?url=http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo&amp;phase=2" target="_blank" title="Post 'New Atom data store for Dojo">digg it</a>|<a href="http://www.dotnetkicks.com/submit/?url=http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo&amp;title=New+Atom+data+store+for+Dojo" target="_blank" title="Post 'New Atom data store for Dojo">kick it</a>|<a href="mailto:?body=Thought%20you%20might%20like%20this:%20http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo&amp;subject=New+Atom+data+store+for+Dojo" target="_blank" title="Post 'New Atom data store for Dojo">Email it</a>|<a href="http://del.icio.us/post?url=http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo&amp;title=New+Atom+data+store+for+Dojo" target="_blank" title="Post 'New Atom data store for Dojo">bookmark it</a>|<a href="http://reddit.com/submit?url=http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo&amp;title=New+Atom+data+store+for+Dojo" target="_blank" title="Post 'New Atom data store for Dojo">reddit</a>|<a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo&amp;title=New+Atom+data+store+for+Dojo&amp;top=1" target="_blank" title="Post 'New Atom data store for Dojo">liveIt</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/90/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/90/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/90/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=90&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/02/20/new-atom-data-store-for-dojo/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Functional programming with Dojo - Quick tips</title>
		<link>http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 23:49:17 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

		<category><![CDATA[dojo.data]]></category>

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

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=89</guid>
		<description><![CDATA[This post is a summary, and more, of a great blog post by Eugene Lazutkin on the insanely cool new Functional Programming features in the Dojo Ajax toolkit. It gives number of quick examples  in the vein of : &#8220;How to I do (x) to a data structure of type (y)&#8220;. Have a read [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This post is a summary, and more, of a <a href="http://ajaxian.com/archives/functional-programming-with-javascript-and-dojo" target="_blank">great blog post</a> by <a href="http://lazutkin.com/blog/" target="_blank">Eugene Lazutkin</a> on the insanely cool new <a href="http://en.wikipedia.org/wiki/Functional_programming" target="_blank">Functional Programming</a> features in the <a href="http://www.dojotoolkit.org" target="_blank">Dojo Ajax</a> toolkit. It gives number of quick examples  in the vein of : &#8220;<em>How to I do (x) to a data structure of type (y)</em>&#8220;. Have a read of Eugene&#8217;s post if you want to know the reasoning behind these features, and how they can be used to vastly simplify your own code.</p>
<p>Please feed free to post your own suggestions as comments and I will include them here. Note that some of the examples contain the variable <strong>df</strong>, this is short for   <strong>dojox.lang.functional</strong>.</p>
<p>1. <strong>How do I add a number to every element of an array (creating a new array)?</strong></p>
<p><code>var list= [10,20,30,50,25,5];<br />
var newList= dojo.map(arr, &#8220;return arguments[0]+2&#8243;);</code></p>
<p>2. <strong>How do I add a number to every element of an array without creating a new array?</strong></p>
<p><code>var list= [10,20,30,50,25,5];<br />
dojo.forEach(list, &#8220;array[index]+=2&#8243;);</code></p>
<p>3. <strong>How do I sum all the values in an array?</strong></p>
<p><code>var arr = [10,20,30,50,25,5];<br />
var sum = df.reduce(arr, &#8220;+&#8221;);</code></p>
<p>4. <strong>How do I sum all the values in a JSON array containing objects?</strong></p>
<p><code>var json = [{value: 1, name:"foo"}, {value:25}, {value:12,name:"bar"}];<br />
var sum = df.reduce(json, &#8220;{value:a.value+b.value}&#8221;).value;</code></p>
<p>5. <strong>How do I check if a condition is true for all elements of an array?</strong></p>
<p><code>var arr = [10,20,30,51,25,5];<br />
var isTrue = dojo.every(arr, &#8220;return item % 5==0;&#8221;);</code></p>
<p>6. <strong>How do I check if a condition is true for at least one element of an array?</strong></p>
<p><code>var arr = [10,20,30,51,25,5];<br />
var isTrue = dojo.some(arr, &#8220;return item % 5==0;&#8221;);</code></p>
<p>7. <strong>How do I find the smallest element in an array?</strong></p>
<p><code>var arr = [10,20,30,51,25,5];<br />
var min = df.reduce(arr, &#8220;Math.min(a,b)&#8221;);</code></p>
<p>8.<strong>How do I find the largest element in an array?</strong></p>
<p><code>var arr = [10,20,30,51,25,5];<br />
var min = df.reduce(arr, &#8220;Math.max(a,b)&#8221;);</code></p>
<p>9. <strong>How to I calculate the percentage each element of an array makes up of the sum of all elements in the array?</strong></p>
<p><code>var arr = [10,20,30,51,25,5];<br />
var percents = df.map(arr, &#8220;/this&#8221;, df.reduce(arr, &#8220;+&#8221;));</code></p>
<p>10. <strong>How do I generate a running total of an array?</strong></p>
<p><code>var arr = [1,2,3,4,5];<br />
var runningTotal = df.scanl1(arr, &#8220;+&#8221;);<br />
//Gives runningTotal=[1,3,6,10,15]</code></p>
<p>11. <strong>How do I create an array where each element is the multiplicand of all elements that came before it and itself?</strong></p>
<p><code>var arr = [1,2,3,4,5];<br />
var result = df.scanl1(arr, &#8220;+&#8221;);<br />
//Gives result=[1,2,6,24,120]</code></p>
<p>12. <strong>How do I combine multiple arrays into an equal number of arrays, but arranged by index?</strong></p>
<p><code>var arraysByIndex = df.zip([1,2,3],[11,22,33],[111,222,333]);<br />
//Gives arraysByIndex=[[1,11,111] , [2,22,222], [3,33,333]]</code></p>
<p>13. <strong>How do I search a <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/data-retrieval-dojo-data-0" target="_blank">dojo.data</a> store for the existance of a named attribute?</strong><br />
<code>//Assume a data store exists called 'store' and items have been retrieved </code><br />
<code>//and placed in an array called 'items'. We will search for an item that has</code><br />
<code>//an attribute 'country' equal to 'Ireland'</code><br />
<code>var found = df.some(items, "this.getValue(item, 'country') == 'Ireland'", store);</code></p>
<p>14. <strong>How do I filter an array to just the items that match a boolean condition?</strong><code><br />
var array = [22,4,66,100,55];<br />
var  over30 = dojo.filter(array, &#8220;return item &gt; 30&#8243;);<br />
//Gives a new array [66,100,55]. The original array is not modified.</code></p>
<p>15. <strong>How do I find an element in an array?</strong><br />
<code><br />
var array = ["this","is","an","array","of","strings"];<br />
var index = dojo.indexOf(array, &#8220;an&#8221;);<br />
//returns 2</code></p>
<p>16. <strong>How do I apply a Django Template to one or more nodes?</strong></p>
<p>dojo.require(&#8221;dojox.dtl.ext-dojo.NodeList&#8221;);</p>
<p>var array = ["some", "sample", "template", "input"];</p>
<p>dojo.query(&#8221;.someClass&#8221;).dtl(&#8221;templates/myTemplate.html&#8221;, array);</p>
<p><strong>Share this post:</strong><a title="Post 'Functional programming with Dojo - Quick tips" href="http://www.digg.com/submit?url=http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips&amp;phase=2" target="_blank">digg it</a>|<a title="Post 'Functional programming with Dojo - Quick tips" href="http://www.dotnetkicks.com/submit/?url=http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips&amp;title=Functional+programming+with+Dojo+-+Quick+tips" target="_blank">kick it</a>|<a title="Post 'Functional programming with Dojo - Quick tips" href="mailto:?body=Thought%20you%20might%20like%20this:%20http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips&amp;subject=Functional+programming+with+Dojo+-+Quick+tips" target="_blank">Email it</a>|<a title="Post 'Functional programming with Dojo - Quick tips" href="http://del.icio.us/post?url=http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips&amp;title=Functional+programming+with+Dojo+-+Quick+tips" target="_blank">bookmark it</a>|<a title="Post 'Functional programming with Dojo - Quick tips" href="http://reddit.com/submit?url=http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips&amp;title=Functional+programming+with+Dojo+-+Quick+tips" target="_blank">reddit</a>|<a title="Post 'Functional programming with Dojo - Quick tips" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips&amp;title=Functional+programming+with+Dojo+-+Quick+tips&amp;top=1" target="_blank">liveIt</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/89/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/89/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=89&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/02/15/functional-programming-with-dojo-quick-tips/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Using AOL hosted Dojo with your custom code</title>
		<link>http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 14:32:09 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

		<category><![CDATA[cross domain]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/</guid>
		<description><![CDATA[The Dojo Ajax Toolkit is kindly hosted by AOL for the consumption of anyone at all.  This has the advantage of

Reducing the load on your own server
Speeding up the delivery, as a Content Delivery Network (CDN) is used to ensure that the server is as close as possible to the client, and
The more people [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The <a href="http://www.dojotoolkit.org" target="_blank">Dojo Ajax Toolkit</a> is kindly <a href="http://dev.aol.com/dojo" target="_blank">hosted</a> by AOL for the consumption of anyone at all.  This has the advantage of</p>
<ul>
<li>Reducing the load on your own server</li>
<li>Speeding up the delivery, as a Content Delivery Network (CDN) is used to ensure that the server is as close as possible to the client, and</li>
<li>The more people who use this the better, as the same Dojo files will be cached when users move from site to site, as they&#8217;ll all be downloading the AOL hosted files.</li>
<li>Gzip compression as standard, so the files are as small as possible</li>
</ul>
<p>Additionally, since release 0.9 onwards, the main Dojo JavaScript file, <i>dojo.js</i>, is always exactly the same, whereas in previous released it changed for every developer who built it.</p>
<p>However, the problem comes in where you want to use your own custom code with the hosted Dojo code.  This is because the hosted code uses <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/functions-used-everywhere/dojo-require" target="_blank">Dojo&#8217;s loading system</a> to  dynamically load the resources needed on the page, and this will read the files from AOL, not your server (as you would expect - it knows nothing about your server).  If you want to <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-4-meta-dojo/package-system-and-custom-builds" target="_blank">build custom layers</a> to improve performance, the remotely hosted Dojo will not be able to find them.</p>
<p>So, the solution I generally tend to use is to put the AOL <i>dojo.js</i> on every page, and tell Dojo to load any other required files from my own server. To do this, set the <i>baseUrl </i>parameter on the djConfig attribute for the JavaScript file to the folder where Dojo is stored on your server. E.g.</p>
<p><b>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;http://o.aolcdn.com/dojo/1.0.2/dojo/dojo.js&#8221; djConfig=&#8221;{baseUrl:&#8217;/js/dojo/&#8217;}&#8221;&gt;&lt;/script&gt;</b></p>
<p>Notice here that the file I load is <i>dojo.js</i>, the normal version, not <i>dojo.xd.js</i>, which is the cross domain version capable of loading files from AOL.</p>
<p>After doing this, you can then include whatever custom built layers you like onto an particular page.  For example, if you have a layer built for the <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-5-dojox/dojox-image/gallery" target="_blank">dojox.image.Gallery</a> widget called  <i>/js/dojo/dojox/image/Gallery-layer.js</i>, you can load it either dynamically:</p>
<p><b>&lt;script type=&#8221;text/javascript&#8221;&gt;dojo.require(&#8221;dojox.image.Gallery-layer.js&#8221;);&lt;/script&gt;</b></p>
<p>or include it via a script tag:</p>
<p><b>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;js/dojo/dojox/image/Gallery-layer.js&#8221;&gt;&lt;/script&gt;</b></p>
<p>and it should work just as if you were using Dojo from your own server. Only of course you are not - AOL is serving up that file, and in many cases users will already have cached that file, speeding up your site quite nicely.</p>
<p>Another approach is to create a custom namespace, register it with Dojo, and put all your layers in there&#8230;. but that&#8217;s for another post <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
<b>Share this post:</b><a href="http://www.digg.com/submit?url=http://shaneosullivan.wordpress.com/2008/1/22/using-aol-hosted-dojo-with-your-custom-code&amp;phase=2" target="_blank" title="Post 'Using AOL hosted Dojo with your custom code">digg it</a>|<a href="http://www.dotnetkicks.com/submit/?url=http://shaneosullivan.wordpress.com/2008/1/22/using-aol-hosted-dojo-with-your-custom-code&amp;title=Using+AOL+hosted+Dojo+with+your+custom+code" target="_blank" title="Post 'Using AOL hosted Dojo with your custom code">kick it</a>|<a href="mailto:?body=Thought%20you%20might%20like%20this:%20http://shaneosullivan.wordpress.com/2008/1/22/using-aol-hosted-dojo-with-your-custom-code&amp;subject=Using+AOL+hosted+Dojo+with+your+custom+code" target="_blank" title="Post 'Using AOL hosted Dojo with your custom code">Email it</a>|<a href="http://del.icio.us/post?url=http://shaneosullivan.wordpress.com/2008/1/22/using-aol-hosted-dojo-with-your-custom-code&amp;title=Using+AOL+hosted+Dojo+with+your+custom+code" target="_blank" title="Post 'Using AOL hosted Dojo with your custom code">bookmark it</a>|<a href="http://reddit.com/submit?url=http://shaneosullivan.wordpress.com/2008/1/22/using-aol-hosted-dojo-with-your-custom-code&amp;title=Using+AOL+hosted+Dojo+with+your+custom+code" target="_blank" title="Post 'Using AOL hosted Dojo with your custom code">reddit</a>|<a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=http://shaneosullivan.wordpress.com/2008/1/22/using-aol-hosted-dojo-with-your-custom-code&amp;title=Using+AOL+hosted+Dojo+with+your+custom+code&amp;top=1" target="_blank" title="Post 'Using AOL hosted Dojo with your custom code">liveIt</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/88/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/88/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=88&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Dojo Demo Engine Update</title>
		<link>http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/</link>
		<comments>http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/#comments</comments>
		<pubDate>Mon, 07 Jan 2008 01:02:43 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Demo Engine]]></category>

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

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

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

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

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

		<category><![CDATA[dojo.query]]></category>

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

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/</guid>
		<description><![CDATA[A short while ago I posted about the demo engine I&#8217;m writing for the Dojo Ajax Toolkit. Click here to read that post or go to http://www.skynet.ie/~sos/js/demo/dojo/dojoc/demos/featureexplorer.html to see it in action.
Update: Version 1.0 of the demo engine has been release. See here.
Features
Since that post, quite a lot of work has gone into both the [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A short while ago I posted about the demo engine I&#8217;m writing for the Dojo Ajax Toolkit. <a href="http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/" target="_blank">Click here</a> to read that post or go to <a href="http://www.skynet.ie/~sos/js/demo/dojo/dojoc/demos/featureexplorer.html" target="_blank">http://www.skynet.ie/~sos/js/demo/dojo/dojoc/demos/featureexplorer.html</a> to see it in action.</p>
<p><strong>Update: Version 1.0 of the demo engine has been release. See <a href="http://shaneosullivan.wordpress.com/2008/04/03/dojo-ajax-demo-engine-released/" target="_blank">here</a>.</strong></p>
<p><strong>Features</strong></p>
<p><strong></strong>Since that post, quite a lot of work has gone into both the features and the content of the demo engine, and the development process has solidified nicely.  Some of the features include:</p>
<ul>
<li><strong>Tree navigation</strong>. A <em>dijit.Tree</em> widget, reading from a remote JSON data store is used to navigate the various demos.</li>
<li><strong>Search feature</strong>. A <em>dijit.form.ComboBox</em> widget, reading from the same JSON data store as the tree, can be used to dynamically search for demos by matching any part of their name.</li>
<li><strong>Theme switcher</strong>. A <em>dijit.form.ComboBox</em> widget is used to switch between the CSS styles that Dojo provides.</li>
<li><strong>URL addressability</strong>. Using a hash identifier (e.g. <em>#Dojo_Query_By%20Class</em>) in the URL of the demo engine causes it to open that demo when it has finished loading.  For example, if you click <a href="http://www.skynet.ie/~sos/js/demo/dojo/dijit/demos/featureexplorer.html#Dojo_Query_By%20Class" target="_blank">this link</a>, it will open the <em>dojo.query</em> demo showing you how to select nodes by class name. Opening any demo changes the URL in the browser to the URL for that demo, for easy bookmarking.</li>
<li><strong>Integrated build process</strong>. A simple build script is integrated with the Dojo build process. It builds a JSON data file listing all the existing demos and their respective files. It also builds files with URL links for each demo.</li>
</ul>
<p><strong>Content</strong></p>
<p>To date, a lot of content has been added.  Many, many widgets in <a href="http://www.skynet.ie/~sos/js/demo/dojo/dijit/demos/featureexplorer.html#Dijit" target="_blank">Dijit</a> and <a href="http://www.skynet.ie/~sos/js/demo/dojo/dijit/demos/featureexplorer.html#Dojox" target="_blank">DojoX<br />
</a> have have been added, including the majority of the <a href="http://www.skynet.ie/~sos/js/demo/dojo/dijit/demos/featureexplorer.html#Dijit_Form%20Controls" target="_blank">Form Controls</a>.</p>
<p>The latest, pretty cool additions have been the <a href="http://www.skynet.ie/~sos/js/demo/dojo/dijit/demos/featureexplorer.html#Dojo_IO" target="_blank">IO</a> and <a href="http://www.skynet.ie/~sos/js/demo/dojo/dijit/demos/featureexplorer.html#Dojo_Query" target="_blank">dojo.query</a> demos.  These cover things such as:</p>
<ul>
<li>Performing a XMLHttpRequest request</li>
<li>Using an iFrame transport</li>
<li>Submitting a form asynchronously</li>
<li>Loading remote JavaScript files from another domain</li>
<li>Selecting nodes using <a href="http://www.w3.org/TR/REC-CSS2/selector.html" target="_blank">CSS selectors</a> with <a href="http://ajaxian.com/archives/dojoquery-a-css-query-engine" target="_blank">dojo.query</a></li>
<li>Performing operations on the NodeList returned from dojo.query</li>
<li>Attaching events to the <a href="http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-536297177" target="_blank">NodeList</a> returned from dojo.query</li>
</ul>
<p><strong>File Naming Scheme</strong><br />
A simple file naming scheme is used to add content to the demo framework. Each folder beneath the root folder represents a demo. Each file in a folder must be named the same as the folder, with five possible extensions. For example, given a folder with the name &#8216;<strong>Button</strong>&#8216;, the possible files are:</p>
<ul>
<li><strong>Button.html</strong> -  this contains the demo to be displayed. Any JavaScript code inside &lt;script&gt; tags is executed, and any &lt;link type=&#8221;text/css&#8221;&gt; and &lt;style&gt; tags have their CSS loaded. The executed code is shown in the <em>View</em> tab, and and the source code is shown in the <em>XML</em> tab. The <em>&lt;html&gt;</em>, <em>&lt;head&gt;</em> and <em>&lt;body&gt;</em> tags are not required.</li>
<li><strong>Button.js</strong> - this contains pure JavaScript code that performs the same operations as Button.html, if applicable. It is not executed however. It is shown in the <em>JS</em> tab.</li>
<li><strong>Button.txt</strong> - this contains the text description of the demo. It is loaded above the tabs.</li>
<li><strong>Button.links</strong> - this contains a JSON array of URL links.  The build script transforms these links into HTML, and the result is loaded into the <em>Links</em> tab. One neat feature of this is that all links from sub folders are integrated with the parent folder and displayed in a nested structure. Do, for example, clicking on <em>Dijit</em> will show all the links for all widgets in the Dijit project.</li>
<li><strong>Button.full.html</strong> - this is standalone demo, that is designed to run outside the demo engine. The <em>View</em> tab provides a link to the external file.</li>
<li><strong>sort.txt</strong> - this contains a comma separated list of the child folders contained in this folder. It specifies the order in which to display the child demos in the tree. If this file is not specified, then an alphabetical ordering is used.</li>
</ul>
<p>All of these files are optional. If a file in a folder does not match this naming scheme, it is assumed to be some kind of resource that the demo needs, such as an image or a JSON data file. In this case, the file can be named whatever you like.</p>
<p>The tree structure in the demo engine mirrors the folder layout.</p>
<p><strong>Still To Do</strong></p>
<p>There remains quite a lot of work ahead.  There are a few bugs remaining, some more cross browser testing is needed, and of course more content is required, particularly the base Dojo package.</p>
<p>In the relatively near future this should be opened up to the public for development. The Dojo folks are setting up a source control server for community additions, and this demo engine should be part of that. Once that is done, people can start adding all sorts of cool stuff!<br />
<strong>Share this post:</strong><a title="Post 'Dojo Demo Engine Update" href="http://www.digg.com/submit?url=http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update&amp;phase=2" target="_blank">digg it</a>|<a title="Post 'Dojo Demo Engine Update" href="http://www.dotnetkicks.com/submit/?url=http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update&amp;title=Dojo+Demo+Engine+Update" target="_blank">kick it</a>|<a title="Post 'Dojo Demo Engine Update" href="mailto:?body=Thought%20you%20might%20like%20this:%20http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update&amp;subject=Dojo+Demo+Engine+Update" target="_blank">Email it</a>|<a title="Post 'Dojo Demo Engine Update" href="http://del.icio.us/post?url=http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update&amp;title=Dojo+Demo+Engine+Update" target="_blank">bookmark it</a>|<a title="Post 'Dojo Demo Engine Update" href="http://reddit.com/submit?url=http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update&amp;title=Dojo+Demo+Engine+Update" target="_blank">reddit</a>|<a title="Post 'Dojo Demo Engine Update" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update&amp;title=Dojo+Demo+Engine+Update&amp;top=1" target="_blank">liveIt</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/87/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/87/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=87&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Navigating in an IE Modal Dialog</title>
		<link>http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/</link>
		<comments>http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/#comments</comments>
		<pubDate>Mon, 31 Dec 2007 16:36:21 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Dojo]]></category>

		<category><![CDATA[Internet Explorer]]></category>

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

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

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

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/</guid>
		<description><![CDATA[Internet Explorer has a nice feature where a new window can be opened modally using the window.showModalDialog function, meaning that the page that opened it cannot be accessed until the new window is closed.  This can be useful in many situations.
However, the main limitation of IE Modal Dialogs (other than being non-standard), is that [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Internet Explorer has a nice feature where a new window can be opened modally using the <a href="http://msdn2.microsoft.com/en-us/library/ms536759.aspx"><i>window.showModalDialog</i></a> function, meaning that the page that opened it cannot be accessed until the new window is closed.  This can be useful in many situations.</p>
<p>However, the main limitation of IE Modal Dialogs (other than being non-standard), is that any hyperlink clicked in a modal dialog causes another, non modal, dialog to be opened, rather than opening the page linked to in the same window, as would happen in a normal pop up window.</p>
<p>The key to solving this problem is to note that a modal dialog only opens another window when a <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_Methods" target="_blank">GET</a> request is made, not when a <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_Methods" target="_blank">POST</a> request is made.  However, an anchor tag automatically causes a GET request, so the solution is to:</p>
<ol>
<li> Catch the click on each anchor tag, cancel it,</li>
<li>Submit a dynamically created FORM element, with it&#8217;s <i>method</i> set to &#8216;<i>POST&#8217; </i>and it&#8217;s <i>action</i> set to the URL of the link clicked.</li>
</ol>
<p>While it is possible to put a listener on each anchor tag to achieve this, such an approach will not scale well.  Instead, place a listener on the <b>body </b>tag. The example below is done using methods from the <a href="http://www.dojotoolkit.org" target="_blank">Dojo Ajax Toolkit</a>, since that the toolkit I use the most, but you can of course use whatever methods you like to achieve the same result:</p>
<blockquote><p> <code>&lt;script type="text/javascript"&gt;<br />
dojo.addOnLoad(function(){<br />
dojo.connect(dojo.body(), &#8220;onclick&#8221;, function(evt) {<br />
if(evt.target.tagName != &#8220;A&#8221;) {return true;}<br />
dojo.stopEvent(evt);<br />
var form = document.createElement(&#8221;form&#8221;);<br />
form.setAttribute(&#8221;target&#8221;, window.name ? window.name : &#8220;SrPopUp&#8221;);<br />
form.setAttribute(&#8221;action&#8221;, url);<br />
form.setAttribute(&#8221;method&#8221;,&#8221;POST&#8221;);<br />
document.appendChild(form);<br />
form.submit();<br />
return false;<br />
});<br />
});<br />
&lt;/script&gt;</code></p></blockquote>
<p>This method assumes that you have control over the content of the page being shown in the modal dialog.  It would also make sense to add a similar listener to the body tag for key events, as a user can trigger an anchor tag by tabbing to it and hitting enter.</p>
<p>Thanks to <a href="http://www.dannyg.com/support/modalFix.html" target="_blank">Danny Goodman</a> and <a href="http://www.dannyg.com/support/SOCmodalWindow.js" target="_blank">Steiner Overbeck Cook</a> for coming up with this solution.<br />
<b>Share this post:</b><a href="http://www.digg.com/submit?url=http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog&amp;phase=2" target="_blank" title="Post 'Navigating in an IE Modal Dialog">digg it</a>|<a href="http://www.dotnetkicks.com/submit/?url=http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog&amp;title=Navigating+in+an+IE+Modal+Dialog" target="_blank" title="Post 'Navigating in an IE Modal Dialog">kick it</a>|<a href="mailto:?body=Thought%20you%20might%20like%20this:%20http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog&amp;subject=Navigating+in+an+IE+Modal+Dialog" target="_blank" title="Post 'Navigating in an IE Modal Dialog">Email it</a>|<a href="http://del.icio.us/post?url=http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog&amp;title=Navigating+in+an+IE+Modal+Dialog" target="_blank" title="Post 'Navigating in an IE Modal Dialog">bookmark it</a>|<a href="http://reddit.com/submit?url=http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog&amp;title=Navigating+in+an+IE+Modal+Dialog" target="_blank" title="Post 'Navigating in an IE Modal Dialog">reddit</a>|<a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog&amp;title=Navigating+in+an+IE+Modal+Dialog&amp;top=1" target="_blank" title="Post 'Navigating in an IE Modal Dialog">liveIt</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shaneosullivan.wordpress.com/86/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shaneosullivan.wordpress.com/86/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&blog=258432&post=86&subd=shaneosullivan&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/shaneosullivan-128.jpg" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>A new Demo engine for Dojo</title>
		<link>http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/</link>
		<comments>http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 09:29:16 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

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

		<category><![CDATA[dojox.image]]></category>

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

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/</guid>
		<description><![CDATA[A couple of weeks ago I saw a cool demo framework for an Ajax toolkit just released as open source.  It&#8217;s a very slick implementation, with a tree listing all the various demos, and a tabbed area showing the implementation, and the widget in practice.
So, I think to myself, this is exactly what the [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A couple of weeks ago I saw a cool <a href="http://www.smartclient.com/#_Welcome" target="_blank">demo framework</a> for an Ajax toolkit just released as open source.  It&#8217;s a very slick implementation, with a tree listing all the various demos, and a tabbed area showing the implementation, and the widget in practice.</p>
<p>So, I think to myself, this is exactly what the <a href="http://www.dojotoolkit.org/" target="_blank">Dojo Ajax Toolkit</a> is missing!  Cut to today, and I&#8217;ve put the first rough cut at the demo framework on the web for people&#8217;s perusal.  Check it out at <a href="http://www.skynet.ie/~sos/js/demo/dojo/dojoc/demos/featureexplorer.html" target="_blank">http://www.skynet.ie/~sos/js/demo/dojo/dojoc/demos/featureexplorer.html</a> .</p>
<p><b>Note: I have written a follow up post <a href="http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/" target="_blank">here</a>.</b></p>
<p>Some of the features include:</p>
<ul>
<li>Tree navigation for the demos.  Demos can be nested as deep as required.</li>
<li>View tab.  This shows the widgets in action.</li>
<li>HTML tab. This shows how to instantiate the widget using HTML markup.</li>
<li>JS tab. This shows how to instantiate the widget using JavaScript code.</li>
<li>Links tab. This shows various hyperlinks to alternate content for that demo, e.g. the <a href="http://dojotoolkit.org/book/dojo-book-0-9-0" target="_blank">Dojo Book</a>.</li>
<li>Demo description. Gives a text description of the demo.</li>
<li>Theme selector.  This allows you to change from one CSS theme to another</li>
<li>Ability to link to standalone demos that open in a new page. This is useful for large demos that show the integration of many widgets together, and may not fit well within the demo framework itself.  See the Dijit/Mail demo for an example of this.</li>
<li>A build system that takes a very simple naming scheme for the demos, and creates a JSON data store that the framework runs off of.  So, whenever a user adds a new demo, they simply have to re-run the build step, and that&#8217;s it!  No need for a server side script, so you can run this right off your hard drive.</li>
</ul>
<p>This is still very much beta code, and there are a couple of errors floating around, but those will of course be hunted down.  There are also some Internet Explorer issues that I&#8217;ll get to soon, so try this in Firefox for now (<b>update Dec 05 2007 - most of these have been solved, with one or two small bugs remaining)</b>.  I&#8217;m in discussions to get this into the Dojo toolkit, so that the community at large can start adding in demos.  I&