Mango Really is Sweet! - Open-Source ColdFusion Blog Software
Installation
Installing Mango is a breeze, and should really set a standard for how a ColdFusion application should manage installation. The first thing you need to do, obviously, is download the zip file from the Mango site and unzip it to your site root. Next, you will need a datasource. Assuming you aren't installing Mango onto a preexisting site, create an empty database (MSSQL or MySQL are currently supported) and then add that database as a datasource in the ColdFusion Administrator. In fact, for MSSQL you can even skip that last step as Mango will create the DSN for you if you provide your ColdFusion Administrator password. Now, load up your site.
What's this you say...no mappings?...no SQL scripts? Nope! You will be presented with an installation wizard that will handle everything for you from creating the database tables to setting up your initial user credentials. The installation even includes a step to import content from other blog engines such as BlogCFC (only version 3.6 at the moment) and WordPress, though I have not personally tested this feature. Once you have finished the setup wizard, you can log in and make your first post or view the site with the default skin (more on the skins later).
One issue I did run into that you should be aware of is that I installed everything locally and wanted to move the site and database to a remote server. In this case, my paths to my site were not the same locally as remote (this is probably usually the situation). During the install process, Mango writes out a couple of configuration files, config.cfm and pluginprefs.cfm. Inside config.cfm, the absolute paths to your plugins directory and pluginprefs.cfm file are hardcoded into the XML. If your remote server paths are different, you will need to correct this before deploying your site.
Administration
The first thing that strikes you when you log in to the admin of Mango is that a lot of care was taken in the user-interface. The admin has a very clean and usable UI that you could present to someone who isn't even extremely web savvy and they would understand it. I am going to cover the important (in my mind) pieces of the admin. It includes additional features like managing links, authors/users and categories that I won't go into detail on.
Adding Posts
All the standard post information is collected such as title, category, published or not and a publication date to allow you to forward-date publication. Another standard feature is that you can allow or disallow comments on any particular post, even if comments have already been added. You are also allowed to enter an excerpt separately from the post content itself, which is very nice since you might want to summarize your post rather than simply duplicate what it already states. The only feature I noticed that was missing was the ability to directly add attachments to a post.
Mango comes pre-configured with TinyMCE as a rich text editor, which has a lot of options. In my install I did have a couple of minor issues that, to be truthful, I haven't investigated much. The first is minor, but the HTML format view in the installed TinyMCE is terrible. The HTML comes up as a long single line string and the best you can seem to do is just have the lines wrap. This makes actually modifying the HTML a bit of a pain. Secondly, the image manager wasn't working out of the box, but I haven't had time to investigate why. Generally speaking though, it is nice to have a WYSIWYG editor in place as it allows me to copy and paste from my Google Docs and retain formatting.
Adding Pages
The static pages interface is nearly identical to the post interface with the exception that pages don't have a category. Instead pages can be placed either on the root or as sub-pages of an existing page. They can also be given a sort order. By default, pages do not allow comments, but they can be enabled as well.
Changing Skins
Not to criticize anyone, but changing and customizing skins on most of the current ColdFusion blog applications I have tried is a difficult and tedious process. If any readers have used WordPress, you know how easy the process could be. Well, Mango has taken WordPress process and actually improved upon it, in my opinion. From an administrative standpoint, changing skins functions just like WordPress. The improvement comes in the customizing process, which I will discuss later.
First of all, Mango comes with an assortment of available skins included. Changing skins is just a matter of clicking the "use this skin" link in the admin, and you're done. Now, view your site and your new skin should be in place. Adding new pre-built skins is just a matter of uploading them to the skins directory.
Customizing Skins
Where Mango truly shines is in the customizing of skins. I had chosen a particular design (courtesy of Open Web Design) that I wanted to use for the Flex Camp Boston site. (Again not meaning to criticize but rather just compare) in other ColdFusion blog engines I have tried, implementing this new skin would be a long and possibly complicated process that often includes modifying the core code and makes upgrading complicated. In Mango, that was not the case as there are template tags available that expose all the functionality and data you need from the blog engine via a simple API. You simply need to implement a set of 5 required template pages and you are good to go (there is a skin.xml as well, but it seems to primarily contain metadata for the admin).
As an example, here is the code that I am using on my index.cfm template for Flex Camp Boston to output the most recent eight posts, including a link to my archive if there are more than eight posts:
<mango:Post>
<div class="post">
<h1><mango:PostProperty title /></h1>
<mango:PostProperty ifhasExcerpt excerpt />
<mango:PostProperty ifnothasExcerpt body />
<div class="postInfo"><p class="right"><mango:PostProperty ifhasExcerpt><a href="<mango:PostProperty link />">Read more</a><br /></mango:PostProperty><mango:PostProperty ifcommentsallowed><a href="<mango:PostProperty link />#comments"><mango:PostProperty commentCount /> Comments</a></mango:PostProperty></p><p><mango:PostProperty date dateformat="yyyy-mm-dd" /></p></div>
</div>
</mango:Post>
</mango:Posts>
<mango:Archive pageSize="8">
<mango:ArchiveProperty ifHasNextPage><p class="right"><a href="<mango:ArchiveProperty link pageDifference="1" />">< Previous Entries</a></p></mango:ArchiveProperty></mango:Archive>
In theory, this code means that anyone can share their template with you and it should work out-of-the-box. In fact, the only (minor) issue I had with the templating was that the docs were still incomplete (again, its still in beta). Nonetheless, the tags themselves were easy enough to open and understand without much effort.
Managing Files
A really nice feature is that Mango includes a built-in file explorer using ASFusion's Flash-form based ASF File Explorer. Unfortunately this feature didn't seem to work for me on my local or production servers, both running ColdFusion 8. It could be a misconfiguration in my setup somewhere, as I have not even tried to run anything with Flash forms in a long time. In Internet Explorer, it through a JavaScript error, but in FireFox (actually Flock) it just comes up blank. I am sure whatever the issue is, it will be resolved, but its really too bad as this is a feature I think is very useful.
Note: This has been corrected and was a missing mapping in my Apache configuration for /CFIDE. Thanks to Todd Sharp for catching that.
Plugins
Mango comes with a number of pre-built plugins already included. By default, Lyla CAPTCHA is supported and enabled, as are the code color coding, remember me, hot linking URLs in comments and coComment support plugins. There is also a plugin for Google Analytics included but not enabled by default. Much like WordPress, once you enable this plugin it adds a sub-option to your settings that allows you to paste your account info. As I said before, Mango is definitely a ColdFusion blog you could easily give to a less savvy web user and not have to worry.
Creating plugins is not specifically documented, but looking at the existing plugins can give you a good sense. Besides the administrative settings for something like Google Analytics, a plugin attaches itself to various events that are triggered by "mango:Event" tags within your templates. What event(s) a plugin is attached to is determined by its plugin.xml. When this event is announced within your template processing, a component method is called on the registered component for this plugin, generating the necessary code on the output.
API
Another nice feature of Mango is that it implements APIs that can be used by external editors if you choose to use one. The documentation states that Mango implements the MetaWeblog, Blogger and Movable Type APIs. This means that if you use something like Flock, for instance, to edit your blog (though there are some documented issues with Flock specifically). Still, going forward I think this will be a key feature allowing for third-party tool integration and support.
Conclusion
I am really very impressed with Mango and give Laura a lot of credit for having such a well-developed and mature blog application at this early stage of development. As a beta program, some of the issues I noted should be expected, and most were minor. However, Mango seems to have enough compelling features as is to make it well worthy of consideration by anyone looking to launch a blog. In addition, the template and plugin support seems to me to be setting a new standard for ColdFusion-based blog applications. I am really looking forward to how this application develops going forward.
Thanks for the review!
I've been silent about Mango's beta release because there is so much more that I would like to add to it. You can be sure that I will be working on ironing out its wrinkles :)
PS: there is an update I need to add to the file explorer to make the file upload work in Mac.

