You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2021/01/23 17:19:03 UTC
[ofbiz-framework] branch trunk updated: Improved: Improve
description encoding in 2 classes: MacroFormRenderer and
renderableFtlFormElementsBuilder (OFBIZ-12159)
This is an automated email from the ASF dual-hosted git repository.
jleroux pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new c54dced Improved: Improve description encoding in 2 classes: MacroFormRenderer and renderableFtlFormElementsBuilder (OFBIZ-12159)
c54dced is described below
commit c54dced51c92e511d8112546e7117fdfe4c6f652
Author: Jacques Le Roux <ja...@les7arts.com>
AuthorDate: Sat Jan 23 18:18:16 2021 +0100
Improved: Improve description encoding in 2 classes: MacroFormRenderer and renderableFtlFormElementsBuilder (OFBIZ-12159)
Concern MacroFormRenderer::makeHyperlinkByType and renderableFtlFormElementsBuilder::encode
I'm not sure it's useful but it's harmless
---
.../widget/renderer/macro/MacroFormRenderer.java | 17 ++++++++---
.../macro/RenderableFtlFormElementsBuilder.java | 35 +++++++++++-----------
2 files changed, 31 insertions(+), 21 deletions(-)
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
index c1bbb64..27eb9f1 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
@@ -38,6 +38,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import org.apache.commons.text.StringEscapeUtils;
import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.base.util.StringUtil;
import org.apache.ofbiz.base.util.UtilCodec;
@@ -90,13 +91,12 @@ import org.apache.ofbiz.widget.renderer.FormStringRenderer;
import org.apache.ofbiz.widget.renderer.Paginator;
import org.apache.ofbiz.widget.renderer.UtilHelpText;
import org.apache.ofbiz.widget.renderer.VisualTheme;
+import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtl;
+import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlMacroCall;
import org.jsoup.nodes.Element;
import com.ibm.icu.util.Calendar;
-import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlMacroCall;
-import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtl;
-
/**
* Widget Library - Form Renderer implementation based on Freemarker macros
*/
@@ -3017,7 +3017,16 @@ public final class MacroFormRenderer implements FormStringRenderer {
String> parameterMap, String description, String targetWindow, String confirmation, ModelFormField modelFormField,
HttpServletRequest request, HttpServletResponse response, Map<String, Object> context) throws IOException {
String realLinkType = WidgetWorker.determineAutoLinkType(linkType, target, targetType, request);
- String encodedDescription = internalEncoder.encode(description);
+ UtilCodec.SimpleEncoder simpleEncoder = null;
+ String encodedDescription = null;
+ if (description.equals(StringEscapeUtils.unescapeEcmaScript(StringEscapeUtils.unescapeHtml4(description)))) {
+ simpleEncoder = (UtilCodec.SimpleEncoder) context.get("simpleEncoder");
+ } else {
+ simpleEncoder = UtilCodec.getEncoder("string");
+ }
+ if (simpleEncoder != null) {
+ encodedDescription = simpleEncoder.encode(description);
+ }
// get the parameterized pagination index and size fields
int paginatorNumber = WidgetWorker.getPaginatorNumber(context);
ModelForm modelForm = modelFormField.getModelForm();
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java
index a2a5402..30cb6fe 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java
@@ -18,6 +18,20 @@
*******************************************************************************/
package org.apache.ofbiz.widget.renderer.macro;
+import java.io.StringWriter;
+import java.net.URI;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.text.StringEscapeUtils;
import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.base.util.UtilCodec;
import org.apache.ofbiz.base.util.UtilFormatOut;
@@ -36,27 +50,15 @@ import org.apache.ofbiz.widget.model.ModelScreenWidget.Label;
import org.apache.ofbiz.widget.model.ModelTheme;
import org.apache.ofbiz.widget.renderer.Paginator;
import org.apache.ofbiz.widget.renderer.VisualTheme;
-import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlMacroCall;
import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtl;
+import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlMacroCall;
import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlMacroCall.RenderableFtlMacroCallBuilder;
+import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlNoop;
import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlSequence;
import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlString;
-import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlNoop;
import org.apache.ofbiz.widget.renderer.macro.renderable.RenderableFtlString.RenderableFtlStringBuilder;
import org.jsoup.nodes.Element;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import java.io.StringWriter;
-import java.net.URI;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-
/**
* Creates RenderableFtl objects used to render the various elements of a form.
*/
@@ -499,7 +501,8 @@ public final class RenderableFtlFormElementsBuilder {
return value;
}
UtilCodec.SimpleEncoder encoder = (UtilCodec.SimpleEncoder) context.get("simpleEncoder");
- if (modelFormField.getEncodeOutput() && encoder != null) {
+ boolean alreadyEncoded = value.equals(StringEscapeUtils.unescapeEcmaScript(StringEscapeUtils.unescapeHtml4(value)));
+ if (modelFormField.getEncodeOutput() && encoder != null && !alreadyEncoded) {
value = encoder.encode(value);
} else {
value = internalEncoder.encode(value);
@@ -584,8 +587,6 @@ public final class RenderableFtlFormElementsBuilder {
.build();
setPostMultiFormRenderableFtl(wrapper, context);
}
-
- final Map<String, Object> wholeFormContext = UtilGenerics.cast(context.get("wholeFormContext"));
}
private RenderableFtl getPostMultiFormRenderableFtl(final Map<String, Object> context) {