MOSS + AJAX + A tinkle of Imagination = Endless Web 2.0 Possibilities

_MOSS_ has the term "Portal" dropped for a reason. Unfortunately, just like everything else, we have to carry our legacy along and that means that customers today still view MOSS as a portal product play.

While I would not disagree with that, portal functionality is but one of the collaborative features that comes along with MOSS. I usually encourage people to view SharePoint as a platform. An application development platform to enable and extend collaborative, unified communicative, interative and intuitive solutions. Because SharePoint comes with rather rich features and functionalities out-of-the-box (ootb) and because the underlying platform is on Microsoft .NET 2.0, customizing and extending SharePoint is easy.

One of the things that people tend to look past in SharePoint, besides its inherent features and functionalities such as Search, Document Management, Personalization, etc are some of the elements of Social Computing that comes with it or that can be extended with it. 

Of course, there are the blogs, wikis features that are out-of-the-box. I see many compare with the blogs or wikis-specific application engines out there and argue that MOSS is rather short at times. Again, I point to the fact that MOSS is an application platform. It is made to reach its potential throught customization. While this can be done manually, there are many many many 3rd party best-of-breed solutions out there on top of SharePoint today that can really transform SharePoint. I mean, who really would know SharePoint is powering sites like this and this? These solutions can be found commercially via the many Microsoft partners out there as well as via the communities such as Codeplex, SourceForge.NET, and other online communities such as here, here and here, just to name a few.

To further enhance its social computing features, you can just simply just use a few lines of very simple AJAX scripts on ASP.NET 2.0 to transform SharePoint to enable cross-community collaboration such as with del.icio.us, flickr, digg, snap, soapbox, etc.

Of course, Microsoft is quick to extend its ootb features with the release of its online business toolkit which further enhances the Web 2.0 capabilities of SharePoint. Read more about it here.

I recently came across a request to be able to extend the ootb RSS Viewer Web Part to refresh itself (without any entire page reloading) after a configured period of time. This is so that the users would be able to see an updated view of the latest breaking news by subscribing to the RSS feeds of their favourite news service providers without pressing the Refresh F5 button many times.

It took me exactly 15 minutes to code up a new web part to do just that using ASP.NET 2.0 and Visual Studio 2005. Actually, it just took 5-6 lines of Javascript code and I am able to have my own auto-refresh RSS web part, bearing in mind that web parts in MOSS are rendered as nothing but the <DIV> HTML tag.

  var _q = rndString(3);
  xmlhttp = new XMLHttpRequest();
  xmlhttp.open("GET", "http://www.softwaremaker.net/blog/SyndicationService.asmx/GetRss" + "?" + _q, true); // so that the browser wont read from its cache

  xmlhttp.onreadystatechange=function() {
    if(xmlhttp.readyState == 4) {
       var outputXHTML = xmlhttp.responseXML.transformNode(_yourXSLTransformHere_);
       document.getElementById('myAutoWebPartDIV').innerHTML= outputXHTML

...

var t;
t=setTimeout("_Call_This_Javascript_To_Run_Itself_After_10_Seconds()",10000)

I will leave out the inheritance of WebParts plumblings for the reader to try out on their own on how to build and customize your own web part. Scott Guthrie provides some very good starting resource on how to do so va his blog post here.

As you can gather from here, with the right mix of .NET 2.0 code and Javascript, the possibilities of having Web 2.0 capabilities in SharePoint is really only limited by your imagination. All you really need to do is just to get your hands dirty and try.

Published Monday, June 25, 2007 8:05 PM by Softwaremaker