Skip to main content

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.

Popular posts from this blog

The Tyee: Bricolage and Drupal Integration

The Tyee is a site I've been involved with since 2006 when I wrote the first, 4.7 version of a Drupal module to integrate Drupal content into a static site that was being generated from bricolage. About a year ago, I met with Dawn Buie and Phillip Smith and we mapped out a number of ways to improve the Drupal integration on the site, including upgrading the Drupal to version 5 from 4.7. Various parts of that grand plan have been slowly incorporated into the site, but as of next week, there'll be a big leap forward that coincides with a new design [implemented in Bricolage by David Wheeler who wrote and maintains Bricolage] as well as a new Drupal release of the Bricolage integration module . Plans Application integration is tricky, and my first time round had quite a few issues. Here's a list of the improvements in the latest version: File space separation. Before, Drupal was installed in the apache document root, which is where bricolage was publishing it's co...

A Strange Passion for Security

I'm not a computer security expert, but it's been part of my work for many years, in different forms.  A very long time ago, a friend hired me to write up a primer for internet security, and ever since then it's been a theme that's sat in the background and pops up every now and then . But lately, it's started to feel like more than a theme, and but indeed a passion. You may consider computer and internet security to be a dry subject, or maybe you imagine feelings of smugness or righteousness, but "passion" is the right word for what I'm feeling. Here's google's definition: Passion: 1. a strong and barely controllable emotion. 2. the suffering and death of Jesus. Okay, let's just go with number 1. for now. If you followed my link above to other posts about security, you'll notice one from eight years ago where I mused on the possibility of the discovery of a flaw in how https works. Weirdly enough, a flaw in https was discovered shortly...

Orchestrating Drupal + CiviCRM containers into a working site: describing the challenge

In my previous posts, I've provided my rationale for making use of Docker and the microservices model for a boutique-sized Drupal + CiviCRM hosting service. I've also described how to build and maintain images that could be used for the web server (micro) service part of such a service. The other essential microservice for a Drupal + CiviCRM website is a database, and fortunately, that's reasonably standard. Here's a project that minimally tweaks the canonical Mariadb container by adding some small configuration bits:  https://github.com/BlackflySolutions/mariadb That leaves us now with the problem of "orchestration", i.e. how would you launch a collection of such containers that would serve a bunch of Drupal + CiviCRM sites. More interestingly, can we serve them in the real world, over time, in a way that is sustainable? i.e. handle code updates, OS updates, backups, monitoring, etc? Not to mention the various crons that need to run, and how about things ...