X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/2e847cf21b8ab9d15fa167b315ca5b2fa92638fc..6a7e4474cba9d8be4b2ec445e10f1691f7277c50:/examples/shared/code-display.js diff --git a/examples/shared/code-display.js b/examples/shared/code-display.js index 1ffca7b5..dc13b065 100644 --- a/examples/shared/code-display.js +++ b/examples/shared/code-display.js @@ -1,375 +1,375 @@ /*! - * Ext JS Library 3.1.1 - * Copyright(c) 2006-2010 Ext JS, LLC + * Ext JS Library 3.2.0 + * Copyright(c) 2006-2010 Ext JS, Inc. * licensing@extjs.com * http://www.extjs.com/license */ -// Create and append to the body, a Panel containing a block of code from the passed URL -function createCodePanel(url, title) { - var panel = new Ext.Panel({ - hideMode: 'visibility', - title: title, - width: 750, - style: { - 'margin-top': '10px' - }, - hideCollapseTool: true, - titleCollapse: true, - collapsible: true, - collapsed: true, - autoScroll: true, - renderTo: Ext.getBody(), - listeners: { - render: function(p) { - p.getUpdater().setRenderer({ - render: Ext.isIE ? function(el, response, scripts, callback) { - el.update(''); - var np = el.createChild({ - tag: 'pre', - cls: 'code', - cn: { - tag: 'code' - } - }); - var t = response.responseText.split("\n"); - var c = np.child('code', true); - for (var i = 0, l = t.length; i < l; i++) { - var pre = document.createElement('pre'); - if (t[i].length) { - pre.appendChild(document.createTextNode(t[i])); - c.appendChild(pre); - } else if (i < (l - 1)) { - c.appendChild(document.createElement("br")); - } - - } - } : function(el, response, scripts, callback) { - el.update(''); - el.createChild({ - tag: 'pre', - cls: 'code', - cn: { - tag: 'code', - html: response.responseText - } - }); - } - }); - }, - beforeexpand: function(p) { - p.load(url); - }, - single: true - } - }); -} - -// Patch to allow XHR to local files. From hendricd: http://extjs.com/forum/member.php?u=8730 -Ext.apply( Ext.lib.Ajax , -{ forceActiveX:false, - createXhrObject:function(transactionId) - { - var obj={ status:{isError:false} - , tId:transactionId}, http; - try - { - - if(Ext.isIE7 && !!this.forceActiveX){throw("IE7forceActiveX");} - - obj.conn= new XMLHttpRequest(); - - } - catch(e) - { - for (var i = 0; i < this.activeX.length; ++i) { - try - { - obj.conn= new ActiveXObject(this.activeX[i]); - - break; - } - catch(e) { - } - } - } - finally - { - obj.status.isError = typeof(obj.conn) === undefined; - } - return obj; - - }, - - getHttpStatus: function(reqObj){ - - var statObj = { status:0 - ,statusText:'' - ,isError:false - ,isLocal:false - ,isOK:false - ,error:null}; - - try { - if(!reqObj)throw('noobj'); - statObj.status = reqObj.status; - - statObj.isLocal = !reqObj.status && location.protocol == "file:" || - Ext.isSafari && reqObj.status === undefined; - - statObj.isOK = (statObj.isLocal || (statObj.status > 199 && statObj.status < 300)); - statObj.statusText = reqObj.statusText || ''; - } catch(e){ //status may not avail/valid yet (or called too early). - } - - return statObj; - - }, - handleTransactionResponse:function(o, callback, isAbort) - { - - - callback = callback || {}; - var responseObject=null; - - if(!o.status.isError){ - o.status = this.getHttpStatus(o.conn); - /* create and enhance the response with proper status and XMLDOM if necessary */ - responseObject = this.createResponseObject(o, callback.argument); - } - - if(o.status.isError){ /* checked again in case exception was raised - ActiveX was disabled during XML-DOM creation? */ - // And mixin everything the XHR object had to offer as well - responseObject = Ext.applyIf(responseObject||{},this.createExceptionObject(o.tId, callback.argument, (isAbort ? isAbort : false))); - - } - - responseObject.options = o.options; - responseObject.stat = o.status; - - if (o.status.isOK && !o.status.isError) { - if (callback.success) { - if (!callback.scope) { - callback.success(responseObject); - } - else { - callback.success.apply(callback.scope, [responseObject]); - } - } - } else { - - if (callback.failure) { - if (!callback.scope) { - callback.failure(responseObject); - } - else { - callback.failure.apply(callback.scope, [responseObject]); - } - } - - } - - if(o.options.async){ - this.releaseObject(o); - responseObject = null; - }else{ - this.releaseObject(o); - return responseObject; - } - - }, - createResponseObject:function(o, callbackArg) - { - var obj = {}; - var headerObj = {},headerStr=''; - - try{ //to catch bad encoding problems here - obj.responseText = o.conn.responseText; - }catch(e){obj.responseText ='';} - - obj.responseXML = o.conn.responseXML; - - try{ - headerStr = o.conn.getAllResponseHeaders()||''; - } catch(e){} - - if(o.status.isLocal){ - - o.status.isOK = ((o.status.status = (!!obj.responseText.length)?200:404) == 200); - - if(o.status.isOK && (!obj.responseXML || obj.responseXML.childNodes.length == 0)){ - - var xdoc=null; - try{ //ActiveX may be disabled - if(typeof(DOMParser) == 'undefined'){ - xdoc=new ActiveXObject("Microsoft.XMLDOM"); - xdoc.async="false"; - xdoc.loadXML(obj.responseText); - - }else{ - try{ //Opera 9 will fail parsing non-XML content, so trap here. - var domParser = new DOMParser(); - xdoc = domParser.parseFromString(obj.responseText, 'application\/xml'); - }catch(ex){} - finally{domParser = null;} - - } - } catch(ex){ - o.status.isError = true; - o.status.error = ex; - - } - - obj.responseXML = xdoc; - } - - if(obj.responseXML){ - - var parseBad = (obj.responseXML.parseError || 0) != 0 || obj.responseXML.childNodes.length == 0; - if(!parseBad){ - headerStr = 'Content-Type: ' + (obj.responseXML.contentType || 'text\/xml') + '\n' + headerStr ; - } - } - - - } - - var header = headerStr.split('\n'); - for (var i = 0; i < header.length; i++) { - var delimitPos = header[i].indexOf(':'); - if (delimitPos != -1) { - headerObj[header[i].substring(0, delimitPos)] = header[i].substring(delimitPos + 2); - } - } - - obj.tId = o.tId; - obj.status = o.status.status; - obj.statusText = o.status.statusText; - obj.getResponseHeader = headerObj; - obj.getAllResponseHeaders = headerStr; - obj.stat = o.status - - if (typeof callbackArg !== undefined) { - obj.argument = callbackArg; - } - - return obj; - }, - - request : function(method, uri, cb, data, options) { - - options = Ext.apply({async:true, - headers:false, - userId:null, - password:null, - xmlData:null }, options||{}); - - var hs = options.headers; - if(hs){ - for(var h in hs){ - if(hs.hasOwnProperty(h)){ - this.initHeader(h, hs[h], false); - } - } - } - if(options.xmlData){ - this.initHeader('Content-Type', 'text/xml', false); - method = 'POST'; - data = options.xmlData; - } - - return this.makeRequest(method, uri, cb, data, options); - - }, - asyncRequest:function(method, uri, callback, postData) - { - var o = this.getConnectionObject(); - - if (!o || o.status.isError) { - return null; - } - else { - o.options = options; - try{ - o.conn.open(method, uri, true); - } catch(ex){ - o.status.isError = true; - o.status.error = ex; - return Ext.apply(o,this.handleTransactionResponse(o, callback)); - - } - - - if (this.useDefaultXhrHeader) { - if (!this.defaultHeaders['X-Requested-With']) { - this.initHeader('X-Requested-With', this.defaultXhrHeader, true); - } - } - - if(postData && this.useDefaultHeader){ - this.initHeader('Content-Type', this.defaultPostHeader); - } - - if (this.hasDefaultHeaders || this.hasHeaders) { - this.setHeader(o); - } - - this.handleReadyState(o, callback); - - try{ o.conn.send(postData || null); - } catch(ex){ - o.status.isError=true; - o.status.error = ex; - return Ext.apply(o,this.handleTransactionResponse(o, callback)); - } - - - return o; - } - }, - - makeRequest:function(method, uri, callback, postData, options) - { - var o = this.getConnectionObject(); - - if (!o || o.status.isError) { - return null; - } - else { - o.options = options; - try{ - o.conn.open(method, uri, options.async, options.userId, options.password); - } catch(ex){ - o.status.isError = true; - o.status.error = ex; - var r=this.handleTransactionResponse(o, callback); - return Ext.apply(o,r); - } - - if (this.useDefaultXhrHeader) { - if (!this.defaultHeaders['X-Requested-With']) { - this.initHeader('X-Requested-With', this.defaultXhrHeader, true); - } - } - - if(postData && this.useDefaultHeader){ - this.initHeader('Content-Type', this.defaultPostHeader); - } - - if (this.hasDefaultHeaders || this.hasHeaders) { - this.setHeader(o); - } - - if(o.options.async){ //Timers won't work here as it's a blocking call - this.handleReadyState(o, callback); - } - - try{ o.conn.send(postData || null); - } catch(ex){ - //Ext.apply(o,this.handleTransactionResponse(o, callback)); - } - - return options.async?o:Ext.apply(o,this.handleTransactionResponse(o, callback)); - } - }}); - +// Create and append to the body, a Panel containing a block of code from the passed URL +function createCodePanel(url, title) { + var panel = new Ext.Panel({ + hideMode: 'visibility', + title: title, + width: 750, + style: { + 'margin-top': '10px' + }, + hideCollapseTool: true, + titleCollapse: true, + collapsible: true, + collapsed: true, + autoScroll: true, + renderTo: Ext.getBody(), + listeners: { + render: function(p) { + p.getUpdater().setRenderer({ + render: Ext.isIE ? function(el, response, scripts, callback) { + el.update(''); + var np = el.createChild({ + tag: 'pre', + cls: 'code', + cn: { + tag: 'code' + } + }); + var t = response.responseText.split("\n"); + var c = np.child('code', true); + for (var i = 0, l = t.length; i < l; i++) { + var pre = document.createElement('pre'); + if (t[i].length) { + pre.appendChild(document.createTextNode(t[i])); + c.appendChild(pre); + } else if (i < (l - 1)) { + c.appendChild(document.createElement("br")); + } + + } + } : function(el, response, scripts, callback) { + el.update(''); + el.createChild({ + tag: 'pre', + cls: 'code', + cn: { + tag: 'code', + html: response.responseText + } + }); + } + }); + }, + beforeexpand: function(p) { + p.load(url); + }, + single: true + } + }); +} + +// Patch to allow XHR to local files. From hendricd: http://extjs.com/forum/member.php?u=8730 +Ext.apply( Ext.lib.Ajax , +{ forceActiveX:false, + createXhrObject:function(transactionId) + { + var obj={ status:{isError:false} + , tId:transactionId}, http; + try + { + + if(Ext.isIE7 && !!this.forceActiveX){throw("IE7forceActiveX");} + + obj.conn= new XMLHttpRequest(); + + } + catch(e) + { + for (var i = 0; i < this.activeX.length; ++i) { + try + { + obj.conn= new ActiveXObject(this.activeX[i]); + + break; + } + catch(e) { + } + } + } + finally + { + obj.status.isError = typeof(obj.conn) === undefined; + } + return obj; + + }, + + getHttpStatus: function(reqObj){ + + var statObj = { status:0 + ,statusText:'' + ,isError:false + ,isLocal:false + ,isOK:false + ,error:null}; + + try { + if(!reqObj)throw('noobj'); + statObj.status = reqObj.status; + + statObj.isLocal = !reqObj.status && location.protocol == "file:" || + Ext.isSafari && reqObj.status === undefined; + + statObj.isOK = (statObj.isLocal || (statObj.status > 199 && statObj.status < 300)); + statObj.statusText = reqObj.statusText || ''; + } catch(e){ //status may not avail/valid yet (or called too early). + } + + return statObj; + + }, + handleTransactionResponse:function(o, callback, isAbort) + { + + + callback = callback || {}; + var responseObject=null; + + if(!o.status.isError){ + o.status = this.getHttpStatus(o.conn); + /* create and enhance the response with proper status and XMLDOM if necessary */ + responseObject = this.createResponseObject(o, callback.argument); + } + + if(o.status.isError){ /* checked again in case exception was raised - ActiveX was disabled during XML-DOM creation? */ + // And mixin everything the XHR object had to offer as well + responseObject = Ext.applyIf(responseObject||{},this.createExceptionObject(o.tId, callback.argument, (isAbort ? isAbort : false))); + + } + + responseObject.options = o.options; + responseObject.stat = o.status; + + if (o.status.isOK && !o.status.isError) { + if (callback.success) { + if (!callback.scope) { + callback.success(responseObject); + } + else { + callback.success.apply(callback.scope, [responseObject]); + } + } + } else { + + if (callback.failure) { + if (!callback.scope) { + callback.failure(responseObject); + } + else { + callback.failure.apply(callback.scope, [responseObject]); + } + } + + } + + if(o.options.async){ + this.releaseObject(o); + responseObject = null; + }else{ + this.releaseObject(o); + return responseObject; + } + + }, + createResponseObject:function(o, callbackArg) + { + var obj = {}; + var headerObj = {},headerStr=''; + + try{ //to catch bad encoding problems here + obj.responseText = o.conn.responseText; + }catch(e){obj.responseText ='';} + + obj.responseXML = o.conn.responseXML; + + try{ + headerStr = o.conn.getAllResponseHeaders()||''; + } catch(e){} + + if(o.status.isLocal){ + + o.status.isOK = ((o.status.status = (!!obj.responseText.length)?200:404) == 200); + + if(o.status.isOK && (!obj.responseXML || obj.responseXML.childNodes.length == 0)){ + + var xdoc=null; + try{ //ActiveX may be disabled + if(typeof(DOMParser) == 'undefined'){ + xdoc=new ActiveXObject("Microsoft.XMLDOM"); + xdoc.async="false"; + xdoc.loadXML(obj.responseText); + + }else{ + try{ //Opera 9 will fail parsing non-XML content, so trap here. + var domParser = new DOMParser(); + xdoc = domParser.parseFromString(obj.responseText, 'application\/xml'); + }catch(ex){} + finally{domParser = null;} + + } + } catch(ex){ + o.status.isError = true; + o.status.error = ex; + + } + + obj.responseXML = xdoc; + } + + if(obj.responseXML){ + + var parseBad = (obj.responseXML.parseError || 0) != 0 || obj.responseXML.childNodes.length == 0; + if(!parseBad){ + headerStr = 'Content-Type: ' + (obj.responseXML.contentType || 'text\/xml') + '\n' + headerStr ; + } + } + + + } + + var header = headerStr.split('\n'); + for (var i = 0; i < header.length; i++) { + var delimitPos = header[i].indexOf(':'); + if (delimitPos != -1) { + headerObj[header[i].substring(0, delimitPos)] = header[i].substring(delimitPos + 2); + } + } + + obj.tId = o.tId; + obj.status = o.status.status; + obj.statusText = o.status.statusText; + obj.getResponseHeader = headerObj; + obj.getAllResponseHeaders = headerStr; + obj.stat = o.status + + if (typeof callbackArg !== undefined) { + obj.argument = callbackArg; + } + + return obj; + }, + + request : function(method, uri, cb, data, options) { + + options = Ext.apply({async:true, + headers:false, + userId:null, + password:null, + xmlData:null }, options||{}); + + var hs = options.headers; + if(hs){ + for(var h in hs){ + if(hs.hasOwnProperty(h)){ + this.initHeader(h, hs[h], false); + } + } + } + if(options.xmlData){ + this.initHeader('Content-Type', 'text/xml', false); + method = 'POST'; + data = options.xmlData; + } + + return this.makeRequest(method, uri, cb, data, options); + + }, + asyncRequest:function(method, uri, callback, postData) + { + var o = this.getConnectionObject(); + + if (!o || o.status.isError) { + return null; + } + else { + o.options = options; + try{ + o.conn.open(method, uri, true); + } catch(ex){ + o.status.isError = true; + o.status.error = ex; + return Ext.apply(o,this.handleTransactionResponse(o, callback)); + + } + + + if (this.useDefaultXhrHeader) { + if (!this.defaultHeaders['X-Requested-With']) { + this.initHeader('X-Requested-With', this.defaultXhrHeader, true); + } + } + + if(postData && this.useDefaultHeader){ + this.initHeader('Content-Type', this.defaultPostHeader); + } + + if (this.hasDefaultHeaders || this.hasHeaders) { + this.setHeader(o); + } + + this.handleReadyState(o, callback); + + try{ o.conn.send(postData || null); + } catch(ex){ + o.status.isError=true; + o.status.error = ex; + return Ext.apply(o,this.handleTransactionResponse(o, callback)); + } + + + return o; + } + }, + + makeRequest:function(method, uri, callback, postData, options) + { + var o = this.getConnectionObject(); + + if (!o || o.status.isError) { + return null; + } + else { + o.options = options; + try{ + o.conn.open(method, uri, options.async, options.userId, options.password); + } catch(ex){ + o.status.isError = true; + o.status.error = ex; + var r=this.handleTransactionResponse(o, callback); + return Ext.apply(o,r); + } + + if (this.useDefaultXhrHeader) { + if (!this.defaultHeaders['X-Requested-With']) { + this.initHeader('X-Requested-With', this.defaultXhrHeader, true); + } + } + + if(postData && this.useDefaultHeader){ + this.initHeader('Content-Type', this.defaultPostHeader); + } + + if (this.hasDefaultHeaders || this.hasHeaders) { + this.setHeader(o); + } + + if(o.options.async){ //Timers won't work here as it's a blocking call + this.handleReadyState(o, callback); + } + + try{ o.conn.send(postData || null); + } catch(ex){ + //Ext.apply(o,this.handleTransactionResponse(o, callback)); + } + + return options.async?o:Ext.apply(o,this.handleTransactionResponse(o, callback)); + } + }}); + Ext.lib.Ajax.forceActiveX = (document.location.protocol == 'file:');/* or other true/false mechanism */ \ No newline at end of file