John Wiley & Sons, a multi-national publishing company based in New York.
Developed from June to November 2000.
To replace an existing static HTML site with a content managed system based on corporate data and additional editorial content.
Vignette StoryServer 5.0 had been chosen by the company for this project; 5.0 introduced new features such as a persistent Tcl interpreter and Tcl namespaces, which lended to both better performance and better organization of code.
Vignette and Oracle had recently been adopted by the company, and several sites were already under development by 3rd parties for other branches of the business. The primary data source was that of one of these projects, a general Book Catalog. In addition a significant amount of data was being extracted from the static College web site into Excel spreadsheets. This data was unique to the College project and did not form part of generally held corporate data. A number of other sources also existed for advertising and sales agent data.
The main challenge was to place content managed data in context with automatically extracted data from the Catalog database, whilst sharing (and argumenting) the same schema. For this reason, Vignette's own content management facilities (records and versioning) were abandoned in favour of custom shadow tables. All data in the main schema was live, and off-line data, such as new items being added or edited, was held in shadow tables until it was launched live, when it supplemented the data from the Catalog (this is the opposite to Vignette's approach where only data shadowed in the versioning tables is available for live use).
Vignette's workflow functionality was used to some extent, however. Tasks were created for content under edit, and a workflow of Editor, Checker and Authorizor was established to take the task from initiation to completion and launch.
Design goals separated processing and database functionality from display formatting, and extensive use of Tcl namespaces was used to avoid clashes with applications sharing the same server. Because the content was fairly stable, good use could be made of Vignette's page caching facilities.
The major innovation on the presentation side was the use of 'layouts' to promote modularization of HTML pages without resorting to frames or Server-Side Includes (StoryServer COMPONENTs).
A layout consists of a root page, with one or more server paths, that calls an appropriate layout function (dependent on the path), passing it the names of markup libraries and additional formatting functions to use to assemble the page. The top-level layout, may, for instance, define three areas of the page: a menu bar, a header area, and a content pane; what goes into each area is specified by the code calling the layout function. Nested layout functions may format sub-regions of the page, inserting common markup (e.g. crumb trails) and page-specific content. Each component of the page is authored in a separate library as a stand-alone module, although it may share data generated by higher-level components or within the root template via namespaces. Thus designers and coders can concentrate, say, on the contents of a new menu bar, or the functionality of the content pane without concerning themselves with the overall page structure.
The result of using layouts is neat, easy to maintain, reusable markup, and rapid development of new applications by those familiar or unfamiliar with the system without blind code copying.