X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/code-display.html diff --git a/docs/source/code-display.html b/docs/source/code-display.html new file mode 100644 index 00000000..7b3f148e --- /dev/null +++ b/docs/source/code-display.html @@ -0,0 +1,378 @@ + + + The source code + + + + +
// 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