function with_dir(cont) { var dir=local.get("dir",""); if(dir) cont(dir); else ajax_http_get("upload.cgi?dir", function(dir) { local.put("dir",dir); cont(dir); }); } function remove_cloud_grammar(g) { var dir=local.get("dir") if(dir && g.unique_name) { var path=dir+"/"+g.unique_name+".json" ajax_http_get("upload.cgi?rm="+encodeURIComponent(path),debug); } } // Upload the grammar to the server and check it for errors function upload(g) { function upload2(dir) { var form=node("form",{method:"post",action:"upload.cgi"+dir}, [hidden(g.basename+".gf",show_abstract(g))]) for(var i in g.concretes) form.appendChild(hidden(g.basename+g.concretes[i].langcode+".gf", show_concrete(g.basename)(g.concretes[i]))); editor.appendChild(form); form.submit(); form.parentNode.removeChild(form); } with_dir(upload2); } // Upload the grammar to store it in the cloud function upload_json(cont) { function upload3(resptext,status) { local.put("json_uploaded",Date.now()); //debug("Upload complete") if(cont) cont(); else { var sharing=element("sharing"); if(sharing) sharing.innerHTML=resptext; } } function upload2(dir) { var prefix=dir.substr(10)+"-" // skip "/tmp/gfse." //debug("New form data"); //var form=new FormData(); // !!! Doesn't work on Android 2.2! var form="",sep=""; //debug("Preparing form data"); for(var i=0;i