You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2009/04/07 14:06:03 UTC

svn commit: r762727 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/util/ widget/config/ widget/src/org/ofbiz/widget/form/ widget/src/org/ofbiz/widget/screen/ widget/templates/

Author: jacopoc
Date: Tue Apr  7 12:06:03 2009
New Revision: 762727

URL: http://svn.apache.org/viewvc?rev=762727&view=rev
Log:
Misc fixes and enhancements to the new Macro renderer stuff.

Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java
    ofbiz/trunk/framework/widget/config/widget.properties
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java
    ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java?rev=762727&r1=762726&r2=762727&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java Tue Apr  7 12:06:03 2009
@@ -89,16 +89,26 @@
 
     // ================== Begin General Functions ==================
 
+    public static SimpleEncoder getEncoder(String type) {
+        if ("xml".equals(type)) {
+            return StringUtil.xmlEncoder;
+        } else if ("html".equals(type)) {
+            return StringUtil.htmlEncoder;
+        } else {
+            return null;
+        }
+    }
+
     public static String internString(String value) {
         return value != null ? value.intern() : null;
     }
 
     /**
-     * Replaces all occurances of oldString in mainString with newString
+     * Replaces all occurrences of oldString in mainString with newString
      * @param mainString The original string
      * @param oldString The string to replace
      * @param newString The string to insert in place of the old
-     * @return mainString with all occurances of oldString replaced by newString
+     * @return mainString with all occurrences of oldString replaced by newString
      */
     public static String replaceString(String mainString, String oldString, String newString) {
         if (mainString == null) {

Modified: ofbiz/trunk/framework/widget/config/widget.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/config/widget.properties?rev=762727&r1=762726&r2=762727&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/config/widget.properties (original)
+++ ofbiz/trunk/framework/widget/config/widget.properties Tue Apr  7 12:06:03 2009
@@ -38,6 +38,7 @@
 screen.formrenderer=component://widget/templates/htmlFormMacroLibrary.ftl
 screen.menurenderer=component://widget/templates/htmlMenuMacroLibrary.ftl
 screen.treerenderer=component://widget/templates/htmlTreeMacroLibrary.ftl
+screen.encoder=html
 screen.default.contenttype=UTF-8
 screen.default.encoding=none
 # text output
@@ -52,5 +53,14 @@
 screenxml.formrenderer=component://widget/templates/xmlFormMacroLibrary.ftl
 screenxml.menurenderer=component://widget/templates/xmlMenuMacroLibrary.ftl
 screenxml.treerenderer=component://widget/templates/xmlTreeMacroLibrary.ftl
+screenxml.encoder=xml
 screenxml.default.contenttype=UTF-8
 screenxml.default.encoding=none
+# fo output
+screenfop.screenrenderer=component://widget/templates/xmlScreenMacroLibrary.ftl
+screenfop.formrenderer=component://widget/templates/xmlFormMacroLibrary.ftl
+screenfop.menurenderer=component://widget/templates/xmlMenuMacroLibrary.ftl
+screenfop.treerenderer=component://widget/templates/xmlTreeMacroLibrary.ftl
+screenfop.encoder=xml
+screenfop.default.contenttype=application/pdf
+screenfop.default.encoding=none

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java?rev=762727&r1=762726&r2=762727&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java Tue Apr  7 12:06:03 2009
@@ -136,20 +136,6 @@
         //writer.append(' ');
     }
 
-    private void makeTextString(Appendable writer, String widgetStyle, String text) throws IOException {
-        if (UtilValidate.isNotEmpty(text)) {
-            // FIXME: this is only valid for html and should be moved outside of this class
-            text = StringUtil.htmlEncoder.encode(text);
-        }
-        StringWriter sr = new StringWriter();
-        sr.append("<@renderField ");
-        sr.append("text=\"");
-        sr.append(text);
-        sr.append("\"");
-        sr.append(" />");
-        executeMacro(writer, sr.toString());
-    }
-
     public void renderLabel(Appendable writer, Map<String, Object> context, ModelScreenWidget.Label label) throws IOException {
         String labelText = label.getText(context);
         if (UtilValidate.isEmpty(labelText)) {
@@ -306,7 +292,10 @@
         }
         String value = modelFormField.getEntry(context, textareaField.getDefaultValue(context));
         if (UtilValidate.isNotEmpty(value)) {
-            value = StringUtil.htmlEncoder.encode(value);
+            StringUtil.SimpleEncoder encoder = (StringUtil.SimpleEncoder)context.get("simpleEncoder");
+            if (encoder != null) {
+                value = encoder.encode(value);
+            }
         }
         StringWriter sr = new StringWriter();
         sr.append("<@renderTextareaField ");
@@ -946,11 +935,16 @@
         StringBuilder sb = new StringBuilder();
         if (UtilValidate.isNotEmpty(titleText)) {
             if (" ".equals(titleText)) {
-                // If the title content is just a blank then render it colling renderFormatEmptySpace:
+                // FIXME: we have to change the following code because it is a solution that only works with html.
+                // If the title content is just a blank then render it calling renderFormatEmptySpace:
                 // the method will set its content to work fine in most browser
                 sb.append("&nbsp;");
             } else {
-                renderHyperlinkTitle(sb, context, modelFormField, StringUtil.htmlEncoder.encode(titleText));
+                StringUtil.SimpleEncoder encoder = (StringUtil.SimpleEncoder)context.get("simpleEncoder");
+                if (encoder != null) {
+                    titleText = encoder.encode(titleText);
+                }
+                renderHyperlinkTitle(sb, context, modelFormField, titleText);
             }
         }
         StringWriter sr = new StringWriter();
@@ -1627,11 +1621,6 @@
         }
         String size = Integer.toString(lookupField.getSize());
         Integer maxlength = lookupField.getMaxlength();
-        if (maxlength != null) {
-            writer.append(" maxlength=\"");
-            writer.append(maxlength.toString());
-            writer.append('"');
-        }
 
         String id = modelFormField.getIdName();
         if (id == null) {
@@ -1682,9 +1671,7 @@
         sr.append("\" size=\"");
         sr.append(size);
         sr.append("\" maxlength=\"");
-        if (maxlength != null) {
-            sr.append(Integer.toString(maxlength));
-        }
+        sr.append((maxlength != null? Integer.toString(maxlength): ""));
         sr.append("\" autocomplete=\"");
         sr.append(autocomplete);
         sr.append("\" descriptionFieldName=\"");

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java?rev=762727&r1=762726&r2=762727&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java Tue Apr  7 12:06:03 2009
@@ -143,9 +143,6 @@
 
     public void renderLabel(Appendable writer, Map<String, Object> context, ModelScreenWidget.Label label) throws IOException {
         String labelText = label.getText(context);
-        if(UtilValidate.isNotEmpty(labelText)){
-            labelText = StringUtil.htmlEncoder.encode(labelText);
-        }
         StringWriter sr = new StringWriter();
         sr.append("<@renderLabel ");
         sr.append("text=\"");

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java?rev=762727&r1=762726&r2=762727&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java Tue Apr  7 12:06:03 2009
@@ -31,6 +31,7 @@
 
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.UtilJ2eeCompat;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilProperties;
@@ -41,9 +42,10 @@
 import org.xml.sax.SAXException;
 
 import org.ofbiz.widget.menu.MenuStringRenderer;
+// TODO: uncomment these lines when the renderers are implemented
 //import org.ofbiz.widget.menu.MacroMenuRenderer;
-import org.ofbiz.widget.tree.TreeStringRenderer;
 //import org.ofbiz.widget.tree.MacroTreeRenderer;
+import org.ofbiz.widget.tree.TreeStringRenderer;
 import org.ofbiz.widget.form.FormStringRenderer;
 import org.ofbiz.widget.form.MacroFormRenderer;
 import org.ofbiz.widget.screen.ScreenStringRenderer;
@@ -101,6 +103,10 @@
             screens.populateContextForRequest(request, response, servletContext);
             // this is the object used to render forms from their definitions
             screens.getContext().put("formStringRenderer", formStringRenderer);
+            // TODO: uncomment these lines when the renderers are implemented
+            //screens.getContext().put("treeStringRenderer", treeStringRenderer);
+            //screens.getContext().put("menuStringRenderer", menuStringRenderer);
+            screens.getContext().put("simpleEncoder", StringUtil.getEncoder(UtilProperties.getPropertyValue("widget", getName() + ".encoder")));
             screens.render(page);
             writer.flush();
         } catch (TemplateException e) {

Modified: ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl?rev=762727&r1=762726&r2=762727&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl (original)
+++ ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl Tue Apr  7 12:06:03 2009
@@ -125,10 +125,10 @@
 <#list items as item>   
 <input type="checkbox" <@renderClass className alert /><#rt/>
 <#if allChecked?has_content && allChecked> checked="checked" <#elseif allChecked?has_content && !allChecked><#elseif currentValue?has_content && currentValue==item.key> checked="checked"</#if> name="${name?default("")?html}" value="${item.key?default("")?html}"<#if event?has_content> ${event}="${action}"</#if>/><#rt/>
-${item.description}
+${item.description?default("")}
 </#list>
 </#macro>
-<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event ation>
+<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action>
 <#list items as item>   
 <div <@renderClass className alert />><#rt/>
 <input type="radio"<#if currentValue?has_content><#if rp.currentValue==item.key> checked="checked"</#if><#elseif noCurrentSelectedKey?has_content && noCurrentSelectedKey == item.key> checked="checked"</#if> name="${name?default("")?html}" value="${item.key?default("")?html}"<#if event?has_content> ${event}="${action}"</#if>/><#rt/>
@@ -138,7 +138,7 @@
 
 <#macro renderSubmitField buttonType className alert formName title name event action imgSrc>
 <#if buttonType=="text-link">
- <a <@renderClass className alert /> href="javascript:document.${formName}.submit()"><#if title?has_content> title="${title}"</#if> </a>
+ <a <@renderClass className alert /> href="javascript:document.${formName}.submit()"><#if title?has_content>${title}</#if> </a>
 <#elseif buttonType=="image">
  <input type="image" src="${imgSrc}" <@renderClass className alert /><#if name?has_content> name="${name}"</#if><#if title?has_content> alt="${title}"</#if><#if event?has_content> ${event}="${action}"</#if> />
 <#else>
@@ -355,7 +355,7 @@
 <#macro formatBoundaryComment boundaryType widgetType widgetName><!-- ${boundaryType}  ${widgetType}  ${widgetName} --></#macro>
 
 <#macro renderTooltip tooltip tooltipStyle><#if tooltip?has_content><span class="<#if tooltipStyle?has_content>${tooltipStyle}<#else>tooltip</#if>">${tooltip}</span><#rt/></#if></#macro>
-<#macro renderClass className alert><#if className?has_content>class="${className}<#if alert?has_content> ${alert}</#if>"<#rt/></#if></#macro>
+<#macro renderClass className="" alert=""><#if className?has_content>class="${className}<#if alert?has_content> ${alert}</#if>"<#rt/></#if></#macro>
 <#macro renderAsterisks requiredField requiredStyle><#if requiredField=="true"><#if requiredStyle?has_content>*</#if></#if></#macro>
 <#macro makeHiddenFormLinkForm actionUrl name parameters targetWindow><form method="post" action="${actionUrl}" <#if targetWindow?has_content>target="${targetWindow}"</#if> onSubmit="javascript:submitFormDisableSubmits(this)" name="${name}"><#list parameters as parameter><input name="${parameter.name}" value="${parameter.value}" type="hidden"/></#list></form></#macro>
 <#macro makeHiddenFormLinkAnchor linkStyle hiddenFormName event action imgSrc description><a <#if linkStyle?has_content>class="${linkStyle}"</#if> href="javascript:document.${hiddenFormName}.submit()"<#if action?has_content && event?has_content> ${event}="${action}"</#if>><#if imgSrc?has_content><img src="${imgSrc}"/></#if>${description}</a></#macro>