You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gm...@apache.org on 2007/11/14 15:30:32 UTC

svn commit: r594905 - in /myfaces/tomahawk/trunk/sandbox: core/src/main/java/org/apache/myfaces/custom/ppr/ core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ core/src/main/tld/ examples/src/main/webapp/

Author: gmuellan
Date: Wed Nov 14 06:30:28 2007
New Revision: 594905

URL: http://svn.apache.org/viewvc?rev=594905&view=rev
Log:
Added new attribute "excludeFromStoppingPeriodicalUpdate" to ppr component.

Modified:
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js
    myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld
    myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java?rev=594905&r1=594904&r2=594905&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java Wed Nov 14 06:30:28 2007
@@ -44,6 +44,8 @@
 
 	private String _periodicalTriggers;
 
+	private String _excludeFromStoppingPeriodicalUpdate;
+
 	private String _partialTriggerPattern;
 
 	private String _inlineLoadingMessage;
@@ -122,6 +124,21 @@
 		this._partialTriggerPattern = partialTriggerPattern;
 	}
 
+	public String getExcludeFromStoppingPeriodicalUpdate()
+	{
+		if(_excludeFromStoppingPeriodicalUpdate != null)
+		{
+			return _excludeFromStoppingPeriodicalUpdate;
+		}
+		ValueBinding vb = getValueBinding("excludeFromStoppingPeriodicalUpdate");
+		return vb != null ? RendererUtils.getStringValue(getFacesContext(), vb) : null;
+	}
+
+	public void setExcludeFromStoppingPeriodicalUpdate(String excludeFromStoppingPeriodicalUpdate)
+	{
+		_excludeFromStoppingPeriodicalUpdate = excludeFromStoppingPeriodicalUpdate;
+	}
+
 	public String getInlineLoadingMessage()
 	{
 		if(_inlineLoadingMessage != null)
@@ -169,7 +186,6 @@
 
 	public void restoreState(FacesContext context, Object state)
 	{
-
 		Object[] values = (Object[]) state;
 		super.restoreState(context, values[0]);
 		_partialTriggers = (String) values[1];
@@ -178,12 +194,12 @@
 		_periodicalTriggers = (String) values[4];
 		_showDebugMessages = (Boolean) values[5];
 		_stateUpdate = (Boolean) values[6];
-
+		_excludeFromStoppingPeriodicalUpdate = (String) values[7];
 	}
 
 	public Object saveState(FacesContext context)
 	{
-		Object[] values = new Object[7];
+		Object[] values = new Object[8];
 		values[0] = super.saveState(context);
 		values[1] = _partialTriggers;
 		values[2] = _partialTriggerPattern;
@@ -191,6 +207,7 @@
 		values[4] = _periodicalTriggers;
 		values[5] = _showDebugMessages;
 		values[6] = _stateUpdate;
+		values[7] = _excludeFromStoppingPeriodicalUpdate;
 		return values;
 	}
 }

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java?rev=594905&r1=594904&r2=594905&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java Wed Nov 14 06:30:28 2007
@@ -288,6 +288,13 @@
 					}
 				}
 			}
+
+			String idRegex = pprGroup.getExcludeFromStoppingPeriodicalUpdate();
+
+			if(idRegex != null)
+			{
+				script.append(pprCtrlReference + ".excludeFromStoppingPeriodicalUpdate('" + idRegex + "');");
+			}
 		}
 
 		String partialTriggerId;

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java?rev=594905&r1=594904&r2=594905&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java Wed Nov 14 06:30:28 2007
@@ -37,6 +37,8 @@
 
 	private String _periodicalTriggers;
 
+	private String _excludeFromStoppingPeriodicalUpdate;
+
 	private String _showDebugMessages;
 
 	private String _stateUpdate;
@@ -59,6 +61,7 @@
 		_periodicalTriggers = null;
 		_showDebugMessages = null;
 		_stateUpdate = null;
+		_excludeFromStoppingPeriodicalUpdate = null;
 	}
 
 	protected void setProperties(UIComponent component)
@@ -70,6 +73,7 @@
 		setStringProperty(component, "inlineLoadingMessage", _inlineLoadingMessage);
 		setIntegerProperty(component, "periodicalUpdate", _periodicalUpdate);
 		setStringProperty(component, "periodicalTriggers", _periodicalTriggers);
+		setStringProperty(component, "excludeFromStoppingPeriodicalUpdate", _excludeFromStoppingPeriodicalUpdate);
 		setBooleanProperty(component, "showDebugMessages", _showDebugMessages);
 		setBooleanProperty(component, "stateUpdate", _stateUpdate);
 	}
@@ -127,5 +131,10 @@
 	public void setStateUpdate(String stateUpdate)
 	{
 		_stateUpdate = stateUpdate;
+	}
+
+	public void setExcludeFromStoppingPeriodicalUpdate(String excludeFromStoppingPeriodicalUpdate)
+	{
+		_excludeFromStoppingPeriodicalUpdate = excludeFromStoppingPeriodicalUpdate;
 	}
 }

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js?rev=594905&r1=594904&r2=594905&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js Wed Nov 14 06:30:28 2007
@@ -26,8 +26,9 @@
 org.apache.myfaces.PPRCtrl = function(formId, showDebugMessages, stateUpdate)
 {
     this.blockPeriodicalUpdateDuringPost = false;
-    this.showDebugMessages = showDebugMessages;
+	this.showDebugMessages = showDebugMessages;
     this.stateUpdate = stateUpdate;
+	this.linkIdRegexToExclude = '';
 
 	this.subFormId = new Array();
 
@@ -181,12 +182,13 @@
     }
 };
 
-// registering an interceptor onsubmit function on each form to block periodical refresh
-// and updating the dom if a page submit occurs
-// this blocking should only occur if onsubmit() returns true, otherwise not.
-
-org.apache.myfaces.PPRCtrl.prototype.registerOnSubmitInterceptor = function() {
+// registering an interceptor onsubmit function on each form to block
+// periodical refresh and updating the dom if a page submit occurs.
+// Blocking should only occur if onsubmit() returns true, otherwise not
+// and not for links which are excluded via a regex pattern. 
 
+org.apache.myfaces.PPRCtrl.prototype.registerOnSubmitInterceptor = function()
+{
     var ppr = this;
 
     for (var i = 0; i < document.forms.length; i++)
@@ -195,25 +197,56 @@
         var origOnsubmit = form.onsubmit;
         form.onsubmit = function()
         {
-            if(null != origOnsubmit && typeof origOnsubmit != "undefined")
+			var returnValue = false;
+
+			if(null != origOnsubmit && typeof origOnsubmit != "undefined")
             {
                var doSubmit = origOnsubmit();
                if(doSubmit || typeof doSubmit == "undefined")
                {
-                   ppr.blockPeriodicalUpdateDuringPost = true;
-                   return true;
+				   returnValue = true;
                }
-               return false;
             }
             else
             {
-                ppr.blockPeriodicalUpdateDuringPost = true;
-                return true;
+                returnValue = true;
             }
-        }
+
+			var linkFound = false;
+
+			if(ppr.linkIdRegexToExclude != '')
+			{
+				for(var i = 0; i < document.forms.length; i++)
+				{
+					var form = document.forms[i];
+					var linkName = form.id + ':_idcl';
+					var clickedLink = form.elements[linkName];
+
+					if(clickedLink && clickedLink.value.match(ppr.linkIdRegexToExclude))
+					{
+						ppr.blockPeriodicalUpdateDuringPost = false;
+						linkFound = true;
+						break;
+					}
+				}
+			}
+
+			if(!linkFound)
+			{
+				ppr.blockPeriodicalUpdateDuringPost = true;
+			}
+
+			return returnValue;
+		}
     }
 };
 
+// registering link-regex which pattern should not block the periodical update when being clicked
+
+org.apache.myfaces.PPRCtrl.prototype.excludeFromStoppingPeriodicalUpdate = function(idRegex)
+{
+	this.linkIdRegexToExclude = idRegex;
+};
 
 // init function of automatically partial page refresh
 

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld?rev=594905&r1=594904&r2=594905&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld Wed Nov 14 06:30:28 2007
@@ -1306,7 +1306,16 @@
                          No partialTriggers are needed.
             </description>
         </attribute>
-        <attribute>
+		<attribute>
+			<name>excludeFromStoppingPeriodicalUpdate</name>
+			<required>false</required>
+			<rtexprvalue>false</rtexprvalue>
+            <description>Regular expression of link-client-ids for which the periodical update should not be stopped.
+						 Normally when a link is clicked during periodical update, the update is stopped in order to prevent the server from getting
+						 unexpected requests. This behaviour may be unwanted e.g. in case of opening new windows with a link.
+			</description>
+        </attribute>
+		<attribute>
 			<name>showDebugMessages</name>
 			<required>false</required>
 			<rtexprvalue>false</rtexprvalue>
@@ -1776,7 +1785,6 @@
 				Note also that the useCustomSecurity should be set to true.
 	      </description>
       </attribute>
-
 
       <attribute>
          <name>penaltyRatio</name>

Modified: myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp?rev=594905&r1=594904&r2=594905&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp (original)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp Wed Nov 14 06:30:28 2007
@@ -102,8 +102,8 @@
 
             <h:panelGrid>
                 <h:outputText value="List of updated addresses after 5000ms: (another ppr-group)"/>
-                <s:pprPanelGroup id="periodicalUpdatedArea2" periodicalUpdate="5000" showDebugMessages="false"
-                                 stateUpdate="false">
+                <s:pprPanelGroup id="periodicalUpdatedArea2" periodicalUpdate="2000" showDebugMessages="false"
+                                 stateUpdate="false" excludeFromStoppingPeriodicalUpdate=".dontBlock">
                 <t:dataTable var="address" value="#{pprExampleBean.periodicalUpdatedValues}">
                     <t:column>
                         <f:facet name="header">
@@ -121,9 +121,16 @@
                 </s:pprPanelGroup>
             </h:panelGrid>
             
-            <h:commandButton action="#{pprExampleBean.doTimeConsumingStuff}" value="test blocking of auto refresh"/>
+            <h:commandButton action="#{pprExampleBean.doTimeConsumingStuff}" value="blocking of auto refresh"/>
 
-        </h:panelGrid>
+			<h:commandLink action="#{pprExampleBean.doTimeConsumingStuff}" value="new window, blocking should not occur" id="dontBlock"
+						   target="_blank"/>
+
+			<h:commandLink action="#{pprExampleBean.doTimeConsumingStuff}" value="blocking should not occur" id="second_dontBlock"/>
+
+			<h:commandLink action="#{pprExampleBean.doTimeConsumingStuff}" value="also blocking" id="block"/>
+
+		</h:panelGrid>
     </h:form>