function with_dir(cont) { var dir=local.get("dir",""); if(/^\/tmp\//.test(dir)) cont(dir); else ajax_http_get("/new", 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=g.unique_name+".json" gfcloud("rm",{file: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:"/cloud"}, [hidden("dir",dir),hidden("command","make"), hidden(g.basename+".gf",show_abstract(g))]) var files = [g.basename+".gf"] for(var i in g.concretes) { var cname=g.basename+g.concretes[i].langcode+".gf"; files.push(cname); form.appendChild(hidden(cname, show_concrete(g.basename)(g.concretes[i]))); } editor.appendChild(form); form.submit(); form.parentNode.removeChild(form); } function upload3(message) { if(message) alert(message); } 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={dir:dir}; //debug("Preparing form data"); for(var i=0;i