We have explored CMS Context (see Chapter 24). We understand how to organize, store, retrieve, and manage our assets hierarchically using CMS channels (see Chapter 25). We can create templates using VS.NET (see Chapter 12). Next, we need a way to manage postings based upon those templates housed within those channels in our Web Property.
NOTE: Although templates do not have a chapter dedicated to them, they are accessible via PAPI. Most of the exact same methods and properties available for postings are available for templates (certainly anything inherited from HierarchyItem). We briefly discuss the unique template members later in this chapter.
In many ways, a posting provides functionality similar to a traditional Web page in a data-based Web site. Both are dynamically created at runtime from information that is kept within a repository. Both serve fresh content, which could potentially be cached, every time. Navigation is often included on every page as a separate, uniform set of code. Specific information on the page can be restricted for view and/or update based upon the current user's role.
However, unlike a Web page, postings come with some very convenient built-in capabilities. Although most Web pages are a singular, proprietary work of art, postings are rubber stamps. They are always based upon templates, which can be instantly used to generate new, similar postings with exactly the same functionality. CMS automatically updates posting references when the templates or resources are moved or renamed. Postings also come with a built-in structure for managing who can see them and when, which they inherit from the channel in which they are posted. Since postings have a start date, they can be placed onto the actual production system for users with appropriate rights to interact with before being made available to the general public or a specific group of users. Connected postings allow multiple views of the same set of content. The creation of new postings and the alteration of existing ones can be managed by the built-in CMS workflow engine, which gives users in specific roles the ability to approve changes all the way into the production environment. Indeed, these and other capabilities give postings an edge over the traditional Web page.
All code in this chapter will refer to a posting based upon a template with the following ASP.NET Web Form controls TextBox, Label, List Box, and Button using their default properties plus the default console, of course. Follow the steps in the Scratchpad sidebar, found in Chapter 24, to re-create exactly the same results shown here, or use your own channels, templates, and postings and just apply the concepts. We will be repeatedly replacing the contents of the Button1_Click function.