We conducted our first ever developer bootcamp for a group of developers from TechSoup. The bootcamp was spread over two days and four sessions. Each session was approx three hours long. Overall we felt the bootcamp was a success. We also ended up with a couple of new features for CiviCRM v2.0.
- The first session was a quick introduction to some of the basic and advanced features of CiviCRM. We also covered the schema changes in v2.0. We ended the session with a quick overview of the code structure along with some of the basic building blocks in the system (page, form, selector, DAO and BAO objects)
- The second session focussed on some hands on coding. One of their needs was the ability to share option groups among custom fields, CRM-2478. The database model had support for this feature. We had not exposed it in the UI. We spent the next few hours designing and writing the needed code to implement this feature in the create, edit and view pages. It proved to be a good exercise in touching various pieces of the code base, at the form, page and template level.
- We spent the next session focussed on allowing the civicrm admin to customize the form validation process. This was split into two parts. The first part was exposing the element 'id' in the smarty '$form' variable so they could use the jQuery validator, CRM-2479. Extending QuickForm to output 'id' turned out to be fairly easy once we found the right place to do so.
- We then tried to solve the problem of how we could have any module validate any CiviCRM form. We went through a few proposals before concluding that we could solve the problem very cleanly by using a 'civicrm_validate' hook, CRM-2480. We did a few code iterations before figuring out a clean implementation at the form level which calls this hook for all CiviCRM forms. It was pretty cool to realize we did not need to change all form code :)
- To end the bootcamp, we gave a quick overview of the BIRT reporting solution and demo'ed a few of the our default civicrm reports. While our sample reports dont do full justice to the power of BIRT, it does give folks an idea of what is possible using an external reporting engine. We do hope at some point, the community steps up and builds a few awesome reports :)
Thanx to the folks at techsoup/compumentor for participating in the bootcamp. We are quite pleased with the outcome and very happy that we added some new features to v2.0.