Chadwick Anderson

Over $1.7 Million Raised for Charity

Travel with Purpose

Annual International Scuba Jamboree Fundraising Powerhouse Website

Diving For Life is a registered 501(c)(3) non-profit organization that has held its annual scuba jamboree fundraising event since 1992.

As a member on their Board of Directors, I worked with the Board to create a highly customized WordPress-based website to handle most of the registration related aspects of the annual event, grow their membership, develop online giving, and expand their international reach.

The website is membership driven–users are required to register for an account which they may freely edit. Jamboree registration is all handled through Woocommerce GravityForms, and GravityKit. Full attendee registration information is collected during checkout and requires a deposit or payment plan selection. Payment plans are customizable depending on the event requirements.

Project Goals

Automated email reminders and notifications are setup in AutomateWoo and transactional emails are all handled through Postmark for tracking and to ensure deliverability.

DivingForLife.org

WordPress / Woocommerce

Everything Customized

Plugin Development

Membership / Event Management

Automation Automation Automation

Automation

On the Surface

Public facing. No login required.

Beneath the Waves

Membership features and Jamboree Registration require login.

User Account

View / Edit User Account Details

[button title="Back to My Account" link="/my-account/acct-details/" target="" align="" icon="icon-left-thin" icon_position="left" color="#333" font_color="#ffcc00" size="2" full_width="" class="" download="" rel="" onclick=""]

Your account was last updated: [gvlogic if="{Last Updated:20}"  is=""]{date_created}[else]{Last Updated:20}[/gvlogic]

[gvlogic if="{Last Updated:20}" greater_than="11/01/2019"]
[/gvlogic]

{Name (First):1.3} {Name (Last):1.6}

 
Email: {Email:4}
 
Username: {Username:2}

Custom Registration System

Designed To Make Registration Fast & Simple

[members_logged_in]

Please ensure the following information is accurate.If any of this information needs to be updated, please edit your account before continuing with registration. You can update your account information here./p> [/members_logged_in]

Emergency Contact

{Emergency Contact:8} {Phone:9} {Relationship:10} [members_logged_in]
My information is correct.
[/members_logged_in]

Woocommerce Integrated

Room Type Variants & Inventory Control

Advanced Registration Form

Conditionals Show Additional Fields

jQuery("textarea#input_363_67").keypress(function (e) {

var disabledKeysArray = ['<','>','\"','<','<','<','<','<',];
var iChars = "~`#$%^&*+=[]\\;/{}|\":<>";
if (e.key == '<') {

    e.preventDefault();
};

for (var i = 0; i < jQuery(this).val().length; i++)
{
	if (iChars.indexOf(e.key.charAt(i)) == -1)
	{
		return true;
	}else{
		return false;
	};
};

});

Binding Liability Waiver

Realtime Validation with Visual Queues

jQuery(".gform_wrapper ul.gfield_checkbox li.gchoice_56_196_1 input").on("click", function(){
		if( jQuery(".gform_wrapper ul.gfield_checkbox li.gchoice_56_196_1 input").is(":checked") ){
			jQuery(this).parent().css( {"border-color":"green"} );
		}else{
			jQuery(this).parent().css( {"border-color":"red"} );
		};
});	
jQuery(".gform_wrapper ul.gfield_checkbox li.gchoice_56_199_1 input").on("click", function(){
	if( jQuery(".gform_wrapper ul.gfield_checkbox li.gchoice_56_199_1 input").is(":checked") ){
		jQuery(this).parent().css( {"border-color":"green"} );
	}else{
		jQuery(this).parent().css( {"border-color":"red"} );
	};
});		

Simplified Checkout

Custom Order Meta Captures Registration Data

Travel Details

User managed travel details.
[dfl-my-travel-info]


function dfl_calculate_dif( $my_exp_date ){
  $date1 = new DateTime( '2023-10-21' );
  $date2 = new DateTime( $my_exp_date );
  $interval = $date1->diff( $date2 );
  $result = '<-- '; $result .= "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; 
  $result .=  "difference " . $interval->days . " days ";
  $my_months = ( $interval->y * 12) + $interval->m;
  $result .= 'MONTHS = ' . $my_months;
  $result .= ' -->';
  return $my_months;	
}

Registration Summary

[dfl-my-jamboree-registration-summary]

/*
 * Shortcode to render the My Jamboree Registration Summary.  
 * 
 */

add_shortcode( 'dfl-my-jamboree-registration-summary',  'dfl_get_my_jamboree_registration' );

if( ! function_exists( 'dfl_get_my_jamboree_registration' ) ) {

  function dfl_get_my_jamboree_registration (){

    ob_start();

    // Include the specified file. 
    include( STYLESHEETPATH  . 'my-jamboree-reg_sc.php' );

    // Assign the file output to $content variable.
    $content = ob_get_clean();
    return $content;
  }
}

Deep Dive

Admin features require login with admin permissions.

Admin Dashboard

[dfl-admin-tools-stats]

/*
 * Get Entries : 2 Params
 */
// $form_id // ID of current registration form


function dfl_get count_two_param( $form_id, $dfl_start_date, $mode, $key1, $value1, $operator1, $key2, $value2, $operator2 ) {


  $search_criteria = array(
    'status'        => 'active',
'start_date' =>  $dfl_start_date,
    'field_filters' => array(
       'mode' => $mode,
       array(
           'key'   => $key1,
           'value' => $value1,
           'operator' => $operator1
       ),
       array(
           'key'   => $key2,
           'value' => $value2,
           'operator' => $operator2
       ),
    )
);
    $cnt = GFAPI::count_entries( $form_id, $search_criteria );
    return $cnt;
}				

Inline Data Editing

Gravity Kit & Gravity Forms

/*
 * Shortcode to render the My Jamboree Registration Summary.  
 * 
 */

add_shortcode( 'dfl-my-jamboree-registration-summary',  'dfl_get_my_jamboree_registration' );

if( ! function_exists( 'dfl_get_my_jamboree_registration' ) ) {

  function dfl_get_my_jamboree_registration (){

    ob_start();

    // Include the specified file. 
    include( STYLESHEETPATH  . 'my-jamboree-reg_sc.php' );

    // Assign the file output to $content variable.
    $content = ob_get_clean();
    return $content;
  }
}

Export Anything

[dfl-get-diet-restrictions]

/*
 * Shortcode to render the My Jamboree Registration Summary.  
 * 
 */

add_shortcode( 'dfl-my-jamboree-registration-summary',  'dfl_get_my_jamboree_registration' );

if( ! function_exists( 'dfl_get_my_jamboree_registration' ) ) {

  function dfl_get_my_jamboree_registration (){

    ob_start();

    // Include the specified file. 
    include( STYLESHEETPATH  . 'my-jamboree-reg_sc.php' );

    // Assign the file output to $content variable.
    $content = ob_get_clean();
    return $content;
  }
}

Attendee Management

[dfl-get-room-inventory]

/*
 * Shortcode to render the My Jamboree Registration Summary.  
 * 
 */

add_shortcode( 'dfl-my-jamboree-registration-summary',  'dfl_get_my_jamboree_registration' );

if( ! function_exists( 'dfl_get_my_jamboree_registration' ) ) {

  function dfl_get_my_jamboree_registration (){

    ob_start();

    // Include the specified file. 
    include( STYLESHEETPATH  . 'my-jamboree-reg_sc.php' );

    // Assign the file output to $content variable.
    $content = ob_get_clean();
    return $content;
  }
}

Project Impact

As a grass roots organization started in 1992, Diving For Life’s (DFL) humble beginnings have transformed into a mature travel fundraising platform that has raised well over $1.7 million dollars for small local charities all around the world.

The impact of this website for Diving For Life can only be described as “transformational”. It has enabled DFL’s ALL-VOLUNTEER BOARD OF DIRECTORS to reach a larger audience, reduce event management time, increase global awareness, reduce overhead, increase donor services, and overwhelmingly raise more money for charity.

Work smarter, not harder is a philosophy in which I whole-heartedly believe. The DFL website employs that philosophy to the nth degree by providing them with the tools they need to work smarter from anywhere in the world.

Increased membership by 500%.

Increased annual charitable gifts
by 25%.

Reduced Jamboree registration time
by 85%.

Increased online donations by 100%.

Reduced Jamboree managment time by 75%.

Management is now 100% online.

Reduced accounting
time by 25%.

Increased mobile
engagement by 100%

Increased online
collaboration by 85%.

A Personal Note

I am currently the Vice President and Technology Chair on Diving For Life’s Board of Directors.  We are entirely volunteer–none of us are compensated for our work. This website is entirely pro bono. We keep overhead as low as possible to maximize the amount we give back. This project has been the most rewarding volunteer experience of my life.

In addition to this website, I do ALL of DFL’s graphic design for each year’s events. Tshirts, signage, banners, promotionals, and so much more.

Being so invested in this project, I wanted to show everything this site is capable of doing–but did not.  Ask me more about it in an interview.

<!--Relative skill requirements
--> Skills Utilization

% project time required for each skill

Project Meta

  • Website