Sunday, March 09, 2008

SharePoint Conference catchup with Heather Solomon

While I was at the SharePoint Conference in Seattle, I caught up with Heather Solomon (SharePoint branding MVP) from SharePointExperts.com.

Below are some of the tips and tricks that we discussed (and some of my own tips):
  1. Explore using CSS to customize the OOTB navigation controls before you go out venturing on creating your own.
  2. Incorporate the @import to include your CSS in your Master Pages. Heather's opinion is that you should only use the alternate CSS option to tweak particular areas.
  3. Store your CSS and branding images on the web server. Images go in their own directory under 'Template\Images'. The CSS file should be stored inside a directory under 'Styles' (under the 12 hive).
  4. Package your branding in Solution Package/Feature. Check out
    http://codeplex.com/stsdev for a Visual Studio Project Template for this (developed by Ted Patterson and Andrew Connel)
  5. On the development machine, turn off custom errors in the web.config (
    set Callstack = False. Set CustomErrors=Off)
  6. Apart from using Alternate Stylesheets, Themes can also be used to help brand the Application.master template (remember you can't actually change the HTML structure though)
  7. Meeting Workspaces do not pick up your custom master page. There is some special code in the meeting workspace master page that renders the multiple meeting navigation that you normally see on the left hand side. You need to create a separate masterpage for the meeting workspace, then create a feature stapling to the meeting workspace to change its default master page.
  8. Blogs and Wikis use different styles, so be careful
  9. Take advantage of contextual selectors (e.g. div#mydiv ms-SPLink {...} )
  10. The word specificity (which I can never pronounce in meetings) basically means that a number is derived from the way in which an element is styled. Sometimes you see styles overriding others when you see things like class names sitting right next to the element. Think of the number as A-B-C. For each ID that you use, you add 1 to A. For every class you use, you add 1 to B. Then for a base class definintion, you add 1 to C. So p#largetext ul.mylist li has a specificity of 1-1-1 (or 111). If I just set a style on li (corresponding to a specificity of 1), the specificity with the highest number would be applied to the element.
  11. Don't go crazy with classes. Use IDs more often and classes sparingly. That way in your CSS, you can use contextual selectors to define a style. E.g. div#mydiv table tr td a { font-family: Verdana }. In this example I haven't used classes at all. I am basically finding the element by starting at the ID level first.
  12. Heather mentioned that in the past, she has seen SharePoint Designer take grouped styles (e.g. h1, h2, h3 ....) and separate them to h1 {} h2 {} etc (so adding more lines than what is necessary). Heather uses 'Top Style Pro 3.5' to author her CSS, but she hasn't tested opening up a CSS stored in the 'Style Library' areas (remember that she prefers to have the CSS stored on the web server).

Wednesday, March 05, 2008

Fab 40 Application Templates and Role-based My Site Templates Author

Tonight's SharePoint Conference's social evening was at the Museum of Flight in Seattle. During the night, I managed to catchup with Bob Sutton, Senior Product Manager within the SharePoint product group. After having a couple of drinks together (part of it on me unfortunately), we started to discuss the Application templates, and in particular the role-based My Site templates. How stupid did I feel when he said 'oh yeah, I wrote all of that!'. So now when I have questions (particularly about the My Site templates) I can go directly to the source. Thanks Bob!

I also got to meet Dave Page from Redmond Technology Partners, whose company was engaged by Microsoft to build the GearUp site, which is a site dedicated to providing IT professionals and business managers with timely resources and guidance through the SharePoint deployment cycle. It even includes an Internal Buzz Kit, which includes sample promotional emails, posters and PowerPoint slides - all vital pieces in the Communications Plan that all SharePoint projects should have (if you don't have one - get one. Otherwise your SharePoint project is likely to fail due to poor user adoption).

Is that you Mike Fitzmaurice?

I nearly fell over tonight when I saw Mike Fitzmaurice (Microsoft Evangelist) for the first time in 12 months. He has lost about 40Kg and is shadow of the man he was before. Well done Mike!

A Possible Workaround with Content Types incorporating BDC lookups

I attended the session 'Creating Solutions with the Business Data Catalog' today at the SharePoint Conference, presented by Todd Baginski. At the end of the session, I had an idea on how to get around this limitation with Content Types (i.e. that you can add a BDC column to a Content Type). When question time came, I stood up and asked Todd whether my theory might work. He thought it was a very good idea.
So what is the idea? Well, basically it is quite a simple process to query the values in the BDC. You just need to know the the SSP name (e.g. SharedServices1), the LobSystemInstanceName (which appears in the Application Definition XML file) and the Entity that you want to query (e.g. Customers). Todd said that he will soon upload this sample code to his blog (I'm not much of a developer any more). You then take this sample code and wrap it in a custom Field Control. The User Experience will be that when you select that you want to create a field of type BDC, you select your custom type, then provide the 3 parameters required (or even a 4th to provide filtering). At runtime, the field control queries the BDC and returns the values in a drop down list. Under the covers, you could even store the associated ID of the selected BDC item. This could (potentially) be used for communicating with other BDC web parts (e.g. BDC Item web part), or could be consumed by other field controls that provide filtering capability (say to a duplicate field control that perhaps takes a 4th parameter to filter the BDC results). If you are a brave enough developer, give it a go and let me know how you go (I wouldn't mind a copy of the code).

Monday, March 03, 2008

I'm here at the MS SharePoint Conference in Seattle

As there wasn't going to be a SharePoint Conference in Australia this year, I decided to go this conference in Seattle, which focuses on Real-World SharePoint solutions. Apart from getting some war stories from other SharePoint Specialists, I'm looking forward to catching up with some world renowned MVP's and Arpan Shah from the Microsoft Product Team. I'm scheduled to catch up with him at the Ask the Experts Lunch on Wednesday.