I’ve made more progress on the web content templating in Alfresco this week. I’ve really gotta think of a better name for it than that, but I’m dubious about dubbing it web content management as it’s missing quite a lot from the set of WCM functionality that’s coming to Alfresco later this year.
Anyway, the templates now support full previewing of content from within the application, just by applying a special web page template to a space. Here’s some screenshots of this in action:
This is the top level web content space, so the various sub-spaces simply mirror the UNIX directory structure of our current production site. So, each page is represented by a space and the individual files within each space are then used to build up the content of the page. If you really wanna know the details:
- page.properties contains various metadata about the page, like its name (used in the navigation elements), title and meta tag information
- site.properties is a special file that exists only in the top level of the site and – logically enough – contains information about the site itself, like it’s URL and the default templates to be used
- Here front_content.html contains the main content of the page, which is everything except the page header, navigation and footer elements. In other pages the files main_content.html and right_content.html are used together to form a two-column layout
From here, you can select View Details from the More Actions menu to bring up the details screen.
The best thing about this preview is that you can click around within the page and load up other pages straight from Alfresco. This takes all hyperlinks, images and other such stuff that it finds in the page content and points them back into Alfresco, via the template or download servlets – true WYSIWYG previewing!
There’s a few things still to do before the system’s fully production-ready.
- Integrating the news template that displays the x-most-recent items on our press releases page
- Building a template that parses an iCal file on the server and displays a list containing our forthcoming events
- Making a template that performs a Lucene search on the web content and displays a list of matching pages
Other things that would be useful:
- Have an alternative ‘Print this page’ template available
- Make the revision history of each page available via a web page or an RSS feed
- Support logging in to the site, and having restricted content magically become available!
Soon enough, we’ll be 100% powered by Alfresco
One of the most eagerly anticipated features soon to be part of Alfresco it would seem, is our web content management capabilities. This functionality isn’t just something that our customers are asking for, it’s something that we desperately need internally too.
Our two sites at www.alfresco.com and dev.alfresco.com currently run on an Apache/PHP server, which despite being nice open source software is a pain to keep up-to-date. Who wants to install a complete development environment and trudge their way through sections of PHP code just so they can add a news item to the site?
Well now we don’t have to. By combining the power of Alfresco’s forthcoming 1.3 release with the flexibility of the Freemarker templating engine we have a robust platform for WCM that we can use to store our web content securely, yet in a manner that drastically cuts down the time to make changes. Automatic versioning, access via CIFS, FTP, WebDAV and the web client – we’ve got it all.
It’s taken about a week’s worth of hacking to get an initial version of this up and running, most of that time having been spent building up Freemarker templates, but with some additional work to code a PHP proxy that recieves requests for freiendly URLs and feeds this request through to Alfresco, which generates the complete markup. Now try doing that with your average proprietary CMS. No? I thought not .
I spent some time today experimenting with Mozilla’s Sunbird calendaring app, trying to build up a comprehensive list of all the events going on within Alfresco. There’s a lot of stuff going on here at the moment but we don’t yet have a single place on our site where you can get a comprehensive summary of all these cool events.
So the solution? Publish an iCal file to the web site that people can subscribe to using their client of choice that will keep them informed about what’s going on.
Sunbird makes it dead easy to create the iCal file and add events to it, but publishing this to the site via FTP is messy and limits the subset of people who can contribute to the calendar to those people with FTP details for the site. Not so good.
So I stored the calendar file in Alfresco instead. Now anyone with write access on that file can contribute, and Sunbird can even update the calendar directly using the fabulous WevDAV support built into Alfresco.
You can download the calendar or if you’re a fellow-Alfrescan with an account on customers.alfresco.com then you can subscribe to it in Sunbird or the calendaring extensions for Firefox and Thunderbird. iCal might well work with it too, but I don’t have a Mac to test this on.
All in all, a pretty good example of what you can achieve in a couple of hours using open source software and open standards like iCal and WebDAV .