code-display.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:10k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.0.0  * Copyright(c) 2006-2009 Ext JS, LLC  * 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
  2. function createCodePanel(url, title) {
  3. var panel = new Ext.Panel({
  4. hideMode: 'visibility',
  5. title: title,
  6.      width: 750,
  7.      style: {
  8.      'margin-top': '10px'
  9.      },
  10.      hideCollapseTool: true,
  11.      titleCollapse: true,
  12.      collapsible: true,
  13.      collapsed: true,
  14. autoScroll: true,
  15. renderTo: Ext.getBody(),
  16. listeners: {
  17. render: function(p) {
  18. p.getUpdater().setRenderer({
  19. render: Ext.isIE ? function(el, response, scripts, callback) {
  20. el.update('');
  21. var np = el.createChild({
  22. tag: 'pre',
  23. cls: 'code',
  24. cn: {
  25. tag: 'code'
  26. }
  27. });
  28. var t = response.responseText.split("n");
  29. var c = np.child('code', true);
  30. for (var i = 0, l = t.length; i < l; i++) {
  31. var pre = document.createElement('pre');
  32. if (t[i].length) {
  33. pre.appendChild(document.createTextNode(t[i]));
  34. c.appendChild(pre);
  35. } else if (i < (l - 1)) {
  36. c.appendChild(document.createElement("br"));
  37. }
  38. }
  39. } : function(el, response, scripts, callback) {
  40. el.update('');
  41. el.createChild({
  42. tag: 'pre',
  43. cls: 'code',
  44. cn: {
  45. tag: 'code',
  46. html: response.responseText
  47. }
  48. });
  49. }
  50. });
  51. },
  52. beforeexpand: function(p) {
  53. p.load(url);
  54. },
  55. single: true
  56. }
  57. });
  58. }
  59. // Patch to allow XHR to local files. From hendricd: http://extjs.com/forum/member.php?u=8730
  60. Ext.apply( Ext.lib.Ajax ,
  61. { forceActiveX:false,
  62.   createXhrObject:function(transactionId)
  63.         {
  64.             var obj={  status:{isError:false}
  65.                   , tId:transactionId}, http;
  66.             try
  67.             {
  68.             
  69. if(Ext.isIE7 && !!this.forceActiveX){throw("IE7forceActiveX");}
  70.                 
  71. obj.conn= new XMLHttpRequest();
  72.             }
  73.             catch(e)
  74.             {
  75.                 for (var i = 0; i < this.activeX.length; ++i) {
  76.                     try
  77.                     {
  78.                         obj.conn= new ActiveXObject(this.activeX[i]);
  79.                         break;
  80.                     }
  81.                     catch(e) { 
  82.                     }
  83.                 }
  84.             }
  85.             finally
  86.             {
  87.              obj.status.isError = typeof(obj.conn) === undefined;
  88.             }
  89.             return obj;
  90.             
  91.         },
  92.         
  93.         getHttpStatus: function(reqObj){
  94.         
  95.          var statObj = {  status:0
  96.          ,statusText:''
  97.          ,isError:false
  98.          ,isLocal:false
  99.          ,isOK:false
  100.          ,error:null};
  101.         
  102.          try {
  103.          if(!reqObj)throw('noobj');
  104.         statObj.status = reqObj.status;
  105.         
  106.         statObj.isLocal = !reqObj.status && location.protocol == "file:" || 
  107.             Ext.isSafari && reqObj.status === undefined;
  108.         
  109.         statObj.isOK = (statObj.isLocal || (statObj.status > 199 && statObj.status < 300));
  110.         statObj.statusText = reqObj.statusText || '';
  111.     } catch(e){ //status may not avail/valid yet (or called too early).
  112.       } 
  113.     
  114.      return statObj; 
  115.         
  116.         },
  117.         handleTransactionResponse:function(o, callback, isAbort)
  118. {
  119. callback = callback || {};
  120. var responseObject=null;
  121.  if(!o.status.isError){
  122. o.status = this.getHttpStatus(o.conn);  
  123.   /* create and enhance the response with proper status and XMLDOM if necessary */
  124.   responseObject = this.createResponseObject(o, callback.argument);
  125.  }
  126.    if(o.status.isError){ /* checked again in case exception was raised - ActiveX was disabled during XML-DOM creation? */
  127.        // And mixin everything the XHR object had to offer as well
  128.    responseObject = Ext.applyIf(responseObject||{},this.createExceptionObject(o.tId, callback.argument, (isAbort ? isAbort : false)));
  129.    
  130.  }
  131.  responseObject.options = o.options;
  132.  responseObject.stat = o.status;
  133.  
  134.  if (o.status.isOK && !o.status.isError) {
  135. if (callback.success) {
  136. if (!callback.scope) {
  137. callback.success(responseObject);
  138. }
  139. else {
  140. callback.success.apply(callback.scope, [responseObject]);
  141. }
  142. }
  143.   } else {
  144. if (callback.failure) {
  145. if (!callback.scope) {
  146. callback.failure(responseObject);
  147. }
  148. else {
  149. callback.failure.apply(callback.scope, [responseObject]);
  150. }
  151. }
  152.  }
  153. if(o.options.async){
  154. this.releaseObject(o);
  155. responseObject = null;
  156. }else{ 
  157. this.releaseObject(o);
  158. return responseObject; 
  159. }
  160. },
  161. createResponseObject:function(o, callbackArg)
  162. {
  163.     var obj = {};
  164.     var headerObj = {},headerStr='';
  165.     try{  //to catch bad encoding problems here
  166. obj.responseText = o.conn.responseText;
  167.     }catch(e){obj.responseText ='';}
  168.     obj.responseXML = o.conn.responseXML;
  169.     try{
  170. headerStr = o.conn.getAllResponseHeaders()||'';
  171.     } catch(e){}
  172.     if(o.status.isLocal){
  173.    o.status.isOK = ((o.status.status = (!!obj.responseText.length)?200:404) == 200);
  174.    if(o.status.isOK && (!obj.responseXML || obj.responseXML.childNodes.length == 0)){
  175. var xdoc=null;
  176. try{   //ActiveX may be disabled
  177. if(typeof(DOMParser) == 'undefined'){ 
  178. xdoc=new ActiveXObject("Microsoft.XMLDOM"); 
  179. xdoc.async="false";
  180. xdoc.loadXML(obj.responseText); 
  181. }else{ 
  182. try{  //Opera 9 will fail parsing non-XML content, so trap here.
  183. var domParser = new DOMParser(); 
  184. xdoc = domParser.parseFromString(obj.responseText, 'application/xml'); 
  185. }catch(ex){}
  186. finally{domParser = null;}
  187. }
  188. } catch(ex){ 
  189. o.status.isError = true; 
  190. o.status.error = ex;
  191. }
  192. obj.responseXML = xdoc;
  193.     }
  194.     if(obj.responseXML){
  195. var parseBad = (obj.responseXML.parseError || 0) != 0 || obj.responseXML.childNodes.length == 0;
  196. if(!parseBad){
  197. headerStr = 'Content-Type: ' + (obj.responseXML.contentType || 'text/xml') + 'n' + headerStr ;
  198. }     
  199.     }
  200.     }
  201.    var header = headerStr.split('n');
  202.    for (var i = 0; i < header.length; i++) {
  203.         var delimitPos = header[i].indexOf(':');
  204.      if (delimitPos != -1) {
  205. headerObj[header[i].substring(0, delimitPos)] = header[i].substring(delimitPos + 2);
  206.      }
  207.     }
  208.     obj.tId = o.tId;
  209.     obj.status = o.status.status;
  210.     obj.statusText = o.status.statusText;
  211.     obj.getResponseHeader = headerObj;
  212.     obj.getAllResponseHeaders = headerStr;
  213.     obj.stat = o.status
  214.     if (typeof callbackArg !== undefined) {
  215. obj.argument = callbackArg;
  216.     }
  217.     return obj;
  218.         },
  219.         
  220. request : function(method, uri, cb, data, options) {
  221.             
  222.              options = Ext.apply({async:true,
  223.    headers:false,
  224.    userId:null,
  225.    password:null,
  226.    xmlData:null }, options||{});
  227.                              
  228.                 var hs = options.headers;
  229.                 if(hs){
  230.                     for(var h in hs){
  231.                         if(hs.hasOwnProperty(h)){
  232.                             this.initHeader(h, hs[h], false);
  233.                         }
  234.                     }
  235.                 }
  236.                 if(options.xmlData){
  237.                     this.initHeader('Content-Type', 'text/xml', false);
  238.                     method = 'POST';
  239.                     data = options.xmlData;
  240.                 }
  241.                          
  242.     return this.makeRequest(method, uri, cb, data, options);
  243.     
  244.         },
  245.         asyncRequest:function(method, uri, callback, postData)
  246.         {
  247.             var o = this.getConnectionObject();
  248.             if (!o || o.status.isError) {
  249.                 return null;
  250.             }
  251.             else {
  252.              o.options = options;
  253.                 try{
  254. o.conn.open(method, uri, true);
  255. } catch(ex){
  256. o.status.isError = true;
  257. o.status.error = ex;
  258. return Ext.apply(o,this.handleTransactionResponse(o, callback));
  259. }
  260. if (this.useDefaultXhrHeader) {
  261.     if (!this.defaultHeaders['X-Requested-With']) {
  262. this.initHeader('X-Requested-With', this.defaultXhrHeader, true);
  263.     }
  264. }
  265. if(postData && this.useDefaultHeader){
  266.     this.initHeader('Content-Type', this.defaultPostHeader);
  267. }
  268.  if (this.hasDefaultHeaders || this.hasHeaders) {
  269.     this.setHeader(o);
  270. }
  271. this.handleReadyState(o, callback);
  272. try{ o.conn.send(postData || null);
  273. } catch(ex){ 
  274. o.status.isError=true;
  275. o.status.error = ex;
  276. return Ext.apply(o,this.handleTransactionResponse(o, callback));
  277. }
  278. return o;
  279.             }
  280.         },
  281.         
  282.         makeRequest:function(method, uri, callback, postData, options)
  283.         {
  284.             var o = this.getConnectionObject();
  285.                   
  286.             if (!o || o.status.isError) {
  287.                 return null;
  288.             }
  289.             else {
  290.              o.options = options;
  291.                 try{
  292. o.conn.open(method, uri, options.async, options.userId, options.password);
  293. } catch(ex){
  294. o.status.isError = true;
  295. o.status.error = ex;
  296. var r=this.handleTransactionResponse(o, callback);
  297. return Ext.apply(o,r);
  298. }
  299. if (this.useDefaultXhrHeader) {
  300.     if (!this.defaultHeaders['X-Requested-With']) {
  301. this.initHeader('X-Requested-With', this.defaultXhrHeader, true);
  302.     }
  303. }
  304. if(postData && this.useDefaultHeader){
  305.     this.initHeader('Content-Type', this.defaultPostHeader);
  306. }
  307.  if (this.hasDefaultHeaders || this.hasHeaders) {
  308.     this.setHeader(o);
  309. }
  310. if(o.options.async){ //Timers won't work here as it's a blocking call
  311. this.handleReadyState(o, callback);
  312. }
  313. try{ o.conn.send(postData || null);
  314. } catch(ex){ 
  315. //Ext.apply(o,this.handleTransactionResponse(o, callback));
  316. }
  317. return options.async?o:Ext.apply(o,this.handleTransactionResponse(o, callback));
  318.             }
  319.    }});
  320. Ext.lib.Ajax.forceActiveX = (document.location.protocol == 'file:');/* or other true/false mechanism */