svn commit: r1710727 - in /ofbiz/trunk/framework/widget: src/org/ofbiz/widget/renderer/ src/org/ofbiz/widget/renderer/fo/ src/org/ofbiz/widget/renderer/html/ src/org/ofbiz/widget/renderer/macro/ src/org/ofbiz/widget/renderer/text/ src/org/ofbiz/widget/...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1710727 - in /ofbiz/trunk/framework/widget: src/org/ofbiz/widget/renderer/ src/org/ofbiz/widget/renderer/fo/ src/org/ofbiz/widget/renderer/html/ src/org/ofbiz/widget/renderer/macro/ src/org/ofbiz/widget/renderer/text/ src/org/ofbiz/widget/...

jleroux@apache.org
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>