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> |
Free forum by Nabble | Edit this page |