<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Netvibes Developers blog &#187; Articles</title>
	<atom:link href="http://dev.netvibes.com/blog/category/article/feed/" rel="self" type="application/rss+xml" />
	<link>http://dev.netvibes.com/blog</link>
	<description>News and articles about the Netvibes API</description>
	<lastBuildDate>Wed, 14 Oct 2009 10:42:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Understanding the TabView control</title>
		<link>http://dev.netvibes.com/blog/2009/10/14/understanding-the-tabview-control/</link>
		<comments>http://dev.netvibes.com/blog/2009/10/14/understanding-the-tabview-control/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 10:28:28 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=292</guid>
		<description><![CDATA[The TabView control, which allows you to put a standardized set of tabs within your widget, had been documented since day one, back in 2007. But that documentation was somewhat inprecise and lacking details, to say the least.
While its documentation has been severly improved since then (let us know if you consider it could still [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dev.netvibes.com/doc/uwa/templates_and_controls/tabview">The TabView control</a>, which allows you to put a standardized set of tabs within your widget, had been documented since day one, back in 2007. But that documentation was somewhat inprecise and lacking details, to say the least.</p>
<p>While its documentation has been severly improved since then (let us know if you consider it could still be better!), there remains a feeling that implementing tabs in a widget is a complex task, best left to wizard developers.</p>
<p>It&#8217;s not! And this article will drive the more sceptic among you through code samples that should make everything clear. Here goes.</p>
<h3>Sample 1: three different tabs</h3>
<p>The first sample code presents how to combine 3 widgets into one widget with 3 tabs, each one displaying the same content as the original widget. The three panels will display, in our example,</p>
<ul>
<li>some regular text;</li>
<li>the latest Astronomy Picture of the Day, as per <a href="http://dev.netvibes.com/doc/uwa/examples/apod">the APOD sample widget</a>;</li>
<li>the latest posts from this very blog, as per <a href="http://dev.netvibes.com/doc/uwa/examples/rssreader">the RSSReader sample widget</a>.</li>
</ul>
<p><img class="aligncenter size-full wp-image-303" title="uwa-tabview-various" src="http://dev.netvibes.com/blog/wp-content/uploads/uwa-tabview-various.gif" alt="uwa-tabview-various" width="424" height="233" /></p>
<p>The resulting widget is available <a href="http://nvmodules.typhon.net/xavier/uwa-samples/uwa-tabview-various.html">here</a>.</p>
<p>We can only advise you to dive into its code, and compare to the original widgets&#8217; code. We&#8217;ve provided as much comments as possible, so as to help you understand how we implemented some parts.</p>
<h3>Sample 2: three different tabs, paging in feeds</h3>
<p>You&#8217;d notice in the previous example that we did not use the Pager component, in order to simplify the code to the maximum. Therefore, if the user were to change the preference to only display the 5 of the 10 items in the feeds, he wouldn&#8217;t get the expected &#8220;prev/next&#8221; buttons at the bottom of the widget. This is what this sample code implements.</p>
<p><img class="aligncenter size-full wp-image-295" title="uwa-tabview-various-pager" src="http://dev.netvibes.com/blog/wp-content/uploads/uwa-tabview-various-pager.png" alt="uwa-tabview-various-pager" width="424" height="143" /></p>
<p>The resulting widget is available <a href="http://nvmodules.typhon.net/xavier/uwa-samples/uwa-tabview-various-pager.html">here</a>.</p>
<p>The difference with the previous sample code mostly resides in the block of code that starts with this line:</p>
<pre id="line29">var pager = new UWA.Controls.Pager(</pre>
<p>Here, the pager object is instantiated, and the rest of the code show you how to properly have it displayed.</p>
<h3>Sample 3: three tabs with a different feed each</h3>
<p>As you may know, the most popular use of tabs is to have one widget for many feeds, thus reducing the needed space. To that end, you&#8217;d need to re-use the previous sample widget, and duplicate the third tab into the two first ones.</p>
<p><img class="aligncenter size-full wp-image-296" title="uwa-tabview-onlyFeeds" src="http://dev.netvibes.com/blog/wp-content/uploads/uwa-tabview-onlyFeeds.png" alt="uwa-tabview-onlyFeeds" width="424" height="157" /></p>
<p>The resulting widget is available <a href="http://nvmodules.typhon.net/xavier/uwa-samples/uwa-tabview-onlyFeeds.html">here</a>.</p>
<p>Since we remove the code that displays the first two tabs (the text one, and the image one), the code gets shorter, but you should actually pay more attention to the code, because it presents how to have the logic work for us, and not crash the widget every time we change tab.</p>
<p>For instance, in the previous sample code, the pager was placed in a given, non-changing DIV tag:</p>
<pre id="line29">var pagerDiv = widget.createElement('div', {'class':'paging'});</pre>
<p>It is important to understand that each of the three tabs require its one pager, and therefore to have the code properly implement the pager so that tab-changing would not break it:</p>
<pre id="line24">var pagerDiv = widget.createElement('div', {'class':'paging_'+tabName});</pre>
<p>There are more advanced uses of the TabView control, which will have a look at in another post&#8230;</p>
<h3>Your turn!</h3>
<p>Go ahead, dive into each sample widget&#8217;s code, and you should come out of it with more understanding of tabs and their inner working.</p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=Understanding%20the%20TabView%20control&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F14%2Funderstanding-the-tabview-control%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F14%2Funderstanding-the-tabview-control%2F&amp;t=Understanding%20the%20TabView%20control" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F14%2Funderstanding-the-tabview-control%2F&amp;title=Understanding%20the%20TabView%20control" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F14%2Funderstanding-the-tabview-control%2F&amp;title=Understanding%20the%20TabView%20control" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F14%2Funderstanding-the-tabview-control%2F&amp;title=Understanding%20the%20TabView%20control" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F14%2Funderstanding-the-tabview-control%2F&amp;title=Understanding%20the%20TabView%20control" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F14%2Funderstanding-the-tabview-control%2F&amp;title=Understanding%20the%20TabView%20control" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F14%2Funderstanding-the-tabview-control%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2009/10/14/understanding-the-tabview-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making JavaScript and Flash work together in a UWA widget</title>
		<link>http://dev.netvibes.com/blog/2009/10/02/making-javascript-and-flash-work-together-in-a-uwa-widget/</link>
		<comments>http://dev.netvibes.com/blog/2009/10/02/making-javascript-and-flash-work-together-in-a-uwa-widget/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 08:43:49 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=275</guid>
		<description><![CDATA[We recently stumbled upon an interesting part of web application : making a Flash object communicating with its containing HTML page&#8217;s JavaScript functions. This is not unheard of, of course, but in the world of UWA, this can prove difficult to implement in a working way.
A reminder: JavaScript in UWA
As UWA developers know, portability and [...]]]></description>
			<content:encoded><![CDATA[<p>We recently stumbled upon an interesting part of web application : making a Flash object communicating with its containing HTML page&#8217;s JavaScript functions. This is not unheard of, of course, but in the world of UWA, this can prove difficult to implement in a working way.</p>
<h3>A reminder: JavaScript in UWA</h3>
<p>As UWA developers know, portability and predictability in the framework&#8217;s usage has lead us to not recommend the use of JavaScript objets such as &#8216;window&#8217; and &#8216;document&#8217;, instead recommending the equivalent to some of their methods that have been implemented in the UWA-specific &#8216;widget&#8217; objet. For instance, &#8216;window.open()&#8217; is to be dropped in favor of &#8216;widget.openURL()&#8217;, or document.getElementById(&#8217;uniqueID&#8217;)&#8217; is to be replaced by unique classes and the use of &#8216;widget.boy.getElementsById(&#8217;uniqueClass&#8217;)[0]&#8216;, among other things.<br />
Failing to find the needed function equivalent in the UWA JS Framework, developers are suggested to implement the required code within the widget&#8217;s HTML page.</p>
<p>That is all fine and dandy: all UWA developers are now used to play with these idiosynchrasies, and their widgets just get sturdier thanks to that. But when it comes to Flash-JavaScript communication, things get more &#8220;idiosynchratic&#8221;, if you will&#8230;</p>
<h3>The curious case of Flash-JavaScript communication</h3>
<p><img class="alignright size-full wp-image-283" title="Adobe_Flash_CS4_Logo" src="http://dev.netvibes.com/blog/wp-content/uploads/Adobe_Flash_CS4_Logo.png" alt="Adobe_Flash_CS4_Logo" width="256" height="256" />Flash-JS communication is a subject at least as old as Flash itself (well, at least as old as Flash 2 and FSCommand, then). The solutions at the time seemed almost magical, nowadays they are well understood and implemented within ActionScript &#8211; the Flash scripting language.</p>
<p>Calling a JavaScript function from the Flash application&#8217;s containing HTML page only requires a couple of ActionScript lines with Flash CS4. Let&#8217;s say we have on our Flash scene two main instances: a textfield named myInputText and a button named myButton. With a click on myButton, we want Flash to send the text content of myInputText to a JavaScript function called, for lack of a better name, theJavaScriptFunction().</p>
<p>Here&#8217;s how our ActionScript code could look like:</p>
<pre>import flash.external.ExternalInterface;
myButton.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void {
  if (ExternalInterface.available) {
    try {
       var tempStr:String = ExternalInterface.call("theJavaScriptFunction", myInputText.text);
    }
    catch (error:SecurityError) {
       // ignore
    }
  }
}</pre>
<p>Basically, with Flash CS4, the ExternalInterface object is the central place to improve your communication skillz. Past versions of Flash had other methods, that we&#8217;ll let you peruse at will, since it&#8217;s a safe bet CS4&#8217;s methods are here to stay&#8230;</p>
<h3>Flash-JavaScript communication in UWA</h3>
<p>Since UWA isn&#8217;t much more than a XHTML page, having Flash communicate with JS in that context should be a cake, right?</p>
<p>Wrong. Remember the first part of the article, where I reminded you of the &#8220;no &#8216;document&#8217; object&#8221; recommendation? Well, as it turns out, JS method calls from Flash are targetted at the document &#8211; which means, basically, that if you try to call your MyWidget.AwesomeFunction(), Flash will in fact target document.MyWidget.AwesomeFunction(). Hilarity ensues.</p>
<p>One solution here is to break out of the &#8220;no &#8216;document&#8217; object&#8221; rule, and build a proxy function for each JS method that you want called. For instance, in order to call this function:</p>
<pre>MyWidget.AwesomeFunction = function(var) {
  // some code
}</pre>
<p>&#8230;you&#8217;d simply have to define a proxy AwesomeFunction directly on the page&#8217;s default object (the &#8216;document&#8217; one), and have it call your UWA-tied function, like so:</p>
<pre>function AwesomeFunction(var) {
  MyWidget.AwesomeFunction(var);
}</pre>
<p>So, this would tend to prove a little diversion can go a long way. But wait! There&#8217;s more!</p>
<h3>Making your way through domains</h3>
<div id="attachment_284" class="wp-caption alignright" style="width: 373px"><a href="http://kb2.adobe.com/cps/402/kb402450.html"><img class="size-full wp-image-284" title="kb402450_crossdomain-text" src="http://dev.netvibes.com/blog/wp-content/uploads/kb402450_crossdomain-text.png" alt="kb402450_crossdomain-text" width="363" height="248" /></a><p class="wp-caption-text">Official explanation graphic from Adobe</p></div>
<p>Let&#8217;s say your ActionScript and JavaScript code is in place, as explain above. You load the widget directly in your browser (standalone mode), and it just works: awesomeness! But then you decide to install the widget on a Netvibes page, and lo!, it fails to even trigger AwesomeFunction(). <em>Fatalitas!</em></p>
<p>No, Netvibes is not blocking such usage of UWA code. Simply put, Flash has some security restriction which you will need to check one by one before you can make it all shine.</p>
<p>The basis of these security measures is the domain name. In short, by default, a Flash app (.swf) can only communicate with external files (.html, .php, .xml, .js &#8230;) if it is hosted on the very same domain name.</p>
<p>This behavior is therefore broken once in Netvibes (or any Exposition-based widget server, for that matter), since widget&#8217;s are not only displayed within an iFrame (which might be a problem in itself), but also on a unique domain name. Hence, the HTML file can never be on the same domain as the SWF file, and therefore the data loading (or JavaScript communication, in our case) cannot happen.</p>
<p>Luckilly, Macromedia at the time undertstood that need, and gave us support for a crossdomain.xml file, which would let the developer allow (or disallow) a given set of domain to be accessed by the SWF. This XML file, hosted at the root of the domain bearing the Flash file, can take this form:</p>
<pre>&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"&gt;
&lt;cross-domain-policy&gt;
  &lt;allow-access-from domain="*" /&gt;
&lt;/cross-domain-policy&gt;</pre>
<p>For added fun, you can add the following lines to your ActionScript code:</p>
<pre>import flash.system.Security;
Security.allowDomain("*");</pre>
<p>These lines are another way for Flash to validate crossdomain access.</p>
<p>One down, only one more to go&#8230;.</p>
<p>But that&#8217;s only for data, here. What we need in our case is access to the local JavaScript. This, in turn, is made possible by adding the AllowScriptAccess attribute in the SWF&#8217;s embed code, and setting it to &#8220;always&#8221;. Your embed code would therefore look like this:</p>
<pre>&lt;embed type="application/x-shockwave-flash"
  src="http://domain-name.net/uwa-flash.swf"
  width="250" height="100" bgcolor="#FFFFFF"
  AllowScriptAccess="always"&gt;&lt;/embed&gt;</pre>
<p>Still willing to use Flash for your widget? Then hop onto the next section!</p>
<h3>Handling UWA preferences from a Flash application</h3>
<p>As if that wasn&#8217;t enough, there are cases where you&#8217;d like your Flash application to make use of UWA&#8217;s preferences methods, if only in order to record the user&#8217;s settings for the Flash app within the confines of the UWA environment.</p>
<p>This case should be view from two points:</p>
<ol>
<li>Have the Flash settings be saved as UWA preferences;</li>
<li>Have the Flash app load the UWA preferences on startup.</li>
</ol>
<p>The first part is pretty ease if you you follow the instructions above: instead of calling widget.setValue() directly from ActionScript (which would result in document.widget.setValue() being called instead, and therefore nothing happenning), you&#8217;d call UWA_setValue(), which in the HTML file would be defined as&#8230;</p>
<pre>function UWA_saveInPref(varid) {
  widget.setValue('myValue', varid);
}</pre>
<p>Obviously, if you have more than one preference to set from Flash, you&#8217;d nees to expand on this code a bit&#8230;</p>
<p>Now, we want the SWF file to load up a preference, but only if it is set (obviously, else it would load the preference as &#8216;null&#8217; or other unset values). That can be done pretty easily by passing variables to Flash via the embed code&#8217;s URL (or more precisely, its query string).</p>
<div id="attachment_285" class="wp-caption aligncenter" style="width: 434px"><img class="size-full wp-image-285" title="uwa-flash" src="http://dev.netvibes.com/blog/wp-content/uploads/uwa-flash.png" alt="Why, yes it is!" width="424" height="255" /><p class="wp-caption-text">Why, yes it is!</p></div>
<p>Here is one way to get a nice, working query string for your Flash app&#8230;</p>
<p>First, retrieve the preference value, and build it into your query string via a ternary operator, for instance. Here is an example:</p>
<pre>var myValue = widget.getValue('myValue');
div_flash.innerHTML += '&lt;embed type="application/x-shockwave-flash"
  src="http://domain-name.net/uwa-flash.swf'+ (myValue?'?theValue='+myValue+'':'')
  +'" width="250" height="100" bgcolor="#FFFFFF" AllowScriptAccess="always"&gt;&lt;/embed&gt;';
widget.setBody(div_flash);</pre>
<p>If the ternary XXX finds that myValue is not empty (ergo, the preference is set), then it assigns its content to the Flash app&#8217;s theValue internal variable. If it is empty, &#8216;theValue&#8217; is not even defined in the query string, and the Flash app launches in its default state &#8211; which is pretty much the whole point of this ternary operator.</p>
<p>Second, add the following two lines of ActionScript in your SWF&#8217;s first frame (given that you want to update a &#8216;myInputText&#8217; textfield based on that query string):</p>
<pre>var myQueryStrings = this.loaderInfo.parameters;
myInputText.text = myQueryStrings.theValue;</pre>
<p>This will load our query string (using the loaderInfo object and its &#8216;parameters&#8217; property), and assign the &#8216;theValue&#8217; value as the text content of our beloved myInputText. Done: the textfield is updated with the correct UWA preference on each loading (or preference update)!</p>
<p>You can see it for yourself with <a href="http://nvmodules.typhon.net/xavier/uwa-samples/uwa-flash.html">this basic widget</a>, the code of which is available <a href="http://nvmodules.typhon.net/xavier/uwa-samples/uwa-flash.zip">here</a> (you might need Flash CS4).</p>
<h3>Two final tips, for the road</h3>
<p>1) Don&#8217;t forget to add wmode=&#8221;opaque&#8221; to your embed code, so that i doesn&#8217;t overlap with Netvibes&#8217;s content!</p>
<p>2) Choose the &#8220;hidden&#8221; preference type if you want that preference to only be changeable through your Flash app!</p>
<p>Now go and build more awesome Flash-based UWA widgets!</p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=Making%20JavaScript%20and%20Flash%20work%20together%20in%20a%20UWA%20widget&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F02%2Fmaking-javascript-and-flash-work-together-in-a-uwa-widget%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F02%2Fmaking-javascript-and-flash-work-together-in-a-uwa-widget%2F&amp;t=Making%20JavaScript%20and%20Flash%20work%20together%20in%20a%20UWA%20widget" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F02%2Fmaking-javascript-and-flash-work-together-in-a-uwa-widget%2F&amp;title=Making%20JavaScript%20and%20Flash%20work%20together%20in%20a%20UWA%20widget" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F02%2Fmaking-javascript-and-flash-work-together-in-a-uwa-widget%2F&amp;title=Making%20JavaScript%20and%20Flash%20work%20together%20in%20a%20UWA%20widget" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F02%2Fmaking-javascript-and-flash-work-together-in-a-uwa-widget%2F&amp;title=Making%20JavaScript%20and%20Flash%20work%20together%20in%20a%20UWA%20widget" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F02%2Fmaking-javascript-and-flash-work-together-in-a-uwa-widget%2F&amp;title=Making%20JavaScript%20and%20Flash%20work%20together%20in%20a%20UWA%20widget" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F02%2Fmaking-javascript-and-flash-work-together-in-a-uwa-widget%2F&amp;title=Making%20JavaScript%20and%20Flash%20work%20together%20in%20a%20UWA%20widget" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F10%2F02%2Fmaking-javascript-and-flash-work-together-in-a-uwa-widget%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2009/10/02/making-javascript-and-flash-work-together-in-a-uwa-widget/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Boost your feeds and make use of our numerous feed views</title>
		<link>http://dev.netvibes.com/blog/2009/09/01/boost-your-feeds-and-make-use-of-our-numerous-feed-views/</link>
		<comments>http://dev.netvibes.com/blog/2009/09/01/boost-your-feeds-and-make-use-of-our-numerous-feed-views/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 12:46:33 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Articles]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=192</guid>
		<description><![CDATA[Netvibes  users were long used to using the Feed Reader widget which, combined with the internal full-page feed reader, makes for the greatness of Netvibes as a feed agregator, and from there on, as a complete digital dashboard.
Back in December 2008, we updated our Feed Reader widget with three new views (Ticker, Carousel, Magazine) ; [...]]]></description>
			<content:encoded><![CDATA[<p>Netvibes  users were long used to using the Feed Reader widget which, combined with the internal full-page feed reader, makes for the greatness of Netvibes as a feed agregator, and from there on, as a complete digital dashboard.</p>
<div id="attachment_263" class="wp-caption aligncenter" style="width: 530px"><img class="size-full wp-image-263" title="Feed widget in normal view" src="http://dev.netvibes.com/blog/wp-content/uploads/normal.png" alt="Feed widget in normal view" width="520" height="123" /><p class="wp-caption-text">Feed widget in normal view</p></div>
<p style="text-align: left;"><a href="http://blog.netvibes.com/?2008/12/08/223-new-layouts-opensocial-and-leweb-08">Back in December 2008</a>, we updated our Feed Reader widget with three new views (<em>Ticker</em>, <em>Carousel</em>, <em>Magazine</em>) ; we added four more feed views <a href="http://blog.netvibes.com/?2009/03/23/257-new-views-for-your-feeds">in March 2009</a> (<em>Classy Slideshow</em> and its black-background version, <em>Headline</em>, and <em>Quick Details</em>), bringing a total of 8 possible views for your feed. Netvibes users can then choose the most appropriate view for a given feed, and bring more variety to the whole page: feeds can now stand out, image-centric feeds are better than ever, it makes it easy to discernate between two feeds, etc.</p>
<div id="attachment_264" class="wp-caption aligncenter" style="width: 530px"><img class="size-full wp-image-264" title="Feed widget in Magazine view" src="http://dev.netvibes.com/blog/wp-content/uploads/magazine.png" alt="Feed widget in Magazine view" width="520" height="269" /><p class="wp-caption-text">Feed widget in Magazine view</p></div>
<p>All in all, these new views not only bring a whole better feedreading experience to the Netvibes users, but they can also prove to be very handy for those whishing to build some greate public pages based solely on feeds &#8211; with a the help of Flexible Layout tool that was also released in December 2008.</p>
<div id="attachment_267" class="wp-caption aligncenter" style="width: 530px"><img class="size-full wp-image-267" title="Feed widget with Ticket view" src="http://dev.netvibes.com/blog/wp-content/uploads/ticker.png" alt="Feed widget with Ticket view" width="520" height="165" /><p class="wp-caption-text">Feed widget with Ticket view</p></div>
<p>So, users can choose to set their page with different views, public pages editors can present their content in a great fashion of ways, but one point remains: how to you make sure that YOUR feeds can work properly with these new views?</p>
<h3>How can you make use of them?</h3>
<p>The best way for your feeds to be correctly handled by our various views, is to have them carry a proper link to your media content (most of the time, an image, but it could also be audio or video). This way, the feedreader can display more than just text, which in turn will make your feed stand out in the crowd of those without an image. Simple as that.</p>
<div id="attachment_265" class="wp-caption aligncenter" style="width: 530px"><img class="size-full wp-image-265" title="Feed widget in Classy view" src="http://dev.netvibes.com/blog/wp-content/uploads/classy.png" alt="Feed widget in Classy view" width="520" height="258" /><p class="wp-caption-text">Feed widget in Classy view</p></div>
<p>There is a handful of way to do this in the world of feeds, the most popular being:</p>
<ul>
<li>enclosures ;</li>
<li>MediaRSS ;</li>
<li>parsing of the post&#8217;s content.</li>
</ul>
<p>&#8230;which are all supported by Netvibes, of course!</p>
<p>Let&#8217;s explore each of these solutions&#8230;</p>
<h3>Enclosures</h3>
<p>Enclosures rely on a special type of XML tag, which have been supported by the RSS and Atom formats for a long time, and that all major feed readers now understand. In these two popular feed formats, enclosures simply point to one (or many) media files, along with useful metadata about these. Feed readers can in turn make use of these informations to display the media files along (or after) the post&#8217;s content.</p>
<p>The &lt;enclosure&gt; element was added to RSS back in 2000, when broadband was still rare and it would make better sense to let feedreader download a feed&#8217;s huge files during idle time (at night, for instance), allowing the user to come back to his/her feed reader with all files downloaded.</p>
<p>Using enclosures, an editor (or editing tool) can add an absolute URL to a file, to be dealt with by the feed reader accordingly. In the case of podcasting, that enclosed file would be an MP3 file (or some video format for &#8220;vidcasting&#8221;), file which the feed reader would download silently and make available to the user for his listening (or viewing) pleasure. Nowadays however, thanks to omnipresent broadband and cheaper bandwidth, files can just be listened through directly &#8211; such as is possible with Netvibes, with the podcast player.</p>
<div id="attachment_268" class="wp-caption aligncenter" style="width: 530px"><img class="size-full wp-image-268" title="Feed widget with Slideshow view" src="http://dev.netvibes.com/blog/wp-content/uploads/slideshow.png" alt="Feed widget with Slideshow view" width="520" height="207" /><p class="wp-caption-text">Feed widget with Slideshow view</p></div>
<p>Even for non-podcasters, enclosures can be useful simply in order to point the feedreader to a thumbnail image, which would bring more life to the feed in some feedreaders, and help it stand out in the crowd&#8230;</p>
<h3>MediaRSS</h3>
<p><a href="http://video.search.yahoo.com/mrss">MediaRSS</a> is an extension to the RSS 2.0 file-format, trying to solve one issue: enclosures in RSS could only link one media file per files. While one was enough at the birth of podcasting, now podcasters like to spread their audio/video files over more than a single, or include some more interesting media content besides the main file itself. This was solved right at the beginning in Atom, but the RSS format being frozen, extensions where needed.</p>
<p>In these case, the Yahoo! developers stepped up and proposed MediaRSS, which immensely improves on RSS enclosure tag, adding support for such much-needed data as thumbnail, title, description, keyword or even player source URL, for each link file.</p>
<p>Sadly, not all feed readers do understand MediaRSS, which leads to some CMS and feed-generators to not put this extension to wider use.<br />
Why so? Once you build upon a much-successful format, having your extension of that format adopted by the very people it targets can be hair-threatening. It&#8217;s very much like a <a href="http://en.wikipedia.org/wiki/Catch-22_(logic)">Catch-22</a> &#8211; or a chicken-and-egg dilemma, if you will:</p>
<ul>
<li>Why would data publishers implement your extension if no tool support it?</li>
<li>Why would tools support it if no data publishers implement it?</li>
</ul>
<p>We at Netvibes chose to support that extension as much as we could, since it the best way to benefit our users. Therefore, we fully encourage you to make use of MediaRSS, and help spread its usefulness.</p>
<h3>Parsing</h3>
<p>Alas, not all feeds/CMSs do implement MediaRSS &#8212; or even enclosures, for that matter. Still, there is no reason why these feeds would not have their image nicely thumbnailed for all to see. In this case, feedreaders cannot rely on standardized tags, and therefore have to rely on magic.</p>
<p>Magic, or in our case parsing, which means that the post&#8217;s content is scanned by the Netvibes feedreader, all the images are gathered, and the first one in the post is then used as a thumbnail. Problem solved. Magic, I tell you.</p>
<p>One recurring pitfal that you should strive to avoid: smileys. Along with social network buttons, they represent the culprit of badly-chosen thumbnails, and would most of the time happen when parsing is necessary (no enclosure nor MediaRSS tags to be found). While this misshap is pretty much unavoidable for image-less posts (we&#8217;re working on a solution), bloggers who use images in their posts can sometimes be surprised to find a smiley instead of their beautifuly crafted illustration.</p>
<div id="attachment_266" class="wp-caption aligncenter" style="width: 530px"><a href="http://Smileysgonebad"><img class="size-full wp-image-266" title="bad_smileys" src="http://dev.netvibes.com/blog/wp-content/uploads/bad_smileys.png" alt="Smileys gone bad" width="520" height="185" /></a><p class="wp-caption-text">Smileys gone bad</p></div>
<p>The explanation is easy: as said earlier, the post parsing makes a list of all images in the post, then uses the first image as the thumbnail. Therefore, in order for the first big image to be used as a thumbnail, you should try as much as possible to either&#8230;</p>
<ul>
<li>put the image as for the first content of the post, even before the text itself ;</li>
<li>never use a smiley before the first image of the post.</li>
</ul>
<p>Still, this remains a constrains, and we&#8217;re currently working on a solution around that issue&#8230;</p>
<h3>How it all works out in the end</h3>
<p>Because some feeds can propose both enclosures and MediaRSS tags, it&#8217;s up to the feereader to sort the wheat from the hay. Here&#8217;s how we decided to make it work at Netvibes :</p>
<ul>
<li>In the case of thumbnails :
<ol>
<li>use the first &lt;enclosure&gt; tag ;</li>
<li>use the first &lt;media:thumbnail&gt; tag ;</li>
<li>use the first image within the &lt;media:content&gt; tag ;</li>
<li>use the first image within the post&#8217;s content.</li>
</ol>
</li>
<li>In the case of videos :
<ul>
<li>we exploit the &lt;media:content&gt; tag that has a content-type of &#8220;application/x-shockwave-flash&#8221;.</li>
</ul>
</li>
</ul>
<p>As you can see, the best way to have your media files be correctly handled by the Netvibes feedreader, is to use the great MediaRSS extension to your RSS feed. Since not all CMSs support it out-of-the-box, you might have to dig for existing extension &#8211; <a href="http://wordpress.org/extend/plugins/mrss/">here&#8217;s one for WordPress</a>, and <a href="http://drupal.org/project/mediarss">another one for Drupal</a>, for instance. Know of more? Come and share them in the comments!</p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=Boost%20your%20feeds%20and%20make%20use%20of%20our%20numerous%20feed%20views&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F09%2F01%2Fboost-your-feeds-and-make-use-of-our-numerous-feed-views%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F09%2F01%2Fboost-your-feeds-and-make-use-of-our-numerous-feed-views%2F&amp;t=Boost%20your%20feeds%20and%20make%20use%20of%20our%20numerous%20feed%20views" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F09%2F01%2Fboost-your-feeds-and-make-use-of-our-numerous-feed-views%2F&amp;title=Boost%20your%20feeds%20and%20make%20use%20of%20our%20numerous%20feed%20views" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F09%2F01%2Fboost-your-feeds-and-make-use-of-our-numerous-feed-views%2F&amp;title=Boost%20your%20feeds%20and%20make%20use%20of%20our%20numerous%20feed%20views" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F09%2F01%2Fboost-your-feeds-and-make-use-of-our-numerous-feed-views%2F&amp;title=Boost%20your%20feeds%20and%20make%20use%20of%20our%20numerous%20feed%20views" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F09%2F01%2Fboost-your-feeds-and-make-use-of-our-numerous-feed-views%2F&amp;title=Boost%20your%20feeds%20and%20make%20use%20of%20our%20numerous%20feed%20views" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F09%2F01%2Fboost-your-feeds-and-make-use-of-our-numerous-feed-views%2F&amp;title=Boost%20your%20feeds%20and%20make%20use%20of%20our%20numerous%20feed%20views" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F09%2F01%2Fboost-your-feeds-and-make-use-of-our-numerous-feed-views%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2009/09/01/boost-your-feeds-and-make-use-of-our-numerous-feed-views/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Building your own animated theme for Netvibes</title>
		<link>http://dev.netvibes.com/blog/2009/07/29/building-your-own-animated-theme-for-netvibes/</link>
		<comments>http://dev.netvibes.com/blog/2009/07/29/building-your-own-animated-theme-for-netvibes/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 16:12:01 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=234</guid>
		<description><![CDATA[It&#8217;s been a month since we revealed that Netvibes is supporting animated themes &#8211; that is, themes that change throughout the day, depending on the designer&#8217;s wishes.

Today marks another milestone for animated themes in Netvibes, with the official support of 10 brand new themes, which obviously make plenty o&#8217; use of time ranges.
I want my [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a month since we revealed that <a href="http://dev.netvibes.com/blog/2009/06/25/netvibes-now-supports-dynamic-themes/">Netvibes is supporting animated themes</a> &#8211; that is, themes that change throughout the day, depending on the designer&#8217;s wishes.</p>
<p><img class="aligncenter size-full wp-image-237" title="dyn-theme-animation" src="http://dev.netvibes.com/blog/wp-content/uploads/dyn-theme-animation1.gif" alt="dyn-theme-animation" width="520" height="98" /></p>
<p>Today marks another milestone for animated themes in Netvibes, <a href="http://blog.netvibes.com/?2009%2F07%2F29%2F294-10-new-animated-themes-to-personalize-your-page">with the official support of 10 brand new themes</a>, which obviously make plenty o&#8217; use of time ranges.</p>
<h3>I want my own!</h3>
<p>We hear ya! One of the great projects released with the <a href="http://www.netvibes.com/labs/">Netvibes Lab</a>s launch, <a href="http://blog.netvibes.com/?2009/04/15/264-netvibes-labs">back in April &#8216;09</a>, was the <a href="http://www.netvibes.com/labs/projects/theme-designer/">Theme Designer</a>, which allowed you to design your theme visually rather than through a tedious XML format.</p>
<p>However, our Theme Designer is not yet able to build animated themes (that&#8217;s planned for a further iteration), so in order to feast your visitors&#8217; eyes with an everchanging design, you will still have to dive into the code. Don&#8217;t be scared: it&#8217;s quite easy as long as you know how to handle XML.</p>
<p>Our <a href="http://dev.netvibes.com/doc/theme">theme documentation</a> already features most of the information you might need in order to code your own theme, be it static or animated.</p>
<p>In this article, we&#8217;ll dive into building a complete animated theme step by step, using the Theme Designer. That editor doesn&#8217;t yet support animated themes, but we can just as well use it to build a handful of static themes, and merge them into one file by hand, in order to get an animated theme!</p>
<h3>Step one: Deciding on the time ranges and graphics</h3>
<p>Before we hop into the editor and start choosing the header color for widgets, you should first have a clear idea of what you want your theme to look and behave like &#8211; which could greatly impact the header graphics.</p>
<p>For instance, you can have up to 24 different designs (one per hour of the day/night), but you can just as well have an animated theme with two different states.</p>
<p>For the purpose of this article, we&#8217;ll show you how to build a 5-parts theme, with 3 different behaviors: work, lunch, and spare time &#8211; therefore, your visitors will be able to know what you&#8217;re up to just by looking at your theme!</p>
<p>Each behavior fits into a specific time range:</p>
<ol>
<li>12am-9am: spare time</li>
<li>9am-1pm: work</li>
<li>1pm-2pm: lunch</li>
<li>2pm-7pm: work</li>
<li>7pm-12am: spare time</li>
</ol>
<p>Note that while the two &#8220;spare time&#8221; ranges are next to each other, the XML format requires us to keep them separated rather than having a single &#8220;spare time&#8221; range going from 7 PM to 9 AM: valid time ranges are from 12am &#8211; 12am, and if the end time is before the start time, it will cause an error.<br />
Also, make sure you set ranges for the full 24h of the day &#8212; you wouldn&#8217;t want your users to miss out on an hour&#8230;</p>
<h3>Step two: Making the graphics</h3>
<p>Our theme  has 5 parts, but we will base it upon 3 designs: &#8220;lunch&#8221; (used once), work (used twice) and &#8220;spare time&#8221; (used twice).</p>
<p>We&#8217;ll leave the graphic creation to you, and will simply remind you of the size recommendations for a good header image, as well as useful information:</p>
<ul>
<li>Images should be at least 175px tall. Since the user can expand the header&#8217;s height, it is recommended to go up to 260px, or even 300px to be on the safe side.</li>
<li>Center image must be at least 640px wide.</li>
<li>Tile image can be any size, but must wrap-up seamlessly.</li>
<li>Image should not weight more than 100 kb. Recommended weight is 40 kb, but prefer better quality to smaller size.</li>
<li>Images are centered in the header, both horizontally and vertically.</li>
<li>Images can use any format. Recommended are <acronym title="Portable Network Graphics">PNG</acronym> and<acronym title="Joint Photographics Experts Group">JPG</acronym>, but <acronym title="Graphics Interchange Format">GIF</acronym> can of course be used. Use <acronym title="Portable Network Graphics">PNG</acronym>/<acronym title="Graphics Interchange Format">GIF</acronym> if you need to use transparency.</li>
</ul>
<p>A lot more information is available in the <a href="http://dev.netvibes.com/doc/theme">theme documentation</a>, such as a description of the various layers available for the header, and image tiling&#8230;</p>
<h3>Step three: Making the themes using the Theme Designer</h3>
<p>Now that you have everything at hand, you can launch the <a href="http://www.netvibes.com/labs/projects/theme-designer/">Theme Designer</a> and simply fill-in the blanks for each section. You&#8217;ll have to do that for each of the various time ranges of your animated theme.</p>
<p><img class="aligncenter size-medium wp-image-249" title="nv-themedesigner" src="http://dev.netvibes.com/blog/wp-content/uploads/nv-themedesigner-500x358.png" alt="nv-themedesigner" width="500" height="358" /></p>
<p>Once you feel you static theme is perfect, you can save it by clicking on the &#8220;Download theme&#8221; button, available from the Main tab. You end up with an XML file containing all the needed info for your static theme, and named &#8220;theme.xml&#8221; &#8211; which we advise you to promptly rename into something more informative, for fear of overwriting it with your next theme saving.</p>
<h3>Step four: Merging static themes into a animated theme</h3>
<p>Each of the three static themes we have created are wholly contained within the &lt;ConfigMap type=&#8221;Skin&#8221;&gt;&#8230;&lt;/ConfigMap&gt; tags of each of their respective XML files. One theme XML file can contain more than one such &lt;ConfigMap&gt; tag, and they are differentiated using the sub-tag &lt;Trait&gt;, as explained in both the <a href="http://dev.netvibes.com/doc/theme">theme documentation</a> and <a href="http://dev.netvibes.com/blog/2009/06/25/netvibes-now-supports-dynamic-themes/">the announcement from last month</a>.</p>
<p>Therefore, merging static themes into one animated theme is simply a question of copy/pasting the &lt;ConfigMap&gt; tags from all files into the remaining one, after its own such tag. Once the pasting is done, add a &lt;Trait&gt; tag with the proper time range settings to each &lt;ConfigMap&gt;, and you&#8217;re pretty much done!</p>
<p>In our case, we have three static themes which apply to 5 time ranges, so two of them are bound to be duplicated within the XML. They will be singled out by their &lt;Trait&gt;.</p>
<p>In order to build our animated theme, we&#8217;ll start with the file for the static theme tied to the first time range, then paste the &lt;ConfigMap&gt; tags from the two other files into 5 distinct &lt;ConfigMap&gt; section, and finally differentiate them using their very own &lt;Trait&gt; tags. The sequence of the &lt;Trait&gt; tags might be as such:</p>
<ol>
<li>&#8220;spare time&#8221; theme: &lt;Trait name=&#8221;TimeOfDay&#8221;&gt;12am-9am&lt;/Trait&gt;</li>
<li>&#8220;work&#8221; theme: &lt;Trait name=&#8221;TimeOfDay&#8221;&gt;9am-1pm&lt;/Trait&gt;</li>
<li>&#8220;lunch&#8221; theme: &lt;Trait name=&#8221;TimeOfDay&#8221;&gt;1pm-2pm&lt;/Trait&gt;</li>
<li>&#8220;work&#8221; theme: &lt;Trait name=&#8221;TimeOfDay&#8221;&gt;2pm-7pm&lt;/Trait&gt;</li>
<li>&#8220;spare time&#8221; theme: &lt;Trait name=&#8221;TimeOfDay&#8221;&gt;7pm-12am&lt;/Trait&gt;</li>
</ol>
<p>Easy as peas!</p>
<h3>Step 5: applying the theme on your page</h3>
<p>You must upload the XML files and all the media files it uses on a public host in order to apply it. Do not remove it from the host after installation, since your page would lose the theme altogether&#8230;</p>
<p>Now comes the part were you get to see your theme in action. As explained in the documentation, you can apply the theme on either one of your private pages, or your public (or all of them!) &#8211; it all depends on the syntax you use.</p>
<p>If it&#8217;s on a private page:</p>
<ol>
<li>Go to that page of yours ;</li>
<li>Type the following in your browser&#8217;s adress bar:<br />
http://www.netvibes.com/?theme=http://URLOF YOURTHEME</li>
</ol>
<p>If it&#8217;s on your public page (http://www.netvibes.com/PAGEID):</p>
<ul>
<li>http://www.netvibes.com/?visit= PAGEID&amp;theme=http://URLOF YOURTHEME</li>
</ul>
<h3>Explore 10 exclusive themes!</h3>
<p>The 10 exclusive animated themes that were released today are available for your to browse through, in order to learn how to build awesome themes yourself!</p>
<p>Here are the links to their XML files, along with links to apply them on your current private page:</p>
<ul>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/4seasons/theme.xml">4 Seasons</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/4seasons/theme.xml">apply it</a>)</li>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/24hours/theme.xml">24 Hours</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/24hours/theme.xml">apply it</a>)</li>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/aurora/theme.xml">Aurora</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/aurora/theme.xml">apply it</a>)</li>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/colors/theme.xml">Colors</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/colors/theme.xml">apply it</a>)</li>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/food/theme.xml">Food</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/food/theme.xml">apply i</a>t)</li>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/grey_texture/theme.xml">Grey Texture</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/grey_texture/theme.xml">apply it</a>)</li>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/heart/theme.xml">Heart</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/heart/theme.xml">apply it</a>)</li>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/lightness/theme.xml">Lightness</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/lightness/theme.xml">apply it</a>)</li>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/sea_serpent/theme.xml">Sea Serpent</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/sea_serpent/theme.xml">apply it</a>)</li>
<li><a href="http://www.netvibes.com/themes/xml-dynamic/yann_arthus_bertrand/theme.xml">Yann Arthus-Bertrand</a> (<a href="http://www.netvibes.com/?theme=http://www.netvibes.com/themes/xml-dynamic/yann_arthus_bertrand/theme.xml">apply it</a>)</li>
</ul>
<p><em>Caution: Applying one of these themes will replace the current theme.</em></p>
<p>Show us your own themes!</p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=Building%20your%20own%20animated%20theme%20for%20Netvibes&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F07%2F29%2Fbuilding-your-own-animated-theme-for-netvibes%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F07%2F29%2Fbuilding-your-own-animated-theme-for-netvibes%2F&amp;t=Building%20your%20own%20animated%20theme%20for%20Netvibes" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F07%2F29%2Fbuilding-your-own-animated-theme-for-netvibes%2F&amp;title=Building%20your%20own%20animated%20theme%20for%20Netvibes" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F07%2F29%2Fbuilding-your-own-animated-theme-for-netvibes%2F&amp;title=Building%20your%20own%20animated%20theme%20for%20Netvibes" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F07%2F29%2Fbuilding-your-own-animated-theme-for-netvibes%2F&amp;title=Building%20your%20own%20animated%20theme%20for%20Netvibes" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F07%2F29%2Fbuilding-your-own-animated-theme-for-netvibes%2F&amp;title=Building%20your%20own%20animated%20theme%20for%20Netvibes" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F07%2F29%2Fbuilding-your-own-animated-theme-for-netvibes%2F&amp;title=Building%20your%20own%20animated%20theme%20for%20Netvibes" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F07%2F29%2Fbuilding-your-own-animated-theme-for-netvibes%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2009/07/29/building-your-own-animated-theme-for-netvibes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to integrate Netvibes sharing in your website</title>
		<link>http://dev.netvibes.com/blog/2009/05/18/how-to-integrate-netvibes-sharing-in-your-website/</link>
		<comments>http://dev.netvibes.com/blog/2009/05/18/how-to-integrate-netvibes-sharing-in-your-website/#comments</comments>
		<pubDate>Mon, 18 May 2009 15:43:39 +0000</pubDate>
		<dc:creator>Maurice</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=204</guid>
		<description><![CDATA[Last year, we introduced social features with the &#8220;Ginger&#8221; version of Netvibes. One of them, is the ability for users to share their most interesting links with your all their contacts. Since the launch of the feature, several hundred thousand links have already been publicly shared.
If you&#8217;re running a website, you can get your users [...]]]></description>
			<content:encoded><![CDATA[<p>Last year, we introduced social features with the &#8220;Ginger&#8221; version of Netvibes. One of them, is the ability for users to share their most interesting links with your all their contacts. Since the launch of the feature, several hundred thousand links have already been publicly shared.<br />
If you&#8217;re running a website, you can get your users to easily share your links with their contacts. All you have to do, is build a link with up to 3 GET parameters.</p>
<p>Here is a sample link: <code>http://www.netvibes.com/share?title=Netvibes%20is%20awesome!&amp;url=http%3A//www.netvibes.com/</code></p>
<p>The resource <code>http://www.netvibes.com/share</code> accepts the following parameters:</p>
<ul>
<li><code>title</code> : Title for the shared link (my be URL-encoded);</li>
<li><code>url</code> : The link itself (must be URL-encoded);</li>
<li><code>autoclose</code> : Set it to 1 if you want the popup window to close after submission.</li>
</ul>
<p>To URL-encode your links, you can use the function <code>urlencode</code> in PHP or <code>encodeURIComponent</code> in Javascript.</p>
<p>We tried to make it easy for anyone to integrate those links in any page by keeping it very simple. However, if you&#8217;re looking for turnkey solutions, some universal <a href="http://blog.netvibes.com/?2009/05/18/269-share-your-favorite-web-links-with-your-netvibes-contacts">sharing buttons have already integrated Netvibes</a> and you may use one of them.</p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=How%20to%20integrate%20Netvibes%20sharing%20in%20your%20website&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F05%2F18%2Fhow-to-integrate-netvibes-sharing-in-your-website%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F05%2F18%2Fhow-to-integrate-netvibes-sharing-in-your-website%2F&amp;t=How%20to%20integrate%20Netvibes%20sharing%20in%20your%20website" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F05%2F18%2Fhow-to-integrate-netvibes-sharing-in-your-website%2F&amp;title=How%20to%20integrate%20Netvibes%20sharing%20in%20your%20website" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F05%2F18%2Fhow-to-integrate-netvibes-sharing-in-your-website%2F&amp;title=How%20to%20integrate%20Netvibes%20sharing%20in%20your%20website" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F05%2F18%2Fhow-to-integrate-netvibes-sharing-in-your-website%2F&amp;title=How%20to%20integrate%20Netvibes%20sharing%20in%20your%20website" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F05%2F18%2Fhow-to-integrate-netvibes-sharing-in-your-website%2F&amp;title=How%20to%20integrate%20Netvibes%20sharing%20in%20your%20website" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F05%2F18%2Fhow-to-integrate-netvibes-sharing-in-your-website%2F&amp;title=How%20to%20integrate%20Netvibes%20sharing%20in%20your%20website" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2009%2F05%2F18%2Fhow-to-integrate-netvibes-sharing-in-your-website%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2009/05/18/how-to-integrate-netvibes-sharing-in-your-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2008: a year in review</title>
		<link>http://dev.netvibes.com/blog/2008/12/30/2008-a-year-in-review/</link>
		<comments>http://dev.netvibes.com/blog/2008/12/30/2008-a-year-in-review/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 15:29:28 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Articles]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=177</guid>
		<description><![CDATA[This is year is coming to an end, parties are being planned already, and it might be time to look back at what 2008 brought us &#8211; and by us, I mean UWA and its ecosystem.
2008 has been a good year: we&#8217;ve released some very cool stuffs, added some functionalities to the API, and made [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.flickr.com/photos/msiebuhr/3129922971/'><img src="http://dev.netvibes.com/blog/wp-content/uploads/mistletoe.png" alt="" title="Mistletoe, by Morten Siebuhr" width="250" height="374" class="alignright size-full wp-image-178" /></a>This is year is coming to an end, parties are being planned already, and it might be time to look back at what 2008 brought us &#8211; and by us, I mean UWA and its ecosystem.</p>
<p>2008 has been a good year: we&#8217;ve released some very cool stuffs, added some functionalities to the API, and made the code sturdier. Let&#8217;s bring on The List:</p>
<ul>
<li>Netvibes saw a major release, named Ginger, which quite simply overhauled everything, from code to design. UWA also benefited from this with some niceties (such as rich-icon, widget.readOnly and widget.addStar) and consequently the MiniAPI finally got put to rest.</li>
<li>Our dear DevNet site got a <a href="http://dev.netvibes.com/blog/2008/04/29/new-design-and-uwa-doc-update/">cool new design</a>, and the <a href="http://dev.netvibes.com/blog/2008/06/06/new-version-of-the-uwa-cheat-sheet/">UWA Cheat-Sheet got finalized</a> in a lovely printable form, as a companion to the <a href="http://dev.netvibes.com/doc/uwa/documentation/uwa_monopage">one-page documentation.</a></li>
<li>In May, we celebrated the first birthday of UWA late, with a <a href="http://dev.netvibes.com/blog/2008/06/11/new-developers-tools-netvibes-platform-and-the-uwa-iframe-method/">Developer Conference</a> where we released&#8230;
<ul><a href="http://www.netvibes.org/">netvibes.org</a>: the central repository for all our open-source projects, with a proper bug-tracking tool ;</ul>
<ul>Netvibes Platform: open-sourced UWA components, such as UWA JavaScript Runtime (to run UWA widgets), PHP Exposition libraries (to parse and compile UWA widgets) and Exposition widget server (to serve widgets to users) ;</ul>
<ul>Full in-code documentation for all the above projects ;</ul>
<ul>The <a href="http://dev.netvibes.com/doc/howto/uwa_iframe">UWA-iframe</a> method.</ul>
</li>
<li>To polish our opening of UWA, we published the first <a href="http://dev.netvibes.com/blog/2008/08/22/release-of-the-uwa-specification-working-draft/">working draft of the UWA specification</a>, for everyone to implement our widget API freely ;</li>
<li>Since september, designer can create their <a href="http://dev.netvibes.com/blog/2008/09/26/create-your-own-netvibes-theme/">own theme for Netvibes</a>, through an XML format ;</li>
<li>Ecosystem saw the addition of a full-blown <a href="http://dev.netvibes.com/blog/2008/10/10/ecosystems-new-widget-creator-is-live/">widget creator</a>, which eases the creation of widgets based on multiple feeds ;</li>
<li>And finally, as if all this wasn&#8217;t enough, we released a preview of our <a href="http://dev.netvibes.com/blog/2008/12/12/uwa-now-supports-the-opensocial-api/">support for the OpenSocial API</a>, allowing widget developers to not only have universal widget, but social too (provide the platform support OpenSocial).</li>
</ul>
<p>All in all, this has been a very productive year, and we hope you&#8217;ve been happy with the direction we gave to UWA. Be sure that more evolution is being prepared for 2009!</p>
<p>Have some excellent NYE parties, everyone, and as the saying goes, &#8220;see you next year!&#8221;</p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=2008%3A%20a%20year%20in%20review&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F12%2F30%2F2008-a-year-in-review%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F12%2F30%2F2008-a-year-in-review%2F&amp;t=2008%3A%20a%20year%20in%20review" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F12%2F30%2F2008-a-year-in-review%2F&amp;title=2008%3A%20a%20year%20in%20review" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F12%2F30%2F2008-a-year-in-review%2F&amp;title=2008%3A%20a%20year%20in%20review" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F12%2F30%2F2008-a-year-in-review%2F&amp;title=2008%3A%20a%20year%20in%20review" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F12%2F30%2F2008-a-year-in-review%2F&amp;title=2008%3A%20a%20year%20in%20review" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F12%2F30%2F2008-a-year-in-review%2F&amp;title=2008%3A%20a%20year%20in%20review" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F12%2F30%2F2008-a-year-in-review%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2008/12/30/2008-a-year-in-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sharing (widgets) is caring</title>
		<link>http://dev.netvibes.com/blog/2008/09/03/sharing-widgets-is-caring/</link>
		<comments>http://dev.netvibes.com/blog/2008/09/03/sharing-widgets-is-caring/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 15:02:07 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[ecosystem]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[nyt]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=158</guid>
		<description><![CDATA[We&#8217;ve long said, and proved, that UWA works on all major widget platforms &#8211; you know the drill: Netvibes, Apple Dashboard, iGoogle, Opera, Vista, Live.com&#8230; But there is one more that deserves to be as well known: blog export.
The ability to work on blogs, and for that matter on any website,  has always been part [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve long said, and proved, that UWA works on all major widget platforms &#8211; you know the drill: Netvibes, Apple Dashboard, iGoogle, Opera, Vista, Live.com&#8230; But there is one more that deserves to be as well known: blog export.</p>
<p>The ability to work on blogs, and for that matter on any website,  has always been part of UWA starting with the now-deprecated <a href="http://dev.netvibes.com/doc/howto/widget_export">BlogWidget</a> method. BlogWidget was a nice first try at including UWA widget within the premises of a website, but in the long run was a hassle to instal, and for us it quickly became hard to maintain.</p>
<p>UWA compilers have improved a lot since last year, and the release of the Ecosystem was for us a chance to push further the proverbial envelope of exporting UWA widgets. So we built UWA export right into Ecosystem, and called it Share.</p>
<p><img class="alignright size-full wp-image-159" title="eco-share-nyt" src="http://dev.netvibes.com/blog/wp-content/uploads/eco-share-nyt.png" alt="" width="380" height="234" />Let&#8217;s say you like news so much, you want your website&#8217;s visitors to see our <a href="http://eco.netvibes.com/widgets/203767/new-york-times">New-York Times widget</a> in your sidebar. With the new Share tool, this previously laborious task has gotten very easy: go to the widget&#8217;s Ecosystem page, and click on the Share button, located next to the widget preview, right between the install links for the current 5 support platforms and the Source button, in all its orange glory.</p>
<p>Clicking that link brings you to a whole new tool in Ecosystem, where you can configure the look of the widget for better inclusion in your website. There, you can change the widget&#8217;s title, its height and the color of the header. While make these changes, you can see them live in the preview on the right side of this export tool, and can even update the height manually rather than using the counter.</p>
<p><img class="aligncenter size-full wp-image-160" title="eco-export-config" src="http://dev.netvibes.com/blog/wp-content/uploads/eco-export-config.png" alt="" width="470" height="248" /></p>
<p>Since exported widget do not offer an Edit section (by design), this tools lets you configure the widget&#8217;s preferences directly.</p>
<p><img class="aligncenter size-full wp-image-161" title="eco-export-prefs" src="http://dev.netvibes.com/blog/wp-content/uploads/eco-export-prefs.png" alt="" width="471" height="160" /></p>
<p>Once you are happy with the preview, you can directly grab the HTML code in the section below. As you can see it&#8217;s still pretty close to the old BlogWidget method, but believe me, it really has improved since that first version, the export tool being just the surface of it.</p>
<p>The most advanced among you might even find it cool to dabble with the code directly rather than through the interface&#8230;</p>
<p><a href="http://dev.netvibes.com/blog/wp-content/uploads/eco-export-code.png"><img class="aligncenter size-full wp-image-162" title="eco-export-code" src="http://dev.netvibes.com/blog/wp-content/uploads/eco-export-code.png" alt="" width="470" height="304" /></a></p>
<p>Stick that in your website&#8217;s HTML code, at the right place, upload, reload, and you should new be the proud owner of a UWA widget on your website!</p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=Sharing%20%28widgets%29%20is%20caring&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F09%2F03%2Fsharing-widgets-is-caring%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F09%2F03%2Fsharing-widgets-is-caring%2F&amp;t=Sharing%20%28widgets%29%20is%20caring" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F09%2F03%2Fsharing-widgets-is-caring%2F&amp;title=Sharing%20%28widgets%29%20is%20caring" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F09%2F03%2Fsharing-widgets-is-caring%2F&amp;title=Sharing%20%28widgets%29%20is%20caring" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F09%2F03%2Fsharing-widgets-is-caring%2F&amp;title=Sharing%20%28widgets%29%20is%20caring" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F09%2F03%2Fsharing-widgets-is-caring%2F&amp;title=Sharing%20%28widgets%29%20is%20caring" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F09%2F03%2Fsharing-widgets-is-caring%2F&amp;title=Sharing%20%28widgets%29%20is%20caring" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F09%2F03%2Fsharing-widgets-is-caring%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2008/09/03/sharing-widgets-is-caring/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Harnessing the Activities Timeline</title>
		<link>http://dev.netvibes.com/blog/2008/07/18/harnessing-the-activities-timeline/</link>
		<comments>http://dev.netvibes.com/blog/2008/07/18/harnessing-the-activities-timeline/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 12:56:02 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=152</guid>
		<description><![CDATA[You might not have noticed it, but in addition to completely revamping our Ecosystem (you didn&#8217;t know? check it out!), we&#8217;ve been silently adding new functionalities here and there, for developers to play with.
One of these &#8220;toys&#8221; is the expanded Timeline Search. As a Netvibes user, you must know about the User Timeline, where a [...]]]></description>
			<content:encoded><![CDATA[<p>You might not have noticed it, but in addition to completely revamping our Ecosystem (you didn&#8217;t know? check it out!), we&#8217;ve been silently adding new functionalities here and there, for developers to play with.</p>
<p>One of these &#8220;toys&#8221; is the expanded Timeline Search. As a Netvibes user, you must know about the User Timeline, where a user can post his good links, his favorite posts or simply his though of the moment, and let all your followers see them.</p>
<p><img class="aligncenter size-full wp-image-153" title="netvibes-activities" src="http://dev.netvibes.com/blog/wp-content/uploads/netvibes-activities.png" alt="" width="500" height="154" /></p>
<p><img class="alignleft size-full wp-image-154" title="widget-mycommunity" src="http://dev.netvibes.com/blog/wp-content/uploads/widget-mycommunity.png" alt="" width="262" height="250" />These three kinds of item can be posted to the timeline, respectively, using the <a href="http://nvmodules.typhon.net/maurice/uwa-starit/">Star-It widget</a> (which uses the new <code>widget.addStar()</code> method, so you can also <a href="http://dev.netvibes.com/blog/2008/04/08/gingers-new-functionalities-for-uwa-developers-part-2/">build starring within you own widgets</a>), via a click on the little star that is displayed by some widgets (one of which is the <a href="http://www.netvibes.com/subscribe.php?url=http://blog.netvibes.com/rss.php">internal feed reader</a>, so that makes it easy for blog posts and podcasts), and the <a href="http://www.netvibes.com/subscribe.php?module=friendActivities">My Community widget</a> (which you can find in the Essential Widget section of the Add Content panel). </p>
<p>It&#8217;s all fine and dandy, but you might think that all this data is only available to logged-in Netvibes users who chose to follow your Universe &#8211; and therefore, quite walled-garden-y for the reste of teh intarwebs. Luckily, there&#8217;s more than that.</p>
<p>When we announced the <a href="http://dev.netvibes.com/doc/api/rest">Netvibes REST API</a> <a href="http://dev.netvibes.com/blog/2008/04/29/new-design-and-uwa-doc-update/">a couple months ago</a>, it already gave a lot of power to developers, like retrieving the whole content of a Netvibes Universe in XML form, but the documentation for the Timeline Search method wasn&#8217;t really complete a the time. We&#8217;ve been working towards improving it, and the result is that you can now easily use the Timeline data just about anywhere, thanks to an expanded set of options.</p>
<p>In short, the expanded Timeline Search makes it possible for anyone to create services or tools based on public Timeline data retrieval! Desktop apps, anyone?</p>
<p><img class="alignright size-medium wp-image-155" title="activities-xml" src="http://dev.netvibes.com/blog/wp-content/uploads/activities-xml.png" alt="" width="240" height="220" />The documentation itself features a handful of ideas already:</p>
<ul>
<li>Need to pull the 100 last public status updates in Atom format? <a href="http://rest.netvibes.com/timeline/search?query=type:status&amp;format=atom&amp;limit=100">You can do it</a>.</li>
<li>Want to know who&#8217;s been mentioning the iPhone 3G lately, and get it in JSON? <a href="http://rest.netvibes.com/timeline/search?query=iphone%203g&amp;format=json">Have a lookee here</a>.</li>
<li>Feel like visiting the recent favorite links of one&#8217;s followers, in XML? <a href="http://rest.netvibes.com/timeline/search?query=followersof:xavier&amp;type:star">Here you go</a>.</li>
<li>Fan of the &#8220;FAIL&#8221; meme, and want to know who&#8217;s been commenting items with &#8220;FAIL&#8221;? <a href="http://rest.netvibes.com/timeline/search?query=comment:fail">Yup, can do</a>.</li>
</ul>
<p>This is just a part of what can be done with the REST API, and an <em>avant-goût</em> of things to come from our recent developments. Until we uncover these, you advise you to have a closer look at all the possibilities of the Netvibes REST API, which can offer a lot more than searching public timelines&#8230;<br />
 </p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=Harnessing%20the%20Activities%20Timeline&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F07%2F18%2Fharnessing-the-activities-timeline%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F07%2F18%2Fharnessing-the-activities-timeline%2F&amp;t=Harnessing%20the%20Activities%20Timeline" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F07%2F18%2Fharnessing-the-activities-timeline%2F&amp;title=Harnessing%20the%20Activities%20Timeline" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F07%2F18%2Fharnessing-the-activities-timeline%2F&amp;title=Harnessing%20the%20Activities%20Timeline" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F07%2F18%2Fharnessing-the-activities-timeline%2F&amp;title=Harnessing%20the%20Activities%20Timeline" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F07%2F18%2Fharnessing-the-activities-timeline%2F&amp;title=Harnessing%20the%20Activities%20Timeline" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F07%2F18%2Fharnessing-the-activities-timeline%2F&amp;title=Harnessing%20the%20Activities%20Timeline" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F07%2F18%2Fharnessing-the-activities-timeline%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2008/07/18/harnessing-the-activities-timeline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s easy to have a good-looking widget</title>
		<link>http://dev.netvibes.com/blog/2008/06/24/its-easy-to-have-a-good-looking-widget/</link>
		<comments>http://dev.netvibes.com/blog/2008/06/24/its-easy-to-have-a-good-looking-widget/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 11:44:04 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=145</guid>
		<description><![CDATA[On this blog, we&#8217;ve been steadily giving you advices about content and code, two of the main aspects of what makes a good widget in our opinion: content, because a widget is nothing without it ; and code, because that&#8217;s what UWA gets its flexibility and portability from.
It was all content and code, until now: [...]]]></description>
			<content:encoded><![CDATA[<p>On this blog, we&#8217;ve been steadily giving you advices about content and code, two of the main aspects of what makes a good widget in our opinion: content, because a widget is nothing without it ; and code, because that&#8217;s what UWA gets its flexibility and portability from.</p>
<p>It was all content and code, until now: the design part of the widget is when that got little love around here until now, but truly deserve it. Once you have coded your widget and it&#8217;s full of content goodness, the best way to set it apart from other widget that display the same content, is to display it in a more attractive way.</p>
<p>There are many ways to design a better, and we&#8217;re going to explore some of them in this post.</p>
<h3>Re-use your knowledge</h3>
<p>Keep in mind that thanks to UWA being based on well-known web-standards, you can apply your CSS, table and/or font magic on your widget just as easily as you would. From this standpoint, widgets are just smaller websites: you can make use of your usual tricks of the trade, and even CSS hacks if needed, to achieve the look you need.</p>
<p>One thing to remember, though, is that even if your content is displayed in smaller setting that on a good ol&#8217; website, you still don&#8217;t know the width of the container. Not only can the Netvibes user set his page to display widgets in a given number of columns (up to 4 currently), or even resize columns independently , but thanks to the portability of UWA, you widget can find itself displayed through a number of widget platforms, through the browser or on the desktop.<br />
In short: cater for all possible width, and set up your content to display harmoniously from 320 pixels wide to 1280 or more. Use percentages wisely! If you are stuck with fixed width, at least try to keep it centered, so that it looks good even in one column.</p>
<p>From there on, you can apply to your widget all the good advices you might have received from <a href="http://www.sensible.com/buythebook.html">classic web-design books</a>, using the technique you feel more comfortable with: align your form elements and general content so as not to present a mess to your users, <a href="http://en.wikipedia.org/wiki/KISS_principle">KISS</a> (don&#8217;t overwhelm with content), balance graphics and white-space in a legible way, etc.</p>
<h3>Use the available tools</h3>
<p>Users have expectations when browsing online, which are set by mostly habits formed from reading other websites. Consequently, while going with a disruptive look might be tempting in order to get more attention than the other displayed widgets, the end-result will most probably be that your widget will feel out-of-place, or even ugly in comparison to other, better-fitting widgets. Sticking to the rules might therefore be a sound idea.</p>
<p>One set of rules that are easy to follow, is UWA&#8217;s <a href="http://dev.netvibes.com/doc/uwa_templates">templates and controls</a>, a set of CSS conventions and JavaScript object built from the ground up to help your content integrate seamlessly with the Netvibes look-and-feel. More generally, they offer a quick way to get a particular design idea in place, with way less work than if you had to build it all by yourself.</p>
<p>It&#8217;s also important to know that using controls, such as the TabView one, doesn&#8217;t implies that you are stuck with having to deal with them at all times. Remember that the widget&#8217;s content can be entirely built and re-built on demand through JavaScript, and thus you can set up various sections or customize colors, using JavaScript and the DOM. Conditional statements such as <code>if..else</code> or <code>switch..case</code> where created for a reason.</p>
<p>See how the ever-admirable <a href="http://eco.netvibes.com/widgets/203214/rugby-world-cup-2007">Rugby World Cup 2007 widget</a> makes use of tabs only when needed: on loading, it checks wether the hidden &#8220;mode&#8221; preference is set to &#8220;details&#8221;, and displays the content accordingly.</p>
<pre><code>if (widget.getValue('mode') == 'details') {
  RWC.buildTabs();
} else {
  RWC.buildPodium();
}</code></pre>
<p>This means basically that only the podium is displayed on first load (no tabs).</p>
<p><img class="aligncenter size-full wp-image-146" title="rugbywc-modepodium" src="http://dev.netvibes.com/blog/wp-content/uploads/rugbywc-modepodium.png" alt="" width="322" height="183" /></p>
<p>The user can then click a &#8220;switcher&#8221; link, built dynamically using JavaScript and DOM methods &amp; events:</p>
<pre><code>// Switcher
var toggle = widget.createElement('p');
var a = widget.createElement('a');
toggle.className = 'toggle calendar';
a.setText(toggleText);
a.href = '#';
a.onclick = function() { return false; }
var setDetailsMode = function(event) {
  widget.setValue('mode', 'details');
  RWC.buildTabs();
}
toggle.onclick = setDetailsMode.bindAsEventListener(this);
toggle.appendChild(a);</code></pre>
<p>The <code>buildTabs()</code> method then erases the whole podium, and puts the tabs (and inline pager) in place &#8211; along with a bottom switcher link, so that the user can go from one mode to the other.</p>
<p><img class="aligncenter size-full wp-image-148" title="rugbywc-moderesults2" src="http://dev.netvibes.com/blog/wp-content/uploads/rugbywc-moderesults2.png" alt="" width="322" height="212" /></p>
<p>From there, thanks to the flexibility of JavaScript, anything is possible&#8230;</p>
<h3>A subtle image can do a big impression</h3>
<p>Placing your content harmoniously, using the existing templates: it&#8217;s all fine and dandy, but while these are necessary, it doesn&#8217;t make your widget stand out in the crowd. What will make it stand out is graphic design: adding color and/or images. But as explained before, this should be done in light touches, so as not to disrupt the general flow of the page.</p>
<p>Again, the RWC widget is a good example of this, with a non-disturbing crop of grass at the bottom, which helps the widget to go from &#8220;plain&#8221; to &#8220;playful&#8221;.</p>
<p><img class="aligncenter size-full wp-image-149" title="rugbywc-bottomgrass" src="http://dev.netvibes.com/blog/wp-content/uploads/rugbywc-bottomgrass.png" alt="" width="322" height="70" /></p>
<p>Another such example is the recent <a href="http://eco.netvibes.com/widgets/241215/euro2008">Euro2008 widget</a>, which also servers as a great example of some of the ways you can make use of tabs and paging in a widget.</p>
<p><img class="aligncenter size-full wp-image-150" title="euro2008" src="http://dev.netvibes.com/blog/wp-content/uploads/euro2008.png" alt="" width="322" height="290" /></p>
<p>The user-contributed <a href="http://eco.netvibes.com/widgets/240582/travel-guides-by-triptouch">TripTouch widge</a>t also features a light strip of image at the top and 4 photos at the bottom, fine details which help to personalize the widget, and consequently let the user identifying it quicker in his page.</p>
<p><img class="aligncenter size-full wp-image-151" title="triptouch" src="http://dev.netvibes.com/blog/wp-content/uploads/triptouch.png" alt="" width="322" height="399" /></p>
<p>There are many other examples of great-looking widgets in <a href="http://eco.netvibes.com/">Ecosystem</a>. We&#8217;ll make regular posts on widget design and inspiration, so that as to give you fresh ideas and make your widgets look always better.</p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=It%27s%20easy%20to%20have%20a%20good-looking%20widget&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F24%2Fits-easy-to-have-a-good-looking-widget%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F24%2Fits-easy-to-have-a-good-looking-widget%2F&amp;t=It%27s%20easy%20to%20have%20a%20good-looking%20widget" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F24%2Fits-easy-to-have-a-good-looking-widget%2F&amp;title=It%27s%20easy%20to%20have%20a%20good-looking%20widget" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F24%2Fits-easy-to-have-a-good-looking-widget%2F&amp;title=It%27s%20easy%20to%20have%20a%20good-looking%20widget" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F24%2Fits-easy-to-have-a-good-looking-widget%2F&amp;title=It%27s%20easy%20to%20have%20a%20good-looking%20widget" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F24%2Fits-easy-to-have-a-good-looking-widget%2F&amp;title=It%27s%20easy%20to%20have%20a%20good-looking%20widget" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F24%2Fits-easy-to-have-a-good-looking-widget%2F&amp;title=It%27s%20easy%20to%20have%20a%20good-looking%20widget" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F24%2Fits-easy-to-have-a-good-looking-widget%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2008/06/24/its-easy-to-have-a-good-looking-widget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New developers tools: Netvibes Platform and the UWA-Iframe method</title>
		<link>http://dev.netvibes.com/blog/2008/06/11/new-developers-tools-netvibes-platform-and-the-uwa-iframe-method/</link>
		<comments>http://dev.netvibes.com/blog/2008/06/11/new-developers-tools-netvibes-platform-and-the-uwa-iframe-method/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 16:20:30 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[exposition]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[lgpl]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[netvibes.org]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[runtime]]></category>
		<category><![CDATA[uwa]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://dev.netvibes.com/blog/?p=144</guid>
		<description><![CDATA[It&#8217;s been a few days since our cool Developers Meetup in Paris, where we announced a bunch of new releases that are of importance mostly to you, dear developers!
A proper blogpost has already been published, summing up these releases, and most importantly the new netvibes.org website. You&#8217;ll find a lot of information over there, but keep [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a few days since our cool <a href="http://dev.netvibes.com/blog/2008/05/27/netvibes-developers-meetup-in-paris/">Developers Meetup</a> in Paris, where we announced a bunch of new releases that are of importance mostly to you, dear developers!</p>
<p><a href="http://blog.netvibes.com/?2008/06/06/172-netvibesorg-opening">A proper blogpos</a>t has already been published, summing up these releases, and most importantly the new <a href="http://www.netvibes.org/">netvibes.org</a> website. You&#8217;ll find a lot of information over there, but keep on reading, &#8216;cos we have more <img src='http://dev.netvibes.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>First, here&#8217;s the video I shot from the event, where our Chief Architect, and Head Mastermind behind UWA and netvibes.org&#8217;s projects, explains a lot about what he knows best. Watch the whole video to get a feeling of what Netvibes is offering today. It&#8217;s all in spoken French, but I took the time to put English subtitles everywhere so that everyone could understand it all.</p>
<p><object type="application/x-shockwave-flash" style="width:448px;height:386px" data="http://www.vimeo.com/moogaloop.swf?clip_id=1127617&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="quality" value="best" /><param name="wmode" value="transparent" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1127617&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0" /><param name="pluginspage" value="http://www.macromedia.com/go/getflashplayer" />If you can see this, then you might need a Flash Player upgrade or you need to install Flash Player if it's missing. Get <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash Player</a> from Adobe.</object><br/>
		<!-- Valid XHTML flash object delivered by XHTML Video Embed. Get it at: http://saltwaterc.net/xhtml-video-embed -->
		</p>
<p> </p>
<h3>Netvibes Platform</h3>
<p>So there you go:</p>
<ul>
<li><a href="http://www.netvibes.org/">netvibes.org</a> is the central repository for all our open-source projects</li>
<li>currently available projects are:
<ul>
<li>UWA JavaScript Runtime: JavaScript libraries that make it possible to run UWA widgets</li>
<li>PHP Exposition libraries: make it possible to parse and compile UWA widgets</li>
<li>Exposition widget server: makes it possible to serve widgets to users, notably within an iframe.</li>
</ul>
</li>
</ul>
<p>All these projects are available under the LGPLv3 license, which is very permissive, and are referred to as the Netvibes Platform. They are still in &#8220;technology preview&#8221; &#8211; a final version should be released in the coming months.</p>
<p>Along with zip-archives of the 3 projects, netvibes.org also features:</p>
<ul>
<li><a href="http://netvibes.org/jsdoc/">full documentation of UWA JS Runtime</a> (extracted from the code)</li>
<li><a href="http://netvibes.org/phpdoc/">full documentation of Exposition libraries</a> (extracted from the code)</li>
<li>the mandatory <a href="http://netvibes.org/trac/">Trac</a>, where you will be able to <a href="http://netvibes.org/trac/timeline">follow our progress</a>, submit bug-reports, suggestion enhancements, and where some documentation will also find its place (i.e., <a href="http://netvibes.org/trac/wiki/ExpositionServer">how to run the Exposition Server</a>).</li>
</ul>
<p>An <a href="http://dev.netvibes.com/forum/viewforum.php?id=8">official Netvibes Platform</a> forum exists for you to ask question and get support from the team and users.</p>
<p>What does this mean to you? Simply, it makes UWA more &#8220;universal&#8221; than ever! We read comments saying that UWA widgets working on the 8 major widget platforms (Netvibes, iGoogle, OS X Dashboard, Vista, Live.com, iPhone, Opera, blogwidget&#8230;) sure is great, but that apparently doesn&#8217;t make it universal enough&#8230;<br />
Well, all these open-source components should help any implementer to port UWA to just about any platform, as long as it supports the usual Web standards: HTML, JavaScript and CSS. Everything is there: the Exposition widget server in order not to rely on Netvibes&#8217; backend, the Exposition libraries in order to compile the widget to just about any of the currently supported platforms, and the UWA JS libraries so that all the client-side JS code of UWA widget works as expected.</p>
<p>All these components are the exact same as the ones we use. That doesn&#8217;t mean that Netvibes.com-the-startpage will be available as open-source, ready-to-install code, but it does mean that you can now handle UWA widgets your way, on your own system.</p>
<p>Now go download those archives, try them out, have fun with them, and let us know how we can, together, make them better!</p>
<h3>But wait! There&#8217;s more!</h3>
<p>There are still a few more cool things that might have gone under the radar, one of which being the official release of the <a href="http://dev.netvibes.com/doc/howto/uwa_iframe">UWA-Iframe method</a>, which lets you display UWA widgets within your own environment (website, blog&#8230;), through a simple iframe. </p>
<p>The UWA-Iframe method is the successor to the <a href="http://dev.netvibes.com/doc/howto/widget_export">BlogWidget method</a>, which lets you display UWA widget just about anywhere on the Web, using a simple iframe call to our servers. This new method is far better, and gives you full control over the way events are handled within your system.</p>
<p>This method has already been used in beta form by countless of projects, big or small, open-source or closed source, and it was already working quite well. Now that we have a far superior version, we are releasing it officially for all those who would like to implement widgets simply, in their system: Web portal, blogging tools, etc. For instance, the UWA implementation within <a href="http://blog.jboss-portal.org/2007/12/jboss-portal-263-released.html">JBoss Portal 2.6.3</a> is based on a previous version of this method.</p>
<p>There are a few other things cooking up, but I&#8217;ll talk about them here once a feel confident about their coherence and usefulness. For now, I&#8217;m sure you can already find plenty of code to have fun with using the above releases.</p>
<p>Let us know about how you would see them evolve!</p>
<p>Share this post:</p>
<p>	<a rel="nofollow" target="_blank" href="mailto:?subject=New%20developers%20tools%3A%20Netvibes%20Platform%20and%20the%20UWA-Iframe%20method&amp;body=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F11%2Fnew-developers-tools-netvibes-platform-and-the-uwa-iframe-method%2F" title="E-mail this story to a friend!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/printer.png" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Netvibes"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="" title="Twitter"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F11%2Fnew-developers-tools-netvibes-platform-and-the-uwa-iframe-method%2F&amp;t=New%20developers%20tools%3A%20Netvibes%20Platform%20and%20the%20UWA-Iframe%20method" title="Facebook"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F11%2Fnew-developers-tools-netvibes-platform-and-the-uwa-iframe-method%2F&amp;title=New%20developers%20tools%3A%20Netvibes%20Platform%20and%20the%20UWA-Iframe%20method" title="Digg"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F11%2Fnew-developers-tools-netvibes-platform-and-the-uwa-iframe-method%2F&amp;title=New%20developers%20tools%3A%20Netvibes%20Platform%20and%20the%20UWA-Iframe%20method" title="Reddit"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F11%2Fnew-developers-tools-netvibes-platform-and-the-uwa-iframe-method%2F&amp;title=New%20developers%20tools%3A%20Netvibes%20Platform%20and%20the%20UWA-Iframe%20method" title="del.icio.us"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F11%2Fnew-developers-tools-netvibes-platform-and-the-uwa-iframe-method%2F&amp;title=New%20developers%20tools%3A%20Netvibes%20Platform%20and%20the%20UWA-Iframe%20method" title="blogmarks"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F11%2Fnew-developers-tools-netvibes-platform-and-the-uwa-iframe-method%2F&amp;title=New%20developers%20tools%3A%20Netvibes%20Platform%20and%20the%20UWA-Iframe%20method" title="description"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a><br />
	<a rel="nofollow" target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fdev.netvibes.com%2Fblog%2F2008%2F06%2F11%2Fnew-developers-tools-netvibes-platform-and-the-uwa-iframe-method%2F" title="Wikio"><img src="http://dev.netvibes.com/blog/wp-content/plugins/sociable/images/wikio.gif" title="Wikio" alt="Wikio" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.netvibes.com/blog/2008/06/11/new-developers-tools-netvibes-platform-and-the-uwa-iframe-method/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
