Upcoming Events
San Francisco CiviCRM Meetup - March 2010
March 24th, 2010
Come meet others from the Bay Area who are interested in, using or developing (more...)
Campaigning Camp in Oxford, UK
March 25th, 2010
Free (with lunch and tea break included!) CiviCRM/Drupal and Plone two-track (more...)
CiviCRM Seminar - Dublin
March 25th, 2010
MTL Software Solutions are hosting a free seminar at The IBOA, Stephen
St (more...)
CiviCRM User Training - Atlanta (pre NTC)
April 7th, 2010
This full-day hands-on training session is aimed at non-profit staff and (more...)
Configuring, Customizing and Extending CiviCRM - San Francisco (before DrupalCon SF)
April 18th, 2010
This hands-on 1-day training session is targeted at administrators, integrators (more...)
CiviCRM User Training - San Francisco (before DrupalCon SF) This full-day hands-on training session is aimed at non-profit staff and (more...)
April 18th, 2010
CiviCon San Francisco 2010
April 22nd, 2010
Join us for the first ever CiviCon in San Francisco this April! CiviCon brings (more...)
Schools
- Not Just a Contact Database
-
These optional components give you more power to connect and engage your supporters.

civiCONTRIBUTE
Online fundraising and donor management.

civiEVENT
Online event registration and participant tracking.

civiMEMBER
Online signup and membership management.

civiMAIL
Personalized email blasts and newsletters.

civiREPORT
Report generation and template management.
Looking for Beta Testers for the School Module
Some of you'll are aware of the work i've done for The San Francisco School using Drupal 6.x / CiviCRM 2.2. You can read more technical details about this project on my blog.
Database
- Maintain name/email/phone/address information for people associated with the school (students, staff and parents)
- Maintain relationships between parents and their children
- Maintain relationships between a teacher / advisor and their students
Current Features deployed at SFS
- Give all parents and staff a login/password
- Online signups for all Parent Teacher Conferences
- Online signups for all extended care activity (classes after school)
- Sign-in / Sign-out for students attending extended care
- Computation of how many "activity" blocks a student has spent on extended care
- Parent viewing of the various extended care activities their kids have attended in the past
- Online maps of "Where we Live" of the school families
- Online directories of the schools and grades.
Handling Attendance for Extended Care Activities in CiviCRM
This is a continuing series of blog posts on deploying CiviCRM at San Francisco School. In the previous blog posts we discussed how to expose relationship information in a profile and how to manage parent teacher conferences. There are also some slides explaining the module from a recent training seminar
Our latest project was automating the extended care (classes before and after school) system. The previous process was quite manual and labor intensive (and error prone). The attendance sheet was printed (via a CiviReport) from the students signed in. The students queued up and were signed into the extended care program. Some of the students had to be manually written in (if they were not signed up). At the end of the day, the parents would pick up the child and locate the childs name in the multiple sheets and sign them out. Typically 10-20% of parents would not sign their children out. The business office would then take this piece of paper and then calculate the "activity blocks" (based on time spent in extended care) and enter them in an excel spreadsheet. There were a few exceptions to the rule (children of staff, students who signed up for unlimited extended care and some activities are free)
More adventures with the school module
I continue my work on deploying CiviCRM for my kids school. In previous blog posts i documented how to use hooks and custom templates to schedule parent teacher conferences and extended care activities and how to expose relationship information in a profile view. In this blog post I'll describe some more advanced features. I'll also describe the code and directory structure.
New Code Structure and Directory Layout
Adapting CiviCRM for the needs of a school ...
I've been working on customizing CiviCRM for my kids school. I documented how i exposed relationship information on a profile view in this blog post. In the past week i've also exposed "activities" and "a multiple record custom group" via profiles which i'll describe in this blog post. All this work was done via civicrm hooks and custom templates and run on CiviCRM v2.2.8. You can download the code from here. In this blog post i'll discuss two features that i've implemented: Scheduling Parent Teacher Conferences and Managing Extended Care.
Scheduling Parent Teacher Conferences
The school wanted an automated system to schedule parent teacher conferences. These meetings typically last 30 mins. For some grades its all done in one day, for some other classes its spread out over a couple of weeks (few slots / day). I decided to create a new activity type called "Parent Teacher Conference". For the first parent teacher conference, we have 4 advisors and 30 students. The conferences happen on the same day between 7:00 am - 6:00 pm. Each advisor has 10 students. Some students have 2 advisors. I wrote a script to populate these activities automatically with the assignee being the advisor. The advisor also has the option of going into his activities tab and deleting all the times when she/he does not want a meeting. We also created a new relationship type called "Advisor <-> Advisee" and used import to create these relationships.
Exposing relationship data in CiviCRM profile view
I'm working on deploying CiviCRM for my kids school website. Part of the project requires us to expose the parent <-> child relationship information on the website and allow parents to edit their child information.
I accomplished this using a combination of civicrm hooks, custom templates, permissioned relationships and custom code in a drupal module. You can access the module and template code here.
The broad steps are:
- Implement hook_civicrm_pageRun for the profile view page (CRM_Profile_Page_Dynamic). Only implement this hook for the specific profile id's you want relationship information. In this case we have two profiles, a Parent Profile (gid=3) and a Student Profile (gid=4)
- The pageRun hook also adds the module's template directory to the smarty include path, so we dont have to set it globally. This also allow multiple modules to append different template directories to the template include path (check the function _sfschool_initialize)
- The hook gets either the parent or the child information using a custom query. We ensure that only permissioned parents can see their child information (in case of some complicated family structures). The queries are relatively simple at this stage, i suspect they will increase in complexity over the next few weeks
- The hook exposes the information gathered from the database to the smarty template
- The custom template (templates/CRM/Profile/Page/3/Dynamic.tpl) uses that information to display the relationship data on the page. I also edited the View.tpl template to eliminate the "Back to Listings" link.






