diff -r 000000000000 -r 40c8f766c9b8 src/cm/media/js/lib/yui/yui3.0.0/api/io-xdr.js.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui3.0.0/api/io-xdr.js.html Mon Nov 23 15:14:29 2009 +0100 @@ -0,0 +1,417 @@ + + + + + API: io io-xdr.js (YUI Library) + + + + + + + + + + +
+
+

Yahoo! UI Library

+

io  3.0.0

+ Yahoo! UI Library + > io + + > io-xdr.js (source view) +
+
+ Search: +
+   +
+
+
+
+ +
+
+
+
+
+ Filters + + + +
+
+ +
+ +
   /**
+    * Extends the IO base class to provide an alternate, Flash transport, for making
+    * cross-domain requests.
+	* @module io
+	* @submodule io-xdr
+	*/
+
+   /**
+	* @event io:xdrReady
+	* @description This event is fired by YUI.io when the specified transport is
+	* ready for use.
+	* @type Event Custom
+	*/
+	var E_XDR_READY = 'io:xdrReady',
+
+
+   /**
+	* @description Object that stores callback handlers for cross-domain requests
+	* when using Flash as the transport.
+	*
+	* @property _fn
+	* @private
+	* @static
+	* @type object
+	*/
+	_fn = {},
+
+   /**
+	* @description Map of transaction state used when XDomainRequest is the
+	* XDR transport.
+	*
+	* @property _rS
+	* @private
+	* @static
+	* @type object
+	*/
+	_rS = {};
+
+   /**
+	* @description Method that creates the Flash transport swf.
+	*
+	* @method _swf
+	* @private
+	* @static
+	* @param {string} uri - location of io.swf.
+	* @param {string} yid - YUI instance id.
+	* @return void
+	*/
+	function _swf(uri, yid) {
+		var o = '<object id="yuiIoSwf" type="application/x-shockwave-flash" data="' +
+		        uri + '" width="0" height="0">' +
+		     	'<param name="movie" value="' + uri + '">' +
+		     	'<param name="FlashVars" value="yid=' + yid + '">' +
+                '<param name="allowScriptAccess" value="always">' +
+		    	'</object>',
+		    c = document.createElement('div');
+
+		document.body.appendChild(c);
+		c.innerHTML = o;
+	}
+
+   /**
+	* @description Sets event handlers for XDomainRequest transactions.
+	*
+	* @method _xdr
+	* @private
+	* @static
+    * @param {object} o - Transaction object generated by _create() in io-base.
+	* @param {object} c - configuration object for the transaction.
+	* @return void
+	*/
+	function _xdr(o, c) {
+		o.c.onprogress = function() { _rS[o.id] = 3; }
+		o.c.onload = function() {
+			_rS[o.id] = 4;
+			Y.io.xdrResponse(o, c, 'success');
+		};
+		o.c.onerror = function() {
+			_rS[o.id] = 4;
+			Y.io.xdrResponse(o, c, 'failure');
+		};
+		if (c.timeout) {
+			o.c.ontimeout = function() {
+				_rS[o.id] = 4;
+				Y.io.xdrResponse(o, c, 'timeout');
+			};
+			o.c.timeout = c.timeout;
+		}
+	}
+
+   /**
+	* @description Creates a response object for XDR transactions, for success
+	* and failure cases.
+	*
+	* @method _data
+	* @private
+	* @static
+    * @param {object} o - Transaction object generated by _create() in io-base.
+	* @param {boolean} isFlash - True if Flash was used as the transport.
+	* @param {boolean} isXML - True if the response data are XML.
+	*
+	* @return object
+	*/
+	function _data(o, isFlash, isXML) {
+		var text, xml;
+
+		if (!o.status) {
+			text = isFlash ? decodeURI(o.c.responseText) : o.c.responseText;
+			xml = isXML ? Y.DataType.XML.parse(text) : null;
+
+			return { id: o.id, c: { responseText: text, responseXML: xml } };
+		}
+		else {
+			return { id: o.id, status: o.status };
+		}
+
+	}
+
+   /**
+	* @description Method for intiating an XDR transaction abort.
+	*
+	* @method _abort
+	* @private
+	* @static
+	* @param {object} o - Transaction object generated by _create() in io-base.
+	* @param {object} c - configuration object for the transaction.
+	*/
+	function _abort(o, c) {
+		return c.xdr.use === 'flash' ? o.c.abort(o.id, c) : o.c.abort();
+	}
+
+   /**
+	* @description Method for determining if an XDR transaction has completed
+	* and all data are received.
+	*
+	* @method _isInProgress.
+	* @private
+	* @static
+	* @param {object} o - Transaction object generated by _create() in io-base.
+	* @param {object} c - configuration object for the transaction.
+	*/
+	function _isInProgress(o, t) {
+		return (t === 'flash' && o.c) ? o.c.isInProgress(o.id) : _rS[o.id] !== 4;
+	}
+
+    Y.mix(Y.io, {
+
+	   /**
+		* @description Map of io transports.
+		*
+		* @property _transport
+		* @private
+		* @static
+		* @type object
+		*/
+		_transport: {},
+
+	   /**
+	   	* @description Method for accessing the transport's interface for making a
+	   	* cross-domain transaction.
+	   	*
+		* @method _xdr
+		* @private
+		* @static
+		* @param {string} uri - qualified path to transaction resource.
+    	* @param {object} o - Transaction object generated by _create() in io-base.
+		* @param {object} c - configuration object for the transaction.
+		*/
+		xdr: function(uri, o, c) {
+			if (c.on && c.xdr.use === 'flash') {
+				_fn[o.id] = {
+					on: c.on,
+					context: c.context,
+					arguments: c.arguments
+				};
+				// These nodes do not need to be serialized across Flash's
+				// ExternalInterface.  Doing so will result in exceptions.
+				c.context = null;
+				c.form = null;
+
+				o.c.send(uri, c, o.id);
+			}
+			else if (window.XDomainRequest) {
+				_xdr(o, c);
+				o.c.open(c.method || 'GET', uri);
+				o.c.send(c.data);
+			}
+
+			return {
+				id: o.id,
+				abort: function() {
+					return o.c ? _abort(o, c) : false;
+				},
+				isInProgress: function() {
+					return o.c ? _isInProgress(o, c.xdr.use) : false;
+				}
+			}
+		},
+
+	   /**
+	   	* @description Response controller for cross-domain requests when using the
+	   	* Flash transport or IE8's XDomainRequest object.
+	   	*
+		* @method xdrResponse
+		* @private
+		* @static
+    	* @param {object} o - Transaction object generated by _create() in io-base.
+		* @param {object} c - configuration object for the transaction.
+		* @param {string} e - Event name
+		* @return object
+		*/
+		xdrResponse: function(o, c, e) {
+   			var m, fn,
+   				isFlash = c.xdr.use === 'flash' ? true : false,
+   				isXML = c.xdr.dataType === 'xml' ? true : false;
+   				c.on = c.on || {};
+
+   			if (isFlash) {
+   				m = _fn || {};
+   				fn = m[o.id] ? m[o.id] : null;
+   				if (fn) {
+	   				c.on = fn.on;
+	   				c.context = fn.context;
+	   				c.arguments = fn.arguments;
+				}
+			}
+			if (e === ('abort' || 'timeout')) {
+				o.status = e;
+			}
+
+			switch (e) {
+				case 'start':
+					Y.io.start(o.id, c);
+					break;
+				case 'success':
+					Y.io.success(_data(o, isFlash, isXML), c);
+					isFlash ? delete m[o.id] : delete _rS[o.id];
+					break;
+				case 'timeout':
+				case 'abort':
+				case 'failure':
+					Y.io.failure(_data(o, isFlash, isXML), c);
+					isFlash ? delete m[o.id] : delete _rS[o.id];
+					break;
+			}
+		},
+
+	   /**
+		* @description Fires event "io:xdrReady"
+		*
+		* @method xdrReady
+		* @private
+		* @static
+		* @param {number} id - transaction id
+		* @param {object} c - configuration object for the transaction.
+		*
+		* @return void
+		*/
+		xdrReady: function(id) {
+			Y.fire(E_XDR_READY, id);
+		},
+
+	   /**
+		* @description Method to initialize the desired transport.
+		*
+		* @method transport
+		* @public
+		* @static
+		* @param {object} o - object of transport configurations.
+		* @return void
+		*/
+		transport: function(o) {
+			var id = o.yid ? o.yid : Y.id;
+
+			_swf(o.src, id);
+			this._transport.flash = Y.config.doc.getElementById('yuiIoSwf');
+		}
+	});
+
+ +
+
+
+ +
+
+
+ Copyright © 2009 Yahoo! Inc. All rights reserved. +
+
+ + +