There are so many SharePoint-related items on my TODO list that an archiving operation is necessary. This is not uncomfortable to me with my recent success with the basics of “branding,” repair and installation.

This also serves as a recovery operation from somewhat frantic SharePoint research. I really need to ease up on this, chill out, relax and smell the blinding daisies:

Best Practices Resource Center for SharePoint Server 2007 This reference site has no feeds for syndication. So it will end up in a set of my links.
Introduction to SharePoint Products and Technologies for the Professional .NET Developer I think I need to print this one… on paper…
New Download: Visio Stencils for Design Architecture Posters “By popular request, we have packed up and created a download for the stencils that we used to create many of the SharePoint Technical Diagrams. These models are created using Office Visio 2007. You can modify the Visio files to illustrate how you plan to incorporate Microsoft SharePoint Products and Technologies in your own environment…:”
SharePoint Designer Introduction This one looks deliberately not printable.
SharePoint Resources Heather Solomon is the Alison Balter of SharePoint! “This is an index of resources for SharePoint products and technologies. This list is slightly slanted towards design and customization, but there are also several resources related to other SharePoint topics. All links are organized into categories, then into resource type (article, blog post, topic, etc).”
Windows SharePoint Services, SharePoint Portal Server 2003, and Microsoft Office SharePoint Server 2007 Support boundaries for Active Directory Federation Services Really advanced stuff… why on my list now?
Creating the Structure for a SharePoint Theme in VSeWSS v1.3 The ‘companion’ Blog post for the MIX09 video I mentioned earlier.
Paul Andrew: Visual Studio 2008 extensions for SharePoint (VSeWSS) 1.3 addresses all common SharePoint Developer requests I’m glad the “common” developers are satisfied.
WSS 3.0 Lists Web Service “The Windows SharePoint Services Web services provided by the Microsoft.SharePoint.SoapServer namespace includes methods that provide Microsoft .NET Framework developers with object models for creating solutions that work with Windows SharePoint Services remotely from a client or custom application. They are defined through the server-side object model of the Microsoft.SharePoint assembly, and their design is optimized to reduce the number of roundtrips transacted between client computer and server.”
Using an alternate CSS on your SharePoint sites A very ambitious approach to core.css. This technique looks more MOSSy than WSSy.
SharePoint and Cascading Style Sheets: How to update, change and reference “The following list is some methods for updating or specifying a custom style sheet for a SharePoint site. Several of these methods reference copying the custom style sheet to an accessible location for the web server. One common way to handle this is to store the style sheet in the \60 directory with the other files, but in an organized custom folder(s).” Why do I assume that Microsoft does not write SharePoint articles like this—especially three to five years ago…
CSS Options with Master Pages

“So if you want to override any styles that are listed in CORE.CSS (and you will be if you are skinning your site), you will need to do one of the following:

List the styles in the master page file

Link to the style sheet through Master Page settings

Include the styles in the PlaceHolderAdditionalPageHead ASP content placeholder in your page layout files

Unghost CORE.CSS for the site. I don’t recommend this.

Chris O’Brien’s blog: Article series—custom permissions with a site definition

“This is an introductory article which gives the background to an interesting problem I’ve seen recently. Over the next 3 articles, I’ll be looking at a solution to the problem and will discuss the following:

Site definition basics – how to create and deploy

Site provisioning – how to perform custom processing when sites are created using the definition

Unique permissions on created sites – how to ensure that certain users are automatically granted access to sites created using the definition, even when the parent site has different users/permissions

Adding External Javascript files into SharePoint

Eric Stallworth: “WSS 3.0 keeps all of [its] external script files in 12/Templates/Layouts/1033. This localized managed path hosts common file such as core.js and other external resources. It’s becoming a common task to include custom JavaScript in SharePoint pages that is registered. One of the ‘nifty’ controls that WSS 3.0 offers is the SharePoint ScriptLink control (<SharePoint:Link />), this control allows a developer to link to external script file living in the localized managed path.”

It’s important to me to remember that SharePoint does not allow script tags with runat="server" in Master Pages and *.ASPX pages. This implies that using the tilde (~) syntax to get a relative path to JavaScript files will not work. So there is no functional reason to store script files in a Content Database via SharePoint designer. This is a common-sense security measure.

Redesigning the Site Actions Control “The default SharePoint Site Actions control doesn’t really blend well with custom designs.”
SharePoint drop down menus and CSS “The CSS Reference Chart of Heather Solomon does not include the CSS for the different drop down menu in SharePoint. This post highlights the CSS of three main drop down menus used in SharePoint.”
11 VseWSS Results at Kirk Evans Blog Among the 11search results these jump out: “Consuming SharePoint Lists via AJAX” and “Hosting Silverlight in a SharePoint Webpart”…
How to Deploy a Workflow with VSeWSS 1.3 “Visual Studio Extensions 1.3 has new features that allow the packaging and deployment of a workflow into a SharePoint Solutions Package (.WSP).”
SummaryLinkFieldControl Members (Microsoft.SharePoint.Publishing.WebControls) This type has *Template properties which suggests to me that it is possible to customize how the contents of this control are displayed. I’m still looking for someone’s Blog post about this…
Using ~SiteCollection prefix in SharePoint CSS files This is a very elaborate (and impressive) way to avoid sending CSS url selections to the _layouts directory.

This March 2009 video from self-described New Zealand Hobbit, Chris Auld, is the first video of the auspices of Microsoft that shows before a live audience how to customize SharePoint using themes in an automated, professional manner:

Some important points:

Theme generation and deployment is shown in this video using a brand-new tool for Visual Studio 2008 called Visual Studio 2008 extensions for SharePoint (VSeWSS) 1.3

Theme development does not touch any HTML—only CSS and images are involved. According to the speaker this is “easier” and faster than using SharePoint designer to modify Master Pages. But, to get “easier” in perspective, please see Heather Solomon’s SharePoint 2007 CSS Reference Chart—this chart is about 14 pages long!

For more information please read these entries from New Zealand: “My Sessions from MIX09 last week,” “Useful Stuff for Building SharePoint Themes” and “Creating the Structure for a SharePoint Theme in VSeWSS v1.3.”

Buy this Book at! Here, as we end the year 2008, Microsoft SharePoint is still suffering from Web design horrors from the 1990s. Both SharePoint products, WSS and MOSS, are preoccupied with data-management infrastructure issues that make data-intensive developers like me show our sincere respect. However, Microsoft still fails violently in the visual design facilities for customizing SharePoint.

What this means is that I cannot in a few easy steps customize the actual “look” and the actual “feel” of SharePoint. This apparently “trivial” issue is actually a huge showstopper in the real world of superficial, non-technical managers still running most of the world. As I developer/designer, what I need to do is quickly make any SharePoint installation look like anything I want in order to ‘fool’ management into using SharePoint.

Currently, I am aware of three known ways to customize SharePoint:

  1. Risk destroying your entire SharePoint installation by adding your custom Theme.
  2. Customize only a subset of your Site by editing the default.master Master Page in SharePoint Designer 2007.
  3. Build your own “extended” read-only Web that is fed by data from an ‘unmolested’ SharePoint site.

Option #3 is the most responsible to me—but this is exactly the option most “business leaders” would avoid investing in proactively. So, now, I will spend the rest of this writ recording why options #1 and #2 suck.

SharePoint customization options #1 and #2 both involve changing SharePoint files on the file system. For those of you who saw, “Customizing a Windows SharePoint Services V3 site with the SharePoint Designer 2007,” you should know that SharePoint Designer can change Master Pages in the content database—but you will be tempted to change application.master, which is located on disk in C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS. This temptation is so strong that a Microsoft Employee, Steve Caravajal (a co-author of SharePoint 2007 and Office Development Expert Solutions), in his MSDN Blog post, “SharePoint Branding and Application.Master,” answers “a number of folks”:

Q: How can I edit application.master using SharePoint Designer?

A: Short answer, don’t do it. Unlike default.master and other master pages in SharePoint sites, the application.master is not exposed to SharePoint Designer by default. This is for VERY good reason. Application.master lives in the _layouts directory and this location is not displayed when editing a site using SPD. If you navigate to the _layouts directory to edit and view the application.master you’ll find that you can’t view it in design mode. This should be a hint that maybe you shouldn’t be doing it. Editing pages in this folder will likely result in corruption so DON’T do it. I know, I know….if you’re like me you’re probably opening designer to do this right now because you were told not to…….don’t say you weren’t warned.

Steve Caravajal is probably one of only a handful of Microsoft Employees that would admit that “…a master page called default.master is created and added to the Master Page Gallery. This page defines the chrome of the page and serves as the foundation for customization using SPD [SharePoint Designer] to achieve a branded site. Unfortunately, default.master is not the master page for all pages in the site.” This is extremely important information that can save professionals who value their time hours of fun.

Now more fun: even when you are vendor-compliant and editing default.master in SharePoint Designer you will be tempted to add more master pages to the Site content database. This temptation gets very strong after reading Microsoft’s SharePoint MVP, Heather Solomon, her article, “Minimal or Base Master Pages,” and downloading her “Base Master Page for Collaboration Sites and WSS Sites.” Even Microsoft tempts us with “How to: Create a Minimal Master Page.”

The problem is that you could end up not being able to delete one of your master pages because you are unable to unset it as the default or custom Master. In SharePoint Designer, you might see an error message like, “One of the selected files cannot be deleted because one of the files is currently set as the default or custom Master page for the Web site.” Should you get the idea that you can delete the Master page from inside the SharePoint site itself, you should have the same problem Eric Kraus solved in MOSS but the command he used is unavailable in WSS.

Okay. Okay. Let’s assume you are having no problems customizing SharePoint to your satisfaction. Let’s go further and grant you the super-power of customizing SharePoint files on disk without fear of Microsoft corrupting your changes with a Service Pack or simply by running the SharePoint Products and Technologies Configuration Wizard. Let me direct you to the bottom line as described by a SharePoint consultant in “The Pains of Altering the SharePoint UI”:

I was immediately struck by the mess that is the default master page. The master page is laid out with, of course, tables which is reminiscent of why Microsoft is such a joke in the designer world. Well, I decided to rip out the tables, and surely that would make it easier right? No. It turns out that SharePoint only uses one standard ASP.NET control (the navigation control), and the rest are SharePoint specific “delegate” controls which made layouts with CSS difficult. These are of course stored on the file system, and the only way to edit them is to create painful features. It looked as though I was stuck with extensive tables for much of the layout.

The fun doesn’t stop there. SharePoint has a core stylesheet that is over 4,000 lines long. I’ve dealt with more styles in one shot, but looking at the stylesheet you would think a 10th grader created them. There is a lack of shorthand, units of measure, and extensive IE proprietary styles. Add onto the fact there are no comments in the stylesheet it is absolutely useless to attempt to decode it. You also can’t simply remove the core styles; well, you could, but it’s another headache that is ultimately not worth tackling. It’s again easier to deal with the bad then try to make it better.

It would irresponsible to use SharePoint as a public-facing Web presence or in any situation when precise visual design is required. Now that I am finished shaking a stick at SharePoint, I can now move on to its strengths: SharePoint facilitates the sharing of data with an (relatively) easy to use Web interface. As of today (and probably for a few years), it is an error to regard this Web interface as anything else other than a user-friendly data entry point. Both MOSS and WSS provide RSS syndication for its default data collections that can feed third-party Web front-ends. This RSS feature alone should make SharePoint the number one choice for the Microsoft Office enterprise needing to ‘ship’ their data to third parties. By the end of 2009, I should have stable and time-tested solutions for using SharePoint ‘data islands’ as tiered hubs for my custom Web sites.

The future of FrontPage Hello. I uninstalled Expression Web because I use SharePoint and Visual Studio. I uninstalled Expression Web in order to install SharePoint Designer. It was Ted Pattison that finally explained to me in “Customizing a Windows SharePoint Services V3 site with the SharePoint Designer 2007” why I need SharePoint Designer. Ted is a very special guy. He seems to be the only person on Earth who can explain SharePoint in ways that I can understand. Too many SharePoint presenters get lost in more than six details of this ridiculously complex product, dramatizing “Business Intelligence” scenarios that I do not care about. But a strong dude like Ted Pattison can leap up to the 30,000-foot level to provide a clear overview and then jump back into the details. He can do this several times during his presentations casually and easily. I appreciate this strength.

Here are two sad facts for Visual Studio users, who have installed extensions for SharePoint about why you still need SharePoint Designer:

  • One: try to open a SharePoint web site in Visual Studio. You should get an error message.
  • Two: SharePoint Designer can open SharePoint webs and provide version control for pages using the native SharePoint database.

Now are you worried about the differences between SharePoint designer and Expression Web? Spencer Harbar explains in “SharePoint Designer and Expression Web”:

Currently there is really only one key difference—Expression Web cannot open SharePoint sites. Otherwise it’s basically the same (Expression Web has a nicer splash screen). Now this won’t always be the case, and you can expect divergence in the future.

Also, Microsoft has a cute diagram leading MOSS and WSS developers to SharePoint Designer. Of course, since I am guy that’s so “negative,” I cannot leave this journal entry without expressing my undying hatred for FrontPage. FrontPage sucks—and a “portion” of FrontPage technology lives on in SharePoint Designer (and Expression Web).

And one more rant: it will be a bright sunny day in rainy Redmond when someone among the tens of thousands employees announces that SharePoint will be XHTML compliant. It is intellectually and technically disgusting to see 1990s HTML tag shit that makes hundreds of SharePoint pages so filthy. Ask any professional Web developer the last time they saw HTML tags in upper case… When you get through with that, check out this awesome post, “Guide to making SharePoint XHTML Compliant.”