Recent Thoughts

Drupal Ubercart non shippable workflow changes

The default UberCart workflow for non shippable products, such as downloadable or non physical products (e.g. role or group access) is to mark the order "completed" only if it only contains these type of products. In most cases this is fine but a problem occurs when a customer purchases mixed physical and non shippable products. In this case access to non shippable products is not immediate. This workflow deviates from the common presumption that non physical transaction should occur instantly and be processed independantly from physical goods.

Remove "controlpanel" redirection in CPanel

A new problem arose when CPanel was upgraded. Someone at CPanel decided it was not enough to have one redirection to their login, at, and decided to create another one at This was a problem because one of our clients has an application with its own controlpanel already in that location.

First class Drupal blocks

When working on more complex themes the default CSS classes assigned by the Drupal system do not provide enough distinction to effectively style blocks.  It would be useful to have classes assigned that identify the following:

  • The first and last blocks
  • The block number within each region
  • The block number within the page
  • An alternating even/odd class for zebra striping 

Virtuemart, and QuickBooks

Joomla and VirtueMart provide an easy to use and feature rich combination of content management and eCommerce. A lot of my clients who use VirtueMart were asking me about Quickbooks integration so that they could easily track online purchases. has provided Quickbooks export for a while but the existing Payment module for VirtueMart did not pass itemized order information. To meet the increasing demand for this functionality I decided to modify the existing payment module to pass the required information.

JEvents Service Map Integrator

JEvents provides an easy to use calendar of events and it is critical to have a method of quickly adding new events to search engines because they are time sensitive. The mambot provided here searches through the JEvents database and creates a categorized listing that is integrated with the Search Engine Friendly (SEF) Service Map component.

Simple CSS column layout

A lot of designers are currently struggling to accomplish page layout that was simple to achieve using tables but is frustratingly difficult (if not impossible) with CSS. The following example shows a simple method to display a mutli-column content layout without having to worry about complex floats, margins, and padding.