

Share on TwitterShare on TumblrSubmit to StumbleUponSave on DeliciousDigg This

All this explosion of information (useful content) requires software systems capable of organizing and managing this content by letting the users themselves organize it in meaningful and useful ways, and make it available to the appropriate users. The applications intended for this purpose are called Content Management Systems (CMSs).

CMSs are numerous, popular, and widespread today. Most are integrated systems that offer a portal—based architecture, allowing integration not only of content-management-specific modules, but also various other modules such as like chat rooms, forums, wikis, shopping charts and other e-commerce functionality. While all this functionality can be beneficial in large organizations, smaller organizations, which need only basic systems for organizing their own documents and providing appropriate access rights to their employees and selected partners, such comprehensive systems can be overkill.

A recent customer of mine began the quest for a CMS by reviewing various full-featured CMS systems (such as DotNetNuke, Joomla and phpNuke). He liked their overall functionality, but thought the complexity of the admin modules was prohibitive. So he asked me to design and implement a custom application that had just the functionality he needed.

Defining Requirements

The system had the following requirements:

Figure 1. Visual Prototype: In this prototype, you can see the main parts of the MiniCMS application, with a document selection pane on the left, and a work area on the right.
  1. The application will have a Documents Management module with an integrated WYSIWYG editor, available only to administrators, where they can create and edit HTML documents.
  2. Documents should be organized in a logical tree structure. Users should be able to freely rearrange the documents in the tree structure.
  3. The application’s document selection pane will be organized as a tree, dynamically defined by users, by linking with documents defined in the system. A document should be linkable to multiple points in the document selection pane structure, with different names.
  4. Users without administrator rights should be able to both view and edit documents when accessed directly from the document selection pane structure.
  5. Users should be able to upload other type of documents (such as Excel files, MS Word documents, and PDF files) and link to them from the edited HTML documents.
  6. The system must have user authentication and management features that allow administrators to create users and groups, assign users to groups, and assign access rights for documents to groups or individual users.
  7. The application contains two panes: a Document Section Pane on the left, and a workplace pane on the right. Documents and management modules open in the right pane, which is the main workplace (see Figure 1).

Why Choose Visual WebGui?

Figure 2. Visual WebGui Project Templates: You’ll find these new template types in Visual Studio after installing Visual WebGUI.

To implement this application, I chose Visual WebGui, an open-source AJAX framework built on top of ASP.NET. Visual WebGui offers a programming model that replicates the WinForms desktop development, but for the web. Experienced .NET desktop developers can begin developing powerful web-based AJAX applications very quickly by leveraging their desktop development knowledge.

Author’s Note: Visual WebGui is available for both NET 2.0, with Visual Studio 2005, and NET 3.5, with Visual Studio 2008. The sample application uses NET 2.0, VS 2005 and Visual WebGui version 6.2.3.

After you download and install Visual WebGui, you’ll find three new project types available in the VS project templates: Visual WebGui application, WebGuiClient Application and Visual WebGui library (see Figure 2).

You’ll also find three new components in the Toolbox: the Visual WebGui Custom Control, Visual WebGui Form and the Visual WebGui User Control. These correspond to the WinForms Custom Control, Form, and User Control, respectively.