Extension:QPoll

Purpose
This extension allows to create polls embedded into the wikipages. One page may contain multiple polls. Each poll may contain one or more question of different type. The polls can be "chained" - when the dependent poll will be available for voting only after successful submission of the "dependance" poll. Questions may have various types: with unique, single or multiple category selections and text type (since v0.8.0). Questions contain categories - possible user choices. These can be grouped together as metacategories (also known as category spans) to make "subquestions" inside a question. User choice of category from any of previously voted polls can be retrieved in subsequent polls to change next question proposal text. Since v0.8.0 it is possible to bind and run server-side interpretation scripts to analyze user input. Invalid user input can be refused with exact error message provided by interpretation script. Valid user input can be processed and stored as "structured data" to be further processed by future dependent polls.

Terminology and Syntax
Click at section header to read about logical structure of polls, how these can be defined.

Developing scripts
Click at section header to read about how to process user submitted data via parser function and (since v0.8.0) via server-side interpretation scripts.

Installation and administration
Click at section header to read how to install extension, how to use Special:PollResults special page, which settings in LocalSettings.php may be used.

Download
To extract tgz archive in Windows, free 7zip program can be used.

Todo

 * 1) Statistical diagrams.
 * 2) Improve "mixed" question type.
 * 3) Make it possible to delete polls.

History
This extension has originally grew out of the exising stable Quiz extension, taking it as the code base. After some revisions, when majority of the code was changed, it has became apparent that Quiz compatibility should be dropped, because the purposes of both extensions are quite different - the storage scheme can't easily be made unified, and there's not much of demands to store Quiz results. Besides that, nested and rotating tables layout require html class renderer which uses arrays and objects to interpret the tags - with simple strings output tags nesting errors and general code bloat were arising.