Introducing CivicActions Labs

Categories: Culture, Design, Development|Tags: |

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.

Civicrm and Sendgrid email api v2-v3 upgrade fix

Categories: Development, How-To|

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, [...]

Alternatives To Go Daddy For Domain Registration

Categories: Development, How-To|

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 [...]

CiviCRM Developer Training

Categories: Development, Nonprofit|

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 [...]

CiviCRM Custom Field Option Lists Now Supported by Views Filters

Categories: Development, Drupal|

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 [...]

Making the Credit Card CVV Field Optional in CiviCRM

Categories: Development|

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 [...]

Defining Custom Node Content Types In A Module

Categories: Development, Drupal|

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 [...]

How To Set Up An SVN Repository In 7 Simple Steps

Categories: Development, How-To|

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 [...]

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

Categories: Development, Drupal, Mobile|

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 [...]

Adding Custom Breadcrumbs to Views Pages

Categories: Development, How-To|

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 [...]

Sharing Our Client Questionnaire for Website Development

Categories: Development, How-To|

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 [...]

Overview of Google authentication methods

Categories: Development, Drupal|

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 [...]

Google Chart API Module

Categories: Development, Drupal|

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 [...]

Modifying your site’s email “From” header

Categories: Development, Drupal|

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 "[email protected]" or "[email protected]". However in a lot of mail clients, when the email reaches your inbox, it appears as being [...]

Drupal Gotchya: Cache_get() Returns Expired Items

Categories: Development, Drupal|

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 [...]

AJAX-ifying Drupal Node Forms

Categories: Development, Drupal, How-To|

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 [...]

Drupal Developer Tips for Getting the Most out of Open Source

Categories: Development, Drupal|

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 [...]

Using CSS to wrap long fieldset legends

Categories: Development, How-To|

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, [...]

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

Categories: Development, Testing|

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 [...]