function with_dir(cont) { function have_dir(dir) { var unique_id=local.get("unique_id") if(!unique_id) { unique_id=dir.substr(10) // skip "/tmp/gfse." local.put("unique_id",unique_id) } cont(dir,unique_id) } var dir=local.get("dir",""); if(/^\/tmp\//.test(dir)) have_dir(dir); else ajax_http_get("/new", function(dir) { local.put("dir",dir); have_dir(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 old_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)(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 the server and check it for errors function upload_grammars(gs,cont) { function upload2(dir) { var pre="dir="+encodeURIComponent(dir) var form= {command:"make"} for(var aix in gs) { var g=gs[aix] form[encodeURIComponent(g.basename+".gf")]=show_abstract(g) var cnc=g.concretes for(var i in cnc) { var cname=g.basename+cnc[i].langcode+".gf"; form[encodeURIComponent(cname)]=show_concrete(g)(cnc[i]); } } ajax_http_post("/cloud",pre+encodeArgs(form),upload3) } function upload3(json) { var res=JSON.parse(json) if(cont) cont(res) else alert(res.errorcode+"\n"+res.command+"\n\n"+res.output); } if(navigator.onLine) with_dir(upload2) else cont({errorcode:"Offline",command:"",output:""}) } function assign_unique_name(g,unique_id) { if(!g.unique_name) { g.unique_name=unique_id+"-"+g.index; save_grammar(g) } return g } // Upload all grammars to the cloud function upload_json(cont) { function upload2(dir,unique_id) { function upload3(resptext,status) { local.put("json_uploaded",Date.now()); //debug("Upload complete") if(cont) cont(); else { var sharing=element("sharing"); if(sharing) { if(status==204) { var a=empty("a"); a.href="share.html#"+dir.substr(5) // skip "/tmp/" a.innerHTML=a.href; sharing.innerHTML=""; sharing.appendChild(text("Use the following link for shared access to your grammars from multiple devices: ")) sharing.appendChild(a) } else sharing.innerHTML=resptext; } } } //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