A while back I posted about the how daft that the datepicker control isn’t styled by themes, and is in the _layouts directory, so you shouldn’t edit them.
Well, a while later Michelle posted with a good idea of how to brand them – use an alternate CSS URL. I must confess, this tip passed me by until my recent branding efforts, and I discovered her tip.
So why does this work? Well, if we crack open the file iframe.aspx (which I still think is a bloody stupid name. I mean, the defining feature is the DatePicker control, not the bloody iframe it uses) we can see the code:
There we go – code to insert the alternate CSS url (but not themes – obviously).
So, I gave this a go:
Tada! Styled date picker, nice one Michelle. However, she notes that it has to be applied to a publishing site, or to a publishing site and all sites below it. Site collections based around a team site would be tricky. Normally, this page is used to set the alternate CSS…
[image of site]
… and, well, Team sites don’t give you that page.
However, we can achieve this in code! All the admin page does is change the SPWeb.AlternateCssUrl property for a site or set of sites. We could have a feature receiver (a bit of code that is run when a feature is activated or deactivated) to do this:
public override void FeatureActivated( SPFeatureReceiverProperties properties ) {
SPWeb site = properties.Feature.Parent as SPWeb;
site.AlternateCssUrl = "[Your URL here]";
site.update();
}
More evidence that brands are best applied by feature receivers. Maybe I should make an example of this…
[…] The Date Picker – and all the problems inherent in that… […]