Customising the SharePoint management UI – just say no!

I was recently asked at an event how to make changes to some of the core management UI features of SharePoint 2010. The question was specifically around how to make a change to the Silverlight control you get when you click on “Create” in the “View all site content” page.

What you get when you click on that link now, v4’s “Fluent UI” in place is in full swing, and a nifty Silverlight control which looks very similar to the Backstage found in the new Office clients.

Add Gallery in SharePoint 2010

Backstage in Word

My response to clients who ask for the management UI in SharePoint to be customised [beyond what you get from master pages and themes] is to ask them: “What is the business value that doing so will add?”. Without clear business drivers to making these changes, they quickly become a drain on the project, and over time will add considerable cost to the ongoing support of the solution.

Spence Harbar had a great post on this back in the 2007 days, and much of what he said then still holds. You get higher TCO by changing core features like this – on-going maintenance, support, training and so on will all be higher, and there is a higher chance that you will be locked into your delivery partner for a longer time frame. Also, chances are that you will be hit by additional testing and development as service packs and other hotfixes get released.

So I’d push back when you see this kind of requirement come in. If the client understands the cost, the additional risk, and the downsides, to customising the UI, then fine, but don’t walk in blind to that kind of scenario.

Advertisements

Semantic mark-up for menus

In SharePoint 2007, if you were building a tightly designed website, chances are that you were faced with a problem when using the out of the box (or ASP.NET) menu controls. Before ScottGu’s team were converted into believing that standards compliance was a good thing, the ASP.NET 2.0 controls came up woefully short when it came to clean mark up, relying on nested tables to get the layout right.   

SharePoint 2007 continued this theme, wrapping their Microsoft.SharePoint.WebControls.AspMenu control with more tables, and worse, marking it so that you couldn’t inherit from the control to solve the rendering issue. Thankfully, there was a work around using control adapters to delegate the Render() method.   

But it was still a pain. The configuration files for your control adapter have to live in the file system, in the App_Browsers directory, which means that a WSP cannot deploy them to your farm. And they sometimes introduce performance penalties in high scale sites. And in the case of menu controls, there was business logic wrapped into the original Render() method which was hard to reproduce, since it called internal methods.   

How has the story improved in 2010? ASP.NET 4.0 does solve that problem, but SharePoint 2010 will not be shipping with support for ASP.NET 4.0 – that will have to wait for a service pack. But all is not lost: the SharePoint product team has made a significant investment in standards compliance and providing better quality mark-up. An example is the new UseSimpleRendering property on the AspMenu control. This Boolean flag is now all you need to set if you want navigation list to be rendered using <li> tags.    

So let’s check what output we get with that property set.  With UseSimpleRendering=”false”, the output is the traditional output that 2007 had, with nested tables and inline styles, both frowned on by the web designer community. 

<table id="zz1_TopNavigationMenuV4" class="menu zz1_TopNavigationMenuV4_2" 
cellpadding="0" cellspacing="0" border="0">
  <tr>
    <td onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" 
    onkeyup="Menu_Key(this)" id="zz1_TopNavigationMenuV4n0">
      <table cellpadding="0" cellspacing="0" border="0" width="100%">
        <tr>
          <td style="white-space:nowrap;">
            <a class="zz1_TopNavigationMenuV4_1" href="/" accesskey="1">Home</a>
          </td>
       </tr>
     </table>
   </td>
   <td style="width:3px;"></td>
   <td onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" 
   onkeyup="Menu_Key(this)" id="zz1_TopNavigationMenuV4n1">
     <table cellpadding="0" cellspacing="0" border="0" width="100%">
       <tr>
         <td style="white-space:nowrap;">
           <a class="zz1_TopNavigationMenuV4_1" href="/about-us/Pages/default.aspx">About us</a>
         </td>
       </tr>
     </table>
   </td>
   <td style="width:3px;"></td>
 </tr>
</table> 

With  UseSimpleRendering=”true”, the output is now much cleaner: 

   
<div id="zz15_TopNavigationMenuV4" class="menu">
  <div class="menu horizontal menu-horizontal">
    <ul class="root static">
      <li class="static">
        <a class="static menu-item" href="/" accesskey="1">
          <span class="additional-background">
            <span class="menu-item-text">Home</span>
          </span>
        </a>
      </li>
      <li class="static selected">
        <a class="static selected menu-item" href="/about-us/Pages/default.aspx">
          <span class="additional-background">
            <span class="menu-item-text">About us</span>
            <span class="ms-hidden">Currently selected</span>
          </span>
        </a>
      </li>
    </ul>
  </div>
</div>

 Note the lack of tables, the fact that there are no inline styles, and that accessibility has clearly been taken care of with the inclusion of specific textual clues that a particular item is selected.

Rock on!

Slides from SUGUK session on BI

I presented at the London SharePoint User Group (SUGUK-London) last Thursday, on what is coming in the 2010 wave of products around BI. There was a great turnout and a lot of new (and familiar) faces in the audience.

Obviously SharePint afterwards was also fun 🙂

Some people have asked for a copy of my slides: SUGUK Business Intelligence slide deck

“Insights in SharePoint 2010” (featured article on Technet Flash Magazine, UK)

I was recently asked to write a feature article on the UK TechNet magazine, published in Feb this year.

Business intelligence has always been a key business problem for which Microsoft has sought to provide rich tooling. From a client point of view, Excel has been in the market since the early 1980s, and the SQL team released SQL Reporting Services in 2004. By acquiring ProClarity, and releasing Performance Point to the market with the Office 2007 wave, Microsoft’s dedication to the BI market has been clear.

2010 sees a clear step forward in making it easier to build business intelligence applications by unifying the technology stack. The Office, SharePoint and SQL teams have been working together to make it easier for end-users, developers and IT Pros to gain insight into how their business is running.

Familiar client tools
End users are creatures of habit, and thankfully the new Office 2010 suite of products includes enhancements to Excel and Visio to help users build their own self-service reports and dashboards, while leveraging data from line of business applications securely.

SharePoint investments
SharePoint has become the de facto corporate development platform to build business intelligence solutions on. As well as new features, within areas such as Excel Services, Visio Services, and the Chart Web Parts and Performance Point Services, the team has worked hard to make the process of deploying these solutions easier for IT Pros. How?

  • Simplifying management by providing Powershell interfaces for IT Pros to use to manage their deployments.
  • SharePoint now has a Secure Store Service which allows users to have confidence that their system credentials are well secured.
    Performance Point, Excel Services and Visio Services are all first class citizens leveraging the new Service Application architecture, and are configured from a central place within your SharePoint Farm.
  • Connecting to Line of Business applications is made easy and secure via Business Connectivity Services

SQL Server 2008 R2
The SQL team have provided some key enabling technologies for building more powerful BI solutions.

  • PowerPivot is a joint effort between the SQL, Excel and SharePoint teams to allow large amounts of data to be manipulated in pivot tables and reports.
  • Reporting Services Add-In provides a simple way of displaying Reporting Services assets within a SharePoint deployment.

The best of both worlds?
The 2010 wave of products is a major step change in creating business intelligence solutions. It gives end-users the power to create rich self-service solutions, while at the same time giving IT the governance and tools it needs to ensure quality of service and data security.

All of the products mentioned in this article are now in public beta, downloadable from TechNet.

SharePoint Evolution Conference

I’m really looking forward to the SharePoint Evolution conference next month in London. Last year’s Best Practice conference was a blast; not least because it is on my home turf. I’m really looking forward to seeing all my SP friends from around the world – the speaker list is mind blowing, featuring at least 5 MCMs, dozens of MVPs and representation from leading Microsoft partners and MCS. And it’s looking likely that the conference will sell out.

cScape are going to have a good presence there: not only am I speaking, but one of my colleagues (Ari Bakker) also has a session, and we are Gold sponsors.

SP Evolution 2010