Big Ideas @ Berkeley uses Drupal to help students change the world

The Big Ideas @ Berkeley Initiative was officially launched in July, 2005. Its mission is to provide funding, support, and encouragement to interdisciplinary teams of UC Berkeley undergraduate and graduate students who have "big ideas."

In the summer of 2006, Big Ideas @ Berkeley decided to redesign their original website with the flexible, open-source content management system Drupal. Big Ideas @ Berkeley worked with Rob Barreca and ChipIn to design a Drupal application that would allow students to easily create their own personal fundraising pages, post project updates that would outline their proposed projects, accept donations as well as keeping prospective and previous donors updated with project blog posts.

Using Drupal 4.7 and a variety of excellent contributed modules, the redesign of Big Ideas @ Berkeley was launched in December, 2006. Modules used include Views, CCK (both core and imagefield), Imagecache, Actions, Workflow, Mailhandler, Simplenews, Forward, TinyMCE and Img_assist.

Custom Drupal Development

In addition to these contributed modules listed above, quite a bit of custom code was implemented and a number of custom modules were developed. Here are a few highlights:

  • Patches to Workflow module allowing states to be edited and weighted, along with some improvements to the Workflow API
  • New custom actions that hook into Actions module for sending customized donation emails on workflow state changes
  • Custom module for the administrator and student dashboards allowing different roles to see projects pending approval and allow browsing of projects by different criteria
  • Simplenews helper module to create an "Active Student Newsletter" which automatically synchronizes a subscription list with a list of users who have project nodes currently in an active workflow state
  • UC Berkeley's CalNet Authentication module allowing students to use their CalNet users to log in to Drupal
  • Custom donations module allowing project organizers to accept donations through GiveToCal's donation system
  • Extented Mailhandler module to read donation notification emails sent from GiveToCal and automatically update project node donation thermometer's CCK field value (phew!)

Challenges

  • The GiveToCal donation system was pretty rigid and the only way the Drupal site could be notified of a recent donation was through email. Luckily we had the Mailhandler module to work from and could regularly check for donation emails and parse the donation amount, donation name and project node ID so we could update the donation thermometer.
  • Another small challenge was flushing out the 2-stage approval workflow that UC Berkeley needed for the project submission process. Using Workflow and Actions, the standard submission flow is as follows:
    1. Student submits a potential "big idea" project node (with all CCK fields hidden except for the description and a taxonomy term drop down) which is automatically placed in the "Requesting project summary approval" state and an administrator is emailed a notification saying a project needs approval.
    2. Then, the administrator either approves the project sending it to the "Project summary approved" state, step (3), or says it needs work, sending the node back to the "Project summary needs work" state, requiring them to resubmit step (1). For either transition the student is notified of the administrator's decision.
    3. Projects that make it past the first stage to the "Project summary approved" have quite a few new CCK fields that are made visible, once they fill these out they submit the project to the next workflow state "Requesting final approval to be published live" and the administrator is emailed again.
    4. A similar approval process happens to step (2), the only different is that this time the project node has about 15 fields the student has filled out instead of just the initial one field description in step (1). If the project is approved to go "life", it is placed in the "Active / Published" workflow state and will be visible in the site and will email the student of the final approval.
    5. There are two more "Published" project workflow states: "Funded / Published" and "Past / Published". When a project has reached it's target donation amount, it will be placed in the former workflow state, and when a project has passed it's target date it will placed in the latter. This way older/funded projects won't clutter up the "Active" Browse Themes View, see http://bigideas.berkeley.edu/projects/13/all/6 for an example.
  • Customizing the ChipIn module to be branded for Big Ideas @ Berkeley. To see this in action, take a look at the project promotion page at http://bigideas.berkeley.edu/promote/32 and click CREATE A WIDGET. To slap the new logo on, redirect the Donate! button, and make the UC Berkeley widget pull data from our own Drupal project node feed, I needed to brush up on my Flash/ActionScript skills. It was a great experience to work with the awesome widget (the next version of ChipIn.com is being developed on Drupal 5 and will have a way cooler widget customizer) designed by Kevin Hughes at ChipIn.

More About Big Ideas @ Berkeley

Big Ideas @ Berkeley marketplace, a site developed by ChipIn, supported by CommerceNet, and administered by UC Berkeley, lets alumni, corporate and foundation partners, friends, and family support Berkeley undergraduate and graduate students who are passionate about tackling major global, regional, and local challenges such as clean energy, the environment, public health, safe drinking water, public policy, and technology-based entrepreneurship. Supporters can sponsor a "Big Idea" in the following ways:

  • Make financial or in-kind contributions to specific projects
  • Sponsor an annual "Bears Breaking Boundaries" contest for the best student ideas
  • Help raise funds (using ChipIn) from their friends and colleagues
  • Provide students with advice and connections to potential partners.

"This is absolutely AWESOME! Incredibly well constructed and one of the most innovative student services I've seen in all my time here." &emdash; Ilan Gur, Ph.D. - Materials Science & Engineering, UC Berkeley

Contacts

Thanks for sharing

Boris Mann - June 2, 2007 - 03:34

Given the recent talk about fundraising and supporting Drupal, there are some really great ideas in here. Maybe the community could post "big ideas" that people could decide to help fund?

Very cool....

A type of reverse bounty

RobRoy - June 2, 2007 - 04:52

Expanding on your concept of reverse bounties (http://www.bryght.com/blog/boris-mann/reverse-bounties) there is definitely a powerful concept here that can be generalized. Empowering organizers to get the information out there and letting the community easily post feedback and contribute to those projects is something we're really into. We've got some Drupal projects down the pipeline to improve this process, and we'll be making ChipIn.com and related sites even better once we switch all that over to Drupal.

--
Rob Barreca
Drupal Architect
ChipIn, Inc.

Learn how you can contribute to Drupal.

Sounds (and looks)

Venkat-Rk - June 2, 2007 - 04:14

Sounds (and looks) fantastic.

Did any of the custom drupal development go back to the respective contrib modules? The new work seems to have substantially raised the capability of those modules and I am curious to know if the changes went into the modules.

----
Previously user Ramdak.

Sure thing!

RobRoy - June 2, 2007 - 04:21

Thanks! Some of the code was just too specific to Big Ideas to be reused. A few things we contributed back that I can remember. :)

  • The ChipIn module for Drupal 4.7 (we're going to port this to Drupal 5 once ChipIn.com re-launches on Drupal in a bit)
  • Improvements back to the Workflow module, including editing and weighting states
  • A huge overhaul of Simplenews module and port to Drupal 5
  • The Simplenews Roles helper module to automatically sync a newsletter list with Drupal user roles

--
Rob Barreca
Drupal Architect
ChipIn, Inc.

Learn how you can contribute to Drupal.

Fabulous. I never knew

Venkat-Rk - June 2, 2007 - 06:42

Fabulous. I never knew simplenews and workflow had so many improvements in recent times. Thanks for your work.

----
Previously user Ramdak.

re

tomekg - June 2, 2007 - 09:24

I must agree with You venkat-rk it's really great news that so many improvements in recent times have been made. Greetings

Way to go!! That's very cool

Laurentvw - June 2, 2007 - 04:25

Way to go!! That's very cool to know.
On a sidenote, I know some people who are involved in developing their universities website, using Drupal of course. Just goes to show that Drupal's got a good reputation.
I just hope lots of other universities are going to start something similar on their side, imagine all the ideas you could get out of it (especially when it involves college students).
Anyway, thank for sharing!

---
Breaking News: Yunar | Long live democracy! | Buddy 4 life: Prameya

Great News for a Drupal Geek 4 Blocks from UCB Campus

Mark Celsor - June 2, 2007 - 19:15

Thanks Rob, this looks like a great resource for people in my neighborhood south of the UCB campus. I shared it on my neighborhood blog in a post called "UCB's Big Ideas Web Site to Help Students Change the World". I work for Clear Ink in Berkeley and worked on the new events.berkeley.edu last year. It's PHP/MySQL using our FreeEnergy framework. I know that Drupal is very popular at the university and it's great to see a high profile site like this on Drupal.

Hey Mark

RobRoy - June 2, 2007 - 23:22

Hey Mark,

Thanks for the post on your blog. Nice to meet another *.berkeley.edu devloper! :)

--
Rob Barreca
Drupal Architect
ChipIn, Inc.

Learn how you can contribute to Drupal.

Great writeup

bonobo - June 3, 2007 - 15:28

Hello, Rob,

Great writeup on this, and congratulations on the site --

Cheers,

Bill

-------
http://www.funnymonkey.com
Tools for Teachers

great work... can you describe how you achieved this

rxs0569 - June 5, 2007 - 19:13

Can you guys describe for everyones benefit how you achieved using CCK, Workflow and Views to achieve the tabs showing different CCK fileds in different tabbs.

Also how do you enable and disable different fields ins different workflow states

Tabs and workflow

RobRoy - June 6, 2007 - 02:18

Great question! A preface: I would recommend using a more dynamic solution that these, but as a quick hack they work great for me!

Different templates for each tab pulling different CCK fields: We had some code in our template.php file that more or less did the following:

<?php
function _phptemplate_variables($hook, $vars) {
switch (
$hook) {
    case
'node':
     
$tab = arg(3); //node/29/view/tabname (needed 'view' in 4.7 for some reason IIRC)
     
$vars['template_files'][] = 'node-'. $node->type .'-'. $tab;
      break;
}
// ...
?>

Then, we had the links in those node files go to node/29/view/endorsements, node/29/view/about, etc. So a different tpl file, such as node-NODETYPE-TABNAME.tpl.php would be loaded and render different CCK fields for each tab URL.

Workflow showing different fields: I kinda like this. Put some code like this in a helper module's hook_form_alter(). This is for Drupal 5 since we have a nice #access FAPI parameter.

<?php
$show_advanced_fields
= (workflow_node_current_state($form['#node']) == variable_get('bigideas_adv_workflow_state_id', 0);
$form['fieldname']['#access'] = $show_advanced_fields;
$form['fieldname2']['#access'] = $show_advanced_fields;
// ...
?>

--
Rob Barreca
Drupal Architect
ChipIn, Inc.

Learn how you can contribute to Drupal.

 
 

Drupal is a registered trademark of Dries Buytaert.