Dear HotPot users,
I would like to propose some major improvements to the HotPot module which will make the module significantly more flexible and add many new features, whilst making it easier for other programmers to maintain and add to the module.
The programming effort required to implement the improvements will be significant, and as you read through the details below, please consider whether you would benefit from these improvements and whether you could help to finance the improvements, from research grants, or personal funds, that you have access to.
I envisage that the improvements would progress through the following stages:
- overhaul the PHP code which sends the quiz out to, and receives results from, the browser
- overhaul the Javascript which collects responses in the browser in the standard HP quizzes
- add new functionalities for hotpot activities
- improve administration of hotpot activities
- add new templates
Stage 1 must come first. It entails reorganizing the PHP code which sends a quiz to the browser and receives the results back. This code is located in "hotpot/lib.php", "hotpot/view.php" and "hotpot/attempt.php". At the moment the code has many conditional branches to handle the different types of Hot Potatoes quiz. As the number of quiz types has grown, the code has become somewhat difficult to maintain and add to. The revised code would take the approach of the "assignment" and "quiz" modules, which handle different subtypes of activity using PHP classes.
Stages 2 to 5 could progress in parallel, but probably it would useful to overhaul the current standard templates (step 2) first and then use those as a model for creating new templates (step 5).
To carry out all these improvements would take several hundred hours of programming. Probably, I would handle stages 1 and 2, and I would at least oversee stages 3 and 4. Stage 5 would be suitable for farming out to other programmers.
With steps 1 and 2 complete, the implementation of some of the additional templates (step 5) would be suitable projects for next year's "Summer of Code", in which college students are invited to program for "real world" applications.
More details of the improvements appear at the end of this message. The numbers in [square brackets] are my rough estimates of how many quality programming hours I think it would take to make each change.
Please let me know what you think about this proposal.
Gordon
- overhaul hotpot/lib.php [35]
- re-implement hotpot_xml_tree and hotpot_xml_quiz
- (similar to assignment and quiz modules) separate classes (per quiz type and output format)
- each class will handle preparation of browser content and storage of results for a particular source file type and output format
- overhaul hotpot-full.js [35]
- split javascript code into separate js files
- sniff quiz type and browser and only call required js files
- use js objects to define standard API as interface to quiz
- add templates
- HTML only version of the quizzes [21]
- Flash player for PCs [14]
- FlashLite player for mobile phones [70]
- Rottmeier quizzes [21]
- v5 and earlier quizzes [28]
- other quiz types (e.g. Alan Hess) [21]
- HP7 [??]
- AJAX [35]
- add hotpot functionalities
- cache html for each HotPot+browser combination [14]
- error messages from the add and update form (hotpot/mod.html) [7]
- an (optional) intervening window between clicking on a link to a quiz and then seeing the quiz [7]
- open a quiz in a (secure) new window [7]
- activity pull-down menu to jump to other activities (1 hour)
- add links to terms in Glossary [7]
- capture hotpot state when student clicks external link or closes window [3]
- allow teacher to define scoring system [35]
- allow quizzes to be resumed [35]
- fix relative URLs in JGloss [3]
- improve admin
- on the HotPot index page, show which quizzes form a chain [14]
- on the HotPot index page, move/delete multiple HotPot activities [14]
- new reports to show all HotPots in a course/site [28]
- disable storing of raw XML results in hotpot_attempts table [2]
- allow removal of raw XML results from hotpot_attempts table (by hotpot, course or site) [5]
- allow HotPot quizzes to be modified online [35]
- documentation and demonstration course [70]