Blog

Overriding styles combo in CKEditor

CKEditor is a superb WYSIWYG text editor and when used together with the CKEditor module for Drupal it's a great solution for enabling editors to easily add HTML to content. A common issue site builders seems to have is changing the list of styles that are available in the Styles drop down combo. Here's the salient tip for getting it working!

CKEditor comes with a Styles drop down combo that enables editors to select some text and then decorate it by selecting from a list of available styles:

Breaking words

Migrating away from legacy content management systems can prove challenging, in this blog post we look at a technique for improving the friendliness of URLs!

I'm sure we're all aware that human-readable URL's are a good thing, not only for us but for search engines too. Take, for example, the following URL: /topsubjects/businessandintellectualproperty/businessandmanagementstudies/yourstudyprogram

Prevent ctools custom "content type" plugin's title from being overriden

When creating a ctools "content type" plugin, default behaviour of the settings edit form is to present users with an option to override the title. While this is handy most of the time, some use cases requires that you prevent that from happening.

While you might be tempted to start messing around the setting form itself in your edit callback, you can simply define this in your plugin definition, as follows (in Drupal 7):

Drupal and PHP Traits - Developer love

As difficult as it is to find any OOP code in Drupal 7 contrib, it does exist in certain modules. See how to use PHP traits when the module's base classes are not entirely up to the task.

Admittedly, PHP Traits have been out there for a long time. You'll surely have heard about them, but chances that you've used them are not that high.

Git Hooks, Round 2: Post-checkout

How to use git hooks to have a different set of Drupal settings for each branch of your repository.

In my last blog entry about git hooks, I talked about the post-merge hook, as a way to automate certain tasks every time a "git pull" command is issued on the command line.

Testing Frameworks - an Exploration

A quick guide to setting up a headless unit testing framework incorporating Behat, Mink and Selenium.

Many months ago, a discussion between my colleague Chris Maiden and I sparked off an idea that we developed into an automated testing framework, which is capable of taking any assertions from user stories, and running them either as unit tests against code, or as functional tests against a staged

10 things to remember before launching that great new site

Finally! You’re about to get there! Almost! Nearly! Just the last bits! But wait, did anyone think of…? This is a list of 10 things you shouldn’t forget about when launching a new site.

Finally! You’re about to get there! Almost! Nearly! Just the last bits! But wait, did anybody think of…? This is a list of 10 things you shouldn’t forget about when launching a new site. 

Code Enigma offers WordPress tools

After many years honing our LAMP stack with Drupal, Code Enigma now offers the same stack and deployment tools optimised for WordPress.

For quite a few years now we've been offering professional hosting and tools for Drupal.

Google Analytics Custom Events

Many Drupal sites use Google Analytics to capture statistics on page views, but often, that's as far as it goes. That's fine if the only events that you're interested in are page loads, but what about all the other user interactions that happen on pages? With a bit of extra work, we can capture statistics on those too using the custom events feature built into the Analytics API.

Many site owners use Google Analytics to capture user statistics. Usually people look at page views, number of pages visited, bounce and exit rates. Google also tells you the time users spent on a page, but what about all the other user interactions that happen on single pages?

Meaningful commit messages

At Code Enigma, most of our Jenkins builds post a git log into one of our IRC channels on completion. This helps the ops team to keep an eye on what's going on and to quickly spot any build failures. It also gives us a chance to see the commit messages that people are posting.

Our own developers are pretty well behaved when it comes to making meaningful commit messages (they know they’ll be teased mercilessly if they do anything daft!), but for some hosting-only clients, we have seen some classic examples of meaningless commit messages.

Rethinking the company website

We'd been thinking for ages that we needed to completely change our company website. The whole team felt we had a site that failed to represent either what we do or who we are. After some false starts when we tried to do this in-house we decided to get help from an external design agency and turned to Andy Clarke at Stuff And Nonsense. In addition to a radical design overhaul, we also wanted to rethink how to author content within a content management system so that we would actually want to create new articles rather than thinking of it as a chore. In this article we explain the process from various perspectives: design, content-strategy, back-end and front-end development.

When we decided to update our company website, we wanted a site that shows our customers what we can do. With the help of Andy Clarke and the team at Stuff and Nonsense, we truly believe we've managed it.

Git Hooks for happy Drupal developers - (post-merge)

A practical use of the post-merge git hook for distributed teams.

Granted, you don't need to be trendiest person in software to know about tools like Grunt, or Gulp (but in case you don't, they're really useful task automation tools to aid with common development tasks).

Twitter Pane

Almost certainly, a time will come when a client asks for a list of Tweets to be displayed on their Drupal site.

There are a plethora of modules out there that can help provide this functionality. For example:

Better UX in your forms, the easy way

Entity References are cool. Prepopulating them is even cooler. You've seen it already, but if you are not working with Field API, you're on your own... until now, at least.

If you've ever used Organic Groups, chances are that you have come across the Entity Reference Prepopulate module.

Drupal 6 Performance Testing

Drupal performance testing: A scenario where memcache can actually impair performance

We were recently asked to investigate poor performance on a Drupal 6 site. Memcache was enabled, but a siege test was still showing poor results.

Using mdbtools on *nix to convert Microsoft Access to MySQL

One recent migration was from an unsupported application built upon SQL Server 2000. Policy meant that I couldn't even try connecting to it directly. I was given a flat file export, but found I couldn't install an old enough version of SQL Server to import it. mdbtools to the rescue!

One of the hardest parts of any migration to Drupal is getting hold of the data in the first place. And once you do get hold of it, there’s every chance that it might not be a format that’s easy for you to work with.

The IDE Of Dreams

Our technical director explains why Code Enigma is making the switch to Dreamweaver and what that means for our workflow

Developers are always arguing over which IDE is the best. Is it Sublime Text 2, Netbeans, PHP Storm, Vim, Eclipse - no, everyone hates Eclipse, except for me, it seems - but you know what I mean. Well, at Code Enigma we're sick of IDE autocracy and the religious wars of words that come with it.

Post-agile Project Delivery, Part I - The Problems

Having run an Agile-Scrum project management method for almost 3 years, Steve Cowie reflects on the challenges of pure agile project management as an agency and the difficulties of engaging with clients for whom it simply is not a good fit

Last month I delivered a talk on this subject at a Drupal Camp and that’s available online and embedded at the bottom of this post, as are the slides from the talk.

Vim - I Wish I Knew How To :q You

Chris Maiden extolling the virtues of vim for the good people of DrupalCamp North West 2013

Code Enigma sponsored and talked at DrupalCamp North West again this year. Here is the talk everyone was waiting for! You can throw away all your other SDKs, vim now makes total sense:

Teaching fishing

Most people will be familiar with the saying “Give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime”. In the World of web development this equates to helping organisations to build their own web projects rather than doing it for them.

Looking back over the last year's work, we've noticed that we're increasingly working on projects where we're supporting internal teams.

Pages