You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2016/05/20 17:23:14 UTC

[1/2] wicket git commit: WICKET-6155 escape JavaScript object values

Repository: wicket
Updated Branches:
  refs/heads/master 76096b7f9 -> e1157cb78


WICKET-6155 escape JavaScript object values


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c3468068
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c3468068
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c3468068

Branch: refs/heads/master
Commit: c3468068b8e13c36438e07c8b8d73ec2419076a5
Parents: 76096b7
Author: Sven Meier <sv...@apache.org>
Authored: Fri May 20 17:26:01 2016 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Fri May 20 18:22:18 2016 +0200

----------------------------------------------------------------------
 .../examples/ajax/builtin/modal/ModalWindowPage.java     |  2 +-
 .../extensions/ajax/markup/html/modal/ModalWindow.java   | 11 +++++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c3468068/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalWindowPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalWindowPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalWindowPage.java
index ed40cb5..49b9440 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalWindowPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalWindowPage.java
@@ -91,7 +91,7 @@ public class ModalWindowPage extends BasePage
 		add(modal2 = new ModalWindow("modal2"));
 
 		modal2.setContent(new ModalPanel1(modal2.getContentId()));
-		modal2.setTitle("This is modal window with panel content.");
+		modal2.setTitle("Modal window\n'panel\" content.");
 		modal2.setCookieName("modal-2");
 
 		modal2.setCloseButtonCallback(new ModalWindow.CloseButtonCallback()

http://git-wip-us.apache.org/repos/asf/wicket/blob/c3468068/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
index f2f29ad..36e3d20 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
@@ -42,6 +42,7 @@ import org.apache.wicket.resource.CoreLibrariesContributor;
 import org.apache.wicket.util.io.IClusterable;
 import org.apache.wicket.util.lang.EnumeratedType;
 import org.apache.wicket.util.string.AppendingStringBuffer;
+import org.apache.wicket.util.string.Strings;
 
 /**
  * Modal window component.
@@ -1158,10 +1159,16 @@ public class ModalWindow extends Panel
 	 * @param key
 	 * @param value
 	 */
-	private void appendAssignment(final AppendingStringBuffer buffer, final CharSequence key,
-		final CharSequence value)
+	private void appendAssignment(final AppendingStringBuffer buffer, final CharSequence key, CharSequence value)
 	{
 		buffer.append(key).append("=\"");
+		
+		if (value != null)
+		{
+			value = Strings.replaceAll(value, "\"", "\\\"");
+			value = Strings.replaceAll(value, "\n", "\\n");
+		}
+		
 		buffer.append(value);
 		buffer.append("\";\n");
 	}


[2/2] wicket git commit: WICKET-6155 use JSON for settings

Posted by sv...@apache.org.
WICKET-6155 use JSON for settings


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e1157cb7
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e1157cb7
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e1157cb7

Branch: refs/heads/master
Commit: e1157cb783cb82d791bdf97869d4924bd369a1f0
Parents: c346806
Author: Sven Meier <sv...@apache.org>
Authored: Fri May 20 18:55:36 2016 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Fri May 20 18:55:36 2016 +0200

----------------------------------------------------------------------
 .../ajax/markup/html/modal/ModalWindow.java     | 119 +++++--------------
 1 file changed, 31 insertions(+), 88 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/e1157cb7/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
index 36e3d20..66ad3f0 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
@@ -21,6 +21,8 @@ import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.json.JSONObject;
+import org.apache.wicket.ajax.json.JsonFunction;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
@@ -42,7 +44,6 @@ import org.apache.wicket.resource.CoreLibrariesContributor;
 import org.apache.wicket.util.io.IClusterable;
 import org.apache.wicket.util.lang.EnumeratedType;
 import org.apache.wicket.util.string.AppendingStringBuffer;
-import org.apache.wicket.util.string.Strings;
 
 /**
  * Modal window component.
@@ -1008,37 +1009,28 @@ public class ModalWindow extends Panel
 	 */
 	protected final String getWindowOpenJavaScript()
 	{
-		AppendingStringBuffer buffer = new AppendingStringBuffer(500);
-
-		if (isCustomComponent())
-		{
-			buffer.append("var element = document.getElementById(\"");
-			buffer.append(getContentMarkupId());
-			buffer.append("\");\n");
-		}
-
-		buffer.append("var settings = new Object();\n");
+		JSONObject settings = new JSONObject();
 
-		appendAssignment(buffer, "settings.minWidth", getMinimalWidth());
-		appendAssignment(buffer, "settings.minHeight", getMinimalHeight());
-		appendAssignment(buffer, "settings.className", getCssClassName());
-		appendAssignment(buffer, "settings.width", getInitialWidth());
+		settings.put("minWidth", getMinimalWidth());
+		settings.put("minHeight", getMinimalHeight());
+		settings.put("className", getCssClassName());
+		settings.put("width", getInitialWidth());
 
 		if ((isUseInitialHeight() == true) || (isCustomComponent() == false))
 		{
-			appendAssignment(buffer, "settings.height", getInitialHeight());
+			settings.put("height", getInitialHeight());
 		}
 		else
 		{
-			buffer.append("settings.height=null;\n");
+			settings.put("height", (Object)null);
 		}
 
-		appendAssignment(buffer, "settings.resizable", isResizable());
+		settings.put("resizable", isResizable());
 
 		if (isResizable() == false)
 		{
-			appendAssignment(buffer, "settings.widthUnit", getWidthUnit());
-			appendAssignment(buffer, "settings.heightUnit", getHeightUnit());
+			settings.put("widthUnit", getWidthUnit());
+			settings.put("heightUnit", getHeightUnit());
 		}
 
 		if (isCustomComponent() == false)
@@ -1062,37 +1054,36 @@ public class ModalWindow extends Panel
 				pageUrl = requestCycle.urlFor(handler);
 			}
 
-			appendAssignment(buffer, "settings.src", pageUrl);
+			settings.put("src", pageUrl);
 		}
 		else
 		{
-			buffer.append("settings.element=element;\n");
+			settings.put("element", new JsonFunction("document.getElementById(\"" + getContentMarkupId() + "\")"));
 		}
 
 		if (getCookieName() != null)
 		{
-			appendAssignment(buffer, "settings.cookieId", getCookieName());
+			settings.put("cookieId", getCookieName());
 		}
 
 		String title = getTitle() != null ? getTitle().getObject() : null;
 		if (title != null)
 		{
-			String escaped = getDefaultModelObjectAsString(title);
-			appendAssignment(buffer, "settings.title", escaped);
+			settings.put("title", getDefaultModelObjectAsString(title));
 		}
 
 		if (getMaskType() == MaskType.TRANSPARENT)
 		{
-			buffer.append("settings.mask=\"transparent\";\n");
+			settings.put("mask", "transparent");
 		}
 		else if (getMaskType() == MaskType.SEMI_TRANSPARENT)
 		{
-			buffer.append("settings.mask=\"semi-transparent\";\n");
+			settings.put("mask", "semi-transparent");
 		}
 
-		appendAssignment(buffer, "settings.autoSize", autoSize);
+		settings.put("autoSize", autoSize);
 
-		appendAssignment(buffer, "settings.unloadConfirmation", showUnloadConfirmation());
+		settings.put("unloadConfirmation", showUnloadConfirmation());
 
 		// set true if we set a windowclosedcallback
 		boolean haveCloseCallback = false;
@@ -1102,9 +1093,7 @@ public class ModalWindow extends Panel
 		if (windowClosedCallback != null)
 		{
 			WindowClosedBehavior behavior = getBehaviors(WindowClosedBehavior.class).get(0);
-			buffer.append("settings.onClose = function() { ");
-			buffer.append(behavior.getCallbackScript());
-			buffer.append(" };\n");
+			settings.put("onClose", new JsonFunction("function() { " + behavior.getCallbackScript() + " }"));
 
 			haveCloseCallback = true;
 		}
@@ -1114,74 +1103,28 @@ public class ModalWindow extends Panel
 		if ((closeButtonCallback != null) || (haveCloseCallback == false))
 		{
 			CloseButtonBehavior behavior = getBehaviors(CloseButtonBehavior.class).get(0);
-			buffer.append("settings.onCloseButton = function() { ");
-			buffer.append(behavior.getCallbackScript());
-			buffer.append(";return false;};\n");
+			settings.put("onCloseButton", new JsonFunction("function() { " + behavior.getCallbackScript() + "; return false; }"));
 		}
 
-		postProcessSettings(buffer);
-
-		buffer.append(getShowJavaScript());
-		return buffer.toString();
-	}
-
-	/**
-	 * 
-	 * @param buffer
-	 * @param key
-	 * @param value
-	 */
-	private void appendAssignment(final AppendingStringBuffer buffer, final CharSequence key,
-		final int value)
-	{
-		buffer.append(key).append('=');
-		buffer.append(value);
-		buffer.append(";\n");
-	}
-
-	/**
-	 * 
-	 * @param buffer
-	 * @param key
-	 * @param value
-	 */
-	private void appendAssignment(final AppendingStringBuffer buffer, final CharSequence key,
-		final boolean value)
-	{
-		buffer.append(key).append('=');
-		buffer.append(Boolean.toString(value));
-		buffer.append(";\n");
-	}
-
-	/**
-	 * 
-	 * @param buffer
-	 * @param key
-	 * @param value
-	 */
-	private void appendAssignment(final AppendingStringBuffer buffer, final CharSequence key, CharSequence value)
-	{
-		buffer.append(key).append("=\"");
+		postProcessSettings(settings);
 		
-		if (value != null)
-		{
-			value = Strings.replaceAll(value, "\"", "\\\"");
-			value = Strings.replaceAll(value, "\n", "\\n");
-		}
+		AppendingStringBuffer buffer = new AppendingStringBuffer(500);
+		buffer.append("var settings = ");
+		buffer.append(settings.toString());
+		buffer.append(";");
 		
-		buffer.append(value);
-		buffer.append("\";\n");
+		buffer.append(getShowJavaScript());
+		return buffer.toString();
 	}
 
 	/**
 	 * Method that allows tweaking the settings
 	 * 
 	 * @param settings
-	 * @return settings javascript
+	 * @return settings json
 	 */
-	protected AppendingStringBuffer postProcessSettings(final AppendingStringBuffer settings)
+	protected void postProcessSettings(JSONObject settings)
 	{
-		return settings;
 	}
 
 	/**