Introduction

My project is an advanced survey suite for the Joomla! CMS. The purpose of this extension is to replace the old Poll component with a feature rich, widely usable advanced survey extension. In spite of these features an important guideline is to provide an easily manageable and user friendly interface.

Technical details

The target system of this extension is Joomla! 1.5. This version was chosen, because working with extensions in Joomla! 1.6 is not really possible at the moment. However the minimal system requirement will be PHP 5.2, this way the migration of the extension to Joomla! 1.6 will be easy. This survey suite will fully based on MVC pattern and will use the Joomla! library classes where it is possible in order to integrate with it better.

The Survey Suite

The extension has three main parts, so in the next paragraphs I will introduce them in some sentences.

Survey Management

When you visit the component's main page you will see a list of surveys ordered by creation date in default case. This list shows the basic information about existing surveys (name, status, creation date, publication date, responses etc). The order of the list is changeable, for example you can order by name, status etc. In the application bar you will have icons to create a new survey, enable, disable or remove an existing one or modify the parameters of the extensions.
New Survey

When you click on the New icon in order to create a new survey, you get a wizard which has two steps:
  • Survey Parameters: This is the first screen you can see. Here you can set the parameters of the survey, like title, description, start date, expiration date, one-by-one questions or list, answer privacy (anonymous or not), public or private survey, group selection in case of private etc.
  • Survey Data: On the next screen you can create the data of the survey. This interface uses ajax to make it more easy and user friendly. In the main part of this screen you can see and edit the questions and the answer options. You can add a new item without reloading the page, because it is controlled by ajax. When you add a new item, you can select its type from a list, like radio buttons, multiple choice, select box, input box, textarea etc. Each items have settings where you can set for example the length, type of inserted data in case of text boxes (for example numbers only, letters only) etc.

User Management

The survey suite provides two type of surveys: public and private. Public means everybody can fill in the survey without limitations. Private means only certain users can see and fill it in. The extension achieves this by user groups. The main part of group creation is the definition of participants. This can be done by several ways:
  • Users can be imported from the Joomla! user tables. This can be achieved by selecting a Joomla! user group (for example registered users) or by selecting them one by one.
  • Importing them from a file (like a CSV file).
  • Selecting a previously created group in the survey site.
  • Typing their data manually into a textarea in a fixed format (like This email address is being protected from spambots. You need JavaScript enabled to view it.;Foo Bar)

When the administrator activates the survey, every user get an e-mail which contains details about the survey and a link with a randomly generated string in it (like user activation in Joomla!). This is better than asking the user to log in with his/her name before the survey.

The survey data and the user data will be in a separate database in order to provide the highest anonymity.

Project timeline

Week 1 (May 25): Project setup on joomlacode.org, basic component (installation, basic back-end and front-end interface), database scheme. Starting new survey code.
Week 2: Finishing new survey code.
Week 3: Starting front-end interface and survey listing in back-end.
Week 4: Finishing front-end interface, starting survey result features.
Week 5: Finishing survey result features, finishing survey part.
Week 6: Adding user features.
Week 7 (July 6): Preparing the extension for mid-term evaluation (alpha version).

Week 8-9 (July 13): Bug fixing, releasing beta 1 version.
Week 10-11: Bug fixing, releasing beta 2 version.
Week 12 (August 10): Releasing final version.

How can you help?

You can help now by giving me feedback on the initial idea. After the alpha and beta releases you can help by testing the extension, reporting bugs and localizing it.

Where can you find more information?

I'm going to blog here on the community site, however the discussion will be happening on the forum, so please post feedback there. You can also follow me on Twitter for updates.