Author: jleroux
Date: Tue Oct 27 07:18:01 2015
New Revision: 1710727
URL: http://svn.apache.org/viewvc?rev=1710727&view=rev
Log:
3 patches from Christian Carlow for "FOP rendered list form widgets do not work
for fields with postition > 0" https://issues.apache.org/jira/browse/OFBIZ-6354
It doesn't work because of the way the renderFormatHeaderRowOpen is called
causes the FOP renderer to create more than one <fo:table-header>.
The 1st patch adds renderFormatHeaderOpen and renderFormatHeaderClose to
separately generate <fo:table-header> for FOP and <thead> for html.
The 2nd patch adds the new list form widget header methods to the deprecated
HtmlFormRenderer needed by EmailServices.java to handle OFBIZ-6360 until
replaced with MacroFormRender.
The 3rd patch handles the other FormRenderers FOP, Text, Xml. This issue is
still a work in process.
jleroux: there is this "FIXME: this is an hack to avoid FOP rendering errors
for empty lists (fo:table-body cannot be null)" in code
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormRenderer.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormStringRenderer.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/fo/FoFormRenderer.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/html/HtmlFormRenderer.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/text/TextFormRenderer.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/xml/XmlFormRenderer.java
ofbiz/trunk/framework/widget/templates/foFormMacroLibrary.ftl
ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormRenderer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormRenderer.java?rev=1710727&r1=1710726&r2=1710727&view=diff
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormRenderer.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormRenderer.java
Tue Oct 27 07:18:01 2015
@@ -394,6 +394,7 @@ public class FormRenderer {
// ===========================
// Rendering
// ===========================
+ formStringRenderer.renderFormatHeaderOpen(writer, context, modelForm);
for (Map<String, List<ModelFormField>> listsMap : fieldRowsByPosition)
{
List<ModelFormField> innerDisplayHyperlinkFieldsBegin =
listsMap.get("displayBefore");
List<ModelFormField> innerFormFields = listsMap.get("inputFields");
@@ -492,6 +493,7 @@ public class FormRenderer {
formStringRenderer.renderFormatHeaderRowClose(writer, context,
modelForm);
}
}
+ formStringRenderer.renderFormatHeaderClose(writer, context, modelForm);
return maxNumOfColumns;
}
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormStringRenderer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormStringRenderer.java?rev=1710727&r1=1710726&r2=1710727&view=diff
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormStringRenderer.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/FormStringRenderer.java
Tue Oct 27 07:18:01 2015
@@ -59,6 +59,8 @@ public interface FormStringRenderer {
public void renderFormatHeaderRowOpen(Appendable writer, Map<String,
Object> context, ModelForm modelForm) throws IOException;
public void renderFormatHeaderRowClose(Appendable writer, Map<String,
Object> context, ModelForm modelForm) throws IOException;
+ public void renderFormatHeaderOpen(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException;
+ public void renderFormatHeaderClose(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException;
public void renderFormatHeaderRowCellOpen(Appendable writer, Map<String,
Object> context, ModelForm modelForm, ModelFormField modelFormField, int
positionSpan) throws IOException;
public void renderFormatHeaderRowCellClose(Appendable writer, Map<String,
Object> context, ModelForm modelForm, ModelFormField modelFormField) throws
IOException;
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/fo/FoFormRenderer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/fo/FoFormRenderer.java?rev=1710727&r1=1710726&r2=1710727&view=diff
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/fo/FoFormRenderer.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/fo/FoFormRenderer.java
Tue Oct 27 07:18:01 2015
@@ -223,19 +223,27 @@ public class FoFormRenderer extends Html
writer.append("</fo:table>");
appendWhitespace(writer);
}
+
+ public void renderFormatHeaderOpen(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException {
+ writer.append("<fo:table-header>");
+ appendWhitespace(writer);
+ }
+
+ public void renderFormatHeaderClose(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException {
+ writer.append(" </fo:table-header>");
+ writer.append(" <fo:table-body>");
+ // FIXME: this is an hack to avoid FOP rendering errors for empty
lists (fo:table-body cannot be null)
+
writer.append("<fo:table-row><fo:table-cell><fo:block/></fo:table-cell></fo:table-row>");
+ appendWhitespace(writer);
+ }
public void renderFormatHeaderRowOpen(Appendable writer, Map<String,
Object> context, ModelForm modelForm) throws IOException {
- writer.append("<fo:table-header>");
writer.append("<fo:table-row>");
appendWhitespace(writer);
}
public void renderFormatHeaderRowClose(Appendable writer, Map<String,
Object> context, ModelForm modelForm) throws IOException {
writer.append("</fo:table-row>");
- writer.append("</fo:table-header>");
- writer.append("<fo:table-body>");
- // FIXME: this is an hack to avoid FOP rendering errors for empty
lists (fo:table-body cannot be null)
-
writer.append("<fo:table-row><fo:table-cell><fo:block/></fo:table-cell></fo:table-row>");
appendWhitespace(writer);
}
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/html/HtmlFormRenderer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/html/HtmlFormRenderer.java?rev=1710727&r1=1710726&r2=1710727&view=diff
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/html/HtmlFormRenderer.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/html/HtmlFormRenderer.java
Tue Oct 27 07:18:01 2015
@@ -1327,6 +1327,18 @@ public class HtmlFormRenderer extends Ht
}
renderEndingBoundaryComment(writer, "Form Widget - Formal List
Wrapper", modelForm);
}
+
+ public void renderFormatHeaderOpen(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException {
+ writer.append(" <thead");
+ writer.append(">");
+ appendWhitespace(writer);
+ }
+
+ public void renderFormatHeaderClose(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException {
+ writer.append(" </thead");
+ writer.append(">");
+ appendWhitespace(writer);
+ }
/* (non-Javadoc)
* @see
org.ofbiz.widget.form.FormStringRenderer#renderFormatHeaderRowOpen(java.io.Writer,
java.util.Map, org.ofbiz.widget.form.model.ModelForm)
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1710727&r1=1710726&r2=1710727&view=diff
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java
Tue Oct 27 07:18:01 2015
@@ -1532,6 +1532,20 @@ public final class MacroFormRenderer imp
renderEndingBoundaryComment(writer, "Grid Widget - Grid Element",
modelForm);
}
}
+
+ public void renderFormatHeaderOpen(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException {
+ StringWriter sr = new StringWriter();
+ sr.append("<@renderFormatHeaderOpen ");
+ sr.append(" />");
+ executeMacro(writer, sr.toString());
+ }
+
+ public void renderFormatHeaderClose(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException {
+ StringWriter sr = new StringWriter();
+ sr.append("<@renderFormatHeaderClose");
+ sr.append(" />");
+ executeMacro(writer, sr.toString());
+ }
public void renderFormatHeaderRowOpen(Appendable writer, Map<String,
Object> context, ModelForm modelForm) throws IOException {
String headerStyle =
FlexibleStringExpander.expandString(modelForm.getHeaderRowStyle(), context);
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/text/TextFormRenderer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/text/TextFormRenderer.java?rev=1710727&r1=1710726&r2=1710727&view=diff
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/text/TextFormRenderer.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/text/TextFormRenderer.java
Tue Oct 27 07:18:01 2015
@@ -182,6 +182,12 @@ public class TextFormRenderer implements
public void renderFormatHeaderRowOpen(Appendable writer, Map<String,
Object> context, ModelForm modelForm) {
}
+
+ public void renderFormatHeaderOpen(Appendable writer, Map<String, Object>
context, ModelForm modelForm) {
+ }
+
+ public void renderFormatHeaderClose(Appendable writer, Map<String, Object>
context, ModelForm modelForm) {
+ }
public void renderFormatHeaderRowClose(Appendable writer, Map<String,
Object> context, ModelForm modelForm) throws IOException {
this.appendWhitespace(writer);
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/xml/XmlFormRenderer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/xml/XmlFormRenderer.java?rev=1710727&r1=1710726&r2=1710727&view=diff
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/xml/XmlFormRenderer.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/xml/XmlFormRenderer.java
Tue Oct 27 07:18:01 2015
@@ -198,6 +198,12 @@ public class XmlFormRenderer implements
public void renderFormatHeaderRowClose(Appendable writer, Map<String,
Object> context, ModelForm modelForm) throws IOException {
}
+
+ public void renderFormatHeaderOpen(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException {
+ }
+
+ public void renderFormatHeaderClose(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException {
+ }
public void renderFormatHeaderRowCellOpen(Appendable writer, Map<String,
Object> context, ModelForm modelForm, ModelFormField modelFormField, int
positionSpan) throws IOException {
}
Modified: ofbiz/trunk/framework/widget/templates/foFormMacroLibrary.ftl
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/foFormMacroLibrary.ftl?rev=1710727&r1=1710726&r2=1710727&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/templates/foFormMacroLibrary.ftl (original)
+++ ofbiz/trunk/framework/widget/templates/foFormMacroLibrary.ftl Tue Oct 27
07:18:01 2015
@@ -86,8 +86,11 @@ under the License.
<#macro renderFormatListWrapperOpen formName style columnStyles><fo:table
border="solid black" <@getFoStyle style/>><#list columnStyles as
columnStyle><fo:table-column<#if columnStyle?has_content> <@getFoStyle
columnStyle/></#if>/></#list></#macro>
<#macro renderFormatListWrapperClose
formName></fo:table-body></fo:table></#macro>
-<#macro renderFormatHeaderRowOpen
style><fo:table-header><fo:table-row></#macro>
-<#macro
renderFormatHeaderRowClose></fo:table-row></fo:table-header><fo:table-body>
+<#macro renderFormatHeaderOpen><fo:table-header></#macro>
+<#macro renderFormatHeaderClose></fo:table-header><fo:table-body></#macro>
+
+<#macro renderFormatHeaderRowOpen style><fo:table-row></#macro>
+<#macro renderFormatHeaderRowClose></fo:table-row>
<#-- FIXME: this is an hack to avoid FOP rendering errors for empty lists
(fo:table-body cannot be null) -->
<fo:table-row><fo:table-cell><fo:block/></fo:table-cell></fo:table-row>
</#macro>
Modified: ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl?rev=1710727&r1=1710726&r2=1710727&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl (original)
+++ ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl Tue Oct 27
07:18:01 2015
@@ -376,6 +376,13 @@ under the License.
</table><#lt/>
</#macro>
+<#macro renderFormatHeaderOpen>
+ <thead>
+</#macro>
+<#macro renderFormatHeaderClose>
+ </thead>
+</#macro>
+
<#macro renderFormatHeaderRowOpen style>
<tr class="<#if style?has_content>${style}<#else>header-row</#if>">
</#macro>