20101122¶
During the week-end I probably found a suitable solution for the “possibility to show a previously uploaded file.” Simply by clicking on the TextField (which is not editable).
TODO:
The same trick might be used for URLField (instead of a TwinTrigger)
A request to /api/ will sometimes return JSON, sometimes HTML. When an AJAX action expects JSON and gets a HTML 404 response, the JSON parser may behave unexpectedly. No ideas yet on how to optimize this…
Now there’s still this problem:
Lino.submit_detail uses POST instead of PUT when submitting a form with filesUpload=true.
This is because file uploads work only with method POST.
ExtJS accordingly forces a POST although I specify PUT.
Consequence: when modifying an existing upload
there may not be any <input type="file">
!
So the “probably suitable solution” wasn’t yet suitable…
FileFieldElement must generate a Lino.Filefield()
when in an Insert form, and something similar to an URLField
when in a Detail form. Currently there is only one LayoutHandle
used for both detail and insert views.
A FileFieldElement doesn’t even know wheter it is in
a Detail or in an Insert form.
The solution for this appearently hard problem was simple: the decision is done in :xfile`lino.js`:
Lino.file_field_handler = function(ww,config) {
if (ww instanceof Lino.DetailWrapper) {
return new Lino.FileField(config);
}else{
ww.fileUpload = true;
return new Ext.ux.form.FileUploadField(config);
}
}