Exponent CMS review
As I mentioned above, the Exponent CMS interface is the main thing which makes it stand out. It makes complex tasks such as content reuse and insertion of graphics simple, via uncluttered graphical interfaces. At the same time, it has a clean architecture which makes addition of new functionality straightforward for developers.
One possible advantage of Exponent for some users is that it is under development by a commercial company. This means that a rough roadmap of forthcoming features is available on the website, and that commercial support for the product may eventually be available.
Exponent would suit provision of a simple content managed website for non-technical users. It can be locked down comprehensively, meaning you can have a great deal of control over which pages are editable. The WYSIWYG editor works well, and means even non-technical users can make edits. You may need to provide some training if you expect them to use the more advanced features described below (e.g. allowing users to add new pages or reuse content between modules).
Installation of Exponent is very simple indeed: it merely requires access to a MySQL database, and a valid user and password for that database. The installation is driven through the web interface, and is careful to prompt the user about database access issues and file permission issues (if found).
Once it is up and running, Exponent shines in the quality of the interface for content editing. This includes features such as:
- Simple container and module metaphor for content: it is possible to add one or more containers to any page, which can in turn hold other containers or modules; modules hold the actual content (e.g. the text module is used to hold a chunk of HTML).
- WYSIWYG editing is available in several of the modules (e.g. HTML module, Calendar module); the editor can even be customised via the web interface, so you can determine which controls are available to users.
- Versioning is very simple: all previous versions of any module are shown in a list, and you can preview them individually. When you find the one you want to roll back to, you simply click on a link.
- All new content appears in the menu automatically, and the menus can be edited through the web interface.
- A new column can be added to a container very simply, meaning you don't have to have the same layout on every page of your site.
- Content reuse is facilitated through the use of a graphical "picker": when you add a new module to the system, you can either insert new content, or use content from an existing module of the same type. The 20 point test contains a test for reusing location information: so for example, if you have two events in the same location, can you maintain location information in one place, but reference it from both of the event records. Then, when the location information is changed, it is updated in all places where it is reference. Exponent is the only system which allowed me to do this via a graphical interface.
- Graphics can be inserted into HTML pages, and the interface provides an integrated file upload feature.
- Start and end dates for publication can be specified.
From an administrator perspective, the following features are of note:
- Workflow is highly configurable, and means that you can limit users ability to publish directly to the live site; it is even possible to require multiple approvers, so a page may have to be approved by several people before it can go live.
- The permissions system is very comprehensive, based around users and roles. Every container or module can have permissions set by role: for example, you could allow one group of users to add news stories which require approval, while allowing a different group to add news stories and approve them.
It is slightly lacking in the following areas:
- Although the interface is generally good, it can be a bit confusing initially, as it contains many icons, each giving access to a different configuration screen. Having said this, the permissions system would hide many of these icons from most users, as it only shows options to which a user has access.
- Some of the modules only have basic functionality; for example, the calendar cannot be used to record events spanning multiple days.
- There are still some bugs: for example, the administrator menu kept disappearing, and I had to keep manually adding it back into the layout.
Additional modules/extensions are available from the Exponent CMS SourceForge site. However, these are limited in scope; there are also few community extensions (all of the current ones have been developed by the commercial company who developed the software). I did try installing one of these extensions, but was unable to get it to work properly.
However, despite the immaturity of the product, it has already engendered a lot of developer activity on SourceForge (as I write, it is in the top 10 most active projects there). So before too long I would expect to see a rash of new modules appearing.
The templates are based on the Smarty template engine, which is very powerful and flexible. However, because of the way they are designed, they are spread across several files, which makes them harder to follow than simpler template systems (like Drupal's). Although, when I tried editing the templates and CSS files, it wasn't too hard to make substantial changes or make sense of the structure.
It's worth mentioning that the default templates are based around HTML 4 (which is a fairly old standard), and use table layout. This may make them unacceptable from an accessibility perspective, and you may have to write your own templates if you need to adhere to a different standard.
The code is logically laid out, and simple enough to make your own changes to. Code from external projects (e.g. HTMLArea and Smarty) is maintained separately from the core code base, so it should be possible to upgrade these parts separately if desired.
Internally, the code is well-documented and logically arranged. For example, individual subsystems (such as SMTP functionality, session handling, or user account management) are organised into separate files, which means it is relatively easy to find the section of code you want if you need to make changes.
One interesting feature of the code is the pains taken to ensure compatibility across different versions of PHP. The distribution includes code from the PHP distribution, and provides function definitions for functions which may not be present in older versions of PHP. This is a sign of good attention to detail.
Free developer documentation is relatively sparse at the moment. There is a developer/beta tester website which may provide more documentation for developers.
Version evaluated: 0.95
Platform: PHP + MySQL (no exotic dependencies, so should run on standard web space)
Article originally posted 2005 under the licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License