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>