Monday, September 26, 2011

CiviCRM multilingual and customization: nice progress!

Today we've launched the 2012 French for the Future National Essay Contest. The full site is someone else's, but the contest submission pages are built using CiviCRM.

The essay submission pages are actually implemented as event registration pages of CiviEvent, which isn't exactly what CiviEvent is built for, but was close enough and provides some nice functionality that other alternatives (e.g. a simple CiviCRM profile) wouldn't provide.

Before starting, my biggest fears were around the custom presentation bits. My first CiviCRM implementation was back in 2006, and ever since then, my standard wisdom for anyone using CiviCRM is that CiviCRM is great as a CRM, but less great in exposing itself on your website. Partly, that's because CiviCRM is CMS agnostic, so it can't use all the great tools that I'm accustomed to with Drupal (notably the forms api), but also because of the whole Smarty/QuickForm architecture, which was okay for the day, but now way behind the competition.

On the other hand, CiviCRM has put a lot of work into improving this aspect over the past few years. My personal favourite trick, ever since learning jQuery and having that available for CiviCRM pages, is to use it via the theme layer or a custom module for almost any cosmetic changes. It's cheap, easy, safe and powerful. But it won't do functionality changes - for that, the new hooks are a nice complement.

Another great example - the new ability to add multiple profiles to event signups. Breaking up the fields into groups (which have to correspond to separate profiles), is both sensible from a useability point of view, as well as backend organization.

What I hadn't experimented with so much was the multilingual option, which until recently (i.e. mysql 5.1) required very unsafe mysql permissions for the site. But after one earlier success, I jumped in and have been surprised all the way along - the functionality has been perfect, and the administrative tools more than adequate. Particular thanks to DaveD for pushing forward the new "Word Replacement" feature (but no points for changing the name from string replacement and hiding it in the options section, I almost didn't find it!).

So my report from this project is: awesome, and thanks. I had a highly detailed-oriented client, and could satisfy almost all her requests.

CiviCRM also was able to import previous year's data, and next we'll be setting up donation pages and testing CiviMail.