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);
  }
}