An Article by Steve Drucker PaperThinCommonSpot Content Server, developed by PaperThin, Inc., has been simplifying Web site development and authoring since its introduction in 1998. On April 8, 2004, the newest generation, version 4.0, was released. Web Content Management products usually seek to empower nontechnical users by allowing them to modify Web content from their desktops; enforcing standards; and categorizing, structuring, and cataloging information in a way that makes it easy to locate. With over 200 commercially available products spanning every conceivable market niche, CommonSpot has earned a reputation for ease of use and best overall value among its competitors. The fact that it's written and extensible through ColdFusion should come as no surprise to anyone.Easy Development I'm a big fan of Occam's Razor - a logical principle attached to medieval philosopher William of Occam that clearly states the following: "one should not increase, beyond what is necessary, the number of entities required to explain anything."

PaperThin has wisely followed this mantra as it pertains to CMS development. Developing templates with CommonSpot requires mastery of just two simple tags. The net effect of this simple architecture enables you to create a template in a very short amount of time with no learning curve. The following <CFINCLUDE> definition invokes the menu bar, as depicted in Figure 1.

<cfinclude template="/commonspot/pagemode/pagemodeui.cfm>

The second tag defines an editable content area that allows a user to define rows and columns, and insert any of the 50 "out of the box" interface widgets that ship with the product. These include the following:

  • Layout: HTML table control
  • Formatted text block: IE-based WYSIWYG editor
  • Image: jpg, gif, png image with version control and metadata
  • PDF: Embed a PDF file within a page
  • PowerPoint: Autoconvert a MS PowerPoint file to HTML
  • MS Word: Autoconvert a MS Word file to HTML
  • Page Index Element: Dynamic set of links
  • Breadcrumb: Breadcrumb navigation links
  • Simple form: Define a data input/update form
  • Datasheet: Extract and display database content in a sortable HTML table
  • SearchForm: Defines a full-text or keyword-based search form
  • SearchResults: Captures data input from the searchform control and performs searching through the Verity VDK/K2
  • QBE (new): Query by example allowing you to define an advanced search interface on custom-defined objects

<cfmodule template="/commonspot/utilities/ct-render-named-element.cfm"
   elementtype="layout"
   elementname="contentlayout"
   basetemplatename="common">

Once a "base template" built in ColdFusion is defined, you can create your own custom template "layers" through the CommonSpot authoring user interface. No additional coding is required. PaperThin's model for template layering is unique among CMS vendors and has repeatedly been cited by CMSWatch (www.cmswatch.com) as a best-of-breed implementation.

Enhancements to the Authoring Experience
PaperThin has added enhanced spell-check capabilities to CommonSpot. Whereas some systems allow you to only spell check content within a WYSIWYG editor, CommonSpot now allows you to spell check virtually every data input field within the system. Administrators may create custom dictionaries as well as allow users to maintain their own personal dictionaries. I found the spell-checking interface to be quite intuitive, yet somewhat frustrating, as many of the technical terms that I was entering were not part of the default dictionary. If you plan on enforcing the spell-checker popup, I strongly suggest that you add proper nouns (like your company's name, for instance) to a custom dictionary before roll-out to your content authors.

Perhaps the most visible upgrade in 4.0 from a contributor and approver perspective is the addition of a "visual difference" feature that now allows you to compare and contrast changes to an article or page quickly and easily. As depicted in Figure 2 and bearing some resemblance to Microsoft Word's track-changes feature, additions to content are highlighted in yellow while deletions are marked as red strike-throughs.

Virtually Unlimited Scalability and Flexibility in Deployment
For years, the "dirty little secret" among application developers has been the knowledge that in order to make any Web-based system scale to a virtually unlimited number of clients, you must throw out your reliance on an application server and database to process pages on demand. Even the most efficient systems cannot hope to achieve the performance of static HTML delivery. CommonSpot 4.0 now supports an add-on module that can automatically differentiate between pages that may require dynamic processing at runtime and those that do not. Pages that meet the latter criteria are generated once at publish-time and placed into a static site (i.e., http://static.figleaf.com.) whereas dynamic pages are placed in a mirrored URL (i.e., http://dynamic.figleaf.com). A user navigating through the Web site bounces between the two virtual Web sites transparently. Additionally, you can now stipulate the file extension (ASP, JSP, CGI, etc.) for generated pages. This allows you to leverage available code from practically any application server on your deployed site. The product actually supports two forms of deployment - clustering and replication. In the former, file-based content for a Web site is replicated across multiple servers via FTP or Windows Networking; however, all servers point to the same database. In a replication model, both file-based content and database entries are propagated to each server. So, you may create duplicate file systems, duplicate databases, both, or neither, depending on your network infrastructure.

Custom Support for Internationalization
CommonSpot natively supports 11 languages out-of-the-box: Danish, Dutch, English, Finnish, French, German, Italian, Norwegian, Portugese, Spanish, and Swedish. Through a little bit of coaxing, however, I was able to develop and deploy a CommonSpot-based site using ColdFusion MX and Microsoft SQL Server that supported an additional 16 eastern European languages using UTF-8 character encoding. These included Slovak, Greek, and Macedonian. You can view the fruits of this effort at the following URL: www.neweuropereview.com. A second CommonSpot site that I am developing will include content in over 40 different languages, including Arabic, Hebrew, Chinese, and Japanese. Hopefully by the time this article is published, an "officially sanctioned" language extension patch will be available. In addition, CommonSpot now supports all international date formats and creates custom field types that allow you to apply whatever formatting and form field validation you wish.

No Developer API, but You Don't Really Need One...
Over the last three years I have developed dozens of Web sites using various iterations of CommonSpot. Throughout each development cycle I have been able to meet 100% of my customer's expectations, despite the absence of a published developer API. How was this possible? For starters, CommonSpot's rich library of pre-defined elements meets most of our customer requirements out of-the-box - meaning that little or no customization was required. For cases where we must capture specific content attributes or apply custom validation, we use CommonSpot's custom element definitions.

Custom elements were first introduced in version 3.0 and have been improved upon in the latest release. Through a series of wizards you can define an object - a press release, for example, which has specific fields (title, teaser, body text, publish date, etc.) and associated form input types (text field, textarea, wysiwyg editor, calendar date selector). Version 4.0 now allows you to group fields onto different screens, accessible through a tab-bar interface making data entry a bit more intuitive. You can define output formats either graphically through a WYSIWYG editor or programmatically through a "custom render handler." Content entered through a custom element may be published simultaneously to multiple locations throughout your site. Changes to a data instance propagate to all published locations at once. CommonSpot 4.0 now allows you to create your own custom field types, meaning that you may develop your own UI widgets using Flash, client-side Java, DHTML, or virtually any other client-side technology and include them as part of your data entry form.

Drawbacks
Curiously, the only feature that is altogether absent from the product is support for XML-based technologies. While you could certainly extend the product by hacking an RSS feed in ColdFusion that reads directly from CommonSpot's database structure, it sure would be nice to see this added to the product as a point release. Also, some XML-based import/export utilities might come in handy as well.

The Value Proposition
With pricing starting at $19,500 for a base authoring license and 10 content contributors, one would be hard-pressed to label the product as "inexpensive." However, once you consider the rich out-of-the-box feature set, the associated reduction in custom development time (re: headaches), its price relative to its peers, as well as PaperThin's longstanding track record of stuffing a ton of functionality into each release, it's easy to understand how CommonSpot has prospered in a highly competitive marketplace. Thumbs up!

About the Author
Steve Drucker is the CEO of Fig Leaf Software, a Macromedia premier solutions and training partner with offices in Washington, DC and Atlanta, GA. He is also a certified Macromedia instructor and MM certified Dreamweaver, Flash, and Advanced ColdFusion MX developer.

--- This article reprinted with permission of www.sys-con.com.