25 November, 2006
Filed under CiviReport, v1.7, CiviCRM

I did a fair amount of research on the web regarding the state of various open source reporting packages. BIRT received quite a few excellent reviews and they also have an upcoming integration with the Zend platform/framework that I had to give it another go.

So back to the drawing board, and did an install of Eclipse and the automated install / update of BIRT. I suspected there was an issue with the latest version of BIRT (2.1.1) and decided to install the older version (2.1.0). This proved to be a smart move and I was up and running with BIRT. Their website is quite nice and has lots of detailed informtion (which did not really help me in my first installation attempt). I started off with the Basic Tutorial, though i modified it to use the CiviCRM...

Read more
22 November, 2006
Filed under CiviReport, v1.7, CiviCRM

This week i've spent a fair amount of time trying to figure out what we could potentially do to make reporting part of CiviCRM. A few joomla folks on the list have successfully used a Joomla component DBQ and were fairly happy with it. I did read a fair amount of it and took the next step of actually installing and playing around with it.

DBQ is quite nice, easy to install and works as expected. However, as Dan Robinson pointed out on the email list, it is not a reporting tool, but more a simpler way to execute queries and format them in some manner. A lot of "reporting" functionality is missing (in all fairness to DBQ, it does not claim to be a reporting tool either).

The next stop in my reporting journey was agata. Unfortunately agata does not seem to have kept up to the current software versions. It only works on php 4.3.x and php-gtk1. Its a brazilian OSS project, the information was a bit hard to...

Read more
20 November, 2006
By kurund
Filed under v1.6, CiviCRM

We have integrated Selenium Testing Tool for CiviCRM v1.6, in addition to existing UnitTests for checking api functionality.
Selenium automated tests allows user to test most of the civicrm functionality.

For more details check the documentation

18 November, 2006
Filed under CiviCRM

I installed CiviCRM 1.5 with Drupal 5.0 following the same steps I took installing it with Drupal 4.7 and got no errors.

CiviCRM wouldn't show up in the modules list in the admin section, so I poked around a bit to see what the overall setup was of the Drupal 5.0 modules.

I moved the civicrm.css file into the main civicrm folder, moved the civicrm.module file into the main civicrm folder and then created a civicrm.info file and follwed the same format as the other .info files (a couple of lines of code describing the module) to write to the civicrm.info file. I copied the civicrm.settings.php file to drupal/sites/default folder and went back to the Drupal 5.0 admin area and lo and behold, CiviCRM 1.5 was there. I enabled it and it worked.

The link to my test Drupal 5.0 site with CiviCRM 1.5 is here:

www.ofeliascommunity.org/test

Based on the adjustments I made it would take all of 15 minutes or...

Read more
17 November, 2006
Filed under Architecture, CiviCRM

It is important for CiviCRM to have a full fledged un-structured search engine in addition to the current structured query. I don't think MySQL full text searching (MFTS) is a good model for a couple of reasons. Firstly MFTS is restricted to myisam tables and CiviCRM uses innodb tables. Secondly MFTS is still a table level search and i don't think it can handle hierarchical data. CiviCRM contacts are hierarchical data sets.

Would be great to integrate something like Lucene into CiviCRM. A potential work flow could be as follows:

1. Publish an xml specification of the CiviCRM data model. We have done a fair amount of this work for the Branner project. We could extend and automate this quite nicely using our code generator. Also xml fits quite nicely since we can represent hierarchical data

2. Extend the logging functionality so we are aware of all modifications to any...

Read more
17 November, 2006
Filed under v1.6, CiviCRM

We are happy to announce that our 1.6 Alpha release is now available for preview and testing on our servers. We'd like to get as many folks trying out the new features as possible over the next week. This will help us move quickly to a downloadable Beta release - which is currently scheduled for November 29.

You can login to the sandbox at:

http://sandbox.trunk.civicrm.org

User - demo
Password - demo

Highlights of the release - and things we especially like folks to try out are:
* Ajax-based suggestive search in the Contact Search box (left column)
* Dynamically loaded sections in Advanced Search and Contact View Screens
* Mouseover help in Administer Profiles, Import and other spots (look for the ? icon)
* Progress Bar during the import process

Check out the 1.6 Roadmap for a summary of new features and improvements:

...

Read more
15 November, 2006
Filed under v1.6, CiviCRM

There's been a lively discussion on the mailing list about requirements for linking CMS (Drupal / Joomla) Users to CiviCRM contacts and handling contributions from both types of contacts. We recognize that there is still work needed to handle the variety of use cases out there - but we've made decent progress in the upcoming 1.6 release:

  • CMS (Drupal / Joomla) users can be "linked" to either an Individual contact (default behavior) OR and Organization contact.
  • Sites will be able to provide a separate user registration link which will expose Organization profile(s) and create a user record, a new contact Organization record - and "link" them.
  • Offline Contributions can be manually input OR imported for any contact type (Individual, Organization or Household)
  • Online Contributions by authenticated users will be linked to the associated contact record. If the authenticated user IS an organization - the contribution will show up...
Read more
14 November, 2006
Filed under Architecture, CiviCRM
This installment of our architecture series will introduce the templating system used by CiviCRM as the presentation layer (e.g. to actually render forms and pages). Every CiviCRM screen is "composed" from one or more template files. These files contain a combination of HTML tags, text, variables and (often) some code to control presentation logic. CiviCRM uses an open-source templating engine called Smarty. If you are planning on examining, debugging and/or and modifying CiviCRM screens - you'll want to spend some time reviewing Smarty's online documentation.

Finding the Template(s) Used by a Form or Page

The easiest way to find the base template used to render a particular CiviCRM screen is to do a "View Source" while on that screen. Then search for the string '.tpl file'. This will take you to a commented HTML line that looks like this (this is the Edit Contact form):... Read more
14 November, 2006
Filed under Architecture, CiviCRM

CiviCRM Forms and Wizards (multi-page forms) are based on PEAR's HTML_QuickForm_Controller. (QFC). QFC in turn is based on HTML_QuickForm (QF). It was easier for us to model a single form as a one page wizard, and hence all CiviCRM forms are instances of QFC

The basic Form object is CRM_Core_Form. All forms are derived from this class. Each derived class is expected to implement the following functions

  • function preProcess( ): This function is called before a form is built. All objects needed to build the form should be built in this function.
  • function buildQuickForm( ): This function builds the form. There are some helper functions in CRM_Core_Form to build some elements (Radio, Select, Yes/No etc). Classes typically call a mixture of these helper functions and QF functions directly
  • function setDefaultValues( ): Default values when the form is first rendered. Typically we use the same form...
Read more
11 November, 2006
Filed under Architecture, CiviCRM

We now move onto the more interesting stuff of what really happens when a request is made and the objects that are responsible for building the response. The top level CiviCRM objects are:

  • Form (CRM_Core_Form): CiviCRM forms are based on HTML_QuickForm. For drupal folks, this is more of an object representation of the much loved form api
  • Wizard (CRM_Core_Controller): A set of CiviCRM Forms that collectively make up an action (Import Wizard, Mailing Wizard etc). For simplicty sake a one page Form is represented as a Wizard (CRM_Core_Controller_Simple)
  • Page (CRM_Core_Page): A Page represents all html pages that are not of the above two types
  • Selector (CRM_Core_Selector): A selector is a tabular/grid representation of the database data. Selectors are not high level objects, but are embedded in either a Page or a Form object.

Each of these objects offer a...

Read more