CTools is a widely used Drupal API module which provides functional frameworks for modules such as Views, Panels, Context and more. In addition to its many uses, it has great JavaScript capabilities. Tutorials on the web only tend to describe how to fire off a CTools AJAX call when clicking on a link. What we will show you is how to fire off a CTools call on other events, such as on page load. To do this, you will need to create a custom module; our code assumes you've called your module 'mymodule'...

On a recent project, we implemented a new content type on an existing Drupal site. One of the requirements of this content type was to allow a high level of user interaction, but also give detailed reporting per-node. To give access to reports per node we added in our own custom tab, we followed the example of node and webform to give the result we wanted. Here’s how you do it...

Agile my Basecamp

By John Ennew | 16th June 2011

Basecamp (http://basecamphq.com) is a great tool for project management and we use it extensively. One of its tools is the ability to specify tasks (called to dos) and order those to dos into lists. Though you can set a required by date for a task, what it is missing is the ability to assign an effort value to those tasks and then provide the sum total effort of all tasks in a list. If you are on an agile team, then knowing the relative size of a task and the sum total of a group of tasks helps when planning the work to be performed in an upcoming iteration (sprint) or the total effort remaining in the backlog of tasks. At Deeson, we thought it would be a good idea to have this functionality so we added it via a custom script for the Firefox Greasemonkey plugin.

Anyone who has worked on websites will have dealt with the issue of cross-browser compatibility – it's one of the accepted headaches of our profession. Also, there are only a handful of browsers that need to be tested for, and they are becoming increasingly standards compliant as they mature. But what about testing rich HTML emails? That is a whole different ballgame, but one that MailChimp fortunately makes much easier.

Since the migration from CVS to Git on Drupal.org, we've noticed that a few people are still having some trouble checking out a stable version of Drupal core, so, for those of you who aren't on the Acquia or Drush bandwagons, here you go...

We recently launched a mobile (smart-phone) optimised version of our site, thanks to Drupal the process was actually quite simple! In a sufficiently quick format, here’s how we did it.

The possibility of embedded video in marketing emails has been hoped for and talked about for ages. With the web having come on in leaps and bounds over the last few years, and with the general acceptance and availability of online video platforms such as Youtube, things are getting (a bit) better.

In this post I will be going over how to recreate the official Twitter profile widget with native Drupal, there are two main reasons why you would want to do this...

A problem we recently encountered is when absolutely positioning a div (in our case a tooltip) over Flash content is that any z-index definitions are ignored, and the Flash content appears as though it’s overlaid above…

There has been a lot of talk recently about the future of Flash, and whether it is even going to be around for much longer. The consensus is certainly that the way Flash is used is changing, with JavaScript taking a more prominent role in providing animations and effects in a more accessible way, without the requirement of an extra plugin. We’ve taken a fresh look at some of the things that only Flash can do, and here's one of our experiments.

In this post I cover how to change the default messages displayed after adding or editing a node, with two differing methods...

When building a Drupal site with a multi-layer navigation system maintaining active trail is very important. This is something we encountered when developing the new International Policy Network website, where the site is split into seven top level sections with common subsections under each such as "News" for example. The news section would list news nodes categorised by the top level...

Typically debugging any issue in Internet Explorer can be a painful experience, JavaScript being one of the worst with unhelpful vague error messages - giving you no idea what the real error is, or where to find it. Here are a few things which make finding issues easier...

  •