X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/c930e9176a5a85509c5b0230e2bff5c22a591432..0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6:/src/adapter/jquery-bridge.js?ds=sidebyside diff --git a/src/adapter/jquery-bridge.js b/src/adapter/jquery-bridge.js index 645948a8..bbffceb3 100644 --- a/src/adapter/jquery-bridge.js +++ b/src/adapter/jquery-bridge.js @@ -1,8 +1,8 @@ /*! - * Ext JS Library 3.0.0 - * Copyright(c) 2006-2009 Ext JS, LLC - * licensing@extjs.com - * http://www.extjs.com/license + * Ext JS Library 3.3.1 + * Copyright(c) 2006-2010 Sencha Inc. + * licensing@sencha.com + * http://www.sencha.com/license */ if(typeof jQuery == "undefined"){ throw "Unable to load Ext, jQuery not found."; @@ -23,27 +23,22 @@ Ext.lib.Dom = { }, isAncestor : function(p, c){ + var ret = false; + p = Ext.getDom(p); c = Ext.getDom(c); - if (!p || !c) {return false;} - - if(p.contains && !Ext.isSafari) { - return p.contains(c); - }else if(p.compareDocumentPosition) { - return !!(p.compareDocumentPosition(c) & 16); - }else{ - var parent = c.parentNode; - while (parent) { - if (parent == p) { - return true; + if (p && c) { + if (p.contains) { + return p.contains(c); + } else if (p.compareDocumentPosition) { + return !!(p.compareDocumentPosition(c) & 16); + } else { + while (c = c.parentNode) { + ret = c == p || ret; } - else if (!parent.tagName || parent.tagName.toUpperCase() == "HTML") { - return false; - } - parent = parent.parentNode; } - return false; } + return ret; }, getRegion : function(el){ @@ -232,12 +227,17 @@ Ext.lib.Event = { var iid = setInterval(f, 50); }, - resolveTextNode: function(node) { - if (node && 3 == node.nodeType) { - return node.parentNode; - } else { - return node; + resolveTextNode: Ext.isGecko ? function(node){ + if(!node){ + return; + } + var s = HTMLElement.prototype.toString.call(node); + if(s == '[xpconnect wrapped native prototype]' || s == '[object XULElement]'){ + return; } + return node.nodeType == 3 ? node.parentNode : node; + } : function(node){ + return node && node.nodeType == 3 ? node.parentNode : node; }, getRelatedTarget: function(ev) { @@ -259,20 +259,47 @@ Ext.lib.Ajax = function(){ var createComplete = function(cb){ return function(xhr, status){ if((status == 'error' || status == 'timeout') && cb.failure){ - cb.failure.call(cb.scope||window, { - responseText: xhr.responseText, - responseXML : xhr.responseXML, - argument: cb.argument - }); + cb.failure.call(cb.scope||window, createResponse(cb, xhr)); }else if(cb.success){ - cb.success.call(cb.scope||window, { - responseText: xhr.responseText, - responseXML : xhr.responseXML, - argument: cb.argument - }); + cb.success.call(cb.scope||window, createResponse(cb, xhr)); } }; }; + + var createResponse = function(cb, xhr){ + var headerObj = {}, + headerStr, + t, + s; + + try { + headerStr = xhr.getAllResponseHeaders(); + Ext.each(headerStr.replace(/\r\n/g, '\n').split('\n'), function(v){ + t = v.indexOf(':'); + if(t >= 0){ + s = v.substr(0, t).toLowerCase(); + if(v.charAt(t + 1) == ' '){ + ++t; + } + headerObj[s] = v.substr(t + 1); + } + }); + } catch(e) {} + + return { + responseText: xhr.responseText, + responseXML : xhr.responseXML, + argument: cb.argument, + status: xhr.status, + statusText: xhr.statusText, + getResponseHeader : function(header){ + return headerObj[header.toLowerCase()]; + }, + getAllResponseHeaders : function(){ + return headerStr; + } + }; + }; return { request : function(method, uri, cb, data, options){ var o = { @@ -302,12 +329,12 @@ Ext.lib.Ajax = function(){ } if(hs){ o.beforeSend = function(xhr){ - for(var h in hs){ - if(hs.hasOwnProperty(h)){ + for (var h in hs) { + if (hs.hasOwnProperty(h)) { xhr.setRequestHeader(h, hs[h]); } } - } + }; } } jQuery.ajax(o); @@ -432,6 +459,12 @@ Ext.lib.Anim = function(){ if (args.top.from) e.setTop(args.top.from); break; + // jQuery can't handle callback, scope, and xy arguments, so break here + case 'callback': + case 'scope': + case 'xy': + break; + default: o[k] = args[k].to; if (args[k].from)