Language exercises extension programming

this is in state of brainstorming, feel free to work on...

What should it do

 * import / use something like this: wiki definition syntax for language exercises
 * exercise types
 * based on html:form
 * fill the gap (html:text)
 * select/dropdown (html:select)
 * checkbox (html:checkbox))
 * radiobutton (html:radio)
 * based on whatever (Javascript, DHTML SVG, ...?)
 * sorting blocks of text horizontal (short strings) and vertical (blocks)
 * conneting items by line
 * dragging items to other items
 * behavior
 * one button or link showing right entries
 * one button or link showing defined solutions or hints and what the user typed in
 * optional send data somewhere for tracking via http:post or something like that

mockup examples see Ultimate_wiktionary_and_language_exercises

OmegaWiki language learning extension call (by link)

 * 1. parse exercise sources
 * individual exercise
 * get data from Page with marked text e.g. from Wikibooks ( example)
 * link from lemma
 * default "exercise" link on OW page like link "history"
 * other pages that integrate it, perhaps dicologos
 * link from lemma list
 * e.g. basic vocabulary list on wiktionary
 * dicologos childrens dictionary
 * 2. check lexicological resources for making exercises if needed
 * dicologos
 * Ultimate Wiktionary
 * 3. display page to user
 * let user exercise...
 * send user interaction data if user is logged in at some service for tracking
 * 4. save user interaction data (at distributed service ?)
 * values given by user for diagnostic purposes
 * selections by user
 * what to exercise
 * how to exercise
 * determine what to do next
 * exercises with most wrong tries...
 * go to step 1...

what is perhaps needed clientside
At the moment we have to start with the implementation of the functionality on the client browser. The generation of the exercise contents from some lexicological resources like dicologos.org or wiktionaries and what to do with tracked user data is to be done in a future step. That might be funny, but some of these sources are subject to changes at the moment and even these changes might depend from what could be exercised in which way... . So the things we need to be implemented for the first step are only the clientside actions. Then we can fill them with sample material and test exercise retrieving from content sources like dicologos.org or free teaching materials from our university. The same thing with reporting and processing of user interactions data. For the first step it would be enough if the clientside javascript (?) can write to hidden fields that can be submitted to future / experimental serverside processing. Mimimum would be set something like "score" value from "check" popup window in hotpotatoes. To be set if possible: input values given by user (if fill in the blank exercise that might be the entered string, in general the name of the (html)element as hidden field name and value as ist value).

It would be cool if this could be used too for exercises that are hand made with the hotpotatoes authoring tool (especially crosswords) to be able to integrate them.

So the thing that we'd like you to write for us at the moment is a webpage *skeleton* that could be dynamicaly filled by php for the following exercise types. The information for the filling of that skeleton could be an array like http://meta.wikimedia.org/wiki/Language_exercises_extension_programming#UW_language_learning_extension_data_to_build_clientside_code . It would be enough if you could provide us working examples of exercises based on that skeleton so that later php control structures could be combined with the content sources like free dictionaries to create instances of the following exercise outputs / types


 * drag-and-drop (most important, must have, two colums would be ok like http://web.uvic.ca/hrd/halfbaked/wintutor6/jmatch2.htm)


 * Gap-fill exercise like http://web.uvic.ca/hrd/halfbaked/wintutor6/jcloze1.htm


 * CheckBox / Radiobutton Exercise this might look like this or offer the same semantics but clientside     http://cms-sprachlabor.split.uni-bamberg.de/wau/test_dev_alpha/tn/register_item.php?modul_id_neu=mod105&goto=getentry1.php&fragen_id=1095947766141138457


 * A Gap-Fill with Drop-Downs / select exercise like http://cms-sprachlabor.split.uni-bamberg.de/wau/wau_migration/tn/register_item.php?modul_id_neu=mod105&goto=getentry1.php&fragen_id=11204763642136124108 or http://web.uvic.ca/hrd/halfbaked/wintutor6/jcloze2.htm

Details... are not so fixed, If you propose something to implemented different ...

Hope its a little bit clearer now, excuse my english

UW language learning extension data to build clientside code
<?php

//example data input to html / javascript skeletons //

///////////////////////////////// // Example drag-and-drop two collumn exercise // this could look similar to http://web.uvic.ca/hrd/halfbaked/wintutor6/jmatch2.htm //

$arr[item1][exercise_id]       = 'some value given before'; //for hidden field if data is sent $arr[item1][exercise_type]     = 'dnd'; //or drag-n-drop ... $arr[item1][text_before]       = ''; //thats probably not to to be used with this type $arr[item1][default_value]     = 'http://web.uvic.ca/hrd/halfbaked/wintutor6/beef-vt.gif'; //the image or text in first container $arr[item1][text_after]        = ''; $arr[item1][hint]              = '';

$arr[item1][solution1]         = 'beef'; $arr[item1][solution1_score]   = '1'; //...

// /////////////////////////////////

///////////////////////////////// // Example 1 Fill in the blank text exercise //

$arr[item1][exercise_type]     = 'text'; $arr[item1][text_before]       = 'This'; $arr[item1][default_value]     = ''; $arr[item1][text_after]        = '(to be) strange';

$arr[item1][solution1]         = 'is'; $arr[item1][solution1_score]   = '1';

$arr[item1][solution2]         = 'bla'; $arr[item1][solution2_score]   = '0'; // n more possible solutions ...

$arr[item2][exercise_type]     = 'text'; $arr[item2][text_before]       = 'That might'; $arr[item2][default_value]     = 'b*'; $arr[item2][text_after]        = 'the scond item'; $arr[item2][solution1]         = 'be'; $arr[item2][solution1_score]   = '1';

// n more possible items ... // /////////////////////////////////

///////////////////////////////// // Example html:form:select exercise // //same as text define wrong solutions with score <= 0

///////////////////////////////// // Example html:form:checkbox exercise // $arr[item1][exercise_type]     = 'checkbox'; $arr[item1][text_before]       = 'whatever bla thats right '; $arr[item1][default_value]     = ''; //not to be used checkbox value can be 1 when checked $arr[item1][text_after]        = '(some text possible)';

$arr[item1][solution1]         = 'is'; $arr[item1][solution1_score]   = '1';

$arr[item1][solution2]         = 'bla'; $arr[item1][solution2_score]   = '0';

$arr[item2][exercise_type]     = 'text'; $arr[item2][text_before]       = 'That might'; $arr[item2][default_value]     = 'b*'; $arr[item2][text_after]        = 'the scond item'; $arr[item2][solution1]         = 'be'; $arr[item2][solution1_score]   = '1'; // ///////////////////////////////// ?>

Related project: wikivocabularytrainer
Some coding has been done on top of the OmegaWiki database structure: see the repository at Google Code. Drop the project owner a line if you have any ideas.