Driving The National Motoring News With Drupal
Let's start with some history. Trinity Mirror Group, the UK publishing giant, have always had a core of journalists within their organisation responsible for the creation of motoring content - anything about cars, motorcycles, vans, trucks, etc. These journalists were moving to a separate company, Driving Force, which was taking over the delivery of the majority of motoring content to all of Trinity Mirror Group's newspapers. But there was a problem.
Traditionally these journalists used a system integrated with Trinity Mirror's corporate intranet. As Driving Force separated from Trinity Mirror, it was imperative they had their own publishing system as they would no longer be Trinity Mirror employees. Goodbye corporate intranet access!
That's where we came in. Back in 2009 we were commissioned to build their new, Drupal-based, article delivery system.
Business critical? It doesn't get much more business critical than this. Getting this editorial content "out of the door", every day, on time and to the press is the business of these people and they use Drupal to do it. If this system is down, they aren't working. It's that simple. It's where the journalists enter their articles, wherever they are in the world (and believe me, they could be *anywhere*) - it's where the editors mark up the articles and make sure they are ready for release - and it's where the newspapers come to get them. Hundreds of newspapers.
Their old system allowed them to enter content, run it through an editorial work-flow, upload high and low resolution images, categorise the content and do some rudimentary searching. But this wasn't just a case of matching their old system feature-by-feature. Now a separate business, Driving Force were in a new game. No longer restricted to a single client (albeit, a very large one) their new system needed to be able to handle many clients, all with different licensing agreements allowing them access to different content at different times.
They also decided to take the opportunity to over-haul the experience of using the website, improve editorial work-flows and generally enhance the product, adding things like Word format article downloads and product videos. Because of all of this, on top of matching and improving upon their current publishing system we were asked to provide:
- secure access (by invitation only) to press editorial teams, manufacturers and dealers, around the globe (previously impossible)
- a means of grouping users for access control purposes and saying which groups could access which pieces of content
- a web services API so content could be drawn down automatically, but securely, by Driving Force customers to their own systems
- support for video upload and transcoding to Flash previews (previous system only supported static imagery)
- FTP accounts giving clients access to an extensive high-resolution image and video gallery
- improved editorial work-flows by colour-coding articles in the process of editing
- detailed in-situ (beside the content) article usage data and overall usage statistics
Then there was the small task of importing over 50,000 images and a similar number of XML documents exported from their old system in to Drupal, while keeping the taxonomy intact and rebuilding their old taxonomy hierarchy.
To quickly summarise how we did this, the taxonomy requirements and image attachments saw us write our own import module, using the XML Parser module to parse the non-standard XML files we received (see Contributions) and, of course, good old CCK + FileField/ImageField and ImageCache for hosting the image files and resizing them accordingly. CCK was also used for managing any other data we needed to keep on import, besides the article body. Once we had the data in place, we used Taxonomy Manager to tidy up the taxonomy and Taxonomy Menu to provide a browseable interface. Extensive use of Views gave us the various perspectives on the content required by the different roles, including the editorial staff.
We then used Organic Groups to manage access to the articles (one group for each client, access controlled by group membership) and Notifications to allow people to "subscribe" to articles they wanted to have their newspaper's systems aggregate automatically. More Views magic plus our NITF Views module (again, see Contributions) allowed us to create industry standard NITF XML feeds of content.
The API was provided using the XML-RPC server in the excellent Services module. We exposed the login and logout methods and the views integration methods. Basically, a view provides an NITF formatted feed of data when passed a group ID. The view is only available to logged in users, so client applications need to login as their Drupal user, request a view with the group ID of their channel as an argument and then take the NITF feed they are given. The feed provides FTP links to any media associated (videos and/or images). For further security, the system also requires an API key, which only Driving Force can issue.
On the editorial side, more complex work-flow requirements were ironed out by the Rules module, which helps us out in all sorts of ways, from changing published status according to a CCK field's state to updating group access on cron to sets of nodes when exclusivity expires to a particular client. We love Rules! And it's so easy to roll your own conditions and actions.
We also used the FlashVideo module (with the Linux FFmpeg application) and it's CCK FileField support, which now works by the way, to deal with the requirement to transcode video previews of uploaded media. FFmpeg seems to deal with most video you throw at it (only a couple have tripped it up to date, and they were just converted to some other format using a free Windows tool) and while FlashVideo took some wrestling with, it's now settled and stable and works really well.
We always try to put a little back on every project, and this one is no exception. We tested and supplied several patches to the FlashVideo module while we were working on the video preview facility.
We finally got around to releasing our XML Parser module, which has always worked for us when all else fails. (Special extra thanks to Graham Taylor at Defaqto there, who helped write the first version of it.)
We also wrote and released a new feed display for the Views module called, predictably, NITF Views, to handle NITF document output. At the moment it is too specific to Driving Force, but we released the code anyway and Jeremy French from the Economist is looking at cleaning it up.








