cross posted in moodle for lang teaching.
In response to Frank's requestt I thought I'd give it a shot and happy to let ya all know that I've managed to make it work as a dataform field:
It is still just a stub and at any rate the implementation assumes all kinds of things the dataform does, so the code itself may not be very useful. But the approach and some relevant bits of code may help so here's a summary and if you have any questions just let me know.
I basically create a draft area and pass the draft item id to the uploading php script which resides in a designated file. In that script I create an instance of repository_upload and call its upload method:
$repo = new repository_upload($repo_id, null, array('ajax'=>true, 'name'=>'', 'type'=>'upload'));
try {
$ret = $repo->upload($saveas_filename, $maxbytes);
} catch (moodle_exception $e) {
print $e->errorcode;
die;
}
print $saveas_filename. ' uploaded';
The repository_upload looks for the uploaded file in a specific place and this place should be indicated in the javascript call in the upload button (btw, just a standard button, not a submit):
var ret = recorder.sendGongRequest('PostToForm',
inputpage,
'repo_upload_file',
'',
filename);
Then all that remains is to fetch the file from the draft area and store it in a proper area.
I use the repository_upload because I like to reuse existing code as much as possible. This may or may not be the best way. I'll look into that more thoroughly when I return to finalize the field.
hth