[richfaces-svn-commits] JBoss Rich Faces SVN: r2243 - in trunk: framework/impl/src/main/javascript/prototype and 2 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue Aug 14 07:24:40 EDT 2007


Author: nbelaevski
Date: 2007-08-14 07:24:40 -0400 (Tue, 14 Aug 2007)
New Revision: 2243

Modified:
   trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
   trunk/framework/impl/src/main/javascript/prototype/patches.js
   trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
   trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js
Log:
- prototype.js: added Event.unloadElementsCache() & Element.isUninitialized() methods
- AJAX.js clears observers cache on AJAX response
- modalPanel.js switched to Element.isUninitialized()

Modified: trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
===================================================================
--- trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js	2007-08-14 10:58:48 UTC (rev 2242)
+++ trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js	2007-08-14 11:24:40 UTC (rev 2243)
@@ -288,7 +288,7 @@
 		if( ! newnode ) { LOG.error("New node for ID "+id+" is not present in response");return;}
 		var oldnode = window.document.getElementById(id);
 		if ( oldnode  ) {
-			var anchor = oldnode.parentNode ;
+			var anchor = oldnode.parentNode;
     // need to check for firstChild due to opera 8 bug with hasChildNodes
 			Sarissa.clearChildNodes(oldnode);
 			if(oldnode.outerHTML && !oldnode.tagName.match( /(tbody|thead|tfoot|tr|th|td)/i ) ){
@@ -705,6 +705,11 @@
         	  		newinputs = req.getElementsByTagName("INPUT",idsSpan);
         	  		A4J.AJAX.replaceViewState(inputs,newinputs);
         	  }
+        	  
+			  if (typeof Event != "undefined") {
+			  	Event.unloadElementsCache();
+			  }        	  
+        	  
         	  // Process listeners.
         	  for(var li = 0; li < A4J.AJAX._listeners.length; li++){
         	  	var listener = A4J.AJAX._listeners[li];
@@ -793,6 +798,11 @@
 								var	oDomDoc = (new DOMParser()).parseFromString(req.getResponseText(), "text/xml");
 								if(Sarissa.getParseErrorText(oDomDoc) == Sarissa.PARSED_OK){  
 								  LOG.debug("response has parsed as DOM documnet.");
+
+								  if (typeof Event != "undefined") {
+								  	Event.unloadElementsCache();
+								  }        	  
+
 						    	  Sarissa.clearChildNodes(window.document.documentElement);
 								  var docNodes = oDomDoc.documentElement.childNodes;
 								  for(var i = 0;i<docNodes.length;i++){

Modified: trunk/framework/impl/src/main/javascript/prototype/patches.js
===================================================================
--- trunk/framework/impl/src/main/javascript/prototype/patches.js	2007-08-14 10:58:48 UTC (rev 2242)
+++ trunk/framework/impl/src/main/javascript/prototype/patches.js	2007-08-14 11:24:40 UTC (rev 2243)
@@ -27,4 +27,34 @@
 	}
 	
 	return supposedParent == node;
+};
+
+Element.isUninitialized = function(element) {
+	if (element) {
+		if (!element.parentNode || element.document && element.document.readyState == "uninitialized") {
+			return true;
+		}
+	
+		return false;
+	}
+};
+
+Event.unloadElementsCache = function() {
+    if (!Event.observers) return;
+    var compact = false;
+    var observers = Event.observers;
+    for (var i = 0, length = observers.length; i < length; i++) {
+    	var observer = observers[i];
+    	var elt = observer[0];
+    	
+    	if (Element.isUninitialized(elt)) {
+	    	compact = true;
+	    	Event.stopObserving.apply(Event, observer);
+	    	observers[i] = null;
+    	}
+    }
+    
+    if (compact) {
+    	Event.observers = observers.compact();
+    }
 };
\ No newline at end of file

Modified: trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
===================================================================
--- trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js	2007-08-14 10:58:48 UTC (rev 2242)
+++ trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js	2007-08-14 11:24:40 UTC (rev 2243)
@@ -50,16 +50,6 @@
 	return str.substr(0,pxIndex);
 };
 
-Richfaces.isNodeInDOMTree = function(node) {
-	var root = document.documentElement;
-	var elt = node;
-	while (elt && elt != root) {
-		elt = elt.parentNode;
-	}
-
-	return !!elt;
-};
-
 Richfaces.visitTree = function(root, callback) {
 	var node = root;
 	if (!node) {

Modified: trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js
===================================================================
--- trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js	2007-08-14 10:58:48 UTC (rev 2242)
+++ trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js	2007-08-14 11:24:40 UTC (rev 2243)
@@ -41,7 +41,7 @@
 
 			var elt = $(panel.markerId);
 
-			if (!Richfaces.isNodeInDOMTree(elt)) {
+			if (Element.isUninitialized(elt)) {
 				panel.destroy();
 
 				ModalPanel.panels.splice(i, 1);




More information about the richfaces-svn-commits mailing list