SharePoint, XBOX, .NET, Technology - What I am reading

    [Home] [Recent] [Site Map] [SharePoint] [XBOX]

   

Microsoft SharePoint Products and Technologies Team Blog

6/23/2007 "Under the Hood" white papers for Fantastic 40 Application Templates and Splendid 7 My Site Templates now available!

Ever since the releases of the ”Fantastic 40” Application Templates for WSS 3.0 and “Spendid 7” Role-Based My Site Templates for MOSS 2007 during the past several months, many people have asked, “How did they build this or that?” or “Why would they build it this or that way?” So, I’m very happy to announce that the “Under the Hood” white papers for both sets of templates are now available for you to download via the hyperlinked titles below!

“Under the Hood” of the Fantastic 40 Application Templates

The purpose of this paper is to describe how Microsoft developed the application templates, identifying best practices for how to work with core capabilities within both Windows SharePoint Services and SharePoint Designer, with the goal of empowering customers and partners to create their own applications. The paper is not a substitute for the Windows SharePoint Services 3.0 SDK, nor is it primarily a developer resource. Developers should use the SDK for understanding generally how to extend Windows SharePoint Services 3.0.

This paper is meant to be a resource for a new breed of site designers. Because Windows SharePoint Services and SharePoint Designer make it possible to build so much application functionality through the UI, advanced development skills are not required to build rich applications. To be sure, this paper does describe some custom code implementations for particularly tricky design patterns, but the overall methodology should be accessible to non-developers and is presented with that audience in mind. Developers may want to quickly read through the early sections on tools and methodology and pay more attention to the description of the design patterns and the specific examples of how to implement those design patterns

When you finish this paper, you should have a good understanding of how to design and architect an application, how to begin by building a site directly in Windows SharePoint Services, including building linked lists, custom columns, libraries, workflows, and so on, how to then open the site in SharePoint Designer to make further customizations, create custom forms, add custom code to change certain behaviors, create custom workflows, and so on, and, finally, how to create the application template itself and deploy it for usage.

“Under the Hood” of the Splendid 7 My Site Templates

This paper discusses the strategy for building the role-based My Site templates and takes an in-depth look at the common features and Web Parts that make up each of the templates. The paper also provides guidelines for branding, extending, and deploying the My Site Templates and covers a comprehensive set of scenarios that include collaboration, business process management, reporting, document lifecycle management, and project management.

 

<Lawrence />

6/22/2007 Microsoft Office SharePoint Server 2007 VHD (i.e. Virtual Machine) now available for download!

Since posting the blog entry a couple of weeks ago about the MOSS 2007 Technical Resources DVD that was distributed to every TechEd Orlando attendee, numerous people have asked about how they can get a copy of it. While I"m still working out the details (the VM corruption problem has caused a delay in my original plan to make the DVD broadly available by June 15th), there is now an alternative way for you to download the VM portion of the DVD.

Here"s the blurb from the download page:

This download enables you evaluate Microsoft Office SharePoint Server 2007. Microsoft Office SharePoint Server 2007 is an integrated suite of server capabilities that can help improve organizational effectiveness by providing comprehensive content management and enterprise search, accelerating shared business processes, and facilitating information-sharing across boundaries for better business insight. Office SharePoint Server 2007 supports all intranet, extranet, and Web applications across an enterprise within one integrated platform, instead of relying on separate fragmented systems. Additionally, this collaboration and content management server provides IT professionals and developers with the platform and tools they need for server administration, application extensibility, and interoperability.

This fully functional pre-configured VHD provides you a trial software will automatically expire after 30 days. This is a preconfigured virtual machine contained within the Virtual Hard Disk (VHD) format. Virtual Server 2005 R2 is required to run this VHD.

The virtual machine includes a copy of the MOSS 2007 Product Evaluation Guide (right on the Windows Desktop) and is configured so that the functional walkthrough at the end of the Eval Guide works hand-in-hand with it. That"s just brilliant! Much thanks to Woody Windischman (a SharePoint MVP) and my colleague, Richard Riley, who"s a bit shy about posting this blog entry himself, for making this useful resource available! :-)

Now, go get the VHD from here!

<Lawrence />

6/21/2007 Announcing three CodePlex projects for community developed SharePoint WCM components

There"s been some buzz about the Community Kit for SharePoint during the past few days, but it"s not the only exciting and useful SharePoint oriented shared source project on CodePlex. The SharePoint Governance, SharePoint Features, and SharePoint Learning Kit projects are definitely also worth a good look.

Now, a couple of SharePoint MVPs, Andrew Connell and Spencer Harbar, who are well known within the community for their expertise in the web content management capabilities of MCMS 2002 and MOSS 2007, have accepted the responsibility for adopting and enhancing the WCM field controls, web parts, and utilities donated by the Microsoft SharePoint product group and for growing the community of volunteers, who will help create even more shared source WCM components in the future.

Their SharePoint WCM projects and the currently available components are listed below:

SharePoint 2007 WCM Field Controls
A collection of sample Field Controls for use within Publishing Sites built using Office SharePoint Server 2007"s Web Content Management features.

  • MultimediaFieldControl: Custom field type and control allowing content authors to specify a URL, width and height of a media file (SWF, PDF, WMV, MPEG, AVI, MPG, MOV) and renders the display of the control with the appropriate ActiveX control markup.

SharePoint 2007 WCM Web Parts
A collection of sample Web Parts for use within Publishing Sites built using Office SharePoint Server 2007"s Web Content Management features.

  • FAQWebPart: Web Part that allows business users to contribute to a frequently asked questions list which is rendered with DHTML allowing users to expand/collapse each FAQ item.
  • RandomFlashMovieWebPart: Web Part that allows a content author to select one or more Flash movies from a SharePoint library. The Web Part will then display one of the Flash movies, at random, in display mode.
  • ThumbnailWebPart: Content authors can specify a SharePoint library containing images that the Web Part will generate thumbnails for. It allows content authors to specify the size, sort order and the number of thumbnails to be displayed in one row.

SharePoint 2007 WCM Utilities
A collection of useful utilities for Publishing Sites built using Office SharePoint Server 2007"s Web Content Management features.

  • METATagsGenerator: This ASP.NET 2.0 server control renders HTML tags for each field in the current page’s content type.
  • PropertyBagFeature: Allows content authors to modify values within the property bag of pages… similar to the custom properties provided in MCMS 2002.
  • SharePointSSLHttpModule: Makes it easy for developers to SSL enable certain parts of a MOSS 2007 WCM Publishing site.

 

<Lawrence />

6/21/2007 Excel 2007 Add-in for Synchronizing Tables with SharePoint Lists - now available!

In Excel 2003, you can connect to (read from) and update (write to) lists that reside on SharePoint (WSS 2.0 or WSS 3.0) sites. This allows you to keep the information in your Excel 2003 tables synchronized with the information that appears on the SharePoint site.

In Excel 2007, the ability to update the information in SharePoint lists from Excel is deprecated. Instead, Access 2007 is the recommended platform for writing data to SharePoint lists and for using lists offline. Unfortunately, this upset many Excel 2003 users to the point of being unwilling to upgrade to Excel 2007.

Specifically, in Excel 2007, the ability to update SharePoint lists changed in the following ways:

  • Existing files from Excel 2003 load and continue to support update functionality when opened in Excel 2007.
  • Lists that link to a SharePoint site are converted to read-only tables when you save existing files to the new Open XML file formats.
  • It is still possible to publish a table to SharePoint lists; however, this is a one-time write operation to SharePoint.

The good news is that an Excel 2007 Add-in for Synchronizing Tables with SharePoint Lists has just been released by Microsoft! This add-in allows you to publish a read-write list to a SharePoint list. However, the trade-off is that that you cannot save the workbook in the new Office Open XML Formats. Instead, to retain the functionality, you need to save the workbook in the Excel 97-2003 (Biff8) file format.

For more information, go here.

 

<Lawrence />

6/21/2007 Using Javascript to Manipulate a List Form Field

The following blog entry is a cross-posting from the SharePoint Designer Team Blog. It has received lots of kudos, so I thought that it deserves a bit more visibility.

<Lawrence />

 

Hi, my name is Rob Howard, and I’m a Program Manager with the SharePoint Designer team. Like several of the other people posting here, I also built many of the Application Templates for Windows SharePoint Services.

If you’re familiar with them, you may have noticed that in several of the application templates we use a bit of Javascript to set default form values based on the query string. Because we found this to be useful in many different cases throughout our applications, I wanted to share our method with you guys so that you can include it in the applications you develop.

When might you use this?

It’s pretty easy to set a field’s default value through the list settings in the browser UI, so why might you need Javascript to set a default field value? The reason is that field default values can only take static values or simple formulae based on the current user or today’s date. If that meets your needs, then I’d definitely recommend sticking with that method. Sometimes, though, you may want the form to fill with default values based on the user’s interaction with the previous page, and that’s exactly where this method comes in.

How does it work?

In short, we add some Javascript to the page that runs when the body is loaded. This Javascript parses the page’s query string, locates the HTML objects that are rendered by the relevant SharePoint fields, and sets their value based on the information in the query string.

getTagFromIdentifierAndTitle

The most important part of our solution is the “getTagFromIdentifier” function. This function finds the HTML element rendered by a given SharePoint FormField control. It takes the following parameters:

  • tagName – The name of the tag rendered in the form’s HTML
  • identifier – The string associated with the SharePoint type of the relevant field
  • title – The value of the relevant HTML tag’s “title” attribute, which also matches the field’s display name

Here’s a partial table of SharePoint column types and their corresponding “identifiers” and “tagNames”:

SharePoint Field Type identifier tagName
Single Line of Text TextField input
Multiple Lines of Text TextField input
Number TextField input
Currency TextField input
Choice (dropdown) DropDownChoice select
Lookup (single)* Lookup select
Lookup (multiple) SelectCandidate; SelectResult select
Yes/No BooleanField input

*Lookups are a bit more complicated because Lookup FormFields render differently when the target list contains more than 20 items. See the end of the post for an example.

function getTagFromIdentifierAndTitle(tagName, identifier, title) {

  var len = identifier.length;

  var tags = document.getElementsByTagName(tagName);

  for (var i=0; i < tags.length; i++) {

    var tempString = tags[i].id;

    if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {

      return tags[i];

    }

  }

  return null;

}

fillDefaultValues

Now that we have the HTML elements that we want to set, we need the values with which to set them. In our solution, we wrote the “fillDefaultValues” function, which parses the page’s querystring and then uses the values to set the field defaults.

function fillDefaultValues() {

  var qs = location.search.substring(1, location.search.length);

  var args = qs.split("&");

  var vals = new Object();

  for (var i=0; i < args.length; i++) {

    var nameVal = args[i].split("=");

    var temp = unescape(nameVal[1]).split("+");

    nameVal[1] = temp.join(" ");

    vals[nameVal[0]] = nameVal[1];

  } 

  // Set HTML element default values here

}

_spBodyOnLoadFunctionNames

In most cases SharePoint pages are based on a master page that contains the “body” element. These content pages can’t directly add a function to the body’s onload event. In order to work around this limitation, SharePoint provides the “_spBodyOnLoadFunctionNames” array. When the body is loaded, the onload event handler executes each function whose name is contained in this array. We added “fillDefaultValues” to the array so that it would run when the body’s onload event fires.

_spBodyOnLoadFunctionNames.push("fillDefaultValues");

All Together Now

With the script above, you can set most different field types to any value from the querystring – or any other source that javascript can access. Below is a full example of the script we use to set the default value of a Lookup field based on an ID stored in the querystring. You’ll notice that setting a Lookup field is a bit more complicated than some other field types. The reason is that Lookup FormFields are rendered with different HTML when the target list contains more than 20 items.

Enjoy!

<script type="text/javascript">

 

// This javascript sets the default value of a lookup field identified

// by <<FIELD DISPLAY NAME>> to the value stored in the querysting variable

// identified by <<QUERYSTRING VARIABLE NAME>>

 

 

// Customize this javascript by replacing <<FIELD DISPLAY NAME>> and

// <<QUERYSTRING VARIABLE NAME>> with appropriate values.

// Then just paste it into NewForm.aspx inside PlaceHolderMain

 

_spBodyOnLoadFunctionNames.push("fillDefaultValues");

 

function fillDefaultValues() {

  var qs = location.search.substring(1, location.search.length);

  var args = qs.split("&");

  var vals = new Object();

  for (var i=0; i < args.length; i++) {

    var nameVal = args[i].split("=");

    var temp = unescape(nameVal[1]).split("+");

    nameVal[1] = temp.join(" ");

    vals[nameVal[0]] = nameVal[1];

  } 

  setLookupFromFieldName("<<FIELD DISPLAY NAME>>", vals["<<QUERYSTRING VARIABLE NAME>>"]);

}

 

function setLookupFromFieldName(fieldName, value) {

  if (value == undefined) return;

  var theSelect = getTagFromIdentifierAndTitle("select","Lookup",fieldName);

 

// if theSelect is null, it means that the target list has more than

// 20 items, and the Lookup is being rendered with an input element

 

  if (theSelect == null) {

    var theInput = getTagFromIdentifierAndTitle("input","",fieldName);

    ShowDropdown(theInput.id); //this function is provided by SharePoint

    var opt=document.getElementById(theInput.opt);

    setSelectedOption(opt, value);

    OptLoseFocus(opt); //this function is provided by SharePoint

  } else {

    setSelectedOption(theSelect, value);

  }

}

 

function setSelectedOption(select, value) {

  var opts = select.options;

  var l = opts.length;

  if (select == null) return;

  for (var i=0; i < l; i++) {

    if (opts[i].value == value) {

      select.selectedIndex = i;

      return true;

    }

  }

  return false;

}

 

function getTagFromIdentifierAndTitle(tagName, identifier, title) {

  var len = identifier.length;

  var tags = document.getElementsByTagName(tagName);

  for (var i=0; i < tags.length; i++) {

    var tempString = tags[i].id;

    if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {

      return tags[i];

    }

  }

  return null;

}

</script>

6/21/2007 Just Published: Development Tools and Techniques for Working with Code in Windows SharePoint Services 3.0 (Parts 1 and 2)

I"m posting this on behalf of my colleague, Mike Fitzmaurice. In Mike"s own words:

Have you wanted information on how to package web parts, event receivers, or list/feature/site definitions into solutions? How to deploy those solutions from a development environment to a test environment and then to production? How the deployment of application components and assets is different from content deployment? How to push a new version of a web part, feature, or application page out to a site that has the old version already in production?

This white paper covers it. So, go get it now!

  • Part 1: http://msdn2.microsoft.com/en-us/library/bb530302.aspx
  • Part 2: http://msdn2.microsoft.com/en-us/library/bb530301.aspx

I’m not saying that everything just became easy (it hasn’t), but I *am* saying that everything just became explicit. The paper has recommended practices, examples, etc. Although you still can’t upgrade a list/feature/site definition over an old one, this paper will show you how to deprecate the old one and have the new one take over for any newly-created sites/features/lists.

It also applies to MOSS 2007 just as much as WSS 3.0, but it’s all about platform issues, so it’s focused on the WSS base platform, and its title reflects that.

This white paper was written by Patrick Tisseghem of U2U and a SharePoint MVP, with heavy consultation from Mike Ammerlaan and myself.  It’s what we recommend you do with the code and definitions you write. 

 

<Lawrence />

6/19/2007 Community Kit for SharePoint 2.0 Pre-Release announcement

About 3 months ago, I pre-announced the kick-off of the Community Kit for SharePoint (CKS) 2.0 effort, and fairly quickly, over 20 volunteers signed up to help. After just 2 months of work (mostly on nights and weekends), the CKS team has accomplished quite a bit and has decided to release a couple of editions and components to the community for evaluation and feedback. The CKS along with over 50 other active SharePoint oriented projects on CodePlex provide a very positive indicator of the power and extensibility of the SharePoint platform. I expect many more developers in the community to join SharePoint oriented shared source initiatives such as the CKS over the next 12 months. If you are interested, the CKS team can always use more help.

This CKS 2.0 Pre-Release contains the following:

  • Enhanced Blog Edition Beta 1
  • Enhanced Wiki Edition Alpha
  • ChatterBox AJAX Beta
  • Tag Cloud

Enhanced Blog Edition Beta 1

The CKS:EBE was designed to enhance and extend the functionality of the built-in blog feature in Windows SharePoint Services 3.0. By leveraging its innovative Modular Theme Framework (MTF), your blog can look nothing like a typical SharePoint blog while retaining the ease of use of the SharePoint blog’s built-in functionality. You can modify an existing theme or install a new one even if your blog is provided by an external SharePoint hoster or an internal IT department, and you only have Contributor level permissions. The EBE team’s motto is that your blog should look as smart or creative as you think you are. :-)

The MTF is the brainchild of Vincent Rothwell, who was the Lead Developer for CKS:EBE Beta 1. Here’s the default out of the four included themes in the EBE:
image

Not impressed? Well, with just 2 clicks of the mouse, your blog can instantly look like the screenshot below, complements of the excellent design work done by Isha Hartono of Provoke Solutions in New Zealand. Urged on by CKS:EBE team member, Ari Bakker, the Creative Design team at Provoke has created several other themes, which are available separately.
image

If you’re still not impressed by this or the remaining two included themes (Summer and Bird), you can easily create and deploy your own by following the CKS:EBE MTF User and Designer Guide (written by Ari) included in this release. If you create a theme and would like it to be considered for inclusion in the next release of the EBE, please contact Brent Bolleman, EBE"s Program Manager.

Here’s what the Wildlife theme looks like after you’ve signed in. Notice that the “Blog Admin” list of links is now visible.
image

And here’s the EBE Blog Settings page, which is accessible from the standard Site Settings page or directly via the /_layouts/ebe/settings.aspx URL. Notice the settings for enhanced features such as post trimming, integration with Akismet for comment spam detection, and custom RSS feed URL.
image

There’s one other EBE feature to highlight: friendly URLs or FURLs! For example, the URL for the blog post in the screenshot earlier is http://cks.wssblogs.com/archive/2007/06/16/welcome-to-the-community-kit-for-sharepoint-enhanced-blog-edition.aspx rather than http://cks.wssblogs.com/Lists/Posts/ViewPost.aspx?ID=2, the latter of which isn’t as conducive for search engine optimization. Moreover, the default RSS feed URL is now http://cks.wssblogs.com/rss.xml rather than something like http://cks.wssblogs.com/_layouts/listfeed.aspx?List=%7BB58689A3%2D5343%2D43AE%2DB342%2DAF4DBC6249F1%7D.

While these are indeed exciting and useful enhancements for the SharePoint blog, be warned that the Beta 1 release of the CKS:EBE is not recommended for production environments. The EBE team wants to further refine these features and has several more key features, including the often requested support for trackbacks/pingbacks and import from other blog services, planned for a feature complete Beta 2 release that is tentatively scheduled for the October. Please download and evaluate CKS:EBE Beta 1 and provide feedback to the team.

Aside from the contributions by Vince, Ari, Isha, Shane Perran (Summer theme), and Bob Medcalf (Bird theme), this Beta 1 release simply could not have happened without program management by Brent Bolleman, testing by Ki Tsang (who also wrote the Installation Guide), and more testing by a handful of other CKS:EBE team members: Nadeem Mitha, Ben Robb, Pedro Pablo Diaz Arguello, Jagadesh Sri Raja Kakarlapudi, and Bas van Atteveldt.

Enhanced Wiki Edition Alpha

Wiki Discussion Feature

Since there’s currently not much documentation available anywhere about how to enhance and extend the SharePoint wiki, the CKS:EWE team felt that it would be worthwhile to release even in alpha form some of the work that they’ve been doing. In this release, the key feature is integration between the SharePoint wiki and the SharePoint discussion board that enables a piece of functionality that’s similar to that of MediaWiki, which powers the popular Wikipedia.org website.

Upon installing the EWE, every SharePoint wiki page will have a new “Discuss” button, which opens an associated discussion board page.
image

On the discussion board page, two new buttons are added. The “Topic” button brings the user back to the associated wiki page, and the “Alert Me” button sets up an e-mail alert for just the specific discussion topic whereas the standard SharePoint “Alert Me” feature would setup an alert for the entire discussion board.
image

Lastly, deleting or renaming a wiki page would be automatically reflected on the discussion board.

Please carefully read the CKS:EWE Alpha Installation Guide for important instructions and caveats about this release. Separately, take a look at the Technical Referece document and the source code if you’d like to know how the functionality was developed. The EWE team is looking for 2-3 more developers, so ping David Mann, the Program Manager, if you’re interested.

A big thank you to Mark Arend, who was the Lead Developer of this Alpha release! Additional features that are planned for the EWE Beta release include support for the CKS: Tag Cloud, a couple of templates, custom tokens such as an in-page Table of Content and associated bookmarks, and duplicate detection for the “FAQ wiki” scenario.

Wiki Import/Export Tool

The EWE team is at a very early stage of designing an import/export tool for the SharePoint wiki. The goal is for this tool to be able to import from other wiki products such as FlexWiki, MediaWiki, and TWiki, and Confluence and also from Word and OneNote as well as to export to Word via HTML (per page) and MHTML (entire wiki) formats.

For this CKS 2.0 pre-release, the EWE team is making available a fairly stable build of the FlexWiki Import Tool, for which the source code was graciously donated by Michael Cheng, a developer in the SharePoint product group. This is a one-off tool that will ultimately be converted to a plug-in for the Wiki Import/Export Tool, so if you’re currently using FlexWiki, please test the tool and provide feedback.

ChatterBox AJAX Beta

This is an updated ASP.NET AJAX-based version of the ChatterBox web part that was released about a month ago. In addition to the quick and easy persistent chat functionality of the previous version, ChatterBox AJAX provides enhancements such as color coded chat entries and presence detection. The final version, which may include (no promises though) support for multiple chat channels, will be released shortly after Service Pack 1 for WSS 3.0 and MOSS 2007 becomes available, which is when ASP.NET AJAX will be officially supported in the SharePoint platform.

Thanks again to Matt Swann (another developer in the SharePoint product group) for continuing to enhance the ChatterBox web part during his spare time! If you’re interested in helping him make the ChatterBox even more useful and cool, please let him know.
image

Tag Cloud

This is a production quality release of the CKS: Tag Cloud, so I’d encourage you to try this out in a pilot environment and eventually deploy it into production. Thanks to Ki Tsang (yet another developer in the SharePoint product group) for all the hard work. The CKS team plans to fully support and leverage the Tag Cloud in various CKS editions.

The CKS Tag Cloud solution consists of four web parts:

  1. Tag Cloud web part – displays tags in weighted format. The more popular (based on the number of uses or associations with SharePoint list items) a tag is, the bigger it is shown.
  2. Tag Browser web part – displays items associated with a tag. The order of items can be customized.
  3. Related Tag Cloud web part – displays related tags co-existed with a tag.
  4. URL Browser web part – displays link items sorted on number of saves. This web part is designed to be used for the social bookmarking scenario.

Here’s a snapshot of the Tag Cloud web part:
image

Much More to Come…

As the founding member of the Community Kit for SharePoint team, I am gratified beyond measure by the great progress that has been made by such a wonderful group of passionate, creative, and skillful individuals. The ultimate goal of the CKS is to enable community oriented features and solutions by leveraging, enhancing, and extending SharePoint as a social computing platform. This is “cool and fun stuff” that I would be doing even if I wasn’t the Community Lead for SharePoint, so I’m doubly happy that I can do it as part of my day job! Of course, given how busy my day job has become, I end up doing much of my work as the overall Product Manager for the CKS at night and on weekends just like most of the other CKS volunteers. :-)

You can expect much more to come from the CKS team as it continues to work diligently towards feature complete beta releases scheduled for October and final releases prior to the SharePoint Conference 2008 event where the CKS team will have one hell of a party to celebrate its accomplishments, so join the team and be part of the action! Even ISVs like Bamboo Solutions and KWizCom have committed to contribute to the CKS.

I hope that this pre-release of CKS 2.0 will be useful to you even though much of it is not recommended for production implementation. I encourage you to try out the editions and components that are most relevant to your interests and needs. Please provide feedback via the Discussions or Issues list on the CKS project site on CodePlex rather than leaving a comment here. Thanks!

<Lawrence />

6/14/2007 MOSS Has Got Game - Glu Mobile’s Website (www.glu.com) - How We Did It - Part 1 of 3

Allin Consulting, a Microsoft Gold Certified Partner in the U.S., recently implemented Glu Mobile’s website at www.glu.com. Glu Mobile is a leading publisher of mobile games and entertainment. Allin has been developing solutions around SharePoint and .NET since version “1.0” of both platforms. This is Part 1 in a three part series in which the Allin team (Shawn Parker, Robert Sweeney, Eric Hansen, Stefan Nilsson, and Karl Kuhnhausen) will describe how they architected and developed the glu.com website.
image

<Lawrence />

 

Overview

Shortly after the Glu Mobile website (www.glu.com) went live in late April, it attracted quite a bit of attention in the SharePoint community and at Microsoft. Microsoft invited us (the team at Allin Consulting) to write a “How We Did It” series of blog entries to provide some insights into how you can leverage MOSS 2007 to build a really cool looking, fast, and dynamic Internet facing website. Some people still don’t believe that we could develop such a rich, interactive user experience on SharePoint, so we kept the standard blue and orange “Site Actions” menu (for users who are logged in and have sufficient permissions) just to prove that it is indeed SharePoint underneath!
image 

Our series of blog entries will have the following three parts:

  • Part 1: Overview of the Solution - A survey of the solution with a focus on content targeting and multi-language capabilities
  • Part 2: Master Pages and User Controls – How we provide the rich user experience with our master pages and custom web parts
  • Part 3: Performance – Cache is King – How we optimized various features to get the site to perform to the expectations of a web audience

Business Needs and Solution

Glu needed to redesign and relaunch their website to drive increased revenue globally and to coincide with their upcoming IPO (talk about business criticality!). The previous site provided some marketing of their products, but they had limited ability to easily manage content and target and sell products to their growing community of customers. The previous site (screenshot below) was built in PHP and required developer intervention to publish content.
image

Glu looked to our team at Allin Consulting to develop their next generation “Glu 2.0” website as a dynamic, richly branded, commerce-enabled solution with efficient web content management. Their business model was to make available very quickly a targeted list of games that a user’s mobile phone carrier and device will support, encourage them to try the games online, and then easily buy and download any game to their device. Key features of the site included:

  • User profile management and personalization with targeted content and promotions in multiple languages
  • Modular components – content published as a set of functional modules; e.g. hot games, my games, new games, promotions, ad rotations
  • Search – enable users to quickly find popular games with full text search
  • SMS integration to quickly enable the sales and download of games
  • Distributed content management and publishing – non-technical regional content owners can manage their own content
  • User analytics for tracking browsing and purchasing behavior

Technical Approach

Our design philosophy from the start was to integrate the best of ASP.NET 2.0 and MOSS 2007 to implement a highly functional, manageable, and scalable site within a short amount of time. We were competing against open source LAMP-based (that would be Linux, Apache, MySQL, PHP/Perl/Python) CMS solutions in the bidding stage of the project, and MOSS 2007’s Web Content Management (WCM) and platform capabilities gave us a solid foundation to build upon. The entire solution took about 16 weeks to develop in time for the initial launch of the site.

All text and graphical content (except for the Flash-based trailers and game emulators – these are better streamed from media servers) are stored and managed in SharePoint lists and dynamically rendered via a set of 11 common pages with custom web parts. Management of the content is facilitated by the “Glu Content Manager,” which leverages SharePoint’s out-of-the-box WCM features. Without having to develop any custom WCM features, we were able to focus our efforts on functionality and user experience in the master pages, web parts, and a light custom framework to meet Glu’s business requirements. Here"s a screenshot of the Game Genre Navigation Graphics in the Genre List.
image

Public vs. Publish

There are two sides of glu.com, each with a completely different purpose and user audience. The first is the public site with the rich graphics, streaming video game trailers, demo games, and SMS integration with mobile carriers for purchasing and downloading games. This site can serve hundreds of thousands of users around the world in multiple languages, and finding, trying and, buying games are the use cases. You can browse the games list and try any of the available games for a predefined time limit in an emulator to get a sense of the game play experience. Personalization is also critical for this audience. Based upon a user’s preferences of region, language, mobile carrier, and mobile device as well as a product’s popularity, the site automatically promotes relevant mobile games, ring-tones, or wallpaper. Since we are Allin (“all in”), this is our favorite game to play. :-)

The other side of glu.com is a secure environment that supports internal Glu employees, who are primarily content publishers. They manage all of the content, graphics and language variations of games, wallpapers, ring-tones, and product reviews as well as corporate information like press releases and job postings. What is most important to these users is efficient management and publishing of digital assets. The users manage and update all of the web content in this environment, and the changes are then pushed out to the public site.

Authentication

In order for the site to support both the public Internet users and the content publishers, we used two separate authentication providers. For internal content publishers, the standard Active Directory membership provider worked just fine, but we didn’t want to store any of the external users in AD, so we created our own custom authentication provider built on the ASP.NET 2.0 provider model, which MOSS, by way of WSS 3.0, readily supports. In fact, all external users remain anonymous as far as IIS and MOSS is concerned, even when they appear “logged-in” the site. This was adequate for our solution because external users did not require any standard MOSS membership features since we were providing a set of custom controls for personalization and content targeting.

Content Targeting

One of the most important aspects of the public view of the site was the ability to tailor the content on the pages to the individual user. To accomplish this, we allow each user to create a player profile with a username and password along with some basic information like mobile phone number, which is needed in order to purchase products over the website. In order to prevent spammer bots from auto-registering on the site, a CAPTCHA control was added as part of the user registration page (shown below).
image

As the user navigates through the site, product clicks are logged and used to display content for similar products back to the user. Even for those users who are not “logged-in,” their clicks are also tracked and are associated with a proxy profile that will be replaced with an actual profile if/when the user eventually registers. This helps to encourage users to register as the site focuses more and more on the types of products they have shown interest. The user will also be presented with teasers for new games, coming soon titles, and related titles as well as top games and hot games in the genre where they spend most of their time. All click tracking data is stored in an SQL Server 2005 database.

The entire public site was broken up into logical components that were built as custom ASP.NET 2.0 web part modules and then placed on SharePoint pages. We consciously did not develop SharePoint web parts as we did not need their added functionality (and weight) over the custom functionality we could build with the standard ASP.NET 2.0 web parts. Each module was coded to render SharePoint list content based on the type of page and on the country and region the user resides. If a web part is placed on a home page and the user logged in is in the United States, it will only display content that applies to U.S. customers sorted in the order of most popular games. That same web part placed on a genre (Casual, Classic, Sports, etc.) or product page will filter the content further to only show content of the active genre or genre of the product detailed in the product page. For example, Cricket and Football (Soccer) games are highlighted in the Sports genre if you select the U.K. as your preferred country (shown below).
image

Multi-Language Support

Glu had a critical business requirement for the website to support 10 languages used in 64 countries. Using MOSS’s variations feature where each variation site is based on the country code and the language code for the 11 common publishing pages we had built would have resulted in over 7,000 pages to support (e.g. 64 countries x 10 languages x 11 pages = 7040 total pages). This conflicted with our goal of providing the lowest possible number of common pages that would dynamically render content.

In order to reduce the number of total pages, we came up with a replacement site variation feature that supports geographic regions (North America, EMEA, etc.) and takes language completely out of the equation. By consolidating the 64 countries into 5 regions resulted in the reduction of total pages to just 55, which greatly simplified the localization effort and ongoing maintenance. Our custom variation engine gave us much more flexibility to pair any language with any country and then dynamically render the appropriate page. We still detect the browser’s country and language and redirect to the correct region site that covers the respective country, but through the user profile, the user is able to select any combination of the 64 countries and 10 languages.

Here"s a screenshot of a localized page on which all of the content and controls have been localized.
image

The user can select the preferred language in the control, whose close-up view is shown below.
image

Summary

Since MOSS 2007 is built on top of WSS 3.0, which is built on top of ASP.NET 2.0, it provided us with the flexibility to create the custom solution that Glu needed to differentiate themselves in the marketplace. At the same time, we were able to rely on MOSS to provide all of the web content management capabilities that would have taken us months to develop. In Part 2 of this blog series, we will drill down on how we developed the rich user experience with master pages and custom web parts. If you have any questions at this point, please leave a comment here or e-mail us at glu-team@allincal.com.

 

The Glu.com Team at Allin Consulting

  • Shawn L. Parker - Solutions Architect
  • Robert Sweeney - Sr. Consultant
  • Eric Hansen - Project Manager
  • Stefan Nilsson – Practice Manager
  • Karl Kuhnhausen – Practice Director
6/14/2007 Prescan.exe Download and Information

I have to thank Sean Livingston and Ambrose Treacy for following through.  Prior to launch I pushed really hard to get prescan as a separate download.  Neither of them was on the WSS team during my first attempt.  After a number of fun hoops.  Ambrose and friends really came through.  Unfortunately I was busy with TechEd and didn"t get this post out sooner.

First you can get Prescan the pre-upgrade scan tool for WSS and MOSS here:

http://www.microsoft.com/downloads/details.aspx?FamilyID=e8a00b1f-6f45-42cd-8e56-e62c20feb2f1&DisplayLang=en

Before you can upgrade to Microsoft Office SharePoint Server 2007 or Microsoft Windows SharePoint Services 3.0, you must run the Prescan.exe utility against your existing Web sites. This pre-upgrade scan tool scans your sites and reports issues, allowing you to fix any errors before you perform an upgrade.

If you have not successfully run this tool and you attempt to upgrade your environment, when you attempt to run the SharePoint Products and Technologies Configuration wizard, the wizard will exit and prompt you to run the tool. Please resolve any issues discovered by the pre-upgrade scan tool before the upgrade and before scheduling the upgrade.

Again, an in place upgrade will FAIL if the prescan is not successfully ran on the environment prior to upgrade.  A gradual upgrade will FAIL if prescan is not successfully ran.  A database attach upgrade will FAIL if prescan is not successfully ran.

For more information about upgrade, migration, and using the Prescan.exe utility, see the Microsoft Web site.

For Microsoft Office SharePoint Server see
http://go.microsoft.com/fwlink/?LinkId=89572

For Windows SharePoint Services see
http://go.microsoft.com/?linkid=6769480

In addition, there are some great posts on Prescan and Upgrade:

  • Bill Baer"s Prescan Wisdom and Handling Prescan Errors
  • Don"t be afraid of Prescan - Part 1
  • Your Friend Prescan and What it Does - Part 2
  • Joel Oleson"s Upgrade Related Posts
  • Shane Young"s Detailed Gradual Upgrade Steps

Visit the TechNet Upgrade Center for additional resources and partner solutions

Joel Oleson

6/9/2007 Fix for the corrupted Virtual Machine on the Microsoft Office SharePoint Server 2007 Technical Resources DVD

As an added bonus for the nearly 14,000 TechEd attendees this past week in Orlando, a copy of the updated MOSS 2007 Technical Resources DVD was placed in every attendee"s conference bag. The DVD contains the following frequently requested content:

  • Presentation slidedecks from the SharePoint Conference 2006, Project Conference 2006, and SharePoint Conference 2007 EMEA
  • RTM versions of the WSS 3.0 and MOSS 2007 SDKs
  • Top 17 MOSS 2007 case studies
  • TechNet articles and white papers on upgrading from WSS 2.0 and SPS 2003 to WSS 3.0 and MOSS 2007
  • MSDN content on migrating from Microsoft Content Management Server 2002 to MOSS 2007
  • ForeFront Security for SharePoint content
  • Updated links to SharePoint oriented online resources such as the MSDN Dev Centers, TechNet Tech Centers, and the SharePoint Community Portal
  • And much more...

image 

In addition to the content, the DVD contains a fully working Virtual Machine that has been pre-installed with evaluation versions of Windows Server 2003, SQL Server 2005, MOSS 2007, SharePoint Designer 2007, and Office Professional Plus 2007. Unfortunately, due to a rare duplication error, a large batch of the DVDs had one corrupted file that affected the installation of the VM on a host machine. The replacement file and detailed instructions on how to fix the problem are available at https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=428&DownloadID=7004. If you have any further problems with or questions about the DVD, please leave a comment.

The DVD will likely be updated with more content such as the slidedecks and podcasts from the SharePoint Conference 2007 APAC and distributed to attendees of the upoming SharePoint Connections conference in Las Vegas and the TechEd Europe conference in Barcelona later this year, so if you"re planning to attend either of those events, you now have one more thing to look forward to!

 

<Lawrence />

1 2 3 4 5 6 7 8 9 10 下一页

   

Site List:
>>Xbox Live_s Major Nelson
>>Xbox 360 & SharePoint 2007 Weblog
>>Carsten Keutmann_s Blog
>>Mohamed Zaki_s Blog [Sharepoint MVP]
>>The Mit_s Blog
>>Mart Muller_s Sharepoint Weblog
>>Microsoft SharePoint Products and Technologies Team Blog
>>SharePoint Solutions Blog
>>4GuysFromRolla.com Headlines
>>ASP.NET Blogs
>>SharePoint Blogs
>>SharePoint Blogs
>>Joel on Software
>>ADO Guy_s Rants and Raves
>>Microsoft Live Labs
>>GadgetNews
>>Windows Vista Team Blog
>>VoIP & Gadgets Blog
>>schrankmonster blog
>>Via Virtual Earth Blog
>>Feed
>>MSDN Blogs
>>Mashable!

Links:
Jack's Readings

Month Archives:
Oct 2007
Sep 2007

Top Tags:
social software social networking .NET mashable Sharepoint ASP.NET Web 2.0 Web2.0 Startups Community News Search Marketplace General Software Development AJAX Windows Vista Visual Studio Microsoft myspace Silverlight People Powered! YouTube Vista MOSS Featured News C# Events MOSS 2007 Google WPF Office 2007 Web Community Security General Personal Xbox 360 facebook Tools development SharePoint 2007 Fun Atlas Architecture ASP.NET AJAX myspace codes TheLongTail IIS SQL Server Developers Revenue Sharing Video Pictures WCF Mobile 2.0 Announcements Orcas MIX07 Arcade Team System JavaScript News



@2007 All rights Reserved