<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Lakkakula&#039;s Blog</title>
	<atom:link href="http://lakkakula.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://lakkakula.wordpress.com</link>
	<description>Making a difference!</description>
	<lastBuildDate>Sun, 18 Dec 2011 13:20:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='lakkakula.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/17716311f73d4050f61257f6ed9ea566?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Lakkakula&#039;s Blog</title>
		<link>http://lakkakula.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://lakkakula.wordpress.com/osd.xml" title="Lakkakula&#039;s Blog" />
	<atom:link rel='hub' href='http://lakkakula.wordpress.com/?pushpress=hub'/>
		<item>
		<title>2010 in review</title>
		<link>http://lakkakula.wordpress.com/2011/01/02/2010-in-review/</link>
		<comments>http://lakkakula.wordpress.com/2011/01/02/2010-in-review/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 14:09:53 +0000</pubDate>
		<dc:creator>Venkata Uma lakkakula</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lakkakula.wordpress.com/?p=206</guid>
		<description><![CDATA[The stats helper monkeys at WordPress.com mulled over how this blog did in 2010, and here&#8217;s a high level summary of its overall blog health: The Blog-Health-o-Meter™ reads Wow. Crunchy numbers The average container ship can carry about 4,500 containers. This blog was viewed about 21,000 times in 2010. If each view were a shipping [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=206&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[
<p>The stats helper monkeys at WordPress.com mulled over how this blog did in 2010, and here&#8217;s a high level summary of its overall blog health:</p>
<p align="center"><img style="border:1px solid #ddd;background:#f5f5f5;padding:20px;" src="http://s0.wp.com/i/annual-recap/meter-healthy5.gif" width="250" height="183" alt="Healthy blog!"></p>
<p align="center">The <em>Blog-Health-o-Meter™</em> reads Wow.</p>
<h2>Crunchy numbers</h2>
<p>			<a href="http://lakkakula.files.wordpress.com/2009/06/widget.png"><img src="http://lakkakula.files.wordpress.com/2009/06/widget.png?w=288" alt="Featured image" style="max-height:230px;float:right;border:1px solid #ddd;background:#fff;margin:0 0 1em 1em;padding:6px;" /></a></p>
<p>The average container ship can carry about 4,500 containers.  This blog was viewed about <strong>21,000</strong> times in 2010.  If each view were a shipping container, your blog would have filled about 5 fully loaded ships.</p>
<p>
<p>In 2010, there was <strong>1</strong> new post, growing the total archive of this blog to 7 posts.</p>
<p>The busiest day of the year was September 15th with <strong>1</strong> views. The most popular post that day was <a style="color:#08c;" href="http://lakkakula.wordpress.com/2010/09/12/google-instant-what-the-heck-i-created-bing-instant/">Google instant? Big deal! check out Bing Instant.</a>.</p>
<p></p>
<h2>Where did they come from?</h2>
<p>The top referring sites in 2010 were <strong>aspspider.ws</strong>, <strong>aspspider.info</strong>, <strong>code.google.com</strong>, <strong>stackoverflow.com</strong>, and <strong>forums.asp.net</strong>.</p>
<p>Some visitors came searching, mostly for <strong>lakkakula</strong>, <strong>linksgrid</strong>, <strong>mvc portal</strong>, <strong>asp.net mvc widgets</strong>, and <strong>asp.net mvc drag and drop</strong>.</p>
<div style="clear:both;"></div>
<h2>Attractions in 2010</h2>
<p>These are the posts and pages that got the most views in 2010.</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">1</div>
<p>					<a style="margin-right:10px;" href="http://lakkakula.wordpress.com/2010/09/12/google-instant-what-the-heck-i-created-bing-instant/">Google instant? Big deal! check out Bing Instant.</a> <span style="color:#999;font-size:8pt;">September 2010</span><br />24 comments and 3 Likes on WordPress.com											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">2</div>
<p>					<a style="margin-right:10px;" href="http://lakkakula.wordpress.com/2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/">Developing Web 2.0 Portal using Asp.Net MVC, Microsoft Ajax Client Templates and jQuery with drag and drop widget personalization &#8211; Part 1</a> <span style="color:#999;font-size:8pt;">June 2009</span><br />27 comments											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">3</div>
<p>					<a style="margin-right:10px;" href="http://lakkakula.wordpress.com/2009/06/26/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-2/">Developing Web 2.0 Portal using Asp.Net MVC, Microsoft Ajax Client Templates and jQuery with drag and drop widget personalization – Part 2</a> <span style="color:#999;font-size:8pt;">June 2009</span><br />1 comment											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">4</div>
<p>					<a style="margin-right:10px;" href="http://lakkakula.wordpress.com/2009/06/15/web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization/">Web 2.0 Portal using Asp.Net MVC, Microsoft Ajax Client Templates and jQuery with drag and drop widget personalization</a> <span style="color:#999;font-size:8pt;">June 2009</span><br />8 comments											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">5</div>
<p>					<a style="margin-right:10px;" href="http://lakkakula.wordpress.com/2009/09/20/linksgrid-enhancements-and-conclusion/">Linksgrid &#8211; Enhancements and Conclusion</a> <span style="color:#999;font-size:8pt;">September 2009</span><br />6 comments											</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lakkakula.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lakkakula.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lakkakula.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lakkakula.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lakkakula.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lakkakula.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lakkakula.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lakkakula.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lakkakula.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lakkakula.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lakkakula.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lakkakula.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lakkakula.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lakkakula.wordpress.com/206/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=206&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://lakkakula.wordpress.com/2011/01/02/2010-in-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e009131391b3e9faa77041bf74e2d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Venkata Uma lakkakula</media:title>
		</media:content>

		<media:content url="http://s0.wp.com/i/annual-recap/meter-healthy5.gif" medium="image">
			<media:title type="html">Healthy blog!</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/06/widget.png?w=288" medium="image">
			<media:title type="html">Featured image</media:title>
		</media:content>
	</item>
		<item>
		<title>Google instant? Big deal! check out Bing Instant.</title>
		<link>http://lakkakula.wordpress.com/2010/09/12/google-instant-what-the-heck-i-created-bing-instant/</link>
		<comments>http://lakkakula.wordpress.com/2010/09/12/google-instant-what-the-heck-i-created-bing-instant/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 20:04:59 +0000</pubDate>
		<dc:creator>Venkata Uma lakkakula</dc:creator>
				<category><![CDATA[Google Instant]]></category>

		<guid isPermaLink="false">http://lakkakula.wordpress.com/?p=178</guid>
		<description><![CDATA[Note: Do not take it seriously! I did this just for fun. I respect both Microsoft and Google. They are the inspiration for any software developer. I was bit surprised when Google announced instant search. While it is not tough to implement on client side, it is definitely impresive advance in server technology. I did [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=178&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Note: Do not take it seriously! I did this just for fun. I respect both Microsoft and Google. They are the inspiration for  any software developer. I was bit surprised when Google announced  instant search. While it is not tough to implement on client side, it is  definitely impresive advance in server technology. I did binginstant in a single day, hence it can not be compared to Google instant.</p>
<p>Not sure how successful &#8220;Google Instant&#8221; can become! They are making it a big deal. Want to experience the &#8220;Bing Instant&#8221;? Check out my creation &#8211; <a title="Bing Instant" href="http://www.binginstant.com" target="_blank">Bing Instant</a> : <a title="Bing Instant" href="http://www.binginstant.com" target="_blank">http://www.binginstant.com</a></p>
<p>Here is how  Bing Instant works:</p>
<p>1. User starts typing keywords</p>
<p>2. Wait about 100 milliseconds between each key stroke (coz most of the geeks type faster than ajax can handle). And it is not wise to come in between user keystrokes, its like disrespect to the geek who is trying to form his search keyword.</p>
<p>3. When user pauses briefly (just about more than 100 milliseconds), make a call to bing suggest api to get the suggestions</p>
<p>4. Take the first suggestion and make another call to bing search api to get actual search results and of course show it on the page</p>
<p>5. That is it friends, you have bing predicted instant search results.</p>
<p>Let me know what you guys think?</p>
<blockquote>
<p style="padding-left:30px;">Update: For the folks want to see the code, you can just try this: (you do not need to know programming at all <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> )</p>
<p style="padding-left:30px;">1. Get your own AppID for Bing API from <a href="http://www.bing.com/developers/createapp.aspx" target="_self">Bing Developer Center</a></p>
<p style="padding-left:30px;">2. Copy &amp; paste the example from <a href="http://msdn.microsoft.com/en-us/library/dd251093.aspx" target="_self">Bing API Sample</a> to notepad and replace [var AppId = "Insert your AppId here";]  with your AppID from step 1.</p>
<p style="padding-left:30px;">3. Save your file as bing.htm and open it in your favorite browser. If you know a little bit of CSS and JQuery, you can do magic with results.</p>
</blockquote>
<p>Read on&#8230;</p>
<div>
<p>Coz I built this <span style="text-decoration:line-through;">awesomely genius excellent cool, or something like that </span>(of course, I am joking) site <a href="http://www.binginstant.com" target="_blank">binginstant.com</a> on a lonely Sunday only to kill my boredom, which is getting about ~1000 hits per day (now hits are reduced <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), I thought I can share my thoughts on Google instant.</p>
<p>I like most of Google services, they are simple and clean to use. I do not understand why Google is making such a big propaganda about instant? Is it just me got annoyed? May be not&#8230; there are many <a href="http://twitter.com/#search?q=google%20instant%20hate" target="_blank">Google Instant Haters</a>. Instant benefits more Google then casual user.</p>
<p>Google’s 90% of the sites use to be “Google beta” now they are called “Google labs”, I guess. Why did they not release instant as a labs experiment?</p>
<p>I would say Google’s biggest asset is its search “user base”. They should have learned from its big failure “Wave”. When they released “Wave” they portrayed it as a game changer for all communications. They said it is next generation tool to GTalk and GMail and so on. Wave is great product, but for a casual user, it’s too much.</p>
<p>Simplicity sells; being simple has been Google’s success. All of the sudden what happened to them? I wonder why Google thinks their “algorithms” and “index servers” are smarter than a human being; in forming a search query? I agree computers are faster, but not smarter than humans and they will never be.</p>
<p>Google built huge mapping database(s) between user “search query” and “indexed web content” over the years only because of real humans are forming search queries and clicking on the search results. Did Google decide that they have enough mappings between “search queries” and their “indexed web content”?</p>
<p>With instant, Google is killing the natural instinct/ability of human to form queries. If the users are only getting results for Google predicted keywords, and not to their intended query; which they never got a chance to finish, what will happen over years? How can the Google get naturally human formatted search queries from now on?</p>
<p>With Google instant, several ads will flash in front of your eyes for split of a second. I am sure they will catch your eye, especially when it is an image ad. Even if you think you did not see the ad, your sub-conscious mind registers them. This is really annoying. It gets even annoying if you use to typing slowly.</p>
<p>I remember some one told me that, there use to be “flash ads” on movie theaters. It’s like flashing a products image or logo on theater screen for split of a second. These type of ads make an impression on human brains even though they are shown for a split of a second. These type of ads are completely banned (I was told so). I wonder how users can handle floods of unnecessary results and ads they see before they finish their keywords!</p>
<p>I wonder if Google forgot that “enter” is also a key on keyboard. Very few users will take off their hand from key board, to hold the mouse and to move the cursor on to search button and then click on it. I type fast (considerably) and I never pause between my keyword and enter key; it goes in a flow. I guess it is the same case with most of you. I keep hitting enter key “with instant on”, only to realize it is not going to work. It’s funny that they left the “search” button only to close extra suggestions.</p>
<p>I only hope Google will be more thoughtful before making any disastrous decisions. Don’t fix, if it ain’t broken.</p>
<p>I would like to hear your thoughts, leave a comment.</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lakkakula.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lakkakula.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lakkakula.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lakkakula.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lakkakula.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lakkakula.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lakkakula.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lakkakula.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lakkakula.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lakkakula.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lakkakula.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lakkakula.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lakkakula.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lakkakula.wordpress.com/178/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=178&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://lakkakula.wordpress.com/2010/09/12/google-instant-what-the-heck-i-created-bing-instant/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e009131391b3e9faa77041bf74e2d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Venkata Uma lakkakula</media:title>
		</media:content>
	</item>
		<item>
		<title>Linksgrid &#8211; Enhancements and Conclusion</title>
		<link>http://lakkakula.wordpress.com/2009/09/20/linksgrid-enhancements-and-conclusion/</link>
		<comments>http://lakkakula.wordpress.com/2009/09/20/linksgrid-enhancements-and-conclusion/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 22:17:26 +0000</pubDate>
		<dc:creator>Venkata Uma lakkakula</dc:creator>
				<category><![CDATA[Ajax Client Templates]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Asp.Net MVC]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://lakkakula.wordpress.com/?p=153</guid>
		<description><![CDATA[As with any software product there is always scope for enhancements, linksgrid is no exception. What I tried to do here is to show a different approach for developing Web 2.0 portal with dynamic content loading and user personalization. I also tried to achieve balance between complexity of coding and ease of implementation. Asp.net MVC [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=153&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As with any software product there is always scope for enhancements, linksgrid is no exception. What I tried to do here is to show a different approach for developing Web 2.0 portal with dynamic content loading and user personalization. I also tried to achieve balance between complexity of coding and ease of implementation. Asp.net MVC , Ajax Client Templates and jQuery brings this balance very well by drastically improving productivity of client side programming which is rather complex when written in conventional plain old javascript. Asp.net MVC&#8217;s RESTful url based services enhances ease of implementation of AJAX.</p>
<p>If you followed this series from the beginning you might have noticed that, I incrementally added features to the portal. The first enhancement I would do is to clean up javascript framework and improve initial page load behavior. For example the current implementation doesn&#8217;t load any JSON on first call to the server, then multiple subsequent calls are made to load widget-list, tab-list, gallery-list etc., All these can be combined into one single JSON object and can be returned on the first call itself. This will improve a little bit of performance as it reduces number of calls to server.</p>
<p>I encourage you to download the latest code and play with it. If you find any problem or have a question, please use http://code.google.com/p/linksgrid/issues/list to post your issues; you are welcome to post a comment in this blog also.</p>
<p>If you find this project helped in one or other way please let me know&#8230; I will list your implementation in this blog.</p>
<p>Finally, most important&#8230; If any one of you fixed any problem or added a cool new feature to linksgrid, please share code with me.</p>
<p>I wish you enjoyed this series as much as I enjoyed writing and sharing my ideas with you on the project.</p>
<p>Thanks for the support and encouragement I got from you all.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lakkakula.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lakkakula.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lakkakula.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lakkakula.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lakkakula.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lakkakula.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lakkakula.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lakkakula.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lakkakula.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lakkakula.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lakkakula.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lakkakula.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lakkakula.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lakkakula.wordpress.com/153/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=153&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://lakkakula.wordpress.com/2009/09/20/linksgrid-enhancements-and-conclusion/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e009131391b3e9faa77041bf74e2d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Venkata Uma lakkakula</media:title>
		</media:content>
	</item>
		<item>
		<title>Developing Web 2.0 Portal using Asp.Net MVC, Microsoft Ajax Client Templates and jQuery with drag and drop widget personalization – Part 4</title>
		<link>http://lakkakula.wordpress.com/2009/09/09/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-4/</link>
		<comments>http://lakkakula.wordpress.com/2009/09/09/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-4/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 23:43:38 +0000</pubDate>
		<dc:creator>Venkata Uma lakkakula</dc:creator>
				<category><![CDATA[Ajax Client Templates]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Asp.Net MVC]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[OpenID]]></category>

		<guid isPermaLink="false">http://lakkakula.wordpress.com/?p=136</guid>
		<description><![CDATA[In this series: 1. Introduction 2. Part 1 – Portal Core Functionality 3. Part 2 – Drag and Drop Widget Personalization 4. Part 3 – Building Widget Gallery 5. Part 4 – Introduce Tabs and Users 6. Part 5 – Enhancements and Conclusion Working portal at: http://aspspider.info/lakkakula/local.aspx Alright, finally I&#8217;ve got some time to write [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=136&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><span style="text-decoration:underline;">In this series:</span></strong><br />
1. <a href="../2009/06/15/web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization/" target="_self">Introduction<br />
</a>2. <a href="../2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/" target="_self">Part 1 – Portal Core Functionality</a><br />
3. <a href="../2009/06/26/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%E2%80%93-part-2/" target="_blank">Part 2 – Drag and Drop Widget Personalization</a><br />
4. <a href="../2009/07/27/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-3/?preview=true&amp;preview_id=108&amp;preview_nonce=03be6d8afb" target="_blank">Part 3 – Building Widget Gallery</a><br />
5. <a href="http://wp.me/pyiXr-2c" target="_blank">Part 4 – Introduce Tabs and Users</a><br />
6. <a href="http://wp.me/pyiXr-2t" target="_blank">Part 5 – Enhancements and Conclusion</a></p>
<p>Working portal at: <a href="http://aspspider.info/lakkakula/local.aspx" target="_blank">http://aspspider.info/lakkakula/local.aspx</a></p>
<p>Alright, finally I&#8217;ve got some time to write about users and tabs. In previous posts we have seen the core functionality of the portal which is to load widgets through ajax calls and displaying widget gallery. Once we have the core functionality ready, its time to tie it to Users and Tabs. Talking about users, it is typical to implement forms based authentication  for public web sites. When it comes to asp.net or asp.net MVC the natural way is to go through Membership, Role and Profile &#8220;<a title="Asp.Net Providers" href="http://msdn.microsoft.com/en-us/library/aa478948.aspx" target="_blank">Providers</a>&#8220;. Let us do it something different here, the latest buzz is &#8220;<a title="Open ID" href="http://www.hanselman.com/blog/TheWeeklySourceCode25OpenIDEdition.aspx" target="_blank">Open ID</a>&#8220;, so why not implement it?</p>
<p>Guest User Screenshot</p>
<p><a href="http://lakkakula.files.wordpress.com/2009/09/lg-guest.png"><img class="aligncenter size-full wp-image-139" title="lg-guest" src="http://lakkakula.files.wordpress.com/2009/09/lg-guest.png" alt="lg-guest" width="1024" height="422" /></a></p>
<p>Authenticated user screen-shot</p>
<p><a href="http://lakkakula.files.wordpress.com/2009/09/lg-auth.png"><img class="aligncenter size-full wp-image-140" title="lg-auth" src="http://lakkakula.files.wordpress.com/2009/09/lg-auth.png" alt="lg-auth" width="1006" height="622" /></a></p>
<p>This is what we will do here:<a href="http://lakkakula.files.wordpress.com/2009/09/lg-flow.png"><img class="aligncenter size-full wp-image-137" title="lg-flow" src="http://lakkakula.files.wordpress.com/2009/09/lg-flow.png" alt="lg-flow" width="545" height="515" /></a></p>
<p>To keep things simple, we will not be storing guest user&#8217;s activity, such as new widget creation, widget location move etc. For the logged in users we will allow to create new tabs, add widgets, move widgets and delete widgets.</p>
<p>Now for some code: Open ID implementation is straight forward, you can download samples from <a href="http://code.google.com/p/dotnetopenid/">dotnetopenid</a> project site. What I want to show is, generally after authentication we would be interested to know more about the user such as email, full name etc. DotnetOpenId library has an response extension method which will pull this extra information for us. (note: the extra user information depends on the actual open id provider, in other words its not guaranteed that we will always get response for extra user info.)  Here is the simple implementation of authentication:</p>
<blockquote><p><code>[ValidateInput(false)]<br />
public ActionResult Authenticate()<br />
{<br />
var openid = new OpenIdRelyingParty();<br />
var response = openid.GetResponse();<br />
if (response == null)<br />
{<br />
// Stage 2: user submitting Identifier<br />
/*var req = openid.CreateRequest(Request.Form["openid_identifier"]);<br />
var fields = new DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.ClaimsRequest();// .SimpleRegistrationRequestFields();<br />
fields.Email = DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.ClaimsRequest;<br />
fields.Nickname = DotNetOpenId.Extensions.SimpleRegistrationRequest.Request;<br />
fields. .AddToRequest(req);<br />
req.RedirectToProvider(); */<br />
Identifier id;<br />
if (Identifier.TryParse(Request.Form["openid_identifier"], out id))<br />
{<br />
try<br />
{<br />
//return openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult();<br />
var request = openid.CreateRequest(Request.Form["openid_identifier"]);</code></p>
<p>request.AddExtension(new ClaimsRequest<br />
{<br />
BirthDate = DemandLevel.Request,<br />
Country = DemandLevel.Request,<br />
Email = DemandLevel.Require,<br />
FullName = DemandLevel.Request,<br />
Gender = DemandLevel.Request,<br />
Language = DemandLevel.Request,<br />
Nickname = DemandLevel.Request,<br />
PostalCode = DemandLevel.Request,<br />
TimeZone = DemandLevel.Request<br />
});</p>
<p>return request.RedirectingResponse.AsActionResult();</p>
<p>}<br />
catch (ProtocolException ex)<br />
{<br />
ViewData["Message"] = ex.Message;<br />
return RedirectToAction(&#8220;Index&#8221;, &#8220;Home&#8221;);<br />
}<br />
}<br />
else<br />
{<br />
ViewData["Message"] = &#8220;Invalid identifier&#8221;;<br />
return RedirectToAction(&#8220;Index&#8221;, &#8220;Home&#8221;);<br />
}<br />
}<br />
else<br />
{<br />
var res = response.GetUntrustedExtension&lt;ClaimsResponse&gt;();<br />
//var res = response.GetExtension&lt;ClaimsResponse&gt;();<br />
// Stage 3: OpenID Provider sending assertion response<br />
switch (response.Status)<br />
{<br />
case AuthenticationStatus.Authenticated:<br />
var name = response.ClaimedIdentifier.ToString();</p>
<p>if (res != null &amp;&amp; res.Nickname != null)<br />
Session["FriendlyIdentifier"] = res.Nickname;<br />
else if(res!=null &amp;&amp; res.Email!=null)<br />
Session["FriendlyIdentifier"] = res.Email;<br />
else<br />
Session["FriendlyIdentifier"] = name;</p>
<p>//user setup<br />
using (LinksgridDataContext db = new LinksgridDataContext())<br />
{<br />
var userId = (from u in db.LGUsers<br />
where u.Name == name<br />
select u.Id).SingleOrDefault();<br />
if (userId &lt;= 0)<br />
{<br />
LGUser newUser = new LGUser();<br />
newUser.Name = name;</p>
<p>newUser.BirthDate = res.BirthDate.ToString();<br />
newUser.Country = res.Country;<br />
newUser.Email = res.Email;<br />
newUser.FullName = res.FullName;<br />
newUser.Gender = res.Gender==null?string.Empty:res.Gender.Value.ToString();<br />
newUser.Language = res.Language;<br />
newUser.Nickname = res.Nickname;<br />
newUser.PostalCode = res.PostalCode;<br />
newUser.TimeZone = res.TimeZone;</p>
<p>db.LGUsers.InsertOnSubmit(newUser);</p>
<p>db.SubmitChanges();</p>
<p>repoWidget.NewUserSetup(newUser.Id);</p>
<p>}</p>
<p>}</p>
<p>FormsAuthentication.SetAuthCookie(response.ClaimedIdentifier, false);<br />
return RedirectToAction(&#8220;Index&#8221;, &#8220;Home&#8221;);<br />
case AuthenticationStatus.Canceled:<br />
ViewData["Message"] = &#8220;Canceled at provider&#8221;;<br />
return RedirectToAction(&#8220;Index&#8221;, &#8220;Home&#8221;);<br />
case AuthenticationStatus.Failed:<br />
ViewData["Message"] = response.Exception.Message;<br />
return RedirectToAction(&#8220;Index&#8221;, &#8220;Home&#8221;);<br />
}<br />
}<br />
return new EmptyResult();<br />
}</p>
<p>}</p></blockquote>
<p>Here is the configuration required for OpenId response extension</p>
<blockquote><p>&lt;configSections&gt;</p>
<p>&lt;section name=&#8221;uri&#8221; type=&#8221;System.Configuration.UriSection, &amp;#xD;&amp;#xA;            System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&#8243;<br />
/&gt;<br />
&lt;section name=&#8221;dotNetOpenAuth&#8221; type=&#8221;DotNetOpenAuth.Configuration.DotNetOpenAuthSection&#8221;<br />
requirePermission=&#8221;false&#8221; allowLocation=&#8221;true&#8221;/&gt;<br />
&lt;/configSections&gt;<br />
&lt;uri&gt;<br />
&lt;idn enabled=&#8221;All&#8221;/&gt;<br />
&lt;iriParsing enabled=&#8221;true&#8221;/&gt;<br />
&lt;/uri&gt;<br />
&lt;dotNetOpenAuth&gt;<br />
&lt;openid maxAuthenticationTime=&#8221;0:05&#8243;&gt;<br />
&lt;relyingParty&gt;<br />
&lt;security<br />
requireSsl=&#8221;false&#8221;<br />
minimumRequiredOpenIdVersion=&#8221;V10&#8243;<br />
minimumHashBitLength=&#8221;160&#8243;<br />
maximumHashBitLength=&#8221;256&#8243;<br />
requireDirectedIdentity=&#8221;false&#8221;<br />
requireAssociation=&#8221;false&#8221;<br />
rejectUnsolicitedAssertions=&#8221;false&#8221;<br />
rejectDelegatingIdentifiers=&#8221;false&#8221;<br />
ignoreUnsignedExtensions=&#8221;false&#8221;<br />
privateSecretMaximumAge=&#8221;07:00:00&#8243; /&gt;<br />
&lt;behaviors&gt;<br />
&lt;add type=&#8221;DotNetOpenAuth.OpenId.Behaviors.AXFetchAsSregTransform, DotNetOpenAuth&#8221; /&gt;<br />
&lt;/behaviors&gt;<br />
&lt;/relyingParty&gt;<br />
&lt;/openid&gt;<br />
&lt;messaging&gt;<br />
&lt;untrustedWebRequest&gt;<br />
&lt;whitelistHosts&gt;<br />
&lt;!&#8211; since this is a sample, and will often be used with localhost &#8211;&gt;<br />
&lt;add name=&#8221;localhost&#8221; /&gt;<br />
&lt;/whitelistHosts&gt;<br />
&lt;/untrustedWebRequest&gt;<br />
&lt;/messaging&gt;<br />
&lt;/dotNetOpenAuth&gt;</p></blockquote>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:33px;width:1px;height:1px;">http://code.google.com/p/dotnetopenid/</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lakkakula.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lakkakula.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lakkakula.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lakkakula.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lakkakula.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lakkakula.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lakkakula.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lakkakula.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lakkakula.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lakkakula.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lakkakula.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lakkakula.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lakkakula.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lakkakula.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=136&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://lakkakula.wordpress.com/2009/09/09/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-4/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e009131391b3e9faa77041bf74e2d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Venkata Uma lakkakula</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/09/lg-guest.png" medium="image">
			<media:title type="html">lg-guest</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/09/lg-auth.png" medium="image">
			<media:title type="html">lg-auth</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/09/lg-flow.png" medium="image">
			<media:title type="html">lg-flow</media:title>
		</media:content>
	</item>
		<item>
		<title>Developing Web 2.0 Portal using Asp.Net MVC, Microsoft Ajax Client Templates and jQuery with drag and drop widget personalization – Part 3</title>
		<link>http://lakkakula.wordpress.com/2009/07/27/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-3/</link>
		<comments>http://lakkakula.wordpress.com/2009/07/27/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-3/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 01:33:45 +0000</pubDate>
		<dc:creator>Venkata Uma lakkakula</dc:creator>
				<category><![CDATA[Ajax Client Templates]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Asp.Net MVC]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://lakkakula.wordpress.com/?p=108</guid>
		<description><![CDATA[In this series: 1. Introduction 2. Part 1 – Portal Core Functionality 3. Part 2 – Drag and Drop Widget Personalization 4. Part 3 – Building Widget Gallery 5. Part 4 – Introduce Tabs and Users 6. Part 5 – Enhancements and Conclusion Working portal at: http://aspspider.info/lakkakula/local.aspx In this post we will see how to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=108&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><span style="text-decoration:underline;">In this series:</span></strong><br />
1. <a href="http://lakkakula.wordpress.com/2009/06/15/web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization/" target="_self">Introduction<br />
</a>2. <a href="http://lakkakula.wordpress.com/2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/" target="_self">Part 1 – Portal Core Functionality</a><br />
3. <a href="http://lakkakula.wordpress.com/2009/06/26/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%E2%80%93-part-2/" target="_blank">Part 2 – Drag and Drop Widget Personalization</a><br />
4. <a href="http://lakkakula.wordpress.com/2009/07/27/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-3/?preview=true&amp;preview_id=108&amp;preview_nonce=03be6d8afb" target="_blank">Part 3 – Building Widget Gallery</a><br />
5. <a href="http://wp.me/pyiXr-2c" target="_blank">Part 4 – Introduce Tabs and Users</a><br />
6. <a href="http://wp.me/pyiXr-2t" target="_blank">Part 5 – Enhancements and Conclusion</a></p>
<p>Working portal at: <a href="http://aspspider.info/lakkakula/local.aspx" target="_blank">http://aspspider.info/lakkakula/local.aspx</a></p>
<p>In this post we will see how to render widget gallery and touch a little bit on CSS. CSS has limited set of keywords on which almost all web pages on the internet are being rendered. As a web programmer every body should spend some to time learning and understanding CSS.</p>
<p>At the beginning of my career I worked as a Desktop Publishing Designer for a short while (Don’t ask me why).  What I use to do is; to take a well designed magazine and try to re-produce a page with same results using PageMaker and Photoshop. After repetitive reworks I started to understand the original designer’s intent and how to design good pages for magazines. Finally I have applied the knowledge I’ve gained to my real work on web development for designing elegant web pages.</p>
<p>Widget gallery is straight forward to implement. Just get the list of (n) widgets per page and render them on the top section of the page, like:</p>
<p><img class="aligncenter size-full wp-image-110" title="wiz-gal" src="http://lakkakula.files.wordpress.com/2009/07/wiz-gal.png" alt="wiz-gal" width="1003" height="300" /></p>
<p>We would do this by reusing a client template:</p>
<blockquote>
<div><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;</span></span></span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">id</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;wizGallery&#8221;&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;left-nav&#8221;&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">input</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">type</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;text&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">value</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;Search for widgets&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">style</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;</span></span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">width</span></span><span style="font-size:x-small;">: </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">150px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&#8220;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">/&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">button</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;">Go</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">button</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;"><br />
</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">ul</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;selected&#8221;&gt;&lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">href</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;#&#8221;&gt;</span></span><span style="font-size:x-small;">Widget Gallery</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;"><br />
</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;&lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">href</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;#&#8221;&gt;</span></span><span style="font-size:x-small;">Cool Widgets</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;"><br />
</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;&lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">href</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;#&#8221;&gt;</span></span><span style="font-size:x-small;">New Feed Widget</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;"><br />
</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">ul</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;"><br />
</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;wiz-lib&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">style</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;</span></span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">left</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&#8220;&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">href</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;#&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;wiz-close&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;">X</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">h4</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">style</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;</span></span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">margin-left</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px&#8221;&gt;</span></span><span style="font-size:x-small;">Widget Gallery</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">h4</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">href</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;#&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;prev&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">title</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;Previous Page&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">onclick</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;javascript:getGallery(&#8216;prev&#8217;);&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;">&lt;</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">style</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;</span></span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">left</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">margin-right</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">5px</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">width</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">690px</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">overflow</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">hidden</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&#8220;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">sys</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">:</span></span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">attach</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;dataview&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">dataview</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">:</span></span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">data</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;{{gallery}}&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;sys-template&#8221;&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;wiz-holder&#8221;&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">img</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">code</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">:</span></span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">if</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;icon!=&#8221;&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">sys</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">:</span></span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">src</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;{{&#8216;../../Content/images/&#8217; + icon}}&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">/&gt;&lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">br</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">/&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">span</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;">{{name}}</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">span</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;&lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">br</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">/&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">href</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;#&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;link-button&#8221;&gt;</span></span><span style="font-size:x-small;">Add</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">href</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;#&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;link-button&#8221;&gt;</span></span><span style="font-size:x-small;">Preview</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">href</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;#&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">class</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;next&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">title</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;Next Page&#8221;</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">onclick</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">=&#8221;javascript:getGallery(&#8216;next&#8217;);&#8221;&gt;</span></span><span style="font-size:x-small;">&gt;</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;<br />
</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> &lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;"> </span></span></div>
<div><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&lt;/</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">div</span></span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">&gt;</span></span></div>
</blockquote>
<p>Here is the CSS for Widget Gallery:</p>
<blockquote><p><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">#wizGallery</span></span></span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">border-bottom</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">1px</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">solid</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#ccc</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;"> border-top</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">1px</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">solid</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#ccc</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;"> background-color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#000</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">display</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">block</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;"> padding</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">0px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;"> width</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">1000px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;"> height</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">150px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;"> color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#fff</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;"> display</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">none</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;"> float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">left</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;">}</span><br />
<span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.left-nav</span></span></span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">padding</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">width</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">200px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">height</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">130px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">background-color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#2E2E2E</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">left</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">}<br />
.left-nav </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">ul</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">line-height</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">30px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">list-style-position</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">inside</span></span><span style="font-size:x-small;">;}<br />
</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.left-nav </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li.selected</span></span><span style="font-size:x-small;"> {</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">background-color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#424242</span></span><span style="font-size:x-small;">;}<br />
</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.left-nav </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li.selected</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">font-size</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">14px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">font-weight</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">bold</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">text-decoration</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">none</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#fff</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"> }<br />
.left-nav </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">font-size</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">14px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">font-weight</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">bold</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">text-decoration</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">none</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"> }<br />
.left-nav </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a:visited</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"> }<br />
</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.left-nav </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a.selected:visited</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"> }<br />
.page-options</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">list-style</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">none</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">width</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">265px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"> }<br />
.page-options </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;"> {</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">left</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">padding</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">0px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">margin</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">0px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"> }<br />
.page-options </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a</span></span><span style="font-size:x-small;">, </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.page-options</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a:visited</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#000</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">text-decoration</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">none</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">padding</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">2px</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">2px</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">margin-right</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">15px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">border</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">1px</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">solid</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#fff</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">background-color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#ccc</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"> }<br />
.page-options </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a.selected</span></span><span style="font-size:x-small;">, </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.page-options</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">li</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">a:hover</span></span><span style="font-size:x-small;"> {</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#fff</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">background-color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#666</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"> }<br />
.wiz-lib</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">width</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">775px</span></span><span style="font-size:x-small;">}</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><br />
.wiz-lib </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.wiz-close</span></span><span style="font-size:x-small;"> {</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">right</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">Red</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">text-decoration</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">none</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">padding</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">5px</span></span><span style="font-size:x-small;">;}</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><br />
.wiz-lib </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.prev</span></span><span style="font-size:x-small;"> {</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">left</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">text-decoration</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">none</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">padding</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">38px</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">margin-left</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">margin-right</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">background-color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#2e2e2e</span></span><span style="font-size:x-small;">}</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><br />
.wiz-lib </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.next</span></span><span style="font-size:x-small;"> {</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">left</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">text-decoration</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">none</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">padding</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">38px</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">background-color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#2e2e2e</span></span><span style="font-size:x-small;">}</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><br />
</span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.wiz-lib </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.wiz-holder</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">left</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">display</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">block</span></span><span style="font-size:x-small;">;</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">background-color</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">#424242</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">padding</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">5px</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">margin-right</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">10px</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">width</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">75px</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;">}</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><br />
.wiz-lib </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.wiz-holder</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">img</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">margin-left</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">auto</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">margin-right</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">auto</span></span><span style="font-size:x-small;">; </span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">float</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">none</span></span><span style="font-size:x-small;">;}</span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;"><br />
.wiz-lib </span></span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">.wiz-holder</span></span><span style="font-size:x-small;"> </span><span style="font-size:x-small;color:#a31515;"><span style="font-size:x-small;color:#a31515;">span</span></span><span style="font-size:x-small;">{</span><span style="font-size:x-small;color:#ff0000;"><span style="font-size:x-small;color:#ff0000;">overflow</span></span><span style="font-size:x-small;">:</span><span style="font-size:x-small;color:#0000ff;"><span style="font-size:x-small;color:#0000ff;">hidden</span></span><span style="font-size:x-small;">;}</span></p></blockquote>
<div>Server Code:</div>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;">
<blockquote>
<p style="margin:0;"><span style="color:#2b91af;"> 1</span> <span style="color:blue;">public</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">LocalController</span> : <span style="color:#2b91af;">Controller</span></p>
<p style="margin:0;"><span style="color:#2b91af;"> 2</span> {</p>
<p style="margin:0;"><span style="color:#2b91af;"> 3</span> <span style="color:#2b91af;">IWidget</span> repoWidget;</p>
<p style="margin:0;"><span style="color:#2b91af;"> 4</span> <span style="color:blue;">public</span> <span style="color:#2b91af;">JsonResult</span> WidgetGallery(<span style="color:blue;">int</span> page)</p>
<p style="margin:0;"><span style="color:#2b91af;"> 5</span> {</p>
<p style="margin:0;"><span style="color:#2b91af;"> 6</span> <span style="color:blue;">var</span> wiz = repoWidget.WidgetGallery(page);</p>
<p style="margin:0;"><span style="color:#2b91af;"> 7</span> <span style="color:blue;">return</span> Json(wiz);</p>
<p style="margin:0;"><span style="color:#2b91af;"> 8</span> }</p>
<p style="margin:0;"><span style="color:#2b91af;"> 9</span> }</p>
</blockquote>
</div>
<p>repository method:</p>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;">
<blockquote>
<p style="margin:0;"><span style="color:#2b91af;"> 1</span> <span style="color:blue;">public</span> <span style="color:blue;">object</span> WidgetGallery(<span style="color:blue;">int</span> page)</p>
<p style="margin:0;"><span style="color:#2b91af;"> 2</span> {</p>
<p style="margin:0;"><span style="color:#2b91af;"> 3</span> <span style="color:blue;">return</span> (<span style="color:blue;">from</span> wizBase <span style="color:blue;">in</span> db.WidgetBases</p>
<p style="margin:0;"><span style="color:#2b91af;"> 4</span> <span style="color:blue;">select</span> <span style="color:blue;">new</span> {</p>
<p style="margin:0;"><span style="color:#2b91af;"> 5</span> id = wizBase.Id,</p>
<p style="margin:0;"><span style="color:#2b91af;"> 6</span> name = wizBase.Name,</p>
<p style="margin:0;"><span style="color:#2b91af;"> 7</span> icon = wizBase.Icon</p>
<p style="margin:0;"><span style="color:#2b91af;"> 8</span> }).Skip((page-1) * 7).Take(7).ToList();</p>
<p style="margin:0;"><span style="color:#2b91af;"> 9</span> }</p>
<p style="margin:0;">
</blockquote>
<p style="margin:0;">
<p style="margin:0;">
</div>
<div>Client Code:</div>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;">
<blockquote>
<p style="margin:0;"><span style="color:#2b91af;"> 1</span> &lt;script language=<span style="color:#a31515;">&#8220;javascript&#8221;</span> type=<span style="color:#a31515;">&#8220;text/javascript&#8221;</span>&gt;</p>
<p style="margin:0;"><span style="color:#2b91af;"> 2</span> var gallery = [];</p>
<p style="margin:0;"><span style="color:#2b91af;"> 3</span> var gallery_page = 1;</p>
<p style="margin:0;"><span style="color:#2b91af;"> 4</span></p>
<p style="margin:0;"><span style="color:#2b91af;"> 5</span> $(function() {</p>
<p style="margin:0;"><span style="color:#2b91af;"> 6</span> getGallery(<span style="color:#a31515;">&#8216;first&#8217;</span>); <span style="color:green;">//get first page</span></p>
<p style="margin:0;"><span style="color:#2b91af;"> 7</span> });</p>
<p style="margin:0;"><span style="color:#2b91af;"> 8</span></p>
<p style="margin:0;"><span style="color:#2b91af;"> 9</span> function getGallery(way) {</p>
<p style="margin:0;"><span style="color:#2b91af;"> 10</span> <span style="color:blue;">if</span> (way == <span style="color:#a31515;">&#8216;next&#8217;</span>)</p>
<p style="margin:0;"><span style="color:#2b91af;"> 11</span> gallery_page = gallery_page + 1;</p>
<p style="margin:0;"><span style="color:#2b91af;"> 12</span> <span style="color:blue;">else</span></p>
<p style="margin:0;"><span style="color:#2b91af;"> 13</span> gallery_page = gallery_page &#8211; 1;</p>
<p style="margin:0;"><span style="color:#2b91af;"> 14</span></p>
<p style="margin:0;"><span style="color:#2b91af;"> 15</span> <span style="color:blue;">if</span> (gallery_page == 0) gallery_page = 1;</p>
<p style="margin:0;"><span style="color:#2b91af;"> 16</span></p>
<p style="margin:0;"><span style="color:#2b91af;"> 17</span> $.getJSON(<span style="color:#a31515;">&#8216;/Local/WidgetGallery?page=&#8217;</span> + gallery_page, <span style="color:blue;">null</span>, function(json) {</p>
<p style="margin:0;"><span style="color:#2b91af;"> 18</span> Sys.Observer.clear(gallery);</p>
<p style="margin:0;"><span style="color:#2b91af;"> 19</span> Sys.Observer.addRange(gallery, json);</p>
<p style="margin:0;"><span style="color:#2b91af;"> 20</span> });</p>
<p style="margin:0;"><span style="color:#2b91af;"> 21</span> };</p>
<p style="margin:0;"><span style="color:#2b91af;"> 22</span> &lt;/script&gt;</p>
</blockquote>
<p style="margin:0;">
<p style="margin:0;">
<div>When page loads <em><strong>getGallery(<span style="color:#a31515;">&#8216;first&#8217;</span>); </strong></em><span style="color:green;"><em><strong>//get first page</strong></em> </span>javascript method makes an ajax call to Local controller&#8217;s WidgetGallery action. This loads first page JSON to gallery[] array.</div>
<p style="margin:0;">
<p style="margin:0;">Only important thing to notice here is the following lines:</p>
<p style="margin:0;">
<p style="margin:0;">
<blockquote>
<p style="margin:0;"><span style="color:#2b91af;"> 18</span> Sys.Observer.clear(gallery);</p>
<p style="margin:0;"><span style="color:#2b91af;"> 19</span> Sys.Observer.addRange(gallery, json);</p>
<p style="margin:0;">
</blockquote>
<p style="margin:0;">
<p style="margin:0;">
<p style="margin:0;">When previous or next page is requested from controller; line 18 clears existing values in gallery[] array and line 19 re-fills with new values. This actions are really magical, because Sys.Observer automatically re-binds the changes in gallery[] to our template. That is all we have to do, really!</p>
<p style="margin:0;">
<p style="margin:0;">Ain&#8217;t that cool? <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>
<p><a rev="vote-for" href="http://dotnetshoutout.com/Developing-Web-20-Portal-using-AspNet-MVC-Microsoft-Ajax-Client-Templates-and-jQuery-with-drag-and-drop-widget-personalization-Part-3-Lakkakulas-Blog"><img src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Flakkakula.wordpress.com%2F2009%2F07%2F27%2Fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%25e2%2580%2593-part-3%2F%3Fpreview%3Dtrue%26preview_id%3D108%26preview_nonce%3D03be6d8afb" alt="Shout it" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lakkakula.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lakkakula.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lakkakula.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lakkakula.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lakkakula.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lakkakula.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lakkakula.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lakkakula.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lakkakula.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lakkakula.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lakkakula.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lakkakula.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lakkakula.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lakkakula.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=108&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://lakkakula.wordpress.com/2009/07/27/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-3/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e009131391b3e9faa77041bf74e2d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Venkata Uma lakkakula</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/07/wiz-gal.png" medium="image">
			<media:title type="html">wiz-gal</media:title>
		</media:content>

		<media:content url="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Flakkakula.wordpress.com%2F2009%2F07%2F27%2Fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%25e2%2580%2593-part-3%2F%3Fpreview%3Dtrue%26preview_id%3D108%26preview_nonce%3D03be6d8afb" medium="image">
			<media:title type="html">Shout it</media:title>
		</media:content>
	</item>
		<item>
		<title>Developing Web 2.0 Portal using Asp.Net MVC, Microsoft Ajax Client Templates and jQuery with drag and drop widget personalization – Part 2</title>
		<link>http://lakkakula.wordpress.com/2009/06/26/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-2/</link>
		<comments>http://lakkakula.wordpress.com/2009/06/26/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-2/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 22:46:58 +0000</pubDate>
		<dc:creator>Venkata Uma lakkakula</dc:creator>
				<category><![CDATA[Ajax Client Templates]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Asp.Net MVC]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://lakkakula.wordpress.com/?p=62</guid>
		<description><![CDATA[In this series: 1. Introduction 2. Part 1 – Portal Core Functionality 3. Part 2 – Drag and Drop Widget Personalization 4. Part 3 – Building Widget Gallery 5. Part 4 – Introduce Tabs and Users 6. Part 5 – Enhancements and Conclusion Note: Check out the working portal at http://aspspider.info/lakkakula/local.aspx. In my previous post [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=62&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><span style="text-decoration:underline;">In this series:</span></strong><br />
1. <a href="http://lakkakula.wordpress.com/2009/06/15/web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization/" target="_self">Introduction<br />
</a>2. <a href="http://lakkakula.wordpress.com/2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/" target="_self">Part 1 – Portal Core Functionality</a><br />
3. <a href="http://lakkakula.wordpress.com/2009/06/26/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%E2%80%93-part-2/" target="_blank">Part 2 – Drag and Drop Widget Personalization</a><br />
4. <a href="http://lakkakula.wordpress.com/2009/07/27/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%E2%80%93-part-3/" target="_blank">Part 3 – Building Widget Gallery</a><br />
5. <a href="http://wp.me/pyiXr-2c" target="_blank">Part 4 – Introduce Tabs and Users</a><br />
6. <a href="http://wp.me/pyiXr-2t" target="_blank">Part 5 – Enhancements and Conclusion</a></p>
<p>Note: Check out the working portal at<a href="http://aspspider.info/lakkakula/local.aspx" target="_blank"> http://aspspider.info/lakkakula/local.aspx.</a></p>
<p>In my <a href="http://lakkakula.wordpress.com/2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/" target="_blank">previous post</a> I have explained how to design and re-use a widget-client-template. Also I have shown you, how to load the widget-body through declarative way of using jQuery and Microsoft Ajax. The advantage of using jQuery load method (GET) and asp.net MVC call over updatepanel/web forms is that, jQuery load method by-default uses GET method and asp.net MVC does not have viewstate, page load lifecycle and server control reconstruction overheads.</p>
<p>Moreover we are returning only the required html to render the widget body through a partial view unlike asp.net page. In asp.net, when you use updatepanel, even though it makes an async call to web server, entire page is posted back and all the response is sent to client and finally only the portion inside the updatepanel is re-rendered.</p>
<p>So our approach through jQuery load and asp.net MVC would definitely be faster and cleaner.</p>
<p>In this post we will examine how to provide drag and drop functionality to widgets. Drag and drop gives web pages dynamic behavior. Drag and drop is basically achieved through mousedown, mousemove and mouseup JavaScript events. There are several articles and libraries available out there on the web. You can read <a href="http://www.webreference.com/programming/javascript/mk/column2/" target="_blank">detailed explanation</a> about drag and drop using plain-old javascript by Mark Kahn. Or just <a href="http://www.bing.com/search?q=javascript+drag+and+drop&amp;form=QBLH" target="_blank">bing-it</a> for Javascript Drag and Drop. Here is a list of some fo the javascript libraries: <a title="http://jquery.com/" href="http://jquery.com/">jquery</a>, <a title="http://www.prototypejs.org/" href="http://www.prototypejs.org/">prototypejs</a>, <a title="http://www.dojotoolkit.org/" href="http://www.dojotoolkit.org/">dojotoolkit</a>, <a title="http://mootools.net/" href="http://mootools.net/">mootools</a>, <a title="http://qooxdoo.org/" href="http://qooxdoo.org/">qooxdoo</a>, <a title="http://developer.yahoo.com/yui/" href="http://developer.yahoo.com/yui/">Yahoo! User Interface Library (YUI)</a>, <a title="http://extjs.com/" href="http://extjs.com/">extjs</a>, <a title="http://www.uize.com/" href="http://www.uize.com/">UIZE JavaScript Framework</a>, <a title="http://openrico.org/" href="http://openrico.org/">openrico</a>,<a title="http://mochikit.com/" href="http://mochikit.com/">mochikit</a>, <a title="http://www.sproutcore.com" href="http://www.sproutcore.com/">SproutCore</a>, <a title="http://www.cinsoft.net/mylib.html" href="http://www.cinsoft.net/mylib.html">My Library</a>, <a title="http://javascriptian.com/" href="http://javascriptian.com/">javascriptian&#8217;s ajax library</a></p>
<p>jQuery’s sortable found in UI library makes our life easier. Through this UI plug-in we can attach drag and drop to selected HTML element just by calling</p>
<blockquote>
<pre>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;"><span style="color:#2b91af;">    1</span>         $(<span style="color:#a31515;">"selector"</span>).sortable();</div>
</pre>
</blockquote>
<p>When attached, sortable can raise 12 events: start, sort, change, beforeStop, stop, update, receive, remove, over, out, activate, deactivate. Among these; we are interested only in two events: start and stop.</p>
<p>As we have arranged widgets (div tags) in 3 columns. We will be hooking sortable to each column and specify that items to drag are Widgets. Let us see how to do that just right here:</p>
<blockquote>
<pre>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;"><span style="color:#2b91af;">    1</span>         $(<span style="color:#a31515;">'.col'</span>).each(function() {
<span style="color:#2b91af;">    2</span>             attachDragDrop($(<span style="color:blue;">this</span>))
<span style="color:#2b91af;">    3</span>         });</div>
</pre>
</blockquote>
<p>Above code calls attachDragDrop($(this)) for each column in our page</p>
<blockquote>
<pre>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;"><span style="color:#2b91af;">    1</span>         function attachDragDrop(col) {
<span style="color:#2b91af;">    2</span>             <span style="color:blue;">var</span> all-cols = $(<span style="color:#a31515;">'.col'</span>);
<span style="color:#2b91af;">    3</span>             $(<span style="color:#a31515;">'.col'</span>).sortable({
<span style="color:#2b91af;">    4</span>                     connectWith: all-cols,
<span style="color:#2b91af;">    5</span>                     items: <span style="color:#a31515;">'.widget:not(.ad-holder)'</span>,
<span style="color:#2b91af;">    6</span>                     handle: <span style="color:#a31515;">'h2'</span>,
<span style="color:#2b91af;">    7</span>                     helper: <span style="color:#a31515;">'original'</span>,
<span style="color:#2b91af;">    8</span>                     placeholder: <span style="color:#a31515;">'placeholder'</span>,
<span style="color:#2b91af;">    9</span>             });
<span style="color:#2b91af;">   10</span>         }</div>
</pre>
</blockquote>
<p>Then each column being hooked-up to sortable; is connected with all other columns;  in this line</p>
<blockquote>
<pre>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;"><span style="color:#2b91af;">    4</span> connectWith: all-cols,</div>
</pre>
</blockquote>
<p>Then we specify “items to drag” are widgets in this line</p>
<blockquote>
<pre>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;"><span style="color:#2b91af;">    5</span> items: <span style="color:#a31515;">'.widget:not(.ad-holder)'</span></div>
</pre>
</blockquote>
<p>One interesting thing to note here is :not(.ad-holder). This specifies that we want to enable dragging for all widgets but not for ad-holder div. Who calls it a web portal without an ad <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  but the idea here is to demonstrate how to make some of the widgets non-dragable.</p>
<p>As you could guess &#8220;handle&#8221; specifies the handle for widget. i.e., the area where user can click and start dragging on a widget. Helper specifies the element to be used while dragging. Helper accepts two values, original and clone (by default it is original). We will go with original so that we can use this element in “start” event. Finally placeholder specifies a class name which defines how to display the place-holder area when user is moving the widget.</p>
<p>Time to talk about sortable events: event “start” is raised as soon as user click’s on the handle element and starts dragging. We will use this event to capture original element and re-set its width and also to set the height of placeholder element. As soon as user starts moving widget, sortable changes the position of the widget’s div element on screen thus by changing its width to fill out entire screen.</p>
<p><a href="http://lakkakula.files.wordpress.com/2009/06/image001.png"><img class="aligncenter size-full wp-image-83" title="image001" src="http://lakkakula.files.wordpress.com/2009/06/image001.png" alt="image001" width="752" height="481" /></a></p>
<p>Start event code:</p>
<blockquote>
<pre>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;"><span style="color:#2b91af;">    1</span>         start: function(e, ui) {
<span style="color:#2b91af;">    2</span>             ui.helper.css(<span style="color:#a31515;">"width"</span>, ui.item.parent().outerWidth());
<span style="color:#2b91af;">    3</span>             ui.placeholder.height(ui.item.height());
<span style="color:#2b91af;">    4</span>         },</div>
</pre>
</blockquote>
<p>To avoid this we will capture helper element and re-set its width to original. First line in above code does exactly same. Second line specifies the height of the placeholder. Now we have nice moving widget</p>
<p><a href="http://lakkakula.files.wordpress.com/2009/06/image003.png"><img class="aligncenter size-full wp-image-84" title="image003" src="http://lakkakula.files.wordpress.com/2009/06/image003.png" alt="image003" width="370" height="484" /></a></p>
<p>Now that we have width problem fixed, let us move to “stop” event. We will use “stop” event to calculate new widget position, get the column where the widget is dropped and widget&#8217;s id for database update.</p>
<p>Stop event code:</p>
<blockquote>
<pre>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;"><span style="color:#2b91af;">    1</span>         stop: function(e, ui) {
<span style="color:#2b91af;">    2</span>             ui.item.css({ <span style="color:#a31515;">'width'</span>: <span style="color:#a31515;">'auto'</span> }); <span style="color:green;">// reset widget width</span>
<span style="color:#2b91af;">    3</span>             <span style="color:blue;">var</span> position = ui.item.parent().children().index(ui.item); <span style="color:green;">// get position of the widget</span>
<span style="color:#2b91af;">    4</span>             <span style="color:blue;">var</span> col_id = ui.item.parents(<span style="color:#a31515;">'.col:first'</span>).attr(<span style="color:#a31515;">'id'</span>); <span style="color:green;">// get the column element where the widget is placed</span>
<span style="color:#2b91af;">    5</span>             <span style="color:blue;">var</span> widget_id = ui.item.attr(<span style="color:#a31515;">'id'</span>); <span style="color:green;">//get widget id</span>
<span style="color:#2b91af;">    6</span>             updateWidgetLocation(widget_id, col_id, position); <span style="color:green;">//interface to update widget location on server</span>
<span style="color:#2b91af;">    7</span>         },

<span style="color:#2b91af;">    1</span>         function updateWidgetLocation (widgetId, colId, position) {
<span style="color:#2b91af;">    2</span>             <span style="color:green;">//call to widget controller -&gt; post method to update widget location</span>
<span style="color:#2b91af;">    3</span>         };</div>
</pre>
</blockquote>
<p>Above code is executed as soon as the user drops the widget in to new location in a column. What we do here is to get widget position, column-id and widget-id. Finally we make an ajax post call to widget controller to update the new widget location in the server.</p>
<p>Other widget status change events are, widget minimize, widget maximize, widget removed. These events can be directly hooked to the controls on the widget header and call appropriate action method inside widget controller to update the status in the server.</p>
<p><a href="http://lakkakula.files.wordpress.com/2009/06/wiz_controls.png"><img class="aligncenter size-full wp-image-102" title="wiz_controls" src="http://lakkakula.files.wordpress.com/2009/06/wiz_controls.png" alt="wiz_controls" width="339" height="68" /></a></p>
<blockquote>
<pre>
<div style="font-family:Courier New;font-size:10pt;color:black;background:white;"><span style="color:#2b91af;">    1</span>         function removeWidget (ctrl) {
<span style="color:#2b91af;">    2</span>             <span style="color:blue;">if</span> (!confirm(<span style="color:#a31515;">'Are you sure, you really want to remove this widget?'</span>)) <span style="color:blue;">return</span>;
<span style="color:#2b91af;">    3</span>             <span style="color:blue;">var</span> widget = $(ctrl).parents(<span style="color:#a31515;">'.widget:first'</span>);
<span style="color:#2b91af;">    4</span>             widget.slideUp(<span style="color:#a31515;">'fast'</span>); <span style="color:green;">//animation before removing widget from page.</span>
<span style="color:#2b91af;">    5</span>             <span style="color:blue;">var</span> remove = function() { deleteWidget(widget) };
<span style="color:#2b91af;">    6</span>             setTimeout(remove, 500);
<span style="color:#2b91af;">    7</span>             <span style="color:green;">//call to widget controller -&gt; post method to update widget status</span>
<span style="color:#2b91af;">    8</span>         };
<span style="color:#2b91af;">    9</span>
<span style="color:#2b91af;">   10</span>         function deleteWidget(widget) {
<span style="color:#2b91af;">   11</span>             $(widget).remove();
<span style="color:#2b91af;">   12</span>         };
<span style="color:#2b91af;">   13</span>
<span style="color:#2b91af;">   14</span>         <span style="color:blue;">this</span>.toggleWidget = function(ctrl) {
<span style="color:#2b91af;">   15</span>             <span style="color:blue;">var</span> widget = $(ctrl).parents(<span style="color:#a31515;">'.widget:first'</span>);
<span style="color:#2b91af;">   16</span>             widget.children(<span style="color:#a31515;">'.widget-body:first'</span>).slideTogle(<span style="color:#a31515;">'fast'</span>);
<span style="color:#2b91af;">   17</span>             <span style="color:green;">//call to widget controller -&gt; post method to update widget status</span>
<span style="color:#2b91af;">   18</span>         };</div>
</pre>
</blockquote>
<p>In this post we have seen how to provide drag and drop functionality to widgets and interfaces to save widget status on server. In my next post we will examine how to build Widget Gallery. Trust me, its going to be interesting as I will cover some CSS stuff.<br />
<a rev="vote-for" href="http://dotnetshoutout.com/Developing-Web-20-Portal-using-AspNet-MVC-Microsoft-Ajax-Client-Templates-and-jQuery-with-drag-and-drop-widget-personalization-Part-2-Lakkakulas-Blog"><img src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Flakkakula.wordpress.com%2F2009%2F06%2F26%2Fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%25E2%2580%2593-part-2%2F" alt="Shout it" /></a> <a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2flakkakula.wordpress.com%2f2009%2f06%2f26%2fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%25E2%2580%2593-part-2%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2flakkakula.wordpress.com%2f2009%2f06%2f26%2fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%25E2%2580%2593-part-2%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:2736px;width:1px;height:1px;"><img src="/DOCUME%7E1/vl67212/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /></div>
<p><a href="http://www.stumbleupon.com/submit?url=http://lakkakula.wordpress.com%26title%3DThe%2BArticle%2BTitle"> <img src="http://cdn.stumble-upon.com/images/24x24_thumb.gif" border="0" alt="" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lakkakula.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lakkakula.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lakkakula.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lakkakula.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lakkakula.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lakkakula.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lakkakula.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lakkakula.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lakkakula.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lakkakula.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lakkakula.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lakkakula.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lakkakula.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lakkakula.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=62&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://lakkakula.wordpress.com/2009/06/26/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%e2%80%93-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e009131391b3e9faa77041bf74e2d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Venkata Uma lakkakula</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/06/image001.png" medium="image">
			<media:title type="html">image001</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/06/image003.png" medium="image">
			<media:title type="html">image003</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/06/wiz_controls.png" medium="image">
			<media:title type="html">wiz_controls</media:title>
		</media:content>

		<media:content url="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Flakkakula.wordpress.com%2F2009%2F06%2F26%2Fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%25E2%2580%2593-part-2%2F" medium="image">
			<media:title type="html">Shout it</media:title>
		</media:content>

		<media:content url="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2flakkakula.wordpress.com%2f2009%2f06%2f26%2fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%25E2%2580%2593-part-2%2f" medium="image">
			<media:title type="html">kick it on DotNetKicks.com</media:title>
		</media:content>

		<media:content url="http://cdn.stumble-upon.com/images/24x24_thumb.gif" medium="image" />
	</item>
		<item>
		<title>Developing Web 2.0 Portal using Asp.Net MVC, Microsoft Ajax Client Templates and jQuery with drag and drop widget personalization &#8211; Part 1</title>
		<link>http://lakkakula.wordpress.com/2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/</link>
		<comments>http://lakkakula.wordpress.com/2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 18:35:52 +0000</pubDate>
		<dc:creator>Venkata Uma lakkakula</dc:creator>
				<category><![CDATA[Ajax Client Templates]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Asp.Net MVC]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://lakkakula.wordpress.com/?p=25</guid>
		<description><![CDATA[Note: Check out the working portal at http://aspspider.info/lakkakula/local.aspx. In this series: 1. Introduction 2. Part 1 &#8211; Portal Core Functionality 3. Part 2 &#8211; Drag and Drop Widget Personalization 4. Part 3 &#8211; Building Widget Gallery 5. Part 4 &#8211; Introduce Tabs and Users 6. Part 5 &#8211; Enhancements and Conclusion Where do we start? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=25&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Note: Check out the working portal at <a href="http://aspspider.info/lakkakula/local.aspx" target="_blank">http://aspspider.info/lakkakula/local.aspx</a>.</p>
<p><strong><span style="text-decoration:underline;">In this series:</span></strong><br />
1. <a href="http://lakkakula.wordpress.com/2009/06/15/web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization/" target="_self">Introduction<br />
</a>2. <a href="http://lakkakula.wordpress.com/2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/" target="_self">Part 1 &#8211; Portal Core Functionality</a><br />
3. <a href="http://lakkakula.wordpress.com/2009/06/26/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%E2%80%93-part-2/" target="_blank">Part 2 &#8211; Drag and Drop Widget Personalization</a><br />
4. <a href="http://lakkakula.wordpress.com/2009/07/27/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%E2%80%93-part-3/" target="_blank">Part 3 &#8211; Building Widget Gallery</a><br />
5. <a href="http://wp.me/pyiXr-2c" target="_blank">Part 4 &#8211; Introduce Tabs and Users</a><br />
6. <a href="http://wp.me/pyiXr-2t" target="_blank">Part 5 &#8211; Enhancements and Conclusion</a></p>
<p>Where do we start? Well, I prefer to start with database. Portal database-design itself is very simple. We need to have containers for Widgets (basic building blocks of the portal), Tabs (logical grouping of Widgets) and Users (so that we can assign Widgets to users through tabs). Below is a simple relational diagram between these entities.</p>
<p>Each Widget is derived from WidgetBase and is associated to Tab. Users will have access to one or more Tabs.</p>
<p><a href="http://lakkakula.files.wordpress.com/2009/06/linksgrid_db.png"><img class="aligncenter size-full wp-image-26" title="linksgrid_db" src="http://lakkakula.files.wordpress.com/2009/06/linksgrid_db.png" alt="linksgrid_db" width="493" height="491" /></a></p>
<p>This design is self explanatory, we will use WidgetBase table to store and display widget gallery something similar like this: (courtesy netvibes.com). We will implement this some time later</p>
<p><a href="http://lakkakula.files.wordpress.com/2009/06/wiz_list1.png"><img class="aligncenter size-full wp-image-28" title="wiz_list.png." src="http://lakkakula.files.wordpress.com/2009/06/wiz_list1.png" alt="wiz_list.png." width="522" height="139" /></a></p>
<p>Once we have the database ready, its time to build core functionality of the portal, which is “to display widgets from list of widgets on a web page”. Let us just do that right here. We will then introduce widget gallery, tabs and finally users.</p>
<p>This is what we will do here. First; get the list of widgets in JSON format to client, second; design a widget client template and finally bind JSON to widget client template.</p>
<p>Getting the list of widgets in JSON format to client:</p>
<ul>
<li>Client Code</li>
</ul>
<blockquote>
<pre>var widgets = [];
$(function() {
$.getJSON('Local/WidgetList', null, function(json) {
            Sys.Observer.addRange(widgets, json);
        });
});</pre>
</blockquote>
<p>When the page is loaded first time, above code makes a call to WidgetList action method inside<strong> </strong>Local controller. Once the call completes, the resulting JSON will be assigned to widgets[]array.</p>
<p style="padding-left:30px;">Below is the sample JSON returned to client</p>
<pre>{ id = 4, col = "col1", order = 1, domain = "http://yelp.com", title = "Local Reviews", minimize = false, showsetup = true, controller = "Reviews", action = "Index", footerlink = "footer-link" ... }
{ id = 5, col = "col1", order = 2, domain = "http://wikihow.com", title = "Wiki - How To", minimize = false, showsetup = true, controller = "Feed", action = "Index", footerlink = "footer-link" ... }
{ id = 6, col = "col1", order = 3, domain = "http://cnn.com", title = "CNN.com", minimize = false, showsetup = true, controller = "Feed", action = "Index", footerlink = "footer-link" ... }
{ id = 7, col = "col2", order = 1, domain = "http://yahooapis.com", title = "Weather", minimize = false, showsetup = true, controller = "Feed", action = "Index", footerlink = "footer-link" ... }
{ id = 11, col = "col2", order = 2, domain = "http://flickr.com", title = "Flickr", minimize = false, showsetup = true, controller = "Flickr", action = "Index", footerlink = "footer-link" ... }
{ id = 8, col = "col2", order = 3, domain = "http://bbc.co.uk", title = "BBC News", minimize = false, showsetup = true, controller = "Feed", action = "Index", footerlink = "footer-link" ... }
{ id = 10, col = "col3", order = 1, domain = "http://topix.com", title = "Topix", minimize = false, showsetup = true, controller = "Feed", action = "Index", footerlink = "footer-link" ... }
{ id = 9, col = "col3", order = 2, domain = "http://google.com", title = "Google News", minimize = false, showsetup = true, controller = "Feed", action = "Index", footerlink = "footer-link" ... }</pre>
<ul>
<li>Server Code</li>
</ul>
<pre style="padding-left:30px;">public class LocalController : Controller    {
        IWidget repoWidget;

        // Dependency Injection enabled constructors
        public LocalController() : this(new WidgetRepository()) { }
        public LocalController(IWidget repo) {
            repoWidget = repo;
        }

        public JsonResult WidgetList(){
            var wiz = repoWidget.WidgetList();
            return Json(wiz);
        }
}</pre>
<p>Only interesting thing to note here is that we are returning the results in JSON format as the action method WidgetList() is declared to return JsonResult.  The line</p>
<pre>var wiz = repoWidget.WidgetList();</pre>
<p>returns a list of widgets. And then next line</p>
<pre>return Json(wiz);</pre>
<p>converts the results to JSON format which then be sent to client.</p>
<p>Designing widget client template:<br />
This actually is a widget container template, original widget will be returned by server through an ajax call. This is explained below on how to do it through declarative jQuery.</p>
<pre><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-template"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="sys-template"&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">     &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">code</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">if</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="col==$element.id"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="{{'widget-' + id}}"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget"&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">          &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-header"&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">              &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-controls hide-controls"&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">                  &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">button</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-ctrl ctrl-setup"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">type</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="button"&gt;</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">button</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">                  &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">button</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-ctrl ctrl-refresh"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">type</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="button"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">onclick</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="{{'return $.ajaxUtil.navigate(this, \'widget-content\',\'' + controller + </span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">'/' +</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;"> action + '/' + id + '\');'}}"&gt;</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">button</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="font-size:x-small;">                  </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">button</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-ctrl ctrl-collapse"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">type</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="button"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">onclick</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="linksgrid.toggleWidget(this);"&gt;</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">button</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">                  &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">button</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-ctrl ctrl-close"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">type</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="button"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">onclick</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="linksgrid.removeWidget(this)"&gt;</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">button</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">              &lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;</span></span><span style="font-size:x-small;">
</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">              &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">a</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">sys</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">href</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="{{domain}}"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">target</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="_blank"&gt;&lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">img</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">sys</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">src</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="{{domain + '/favicon.ico'}}"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">style</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">height</span></span><span style="font-size:x-small;">:</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">16px</span></span><span style="font-size:x-small;">; </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">width</span></span><span style="font-size:x-small;">:</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">16px</span></span><span style="font-size:x-small;">; </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">padding-right</span></span><span style="font-size:x-small;">:</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">5px</span></span><span style="font-size:x-small;">; </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">vertical-align</span></span><span style="font-size:x-small;">:</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">middle</span></span><span style="font-size:x-small;">; </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">float</span></span><span style="font-size:x-small;">:</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">left</span></span><span style="font-size:x-small;">;</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">"</span></span><span style="font-size:x-small;"> </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">/&gt;&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">a</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
              &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">h2</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;</span></span><span style="font-size:x-small;">{{title}}</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">h2</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">              &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="wiz-head-sep"&gt;</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">          &lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">          &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-body"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="{{'widtet' + id + 'body'}}"&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">                &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="{{'widget-' + id + '-content'}}"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-content"</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">sys</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">attach</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="ajaxload"</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">ajaxload</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">url</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="{{'' + controller + </span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">'/' + </span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">action + '/' + id}}"&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">                       &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">style</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">text-align</span></span><span style="font-size:x-small;">: </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">center</span></span><span style="font-size:x-small;">; </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">padding</span></span><span style="font-size:x-small;">: </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">20px</span></span><span style="font-size:x-small;">; </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">margin</span></span><span style="font-size:x-small;">: </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">5px</span></span><span style="font-size:x-small;">;</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">"&gt;</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">img</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">src</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="/Content/images/loading.gif"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">alt</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="loading widget"</span></span><span style="font-size:x-small;"> </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">/&gt;&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">                &lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">          &lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">          &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="widget-footer"</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="{{'widget-' + id + '-footer'}}"&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">                 &lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">a</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">href</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">="#"&gt;</span></span><span style="font-size:x-small;">{{footerlink}}</span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">a</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">          &lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">     &lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;</span></span></pre>
<p>Widget Container:</p>
<p><a href="http://lakkakula.files.wordpress.com/2009/06/widget-container.png"><img class="aligncenter size-full wp-image-39" title="widget-container" src="http://lakkakula.files.wordpress.com/2009/06/widget-container.png" alt="widget-container" width="331" height="195" /></a></p>
<p>Points to note in above Client Template are</p>
<p>1. the line here &lt;<span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;{{&#8216;widget-&#8217; + id + &#8216;-content&#8217;}}&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;widget-content&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">sys</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">attach</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;ajaxload&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">ajaxload</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">url</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;{{&#8221; + controller + </span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&#8216;/&#8217; +</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;"> action + &#8216;/&#8217; + id}}&#8221;&gt; </span></span>is of special interest. This line of code is using declarative way of specifying jQuery <strong>load</strong> method. You can read about this on <a href="http://weblogs.manas.com.ar/bcardiff/2008/12/declarative-jquery-with-microsoft-ajax/" target="_blank">Brian J. Cardiff&#8217;s blog</a>. And also on <a href="http://weblogs.asp.net/bleroy/archive/2008/12/09/microsoft-ajax-client-templates-and-declarative-jquery.aspx" target="_blank">Bertrand Le Roy&#8217;s blog</a>. Bertrand is the brains behind Microsoft Ajax Client Templates, I suggest following his blog for up-to-date news.<br />
The idea here is to make an ajax (get) call to specified action in the specified controller with any query parameters. Once the call is made; the resulting html will be placed inside widget container.</p>
<p>Here is the declarative jQuery code for your reference:</p>
<blockquote><p><code>/*<br />
* jQuery Declarative plug-in 0.1 (3/12/2008)</code></p>
<p>*<br />
* Copyright (c) 2008<br />
*   Brian J. Cardiff &#8211; <a rel="nofollow" href="http://weblogs.manas.com.ar/bcardiff/">http://weblogs.manas.com.ar/bcardiff/</a><br />
*<br />
* Built upon<br />
* jQuery 1.2.6 (<a rel="nofollow" href="http://jquery.com/">http://jquery.com</a>)</p>
<p>* Microsoft Ajax (MicrosoftAjax.js)<br />
* Microsoft Ajax Templates (MicrosoftAjaxTemplates.js)<br />
*<br />
*/<br />
(function($) {</p>
<p>Type.registerNamespace(&#8220;jQueryDeclarative&#8221;);</p>
<p>var template = &#8220;jQueryDeclarative.{0} = function(element) {{ jQueryDeclarative.{0}.initializeBase(this, [element]); }}; jQueryDeclarative.{0}.prototype = {{ initialize: function() {{ jQueryDeclarative.{0}.callBaseMethod(this, &#8216;initialize&#8217;); jQuery(this.get_element()).{0}(this); }}, dispose: function() {{ jQueryDeclarative.{0}.callBaseMethod(this, &#8216;dispose&#8217;); }} }}; jQueryDeclarative.{0}.registerClass(&#8216;jQueryDeclarative.{0}&#8217;, Sys.UI.Behavior); if (typeof (Sys) !== &#8216;undefined&#8217;) Sys.Application.notifyScriptLoaded();&#8221;;</p>
<p>function $declare(functionName) {<br />
eval(String.format(template, functionName));<br />
$(&#8216;body&#8217;).attr(&#8216;xmlns:&#8217; + functionName.toLowerCase(), &#8216;javascript:jQueryDeclarative.&#8217; + functionName);</p>
<p>}</p>
<p>$.extend({ declare: $declare });</p>
<p>})(jQuery);</p></blockquote>
<p><a href="http://lakkakula.files.wordpress.com/2009/06/widget.png"><img class="aligncenter size-full wp-image-41" title="widget" src="http://lakkakula.files.wordpress.com/2009/06/widget.png" alt="widget" width="339" height="489" /></a></p>
<p>2. Notice that eventhough the template is assigned to the <span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;sys-template&#8221; </span></span>, it is not bound yet. We will do that in next step.</p>
<p>Reusing widget client template</p>
<div><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;</span></span></span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;col1&#8243;</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;col&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">sys</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">attach</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;dataview&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">dataview</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">data</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;{{ widgets }}&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">dataview</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">itemtemplate</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;widget-template&#8221;&gt;</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;<br />
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;col2&#8243;</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;col&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">sys</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">attach</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;dataview&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">dataview</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">data</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;{{ widgets }}&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">dataview</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">itemtemplate</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;widget-template&#8221;&gt;</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;<br />
</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;col3&#8243;</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;col&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">sys</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">attach</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;dataview&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">dataview</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">data</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;{{ widgets }}&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">dataview</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">itemtemplate</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;widget-template&#8221;&gt;</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;/</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&gt;</span></span></div>
<p>These above div tags are actually binding JSON array to widget client template.</p>
<p>One important thing to note in above code is the line <span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">&lt;</span></span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">div</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">code</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">:</span></span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">if</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;col==$element.id&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">id</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;{{&#8216;widget-&#8217; + id}}&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">class</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;widget&#8221;&gt;</span></span>. This ensures that only the associated widgets are placed in correct columns. In other words, all widgets associated to Col1 are placed in Col1 DIV tag, Col2 widgtes are placed in Col2 DIV tag and hence forth.</p>
<p>In my next blog post, I will walk you through on how to provide drag and drop functionality to widgets and prepare interfaces for storing widget location and status in the server.</p>
<p><a rev="vote-for" href="http://dotnetshoutout.com/Developing-Web-20-Portal-using-AspNet-MVC-Microsoft-Ajax-Client-Templates-and-jQuery-with-drag-and-drop-widget-personalization-Part-1-Lakkakulas-Blog"><img style="border:0;" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Flakkakula.wordpress.com%2F2009%2F06%2F18%2Fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1%2F" alt="Shout it" /></a></p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2flakkakula.wordpress.com%2f2009%2f06%2f18%2fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2flakkakula.wordpress.com%2f2009%2f06%2f18%2fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:2725px;width:1px;height:1px;"><code>/*<br />
* jQuery Declarative plug-in 0.1 (3/12/2008)</code>*<br />
* Copyright (c) 2008<br />
*   Brian J. Cardiff &#8211; <a rel="nofollow" href="http://weblogs.manas.com.ar/bcardiff/">http://weblogs.manas.com.ar/bcardiff/</a><br />
*<br />
* Built upon<br />
* jQuery 1.2.6 (<a rel="nofollow" href="http://jquery.com/">http://jquery.com</a>)</p>
<p>* Microsoft Ajax (MicrosoftAjax.js)<br />
* Microsoft Ajax Templates (MicrosoftAjaxTemplates.js)<br />
*<br />
*/<br />
(function($) {</p>
<p>Type.registerNamespace(&#8220;jQueryDeclarative&#8221;);</p>
<p>var template = &#8220;jQueryDeclarative.{0} = function(element) {{ jQueryDeclarative.{0}.initializeBase(this, [element]); }}; jQueryDeclarative.{0}.prototype = {{ initialize: function() {{ jQueryDeclarative.{0}.callBaseMethod(this, &#8216;initialize&#8217;); jQuery(this.get_element()).{0}(this); }}, dispose: function() {{ jQueryDeclarative.{0}.callBaseMethod(this, &#8216;dispose&#8217;); }} }}; jQueryDeclarative.{0}.registerClass(&#8216;jQueryDeclarative.{0}&#8217;, Sys.UI.Behavior); if (typeof (Sys) !== &#8216;undefined&#8217;) Sys.Application.notifyScriptLoaded();&#8221;;</p>
<p>function $declare(functionName) {<br />
eval(String.format(template, functionName));<br />
$(&#8216;body&#8217;).attr(&#8216;xmlns:&#8217; + functionName.toLowerCase(), &#8216;javascript:jQueryDeclarative.&#8217; + functionName);</p>
<p>}</p>
<p>$.extend({ declare: $declare });</p>
<p>})(jQuery);</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lakkakula.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lakkakula.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lakkakula.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lakkakula.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lakkakula.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lakkakula.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lakkakula.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lakkakula.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lakkakula.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lakkakula.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lakkakula.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lakkakula.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lakkakula.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lakkakula.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=25&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://lakkakula.wordpress.com/2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e009131391b3e9faa77041bf74e2d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Venkata Uma lakkakula</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/06/linksgrid_db.png" medium="image">
			<media:title type="html">linksgrid_db</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/06/wiz_list1.png" medium="image">
			<media:title type="html">wiz_list.png.</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/06/widget-container.png" medium="image">
			<media:title type="html">widget-container</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/06/widget.png" medium="image">
			<media:title type="html">widget</media:title>
		</media:content>

		<media:content url="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Flakkakula.wordpress.com%2F2009%2F06%2F18%2Fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1%2F" medium="image">
			<media:title type="html">Shout it</media:title>
		</media:content>

		<media:content url="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2flakkakula.wordpress.com%2f2009%2f06%2f18%2fdeveloping-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1%2f" medium="image">
			<media:title type="html">kick it on DotNetKicks.com</media:title>
		</media:content>
	</item>
		<item>
		<title>Web 2.0 Portal using Asp.Net MVC, Microsoft Ajax Client Templates and jQuery with drag and drop widget personalization</title>
		<link>http://lakkakula.wordpress.com/2009/06/15/web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization/</link>
		<comments>http://lakkakula.wordpress.com/2009/06/15/web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 04:38:51 +0000</pubDate>
		<dc:creator>Venkata Uma lakkakula</dc:creator>
				<category><![CDATA[Ajax Client Templates]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Asp.Net MVC]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://lakkakula.wordpress.com/?p=10</guid>
		<description><![CDATA[A few years back when I saw web 2.0 Ajax start pages like netvibes I was fascinated by the Ajax capabilities and coolness in dynamic web portals. As an enthusiastic Asp.Net developer I always wanted to develop my own Ajax Portal. While searching on web I came across several implementations and samples. Two of those samples [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=10&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few years back when I saw web 2.0 Ajax start pages like <a title="netvibes" href="http://www.netvibes.com" target="_self">netvibes</a> I was fascinated by the Ajax capabilities and coolness in dynamic web portals. As an enthusiastic Asp.Net developer I always wanted to develop my own Ajax Portal. While searching on web I came across several implementations and samples. Two of those samples are worth mentioning here. First one is from <a title="dragable boxes" href="http://www.dhtmlgoodies.com/scripts/dragable-boxes/dragable-boxes.html" target="_blank">DHTML Goodies</a> and other is from <a title="Omar Al Zabir" href="http://msmvps.com/blogs/omar/archive/2009/04/08/web-2-0-ajax-portal-using-jquery-asp-net-3-5-silverlight-linq-to-sql-wf-and-unity.aspx" target="_blank">Omar Al Zabir</a>. First one is mostly developed using plain old javascript, thus making it fairly complex to code and maintain. Though it lacks database implementation it can be added easily and server side php code can be replaced by Asp.Net webservices or page-methods. Later one is developed using cutting edge Asp.Net technologies, Omar did an excellent job implementing an Ajax web 2.0 portal using Asp.Net, you can read about it on Omar&#8217;s blog. As this implementation uses Asp.Net update panels it can not be treated as pure Ajax solution.</p>
<p>Here I will walk you through my lightweight and robust implementation of Web 2.0 Portal using Asp.Net MVC, Microsoft Ajax Client Templates and jQuery with drag and drop widget personalization. jQuery and Microsoft Ajax Client Templates makes client side programming extremely easy.</p>
<p>In coming weeks I will be blogging on how to develop this portal. Below is an image of the portal end state. You can access this portal at <a href="http://aspspider.info/lakkakula/local.aspx" target="_blank">http://aspspider.info/lakkakula/local.aspx</a> <span style="color:#999999;">(note that the portal is partially implemented, I will continue to work on it as I blog in coming weeks).</span></p>
<p><strong><span style="text-decoration:underline;">In this series:</span></strong><br />
1. <a href="http://lakkakula.wordpress.com/2009/06/15/web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization/" target="_self">Introduction<br />
</a>2. <a href="http://lakkakula.wordpress.com/2009/06/18/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-part-1/" target="_self">Part 1 &#8211; Portal Core Functionality</a><br />
3. <a href="http://lakkakula.wordpress.com/2009/06/26/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%E2%80%93-part-2/" target="_blank">Part 2 &#8211; Drag and Drop Widget Personalization</a><br />
4. <a href="http://lakkakula.wordpress.com/2009/07/27/developing-web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization-%E2%80%93-part-3/" target="_blank">Part 3 &#8211; Building Widget Gallery</a><br />
5. <a href="http://wp.me/pyiXr-2c" target="_blank">Part 4 &#8211; Introduce Tabs and Users</a><br />
6. <a href="http://wp.me/pyiXr-2t" target="_blank">Part 5 &#8211; Enhancements and Conclusion</a></p>
<p><a rev="vote-for" href="http://dotnetshoutout.com/Lakkakulas-Blog-2009Web-20-Portal-using-AspNet-MVC-Microsoft-Ajax-Client-Templates-and-jQuery-with-drag-and-drop-widget-personalization"><img src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Flakkakula.wordpress.com%2F" alt="Shout it" /></a></p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2flakkakula.wordpress.com%2f2009%2f06%2f15%2fweb-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2flakkakula.wordpress.com%2f2009%2f06%2f15%2fweb-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<p style="text-align:center;"><span style="color:#999999;"><a href="http://www.linksgrid.com/"><img class="aligncenter size-full wp-image-45" title="linksgrid.com" src="http://lakkakula.files.wordpress.com/2009/06/lg_small.png" alt="lg_small" width="1000" height="1547" /></a><br />
</span></p>
<p><span style="color:#999999;"><br />
</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lakkakula.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lakkakula.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lakkakula.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lakkakula.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lakkakula.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lakkakula.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lakkakula.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lakkakula.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lakkakula.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lakkakula.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lakkakula.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lakkakula.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lakkakula.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lakkakula.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lakkakula.wordpress.com&amp;blog=8176029&amp;post=10&amp;subd=lakkakula&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://lakkakula.wordpress.com/2009/06/15/web-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e009131391b3e9faa77041bf74e2d6a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Venkata Uma lakkakula</media:title>
		</media:content>

		<media:content url="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Flakkakula.wordpress.com%2F" medium="image">
			<media:title type="html">Shout it</media:title>
		</media:content>

		<media:content url="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2flakkakula.wordpress.com%2f2009%2f06%2f15%2fweb-2-0-portal-using-asp-net-mvc-microsoft-ajax-client-templates-and-jquery-with-drag-and-drop-widget-personalization%2f" medium="image">
			<media:title type="html">kick it on DotNetKicks.com</media:title>
		</media:content>

		<media:content url="http://lakkakula.files.wordpress.com/2009/06/lg_small.png" medium="image">
			<media:title type="html">linksgrid.com</media:title>
		</media:content>
	</item>
	</channel>
</rss>
