New ManuSoft web site

After over 10 years of the same infrastructure and the same look and feel, the ManuSoft web site has finally been given an overhaul. The original web site used Perl scripts that I wrote myself to serve up pages by patching together a header, table-of-contents, and main content frame and displaying it either as a 3-frame web page or by using an HTML <table> to format the layout. It wasn’t exactly pretty, but it functioned well and served its purpose for a long time.

So what prompted the new design? Primarily my desire to make it easier for customers to download updates to previously purchased software. The old web site used a rather simplistic authentication system that resulted in me spending a lot of time looking up order numbers for customers who had lost their order information. There also was no automated way for customers to update their own registration information, so I had to do that as well.

The new web site requires only a user name and password, both of which can be retrieved or reset simply by entering the email address for the account. Hopefully this will reduce the need for manual intervention. If you purchased ManuSoft software in the past, please visit the Customer Service page now to activate your account (in the Legacy Account section).

I used Joomla for the content management system and VirtueMart for the shopping cart, both of them heavily customized. The template I chose doesn’t work correctly with IE6, but later versions of IE, FireFox, Opera, and Chrome seem to work pretty well (except that, ironically, my Google Translate widget displays incorrectly in Chrome).

I think the new site looks a bit nicer and more modern than the old one, although it’s still amateur by most standards. As long as it serves its purpose of making both yours and my job easier, I’m satisfied.

I’ll take web sites for $200, Alex: Part IV

(continued from Part III)

Creating custom modules for DotNetNuke is an esoteric process that I don’t recommend unless you’re prepared to invest quite a bit of time and effort. I slogged through the process because I’m too stubborn to quit, but it’s hardly worth the investment in time for a one-off custom module. I don’t expect many of my readers to try it anyway, so I won’t bother describing the technical aspects in any detail.

My primary objective was to create a Docket History module that renders a court case’s docket history in an HTML table. Since DotNetNuke modules (generally) render data from a database, a large part of my work was defining the database structures and database interface code. The database work was an opportunity to learn more about SQL syntax, something I had never really delved into very deeply in the past. As the module began taking shape, I found myself having to refactor over and over again, often changing the database structure in the process. Changing the database structure meant recreating the data and rewriting the database interface code.

Once I had a working Docket History module, I decided to apply what I had learned to a second custom module for the Grapevine page of the web site. This module would simply display a date-ordered list of links to external web pages, including a column for the “Source” of the linked page — a bit less complicated than my first module. It should come as no surprise that the second one took about a tenth as much time as the first, mainly because I spent much less time refactoring. That doesn’t mean I got it right the first time. In fact, I eventually went back and made yet more changes to the first module to reflect the optimizations and design improvements I discovered while working on the second.

To recap, the web site today consists of DotNetNuke 4.4.0 “out-of-the-box” (I upgraded to 4.4.0 from the original 4.3.7 after 4.4.0 shipped in late December), a free skin from Nina’s Free Skins, the two custom modules I created, and a bug fix to correct a PDF file download issue as described in a DotNetNuke forum thread. Total time spent was around 200 hours over four weeks. Finally, a complete web site — or was it? In Part V, find out what the last missing ingredient was.

I’ll take web sites for $200, Alex: Part III

(continued from Part II)

DotNetNuke (aka DNN) is not simple to set up. It needs at least the free SQL Server Express Edition on the host system (full SQL Server requires some changes to the default configuration) and either IIS or another ASP .NET 2.0 compatible web server to run on. If you have Visual Studio 2005 fully installed, you have all you need to run DNN.

There are a number of manual steps involved, and the steps are different depending on the environment, and whether or not you have the version with full source code included. The quickest route to an operational DNN installation is to download the latest ‘Install’ files from http://www.dotnetnuke.com/ and unzip them to a new folder. Next, make sure the ASPNET account has modify, read, execute, and write access to that folder (new folders will not have this permission by default — it must be added). Next, create a new virtual directory in IIS and map the new virtual directory to the new DNN folder. Once this is done, open a browser and browse to the new virtual directory. This will initiate the DNN installation sequence, where it creates and populates its database with default settings. Once the installation sequence completes, DNN is ready to use, and looks like this:

The structure of DotNetNuke is designed so that a single DNN installation consists of a host (the person controlling the physical computer on which the web site lives) and any number of portals (that may be administered by others). The distinction is important when changing settings because host settings can place limits on portal settings, and portal settings can override host default settings. In my case, I am both host and administrator of the single portal.

A DNN portal is a single web site. A web site consists of web pages (also called “tabs” in DNN lingo), each containing controls that may be added to predefined “panes” on the page. Before you can add new controls to a page, the controls must be defined. You can define controls by importing “modules”. These can be third party modules, or one of the 15 or so standard modules that come with DNN.

To actually modify the web site, you simply log in to the web site as an administrator. As soon as you are logged in as an administrator, the web pages change to reveal administrative controls that you can use to modify the layout or module settings of the current page, like this:

Notice the control panel at the top of the page, as well as the new hyperlinks on the controls themselves. These can be used to change individual module settings, or to move modules around the page (or even to a different page) very quickly and easily. There is also a new “Admin” menu page that an administrator can use to manage all other aspects of the web site such as the skins, user accounts, security roles, and other site settings. In theory, all this editing can be done on a live web site; in practice, most changes should be made first on a local mirror of the site, then uploaded to the server once they have been fully tested.

The beauty of a CMS system is that the software makes it possible to build a complete multi-page web site in minutes. Changing skins is quick and can change the look and feel of an entire web site instantly. Unfortunately, there’s always a catch. The price of quick-and-easy is that you have to live with the quirks, bugs, and inconsistencies that come with the software. I spent a lot of time trying to fix some little things that I wasn’t happy with. In some cases I was able to fix them myself, but in the end I just had to learn to live with numerous small irritants.

Coming up in Part IV, completing my first custom module.

I’ll take web sites for $200, Alex: Part II

(continued from Part I)

The kind of web site I wanted to create is usually built on top of a Content Management System (CMS) that becomes the administrative user interface as well as the framework for web pages that get served to web site visitors. The first thing I learned is that there are *thousands* of CMS products floating about the internet, from simple “guest book” type scripts to full blown corporate extranet management systems designed for use by tens of thousands of employees and customers. I’ve also been looking for an excuse to learn ASP.NET, so I decided to narrow my search to CMS software that was based on ASP.NET. Finally, the software had to be free or very inexpensive.

Based on these criteria, I narrowed the choices down to Community Server [now Telligent Community], DotNetNuke, Rainbow Portal, and newcomer FlexCMS. Community Server is free for personal use, but for my planned use it would have cost several hundred dollars — probably out of my range, but I still downloaded and tested it for comparison purposes. DotNetNuke is open source based on a permissive BSD-style license (free to use or modify for any purpose), plus it has a large and relatively mature user base. Rainbow Portal is released under the LPGL license, with discussions currently underway about changing the license. Both DotNetNuke and Rainbow Portal are based on a Microsoft sponsored sample ASP application called IBuySpy. Rainbow Portal seemed more polished, but I ran into some limitations with both pretty quickly. FlexCMS, while seemingly more logically designed and built from the ground up on the latest version of ASP.NET, was clearly lacking a lot of features that the other two free packages included. In the end I chose DotNetNuke because it had a more permissive license and a larger user base to draw support from (I found the documentation for all these packages fairly useless, so peer support was a must).

Next step was finding an inexpensive web host that would enable me to install, run, and administer an ASP.NET/SQL Server application. If you’ve ever looked for a web host, you’ll know that it’s sometimes difficult to find one that provides the remote management capabilities and server software that you need (in my case ASP.NET and SQL Server running on IIS, which are less common than PHP/MySQL solutions running on Linux). I’m aware of several quality hosting companies. Pair networks usually gets good reviews, but they don’t do Windows. I’ve used GoDaddy before for registering domain names without any problems, so I headed there to check out their prices and policies for hosting plans. When I saw that they offered a Windows based economy plan with plenty of storage space and bandwidth for $3.19 per month, I decided to just register my new domain name and sign up for GoDaddy’s shared hosting plan on the spot, and be done with it.

Total cost for DotNetNuke CMS software, 2 years of web hosting, and a new domain name registered for two years: $88. Not bad. In Part III I’ll show you how DotNetNuke works.