This is an automated email from the ASF dual-hosted git repository.
jamesyong 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 60c78d2 Improved: <script-template> widget tag (OFBIZ-11686)
60c78d2 is described below
commit 60c78d24be4ab2b4f8aa2f6603968863c12b9b92
Author: James Yong <[email protected]>
AuthorDate: Fri May 15 11:16:15 2020 +0800
Improved: <script-template> widget tag (OFBIZ-11686)
Removed script-template tag.
Use multi-block=true on html-template tag instead.
---
applications/order/template/order/FindOrders.ftl | 72 +++++++++++-
.../order/template/order/FindOrders.js.ftl | 86 --------------
.../order/widget/ordermgr/OrderViewScreens.xml | 3 +-
.../webapp/ftl/ScriptTemplateListTransform.java | 5 +-
framework/widget/dtd/widget-screen.xsd | 9 +-
.../widget/artifact/ArtifactInfoGatherer.java | 5 -
.../org/apache/ofbiz/widget/model/HtmlWidget.java | 124 +++++++++------------
.../ofbiz/widget/model/ModelWidgetVisitor.java | 2 -
.../ofbiz/widget/model/ScriptTemplateUtil.java | 43 ++++---
.../ofbiz/widget/model/XmlWidgetVisitor.java | 10 +-
.../ofbiz/widget/renderer/ScreenRenderer.java | 7 +-
11 files changed, 160 insertions(+), 206 deletions(-)
diff --git a/applications/order/template/order/FindOrders.ftl
b/applications/order/template/order/FindOrders.ftl
index 0d1923d..6eaff5b 100644
--- a/applications/order/template/order/FindOrders.ftl
+++ b/applications/order/template/order/FindOrders.ftl
@@ -17,6 +17,76 @@ specific language governing permissions and limitations
under the License.
-->
+<script>
+function lookupOrders(click) {
+ orderIdValue = document.lookuporder.orderId.value;
+ if (orderIdValue.length > 1) {
+ document.lookuporder.action = "<@ofbizUrl>orderview</@ofbizUrl>";
+ document.lookuporder.method = "get";
+ } else {
+ document.lookuporder.action = "<@ofbizUrl>searchorders</@ofbizUrl>";
+ }
+
+ if (click) {
+ document.lookuporder.submit();
+ }
+ return true;
+}
+function toggleOrderId(master) {
+ var form = document.massOrderChangeForm;
+ var orders = form.elements.length;
+ for (var i = 0; i < orders; i++) {
+ var element = form.elements[i];
+ if ("orderIdList" == element.name) {
+ element.checked = master.checked;
+ }
+ }
+ toggleOrderIdList();
+}
+function setServiceName(selection) {
+ document.massOrderChangeForm.action = selection.value;
+}
+function runAction() {
+ var form = document.massOrderChangeForm;
+ form.submit();
+}
+
+function toggleOrderIdList() {
+ var form = document.massOrderChangeForm;
+ var orders = form.elements.length;
+ var isAllSelected = true;
+ var isSingle = true;
+ for (var i = 0; i < orders; i++) {
+ var element = form.elements[i];
+ if ("orderIdList" == element.name) {
+ if (element.checked) {
+ isSingle = false;
+ } else {
+ isAllSelected = false;
+ }
+ }
+ }
+ if (isAllSelected) {
+ jQuery('#checkAllOrders').attr('checked', true);
+ } else {
+ jQuery('#checkAllOrders').attr('checked', false);
+ }
+ jQuery('#checkAllOrders').attr("checked", isAllSelected);
+ if (!isSingle && jQuery('#serviceName').val() != "") {
+ jQuery('#submitButton').removeAttr("disabled");
+ } else {
+ jQuery('#submitButton').attr('disabled', true);
+ }
+}
+
+function paginateOrderList(viewSize, viewIndex, hideFields) {
+ document.paginationForm.viewSize.value = viewSize;
+ document.paginationForm.viewIndex.value = viewIndex;
+ document.paginationForm.hideFields.value = hideFields;
+ document.paginationForm.submit();
+}
+</script>
+
<#if security.hasEntityPermission("ORDERMGR", "_VIEW", session)>
<#if parameters.hideFields?has_content>
<form name='lookupandhidefields${requestParameters.hideFields?default("Y")}'
method="post" action="<@ofbizUrl>searchorders</@ofbizUrl>">
@@ -404,9 +474,7 @@ under the License.
</form>
<#if requestParameters.hideFields?default("N") != "Y">
<script type="application/javascript">
-<!--//
document.lookuporder.orderId.focus();
-//-->
</script>
</#if>
diff --git a/applications/order/template/order/FindOrders.js.ftl
b/applications/order/template/order/FindOrders.js.ftl
deleted file mode 100644
index 0b98270..0000000
--- a/applications/order/template/order/FindOrders.js.ftl
+++ /dev/null
@@ -1,86 +0,0 @@
-/***********************************************
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-***********************************************/
-
-function lookupOrders(click) {
- orderIdValue = document.lookuporder.orderId.value;
- if (orderIdValue.length > 1) {
- document.lookuporder.action = "<@ofbizUrl>orderview</@ofbizUrl>";
- document.lookuporder.method = "get";
- } else {
- document.lookuporder.action = "<@ofbizUrl>searchorders</@ofbizUrl>";
- }
-
- if (click) {
- document.lookuporder.submit();
- }
- return true;
-}
-function toggleOrderId(master) {
- var form = document.massOrderChangeForm;
- var orders = form.elements.length;
- for (var i = 0; i < orders; i++) {
- var element = form.elements[i];
- if ("orderIdList" == element.name) {
- element.checked = master.checked;
- }
- }
- toggleOrderIdList();
-}
-function setServiceName(selection) {
- document.massOrderChangeForm.action = selection.value;
-}
-function runAction() {
- var form = document.massOrderChangeForm;
- form.submit();
-}
-
-function toggleOrderIdList() {
- var form = document.massOrderChangeForm;
- var orders = form.elements.length;
- var isAllSelected = true;
- var isSingle = true;
- for (var i = 0; i < orders; i++) {
- var element = form.elements[i];
- if ("orderIdList" == element.name) {
- if (element.checked) {
- isSingle = false;
- } else {
- isAllSelected = false;
- }
- }
- }
- if (isAllSelected) {
- jQuery('#checkAllOrders').attr('checked', true);
- } else {
- jQuery('#checkAllOrders').attr('checked', false);
- }
- jQuery('#checkAllOrders').attr("checked", isAllSelected);
- if (!isSingle && jQuery('#serviceName').val() != "") {
- jQuery('#submitButton').removeAttr("disabled");
- } else {
- jQuery('#submitButton').attr('disabled', true);
- }
-}
-
-function paginateOrderList(viewSize, viewIndex, hideFields) {
- document.paginationForm.viewSize.value = viewSize;
- document.paginationForm.viewIndex.value = viewIndex;
- document.paginationForm.hideFields.value = hideFields;
- document.paginationForm.submit();
-}
\ No newline at end of file
diff --git a/applications/order/widget/ordermgr/OrderViewScreens.xml
b/applications/order/widget/ordermgr/OrderViewScreens.xml
index 7d0667c..04b84ce 100644
--- a/applications/order/widget/ordermgr/OrderViewScreens.xml
+++ b/applications/order/widget/ordermgr/OrderViewScreens.xml
@@ -267,8 +267,7 @@ under the License.
<platform-specific><html><html-template
location="component://common-theme/template/includes/SetMultipleSelectJs.ftl"/></html></platform-specific>
<platform-specific>
<html>
- <script-template
location="component://order/template/order/FindOrders.js.ftl"/>
- <html-template
location="component://order/template/order/FindOrders.ftl"/>
+ <html-template multi-block="true"
location="component://order/template/order/FindOrders.ftl"/>
</html>
</platform-specific>
</decorator-section>
diff --git
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/ScriptTemplateListTransform.java
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/ScriptTemplateListTransform.java
index 6b3f385..7c9bf4d 100644
---
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/ScriptTemplateListTransform.java
+++
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/ftl/ScriptTemplateListTransform.java
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.io.Writer;
import java.util.Map;
import java.util.Set;
-
import javax.servlet.http.HttpServletRequest;
import org.apache.ofbiz.widget.model.ScriptTemplateUtil;
@@ -53,7 +52,7 @@ public class ScriptTemplateListTransform implements
TemplateTransformModel {
if (req != null) {
HttpServletRequest request = (HttpServletRequest)
req.getWrappedObject();
Set<String> scriptSrcSet =
ScriptTemplateUtil.getScriptSrcLinksFromRequest(request);
- if (scriptSrcSet!=null) {
+ if (scriptSrcSet != null) {
String srcList = "";
for (String scriptSrc : scriptSrcSet) {
srcList += ("<script src=\"" + scriptSrc + "\"
type=\"application/javascript\"></script>\n");
@@ -73,7 +72,7 @@ public class ScriptTemplateListTransform implements
TemplateTransformModel {
}
@Override
- public void write(char cbuf[], int off, int len) {
+ public void write(char[] cbuf, int off, int len) {
}
};
diff --git a/framework/widget/dtd/widget-screen.xsd
b/framework/widget/dtd/widget-screen.xsd
index 62ffc03..087809b 100644
--- a/framework/widget/dtd/widget-screen.xsd
+++ b/framework/widget/dtd/widget-screen.xsd
@@ -519,6 +519,7 @@ under the License.
</xs:element>
<xs:attributeGroup name="attlist.html-template">
<xs:attribute type="xs:string" name="location" use="required" />
+ <xs:attribute type="xs:boolean" name="multi-block" use="optional"
default="false" />
</xs:attributeGroup>
<xs:element name="html-template-decorator" substitutionGroup="HtmlWidgets">
<xs:annotation>
@@ -544,14 +545,6 @@ under the License.
<xs:attribute type="xs:string" name="name" use="required" />
</xs:complexType>
</xs:element>
- <xs:element name="script-template" substitutionGroup="HtmlWidgets">
- <xs:complexType>
- <xs:attributeGroup ref="attlist.script-template" />
- </xs:complexType>
- </xs:element>
- <xs:attributeGroup name="attlist.script-template">
- <xs:attribute type="xs:string" name="location" use="required" />
- </xs:attributeGroup>
<!-- ============== Swing Specific Elements =============== -->
<xs:element name="swing">
<xs:complexType />
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/artifact/ArtifactInfoGatherer.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/artifact/ArtifactInfoGatherer.java
index 3c96f1e..0ea3393 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/artifact/ArtifactInfoGatherer.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/artifact/ArtifactInfoGatherer.java
@@ -38,7 +38,6 @@ import org.apache.ofbiz.widget.model.HtmlWidget;
import org.apache.ofbiz.widget.model.HtmlWidget.HtmlTemplate;
import org.apache.ofbiz.widget.model.HtmlWidget.HtmlTemplateDecorator;
import org.apache.ofbiz.widget.model.HtmlWidget.HtmlTemplateDecoratorSection;
-import org.apache.ofbiz.widget.model.HtmlWidget.ScriptTemplate;
import org.apache.ofbiz.widget.model.IterateSectionWidget;
import org.apache.ofbiz.widget.model.ModelAction;
import org.apache.ofbiz.widget.model.ModelActionVisitor;
@@ -357,10 +356,6 @@ public final class ArtifactInfoGatherer implements
ModelWidgetVisitor, ModelActi
}
@Override
- public void visit(ScriptTemplate scriptTemplate) throws Exception {
- }
-
- @Override
public void visit(Section section) throws Exception {
for (ModelAction action : section.getActions()) {
action.accept(this);
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/HtmlWidget.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/HtmlWidget.java
index b5afc68..acb850c 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/HtmlWidget.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/HtmlWidget.java
@@ -40,6 +40,9 @@ import org.apache.ofbiz.base.util.template.FreeMarkerWorker;
import org.apache.ofbiz.widget.renderer.ScreenRenderer;
import org.apache.ofbiz.widget.renderer.ScreenStringRenderer;
import org.apache.ofbiz.widget.renderer.html.HtmlWidgetRenderer;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.select.Elements;
import org.w3c.dom.Element;
import freemarker.ext.beans.BeansWrapper;
@@ -121,8 +124,6 @@ public class HtmlWidget extends ModelScreenWidget {
subWidgets.add(new HtmlTemplate(modelScreen,
childElement));
} else if
("html-template-decorator".equals(childElement.getNodeName())) {
subWidgets.add(new HtmlTemplateDecorator(modelScreen,
childElement));
- } else if
("script-template".equals(childElement.getNodeName())) {
- subWidgets.add(new ScriptTemplate(modelScreen,
childElement));
} else {
throw new IllegalArgumentException("Tag not supported
under the platform-specific -> html tag with name: "
+ childElement.getNodeName());
@@ -178,36 +179,6 @@ public class HtmlWidget extends ModelScreenWidget {
}
}
- public static void renderScriptTemplate(Appendable writer,
FlexibleStringExpander locationExdr, Map<String, Object> context) {
- String location = locationExdr.expandString(context);
-
- if (UtilValidate.isEmpty(location)) {
- throw new IllegalArgumentException("Template location is empty
with search string location " + locationExdr.getOriginal());
- }
-
- if (location.endsWith(".ftl")) {
- try {
- boolean insertWidgetBoundaryComments =
ModelWidget.widgetBoundaryCommentsEnabled(context);
- if (insertWidgetBoundaryComments) {
-
writer.append(HtmlWidgetRenderer.formatBoundaryJsComment("Begin", "Template",
location));
- }
-
- Template template = FreeMarkerWorker.getTemplate(location,
specialTemplateCache, specialConfig);
- FreeMarkerWorker.renderTemplate(template, context, writer);
-
- if (insertWidgetBoundaryComments) {
-
writer.append(HtmlWidgetRenderer.formatBoundaryJsComment("End", "Template",
location));
- }
- } catch (IllegalArgumentException | TemplateException |
IOException e) {
- String errMsg = "Error rendering included template at location
[" + location + "]: " + e.toString();
- Debug.logError(e, errMsg, MODULE);
- writeError(writer, errMsg);
- }
- } else {
- throw new IllegalArgumentException("Rendering not yet supported
for the template at location: " + location);
- }
- }
-
// TODO: We can make this more fancy, but for now this is very functional
public static void writeError(Appendable writer, String message) {
try {
@@ -218,19 +189,65 @@ public class HtmlWidget extends ModelScreenWidget {
public static class HtmlTemplate extends ModelScreenWidget {
protected FlexibleStringExpander locationExdr;
+ protected boolean multiBlock;
public HtmlTemplate(ModelScreen modelScreen, Element
htmlTemplateElement) {
super(modelScreen, htmlTemplateElement);
this.locationExdr =
FlexibleStringExpander.getInstance(htmlTemplateElement.getAttribute("location"));
+ this.multiBlock =
!"false".equals(htmlTemplateElement.getAttribute("multi-block"));
}
public String getLocation(Map<String, Object> context) {
return locationExdr.expandString(context);
}
+ public boolean isMultiBlock() {
+ return this.multiBlock;
+ }
+
@Override
- public void renderWidgetString(Appendable writer, Map<String, Object>
context, ScreenStringRenderer screenStringRenderer) {
- renderHtmlTemplate(writer, this.locationExdr, context);
+ public void renderWidgetString(Appendable writer, Map<String, Object>
context, ScreenStringRenderer screenStringRenderer) throws IOException {
+
+ if (isMultiBlock()) {
+
+ StringWriter stringWriter = new StringWriter();
+ context.put("MultiBlockWriter", stringWriter);
+ renderHtmlTemplate(stringWriter, this.locationExdr, context);
+ context.remove("MultiBlockWriter");
+ String data = stringWriter.toString();
+ stringWriter.close();
+
+ Document doc = Jsoup.parse(data);
+
+ // extract scripts
+ Elements scriptElements = doc.select("script").remove();
+ if (scriptElements != null) {
+ StringBuilder scripts = new StringBuilder();
+
+ for (org.jsoup.nodes.Element script : scriptElements) {
+ scripts.append(script.data());
+ }
+
+ // store script for retrieval by the browser
+ String fileName = this.getLocation(context);
+ fileName = fileName.substring(fileName.lastIndexOf("/") +
1);
+ if (fileName.endsWith(".ftl")) {
+ fileName = fileName.substring(0, fileName.length() -
4);
+ }
+ ScriptTemplateUtil.putScriptInSession(context, fileName,
scripts.toString());
+
+ // store value to be used by ScriptTemplateList freemarker
macro
+ String webappName = (String) context.get("webappName");
+ ScriptTemplateUtil.addScriptSrcToRequest(context, "/" +
webappName + "/control/getJs?name="
+ + fileName);
+ }
+
+ // the 'template' block
+ String body = doc.body().html();
+ writer.append(body);
+ } else {
+ renderHtmlTemplate(writer, this.locationExdr, context);
+ }
}
@Override
@@ -321,45 +338,6 @@ public class HtmlWidget extends ModelScreenWidget {
}
}
- public static class ScriptTemplate extends ModelScreenWidget {
- protected FlexibleStringExpander locationExdr;
-
- public ScriptTemplate(ModelScreen modelScreen, Element
htmlTemplateElement) {
- super(modelScreen, htmlTemplateElement);
- this.locationExdr =
FlexibleStringExpander.getInstance(htmlTemplateElement.getAttribute("location"));
- }
-
- public String getLocation(Map<String, Object> context) {
- return locationExdr.expandString(context);
- }
-
- @Override
- public void renderWidgetString(Appendable writer, Map<String, Object>
context, ScreenStringRenderer screenStringRenderer) throws IOException {
- StringWriter stringWriter = new StringWriter();
- renderScriptTemplate(stringWriter, this.locationExdr, context);
- String data = stringWriter.toString();
- stringWriter.close();
-
- String fileName = this.getLocation(context);
- fileName = fileName.substring(fileName.lastIndexOf("/")+1);
- // remove ".ftl"
- fileName = fileName.substring(0, fileName.length()-4);
- ScriptTemplateUtil.putScriptInSession(context, fileName, data);
-
- String webappName = (String)context.get("webappName");
- ScriptTemplateUtil.addScriptSrcToRequest(context,
"/"+webappName+"/control/getJs?name="+fileName);
- }
-
- @Override
- public void accept(ModelWidgetVisitor visitor) throws Exception {
- visitor.visit(this);
- }
-
- public FlexibleStringExpander getLocationExdr() {
- return locationExdr;
- }
- }
-
@Override
public void accept(ModelWidgetVisitor visitor) throws Exception {
visitor.visit(this);
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelWidgetVisitor.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelWidgetVisitor.java
index a1f89bb..f081f98 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelWidgetVisitor.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelWidgetVisitor.java
@@ -32,8 +32,6 @@ public interface ModelWidgetVisitor {
void visit(HtmlWidget.HtmlTemplateDecoratorSection
htmlTemplateDecoratorSection) throws Exception;
- void visit(HtmlWidget.ScriptTemplate scriptTemplate) throws Exception;
-
void visit(IterateSectionWidget iterateSectionWidget) throws Exception;
void visit(ModelSingleForm modelForm) throws Exception;
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ScriptTemplateUtil.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ScriptTemplateUtil.java
index 9d3417c..7bce317 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ScriptTemplateUtil.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ScriptTemplateUtil.java
@@ -27,7 +27,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.ofbiz.base.util.UtilGenerics;
-import org.apache.ofbiz.webapp.ftl.ScriptTemplateListTransform;
public class ScriptTemplateUtil {
@@ -35,15 +34,17 @@ public class ScriptTemplateUtil {
private static String requestKey = "ScriptTemplateList";
private static int maxNumOfScriptInCache = 10;
+ private ScriptTemplateUtil() { }
+
/**
- * add script src link for use by @see {@link ScriptTemplateListTransform}
+ * add script src link for use by @see {@link
org.apache.ofbiz.webapp.ftl.ScriptTemplateListTransform}
* @param context
* @param filePath
*/
- public static void addScriptSrcToRequest(Map<String, Object> context,
String filePath){
- HttpServletRequest request =
(HttpServletRequest)context.get("request");
+ public static void addScriptSrcToRequest(final Map<String, Object>
context, final String filePath) {
+ HttpServletRequest request = (HttpServletRequest)
context.get("request");
Set<String> scriptTemplates =
UtilGenerics.cast(request.getAttribute(requestKey));
- if (scriptTemplates==null){
+ if (scriptTemplates == null) {
// use of LinkedHashSet to maintain insertion order
scriptTemplates = new LinkedHashSet<String>();
request.setAttribute(requestKey, scriptTemplates);
@@ -52,22 +53,28 @@ public class ScriptTemplateUtil {
}
/**
- * get the script src links collected from the "script-template" tags
+ * get the script src links collected from the html-template tags where
multi-block=true.
* @param request
* @return
*/
- public static Set<String> getScriptSrcLinksFromRequest(HttpServletRequest
request){
+ public static Set<String> getScriptSrcLinksFromRequest(HttpServletRequest
request) {
Set<String> scriptTemplates =
UtilGenerics.cast(request.getAttribute(requestKey));
return scriptTemplates;
}
- public static void putScriptInSession(Map<String, Object> context, String
fileName, String fileContent){
- HttpSession session = (HttpSession)context.get("session");
- Map<String,String> scriptTemplateMap =
UtilGenerics.cast(session.getAttribute(sessionKey));
- if (scriptTemplateMap==null){
+ /**
+ * put script in user session for retrieval by the browser
+ * @param context
+ * @param fileName
+ * @param fileContent
+ */
+ public static void putScriptInSession(Map<String, Object> context, String
fileName, String fileContent) {
+ HttpSession session = (HttpSession) context.get("session");
+ Map<String, String> scriptTemplateMap =
UtilGenerics.cast(session.getAttribute(sessionKey));
+ if (scriptTemplateMap == null) {
synchronized (session) {
scriptTemplateMap =
UtilGenerics.cast(session.getAttribute(sessionKey));
- if (scriptTemplateMap==null){
+ if (scriptTemplateMap == null) {
// use of LinkedHashMap to limit size of the map
scriptTemplateMap = new LinkedHashMap<String, String>() {
private static final long serialVersionUID = 1L;
@@ -82,9 +89,15 @@ public class ScriptTemplateUtil {
scriptTemplateMap.put(fileName, fileContent);
}
- public static String getScriptFromSession(HttpSession session, String
fileName){
- Map<String,String> scriptTemplateMap =
UtilGenerics.cast(session.getAttribute(sessionKey));
- if (scriptTemplateMap!=null){
+ /**
+ * Get the script stored in user session.
+ * @param session
+ * @param fileName
+ * @return script to be sent back to browser
+ */
+ public static String getScriptFromSession(HttpSession session, final
String fileName) {
+ Map<String, String> scriptTemplateMap =
UtilGenerics.cast(session.getAttribute(sessionKey));
+ if (scriptTemplateMap != null) {
return scriptTemplateMap.get(fileName);
}
return null;
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetVisitor.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetVisitor.java
index 737ced1..0777a70 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetVisitor.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetVisitor.java
@@ -24,7 +24,6 @@ import java.util.Map;
import org.apache.ofbiz.widget.model.HtmlWidget.HtmlTemplate;
import org.apache.ofbiz.widget.model.HtmlWidget.HtmlTemplateDecorator;
import org.apache.ofbiz.widget.model.HtmlWidget.HtmlTemplateDecoratorSection;
-import org.apache.ofbiz.widget.model.HtmlWidget.ScriptTemplate;
import org.apache.ofbiz.widget.model.ModelScreenWidget.Column;
import org.apache.ofbiz.widget.model.ModelScreenWidget.ColumnContainer;
import org.apache.ofbiz.widget.model.ModelScreenWidget.Container;
@@ -167,6 +166,7 @@ public class XmlWidgetVisitor extends
XmlAbstractWidgetVisitor implements ModelW
writer.append("<html-template");
visitModelWidget(htmlTemplate);
visitAttribute("location", htmlTemplate.getLocationExdr());
+ visitAttribute("multi-block", htmlTemplate.isMultiBlock());
writer.append("/>");
}
@@ -406,14 +406,6 @@ public class XmlWidgetVisitor extends
XmlAbstractWidgetVisitor implements ModelW
}
@Override
- public void visit(ScriptTemplate scriptTemplate) throws Exception {
- writer.append("<script-template");
- visitModelWidget(scriptTemplate);
- visitAttribute("location", scriptTemplate.getLocationExdr());
- writer.append("/>");
- }
-
- @Override
public void visit(ModelScreen modelScreen) throws Exception {
writer.append("<screen");
visitModelWidget(modelScreen);
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/ScreenRenderer.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/ScreenRenderer.java
index 888d123..ccf1ea1 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/ScreenRenderer.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/ScreenRenderer.java
@@ -137,7 +137,12 @@ public class ScreenRenderer {
}
} else {
context.put("renderFormSeqNumber",
String.valueOf(renderFormSeqNumber));
- modelScreen.renderScreenString(writer, context,
screenStringRenderer);
+ if (context.get("MultiBlockWriter") != null) {
+ StringWriter stringWriter = (StringWriter)
context.get("MultiBlockWriter");
+ modelScreen.renderScreenString(stringWriter, context,
screenStringRenderer);
+ } else {
+ modelScreen.renderScreenString(writer, context,
screenStringRenderer);
+ }
}
return "";
}