After spending time and time again with this problem I found a
solution for uploading files in forms loaded with web2py LOAD/
web2py_component

download jquery.form.js http://jquery.malsup.com/form/ to static/js
put a loading.gif image into static/img (just for style)

apply the patch to the examples/views/web2py_ajax.html
and copy the new web2py_ajax.html to your app

diff --git a/applications/examples/views/web2py_ajax.html b/
applications/examples/views/web2py_ajax.html
--- a/applications/examples/views/web2py_ajax.html
+++ b/applications/examples/views/web2py_ajax.html
@@ -2,6 +2,7 @@
 response.files.insert(0,URL(r=request,c='static',f='jquery.js'))
 response.files.insert(1,URL(r=request,c='static',f='calendar.css'))
 response.files.insert(2,URL(r=request,c='static',f='calendar.js'))
+response.files.insert(3,URL(r=request,c='static/
js',f='jquery.form.js'))
 for _item in response.meta or []:}}
      <meta name="{{=_item}}" content="{{=response.meta[_item]}}" />{{
 pass
@@ -65,12 +66,22 @@
 function web2py_trap_form(action,target) {
    jQuery('#'+target+' form').each(function(i){
       var form=jQuery(this);
-      if(!form.hasClass('no_trap'))
-        form.submit(function(obj){
-         jQuery('.flash').hide().html('');
-         web2py_ajax_page('post',action,form.serialize(),target);
-         return false;
-      });
+      if(!form.hasClass('no_trap')){
+         form.ajaxForm({
+               url: action,
+            beforeSubmit: function(a,f,o) {
+                  $
('#'+target).html('{{=IMG(_src=URL(request.application,'static/
img','loading.gif') ,_alt='loading')}} Submitting...');
+               },
+               success: function(data) {
+                  $('#'+target).html(data);
+               web2py_trap_form(action,target);
+               web2py_ajax_init();
+               if(command) eval(command);
+               if(flash) jQuery('.flash').html(flash).slideDown();
+               return false;
+               }
+         });
+      }
    });
 }

i have not tested it enough to really say that it should be included
in the web2py code but after some more testing it should be included

also I wanted to ask: massimo can you "clean up" the static folder and
create some subfolders

/static/js/
/static/css/
/static/img/

Reply via email to