Navigation

Thursday 28 February 2008

SUGUK - London Meeting

If you don't know about them already there is a group that call themselves the "SharePoint User Group UK" (SUGUK). They meet every now and again, and quite often you'll get people from Microsoft (or MVP's) giving presentations on topics relating to SharePoint (usually either development or infrastructure).

Well, there was one such meeting last night, covering topics such as Kerberos in SharePoint (why, when and more importantly .. how?) and another topic (very close to my heart) about how to maintain multiple SharePoint environments throughout a project lifecycle (e.g. Dev | Test | Stage | Prod).

They are free to attend, and usually there is a good chin-wag down the pub afterwards so plenty of opportunities for networking or just getting those crucial last few bits of info on a topic.

The SUGUK Website contains more information, including an "upcoming meetings" forum where you can keep track of when and where the next events are going to be. There's also a development forum of pretty well informed people, which might be a bit easier than the heavily oversubscribed MSDN Forums.

Definately worth a look!


Tuesday 19 February 2008

Tip - Apply Branding in WSS 3.0

Here's a quick tip, cos I don't have loads of time.
We've had lots of enquiries from our clients about Branding in WSS 3.0. If you are running MOSS 2007 then you have all of the nice "Look and Feel" settings when you go to Site Settings, allowing you to not only change the Master Page and Style Sheet, but also to push those changes down through the rest of the Portal.
Well ... to put it bluntly, WSS 3.0 won't let you do any of that.

So .. how about creating a Branding Feature?
You can write custom event handlers for Features (called Feature Receivers, using the SPFeatureReceiver class), so that you can have code that executes when a Feature is Installed, Activated, DeActivated or Uninstalled.
I won't go into the details here, but there are some great articles about this on the web and MSDN.

So hows this for an idea?
Write yourself a Feature that applies Branding to WSS 3.0 sites (or any site for that matter!). You can make it set a new Master Page, change the Style Sheet, the Logo, set a custom "Site Theme" or even just inherit all those properties from the Parent site.

One great use (that we use quite regularly) is to create a Hidden Feature that just applies the Parent Site's branding settings to the new site. You can then use Feature Stapling to make sure that ANY (staple to "GLOBAL") site that gets created will be branded .. you don't need to worry about the site definition!

As for the values used for the Branding, well you can pass these in as "Properties". Every feature can have them, and they are specified as follows (in the Feature.xml file).
<?xml version="1.0" encoding="utf-8" ?>
<Feature xmlns="http://schemas.microsoft.com/sharepoint/"
...>
    <Properties>
      <Property Key="NewMasterPage" Value="/_layouts/CustomBranding/NewMasterPage.master"/>
    </Properties> 
</Feature>
So in that feature we have specified a Property called "NewMasterPage" (you can have as many of these as you like).
Then ... to get that Property value out in your Feature Receiver you can use the following line of code:

string strMasterUrl = ((SPFeatureProperty)properties.Feature.Properties["NewMasterPage"]).Value;
If the property doesn't exist, or the value is blank then it will return an empty String (so you shouldn't need to worry about null reference exceptions!)

Then, all you need to do is change the SPWeb property and call SPWeb.Update() to apply the changes! For example:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
// apply branding
using (SPWeb web = (SPWeb)properties.Feature.Parent)
{
   web.MasterUrl = strMasterUrl;
   web.Update();
  
}

}

Hope this gives you some good starting points! You might want to extend this further; here are some interesting things you might do:


  • Add a Property Flag to reset all sub-site branding settings. This can then be activated at the top level to reset all branding Site Collection wide.


  • Add an "inherit from Parent" Property. Then you can use SPWeb.ParentWeb to get the parent SPWeb object (and all of it's branding settings).


  • Store the "original" branding settings (before you overwrite them) in the SPWeb.Properties hashtable. Then, add an "DeActivating" event, and put all the original properties back again! (so when you deactivate the feature, it puts the branding back in place.. a great "rollback" option!)


Good luck .. and get Branding!!!

MKeeper


Thursday 7 February 2008

when I met Bill Gates ...

Well ok ... so I didn't actually get to meet him .. but I did see him talk, and mighty exciting it was too (unless you are one of those anti-software / anti-capitalist / anti-success people who don't like him).

I had the fantastic opportunity of going to the Microsoft Windows Server & Tools Pre-Launch Event in London (Park Lane Hilton), which was only available to Microsoft Gold Partners (so a thumbs up there to my employers!) and very swanky and posh (but a thumbs down to the caterers ... who on earth serves steak and chicken from a buffet but doesn't provide any tables or chairs ??? ever tried to use a knife & fork while holding your own plate ??).

Well, Bill Gates, the big man himself, was giving one of they key-note speechs about "The Miracle of Software". Basically talking about how software has evolved to enrich people's lives and what software design should be about (i.e. empowering people). It was all quite nice and they had a Q&A session afterwards (although quite blatantly pre-planned questions).

Some of the other speakers had some interesting things to say, mostly the buzz-words were "Hardware Optimisation" and "Virtualisation" around the Windows Server 2008 "Hyper-V" technology ...  which has led us here to a bit of a conundrum ...

You see ... it is a little known fact that the next version of SharePoint (a.k.a. Office 14) will only run on 64-bit!!!
Now ... this isn't such a problem for the production environments, I can't even think of a non-64-bit CPU that is still being bought for production hardware these days ... but when you go into the development lifecycle things get a bit more tricky!

You see ... at the moment (and I hope this changes) you cannot run 64-bit Virtual Machines on any Virtual Server environment (not even if your host OS is 64-bit). The only piece of technology making this possible is the new "Hyper-V" which is part of the Windows Server 2008 kernel. This is also ONLY possible if you are running a CPU that is BOTH 64-bit and has "Hardware Assisted Virtualisation" (HAV).

That all sounded fine and dandy .. but then I got back to the office and looked at the hefty workstation on my desk ... no HAV and definately no Hyper-V either.

So now we have a bit of a conundrum ... do I upgrade to a HAV compatible CPU? (i.e. one of the new "Quad Core" Intel Xeon processors) so that I can potentially run 64-bit virtual machines (and hence develop new SharePoint environments)?
BUT ... if Windows Server 2008 remains the ONLY platform for 64-bit virtualisation that means I will need a Server 2008 OS to do all my development in (not really suitable for a workstation).

Well .. I've spoken to my Infrastructure Manager and come to a plan. All the dev.team are getting brand new Quad-Core Xeon with 4GB RAM workstations.
IF Microsoft don't release a "workstation" virtualisation platform that can run 64-bit VMs then we are going to convert them all into Servers and buy crappy "terminal" workstations .. and every developer can have their own personal "server" to work in.
IF Microsoft DO release said software ... then hurray ! for we'll have the hardware capable of supporting it.

hmmm .. I wonder if I can convince them to get me 30" widescreen monitors too ???? .....