CiviCRM for Drupal Developers



Similar documents
Introduction to Module Development

GETTING STARTED WITH DRUPAL. by Stephen Cross

The following is a comparison between CiviCRM, RedHen and CRM Core which are the leading option for CRM in the Drupal Community.

FormAPI, AJAX and Node.js

CIVICRM DEVELOPER GUIDE

Drupal 8. Core and API Changes Shabir Ahmad MS Software Engg. NUST Principal Software Engineser PHP/Drupal

Drupal and ArcGIS Yes, it can be done. Frank McLean Developer

The truth about Drupal

Certified PHP/MySQL Web Developer Course

Using CiviCRM. 1 open source. Develop and implement a fully-functional, systematic. Joseph Murray, PhD. CRM plan for your organization using CiviCRM

Using jquery and CSS to Gain Easy Wins in CiviCRM

Free as in Kittens : CiviCRM and Salesforce

MASTER DRUPAL 7 MODULE DEVELOPMENT

JAVASCRIPT, TESTING, AND DRUPAL

DRUPAL EZY-BAKE DISTRIBUTIONS COOKING SITES WITH. BY STUART CLARK about.me/stuartc. rl.cm/ezybake

Drupal Node Overview. Attendee Guide. Prepared for: EDT502, Fall 2007, Dr. Savenye Prepared by: Jeff Beeman. November 26, 2007 EDT502 Final Project

Module Google Remarketing + Dynamic

Everything you ever wanted to know about Drupal 8*

Drupal 8 The site builder's release

Beyond The Web Drupal Meets The Desktop (And Mobile) Justin Miller Code Sorcery Workshop, LLC

How We Did It. Unique data model abstraction layer to integrate, but de-couple EHR data from patient website design.

IMPLEMENTING AND DEVELOPING FOR WORDPRESS IN CIVICRM 4.6 AND BEYOND. Kevin Cristiano April 2015 Tadpole

Drupal Training Modules 2015

Faichi Solutions. The Changing Face of Drupal with Drupal 8

How does Drupal 7 Work? Tess Flynn, KDØPQK

Shipbeat Magento Module. Installation and user guide

Workshop on Using Open Source Content Management System Drupal to build Library Websites Hasina Afroz Auninda Rumy Saleque

Preparing for Drupal 8

Managing Projects Using Drupal 8 s Configuration Management System

Drupal Module Development

Who? Wolfgang Ziegler (fago) Klaus Purer (klausi) Sebastian Gilits (sepgil) epiqo Austrian based Drupal company Drupal Austria user group

Drupal Flyover (There s a Module for That) Emma Jane Hogbin Author, Drupal User's Guide

Love and Devotion. Richard Hayward State Library of Victoria. 14 January 2012, 2:30 3:15pm.

Webform 3. Building Surveys in Drupal

Resource Guide: Developing for Mobile on Drupal

Gantry Basics. Presented By: Jesse Hammil (Peanut Gallery: David Beuving)

Software Development & Education Center PHP 5

Streamline your drupal development workflow in a 3-tier-environment - A story about drush make and drush aliases

Features-Based Deployment

Drupal for Designers

Module - Facebook PS Connect

The Fastest Way to a Drupal Site: Think it, Plan it, Build it.

Wednesday, November 7, 12 THE LEADER IN DRUPAL PLATFORM DESIGN AND DEVELOPMENT

INTRO TO DRUPAL. February 23, 2013

AUDITING A DRUPAL 7 WEB SITE - OUR METHODOLOGY.

Data Management Applications with Drupal as Your Framework

1: 2: : 3.1: 3.2: 4: 5: & CAPTCHA

Drupal CMS for marketing sites

Using your Drupal Website Book 1 - Drupal Basics

DROPFILES SUPPORT. Main advantages:

(Don t Fear) the Features Now with more cowbell. Aimee Degnan / aimee@hook42.com

Authorize.net modules for oscommerce Online Merchant.

Mad Skillz: Become the Best in the World

A (Web) Face for Radio. NPR and Drupal7 David Moore

Faichi Solutions. Drupal Commerce An Ideal Solution for Your ecommerce Platform. Contents. Whitepaper published on 1 ST Nov. 2014

Open Source Content Management System for content development: a comparative study

Add Munchkin Tracking Code to Your Website

TABLE OF CONTENTS. 1) Introduction 2. 2) Installation 3. 3) Backend functionality 4. 4) Frontend functionality 9

Creating a Drupal 8 theme from scratch

Things Made Easy: One Click CMS Integration with Solr & Drupal

epayments WEB FORM REGISTRATION

Open Atrium as a platform for promoting web 2.0

Automating Drupal Development with Patterns

A Data API for Drupal 7: Key steps to enabling transactional web service support

] open source. vtiger CRM. Beginner's Guide. Record and consolidate all your customer information with. I community experience distilled. Ian D.

CERN Summer Student Program 2013 Report

Request For Proposal. MetroEast Community Media RFP number: CRM1 RFP date: May- 2

THE BEST CMS IS DRUPAL RIGHT FOR ME? PROUD MEMBER OF

CiviCRM for Joomla! Integration, Best Practices, Extensions, and More. Jeremy Proffitt // Brian Shaughnessy

Drupal + Formulize. A Step-by-Step Guide to Integrating Drupal with XOOPS/ImpressCMS, and installing and using the Formulize module

PHP AdWords API Lib Quick Start

Drupal 7 Fields/CCK Beginner's Guide

Advanced Web Development SCOPE OF WEB DEVELOPMENT INDUSTRY

Migrating into Drupal 8

What we're doing with Drupal at UChicago and how it can help you.

An Advanced E-commerce Course

Rich-Internet Anwendungen auf Basis von ColdFusion und Ajax

Kentico CMS 7.0 E-commerce Guide

BUILDING MULTILINGUAL WEBSITES WITH DRUPAL 7

Creating Research Web Sites with Drupal. Randy Carpenter & Steven Akins, May 25, 2010 TSO Brown Bag Course

Acquia Introduction December 9th, 2009

#d8rules - Support the Rules module for Drupal 8

CLASSROOM WEB DESIGNING COURSE

Design principles of the Drupal CSC website

Module developer s tutorial

Spyros Xanthopoulos Dimitris Daskopoulos Charalambos Tsipizidis. IT Center Aristotle University of Thessaloniki Greece

DIPLOMA IN WEBDEVELOPMENT

Show me the tests! Writing Automated Tests for Drupal

Framework as a master tool in modern web development

Building Drupal sites using CCK, Views and Panels. Khalid Baheyeldin Drupal Camp, Toronto May 11 12,

Brainshark/Salesforce.com Integration Installation Procedures

Entites in Drupal 8. Sascha Grossenbacher Christophe Galli

A Short Term E-commerce Course

SPARROW Gateway. Developer Data Vault Payment Type API. Version 2.7 (6293)

Hello Drupal! Here s your welcome-pack to the Drupal Community. Prepared by. for the Drupal community

Kaltura's Entitlement Infrastructure Bulk Services. Version: Falcon

Welcome to Mobile Roadie Pro. mobileroadie.com

Drupal Site Tuneup. Vroom! Vroom! Kristen Pol / kristen@hook42.com

PROPOSED SOLUTIONS FOR THE DESIGN & DEVELOPMENT OF COUPON WEBSITE

Get Started Community Documentation Support Download & Extend Marketplace About

Transcription:

+ CiviCRM for Drupal Developers

Coleman Watts CiviCRM user since 2010 Found Civi through Drupal Implemented Civi for Woolman School Author of Webform Integration, and a few other CiviCRM modules and APIs

Matt Chapman Ninjitsu Web Development, Los Angeles CiviCRM User and Contributor since 2007 (CiviCRM 1.7) Found Drupal by way of CiviCRM Author of a dozen or so Drupal+Civi Integration modules Sponsor of CiviCRM events & co-teach training

Who are you? Drupal and/or CiviCRM Users? Implementer / Configurations? Developers? Drupal Developers? API Cooking? Managers? Drop outs? Anonymous? VoicesOfSanDiego.org

Why CiviCRM is hard for Drupal Devs Different Theme layer (Smarty) Different Database Layer (PEAR:DB) Different Forms Library (Quickform) Different Javascript (Dojo -> own jquery) Different permissions system (ACLs) Different Classification systems (no Taxonomy module) Different User Data Collection (Profiles) Different Menu System Different Mail system Different Wysiwyg Philosophy (ships own CKeditor) Different Version Numbering & Support. (CiviCRM 2.0 was the last version for Drupal 5. CiviCRM 2.1 was for Drupal 6.0. Civi 4.0 -> Drupal 7.0, CiviCRM 4.1 -> D6 & D7) Different Community (not hosted or supported on Drupal. org)

CiviCRM APIs Avoid the deep dark past of v1 and v2. APIv3 for CiviCRM 4 is awesome! (Even if they haven't synced the version numbers yet...) Many Improvements More consistent parameters 5 gateways: PHP, AJAX, REST, Smarty, Drush Test coverage Code generator! /civicrm/ajax/doc Demo: get - list, search, single getfields json/xml

API Demo PHP Javascript require_once 'api/api.php'; $result = civicrm_api('contact','get', array( 'first_name' => 'Michael', 'last_name' => 'McAndrew', 'version' =>3 ) ); foreach ($result['values'] AS $contact) { //do something } $().crmapi ('Contact','get', {'first_name' :'Michael', 'last_name' :'McAndrew', 'version' :'3', }}, { success:function (data){ $.each(data, function(key, value) { // do something }); } }); REST http://rest https://example.org/path/to/civi/codebase/civicrm/extern/rest.php? q=civicrm/login&name=user&pass=password&key=yoursitekey&json=1 {"is_error":0,"api_key":"per-settings.php","phpsessid":"4984783cb5ca0d51a622ff35fb32b590", "key": "2e554f49c9fc5c47548da4b24da64681b77dca08"} http://example.org/civicrm/ajax/rest?fnname=civicrm/contact/search &json=1&key=yoursitekey&phpsessid=4984783cb5ca0d51a622ff35fb32b590

CiviCRM Hooks - Pre/Post hooks <?php function example_civicrm_post($op, $objectname, $objectid, &$objectref) { if ($objectname == 'Individual') { switch ($op){ case 'create': //We just created a new Individual Contact Record as $objectref break; case 'edit': //We just edited the Individual Contact Record $objectref break; case 'delete': //The $objectref Individual Contact //Record has been deleted break; }//end switch } //end if }?>

Pre/Post Hook Support $op - operation being performed with CiviCRM object. Can have the following values: view, create, edit, delete. $objectname - can have the following values: 'Individual', 'Household', 'Organization' 'Address' 'Group', 'GroupContact' 'Relationship' 'Contribution' 'Profile' (while this is not really an object, people have expressed an interest to perform an action when a profile is created/edited) 'Membership' 'Event' 'Participant' 'UFMatch' (when an object is linked to a CMS user record) 'PledgePayment' 'ContributionRecur' 'Pledge' 'CustomGroup'

More Hooks Form related hooks hook_civicrm_validate hook_civicrm_buildform hook_civicrm_postprocess More Database related Hooks hook_civicrm_custom hook_civicrm_copy GUI related hooks hook_civicrm_links hook_civicrm_dashboard hook_civicrm_xmlmenu hook_civicrm_navigationmenu hook_civicrm_pagerun hook_civicrm_customfieldoptions hook_civicrm_summary hook_civicrm_summaryactions hook_civicrm_searchtasks hook_civicrm_searchcolumns hook_civicrm_buildamount hook_civicrm_tabs Even More Hooks hook_civicrm_tokens hook_civicrm_altermailinglabelparams hook_civicrm_alterpaymentprocessorparams hook_civicrm_tokenvalues hook_civicrm_mailinggroups hook_civicrm_contactlistquery hook_civicrm_membershiptypevalues hook_civicrm_altermailparams hook_civicrm_casesummary hook_civicrm_config hook_civicrm_merge hook_civicrm_export hook_civicrm_emailprocessor hook_civicrm_import hook_civicrm_alterapipermissions hook_civicrm_dupequery hook_civicrm_buildstateprovinceforcountry

The Easiest Way to Customize CiviCRM?

The Easiest Way to Customize CiviCRM? Don't! Write a Drupal module using the tools you already know and the API. Views Integration, CiviCRM Reference Field Better still, write a generalized Contrib module.

Case Study: Webform Integration +

Groundhog Day Create custom module Use FAPI to build a form Use CiviCRM API to get/save data Test, Fix bugs Maintain module for the rest of your life And if you need another form... See you tomorrow!

Open-Sourcing It Abstracted vs. single-purpose module Based on existing software Webform - one of Drupal's top 10 contrib modules Open source = community support Strengthens CiviCRM +

How it works hook_menu() drupal_set_message() hook_form_alter() drupal_add_js() webform submission hooks CiviCRM API CiviCRM database Drupal database hook_civicrm_merge() +

What It Does Multiple contacts/types Relationships Custom data Multiple locations Tags & Groups Case & Activity Event Registration User messages Deduping, checksums Webform Features too I'm outta here!

Tips & Ideas Dozens of add-ons for webform Webform Validate Webform Conditional Webform Layout Webform Autocomplete Chosen Hidden Fields Use field key to change a field to another type Shared addresses Limit to one choice to make a nice checkbox Exposed address fields will auto-hide for you IDs and Checksums Create a hashed link or redirect with webform tokens +

Taking it Further CiviCRM Hooks pre and post Drupal Hooks hook_form_alter Webform Hooks presave, create, edit, delete create your own type of form element Contribute it back! Submit patches Sponsor development Release your own module Field Storage Engine: The Next Generation? + + YOU!

Questions? Matt Chapman http://www.ninjitsuweb.com 818-660-NINJA support@ninjitsuweb.com Coleman Watts colemanw@woolman.org IRC: colemanw drupal.org/webform_civicrm