node-load-debug.js revision 76ca635d61eb3f9fb7c9d788a44fa8b1690aa138
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassYUI.add('node-load', function(Y) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Extended Node interface with an basic IO api.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @module node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @submodule node-load
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * The default IO complete handler.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _ioComplete
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @protected
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @for Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {String} code The response code.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Object} response The response object.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Array} args An array containing the callback and selector
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.Node.prototype._ioComplete = function(code, response, args) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var selector = args[0],
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass callback = args[1],
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tmp,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass content;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (response && response.responseText) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass content = response.responseText;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (selector) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass tmp = Y.DOM.create(content);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass content = Y.Selector.query(selector, tmp);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.setContent(content);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (callback) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass callback.call(this, code, response);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass};
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass/**
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Loads content from the given url and replaces the Node's
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * existing content with it.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method load
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {String} html The markup to wrap around the node.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {String} selector An optional selector representing subset
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Function} callback An optional function to run after the content has been loaded.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * of the content.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @chainable
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass */
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassY.Node.prototype.load = function(url, selector, callback) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (typeof selector == 'function') {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass callback = selector;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass selector = null;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass }
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var config = {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass context: this,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass on: {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass complete: this._ioComplete
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass },
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass arguments: [selector, callback]
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass };
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.io(url, config);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return this;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass}, '@VERSION@' ,{requires:['node-base', 'io-base']});