data tables are going to need some work yet, but the other stuff seems to be working 100%
1556 lines
157 KiB
HTML
1556 lines
157 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
|
<html>
|
|
<head>
|
|
<title>API: connection connection.js (YUI Library)</title>
|
|
<link rel="stylesheet" type="text/css" href="assets/api.css">
|
|
<script type="text/javascript" src="assets/api-js"></script>
|
|
<script type="text/javascript" src="assets/ac-js"></script>
|
|
</head>
|
|
|
|
<body id="yahoo-com">
|
|
|
|
<div id="doc3" class="yui-t2">
|
|
|
|
<div id="hd">
|
|
<a href="http://developer.yahoo.com/yui/"><h1>Yahoo! UI Library</h1></a>
|
|
<h3>connection <span class="subtitle">2.6.0</span></h3>
|
|
<p>
|
|
<a href="./index.html">Yahoo! UI Library</a>
|
|
> <a href="./module_connection.html">connection</a>
|
|
|
|
> connection.js (source view)
|
|
</p>
|
|
|
|
|
|
</div>
|
|
|
|
<div id="bd">
|
|
<div id="yui-main">
|
|
<div class="yui-b">
|
|
<form name="yui-classopts-form">
|
|
<span id="classopts"><input type="checkbox" name="showprivate" id="showprivate" /> <label for="showprivate">Show Private</label></span>
|
|
<span id="classopts"><input type="checkbox" name="showprotected" id="showprotected" /> <label for="showprotected">Show Protected</label></span>
|
|
<span id="classopts"><input type="checkbox" name="showdeprecated" id="showdeprecated" /> <label for="showdeprecated">Show Deprecated</label></span>
|
|
</form>
|
|
|
|
<div id="srcout">
|
|
<style>
|
|
#doc3 #classopts { display:none; }
|
|
</style>
|
|
<div class="highlight" ><pre><span class="c">/**</span>
|
|
<span class="c"> * The Connection Manager provides a simplified interface to the XMLHttpRequest</span>
|
|
<span class="c"> * object. It handles cross-browser instantiantion of XMLHttpRequest, negotiates the</span>
|
|
<span class="c"> * interactive states and server response, returning the results to a pre-defined</span>
|
|
<span class="c"> * callback you create.</span>
|
|
<span class="c"> *</span>
|
|
<span class="c"> * @namespace YAHOO.util</span>
|
|
<span class="c"> * @module connection</span>
|
|
<span class="c"> * @requires yahoo</span>
|
|
<span class="c"> * @requires event</span>
|
|
<span class="c"> */</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * The Connection Manager singleton provides methods for creating and managing</span>
|
|
<span class="c"> * asynchronous transactions.</span>
|
|
<span class="c"> *</span>
|
|
<span class="c"> * @class Connect</span>
|
|
<span class="c"> */</span>
|
|
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Connect</span> <span class="o">=</span>
|
|
<span class="o">{</span>
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Array of MSFT ActiveX ids for XMLHttpRequest.</span>
|
|
<span class="c"> * @property _msxml_progid</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type array</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_msxml_progid</span><span class="o">:[</span>
|
|
<span class="s1">'Microsoft.XMLHTTP'</span><span class="o">,</span>
|
|
<span class="s1">'MSXML2.XMLHTTP.3.0'</span><span class="o">,</span>
|
|
<span class="s1">'MSXML2.XMLHTTP'</span>
|
|
<span class="o">],</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Object literal of HTTP header(s)</span>
|
|
<span class="c"> * @property _http_header</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type object</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_http_headers</span><span class="o">:{},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Determines if HTTP headers are set.</span>
|
|
<span class="c"> * @property _has_http_headers</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_has_http_headers</span><span class="o">:</span><span class="kc">false</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Determines if a default header of</span>
|
|
<span class="c"> * Content-Type of 'application/x-www-form-urlencoded'</span>
|
|
<span class="c"> * will be added to any client HTTP headers sent for POST</span>
|
|
<span class="c"> * transactions.</span>
|
|
<span class="c"> * @property _use_default_post_header</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_use_default_post_header</span><span class="o">:</span><span class="kc">true</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description The default header used for POST transactions.</span>
|
|
<span class="c"> * @property _default_post_header</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_default_post_header</span><span class="o">:</span><span class="s1">'application/x-www-form-urlencoded; charset=UTF-8'</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description The default header used for transactions involving the</span>
|
|
<span class="c"> * use of HTML forms.</span>
|
|
<span class="c"> * @property _default_form_header</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_default_form_header</span><span class="o">:</span><span class="s1">'application/x-www-form-urlencoded'</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Determines if a default header of</span>
|
|
<span class="c"> * 'X-Requested-With: XMLHttpRequest'</span>
|
|
<span class="c"> * will be added to each transaction.</span>
|
|
<span class="c"> * @property _use_default_xhr_header</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_use_default_xhr_header</span><span class="o">:</span><span class="kc">true</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description The default header value for the label</span>
|
|
<span class="c"> * "X-Requested-With". This is sent with each</span>
|
|
<span class="c"> * transaction, by default, to identify the</span>
|
|
<span class="c"> * request as being made by YUI Connection Manager.</span>
|
|
<span class="c"> * @property _default_xhr_header</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_default_xhr_header</span><span class="o">:</span><span class="s1">'XMLHttpRequest'</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Determines if custom, default headers</span>
|
|
<span class="c"> * are set for each transaction.</span>
|
|
<span class="c"> * @property _has_default_header</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_has_default_headers</span><span class="o">:</span><span class="kc">true</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Determines if custom, default headers</span>
|
|
<span class="c"> * are set for each transaction.</span>
|
|
<span class="c"> * @property _has_default_header</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_default_headers</span><span class="o">:{},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Property modified by setForm() to determine if the data</span>
|
|
<span class="c"> * should be submitted as an HTML form.</span>
|
|
<span class="c"> * @property _isFormSubmit</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_isFormSubmit</span><span class="o">:</span><span class="kc">false</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Property modified by setForm() to determine if a file(s)</span>
|
|
<span class="c"> * upload is expected.</span>
|
|
<span class="c"> * @property _isFileUpload</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type boolean</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_isFileUpload</span><span class="o">:</span><span class="kc">false</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Property modified by setForm() to set a reference to the HTML</span>
|
|
<span class="c"> * form node if the desired action is file upload.</span>
|
|
<span class="c"> * @property _formNode</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type object</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_formNode</span><span class="o">:</span><span class="kc">null</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Property modified by setForm() to set the HTML form data</span>
|
|
<span class="c"> * for each transaction.</span>
|
|
<span class="c"> * @property _sFormData</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type string</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_sFormData</span><span class="o">:</span><span class="kc">null</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Collection of polling references to the polling mechanism in handleReadyState.</span>
|
|
<span class="c"> * @property _poll</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type object</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_poll</span><span class="o">:{},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Queue of timeout values for each transaction callback with a defined timeout value.</span>
|
|
<span class="c"> * @property _timeOut</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type object</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_timeOut</span><span class="o">:{},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description The polling frequency, in milliseconds, for HandleReadyState.</span>
|
|
<span class="c"> * when attempting to determine a transaction's XHR readyState.</span>
|
|
<span class="c"> * The default is 50 milliseconds.</span>
|
|
<span class="c"> * @property _polling_interval</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type int</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_polling_interval</span><span class="o">:</span><span class="m">50</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description A transaction counter that increments the transaction id for each transaction.</span>
|
|
<span class="c"> * @property _transaction_id</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type int</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_transaction_id</span><span class="o">:</span><span class="m">0</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Tracks the name-value pair of the "clicked" submit button if multiple submit</span>
|
|
<span class="c"> * buttons are present in an HTML form; and, if YAHOO.util.Event is available.</span>
|
|
<span class="c"> * @property _submitElementValue</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type string</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_submitElementValue</span><span class="o">:</span><span class="kc">null</span><span class="o">,</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Determines whether YAHOO.util.Event is available and returns true or false.</span>
|
|
<span class="c"> * If true, an event listener is bound at the document level to trap click events that</span>
|
|
<span class="c"> * resolve to a target type of "Submit". This listener will enable setForm() to determine</span>
|
|
<span class="c"> * the clicked "Submit" value in a multi-Submit button, HTML form.</span>
|
|
<span class="c"> * @property _hasSubmitListener</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_hasSubmitListener</span><span class="o">:(</span><span class="k">function</span><span class="o">()</span>
|
|
<span class="o">{</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">){</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">.</span><span class="nx">addListener</span><span class="o">(</span>
|
|
<span class="nb">document</span><span class="o">,</span>
|
|
<span class="s1">'click'</span><span class="o">,</span>
|
|
<span class="k">function</span><span class="o">(</span><span class="nx">e</span><span class="o">){</span>
|
|
<span class="k">var</span> <span class="nx">obj</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">.</span><span class="nx">getTarget</span><span class="o">(</span><span class="nx">e</span><span class="o">);</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">obj</span><span class="o">.</span><span class="nx">nodeName</span><span class="o">.</span><span class="nx">toLowerCase</span><span class="o">()</span> <span class="o">==</span> <span class="s1">'input'</span> <span class="o">&&</span> <span class="o">(</span><span class="nx">obj</span><span class="o">.</span><span class="nx">type</span> <span class="o">&&</span> <span class="nx">obj</span><span class="o">.</span><span class="nx">type</span><span class="o">.</span><span class="nx">toLowerCase</span><span class="o">()</span> <span class="o">==</span> <span class="s1">'submit'</span><span class="o">)){</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Connect</span><span class="o">.</span><span class="nx">_submitElementValue</span> <span class="o">=</span> <span class="nb">encodeURIComponent</span><span class="o">(</span><span class="nx">obj</span><span class="o">.</span><span class="nx">name</span><span class="o">)</span> <span class="o">+</span> <span class="s2">"="</span> <span class="o">+</span> <span class="nb">encodeURIComponent</span><span class="o">(</span><span class="nx">obj</span><span class="o">.</span><span class="nx">value</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">});</span>
|
|
<span class="k">return</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">return</span> <span class="kc">false</span><span class="o">;</span>
|
|
<span class="o">})(),</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Custom event that fires at the start of a transaction</span>
|
|
<span class="c"> * @property startEvent</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type CustomEvent</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">startEvent</span><span class="o">:</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">CustomEvent</span><span class="o">(</span><span class="s1">'start'</span><span class="o">),</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Custom event that fires when a transaction response has completed.</span>
|
|
<span class="c"> * @property completeEvent</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type CustomEvent</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">completeEvent</span><span class="o">:</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">CustomEvent</span><span class="o">(</span><span class="s1">'complete'</span><span class="o">),</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Custom event that fires when handleTransactionResponse() determines a</span>
|
|
<span class="c"> * response in the HTTP 2xx range.</span>
|
|
<span class="c"> * @property successEvent</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type CustomEvent</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">successEvent</span><span class="o">:</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">CustomEvent</span><span class="o">(</span><span class="s1">'success'</span><span class="o">),</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Custom event that fires when handleTransactionResponse() determines a</span>
|
|
<span class="c"> * response in the HTTP 4xx/5xx range.</span>
|
|
<span class="c"> * @property failureEvent</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type CustomEvent</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">failureEvent</span><span class="o">:</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">CustomEvent</span><span class="o">(</span><span class="s1">'failure'</span><span class="o">),</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Custom event that fires when handleTransactionResponse() determines a</span>
|
|
<span class="c"> * response in the HTTP 4xx/5xx range.</span>
|
|
<span class="c"> * @property failureEvent</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type CustomEvent</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">uploadEvent</span><span class="o">:</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">CustomEvent</span><span class="o">(</span><span class="s1">'upload'</span><span class="o">),</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Custom event that fires when a transaction is successfully aborted.</span>
|
|
<span class="c"> * @property abortEvent</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type CustomEvent</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">abortEvent</span><span class="o">:</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">CustomEvent</span><span class="o">(</span><span class="s1">'abort'</span><span class="o">),</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description A reference table that maps callback custom events members to its specific</span>
|
|
<span class="c"> * event name.</span>
|
|
<span class="c"> * @property _customEvents</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @type object</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">_customEvents</span><span class="o">:</span>
|
|
<span class="o">{</span>
|
|
<span class="nx">onStart</span><span class="o">:[</span><span class="s1">'startEvent'</span><span class="o">,</span> <span class="s1">'start'</span><span class="o">],</span>
|
|
<span class="nx">onComplete</span><span class="o">:[</span><span class="s1">'completeEvent'</span><span class="o">,</span> <span class="s1">'complete'</span><span class="o">],</span>
|
|
<span class="nx">onSuccess</span><span class="o">:[</span><span class="s1">'successEvent'</span><span class="o">,</span> <span class="s1">'success'</span><span class="o">],</span>
|
|
<span class="nx">onFailure</span><span class="o">:[</span><span class="s1">'failureEvent'</span><span class="o">,</span> <span class="s1">'failure'</span><span class="o">],</span>
|
|
<span class="nx">onUpload</span><span class="o">:[</span><span class="s1">'uploadEvent'</span><span class="o">,</span> <span class="s1">'upload'</span><span class="o">],</span>
|
|
<span class="nx">onAbort</span><span class="o">:[</span><span class="s1">'abortEvent'</span><span class="o">,</span> <span class="s1">'abort'</span><span class="o">]</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Member to add an ActiveX id to the existing xml_progid array.</span>
|
|
<span class="c"> * In the event(unlikely) a new ActiveX id is introduced, it can be added</span>
|
|
<span class="c"> * without internal code modifications.</span>
|
|
<span class="c"> * @method setProgId</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {string} id The ActiveX id to be added to initialize the XHR object.</span>
|
|
<span class="c"> * @return void</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">setProgId</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">id</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_msxml_progid</span><span class="o">.</span><span class="nx">unshift</span><span class="o">(</span><span class="nx">id</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'ActiveX Program Id '</span> <span class="o">+</span> <span class="nx">id</span> <span class="o">+</span> <span class="s1">' added to _msxml_progid.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Member to override the default POST header.</span>
|
|
<span class="c"> * @method setDefaultPostHeader</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {boolean} b Set and use default header - true or false .</span>
|
|
<span class="c"> * @return void</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">setDefaultPostHeader</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">b</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="k">typeof</span> <span class="nx">b</span> <span class="o">==</span> <span class="s1">'string'</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_default_post_header</span> <span class="o">=</span> <span class="nx">b</span><span class="o">;</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Default POST header set to '</span> <span class="o">+</span> <span class="nx">b</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span> <span class="k">if</span><span class="o">(</span><span class="k">typeof</span> <span class="nx">b</span> <span class="o">==</span> <span class="s1">'boolean'</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_use_default_post_header</span> <span class="o">=</span> <span class="nx">b</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Member to override the default transaction header..</span>
|
|
<span class="c"> * @method setDefaultXhrHeader</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {boolean} b Set and use default header - true or false .</span>
|
|
<span class="c"> * @return void</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">setDefaultXhrHeader</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">b</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="k">typeof</span> <span class="nx">b</span> <span class="o">==</span> <span class="s1">'string'</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_default_xhr_header</span> <span class="o">=</span> <span class="nx">b</span><span class="o">;</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Default XHR header set to '</span> <span class="o">+</span> <span class="nx">b</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_use_default_xhr_header</span> <span class="o">=</span> <span class="nx">b</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Member to modify the default polling interval.</span>
|
|
<span class="c"> * @method setPollingInterval</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {int} i The polling interval in milliseconds.</span>
|
|
<span class="c"> * @return void</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">setPollingInterval</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">i</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="k">typeof</span> <span class="nx">i</span> <span class="o">==</span> <span class="s1">'number'</span> <span class="o">&&</span> <span class="nb">isFinite</span><span class="o">(</span><span class="nx">i</span><span class="o">)){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_polling_interval</span> <span class="o">=</span> <span class="nx">i</span><span class="o">;</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Default polling interval set to '</span> <span class="o">+</span> <span class="nx">i</span> <span class="o">+</span><span class="s1">'ms'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Instantiates a XMLHttpRequest object and returns an object with two properties:</span>
|
|
<span class="c"> * the XMLHttpRequest instance and the transaction id.</span>
|
|
<span class="c"> * @method createXhrObject</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {int} transactionId Property containing the transaction id for this transaction.</span>
|
|
<span class="c"> * @return object</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">createXhrObject</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">transactionId</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">obj</span><span class="o">,</span><span class="nx">http</span><span class="o">;</span>
|
|
<span class="k">try</span>
|
|
<span class="o">{</span>
|
|
<span class="c">// Instantiates XMLHttpRequest in non-IE browsers and assigns to http.</span>
|
|
<span class="c"></span> <span class="nx">http</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">XMLHttpRequest</span><span class="o">();</span>
|
|
<span class="c">// Object literal with http and tId properties</span>
|
|
<span class="c"></span> <span class="nx">obj</span> <span class="o">=</span> <span class="o">{</span> <span class="nx">conn</span><span class="o">:</span><span class="nx">http</span><span class="o">,</span> <span class="nx">tId</span><span class="o">:</span><span class="nx">transactionId</span> <span class="o">};</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'XHR object created for transaction '</span> <span class="o">+</span> <span class="nx">transactionId</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">catch</span><span class="o">(</span><span class="nx">e</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">for</span><span class="o">(</span><span class="k">var</span> <span class="nx">i</span><span class="o">=</span><span class="m">0</span><span class="o">;</span> <span class="nx">i</span><span class="o"><</span><span class="k">this</span><span class="o">.</span><span class="nx">_msxml_progid</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="o">++</span><span class="nx">i</span><span class="o">){</span>
|
|
<span class="k">try</span>
|
|
<span class="o">{</span>
|
|
<span class="c">// Instantiates XMLHttpRequest for IE and assign to http</span>
|
|
<span class="c"></span> <span class="nx">http</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ActiveXObject</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_msxml_progid</span><span class="o">[</span><span class="nx">i</span><span class="o">]);</span>
|
|
<span class="c">// Object literal with conn and tId properties</span>
|
|
<span class="c"></span> <span class="nx">obj</span> <span class="o">=</span> <span class="o">{</span> <span class="nx">conn</span><span class="o">:</span><span class="nx">http</span><span class="o">,</span> <span class="nx">tId</span><span class="o">:</span><span class="nx">transactionId</span> <span class="o">};</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'ActiveX XHR object created for transaction '</span> <span class="o">+</span> <span class="nx">transactionId</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="k">break</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">catch</span><span class="o">(</span><span class="nx">e2</span><span class="o">){}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="nx">finally</span>
|
|
<span class="o">{</span>
|
|
<span class="k">return</span> <span class="nx">obj</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description This method is called by asyncRequest to create a</span>
|
|
<span class="c"> * valid connection object for the transaction. It also passes a</span>
|
|
<span class="c"> * transaction id and increments the transaction id counter.</span>
|
|
<span class="c"> * @method getConnectionObject</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @return {object}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">getConnectionObject</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">isFileUpload</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">o</span><span class="o">;</span>
|
|
<span class="k">var</span> <span class="nx">tId</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_transaction_id</span><span class="o">;</span>
|
|
|
|
<span class="k">try</span>
|
|
<span class="o">{</span>
|
|
<span class="k">if</span><span class="o">(!</span><span class="nx">isFileUpload</span><span class="o">){</span>
|
|
<span class="nx">o</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">createXhrObject</span><span class="o">(</span><span class="nx">tId</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">o</span> <span class="o">=</span> <span class="o">{};</span>
|
|
<span class="nx">o</span><span class="o">.</span><span class="nx">tId</span> <span class="o">=</span> <span class="nx">tId</span><span class="o">;</span>
|
|
<span class="nx">o</span><span class="o">.</span><span class="nx">isUpload</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_transaction_id</span><span class="o">++;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="k">catch</span><span class="o">(</span><span class="nx">e</span><span class="o">){}</span>
|
|
<span class="nx">finally</span>
|
|
<span class="o">{</span>
|
|
<span class="k">return</span> <span class="nx">o</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Method for initiating an asynchronous request via the XHR object.</span>
|
|
<span class="c"> * @method asyncRequest</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {string} method HTTP transaction method</span>
|
|
<span class="c"> * @param {string} uri Fully qualified path of resource</span>
|
|
<span class="c"> * @param {callback} callback User-defined callback function or object</span>
|
|
<span class="c"> * @param {string} postData POST body</span>
|
|
<span class="c"> * @return {object} Returns the connection object</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">asyncRequest</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">method</span><span class="o">,</span> <span class="nx">uri</span><span class="o">,</span> <span class="nx">callback</span><span class="o">,</span> <span class="nx">postData</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">o</span> <span class="o">=</span> <span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_isFileUpload</span><span class="o">)?</span><span class="k">this</span><span class="o">.</span><span class="nx">getConnectionObject</span><span class="o">(</span><span class="kc">true</span><span class="o">):</span><span class="k">this</span><span class="o">.</span><span class="nx">getConnectionObject</span><span class="o">();</span>
|
|
<span class="k">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">)?</span><span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">:</span><span class="kc">null</span><span class="o">;</span>
|
|
|
|
<span class="k">if</span><span class="o">(!</span><span class="nx">o</span><span class="o">){</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Unable to create connection object.'</span><span class="o">,</span> <span class="s1">'error'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
|
|
<span class="c">// Intialize any transaction-specific custom events, if provided.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">customevents</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">initCustomEvents</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_isFormSubmit</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_isFileUpload</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">uploadFile</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">,</span> <span class="nx">uri</span><span class="o">,</span> <span class="nx">postData</span><span class="o">);</span>
|
|
<span class="k">return</span> <span class="nx">o</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// If the specified HTTP method is GET, setForm() will return an</span>
|
|
<span class="c"></span> <span class="c">// encoded string that is concatenated to the uri to</span>
|
|
<span class="c"></span> <span class="c">// create a querystring.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="nx">method</span><span class="o">.</span><span class="nx">toUpperCase</span><span class="o">()</span> <span class="o">==</span> <span class="s1">'GET'</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_sFormData</span><span class="o">.</span><span class="nx">length</span> <span class="o">!==</span> <span class="m">0</span><span class="o">){</span>
|
|
<span class="c">// If the URI already contains a querystring, append an ampersand</span>
|
|
<span class="c"></span> <span class="c">// and then concatenate _sFormData to the URI.</span>
|
|
<span class="c"></span> <span class="nx">uri</span> <span class="o">+=</span> <span class="o">((</span><span class="nx">uri</span><span class="o">.</span><span class="nx">indexOf</span><span class="o">(</span><span class="s1">'?'</span><span class="o">)</span> <span class="o">==</span> <span class="o">-</span><span class="m">1</span><span class="o">)?</span><span class="s1">'?'</span><span class="o">:</span><span class="s1">'&'</span><span class="o">)</span> <span class="o">+</span> <span class="k">this</span><span class="o">.</span><span class="nx">_sFormData</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span> <span class="k">if</span><span class="o">(</span><span class="nx">method</span><span class="o">.</span><span class="nx">toUpperCase</span><span class="o">()</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="o">){</span>
|
|
<span class="c">// If POST data exist in addition to the HTML form data,</span>
|
|
<span class="c"></span> <span class="c">// it will be concatenated to the form data.</span>
|
|
<span class="c"></span> <span class="nx">postData</span> <span class="o">=</span> <span class="nx">postData</span><span class="o">?</span><span class="k">this</span><span class="o">.</span><span class="nx">_sFormData</span> <span class="o">+</span> <span class="s2">"&"</span> <span class="o">+</span> <span class="nx">postData</span><span class="o">:</span><span class="k">this</span><span class="o">.</span><span class="nx">_sFormData</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">method</span><span class="o">.</span><span class="nx">toUpperCase</span><span class="o">()</span> <span class="o">==</span> <span class="s1">'GET'</span> <span class="o">&&</span> <span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">cache</span> <span class="o">===</span> <span class="kc">false</span><span class="o">)){</span>
|
|
<span class="c">// If callback.cache is defined and set to false, a</span>
|
|
<span class="c"></span> <span class="c">// timestamp value will be added to the querystring.</span>
|
|
<span class="c"></span> <span class="nx">uri</span> <span class="o">+=</span> <span class="o">((</span><span class="nx">uri</span><span class="o">.</span><span class="nx">indexOf</span><span class="o">(</span><span class="s1">'?'</span><span class="o">)</span> <span class="o">==</span> <span class="o">-</span><span class="m">1</span><span class="o">)?</span><span class="s1">'?'</span><span class="o">:</span><span class="s1">'&'</span><span class="o">)</span> <span class="o">+</span> <span class="s2">"rnd="</span> <span class="o">+</span> <span class="k">new</span> <span class="nb">Date</span><span class="o">().</span><span class="nx">valueOf</span><span class="o">().</span><span class="nx">toString</span><span class="o">();</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">open</span><span class="o">(</span><span class="nx">method</span><span class="o">,</span> <span class="nx">uri</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
|
|
|
|
<span class="c">// Each transaction will automatically include a custom header of</span>
|
|
<span class="c"></span> <span class="c">// "X-Requested-With: XMLHttpRequest" to identify the request as</span>
|
|
<span class="c"></span> <span class="c">// having originated from Connection Manager.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_use_default_xhr_header</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(!</span><span class="k">this</span><span class="o">.</span><span class="nx">_default_headers</span><span class="o">[</span><span class="s1">'X-Requested-With'</span><span class="o">]){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">initHeader</span><span class="o">(</span><span class="s1">'X-Requested-With'</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_default_xhr_header</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Initialize transaction header X-Request-Header to XMLHttpRequest.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">//If the transaction method is POST and the POST header value is set to true</span>
|
|
<span class="c"></span> <span class="c">//or a custom value, initalize the Content-Type header to this value.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">((</span><span class="nx">method</span><span class="o">.</span><span class="nx">toUpperCase</span><span class="o">()</span> <span class="o">===</span> <span class="s1">'POST'</span> <span class="o">&&</span> <span class="k">this</span><span class="o">.</span><span class="nx">_use_default_post_header</span><span class="o">)</span> <span class="o">&&</span> <span class="k">this</span><span class="o">.</span><span class="nx">_isFormSubmit</span> <span class="o">===</span> <span class="kc">false</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">initHeader</span><span class="o">(</span><span class="s1">'Content-Type'</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_default_post_header</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Initialize header Content-Type to application/x-www-form-urlencoded; UTF-8 for POST transaction.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">//Initialize all default and custom HTTP headers,</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_has_default_headers</span> <span class="o">||</span> <span class="k">this</span><span class="o">.</span><span class="nx">_has_http_headers</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">setHeader</span><span class="o">(</span><span class="nx">o</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">handleReadyState</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">);</span>
|
|
<span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">send</span><span class="o">(</span><span class="nx">postData</span> <span class="o">||</span> <span class="s1">''</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Transaction '</span> <span class="o">+</span> <span class="nx">o</span><span class="o">.</span><span class="nx">tId</span> <span class="o">+</span> <span class="s1">' sent.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
|
|
|
|
<span class="c">// Reset the HTML form data and state properties as</span>
|
|
<span class="c"></span> <span class="c">// soon as the data are submitted.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_isFormSubmit</span> <span class="o">===</span> <span class="kc">true</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">resetFormState</span><span class="o">();</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Fire global custom event -- startEvent</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">startEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">startEvent</span><span class="o">){</span>
|
|
<span class="c">// Fire transaction custom event -- startEvent</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">startEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">return</span> <span class="nx">o</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description This method creates and subscribes custom events,</span>
|
|
<span class="c"> * specific to each transaction</span>
|
|
<span class="c"> * @method initCustomEvents</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {object} o The connection object</span>
|
|
<span class="c"> * @param {callback} callback The user-defined callback object</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">initCustomEvents</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">prop</span><span class="o">;</span>
|
|
<span class="c">// Enumerate through callback.customevents members and bind/subscribe</span>
|
|
<span class="c"></span> <span class="c">// events that match in the _customEvents table.</span>
|
|
<span class="c"></span> <span class="k">for</span><span class="o">(</span><span class="nx">prop</span> <span class="k">in</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">customevents</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_customEvents</span><span class="o">[</span><span class="nx">prop</span><span class="o">][</span><span class="m">0</span><span class="o">]){</span>
|
|
<span class="c">// Create the custom event</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">[</span><span class="k">this</span><span class="o">.</span><span class="nx">_customEvents</span><span class="o">[</span><span class="nx">prop</span><span class="o">][</span><span class="m">0</span><span class="o">]]</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">CustomEvent</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_customEvents</span><span class="o">[</span><span class="nx">prop</span><span class="o">][</span><span class="m">1</span><span class="o">],</span> <span class="o">(</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">)?</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">:</span><span class="kc">null</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Transaction-specific Custom Event '</span> <span class="o">+</span> <span class="nx">o</span><span class="o">[</span><span class="k">this</span><span class="o">.</span><span class="nx">_customEvents</span><span class="o">[</span><span class="nx">prop</span><span class="o">][</span><span class="m">1</span><span class="o">]]</span> <span class="o">+</span> <span class="s1">' created.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
|
|
<span class="c">// Subscribe the custom event</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">[</span><span class="k">this</span><span class="o">.</span><span class="nx">_customEvents</span><span class="o">[</span><span class="nx">prop</span><span class="o">][</span><span class="m">0</span><span class="o">]].</span><span class="nx">subscribe</span><span class="o">(</span><span class="nx">callback</span><span class="o">.</span><span class="nx">customevents</span><span class="o">[</span><span class="nx">prop</span><span class="o">]);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Transaction-specific Custom Event '</span> <span class="o">+</span> <span class="nx">o</span><span class="o">[</span><span class="k">this</span><span class="o">.</span><span class="nx">_customEvents</span><span class="o">[</span><span class="nx">prop</span><span class="o">][</span><span class="m">1</span><span class="o">]]</span> <span class="o">+</span> <span class="s1">' subscribed.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description This method serves as a timer that polls the XHR object's readyState</span>
|
|
<span class="c"> * property during a transaction, instead of binding a callback to the</span>
|
|
<span class="c"> * onreadystatechange event. Upon readyState 4, handleTransactionResponse</span>
|
|
<span class="c"> * will process the response, and the timer will be cleared.</span>
|
|
<span class="c"> * @method handleReadyState</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {object} o The connection object</span>
|
|
<span class="c"> * @param {callback} callback The user-defined callback object</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
|
|
<span class="nx">handleReadyState</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">)</span>
|
|
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">oConn</span> <span class="o">=</span> <span class="k">this</span><span class="o">;</span>
|
|
<span class="k">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">)?</span><span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">:</span><span class="kc">null</span><span class="o">;</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">timeout</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">]</span> <span class="o">=</span> <span class="nb">window</span><span class="o">.</span><span class="nx">setTimeout</span><span class="o">(</span><span class="k">function</span><span class="o">(){</span> <span class="nx">oConn</span><span class="o">.</span><span class="nx">abort</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span> <span class="o">},</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">timeout</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_poll</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">]</span> <span class="o">=</span> <span class="nb">window</span><span class="o">.</span><span class="nx">setInterval</span><span class="o">(</span>
|
|
<span class="k">function</span><span class="o">(){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">conn</span> <span class="o">&&</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">readyState</span> <span class="o">===</span> <span class="m">4</span><span class="o">){</span>
|
|
|
|
<span class="c">// Clear the polling interval for the transaction</span>
|
|
<span class="c"></span> <span class="c">// and remove the reference from _poll.</span>
|
|
<span class="c"></span> <span class="nb">window</span><span class="o">.</span><span class="nx">clearInterval</span><span class="o">(</span><span class="nx">oConn</span><span class="o">.</span><span class="nx">_poll</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">]);</span>
|
|
<span class="nx">delete</span> <span class="nx">oConn</span><span class="o">.</span><span class="nx">_poll</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">];</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">timeout</span><span class="o">){</span>
|
|
<span class="nb">window</span><span class="o">.</span><span class="nx">clearTimeout</span><span class="o">(</span><span class="nx">oConn</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">]);</span>
|
|
<span class="nx">delete</span> <span class="nx">oConn</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">];</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Fire global custom event -- completeEvent</span>
|
|
<span class="c"></span> <span class="nx">oConn</span><span class="o">.</span><span class="nx">completeEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">completeEvent</span><span class="o">){</span>
|
|
<span class="c">// Fire transaction custom event -- completeEvent</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">completeEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="nx">oConn</span><span class="o">.</span><span class="nx">handleTransactionResponse</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">,</span><span class="k">this</span><span class="o">.</span><span class="nx">_polling_interval</span><span class="o">);</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description This method attempts to interpret the server response and</span>
|
|
<span class="c"> * determine whether the transaction was successful, or if an error or</span>
|
|
<span class="c"> * exception was encountered.</span>
|
|
<span class="c"> * @method handleTransactionResponse</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {object} o The connection object</span>
|
|
<span class="c"> * @param {object} callback The user-defined callback object</span>
|
|
<span class="c"> * @param {boolean} isAbort Determines if the transaction was terminated via abort().</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">handleTransactionResponse</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">,</span> <span class="nx">isAbort</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">httpStatus</span><span class="o">,</span> <span class="nx">responseObject</span><span class="o">;</span>
|
|
<span class="k">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">)?</span><span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">:</span><span class="kc">null</span><span class="o">;</span>
|
|
|
|
<span class="k">try</span>
|
|
<span class="o">{</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">status</span> <span class="o">!==</span> <span class="kc">undefined</span> <span class="o">&&</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">status</span> <span class="o">!==</span> <span class="m">0</span><span class="o">){</span>
|
|
<span class="nx">httpStatus</span> <span class="o">=</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">status</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">httpStatus</span> <span class="o">=</span> <span class="m">13030</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="k">catch</span><span class="o">(</span><span class="nx">e</span><span class="o">){</span>
|
|
|
|
<span class="c">// 13030 is a custom code to indicate the condition -- in Mozilla/FF --</span>
|
|
<span class="c"></span> <span class="c">// when the XHR object's status and statusText properties are</span>
|
|
<span class="c"></span> <span class="c">// unavailable, and a query attempt throws an exception.</span>
|
|
<span class="c"></span> <span class="nx">httpStatus</span> <span class="o">=</span> <span class="m">13030</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">httpStatus</span> <span class="o">>=</span> <span class="m">200</span> <span class="o">&&</span> <span class="nx">httpStatus</span> <span class="o"><</span> <span class="m">300</span> <span class="o">||</span> <span class="nx">httpStatus</span> <span class="o">===</span> <span class="m">1223</span><span class="o">){</span>
|
|
<span class="nx">responseObject</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">createResponseObject</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">success</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(!</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">){</span>
|
|
<span class="nx">callback</span><span class="o">.</span><span class="nx">success</span><span class="o">(</span><span class="nx">responseObject</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Success callback. HTTP code is '</span> <span class="o">+</span> <span class="nx">httpStatus</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="c">// If a scope property is defined, the callback will be fired from</span>
|
|
<span class="c"></span> <span class="c">// the context of the object.</span>
|
|
<span class="c"></span> <span class="nx">callback</span><span class="o">.</span><span class="nx">success</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">,</span> <span class="o">[</span><span class="nx">responseObject</span><span class="o">]);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Success callback with scope. HTTP code is '</span> <span class="o">+</span> <span class="nx">httpStatus</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Fire global custom event -- successEvent</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">successEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">responseObject</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">successEvent</span><span class="o">){</span>
|
|
<span class="c">// Fire transaction custom event -- successEvent</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">successEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">responseObject</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">switch</span><span class="o">(</span><span class="nx">httpStatus</span><span class="o">){</span>
|
|
<span class="c">// The following cases are wininet.dll error codes that may be encountered.</span>
|
|
<span class="c"></span> <span class="nx">case</span> <span class="m">12002</span><span class="o">:</span> <span class="c">// Server timeout</span>
|
|
<span class="c"></span> <span class="nx">case</span> <span class="m">12029</span><span class="o">:</span> <span class="c">// 12029 to 12031 correspond to dropped connections.</span>
|
|
<span class="c"></span> <span class="nx">case</span> <span class="m">12030</span><span class="o">:</span>
|
|
<span class="nx">case</span> <span class="m">12031</span><span class="o">:</span>
|
|
<span class="nx">case</span> <span class="m">12152</span><span class="o">:</span> <span class="c">// Connection closed by server.</span>
|
|
<span class="c"></span> <span class="nx">case</span> <span class="m">13030</span><span class="o">:</span> <span class="c">// See above comments for variable status.</span>
|
|
<span class="c"></span> <span class="nx">responseObject</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">createExceptionObject</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">,</span> <span class="nx">args</span><span class="o">,</span> <span class="o">(</span><span class="nx">isAbort</span><span class="o">?</span><span class="nx">isAbort</span><span class="o">:</span><span class="kc">false</span><span class="o">));</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">failure</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(!</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">){</span>
|
|
<span class="nx">callback</span><span class="o">.</span><span class="nx">failure</span><span class="o">(</span><span class="nx">responseObject</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Failure callback. Exception detected. Status code is '</span> <span class="o">+</span> <span class="nx">httpStatus</span><span class="o">,</span> <span class="s1">'warn'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">callback</span><span class="o">.</span><span class="nx">failure</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">,</span> <span class="o">[</span><span class="nx">responseObject</span><span class="o">]);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Failure callback with scope. Exception detected. Status code is '</span> <span class="o">+</span> <span class="nx">httpStatus</span><span class="o">,</span> <span class="s1">'warn'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">break</span><span class="o">;</span>
|
|
<span class="nx">default</span><span class="o">:</span>
|
|
<span class="nx">responseObject</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">createResponseObject</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">failure</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(!</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">){</span>
|
|
<span class="nx">callback</span><span class="o">.</span><span class="nx">failure</span><span class="o">(</span><span class="nx">responseObject</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Failure callback. HTTP status code is '</span> <span class="o">+</span> <span class="nx">httpStatus</span><span class="o">,</span> <span class="s1">'warn'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">callback</span><span class="o">.</span><span class="nx">failure</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">,</span> <span class="o">[</span><span class="nx">responseObject</span><span class="o">]);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Failure callback with scope. HTTP status code is '</span> <span class="o">+</span> <span class="nx">httpStatus</span><span class="o">,</span> <span class="s1">'warn'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Fire global custom event -- failureEvent</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">failureEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">responseObject</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">failureEvent</span><span class="o">){</span>
|
|
<span class="c">// Fire transaction custom event -- failureEvent</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">failureEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">responseObject</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">releaseObject</span><span class="o">(</span><span class="nx">o</span><span class="o">);</span>
|
|
<span class="nx">responseObject</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description This method evaluates the server response, creates and returns the results via</span>
|
|
<span class="c"> * its properties. Success and failure cases will differ in the response</span>
|
|
<span class="c"> * object's property values.</span>
|
|
<span class="c"> * @method createResponseObject</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {object} o The connection object</span>
|
|
<span class="c"> * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback</span>
|
|
<span class="c"> * @return {object}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">createResponseObject</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callbackArg</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">obj</span> <span class="o">=</span> <span class="o">{};</span>
|
|
<span class="k">var</span> <span class="nx">headerObj</span> <span class="o">=</span> <span class="o">{};</span>
|
|
|
|
<span class="k">try</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">headerStr</span> <span class="o">=</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">getAllResponseHeaders</span><span class="o">();</span>
|
|
<span class="k">var</span> <span class="nx">header</span> <span class="o">=</span> <span class="nx">headerStr</span><span class="o">.</span><span class="nx">split</span><span class="o">(</span><span class="s1">'\n'</span><span class="o">);</span>
|
|
<span class="k">for</span><span class="o">(</span><span class="k">var</span> <span class="nx">i</span><span class="o">=</span><span class="m">0</span><span class="o">;</span> <span class="nx">i</span><span class="o"><</span><span class="nx">header</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="nx">i</span><span class="o">++){</span>
|
|
<span class="k">var</span> <span class="nx">delimitPos</span> <span class="o">=</span> <span class="nx">header</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">indexOf</span><span class="o">(</span><span class="s1">':'</span><span class="o">);</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">delimitPos</span> <span class="o">!=</span> <span class="o">-</span><span class="m">1</span><span class="o">){</span>
|
|
<span class="nx">headerObj</span><span class="o">[</span><span class="nx">header</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">substring</span><span class="o">(</span><span class="m">0</span><span class="o">,</span><span class="nx">delimitPos</span><span class="o">)]</span> <span class="o">=</span> <span class="nx">header</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">substring</span><span class="o">(</span><span class="nx">delimitPos</span><span class="o">+</span><span class="m">2</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="k">catch</span><span class="o">(</span><span class="nx">e</span><span class="o">){}</span>
|
|
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">tId</span> <span class="o">=</span> <span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">;</span>
|
|
<span class="c">// Normalize IE's response to HTTP 204 when Win error 1223.</span>
|
|
<span class="c"></span> <span class="nx">obj</span><span class="o">.</span><span class="nx">status</span> <span class="o">=</span> <span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">status</span> <span class="o">==</span> <span class="m">1223</span><span class="o">)?</span><span class="m">204</span><span class="o">:</span><span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">status</span><span class="o">;</span>
|
|
<span class="c">// Normalize IE's statusText to "No Content" instead of "Unknown".</span>
|
|
<span class="c"></span> <span class="nx">obj</span><span class="o">.</span><span class="nx">statusText</span> <span class="o">=</span> <span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">status</span> <span class="o">==</span> <span class="m">1223</span><span class="o">)?</span><span class="s2">"No Content"</span><span class="o">:</span><span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">statusText</span><span class="o">;</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">getResponseHeader</span> <span class="o">=</span> <span class="nx">headerObj</span><span class="o">;</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">getAllResponseHeaders</span> <span class="o">=</span> <span class="nx">headerStr</span><span class="o">;</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">responseText</span> <span class="o">=</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">responseText</span><span class="o">;</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">responseXML</span> <span class="o">=</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">responseXML</span><span class="o">;</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">callbackArg</span><span class="o">){</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">argument</span> <span class="o">=</span> <span class="nx">callbackArg</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">return</span> <span class="nx">obj</span><span class="o">;</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description If a transaction cannot be completed due to dropped or closed connections,</span>
|
|
<span class="c"> * there may be not be enough information to build a full response object.</span>
|
|
<span class="c"> * The failure callback will be fired and this specific condition can be identified</span>
|
|
<span class="c"> * by a status property value of 0.</span>
|
|
<span class="c"> *</span>
|
|
<span class="c"> * If an abort was successful, the status property will report a value of -1.</span>
|
|
<span class="c"> *</span>
|
|
<span class="c"> * @method createExceptionObject</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {int} tId The Transaction Id</span>
|
|
<span class="c"> * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback</span>
|
|
<span class="c"> * @param {boolean} isAbort Determines if the exception case is caused by a transaction abort</span>
|
|
<span class="c"> * @return {object}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">createExceptionObject</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">tId</span><span class="o">,</span> <span class="nx">callbackArg</span><span class="o">,</span> <span class="nx">isAbort</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">COMM_CODE</span> <span class="o">=</span> <span class="m">0</span><span class="o">;</span>
|
|
<span class="k">var</span> <span class="nx">COMM_ERROR</span> <span class="o">=</span> <span class="s1">'communication failure'</span><span class="o">;</span>
|
|
<span class="k">var</span> <span class="nx">ABORT_CODE</span> <span class="o">=</span> <span class="o">-</span><span class="m">1</span><span class="o">;</span>
|
|
<span class="k">var</span> <span class="nx">ABORT_ERROR</span> <span class="o">=</span> <span class="s1">'transaction aborted'</span><span class="o">;</span>
|
|
|
|
<span class="k">var</span> <span class="nx">obj</span> <span class="o">=</span> <span class="o">{};</span>
|
|
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">tId</span> <span class="o">=</span> <span class="nx">tId</span><span class="o">;</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">isAbort</span><span class="o">){</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">status</span> <span class="o">=</span> <span class="nx">ABORT_CODE</span><span class="o">;</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">statusText</span> <span class="o">=</span> <span class="nx">ABORT_ERROR</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">status</span> <span class="o">=</span> <span class="nx">COMM_CODE</span><span class="o">;</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">statusText</span> <span class="o">=</span> <span class="nx">COMM_ERROR</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">callbackArg</span><span class="o">){</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">argument</span> <span class="o">=</span> <span class="nx">callbackArg</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">return</span> <span class="nx">obj</span><span class="o">;</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Method that initializes the custom HTTP headers for the each transaction.</span>
|
|
<span class="c"> * @method initHeader</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {string} label The HTTP header label</span>
|
|
<span class="c"> * @param {string} value The HTTP header value</span>
|
|
<span class="c"> * @param {string} isDefault Determines if the specific header is a default header</span>
|
|
<span class="c"> * automatically sent with each transaction.</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">initHeader</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="k">label</span><span class="o">,</span> <span class="nx">value</span><span class="o">,</span> <span class="nx">isDefault</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">headerObj</span> <span class="o">=</span> <span class="o">(</span><span class="nx">isDefault</span><span class="o">)?</span><span class="k">this</span><span class="o">.</span><span class="nx">_default_headers</span><span class="o">:</span><span class="k">this</span><span class="o">.</span><span class="nx">_http_headers</span><span class="o">;</span>
|
|
<span class="nx">headerObj</span><span class="o">[</span><span class="k">label</span><span class="o">]</span> <span class="o">=</span> <span class="nx">value</span><span class="o">;</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">isDefault</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_has_default_headers</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_has_http_headers</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Accessor that sets the HTTP headers for each transaction.</span>
|
|
<span class="c"> * @method setHeader</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {object} o The connection object for the transaction.</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">setHeader</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">o</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">prop</span><span class="o">;</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_has_default_headers</span><span class="o">){</span>
|
|
<span class="k">for</span><span class="o">(</span><span class="nx">prop</span> <span class="k">in</span> <span class="k">this</span><span class="o">.</span><span class="nx">_default_headers</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">hasOwnProperty</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_default_headers</span><span class="o">,</span> <span class="nx">prop</span><span class="o">)){</span>
|
|
<span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">setRequestHeader</span><span class="o">(</span><span class="nx">prop</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_default_headers</span><span class="o">[</span><span class="nx">prop</span><span class="o">]);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Default HTTP header '</span> <span class="o">+</span> <span class="nx">prop</span> <span class="o">+</span> <span class="s1">' set with value of '</span> <span class="o">+</span> <span class="k">this</span><span class="o">.</span><span class="nx">_default_headers</span><span class="o">[</span><span class="nx">prop</span><span class="o">],</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_has_http_headers</span><span class="o">){</span>
|
|
<span class="k">for</span><span class="o">(</span><span class="nx">prop</span> <span class="k">in</span> <span class="k">this</span><span class="o">.</span><span class="nx">_http_headers</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">hasOwnProperty</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_http_headers</span><span class="o">,</span> <span class="nx">prop</span><span class="o">)){</span>
|
|
<span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">setRequestHeader</span><span class="o">(</span><span class="nx">prop</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_http_headers</span><span class="o">[</span><span class="nx">prop</span><span class="o">]);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'HTTP header '</span> <span class="o">+</span> <span class="nx">prop</span> <span class="o">+</span> <span class="s1">' set with value of '</span> <span class="o">+</span> <span class="k">this</span><span class="o">.</span><span class="nx">_http_headers</span><span class="o">[</span><span class="nx">prop</span><span class="o">],</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="nx">delete</span> <span class="k">this</span><span class="o">.</span><span class="nx">_http_headers</span><span class="o">;</span>
|
|
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_http_headers</span> <span class="o">=</span> <span class="o">{};</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_has_http_headers</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Resets the default HTTP headers object</span>
|
|
<span class="c"> * @method resetDefaultHeaders</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">resetDefaultHeaders</span><span class="o">:</span><span class="k">function</span><span class="o">(){</span>
|
|
<span class="nx">delete</span> <span class="k">this</span><span class="o">.</span><span class="nx">_default_headers</span><span class="o">;</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_default_headers</span> <span class="o">=</span> <span class="o">{};</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_has_default_headers</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description This method assembles the form label and value pairs and</span>
|
|
<span class="c"> * constructs an encoded string.</span>
|
|
<span class="c"> * asyncRequest() will automatically initialize the transaction with a</span>
|
|
<span class="c"> * a HTTP header Content-Type of application/x-www-form-urlencoded.</span>
|
|
<span class="c"> * @method setForm</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {string || object} form id or name attribute, or form object.</span>
|
|
<span class="c"> * @param {boolean} optional enable file upload.</span>
|
|
<span class="c"> * @param {boolean} optional enable file upload over SSL in IE only.</span>
|
|
<span class="c"> * @return {string} string of the HTML form field name and value pairs..</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">setForm</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">formId</span><span class="o">,</span> <span class="nx">isUpload</span><span class="o">,</span> <span class="nx">secureUri</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">oForm</span><span class="o">,</span> <span class="nx">oElement</span><span class="o">,</span> <span class="nx">oName</span><span class="o">,</span> <span class="nx">oValue</span><span class="o">,</span> <span class="nx">oDisabled</span><span class="o">,</span>
|
|
<span class="nx">hasSubmit</span> <span class="o">=</span> <span class="kc">false</span><span class="o">,</span>
|
|
<span class="nx">data</span> <span class="o">=</span> <span class="o">[],</span> <span class="nx">item</span> <span class="o">=</span> <span class="m">0</span><span class="o">,</span>
|
|
<span class="nx">i</span><span class="o">,</span><span class="nx">len</span><span class="o">,</span><span class="nx">j</span><span class="o">,</span><span class="nx">jlen</span><span class="o">,</span><span class="nx">opt</span><span class="o">;</span>
|
|
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">resetFormState</span><span class="o">();</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="k">typeof</span> <span class="nx">formId</span> <span class="o">==</span> <span class="s1">'string'</span><span class="o">){</span>
|
|
<span class="c">// Determine if the argument is a form id or a form name.</span>
|
|
<span class="c"></span> <span class="c">// Note form name usage is deprecated by supported</span>
|
|
<span class="c"></span> <span class="c">// here for legacy reasons.</span>
|
|
<span class="c"></span> <span class="nx">oForm</span> <span class="o">=</span> <span class="o">(</span><span class="nb">document</span><span class="o">.</span><span class="nx">getElementById</span><span class="o">(</span><span class="nx">formId</span><span class="o">)</span> <span class="o">||</span> <span class="nb">document</span><span class="o">.</span><span class="nx">forms</span><span class="o">[</span><span class="nx">formId</span><span class="o">]);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span> <span class="k">if</span><span class="o">(</span><span class="k">typeof</span> <span class="nx">formId</span> <span class="o">==</span> <span class="s1">'object'</span><span class="o">){</span>
|
|
<span class="c">// Treat argument as an HTML form object.</span>
|
|
<span class="c"></span> <span class="nx">oForm</span> <span class="o">=</span> <span class="nx">formId</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Unable to create form object '</span> <span class="o">+</span> <span class="nx">formId</span><span class="o">,</span> <span class="s1">'warn'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="k">return</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// If the isUpload argument is true, setForm will call createFrame to initialize</span>
|
|
<span class="c"></span> <span class="c">// an iframe as the form target.</span>
|
|
<span class="c"></span> <span class="c">//</span>
|
|
<span class="c"></span> <span class="c">// The argument secureURI is also required by IE in SSL environments</span>
|
|
<span class="c"></span> <span class="c">// where the secureURI string is a fully qualified HTTP path, used to set the source</span>
|
|
<span class="c"></span> <span class="c">// of the iframe, to a stub resource in the same domain.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="nx">isUpload</span><span class="o">){</span>
|
|
|
|
<span class="c">// Create iframe in preparation for file upload.</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">createFrame</span><span class="o">(</span><span class="nx">secureUri</span><span class="o">?</span><span class="nx">secureUri</span><span class="o">:</span><span class="kc">null</span><span class="o">);</span>
|
|
|
|
<span class="c">// Set form reference and file upload properties to true.</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">_isFormSubmit</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_isFileUpload</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span> <span class="o">=</span> <span class="nx">oForm</span><span class="o">;</span>
|
|
|
|
<span class="k">return</span><span class="o">;</span>
|
|
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Iterate over the form elements collection to construct the</span>
|
|
<span class="c"></span> <span class="c">// label-value pairs.</span>
|
|
<span class="c"></span> <span class="k">for</span> <span class="o">(</span><span class="nx">i</span><span class="o">=</span><span class="m">0</span><span class="o">,</span><span class="nx">len</span><span class="o">=</span><span class="nx">oForm</span><span class="o">.</span><span class="nx">elements</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="nx">i</span><span class="o"><</span><span class="nx">len</span><span class="o">;</span> <span class="o">++</span><span class="nx">i</span><span class="o">){</span>
|
|
<span class="nx">oElement</span> <span class="o">=</span> <span class="nx">oForm</span><span class="o">.</span><span class="nx">elements</span><span class="o">[</span><span class="nx">i</span><span class="o">];</span>
|
|
<span class="nx">oDisabled</span> <span class="o">=</span> <span class="nx">oElement</span><span class="o">.</span><span class="nx">disabled</span><span class="o">;</span>
|
|
<span class="nx">oName</span> <span class="o">=</span> <span class="nx">oElement</span><span class="o">.</span><span class="nx">name</span><span class="o">;</span>
|
|
|
|
<span class="c">// Do not submit fields that are disabled or</span>
|
|
<span class="c"></span> <span class="c">// do not have a name attribute value.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(!</span><span class="nx">oDisabled</span> <span class="o">&&</span> <span class="nx">oName</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="nx">oName</span> <span class="o">=</span> <span class="nb">encodeURIComponent</span><span class="o">(</span><span class="nx">oName</span><span class="o">)+</span><span class="s1">'='</span><span class="o">;</span>
|
|
<span class="nx">oValue</span> <span class="o">=</span> <span class="nb">encodeURIComponent</span><span class="o">(</span><span class="nx">oElement</span><span class="o">.</span><span class="nx">value</span><span class="o">);</span>
|
|
|
|
<span class="nx">switch</span><span class="o">(</span><span class="nx">oElement</span><span class="o">.</span><span class="nx">type</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="c">// Safari, Opera, FF all default opt.value from .text if</span>
|
|
<span class="c"></span> <span class="c">// value attribute not specified in markup</span>
|
|
<span class="c"></span> <span class="nx">case</span> <span class="s1">'select-one'</span><span class="o">:</span>
|
|
<span class="k">if</span> <span class="o">(</span><span class="nx">oElement</span><span class="o">.</span><span class="nx">selectedIndex</span> <span class="o">></span> <span class="o">-</span><span class="m">1</span><span class="o">)</span> <span class="o">{</span>
|
|
<span class="nx">opt</span> <span class="o">=</span> <span class="nx">oElement</span><span class="o">.</span><span class="nx">options</span><span class="o">[</span><span class="nx">oElement</span><span class="o">.</span><span class="nx">selectedIndex</span><span class="o">];</span>
|
|
<span class="nx">data</span><span class="o">[</span><span class="nx">item</span><span class="o">++]</span> <span class="o">=</span> <span class="nx">oName</span> <span class="o">+</span> <span class="nb">encodeURIComponent</span><span class="o">(</span>
|
|
<span class="o">(</span><span class="nx">opt</span><span class="o">.</span><span class="nx">attributes</span><span class="o">.</span><span class="nx">value</span> <span class="o">&&</span> <span class="nx">opt</span><span class="o">.</span><span class="nx">attributes</span><span class="o">.</span><span class="nx">value</span><span class="o">.</span><span class="nx">specified</span><span class="o">)</span> <span class="o">?</span> <span class="nx">opt</span><span class="o">.</span><span class="nx">value</span> <span class="o">:</span> <span class="nx">opt</span><span class="o">.</span><span class="nx">text</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">break</span><span class="o">;</span>
|
|
<span class="nx">case</span> <span class="s1">'select-multiple'</span><span class="o">:</span>
|
|
<span class="k">if</span> <span class="o">(</span><span class="nx">oElement</span><span class="o">.</span><span class="nx">selectedIndex</span> <span class="o">></span> <span class="o">-</span><span class="m">1</span><span class="o">)</span> <span class="o">{</span>
|
|
<span class="k">for</span><span class="o">(</span><span class="nx">j</span><span class="o">=</span><span class="nx">oElement</span><span class="o">.</span><span class="nx">selectedIndex</span><span class="o">,</span> <span class="nx">jlen</span><span class="o">=</span><span class="nx">oElement</span><span class="o">.</span><span class="nx">options</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="nx">j</span><span class="o"><</span><span class="nx">jlen</span><span class="o">;</span> <span class="o">++</span><span class="nx">j</span><span class="o">){</span>
|
|
<span class="nx">opt</span> <span class="o">=</span> <span class="nx">oElement</span><span class="o">.</span><span class="nx">options</span><span class="o">[</span><span class="nx">j</span><span class="o">];</span>
|
|
<span class="k">if</span> <span class="o">(</span><span class="nx">opt</span><span class="o">.</span><span class="nx">selected</span><span class="o">)</span> <span class="o">{</span>
|
|
<span class="nx">data</span><span class="o">[</span><span class="nx">item</span><span class="o">++]</span> <span class="o">=</span> <span class="nx">oName</span> <span class="o">+</span> <span class="nb">encodeURIComponent</span><span class="o">(</span>
|
|
<span class="o">(</span><span class="nx">opt</span><span class="o">.</span><span class="nx">attributes</span><span class="o">.</span><span class="nx">value</span> <span class="o">&&</span> <span class="nx">opt</span><span class="o">.</span><span class="nx">attributes</span><span class="o">.</span><span class="nx">value</span><span class="o">.</span><span class="nx">specified</span><span class="o">)</span> <span class="o">?</span> <span class="nx">opt</span><span class="o">.</span><span class="nx">value</span> <span class="o">:</span> <span class="nx">opt</span><span class="o">.</span><span class="nx">text</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="k">break</span><span class="o">;</span>
|
|
<span class="nx">case</span> <span class="s1">'radio'</span><span class="o">:</span>
|
|
<span class="nx">case</span> <span class="s1">'checkbox'</span><span class="o">:</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">oElement</span><span class="o">.</span><span class="nx">checked</span><span class="o">){</span>
|
|
<span class="nx">data</span><span class="o">[</span><span class="nx">item</span><span class="o">++]</span> <span class="o">=</span> <span class="nx">oName</span> <span class="o">+</span> <span class="nx">oValue</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">break</span><span class="o">;</span>
|
|
<span class="nx">case</span> <span class="s1">'file'</span><span class="o">:</span>
|
|
<span class="c">// stub case as XMLHttpRequest will only send the file path as a string.</span>
|
|
<span class="c"></span> <span class="nx">case</span> <span class="kc">undefined</span><span class="o">:</span>
|
|
<span class="c">// stub case for fieldset element which returns undefined.</span>
|
|
<span class="c"></span> <span class="nx">case</span> <span class="s1">'reset'</span><span class="o">:</span>
|
|
<span class="c">// stub case for input type reset button.</span>
|
|
<span class="c"></span> <span class="nx">case</span> <span class="s1">'button'</span><span class="o">:</span>
|
|
<span class="c">// stub case for input type button elements.</span>
|
|
<span class="c"></span> <span class="k">break</span><span class="o">;</span>
|
|
<span class="nx">case</span> <span class="s1">'submit'</span><span class="o">:</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">hasSubmit</span> <span class="o">===</span> <span class="kc">false</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_hasSubmitListener</span> <span class="o">&&</span> <span class="k">this</span><span class="o">.</span><span class="nx">_submitElementValue</span><span class="o">){</span>
|
|
<span class="nx">data</span><span class="o">[</span><span class="nx">item</span><span class="o">++]</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_submitElementValue</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">data</span><span class="o">[</span><span class="nx">item</span><span class="o">++]</span> <span class="o">=</span> <span class="nx">oName</span> <span class="o">+</span> <span class="nx">oValue</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="nx">hasSubmit</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">break</span><span class="o">;</span>
|
|
<span class="nx">default</span><span class="o">:</span>
|
|
<span class="nx">data</span><span class="o">[</span><span class="nx">item</span><span class="o">++]</span> <span class="o">=</span> <span class="nx">oName</span> <span class="o">+</span> <span class="nx">oValue</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_isFormSubmit</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_sFormData</span> <span class="o">=</span> <span class="nx">data</span><span class="o">.</span><span class="nx">join</span><span class="o">(</span><span class="s1">'&'</span><span class="o">);</span>
|
|
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Form initialized for transaction. HTML form POST message is: '</span> <span class="o">+</span> <span class="k">this</span><span class="o">.</span><span class="nx">_sFormData</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">initHeader</span><span class="o">(</span><span class="s1">'Content-Type'</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_default_form_header</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Initialize header Content-Type to application/x-www-form-urlencoded for setForm() transaction.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
|
|
<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">_sFormData</span><span class="o">;</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Resets HTML form properties when an HTML form or HTML form</span>
|
|
<span class="c"> * with file upload transaction is sent.</span>
|
|
<span class="c"> * @method resetFormState</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">resetFormState</span><span class="o">:</span><span class="k">function</span><span class="o">(){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_isFormSubmit</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_isFileUpload</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_sFormData</span> <span class="o">=</span> <span class="s2">""</span><span class="o">;</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Creates an iframe to be used for form file uploads. It is remove from the</span>
|
|
<span class="c"> * document upon completion of the upload transaction.</span>
|
|
<span class="c"> * @method createFrame</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {string} optional qualified path of iframe resource for SSL in IE.</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">createFrame</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">secureUri</span><span class="o">){</span>
|
|
|
|
<span class="c">// IE does not allow the setting of id and name attributes as object</span>
|
|
<span class="c"></span> <span class="c">// properties via createElement(). A different iframe creation</span>
|
|
<span class="c"></span> <span class="c">// pattern is required for IE.</span>
|
|
<span class="c"></span> <span class="k">var</span> <span class="nx">frameId</span> <span class="o">=</span> <span class="s1">'yuiIO'</span> <span class="o">+</span> <span class="k">this</span><span class="o">.</span><span class="nx">_transaction_id</span><span class="o">;</span>
|
|
<span class="k">var</span> <span class="nx">io</span><span class="o">;</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">env</span><span class="o">.</span><span class="nx">ua</span><span class="o">.</span><span class="nx">ie</span><span class="o">){</span>
|
|
<span class="nx">io</span> <span class="o">=</span> <span class="nb">document</span><span class="o">.</span><span class="nx">createElement</span><span class="o">(</span><span class="s1">'<iframe id="'</span> <span class="o">+</span> <span class="nx">frameId</span> <span class="o">+</span> <span class="s1">'" name="'</span> <span class="o">+</span> <span class="nx">frameId</span> <span class="o">+</span> <span class="s1">'" />'</span><span class="o">);</span>
|
|
|
|
<span class="c">// IE will throw a security exception in an SSL environment if the</span>
|
|
<span class="c"></span> <span class="c">// iframe source is undefined.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="k">typeof</span> <span class="nx">secureUri</span> <span class="o">==</span> <span class="s1">'boolean'</span><span class="o">){</span>
|
|
<span class="nx">io</span><span class="o">.</span><span class="nx">src</span> <span class="o">=</span> <span class="s1">'javascript:false'</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">io</span> <span class="o">=</span> <span class="nb">document</span><span class="o">.</span><span class="nx">createElement</span><span class="o">(</span><span class="s1">'iframe'</span><span class="o">);</span>
|
|
<span class="nx">io</span><span class="o">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nx">frameId</span><span class="o">;</span>
|
|
<span class="nx">io</span><span class="o">.</span><span class="nx">name</span> <span class="o">=</span> <span class="nx">frameId</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="nx">io</span><span class="o">.</span><span class="nx">style</span><span class="o">.</span><span class="nx">position</span> <span class="o">=</span> <span class="s1">'absolute'</span><span class="o">;</span>
|
|
<span class="nx">io</span><span class="o">.</span><span class="nx">style</span><span class="o">.</span><span class="nx">top</span> <span class="o">=</span> <span class="s1">'-1000px'</span><span class="o">;</span>
|
|
<span class="nx">io</span><span class="o">.</span><span class="nx">style</span><span class="o">.</span><span class="nx">left</span> <span class="o">=</span> <span class="s1">'-1000px'</span><span class="o">;</span>
|
|
|
|
<span class="nb">document</span><span class="o">.</span><span class="nx">body</span><span class="o">.</span><span class="nx">appendChild</span><span class="o">(</span><span class="nx">io</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'File upload iframe created. Id is:'</span> <span class="o">+</span> <span class="nx">frameId</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Parses the POST data and creates hidden form elements</span>
|
|
<span class="c"> * for each key-value, and appends them to the HTML form object.</span>
|
|
<span class="c"> * @method appendPostData</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {string} postData The HTTP POST data</span>
|
|
<span class="c"> * @return {array} formElements Collection of hidden fields.</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">appendPostData</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">postData</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">formElements</span> <span class="o">=</span> <span class="o">[],</span>
|
|
<span class="nx">postMessage</span> <span class="o">=</span> <span class="nx">postData</span><span class="o">.</span><span class="nx">split</span><span class="o">(</span><span class="s1">'&'</span><span class="o">),</span>
|
|
<span class="nx">i</span><span class="o">,</span> <span class="nx">delimitPos</span><span class="o">;</span>
|
|
<span class="k">for</span><span class="o">(</span><span class="nx">i</span><span class="o">=</span><span class="m">0</span><span class="o">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">postMessage</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="nx">i</span><span class="o">++){</span>
|
|
<span class="nx">delimitPos</span> <span class="o">=</span> <span class="nx">postMessage</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">indexOf</span><span class="o">(</span><span class="s1">'='</span><span class="o">);</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">delimitPos</span> <span class="o">!=</span> <span class="o">-</span><span class="m">1</span><span class="o">){</span>
|
|
<span class="nx">formElements</span><span class="o">[</span><span class="nx">i</span><span class="o">]</span> <span class="o">=</span> <span class="nb">document</span><span class="o">.</span><span class="nx">createElement</span><span class="o">(</span><span class="s1">'input'</span><span class="o">);</span>
|
|
<span class="nx">formElements</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">type</span> <span class="o">=</span> <span class="s1">'hidden'</span><span class="o">;</span>
|
|
<span class="nx">formElements</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">name</span> <span class="o">=</span> <span class="nb">decodeURIComponent</span><span class="o">(</span><span class="nx">postMessage</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">substring</span><span class="o">(</span><span class="m">0</span><span class="o">,</span><span class="nx">delimitPos</span><span class="o">));</span>
|
|
<span class="nx">formElements</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">value</span> <span class="o">=</span> <span class="nb">decodeURIComponent</span><span class="o">(</span><span class="nx">postMessage</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">substring</span><span class="o">(</span><span class="nx">delimitPos</span><span class="o">+</span><span class="m">1</span><span class="o">));</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">appendChild</span><span class="o">(</span><span class="nx">formElements</span><span class="o">[</span><span class="nx">i</span><span class="o">]);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">return</span> <span class="nx">formElements</span><span class="o">;</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Uploads HTML form, inclusive of files/attachments, using the</span>
|
|
<span class="c"> * iframe created in createFrame to facilitate the transaction.</span>
|
|
<span class="c"> * @method uploadFile</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {int} id The transaction id.</span>
|
|
<span class="c"> * @param {object} callback User-defined callback object.</span>
|
|
<span class="c"> * @param {string} uri Fully qualified path of resource.</span>
|
|
<span class="c"> * @param {string} postData POST data to be submitted in addition to HTML form.</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">uploadFile</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">,</span> <span class="nx">uri</span><span class="o">,</span> <span class="nx">postData</span><span class="o">){</span>
|
|
|
|
<span class="c">// Each iframe has an id prefix of "yuiIO" followed</span>
|
|
<span class="c"></span> <span class="c">// by the unique transaction id.</span>
|
|
<span class="c"></span> <span class="k">var</span> <span class="nx">frameId</span> <span class="o">=</span> <span class="s1">'yuiIO'</span> <span class="o">+</span> <span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">,</span>
|
|
<span class="nx">uploadEncoding</span> <span class="o">=</span> <span class="s1">'multipart/form-data'</span><span class="o">,</span>
|
|
<span class="nx">io</span> <span class="o">=</span> <span class="nb">document</span><span class="o">.</span><span class="nx">getElementById</span><span class="o">(</span><span class="nx">frameId</span><span class="o">),</span>
|
|
<span class="nx">oConn</span> <span class="o">=</span> <span class="k">this</span><span class="o">,</span>
|
|
<span class="nx">args</span> <span class="o">=</span> <span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">)?</span><span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">:</span><span class="kc">null</span><span class="o">,</span>
|
|
<span class="nx">oElements</span><span class="o">,</span><span class="nx">i</span><span class="o">,</span><span class="nx">prop</span><span class="o">,</span><span class="nx">obj</span><span class="o">;</span>
|
|
|
|
<span class="c">// Track original HTML form attribute values.</span>
|
|
<span class="c"></span> <span class="k">var</span> <span class="nx">rawFormAttributes</span> <span class="o">=</span>
|
|
<span class="o">{</span>
|
|
<span class="nx">action</span><span class="o">:</span><span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">getAttribute</span><span class="o">(</span><span class="s1">'action'</span><span class="o">),</span>
|
|
<span class="nx">method</span><span class="o">:</span><span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">getAttribute</span><span class="o">(</span><span class="s1">'method'</span><span class="o">),</span>
|
|
<span class="nx">target</span><span class="o">:</span><span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">getAttribute</span><span class="o">(</span><span class="s1">'target'</span><span class="o">)</span>
|
|
<span class="o">};</span>
|
|
|
|
<span class="c">// Initialize the HTML form properties in case they are</span>
|
|
<span class="c"></span> <span class="c">// not defined in the HTML form.</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">setAttribute</span><span class="o">(</span><span class="s1">'action'</span><span class="o">,</span> <span class="nx">uri</span><span class="o">);</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">setAttribute</span><span class="o">(</span><span class="s1">'method'</span><span class="o">,</span> <span class="s1">'POST'</span><span class="o">);</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">setAttribute</span><span class="o">(</span><span class="s1">'target'</span><span class="o">,</span> <span class="nx">frameId</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">env</span><span class="o">.</span><span class="nx">ua</span><span class="o">.</span><span class="nx">ie</span><span class="o">){</span>
|
|
<span class="c">// IE does not respect property enctype for HTML forms.</span>
|
|
<span class="c"></span> <span class="c">// Instead it uses the property - "encoding".</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">setAttribute</span><span class="o">(</span><span class="s1">'encoding'</span><span class="o">,</span> <span class="nx">uploadEncoding</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">setAttribute</span><span class="o">(</span><span class="s1">'enctype'</span><span class="o">,</span> <span class="nx">uploadEncoding</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">postData</span><span class="o">){</span>
|
|
<span class="nx">oElements</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">appendPostData</span><span class="o">(</span><span class="nx">postData</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Start file upload.</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">submit</span><span class="o">();</span>
|
|
|
|
<span class="c">// Fire global custom event -- startEvent</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">startEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">startEvent</span><span class="o">){</span>
|
|
<span class="c">// Fire transaction custom event -- startEvent</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">startEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Start polling if a callback is present and the timeout</span>
|
|
<span class="c"></span> <span class="c">// property has been defined.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">timeout</span><span class="o">){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">]</span> <span class="o">=</span> <span class="nb">window</span><span class="o">.</span><span class="nx">setTimeout</span><span class="o">(</span><span class="k">function</span><span class="o">(){</span> <span class="nx">oConn</span><span class="o">.</span><span class="nx">abort</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span> <span class="o">},</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">timeout</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Remove HTML elements created by appendPostData</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="nx">oElements</span> <span class="o">&&</span> <span class="nx">oElements</span><span class="o">.</span><span class="nx">length</span> <span class="o">></span> <span class="m">0</span><span class="o">){</span>
|
|
<span class="k">for</span><span class="o">(</span><span class="nx">i</span><span class="o">=</span><span class="m">0</span><span class="o">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">oElements</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="nx">i</span><span class="o">++){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">removeChild</span><span class="o">(</span><span class="nx">oElements</span><span class="o">[</span><span class="nx">i</span><span class="o">]);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Restore HTML form attributes to their original</span>
|
|
<span class="c"></span> <span class="c">// values prior to file upload.</span>
|
|
<span class="c"></span> <span class="k">for</span><span class="o">(</span><span class="nx">prop</span> <span class="k">in</span> <span class="nx">rawFormAttributes</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">hasOwnProperty</span><span class="o">(</span><span class="nx">rawFormAttributes</span><span class="o">,</span> <span class="nx">prop</span><span class="o">)){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">rawFormAttributes</span><span class="o">[</span><span class="nx">prop</span><span class="o">]){</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">setAttribute</span><span class="o">(</span><span class="nx">prop</span><span class="o">,</span> <span class="nx">rawFormAttributes</span><span class="o">[</span><span class="nx">prop</span><span class="o">]);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">_formNode</span><span class="o">.</span><span class="nx">removeAttribute</span><span class="o">(</span><span class="nx">prop</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Reset HTML form state properties.</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">resetFormState</span><span class="o">();</span>
|
|
|
|
<span class="c">// Create the upload callback handler that fires when the iframe</span>
|
|
<span class="c"></span> <span class="c">// receives the load event. Subsequently, the event handler is detached</span>
|
|
<span class="c"></span> <span class="c">// and the iframe removed from the document.</span>
|
|
<span class="c"></span> <span class="k">var</span> <span class="nx">uploadCallback</span> <span class="o">=</span> <span class="k">function</span><span class="o">()</span>
|
|
<span class="o">{</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">timeout</span><span class="o">){</span>
|
|
<span class="nb">window</span><span class="o">.</span><span class="nx">clearTimeout</span><span class="o">(</span><span class="nx">oConn</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">]);</span>
|
|
<span class="nx">delete</span> <span class="nx">oConn</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">];</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Fire global custom event -- completeEvent</span>
|
|
<span class="c"></span> <span class="nx">oConn</span><span class="o">.</span><span class="nx">completeEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">completeEvent</span><span class="o">){</span>
|
|
<span class="c">// Fire transaction custom event -- completeEvent</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">completeEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="nx">obj</span> <span class="o">=</span> <span class="o">{</span>
|
|
<span class="nx">tId</span> <span class="o">:</span> <span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">,</span>
|
|
<span class="nx">argument</span> <span class="o">:</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span>
|
|
<span class="o">};</span>
|
|
|
|
<span class="k">try</span>
|
|
<span class="o">{</span>
|
|
<span class="c">// responseText and responseXML will be populated with the same data from the iframe.</span>
|
|
<span class="c"></span> <span class="c">// Since the HTTP headers cannot be read from the iframe</span>
|
|
<span class="c"></span> <span class="nx">obj</span><span class="o">.</span><span class="nx">responseText</span> <span class="o">=</span> <span class="nx">io</span><span class="o">.</span><span class="nx">contentWindow</span><span class="o">.</span><span class="nb">document</span><span class="o">.</span><span class="nx">body</span><span class="o">?</span><span class="nx">io</span><span class="o">.</span><span class="nx">contentWindow</span><span class="o">.</span><span class="nb">document</span><span class="o">.</span><span class="nx">body</span><span class="o">.</span><span class="nx">innerHTML</span><span class="o">:</span><span class="nx">io</span><span class="o">.</span><span class="nx">contentWindow</span><span class="o">.</span><span class="nb">document</span><span class="o">.</span><span class="nx">documentElement</span><span class="o">.</span><span class="nx">textContent</span><span class="o">;</span>
|
|
<span class="nx">obj</span><span class="o">.</span><span class="nx">responseXML</span> <span class="o">=</span> <span class="nx">io</span><span class="o">.</span><span class="nx">contentWindow</span><span class="o">.</span><span class="nb">document</span><span class="o">.</span><span class="nx">XMLDocument</span><span class="o">?</span><span class="nx">io</span><span class="o">.</span><span class="nx">contentWindow</span><span class="o">.</span><span class="nb">document</span><span class="o">.</span><span class="nx">XMLDocument</span><span class="o">:</span><span class="nx">io</span><span class="o">.</span><span class="nx">contentWindow</span><span class="o">.</span><span class="nb">document</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">catch</span><span class="o">(</span><span class="nx">e</span><span class="o">){}</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">upload</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(!</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">){</span>
|
|
<span class="nx">callback</span><span class="o">.</span><span class="nx">upload</span><span class="o">(</span><span class="nx">obj</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Upload callback.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">callback</span><span class="o">.</span><span class="nx">upload</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="nx">callback</span><span class="o">.</span><span class="nx">scope</span><span class="o">,</span> <span class="o">[</span><span class="nx">obj</span><span class="o">]);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Upload callback with scope.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="c">// Fire global custom event -- uploadEvent</span>
|
|
<span class="c"></span> <span class="nx">oConn</span><span class="o">.</span><span class="nx">uploadEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">obj</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">uploadEvent</span><span class="o">){</span>
|
|
<span class="c">// Fire transaction custom event -- uploadEvent</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">uploadEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">obj</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">.</span><span class="nx">removeListener</span><span class="o">(</span><span class="nx">io</span><span class="o">,</span> <span class="s2">"load"</span><span class="o">,</span> <span class="nx">uploadCallback</span><span class="o">);</span>
|
|
|
|
<span class="nx">setTimeout</span><span class="o">(</span>
|
|
<span class="k">function</span><span class="o">(){</span>
|
|
<span class="nb">document</span><span class="o">.</span><span class="nx">body</span><span class="o">.</span><span class="nx">removeChild</span><span class="o">(</span><span class="nx">io</span><span class="o">);</span>
|
|
<span class="nx">oConn</span><span class="o">.</span><span class="nx">releaseObject</span><span class="o">(</span><span class="nx">o</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'File upload iframe destroyed. Id is:'</span> <span class="o">+</span> <span class="nx">frameId</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">},</span> <span class="m">100</span><span class="o">);</span>
|
|
<span class="o">};</span>
|
|
|
|
<span class="c">// Bind the onload handler to the iframe to detect the file upload response.</span>
|
|
<span class="c"></span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">.</span><span class="nx">addListener</span><span class="o">(</span><span class="nx">io</span><span class="o">,</span> <span class="s2">"load"</span><span class="o">,</span> <span class="nx">uploadCallback</span><span class="o">);</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Method to terminate a transaction, if it has not reached readyState 4.</span>
|
|
<span class="c"> * @method abort</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {object} o The connection object returned by asyncRequest.</span>
|
|
<span class="c"> * @param {object} callback User-defined callback object.</span>
|
|
<span class="c"> * @param {string} isTimeout boolean to indicate if abort resulted from a callback timeout.</span>
|
|
<span class="c"> * @return {boolean}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">abort</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">,</span> <span class="nx">isTimeout</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">var</span> <span class="nx">abortStatus</span><span class="o">;</span>
|
|
<span class="k">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="o">(</span><span class="nx">callback</span> <span class="o">&&</span> <span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">)?</span><span class="nx">callback</span><span class="o">.</span><span class="nx">argument</span><span class="o">:</span><span class="kc">null</span><span class="o">;</span>
|
|
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span> <span class="o">&&</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">){</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">isCallInProgress</span><span class="o">(</span><span class="nx">o</span><span class="o">)){</span>
|
|
<span class="c">// Issue abort request</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">abort</span><span class="o">();</span>
|
|
|
|
<span class="nb">window</span><span class="o">.</span><span class="nx">clearInterval</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_poll</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">]);</span>
|
|
<span class="nx">delete</span> <span class="k">this</span><span class="o">.</span><span class="nx">_poll</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">];</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">isTimeout</span><span class="o">){</span>
|
|
<span class="nb">window</span><span class="o">.</span><span class="nx">clearTimeout</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">]);</span>
|
|
<span class="nx">delete</span> <span class="k">this</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">];</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="nx">abortStatus</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span> <span class="k">if</span><span class="o">(</span><span class="nx">o</span> <span class="o">&&</span> <span class="nx">o</span><span class="o">.</span><span class="nx">isUpload</span> <span class="o">===</span> <span class="kc">true</span><span class="o">){</span>
|
|
<span class="k">var</span> <span class="nx">frameId</span> <span class="o">=</span> <span class="s1">'yuiIO'</span> <span class="o">+</span> <span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">;</span>
|
|
<span class="k">var</span> <span class="nx">io</span> <span class="o">=</span> <span class="nb">document</span><span class="o">.</span><span class="nx">getElementById</span><span class="o">(</span><span class="nx">frameId</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">io</span><span class="o">){</span>
|
|
<span class="c">// Remove all listeners on the iframe prior to</span>
|
|
<span class="c"></span> <span class="c">// its destruction.</span>
|
|
<span class="c"></span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">.</span><span class="nx">removeListener</span><span class="o">(</span><span class="nx">io</span><span class="o">,</span> <span class="s2">"load"</span><span class="o">);</span>
|
|
<span class="c">// Destroy the iframe facilitating the transaction.</span>
|
|
<span class="c"></span> <span class="nb">document</span><span class="o">.</span><span class="nx">body</span><span class="o">.</span><span class="nx">removeChild</span><span class="o">(</span><span class="nx">io</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'File upload iframe destroyed. Id is:'</span> <span class="o">+</span> <span class="nx">frameId</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">isTimeout</span><span class="o">){</span>
|
|
<span class="nb">window</span><span class="o">.</span><span class="nx">clearTimeout</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">]);</span>
|
|
<span class="nx">delete</span> <span class="k">this</span><span class="o">.</span><span class="nx">_timeOut</span><span class="o">[</span><span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">];</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="nx">abortStatus</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="nx">abortStatus</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">abortStatus</span> <span class="o">===</span> <span class="kc">true</span><span class="o">){</span>
|
|
<span class="c">// Fire global custom event -- abortEvent</span>
|
|
<span class="c"></span> <span class="k">this</span><span class="o">.</span><span class="nx">abortEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span><span class="o">.</span><span class="nx">abortEvent</span><span class="o">){</span>
|
|
<span class="c">// Fire transaction custom event -- abortEvent</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">abortEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">args</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">this</span><span class="o">.</span><span class="nx">handleTransactionResponse</span><span class="o">(</span><span class="nx">o</span><span class="o">,</span> <span class="nx">callback</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Transaction '</span> <span class="o">+</span> <span class="nx">o</span><span class="o">.</span><span class="nx">tId</span> <span class="o">+</span> <span class="s1">' aborted.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
<span class="o">}</span>
|
|
|
|
<span class="k">return</span> <span class="nx">abortStatus</span><span class="o">;</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Determines if the transaction is still being processed.</span>
|
|
<span class="c"> * @method isCallInProgress</span>
|
|
<span class="c"> * @public</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {object} o The connection object returned by asyncRequest</span>
|
|
<span class="c"> * @return {boolean}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">isCallInProgress</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">o</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="c">// if the XHR object assigned to the transaction has not been dereferenced,</span>
|
|
<span class="c"></span> <span class="c">// then check its readyState status. Otherwise, return false.</span>
|
|
<span class="c"></span> <span class="k">if</span><span class="o">(</span><span class="nx">o</span> <span class="o">&&</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">){</span>
|
|
<span class="k">return</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">readyState</span> <span class="o">!==</span> <span class="m">4</span> <span class="o">&&</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">.</span><span class="nx">readyState</span> <span class="o">!==</span> <span class="m">0</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span> <span class="k">if</span><span class="o">(</span><span class="nx">o</span> <span class="o">&&</span> <span class="nx">o</span><span class="o">.</span><span class="nx">isUpload</span> <span class="o">===</span> <span class="kc">true</span><span class="o">){</span>
|
|
<span class="k">var</span> <span class="nx">frameId</span> <span class="o">=</span> <span class="s1">'yuiIO'</span> <span class="o">+</span> <span class="nx">o</span><span class="o">.</span><span class="nx">tId</span><span class="o">;</span>
|
|
<span class="k">return</span> <span class="nb">document</span><span class="o">.</span><span class="nx">getElementById</span><span class="o">(</span><span class="nx">frameId</span><span class="o">)?</span><span class="kc">true</span><span class="o">:</span><span class="kc">false</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="k">else</span><span class="o">{</span>
|
|
<span class="k">return</span> <span class="kc">false</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">},</span>
|
|
|
|
<span class="c">/**</span>
|
|
<span class="c"> * @description Dereference the XHR instance and the connection object after the transaction is completed.</span>
|
|
<span class="c"> * @method releaseObject</span>
|
|
<span class="c"> * @private</span>
|
|
<span class="c"> * @static</span>
|
|
<span class="c"> * @param {object} o The connection object</span>
|
|
<span class="c"> * @return {void}</span>
|
|
<span class="c"> */</span>
|
|
<span class="nx">releaseObject</span><span class="o">:</span><span class="k">function</span><span class="o">(</span><span class="nx">o</span><span class="o">)</span>
|
|
<span class="o">{</span>
|
|
<span class="k">if</span><span class="o">(</span><span class="nx">o</span> <span class="o">&&</span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span><span class="o">){</span>
|
|
<span class="c">//dereference the XHR instance.</span>
|
|
<span class="c"></span> <span class="nx">o</span><span class="o">.</span><span class="nx">conn</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
|
|
|
|
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">'Connection object for transaction '</span> <span class="o">+</span> <span class="nx">o</span><span class="o">.</span><span class="nx">tId</span> <span class="o">+</span> <span class="s1">' destroyed.'</span><span class="o">,</span> <span class="s1">'info'</span><span class="o">,</span> <span class="s1">'Connection'</span><span class="o">);</span>
|
|
|
|
<span class="c">//dereference the connection object.</span>
|
|
<span class="c"></span> <span class="nx">o</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
|
|
<span class="o">}</span>
|
|
<span class="o">}</span>
|
|
<span class="o">};</span>
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="yui-b">
|
|
<div class="nav">
|
|
|
|
<div class="module">
|
|
<h4>Modules</h4>
|
|
<ul class="content">
|
|
|
|
<li class=""><a href="module_animation.html">animation</a></li>
|
|
|
|
<li class=""><a href="module_autocomplete.html">autocomplete</a></li>
|
|
|
|
<li class=""><a href="module_button.html">button</a></li>
|
|
|
|
<li class=""><a href="module_calendar.html">calendar</a></li>
|
|
|
|
<li class=""><a href="module_carousel.html">carousel</a></li>
|
|
|
|
<li class=""><a href="module_charts.html">charts</a></li>
|
|
|
|
<li class=""><a href="module_colorpicker.html">colorpicker</a></li>
|
|
|
|
<li class="selected"><a href="module_connection.html">connection</a></li>
|
|
|
|
<li class=""><a href="module_container.html">container</a></li>
|
|
|
|
<li class=""><a href="module_cookie.html">cookie</a></li>
|
|
|
|
<li class=""><a href="module_datasource.html">datasource</a></li>
|
|
|
|
<li class=""><a href="module_datatable.html">datatable</a></li>
|
|
|
|
<li class=""><a href="module_dom.html">dom</a></li>
|
|
|
|
<li class=""><a href="module_dragdrop.html">dragdrop</a></li>
|
|
|
|
<li class=""><a href="module_editor.html">editor</a></li>
|
|
|
|
<li class=""><a href="module_element.html">element</a></li>
|
|
|
|
<li class=""><a href="module_event.html">event</a></li>
|
|
|
|
<li class=""><a href="module_get.html">get</a></li>
|
|
|
|
<li class=""><a href="module_history.html">history</a></li>
|
|
|
|
<li class=""><a href="module_imagecropper.html">imagecropper</a></li>
|
|
|
|
<li class=""><a href="module_imageloader.html">imageloader</a></li>
|
|
|
|
<li class=""><a href="module_json.html">json</a></li>
|
|
|
|
<li class=""><a href="module_layout.html">layout</a></li>
|
|
|
|
<li class=""><a href="module_logger.html">logger</a></li>
|
|
|
|
<li class=""><a href="module_menu.html">menu</a></li>
|
|
|
|
<li class=""><a href="module_paginator.html">paginator</a></li>
|
|
|
|
<li class=""><a href="module_profiler.html">profiler</a></li>
|
|
|
|
<li class=""><a href="module_profilerviewer.html">profilerviewer</a></li>
|
|
|
|
<li class=""><a href="module_resize.html">resize</a></li>
|
|
|
|
<li class=""><a href="module_selector.html">selector</a></li>
|
|
|
|
<li class=""><a href="module_slider.html">slider</a></li>
|
|
|
|
<li class=""><a href="module_tabview.html">tabview</a></li>
|
|
|
|
<li class=""><a href="module_treeview.html">treeview</a></li>
|
|
|
|
<li class=""><a href="module_uploader.html">uploader</a></li>
|
|
|
|
<li class=""><a href="module_yahoo.html">yahoo</a></li>
|
|
|
|
<li class=""><a href="module_yuiloader.html">yuiloader</a></li>
|
|
|
|
<li class=""><a href="module_yuitest.html">yuitest</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="module">
|
|
<h4>Classes</h4>
|
|
<ul class="content">
|
|
<li class=""><a href="YAHOO.util.Connect.html">YAHOO.util.Connect</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="module">
|
|
<h4>Files</h4>
|
|
<ul class="content">
|
|
<li class="selected"><a href="connection.js.html">connection.js</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="ft">
|
|
<hr />
|
|
Copyright © 2008 Yahoo! Inc. All rights reserved.
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|