diff options
author | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
commit | 2f01fe57a8d37767827d6db42850aef86a767c53 (patch) | |
tree | 516a95ffce2fc2435aed8d9976e444dbcba7dce3 /lib/dojo/io | |
parent | 951906dcecb1d3c7bcf751976a03e0c196ca6db0 (diff) |
add dijit/dojo stuff; initial ui mockup
Diffstat (limited to 'lib/dojo/io')
-rw-r--r-- | lib/dojo/io/iframe.js | 265 | ||||
-rw-r--r-- | lib/dojo/io/script.js | 118 |
2 files changed, 383 insertions, 0 deletions
diff --git a/lib/dojo/io/iframe.js b/lib/dojo/io/iframe.js new file mode 100644 index 000000000..105af1697 --- /dev/null +++ b/lib/dojo/io/iframe.js @@ -0,0 +1,265 @@ +/* + Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + + +if(!dojo._hasResource["dojo.io.iframe"]){ +dojo._hasResource["dojo.io.iframe"]=true; +dojo.provide("dojo.io.iframe"); +dojo.io.iframe={create:function(_1,_2,_3){ +if(window[_1]){ +return window[_1]; +} +if(window.frames[_1]){ +return window.frames[_1]; +} +var _4=null; +var _5=_3; +if(!_5){ +if(dojo.config["useXDomain"]&&!dojo.config["dojoBlankHtmlUrl"]){ +console.warn("dojo.io.iframe.create: When using cross-domain Dojo builds,"+" please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl"+" to the path on your domain to blank.html"); +} +_5=(dojo.config["dojoBlankHtmlUrl"]||dojo.moduleUrl("dojo","resources/blank.html")); +} +var _6=dojo.isIE?"<iframe name=\""+_1+"\" src=\""+_5+"\" onload=\""+_2+"\">":"iframe"; +_4=dojo.doc.createElement(_6); +with(_4){ +name=_1; +setAttribute("name",_1); +id=_1; +} +dojo.body().appendChild(_4); +window[_1]=_4; +with(_4.style){ +if(!(dojo.isSafari<3)){ +position="absolute"; +} +left=top="1px"; +height=width="1px"; +visibility="hidden"; +} +if(!dojo.isIE){ +this.setSrc(_4,_5,true); +_4.onload=new Function(_2); +} +return _4; +},setSrc:function(_7,_8,_9){ +try{ +if(!_9){ +if(dojo.isWebKit){ +_7.location=_8; +}else{ +frames[_7.name].location=_8; +} +}else{ +var _a; +if(dojo.isIE||dojo.isWebKit>521){ +_a=_7.contentWindow.document; +}else{ +if(dojo.isSafari){ +_a=_7.document; +}else{ +_a=_7.contentWindow; +} +} +if(!_a){ +_7.location=_8; +return; +}else{ +_a.location.replace(_8); +} +} +} +catch(e){ +} +},doc:function(_b){ +var _c=_b.contentDocument||(((_b.name)&&(_b.document)&&(dojo.doc.getElementsByTagName("iframe")[_b.name].contentWindow)&&(dojo.doc.getElementsByTagName("iframe")[_b.name].contentWindow.document)))||((_b.name)&&(dojo.doc.frames[_b.name])&&(dojo.doc.frames[_b.name].document))||null; +return _c; +},send:function(_d){ +if(!this["_frame"]){ +this._frame=this.create(this._iframeName,dojo._scopeName+".io.iframe._iframeOnload();"); +} +var _e=dojo._ioSetArgs(_d,function(_f){ +_f.canceled=true; +_f.ioArgs._callNext(); +},function(dfd){ +var _10=null; +try{ +var _11=dfd.ioArgs; +var dii=dojo.io.iframe; +var ifd=dii.doc(dii._frame); +var _12=_11.handleAs; +_10=ifd; +if(_12!="html"){ +if(_12=="xml"){ +if(dojo.isIE){ +dojo.query("a",dii._frame.contentWindow.document.documentElement).orphan(); +var _13=(dii._frame.contentWindow.document).documentElement.innerText; +_13=_13.replace(/>\s+</g,"><"); +_13=dojo.trim(_13); +var _14={responseText:_13}; +_10=dojo._contentHandlers["xml"](_14); +} +}else{ +_10=ifd.getElementsByTagName("textarea")[0].value; +if(_12=="json"){ +_10=dojo.fromJson(_10); +}else{ +if(_12=="javascript"){ +_10=dojo.eval(_10); +} +} +} +} +} +catch(e){ +_10=e; +} +finally{ +_11._callNext(); +} +return _10; +},function(_15,dfd){ +dfd.ioArgs._hasError=true; +dfd.ioArgs._callNext(); +return _15; +}); +_e.ioArgs._callNext=function(){ +if(!this["_calledNext"]){ +this._calledNext=true; +dojo.io.iframe._currentDfd=null; +dojo.io.iframe._fireNextRequest(); +} +}; +this._dfdQueue.push(_e); +this._fireNextRequest(); +dojo._ioWatch(_e,function(dfd){ +return !dfd.ioArgs["_hasError"]; +},function(dfd){ +return (!!dfd.ioArgs["_finished"]); +},function(dfd){ +if(dfd.ioArgs._finished){ +dfd.callback(dfd); +}else{ +dfd.errback(new Error("Invalid dojo.io.iframe request state")); +} +}); +return _e; +},_currentDfd:null,_dfdQueue:[],_iframeName:dojo._scopeName+"IoIframe",_fireNextRequest:function(){ +try{ +if((this._currentDfd)||(this._dfdQueue.length==0)){ +return; +} +do{ +var dfd=this._currentDfd=this._dfdQueue.shift(); +}while(dfd&&dfd.canceled&&this._dfdQueue.length); +if(!dfd||dfd.canceled){ +this._currentDfd=null; +return; +} +var _16=dfd.ioArgs; +var _17=_16.args; +_16._contentToClean=[]; +var fn=dojo.byId(_17["form"]); +var _18=_17["content"]||{}; +if(fn){ +if(_18){ +var _19=function(_1a,_1b){ +var tn; +if(dojo.isIE){ +tn=dojo.doc.createElement("<input type='hidden' name='"+_1a+"'>"); +}else{ +tn=dojo.doc.createElement("input"); +tn.type="hidden"; +tn.name=_1a; +} +tn.value=_1b; +fn.appendChild(tn); +_16._contentToClean.push(_1a); +}; +for(var x in _18){ +var val=_18[x]; +if(dojo.isArray(val)&&val.length>1){ +var i; +for(i=0;i<val.length;i++){ +_19(x,val[i]); +} +}else{ +if(!fn[x]){ +_19(x,val); +}else{ +fn[x].value=val; +} +} +} +} +var _1c=fn.getAttributeNode("action"); +var _1d=fn.getAttributeNode("method"); +var _1e=fn.getAttributeNode("target"); +if(_17["url"]){ +_16._originalAction=_1c?_1c.value:null; +if(_1c){ +_1c.value=_17.url; +}else{ +fn.setAttribute("action",_17.url); +} +} +if(!_1d||!_1d.value){ +if(_1d){ +_1d.value=(_17["method"])?_17["method"]:"post"; +}else{ +fn.setAttribute("method",(_17["method"])?_17["method"]:"post"); +} +} +_16._originalTarget=_1e?_1e.value:null; +if(_1e){ +_1e.value=this._iframeName; +}else{ +fn.setAttribute("target",this._iframeName); +} +fn.target=this._iframeName; +dojo._ioNotifyStart(dfd); +fn.submit(); +}else{ +var _1f=_17.url+(_17.url.indexOf("?")>-1?"&":"?")+_16.query; +dojo._ioNotifyStart(dfd); +this.setSrc(this._frame,_1f,true); +} +} +catch(e){ +dfd.errback(e); +} +},_iframeOnload:function(){ +var dfd=this._currentDfd; +if(!dfd){ +this._fireNextRequest(); +return; +} +var _20=dfd.ioArgs; +var _21=_20.args; +var _22=dojo.byId(_21.form); +if(_22){ +var _23=_20._contentToClean; +for(var i=0;i<_23.length;i++){ +var key=_23[i]; +for(var j=0;j<_22.childNodes.length;j++){ +var _24=_22.childNodes[j]; +if(_24.name==key){ +dojo.destroy(_24); +break; +} +} +} +if(_20["_originalAction"]){ +_22.setAttribute("action",_20._originalAction); +} +if(_20["_originalTarget"]){ +_22.setAttribute("target",_20._originalTarget); +_22.target=_20._originalTarget; +} +} +_20._finished=true; +}}; +} diff --git a/lib/dojo/io/script.js b/lib/dojo/io/script.js new file mode 100644 index 000000000..9a940634d --- /dev/null +++ b/lib/dojo/io/script.js @@ -0,0 +1,118 @@ +/* + Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + + +if(!dojo._hasResource["dojo.io.script"]){ +dojo._hasResource["dojo.io.script"]=true; +dojo.provide("dojo.io.script"); +(function(){ +var _1=dojo.isIE?"onreadystatechange":"load",_2=/complete|loaded/; +dojo.io.script={get:function(_3){ +var _4=this._makeScriptDeferred(_3); +var _5=_4.ioArgs; +dojo._ioAddQueryToUrl(_5); +dojo._ioNotifyStart(_4); +if(this._canAttach(_5)){ +var _6=this.attach(_5.id,_5.url,_3.frameDoc); +if(!_5.jsonp&&!_5.args.checkString){ +var _7=dojo.connect(_6,_1,function(_8){ +if(_8.type=="load"||_2.test(_6.readyState)){ +dojo.disconnect(_7); +_5.scriptLoaded=_8; +} +}); +} +} +dojo._ioWatch(_4,this._validCheck,this._ioCheck,this._resHandle); +return _4; +},attach:function(id,_9,_a){ +var _b=(_a||dojo.doc); +var _c=_b.createElement("script"); +_c.type="text/javascript"; +_c.src=_9; +_c.id=id; +_c.charset="utf-8"; +return _b.getElementsByTagName("head")[0].appendChild(_c); +},remove:function(id,_d){ +dojo.destroy(dojo.byId(id,_d)); +if(this["jsonp_"+id]){ +delete this["jsonp_"+id]; +} +},_makeScriptDeferred:function(_e){ +var _f=dojo._ioSetArgs(_e,this._deferredCancel,this._deferredOk,this._deferredError); +var _10=_f.ioArgs; +_10.id=dojo._scopeName+"IoScript"+(this._counter++); +_10.canDelete=false; +_10.jsonp=_e.callbackParamName||_e.jsonp; +if(_10.jsonp){ +_10.query=_10.query||""; +if(_10.query.length>0){ +_10.query+="&"; +} +_10.query+=_10.jsonp+"="+(_e.frameDoc?"parent.":"")+dojo._scopeName+".io.script.jsonp_"+_10.id+"._jsonpCallback"; +_10.frameDoc=_e.frameDoc; +_10.canDelete=true; +_f._jsonpCallback=this._jsonpCallback; +this["jsonp_"+_10.id]=_f; +} +return _f; +},_deferredCancel:function(dfd){ +dfd.canceled=true; +if(dfd.ioArgs.canDelete){ +dojo.io.script._addDeadScript(dfd.ioArgs); +} +},_deferredOk:function(dfd){ +var _11=dfd.ioArgs; +if(_11.canDelete){ +dojo.io.script._addDeadScript(_11); +} +return _11.json||_11.scriptLoaded||_11; +},_deferredError:function(_12,dfd){ +if(dfd.ioArgs.canDelete){ +if(_12.dojoType=="timeout"){ +dojo.io.script.remove(dfd.ioArgs.id,dfd.ioArgs.frameDoc); +}else{ +dojo.io.script._addDeadScript(dfd.ioArgs); +} +} +return _12; +},_deadScripts:[],_counter:1,_addDeadScript:function(_13){ +dojo.io.script._deadScripts.push({id:_13.id,frameDoc:_13.frameDoc}); +_13.frameDoc=null; +},_validCheck:function(dfd){ +var _14=dojo.io.script; +var _15=_14._deadScripts; +if(_15&&_15.length>0){ +for(var i=0;i<_15.length;i++){ +_14.remove(_15[i].id,_15[i].frameDoc); +_15[i].frameDoc=null; +} +dojo.io.script._deadScripts=[]; +} +return true; +},_ioCheck:function(dfd){ +var _16=dfd.ioArgs; +if(_16.json||(_16.scriptLoaded&&!_16.args.checkString)){ +return true; +} +var _17=_16.args.checkString; +if(_17&&eval("typeof("+_17+") != 'undefined'")){ +return true; +} +return false; +},_resHandle:function(dfd){ +if(dojo.io.script._ioCheck(dfd)){ +dfd.callback(dfd); +}else{ +dfd.errback(new Error("inconceivable dojo.io.script._resHandle error")); +} +},_canAttach:function(_18){ +return true; +},_jsonpCallback:function(_19){ +this.ioArgs.json=_19; +}}; +})(); +} |