Introducing CivicActions Labs

We’re pleased to announce the launch of CivicActions Labs, an initiative to provide our team with sanctioned time outside of project work to innovate and design products that will streamline our workflow and improve our practices.

2017-03-31T06:19:56+00:00 Categories: Culture, Design, Development|Tags: |

Civicrm and Sendgrid email api v2-v3 upgrade fix

A client using Civicrm recently approached us with a problem: bounced emails, sent through the Sendgrid email service were no longer reporting as bounced. All emails, regardless of status, were reporting as being successful. Our custom module (D6 integration) was attempting to extract data from the post, thusly: $_POST['job_id'] Unfortunately, [...]

2017-03-31T06:19:57+00:00 Categories: Development, How-To|

Alternatives To Go Daddy For Domain Registration

I think all of us at CivicActions were disgusted by Go Daddy CEO Bob Parsons' vacation video featuring him murdering an elephant in Zimbabwe (and the subsequent butchering of that elephant by local villagers wearing Go Daddy hats overdubbed with the song Hells Bells). Bob Parsons has exhibited some pretty [...]

2017-03-31T06:20:06+00:00 Categories: Development, How-To|

CiviCRM Developer Training

CiviCRM is a powerful, free and open source (AGPL-licensed) web-based contact relationship management (CRM) system that focuses on the needs of non-profits. A growing number of CivicActions' clients employ CiviCRM to support membership and contribution management, events, group mailings and report generation. With every release, CiviCRM is adding features and [...]

2017-03-31T06:20:11+00:00 Categories: Development, Nonprofit|

CiviCRM Custom Field Option Lists Now Supported by Views Filters

My work with CivicActions recently provided the opportunity to create a minor, but much needed improvement to CiviCRM which has just been made available to everyone in the recent CiviCRM 3.2.3 release. CiviCRM records have been available to Drupal's Views module for some time, but the use of Custom Fields [...]

2016-03-16T02:39:42+00:00 Categories: Development, Drupal|

Making the Credit Card CVV Field Optional in CiviCRM

We have a client that wanted to be able to process donations when the Credit Card's CVV numbers were not available. I had thought this field was mandatory, and indeed, CiviCRM's AuthorizeNet payment processor package requires it. But after talking with AuthorizeNet (the company) we discovered that the field is [...]

2017-03-31T06:20:12+00:00 Categories: Development|

Defining Custom Node Content Types In A Module

What're you crazy!? Haven't you ever heard of the CCK module? Yes, it's true CCK coupled with views will allow one to create, manipulate and display custom content. Combined with hook_nodeapi, the cck/views combo is can be extremely powerful and flexible. 99% of the time these two modules are sufficient [...]

2017-03-31T06:20:14+00:00 Categories: Development, Drupal|

How To Set Up An SVN Repository In 7 Simple Steps

Update: We've been using (and recommend) git for version control since around 2011. We leave this post available because it seems popular. For some time now, I've wanted to have an svn set up on my shared web host similar to what we have here at civicactions.  Having to make [...]

2017-03-31T06:20:14+00:00 Categories: Development, How-To|

Tutorial & Code: Developing Apps For iPhone/iPad/Android Using Drupal As Base System

Last week I posted some initial resources related to my DrupalCon San Francisco session Developing Apps for iPhone/iPad/Android using drupal as Base System. Here is what you need to connect your Drupal site to Titanium App: Titanium Developer iPhone SDK Drupal basic installation Services Module Modified Version of json_server module [...]

2017-03-31T06:20:14+00:00 Categories: Development, Drupal, Mobile|

Adding Custom Breadcrumbs to Views Pages

Recently I needed to add custom breadcrumbs to views 2 generated pages. Now we were using excellent custom_breadcrumbs 1.x to add custom breadcrumbs on site. At that time I discovered that 1.x version of custom_breadcrumbs do not support views generated pages and 2.x version of module (which supports views) is [...]

2017-03-31T06:20:15+00:00 Categories: Development, How-To|

Sharing Our Client Questionnaire for Website Development

A thread began a few days ago on the Drupal Consultants list regarding Client Questionnaires. Not long ago, Ian and I went through our own Client Questionnaire with the intention of supporting a client with a new project. In the end we simplified our original laundry list of questions to this much shorter [...]

2017-03-31T06:20:15+00:00 Categories: Development, How-To|

Overview of Google authentication methods

There are a number of different authentication methods available for integrating with Google Apps. These include OpenID, OAuth and SAML amongst others. At a first glance, it's not always entirely clear on the differences between them and when you may wish to use one over another. Here's a brief overview [...]

2017-03-31T06:20:15+00:00 Categories: Development, Drupal|

Google Chart API Module

I was recently asked to take some civicrm demographic data from various groups and graph the data so that a visual comparison could be made between groups. In the course of looking for some graphing/charting technique that would integrate well with drupal & civicrm I discovered the google chart api [...]

2017-03-31T06:20:16+00:00 Categories: Development, Drupal|

Modifying your site’s email “From” header

By default, all email sent from your site uses the site email address configured at admin/settings/site-information as the "from" address. On most sites this is set to something generic, like "" or "". However in a lot of mail clients, when the email reaches your inbox, it appears as being [...]

2017-03-31T06:20:18+00:00 Categories: Development, Drupal|

Drupal Gotchya: Cache_get() Returns Expired Items

cache_get() returns $cache objects even if the cached item is stale (expired). The cached data will not be rebuilt every hour in the following example: /** * Builds complicated data for the monkey grip. */ function custom_monkey_grip_data() else return $data; } ?> Instead, it's cached data will persist in the [...]

2016-03-15T09:08:32+00:00 Categories: Development, Drupal|

AJAX-ifying Drupal Node Forms

Recently, for the first time with Drupal 6, I needed to create a form where a variable number of fields could be added to it by simply clicking a 'Add more' button. I wanted to design a node form where users could create a custom compilation album of their favourite [...]

2017-03-31T06:20:22+00:00 Categories: Development, Drupal, How-To|

Drupal Developer Tips for Getting the Most out of Open Source

I recently suggested that the way we approach new development is the most important factor in determining the long term value of our work. But just how can developers using Drupal make the most of open source by ensuring that participating and contributing is an essential part of our daily [...]

2017-03-31T13:53:05+00:00 Categories: Development, Drupal|

Using CSS to wrap long fieldset legends

In a recent project I encountered a very long legend in a fieldset from a node add/edit form. Instead of wrapping, it forced its way into the right-hand sidebar and was generally causing a mess of the layout. In looking into this I discovered that legends don't wrap by default, [...]

2017-03-31T06:20:33+00:00 Categories: Development, How-To|

Web Apps as Desktop Apps; Prism, Web-Runner &

With applications moving to the web, the desktop web browser is becoming more and more the center of users' attention. Consider for a moment what percentage of time you spend in Firefox or other web browsers compared to other programs or applications that run in your desktop – or use [...]

2017-03-31T06:20:34+00:00 Categories: Development, Testing|