a:22:{s:9:"#provides";s:14:"dojo.io.iframe";s:9:"#resource";s:12:"io/iframe.js";s:23:"dojo.io.iframe.__ioArgs";a:5:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:13:"dojo.__IoArgs";}s:4:"call";a:1:{i:0;s:13:"dojo.__IoArgs";}}s:6:"source";s:77:" this.method = method; this.handleAs = handleAs; this.content = content;";s:7:"summary";s:150:"All the properties described in the dojo.__ioArgs type, apply to this type. The following additional properties are allowed for dojo.io.iframe.send():";s:7:"private";b:1;}s:30:"dojo.io.iframe.__ioArgs.method";a:4:{s:8:"instance";s:23:"dojo.io.iframe.__ioArgs";s:4:"type";s:7:"String?";s:7:"summary";s:223:"The HTTP method to use. "GET" or "POST" are the only supported values. It will try to read the value from the form node's method, then try this argument. If neither one exists, then it defaults to POST.";s:14:"private_parent";b:1;}s:32:"dojo.io.iframe.__ioArgs.handleAs";a:4:{s:8:"instance";s:23:"dojo.io.iframe.__ioArgs";s:4:"type";s:7:"String?";s:7:"summary";s:662:"Specifies what format the result data should be given to the load/handle callback. Valid values are: text, html, xml, json, javascript. IMPORTANT: For all values EXCEPT html and xml, The server response should be an HTML file with a textarea element. The response data should be inside the textarea element. Using an HTML document the only reliable, cross-browser way this transport can know when the response has loaded. For the html handleAs value, just return a normal HTML document. NOTE: xml is now supported with this transport (as of 1.1+); a known issue is if the XML document in question is malformed, Internet Explorer will throw an uncatchable error.";s:14:"private_parent";b:1;}s:31:"dojo.io.iframe.__ioArgs.content";a:4:{s:8:"instance";s:23:"dojo.io.iframe.__ioArgs";s:4:"type";s:7:"Object?";s:7:"summary";s:448:"If "form" is one of the other args properties, then the content object properties become hidden form form elements. For instance, a content object of {name1 : "value1"} is converted to a hidden form element with a name of "name1" and a value of "value1". If there is not a "form" property, then the content object is converted into a name=value&name=value string, by using dojo.objectToQuery().";s:14:"private_parent";b:1;}s:14:"dojo.io.iframe";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:21:"dojo.io.iframe.create";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:5:"fname";a:2:{s:4:"type";s:6:"String";s:7:"summary";s:66:"The name of the iframe. Used for the name attribute on the iframe.";}s:9:"onloadstr";a:2:{s:4:"type";s:6:"String";s:7:"summary";s:82:"A string of JavaScript that will be executed when the content in the iframe loads.";}s:3:"uri";a:3:{s:8:"optional";b:1;s:4:"type";s:6:"String";s:7:"summary";s:123:"The value of the src attribute on the iframe element. If a value is not given, then dojo/resources/blank.html will be used.";}}s:6:"source";s:1215:" if(window[fname]){ return window[fname]; } if(window.frames[fname]){ return window.frames[fname]; } var cframe = null; var turi = uri; if(!turi){ 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"); } turi = (dojo.config["dojoBlankHtmlUrl"]||dojo.moduleUrl("dojo", "resources/blank.html")); } var ifrstr = dojo.isIE ? '<iframe name="'+fname+'" src="'+turi+'" onload="'+onloadstr+'">' : 'iframe'; cframe = dojo.doc.createElement(ifrstr); with(cframe){ name = fname; setAttribute("name", fname); id = fname; } dojo.body().appendChild(cframe); window[fname] = cframe; with(cframe.style){ if(!(dojo.isSafari < 3)){ //We can't change the src in Safari 2.0.3 if absolute position. Bizarro. position = "absolute"; } left = top = "1px"; height = width = "1px"; visibility = "hidden"; } if(!dojo.isIE){ this.setSrc(cframe, turi, true); cframe.onload = new Function(onloadstr); } return cframe;";s:7:"summary";s:150:"Creates a hidden iframe in the page. Used mostly for IO transports. You do not need to call this to start a dojo.io.iframe request. Just call send().";}s:21:"dojo.io.iframe.setSrc";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:6:"iframe";a:1:{s:4:"type";s:7:"DOMNode";}s:3:"src";a:1:{s:4:"type";s:6:"String";}s:7:"replace";a:1:{s:4:"type";s:7:"Boolean";}}s:6:"source";s:888:" try{ if(!replace){ if(dojo.isWebKit){ iframe.location = src; }else{ frames[iframe.name].location = src; } }else{ // Fun with DOM 0 incompatibilities! var idoc; //WebKit > 521 corresponds with Safari 3, which started with 522 WebKit version. if(dojo.isIE || dojo.isWebKit > 521){ idoc = iframe.contentWindow.document; }else if(dojo.isSafari){ idoc = iframe.document; }else{ // if(d.isMozilla){ idoc = iframe.contentWindow; } //For Safari (at least 2.0.3) and Opera, if the iframe //has just been created but it doesn't have content //yet, then iframe.document may be null. In that case, //use iframe.location and return. if(!idoc){ iframe.location = src; return; }else{ idoc.location.replace(src); } } }catch(e){ console.log("dojo.io.iframe.setSrc: ", e); }";s:7:"summary";s:157:"Sets the URL that is loaded in an IFrame. The replace parameter indicates whether location.replace() should be used when changing the location of the iframe.";}s:18:"dojo.io.iframe.doc";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:10:"iframeNode";a:1:{s:4:"type";s:7:"DOMNode";}}s:6:"source";s:440:" var doc = iframeNode.contentDocument || // W3 ( ( (iframeNode.name) && (iframeNode.document) && (document.getElementsByTagName("iframe")[iframeNode.name].contentWindow) && (document.getElementsByTagName("iframe")[iframeNode.name].contentWindow.document) ) ) || // IE ( (iframeNode.name)&&(document.frames[iframeNode.name])&& (document.frames[iframeNode.name].document) ) || null; return doc;";s:7:"summary";s:73:"Returns the document object associated with the iframe DOM Node argument.";}s:19:"dojo.io.iframe.send";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"args";a:1:{s:4:"type";s:23:"dojo.io.iframe.__ioArgs";}}s:6:"source";s:2818:" if(!this["_frame"]){ this._frame = this.create(this._iframeName, dojo._scopeName + ".io.iframe._iframeOnload();"); } //Set up the deferred. var dfd = dojo._ioSetArgs( args, function(/*Deferred*/dfd){ //summary: canceller function for dojo._ioSetArgs call. dfd.canceled = true; dfd.ioArgs._callNext(); }, function(/*Deferred*/dfd){ //summary: okHandler function for dojo._ioSetArgs call. var value = null; try{ var ioArgs = dfd.ioArgs; var dii = dojo.io.iframe; var ifd = dii.doc(dii._frame); var handleAs = ioArgs.handleAs; //Assign correct value based on handleAs value. value = ifd; //html if(handleAs != "html"){ if(handleAs == "xml"){ // FF, Saf 3+ and Opera all seem to be fine with ifd being xml. We have to // do it manually for IE. Refs #6334. if(dojo.isIE){ dojo.query("a", dii._frame.contentWindow.document.documentElement).orphan(); var xmlText=(dii._frame.contentWindow.document).documentElement.innerText; xmlText=xmlText.replace(/>\s+</g, "><"); xmlText=dojo.trim(xmlText); //Reusing some code in base dojo for handling XML content. Simpler and keeps //Core from duplicating the effort needed to locate the XML Parser on IE. var fauxXhr = { responseText: xmlText }; value = dojo._contentHandlers["xml"](fauxXhr); // DOMDocument } }else{ value = ifd.getElementsByTagName("textarea")[0].value; //text if(handleAs == "json"){ value = dojo.fromJson(value); //json }else if(handleAs == "javascript"){ value = dojo.eval(value); //javascript } } } }catch(e){ value = e; }finally{ ioArgs._callNext(); } return value; }, function(/*Error*/error, /*Deferred*/dfd){ //summary: errHandler function for dojo._ioSetArgs call. dfd.ioArgs._hasError = true; dfd.ioArgs._callNext(); return error; } ); //Set up a function that will fire the next iframe request. Make sure it only //happens once per deferred. dfd.ioArgs._callNext = function(){ if(!this["_calledNext"]){ this._calledNext = true; dojo.io.iframe._currentDfd = null; dojo.io.iframe._fireNextRequest(); } } this._dfdQueue.push(dfd); this._fireNextRequest(); //Add it the IO watch queue, to get things like timeout support. dojo._ioWatch( dfd, function(/*Deferred*/dfd){ //validCheck return !dfd.ioArgs["_hasError"]; }, function(dfd){ //ioCheck return (!!dfd.ioArgs["_finished"]); }, function(dfd){ //resHandle if(dfd.ioArgs._finished){ dfd.callback(dfd); }else{ dfd.errback(new Error("Invalid dojo.io.iframe request state")); } } ); return dfd;";s:7:"summary";s:206:"function that sends the request to the server. This transport can only process one send() request at a time, so if send() is called multiple times, it will queue up the calls and only process one at a time.";}s:26:"dojo.io.iframe.send._frame";a:3:{s:8:"instance";s:19:"dojo.io.iframe.send";s:7:"private";b:1;s:7:"summary";s:0:"";}s:31:"dojo.io.iframe.send._calledNext";a:3:{s:8:"instance";s:19:"dojo.io.iframe.send";s:7:"private";b:1;s:7:"summary";s:0:"";}s:26:"dojo.io.iframe._currentDfd";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:24:"dojo.io.iframe._dfdQueue";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:26:"dojo.io.iframe._iframeName";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:31:"dojo.io.iframe._fireNextRequest";a:4:{s:4:"type";s:8:"Function";s:6:"source";s:2331:" try{ if((this._currentDfd)||(this._dfdQueue.length == 0)){ return; } var dfd = this._currentDfd = this._dfdQueue.shift(); var ioArgs = dfd.ioArgs; var args = ioArgs.args; ioArgs._contentToClean = []; var fn = dojo.byId(args["form"]); var content = args["content"] || {}; if(fn){ if(content){ // if we have things in content, we need to add them to the form // before submission var pHandler = function(name, value) { var tn; if(dojo.isIE){ tn = dojo.doc.createElement("<input type='hidden' name='"+name+"'>"); }else{ tn = dojo.doc.createElement("input"); tn.type = "hidden"; tn.name = name; } tn.value = value; fn.appendChild(tn); ioArgs._contentToClean.push(name); }; for(var x in content){ var val = content[x]; if(dojo.isArray(val) && val.length > 1){ var i; for (i = 0; i < val.length; i++) { pHandler(x,val[i]); } }else{ if(!fn[x]){ pHandler(x,val); }else{ fn[x].value = val; } } } } //IE requires going through getAttributeNode instead of just getAttribute in some form cases, //so use it for all. See #2844 var actnNode = fn.getAttributeNode("action"); var mthdNode = fn.getAttributeNode("method"); var trgtNode = fn.getAttributeNode("target"); if(args["url"]){ ioArgs._originalAction = actnNode ? actnNode.value : null; if(actnNode){ actnNode.value = args.url; }else{ fn.setAttribute("action",args.url); } } if(!mthdNode || !mthdNode.value){ if(mthdNode){ mthdNode.value= (args["method"]) ? args["method"] : "post"; }else{ fn.setAttribute("method", (args["method"]) ? args["method"] : "post"); } } ioArgs._originalTarget = trgtNode ? trgtNode.value: null; if(trgtNode){ trgtNode.value = this._iframeName; }else{ fn.setAttribute("target", this._iframeName); } fn.target = this._iframeName; fn.submit(); }else{ // otherwise we post a GET string by changing URL location for the // iframe var tmpUrl = args.url + (args.url.indexOf("?") > -1 ? "&" : "?") + ioArgs.query; this.setSrc(this._frame, tmpUrl, true); } }catch(e){ dfd.errback(e); }";s:7:"summary";s:64:"Internal method used to fire the next request in the bind queue.";s:7:"private";b:1;}s:48:"dojo.io.iframe._fireNextRequest._dfdQueue.length";a:3:{s:8:"instance";s:31:"dojo.io.iframe._fireNextRequest";s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:43:"dojo.io.iframe._fireNextRequest._currentDfd";a:4:{s:8:"instance";s:31:"dojo.io.iframe._fireNextRequest";s:7:"private";b:1;s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:28:"dojo.io.iframe._iframeOnload";a:4:{s:4:"type";s:8:"Function";s:6:"source";s:993:" var dfd = this._currentDfd; if(!dfd){ this._fireNextRequest(); return; } var ioArgs = dfd.ioArgs; var args = ioArgs.args; var fNode = dojo.byId(args.form); if(fNode){ // remove all the hidden content inputs var toClean = ioArgs._contentToClean; for(var i = 0; i < toClean.length; i++) { var key = toClean[i]; //Need to cycle over all nodes since we may have added //an array value which means that more than one node could //have the same .name value. for(var j = 0; j < fNode.childNodes.length; j++){ var chNode = fNode.childNodes[j]; if(chNode.name == key){ dojo.destroy(chNode); break; } } } // restore original action + target if(ioArgs["_originalAction"]){ fNode.setAttribute("action", ioArgs._originalAction); } if(ioArgs["_originalTarget"]){ fNode.setAttribute("target", ioArgs._originalTarget); fNode.target = ioArgs._originalTarget; } } ioArgs._finished = true;";s:7:"private";b:1;s:7:"summary";s:0:"";}s:7:"dojo.io";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:4:"dojo";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}