Technology Toolbox

Your technology Sherpa for the Microsoft platform

Jeremy Jameson - Founder and Principal



Reusable Content in SharePoint Publishing HTML Fields, Part 1

This post originally appeared on my MSDN blog:

Since I no longer work for Microsoft, I have copied it here in case that blog ever goes away.

In one of the sprints last year for my current project, I built a custom "document publishing" system based on the Web Content Management (WCM) features in Microsoft Office SharePoint Server (MOSS) 2007. My client was looking to replace a legacy system used to create Microsoft Word documents that are essentially "standard operating procedures" for their employees (or "SOPs" as we called them many years ago when I worked at Gambro Healthcare).

While using SharePoint WCM features to create documents might seem a little odd at first, it is important to understand that one of the key requirements for the solution (besides delivering it to Production in four weeks) is that some sections of the documents must be centrally managed (in other words, not editable by the people creating the documents, but rather by a different team entirely).

For example, section 13.0 of each and every document must contain the company's standard "Sexual Harassment Statement" which essentially consists of several paragraphs of legal text followed by some customizable text to specify which managers are responsible for handling complaints regarding any form of harassment.

When I heard about this requirement, I immediately thought of the Reusable Content feature in SharePoint. The idea is that the Legal department specifies the bulk of the content for section 13.0 (via a list item in the centralized Reusable Content list). The document authors are only responsible for specifying information about the managers designated to handle complaints (in other words, the content that varies with each document).

Note that the Reusable Content list item has the Automatic Update field set to Yes, as shown below. This is the key to "centrally managing" the content. [Also note that in this particular solution, the document authors have read-only access to the Reusable Content list.]

Reusable Content list
Figure 1: Reusable Content list

The following screenshot shows a sample page from one of the sites used to create a document. As you can see, the HTML content from the list item above has been inserted as expected into the page. [Note that I didn't bother to fill in the section at the bottom of the page on my test site, so please ignore the highlighted text.]

Reusable Content in "view" mode
Figure 2: Reusable Content in "view" mode

Note that when the document author is editing the page, SharePoint marks the reusable content section as read-only, as shown below.

Reusable Content in "edit" mode
Figure 3: Reusable Content in "edit" mode

One of the more interesting issues that I encountered when using the reusable content feature in SharePoint is that when a user does not have access to the corresponding list item in the Reusable Content list, the content is silently removed from the page. This makes sense when you think about it, but it's certainly a "gotcha" to be aware of.

For example, consider the following screenshot that shows the same page as Figure 3. However, the following screenshot was taken prior to approving the list item shown in Figure 1 above.

Page with missing content (due to "Pending" status in Reusable Content list)
Figure 4: Page with missing content (due to "Pending" status in Reusable Content list)
By default, the Reusable Content list is configured for content approval. Consequently when you add list items (either programmatically or through the site), the Approval Status defaults to Pending. In order for users with limited access to see the content as expected, a published version of the Reusable Content list item must be available.

Note that this post was primarily intended to introduce a scenario for using the reusable content feature in SharePoint.

In my next post, I'll show you how to programmatically add Reusable Content list items (which is very helpful when deploying to multiple environments, such as DEV, TEST, and PROD).

In part 3 of this series, I'll show you how to "expand" the reusable content placeholders within, for example, the Page Content field (essentially just two lines of code), as well as some of the "gotchas" with the out-of-the-box solution (including a workaround).


No comments posted yet.

Add Comment

Optional, but recommended (especially if you have a Gravatar). Note that your email address will not appear with your comment.
If URL is specified, it will be included as a link with your name.

To prevent spam from being submitted, please select the following fruit: Cherries

Please add 3 and 3 and type the answer here: