SharePoint Config

Ari Bakker's thoughts on customising and configuring SharePoint

How we did it: Fly Buys website

with 16 comments

Fly Buys is New Zealand’s leading loyalty programme and is managed by Loyalty New Zealand. Fly Buys members receive points for shopping at participating stores, which they can then use to redeem a variety of rewards from coffee machines to television sets. The Fly Buys website allows members to search for rewards or participating companies, maintain their account information, as well as allowing Loyalty to maintain content and graphics for the site.

Late last year Loyalty engaged Provoke to help redesign their website using MOSS 2007. This post describes how we used MOSS 2007 to deliver a dynamic and user-friendly website.

Fly Buys website

The goal

Loyalty wanted a new website to coincide with their brand refresh. The previous Fly Buys website was hard to maintain and unintuitive for users. Content often had to be updated in several places, or required developer intervention. Loyalty wanted a vibrant and user-friendly website that the marketing team could own and update easily, without developer intervention.

Some of the key objectives for the site were to:

  • Make it easy for the marketing team to manage content
  • Encourage people to join the programme
  • Encourage members to be more active in redeeming rewards, and in engaging with participants
  • Provide an easy way for maintaining semi structured data, including rewards and participant information

The solution

Our solution used MOSS 2007’s Web Content Management and platform capabilities as a foundation, with ASP.NET 2.0 components providing additional functionality when needed. Not having to create any WCM features allowed us to focus on the visual design and custom development, and complete the build phase of the project within the scheduled 7 weeks.

All content and images within the site are sourced from MOSS lists and rendered using master pages, page layouts and web parts. These can all be managed by members of the marketing team and are subject to an approval process before being deployed to the production environment.

Custom development was all done using Visual Studio 2005 and deployed using the WSS 3.0 solution deployment. This has meant releases can be combined into a single package and deployed via a single script.

Public vs. Publish

There are two sides to the Fly Buys website, an internal content authoring environment and the public facing internet site. The internal content authoring environment uses Windows authentication within the Loyalty environment, drawing users from Active Directory. This provides the marketing team with an accessible and secure environment for managing content. Standard MOSS 2007 Web Content Management features also make it easy to control the look and feel.

Fly Buys authoring site

The public facing website uses a custom forms based authentication implementation built on the ASP.NET 2.0 provider model. This allows us to integrate with the existing membership application to authenticate and manage account information. Using forms based authentication also allows us to take advantage of the ASP.NET 2.0 login controls, as well as standard ASP.NET 2.0 authentication and authorisation techniques. MOSS’s Content Deployment capabilities are used to move content from the internal content authoring environment to the public site.

Public site

MOSS customisation

Master pages, content types, page layouts, web parts and other MOSS components were all created and deployed as features to create the website.

The master page was based off a minimal master page and serves both the content authoring and public facing sites.

Content types and page layouts were all created inside Visual Studio and deployed using a feature. This means that these files are stored on the file system, instead of the content database, improving performance and making future releases easier.

ASP.NET development

Many of the pages on the site required custom development. These include the member related forms (join, update details, create password etc…) as well as the reward search and display. To create these pages we created user/web controls inside Visual Studio and placed these on pages within the site. To give our designers full control over the UI for the site, we render the output using XSLT.

Deployment

A solid deployment strategy is crucial for a smooth release process both initially and for subsequent releases. The deployment of the Fly Buys website is controlled entirely through solution deployment. This meant that the majority of the initial release was completed via a single script that ran STSADM commands. Subsequent releases have also been completed using a single ‘upgradesolution’ STSADM command, making the release process a breeze. This includes:

  • Creating and updating sites, lists, list items and pages (via features that use the object model)
  • Deploying master pages, page layouts, content types, style sheets and images (ProvisionedFiles within a feature)
  • Deploying user controls and custom assemblies (via solution deployment)
  • Configuration modifications (via FeatureReceiver)

We found the WSPBuilder project on CodePlex great for automatically creating the solution packages.

Lists vs. SQL

As well as the content pages, the site contains structured data such as reward and participant (a company who issues points) related items. Early on in the project we discussed the pros and cons of storing this information in SharePoint lists or in a custom SQL database. We liked the versioning, approval and editing features provided by SharePoint lists but were concerned about limitations around querying over multiple lists (i.e. as in a SQL ‘join’). To get around this our solution uses SharePoint lists to manage and publish the data, but uses a custom process to export this information into a SQL data structure that is optimised for fast searching.

This architecture allows content authors to utilise list feature such as custom views, and bulk editing (shown below), while retaining the ability to create complex cross-list queries for displaying this information. For example the random display of rewards on the homepage shows items from a de-normalised table that sources data from several lists within MOSS. This solution also means all content can be deployed using a single content deployment job, simplifying the publishing process.

Below: Some of the possible actions available from the reward list.

Reward list data

To make it easy for content authors to maintain this list data we created a set of screens that replace the default ‘edit item’ forms. This extended control over the UI allows us to provide a more friendly user experience. Within these screens SharePoint field controls are used to provide rich HTML editing functionality as shown below.

Editing individual rewards

In subsequent posts I’ll provide more details around the deployment strategy. Please leave a comment if you would like to know more about any other aspect of the project.

The Fly Buys team from Provoke was

Chandima Kulathilake (Solution Lead)

Ari Bakker (Technical Lead)

Zef Fugaz (Design & User Experience Manager)

Sarah Lewis (Account Management)

Marty Pine (Project Management)

Bob Medcalf, Kate Insoll (Design & User Experience)

Isha Hartono, Callum McNeill, Julian Clarke, Pablo Garcia, Doug Taylor, Dean Moor (Development & Integration)

Further resources

How to deploy master pages as a feature

Using ASP.Net user controls in your WSSV3/MOSS ASPX pages

WSPBuilder on CodePlex – Automated solution packaging

Post to Twitter Post to Delicious Post to Digg Post to Reddit Post to StumbleUpon

Written by Ari Bakker

January 7th, 2008 at 11:01 pm

16 Responses to 'How we did it: Fly Buys website'

Subscribe to comments with RSS or TrackBack to 'How we did it: Fly Buys website'.

  1. Cool, thanks for this. I had actually seen the MS article but skipped through it quickly as it was pretty bland documentation. The second article was very useful. In the end I used custom web controls to determine visibility on the editform based upon security…probably should have used custom field type controls but the project is already in production and we have to keep the existing columns / field types and their data.

    Jason

    30 Jun 08 at 1:28 pm

  2. Two basic approaches come to mind:

    First is to create a list definition that includes a custom editform.aspx and package this up as a feature. See the article titled "Creating Custom Form Templates" in the WSS 3.0 SDK for more details.

    The second option is to create a custom webpart, usercontrol, page or other code based component that uses the object model to manually render the fields and update the relevant list item. For the Fly Buys site we created a separate "Data Maintenance" section of the site so users didn't have to understand the underlying list structure. To do this we built a series of webparts and placed these on custom pages deployed via a feature. Chris Johnson has a good post on some of the options for custom development at http://blogs.msdn.com/cjohnson/archive/2006/09/05/application-development-on-moss-2007-amp-wss-v3.aspx

    Ari Bakker

    29 Jun 08 at 10:54 pm

  3. Actually I'll be a little more descript: I am wanting to customise the EditForm.aspx pages however I don't have the luxury of using SharePoint Designer in production. I have to package it up into a feature, and adding a DataFormWebPart with SharePoint Designer in a page and then releasing it into production as a feature doesn't work for me. I assume the web part is configured for the development environment. How did you do it?

    Jason

    27 Jun 08 at 1:31 pm

  4. How did you put together the page with all of the SharePoint field controls? Did you use application pages, sites pages, forms (editform.aspx), or usercontrols? I am wanting to do the same thing but have been trying for days to find a good way of doing it.

    Jason

    26 Jun 08 at 1:10 pm

  5. actually, i ended up using a responsefilter in the end, you need to fix up bad javascript declarations but am happy to report xhtml 1.0 compliance now!

    keith patton

    27 Mar 08 at 10:34 am

  6. Hi,
    I see in the source of the flybuys site, that the PlaceHolderAdditionalPageHead placeholder in your master page is generating a duplicate title tag. This is happening for me as well and i can't see any reference anywhere as to how to resolve it. We are working towards xhtml 1.0 transitional and i would prefer not to have to use a regex and response filter to clean this up if i can avoid it.

    Keith Patton

    26 Mar 08 at 2:38 am

  7. Hi Erinc
    I am trying to do the same thing. If I find further information on this I will post here or please feel free to email me.

    Sam

    21 Mar 08 at 11:10 pm

  8. HI Ari,

    Thats a Fantastic Site.Just I was courious to navigate to the _layouts/settings.aspx.But it too smart it redirected me back to the root site ..How did you acheived this ? This will help me to secure our site

    Thanks & Regards
    Senthil

    Senthil

    13 Mar 08 at 5:46 pm

  9. Very nice, I am trying to do something similar, I am trying to integrate sharepoint with igoogle like UI on ASP.net, do you think that it's feasible.

    erinc arikan

    3 Mar 08 at 10:41 pm

  10. Toby, maybe an iisreset (or AppPool refresh) would help.. I would recommend doing that after almost all stsadm commands

    =8)-DX

    20 Feb 08 at 2:55 pm

  11. @Keith: No, the master pages and page layouts are not editable by content authors. These are tightly managed by our design team to ensure a consistent look and feel is maintained throughout the site. I think in situations such as for some internal sites, it can be OK to give content authors permission to edit master pages and page layouts, but for most public facing sites, it is good to limit this to experienced designers. And yes, I agree, for large scale team based development I think it is much easier to deploy these using the solution framework, than edit these directly on the production environment.

    Ari Bakker

    20 Feb 08 at 8:56 am

  12. @sachya: The dynamic user experience was primarily acheived via providing content authors with greater control over the elements within the site, and dynamic displays of content within the site. For example all images within the site can be maintained via MOSS lists or web parts, and almost all content can be managed using publishing features. We also created random displays of reward and participant information on the homepage so that users are presented with different content each time they visit the site.

    Ari Bakker

    20 Feb 08 at 8:49 am

  13. Hi,
    Are the master pages, page layouts, css etc. able to be modified in the production authoring environment by an end user? Or are you restricting the user from modifying these and storing them within a source control system. It would appear that provisioning content contradicts slightly with the artefact vs assembly team development model proposed by MS, but i tend to think it better to provision these elements within solutions rather than to treat them as content?

    Keith Patton

    24 Jan 08 at 10:27 pm

  14. I'll be writing more on this shortly – in the meantime see Computerworld for articles <a href="http://computerworld.co.nz/news.nsf/news/0DC0F4E64D67D156CC2573640004C950">Ministry intranet project wins Provoke a Microsoft gong</a> and <a href="http://computerworld.co.nz/news.nsf/news/CA9F569E83606E07CC2573CB006F3B5E">Ministry of Transport makes top 10 intranet list</a> for more information.

    Ari Bakker

    14 Jan 08 at 6:50 pm

  15. What was the approach for dynamic user experience? Did you use any third party controls, AJAX, Silver light ?
    Little light on this would be very useful for community.

    sachya

    14 Jan 08 at 10:07 am

  16. Nice and interesting post. I would surely like to read more on this project especially on the hardware/software setup and the workflow behind it.
    Keep up the good work.

    btw, feedburner has your images relative linked, so change them in your feed to link to your server

    Wictor

    14 Jan 08 at 6:19 am

Leave a Reply