Skip to main content


Lee Rowlands
Senior Developer



Lee has 22 years professional development experience with PHP, is a member of the security team and maintains the forum, comment, contact, contextual and block content modules in Drupal core along with at least 30 contrib projects. He is also the framework manager for core.

My blog posts

Drupal 8 Now: Writing Drupal 7 code with an eye towards Drupal 8

by lee.rowlands /

We're getting closer to that difficult stage. You know, that point where we're nearing a new major Drupal release. That point where customers with flexible delivery dates who are thinking about starting a new project are asking if they should wait for Drupal 8 to come out or build on Drupal 7.

Those of us who went through the Drupal 6 and Drupal 7 release know what I'm talking about. Do I build it on Drupal 6 or do I chance it on Drupal 7 and work through any missing modules.

We're not there yet for Drupal 8, but we already have customers asking us to develop Drupal 7 sites in a fashion sympathetic to Drupal 8.

So what does that mean? Well we have a few pointers on starting new Drupal 7 modules that will be easier to upgrade to Drupal 8 when the time comes. We'll present these in a new Drupal 8 Now! series of blog posts.

Advanced Testing of Drupal emails with Behat and TestingMailSystem

by lee.rowlands /

One of our recent projects had the following requirements:

Users receive points for creating/commenting on content
When they receive a certain points balance they are awarded some goodies in the mail
When they receive the achievement a notification email should be sent to the user and an admin

Setting this up with Userpoints, Userpoints Rules and Rules was fairly straightforward but as part of our Agile processes, the story isn't done until there is automated testing.

Read on to learn how we setup testing the email and their contents using Behat.

Come sprint with us on Drupal 8 Contrib at Drupal South

by lee.rowlands /

Friday February 14th is the DrupalSouth Code Sprint, and PreviousNext are descending en masse to Wellington, New Zealand, to participate.

As a team we've been discussing what we'd like to sprint on. We've collectively agreed that the sprint would be an opportune time to work on porting some of our favourite contrib modules to Drupal 8.

Read on to find out our plans and how you can get involved.

A potential default content solution for Drupal 8 core

by lee.rowlands /

Inspired by Jeff Eaton and Roy Scholten's session on install profiles from Drupalcon Prague, I recently set about building a potential Snowman install profile for a musician using Drupal 8.

During the process I came across a few bugs in core (patches filed of course) and then started working on the main missing piece of the puzzle - a default content solution - using the REST and Serialization API's already in core.

Drupal 8 won't kill your kittens

by lee.rowlands /

Lately there's been some scuttlebutt and FUD around about the architectural changes Drupal 8 brings.

So I presented at the Drupal Melbourne meetup (remotely) a presentation titled 'Drupal 8 won't kill your kittens' in an attempt to dispel some of the rumours.

So here's the summary of my main points along with the slides and audio.

Using Behat and DrupalDriver? Beware pathauto.

by lee.rowlands /

Here at PreviousNext we love behat. We use it as part of our CI builds to make sure that we're not introducing regressions and it's a great fit for our Agile methodologies. But we recently had some issues with weird behaviour in our tests, such as page manager pages not working. Read on to find what was the cause and how we tackled them.

Setting priorities for Drupal 8 in the lead up to code freeze

by lee.rowlands /

The Drupal 8 code freeze on July 1st is a bit over a month away.

In light of this fast approaching deadline I felt it was time to reassess my list of 'must haves' to focus my priorities for the next four weeks onto the issues that matter the most to me.

Here are my the ten issues at the top of my list. Want to share yours? Leave us a comment

Understanding Drupal 8's Modal API and Dialog Controller

by lee.rowlands /

It is common knowledge that Drupal 8 contains Views module, thanks to the work from the Views in Drupal Core (VDC) initiative.

Our contribution to the VDC initiative was working on abstracting Views UI's modal pattern into a generic modal API in core.

Recently one of the coolest pieces of this API was committed to core.

You can now load any content in a modal simply by adding a class and an attribute to any link.

Sound cool? Read on to learn more.

A recipe for a sane git process in Drupal's patch based workflow

by lee.rowlands /

Drupal uses a patch based workflow. Changes to core and contrib projects are suggested in the form of patches attached to each project's issue queue. This is nothing new.

But this is not the norm for projects that use git for version control. Normally they use a traditional git branch/fork process - issues are worked on in branches or forks, when ready a pull request is sent, when approved the code is merged.

The git workflow has a number of advantages over the patch workflow, the most notable being there is no need to re-roll patches - you just merge HEAD instead.

So given Drupal uses the patch workflow, this article shares what I've found to be a successful recipe for maximizing the features of git in the patch workflow constraints.

This recipe has several advantages, including ease of creating interdiffs.