svn commit: r755022 - in /ofbiz/trunk: applications/content/src/org/ofbiz/content/webapp/ftl/ framework/base/src/org/ofbiz/base/util/ framework/widget/dtd/ framework/widget/src/org/ofbiz/widget/ framework/widget/src/org/ofbiz/widget/form/ framework/wid...

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

svn commit: r755022 - in /ofbiz/trunk: applications/content/src/org/ofbiz/content/webapp/ftl/ framework/base/src/org/ofbiz/base/util/ framework/widget/dtd/ framework/widget/src/org/ofbiz/widget/ framework/widget/src/org/ofbiz/widget/form/ framework/wid...

jonesde
Author: jonesde
Date: Mon Mar 16 22:12:30 2009
New Revision: 755022

URL: http://svn.apache.org/viewvc?rev=755022&view=rev
Log:
Added link-type=hidden-form attribute and parameter sub-element to the menu and screen widget link elements; some refactoring and cleanup to avoid too much code redundancy in this (though there is certainly still quite a bit here); changes the MyPortalMenus.xml#CommSubTabBar to use this since it is an example reported by Bilgin; WARNING: I don't have a good test case for this so testing from Bilgin or I guess Hans would be very appreciated

Modified:
    ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentAsText.java
    ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentTransform.java
    ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderSubContentCacheTransform.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilMisc.java
    ofbiz/trunk/framework/widget/dtd/widget-menu.xsd
    ofbiz/trunk/framework/widget/dtd/widget-screen.xsd
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlMenuRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuItem.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
    ofbiz/trunk/specialpurpose/myportal/widget/MyPortalMenus.xml

Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentAsText.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentAsText.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentAsText.java (original)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentAsText.java Mon Mar 16 22:12:30 2009
@@ -24,6 +24,7 @@
 import java.util.Locale;
 import java.util.Map;
 
+import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -40,6 +41,7 @@
 import org.ofbiz.content.content.ContentWorker;
 import org.ofbiz.entity.GenericDelegator;
 import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.webapp.control.RequestHandler;
 import org.ofbiz.widget.WidgetWorker;
 
 import freemarker.core.Environment;
@@ -219,7 +221,9 @@
                 }
               
                 out.write("<a href=\"");
-                WidgetWorker.appendOfbizUrl(out, fullRequest, request, response);
+                ServletContext servletContext = (ServletContext) request.getSession().getServletContext();
+                RequestHandler rh = (RequestHandler) servletContext.getAttribute("_REQUEST_HANDLER_");
+                out.append(rh.makeLink(request, response, "/" + fullRequest, false, false, true));
                 out.write("\">Edit</a>");
                 out.write("</div>");
             }

Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentTransform.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentTransform.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentTransform.java (original)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderContentTransform.java Mon Mar 16 22:12:30 2009
@@ -23,6 +23,7 @@
 import java.util.Locale;
 import java.util.Map;
 
+import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -38,7 +39,7 @@
 import org.ofbiz.content.content.ContentWorker;
 import org.ofbiz.entity.GenericDelegator;
 import org.ofbiz.service.LocalDispatcher;
-import org.ofbiz.widget.WidgetWorker;
+import org.ofbiz.webapp.control.RequestHandler;
 
 import freemarker.core.Environment;
 import freemarker.template.TemplateTransformModel;
@@ -134,7 +135,9 @@
                 }
               
                 out.write("<a href=\"");
-                WidgetWorker.appendOfbizUrl(out, fullRequest, request, response);
+                ServletContext servletContext = (ServletContext) request.getSession().getServletContext();
+                RequestHandler rh = (RequestHandler) servletContext.getAttribute("_REQUEST_HANDLER_");
+                out.append(rh.makeLink(request, response, "/" + fullRequest, false, false, true));
                 out.write("\">Edit</a>");
                 out.write("</div>");
             }

Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderSubContentCacheTransform.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderSubContentCacheTransform.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderSubContentCacheTransform.java (original)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/webapp/ftl/RenderSubContentCacheTransform.java Mon Mar 16 22:12:30 2009
@@ -25,6 +25,7 @@
 import java.util.Locale;
 import java.util.Map;
 
+import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -41,6 +42,7 @@
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.model.ModelEntity;
 import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.webapp.control.RequestHandler;
 import org.ofbiz.widget.WidgetWorker;
 
 import freemarker.core.Environment;
@@ -264,7 +266,9 @@
               
                 if (Debug.infoOn()) Debug.logInfo("in Render(2), contentIdTo ." + contentIdTo , module);
                 out.write("<a href=\"");
-                WidgetWorker.appendOfbizUrl(out, fullRequest, request, response);
+                ServletContext servletContext = (ServletContext) request.getSession().getServletContext();
+                RequestHandler rh = (RequestHandler) servletContext.getAttribute("_REQUEST_HANDLER_");
+                out.append(rh.makeLink(request, response, "/" + fullRequest, false, false, true));
                 out.write("\">Edit</a>");
                 out.write("</div>");
             }

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilMisc.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilMisc.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilMisc.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilMisc.java Mon Mar 16 22:12:30 2009
@@ -270,10 +270,7 @@
     /**
      * Assuming theMap not null; if null will throw a NullPointerException
      */
-    public static <K> void addToBigDecimalInMap(Map<K, Object> theMap, K mapKey, BigDecimal addNumber) {
-        if (addNumber == null || ZERO_BD.equals(addNumber)) {
-            return;
-        }
+    public static <K> BigDecimal addToBigDecimalInMap(Map<K, Object> theMap, K mapKey, BigDecimal addNumber) {
         Object currentNumberObj = theMap.get(mapKey);
         BigDecimal currentNumber = null;
         if (currentNumberObj == null) {
@@ -288,8 +285,12 @@
             throw new IllegalArgumentException("In addToBigDecimalInMap found a Map value of a type not supported: " + currentNumberObj.getClass().getName());
         }
         
+        if (addNumber == null || ZERO_BD.equals(addNumber)) {
+            return currentNumber;
+        }
         currentNumber = currentNumber.add(addNumber);
         theMap.put(mapKey, currentNumber);
+        return currentNumber;
     }
 
     public static <T> T removeFirst(List<T> lst) {

Modified: ofbiz/trunk/framework/widget/dtd/widget-menu.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-menu.xsd?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/dtd/widget-menu.xsd (original)
+++ ofbiz/trunk/framework/widget/dtd/widget-menu.xsd Mon Mar 16 22:12:30 2009
@@ -153,6 +153,7 @@
     <xs:element name="link">
         <xs:complexType>
             <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/>
                 <xs:element minOccurs="0" ref="image"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.link"/>
@@ -166,6 +167,14 @@
         <xs:attribute type="xs:string" name="target"/>
         <xs:attribute type="xs:string" name="target-window"/>
         <xs:attribute type="xs:string" name="prefix"/>
+        <xs:attribute name="link-type" default="anchor">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="anchor"/>
+                    <xs:enumeration value="hidden-form"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
         <xs:attribute name="url-mode" default="intra-app">
             <xs:simpleType>
                 <xs:restriction base="xs:token">
@@ -201,7 +210,17 @@
             </xs:simpleType>
         </xs:attribute>
     </xs:attributeGroup>
-
+    <xs:element name="parameter">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.parameter"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.parameter">
+        <xs:attribute type="xs:string" name="param-name" use="required"/>
+        <xs:attribute type="xs:string" name="from-field"/>
+        <xs:attribute type="xs:string" name="value"/>
+    </xs:attributeGroup>
+    
     <!-- ================ ACTIONS ================ -->
     <xs:element name="AllActions" abstract="true"/>
     <xs:element name="actions">

Modified: ofbiz/trunk/framework/widget/dtd/widget-screen.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen.xsd?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/dtd/widget-screen.xsd (original)
+++ ofbiz/trunk/framework/widget/dtd/widget-screen.xsd Mon Mar 16 22:12:30 2009
@@ -820,6 +820,7 @@
     <xs:element name="link" substitutionGroup="AllWidgets">
         <xs:complexType>
             <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/>
                 <xs:element minOccurs="0" ref="image"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.link"/>
@@ -833,6 +834,14 @@
         <xs:attribute type="xs:string" name="name"/>
         <xs:attribute type="xs:string" name="target-window"/>
         <xs:attribute type="xs:string" name="prefix"/>
+        <xs:attribute name="link-type" default="anchor">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="anchor"/>
+                    <xs:enumeration value="hidden-form"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
         <xs:attribute name="url-mode" default="intra-app">
             <xs:simpleType>
                 <xs:restriction base="xs:token">
@@ -868,6 +877,17 @@
             </xs:simpleType>
         </xs:attribute>
     </xs:attributeGroup>
+    <xs:element name="parameter">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.parameter"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.parameter">
+        <xs:attribute type="xs:string" name="param-name" use="required"/>
+        <xs:attribute type="xs:string" name="from-field"/>
+        <xs:attribute type="xs:string" name="value"/>
+    </xs:attributeGroup>
+    
     <xs:element name="screenlet" substitutionGroup="AllWidgets">
         <xs:complexType>
             <xs:sequence>

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/WidgetWorker.java Mon Mar 16 22:12:30 2009
@@ -31,10 +31,13 @@
 import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilHttp;
 import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.collections.FlexibleMapAccessor;
+import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.webapp.control.RequestHandler;
 import org.ofbiz.webapp.taglib.ContentUrlTag;
 import org.ofbiz.widget.form.ModelForm;
 import org.ofbiz.widget.form.ModelFormField;
+import org.w3c.dom.Element;
 
 public class WidgetWorker {
 
@@ -42,12 +45,22 @@
 
     public WidgetWorker () {}
 
-    public static void buildHyperlinkUrl(Appendable externalWriter, String target, String targetType, List<ModelFormField.Parameter> parameterList, HttpServletRequest request, HttpServletResponse response, Map<String, Object> context) throws IOException {
+    public static void buildHyperlinkUrl(Appendable externalWriter, String target, String targetType, List<WidgetWorker.Parameter> parameterList,
+            String prefix, boolean fullPath, boolean secure, boolean encode, HttpServletRequest request, HttpServletResponse response, Map<String, Object> context) throws IOException {
         String localRequestName = UtilHttp.encodeAmpersands(target);
         Appendable localWriter = new StringWriter();
         
         if ("intra-app".equals(targetType)) {
-            appendOfbizUrl(localWriter, "/" + localRequestName, request, response);
+            if (request != null && response != null) {
+                ServletContext servletContext = (ServletContext) request.getSession().getServletContext();
+                RequestHandler rh = (RequestHandler) servletContext.getAttribute("_REQUEST_HANDLER_");
+                externalWriter.append(rh.makeLink(request, response, "/" + localRequestName, fullPath, secure, encode));
+            } else if (prefix != null) {
+                externalWriter.append(prefix);
+                externalWriter.append(localRequestName);
+            } else {
+                externalWriter.append(localRequestName);
+            }
         } else if ("inter-app".equals(targetType)) {
             String fullTarget = localRequestName;
             localWriter.append(fullTarget);
@@ -78,7 +91,7 @@
                 needsAmp = false;
             }
             
-            for (ModelFormField.Parameter parameter: parameterList) {
+            for (WidgetWorker.Parameter parameter: parameterList) {
                 if (needsAmp) {
                     externalWriter.append("&amp;");
                 } else {
@@ -98,13 +111,6 @@
         }
     }
 
-    public static void appendOfbizUrl(Appendable writer, String location, HttpServletRequest request, HttpServletResponse response) throws IOException {
-        ServletContext ctx = (ServletContext) request.getAttribute("servletContext");
-        RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_");
-        // make and append the link
-        writer.append(rh.makeLink(request, response, location));
-    }
-
     public static void appendContentUrl(Appendable writer, String location, HttpServletRequest request) throws IOException {
         StringBuffer buffer = new StringBuffer();
         ContentUrlTag.appendContentPrefix(request, buffer);
@@ -113,10 +119,10 @@
     }
 
     public static void makeHyperlinkByType(Appendable writer, String linkType, String linkStyle, String targetType, String target,
-            List<ModelFormField.Parameter> parameterList, String description, String targetWindow, ModelFormField modelFormField,
+            List<WidgetWorker.Parameter> parameterList, String description, String targetWindow, ModelFormField modelFormField,
             HttpServletRequest request, HttpServletResponse response, Map<String, Object> context) throws IOException {
         if ("hidden-form".equals(linkType)) {
-            if ("multi".equals(modelFormField.getModelForm().getType())) {
+            if (modelFormField != null && "multi".equals(modelFormField.getModelForm().getType())) {
                 WidgetWorker.makeHiddenFormLinkAnchor(writer, linkStyle, description, modelFormField, request, response, context);
 
                 // this is a bit trickier, since we can't do a nested form we'll have to put the link to submit the form in place, but put the actual form def elsewhere, ie after the big form is closed
@@ -137,7 +143,7 @@
         
     }
     
-    public static void makeHyperlinkString(Appendable writer, String linkStyle, String targetType, String target, List<ModelFormField.Parameter> parameterList,
+    public static void makeHyperlinkString(Appendable writer, String linkStyle, String targetType, String target, List<WidgetWorker.Parameter> parameterList,
             String description, ModelFormField modelFormField, HttpServletRequest request, HttpServletResponse response, Map<String, Object> context, String targetWindow)
             throws IOException {
         if (UtilValidate.isNotEmpty(description) || UtilValidate.isNotEmpty(request.getAttribute("image"))) {
@@ -151,7 +157,7 @@
 
             writer.append(" href=\"");
 
-            buildHyperlinkUrl(writer, target, targetType, parameterList, request, response, context);
+            buildHyperlinkUrl(writer, target, targetType, parameterList, null, false, false, true, request, response, context);
 
             writer.append("\"");
             
@@ -217,10 +223,11 @@
         }
     }
     
-    public static void makeHiddenFormLinkForm(Appendable writer, String target, String targetType, String targetWindow, List<ModelFormField.Parameter> parameterList, ModelFormField modelFormField, HttpServletRequest request, HttpServletResponse response, Map<String, Object> context) throws IOException {
+    public static void makeHiddenFormLinkForm(Appendable writer, String target, String targetType, String targetWindow, List<WidgetWorker.Parameter> parameterList, ModelFormField modelFormField, HttpServletRequest request, HttpServletResponse response, Map<String, Object> context) throws IOException {
         writer.append("<form method=\"post\"");
         writer.append(" action=\"");
-        WidgetWorker.buildHyperlinkUrl(writer, target, targetType, null, request, response, context);
+        // note that this passes null for the parameterList on purpose so they won't be put into the URL
+        WidgetWorker.buildHyperlinkUrl(writer, target, targetType, null, null, false, false, true, request, response, context);
         writer.append("\"");
 
         if (UtilValidate.isNotEmpty(targetWindow)) {
@@ -235,7 +242,7 @@
         writer.append(makeLinkHiddenFormName(context, modelFormField));
         writer.append("\">");
 
-        for (ModelFormField.Parameter parameter: parameterList) {
+        for (WidgetWorker.Parameter parameter: parameterList) {
             writer.append("<input name=\"");
             writer.append(parameter.getName());
             writer.append("\" value=\"");
@@ -260,4 +267,37 @@
             return formName + modelForm.getItemIndexSeparator() + modelFormField.getName();
         }
     }
+
+    public static class Parameter {
+        protected String name;
+        protected FlexibleStringExpander value;
+        protected FlexibleMapAccessor<Object> fromField;
+
+        public Parameter(Element element) {
+            this.name = element.getAttribute("param-name");
+            this.value = UtilValidate.isNotEmpty(element.getAttribute("value")) ? FlexibleStringExpander.getInstance(element.getAttribute("value")) : null;
+            this.fromField = UtilValidate.isNotEmpty(element.getAttribute("from-field")) ? FlexibleMapAccessor.getInstance(element.getAttribute("from-field")) : null;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public String getValue(Map<String, Object> context) {
+            if (this.value != null) {
+                return this.value.expandString(context);
+            } else if (this.fromField != null) {
+                Object contextVal = this.fromField.get(context);
+                return contextVal.toString();
+            } else {
+                // as a last chance try finding a context field with the key of the name field
+                Object obj = context.get(this.name);
+                if (obj != null) {
+                    return obj.toString();
+                } else {
+                    return null;
+                }
+            }
+        }
+    }
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Mon Mar 16 22:12:30 2009
@@ -61,6 +61,7 @@
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.ModelParam;
 import org.ofbiz.service.ModelService;
+import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.form.ModelForm.UpdateArea;
 import org.w3c.dom.Element;
 
@@ -2200,39 +2201,6 @@
         }
     }
     
-    public static class Parameter {
-        protected String name;
-        protected FlexibleStringExpander value;
-        protected FlexibleMapAccessor<Object> fromField;
-
-        public Parameter(Element element) {
-            this.name = element.getAttribute("param-name");
-            this.value = UtilValidate.isNotEmpty(element.getAttribute("value")) ? FlexibleStringExpander.getInstance(element.getAttribute("value")) : null;
-            this.fromField = UtilValidate.isNotEmpty(element.getAttribute("from-field")) ? FlexibleMapAccessor.getInstance(element.getAttribute("from-field")) : null;
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public String getValue(Map<String, Object> context) {
-            if (this.value != null) {
-                return this.value.expandString(context);
-            } else if (this.fromField != null) {
-                Object contextVal = this.fromField.get(context);
-                return contextVal.toString();
-            } else {
-                // as a last chance try finding a context field with the key of the name field
-                Object obj = context.get(this.name);
-                if (obj != null) {
-                    return obj.toString();
-                } else {
-                    return null;
-                }
-            }
-        }
-    }
-
     public static class HyperlinkField extends FieldInfo {
         public static String DEFAULT_TARGET_TYPE = "intra-app";
 
@@ -2243,7 +2211,7 @@
         protected FlexibleStringExpander target;
         protected FlexibleStringExpander description;
         protected FlexibleStringExpander targetWindowExdr;
-        protected List<Parameter> parameterList = FastList.newInstance();
+        protected List<WidgetWorker.Parameter> parameterList = FastList.newInstance();
 
         protected HyperlinkField() {
             super();
@@ -2270,7 +2238,7 @@
             
             List<? extends Element> parameterElementList = UtilXml.childElementList(element, "parameter");
             for (Element parameterElement: parameterElementList) {
-                this.parameterList.add(new Parameter(parameterElement));
+                this.parameterList.add(new WidgetWorker.Parameter(parameterElement));
             }
         }
 
@@ -2307,7 +2275,7 @@
             return this.target.expandString(context);
         }
         
-        public List<Parameter> getParameterList() {
+        public List<WidgetWorker.Parameter> getParameterList() {
             return this.parameterList;
         }
         
@@ -2352,7 +2320,7 @@
         protected FlexibleStringExpander target;
         protected FlexibleStringExpander description;
         protected FlexibleStringExpander targetWindowExdr;
-        protected List<Parameter> parameterList = FastList.newInstance();
+        protected List<WidgetWorker.Parameter> parameterList = FastList.newInstance();
         protected ModelFormField modelFormField;
 
         public SubHyperlink(Element element, ModelFormField modelFormField) {
@@ -2366,16 +2334,12 @@
             
             List<? extends Element> parameterElementList = UtilXml.childElementList(element, "parameter");
             for (Element parameterElement: parameterElementList) {
-                this.parameterList.add(new Parameter(parameterElement));
+                this.parameterList.add(new WidgetWorker.Parameter(parameterElement));
             }
             
             this.modelFormField = modelFormField;
         }
 
-        public String getLinkType() {
-            return this.linkType;
-        }
-        
         public String getLinkStyle() {
             return this.linkStyle;
         }
@@ -2409,7 +2373,11 @@
             }
         }
         
-        public List<Parameter> getParameterList() {
+        public String getLinkType() {
+            return this.linkType;
+        }
+        
+        public List<WidgetWorker.Parameter> getParameterList() {
             return this.parameterList;
         }
 

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java Mon Mar 16 22:12:30 2009
@@ -1293,7 +1293,7 @@
         writer.append(" action=\"");
         if (targ != null && targ.length() > 0) {
             //this.appendOfbizUrl(writer, "/" + targ);
-            WidgetWorker.buildHyperlinkUrl(writer, targ, targetType, null, request, response, context);
+            WidgetWorker.buildHyperlinkUrl(writer, targ, targetType, null, null, false, false, true, request, response, context);
         }
         writer.append("\" ");
 

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlMenuRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlMenuRenderer.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlMenuRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlMenuRenderer.java Mon Mar 16 22:12:30 2009
@@ -19,6 +19,7 @@
 package org.ofbiz.widget.html;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -28,11 +29,13 @@
 import javax.servlet.http.HttpSession;
 
 import org.ofbiz.base.util.StringUtil;
+import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.entity.GenericDelegator;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.webapp.control.RequestHandler;
 import org.ofbiz.webapp.taglib.ContentUrlTag;
+import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.menu.MenuStringRenderer;
 import org.ofbiz.widget.menu.ModelMenu;
 import org.ofbiz.widget.menu.ModelMenuItem;
@@ -103,7 +106,7 @@
             //if (Debug.infoOn()) Debug.logInfo("in appendContentUrl, ctx is NOT null(2)", "");
             this.request.setAttribute("servletContext", ctx);
         }
-        GenericDelegator delegator = (GenericDelegator)request.getAttribute("delegator");
+        GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator");
         if (delegator == null) {
                 //if (Debug.infoOn()) Debug.logInfo("in appendContentUrl, delegator is null(6)", "");
         }
@@ -360,13 +363,50 @@
     }
 
     public void renderLink(Appendable writer, Map<String, Object> context, ModelMenuItem.Link link) throws IOException {
-        ModelMenuItem menuItem = link.getLinkMenuItem();
         String target = link.getTarget(context);
+        ModelMenuItem menuItem = link.getLinkMenuItem();
         if (menuItem.getDisabled()) {
             target = null;
         }
+        
         if (UtilValidate.isNotEmpty(target)) {
-            // open tag
+            HttpServletResponse response = (HttpServletResponse) context.get("response");
+            HttpServletRequest request = (HttpServletRequest) context.get("request");
+
+            String targetWindow = link.getTargetWindow(context);
+            String uniqueItemName = menuItem.getModelMenu().getName() + "_" + menuItem.getName() + "_LF_" + UtilMisc.<String>addToBigDecimalInMap(context, "menuUniqueItemIndex", BigDecimal.ONE);
+
+            if ("hidden-form".equals(link.getLinkType())) {
+                writer.append("<form method=\"post\"");
+                writer.append(" action=\"");
+                // note that this passes null for the parameterList on purpose so they won't be put into the URL
+                WidgetWorker.buildHyperlinkUrl(writer, target, link.getUrlMode(), null, link.getPrefix(context),
+                        link.getFullPath(), link.getSecure(), link.getEncode(), request, response, context);
+                writer.append("\"");
+
+                if (UtilValidate.isNotEmpty(targetWindow)) {
+                    writer.append(" target=\"");
+                    writer.append(targetWindow);
+                    writer.append("\"");
+                }
+
+                writer.append(" onSubmit=\"javascript:submitFormDisableSubmits(this)\"");
+
+                writer.append(" name=\"");
+                writer.append(uniqueItemName);
+                writer.append("\">");
+
+                for (WidgetWorker.Parameter parameter: link.getParameterList()) {
+                    writer.append("<input name=\"");
+                    writer.append(parameter.getName());
+                    writer.append("\" value=\"");
+                    writer.append(parameter.getValue(context));
+                    writer.append("\" type=\"hidden\"/>");
+                }
+                
+                writer.append("</form>");
+            }
+            
             writer.append("<a");
             String id = link.getId(context);
             if (UtilValidate.isNotEmpty(id)) {
@@ -375,31 +415,6 @@
                 writer.append("\"");
             }
             
-            /*
-             boolean isSelected = menuItem.isSelected(context);
-            
-             String style = null;
-            
-             if (isSelected) {
-             style = menuItem.getSelectedStyle();
-             } else {
-             style = link.getStyle(context);
-             if (UtilValidate.isEmpty(style))
-             style = menuItem.getTitleStyle();
-             if (UtilValidate.isEmpty(style))
-             style = menuItem.getWidgetStyle();
-             }
-            
-             if (menuItem.getDisabled()) {
-             style = menuItem.getDisabledTitleStyle();
-             }
-            
-             if (UtilValidate.isNotEmpty(style)) {
-             writer.append(" class=\"");
-             writer.append(style);
-             writer.append("\"");
-             }
-             */
             String style = link.getStyle(context);
             if (UtilValidate.isNotEmpty(style)) {
                 writer.append(" class=\"");
@@ -412,63 +427,62 @@
                 writer.append(name);
                 writer.append("\"");
             }
-            String targetWindow = link.getTargetWindow(context);
             if (UtilValidate.isNotEmpty(targetWindow)) {
                 writer.append(" target=\"");
                 writer.append(targetWindow);
                 writer.append("\"");
             }
+
             writer.append(" href=\"");
-            String urlMode = link.getUrlMode();
-            String prefix = link.getPrefix(context);
-            boolean fullPath = link.getFullPath();
-            boolean secure = link.getSecure();
-            boolean encode = link.getEncode();
-            HttpServletResponse res = (HttpServletResponse) context.get("response");
-            HttpServletRequest req = (HttpServletRequest) context.get("request");
-            if (urlMode != null && urlMode.equalsIgnoreCase("intra-app")) {
-                if (req != null && res != null) {
-                    ServletContext ctx = (ServletContext) req.getAttribute("servletContext");
-                    RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_");
-                    String urlString = rh.makeLink(req, res, target, fullPath, secure, encode);
-                    writer.append(urlString);
-                } else if (prefix != null) {
-                    writer.append(prefix + target);
-                } else {
-                    writer.append(target);
-                }
-            } else if (urlMode != null && urlMode.equalsIgnoreCase("content")) {
-                StringBuffer newURL = new StringBuffer();
-                ContentUrlTag.appendContentPrefix(req, newURL);
-                newURL.append(target);
-                writer.append(newURL.toString());
-            } else if ("inter-app".equalsIgnoreCase(urlMode) && req != null) {
-                String externalLoginKey = (String) req.getAttribute("externalLoginKey");
-                if (UtilValidate.isNotEmpty(externalLoginKey)) {
-                    if (target.contains("?")) {
-                        target += "&externalLoginKey=" + externalLoginKey;
-                    } else {
-                        target += "?externalLoginKey=" + externalLoginKey;
-                    }
-                    writer.append(target);
-                }
+            if ("hidden-form".equals(link.getLinkType())) {
+                writer.append("javascript:document.");
+                writer.append(uniqueItemName);
+                writer.append(".submit()");
             } else {
-                writer.append(target);
+                WidgetWorker.buildHyperlinkUrl(writer, target, link.getUrlMode(), link.getParameterList(), link.getPrefix(context),
+                        link.getFullPath(), link.getSecure(), link.getEncode(), request, response, context);
             }
             writer.append("\">");
         }
         
         // the text
         Image img = link.getImage();
-        if (img == null)
+        if (img == null) {
             writer.append(link.getText(context));
-        else
+        } else {
             renderImage(writer, context, img);
+        }
         
         if (UtilValidate.isNotEmpty(target)) {
             // close tag
             writer.append("</a>");
         }
+        
+        /* NOTE DEJ20090316: This was here as a comment and not sure what it is for or if it is useful... can probably be safely removed in the future if still not used/needed
+        boolean isSelected = menuItem.isSelected(context);
+        
+        String style = null;
+        
+        if (isSelected) {
+        style = menuItem.getSelectedStyle();
+        } else {
+        style = link.getStyle(context);
+        if (UtilValidate.isEmpty(style))
+        style = menuItem.getTitleStyle();
+        if (UtilValidate.isEmpty(style))
+        style = menuItem.getWidgetStyle();
+        }
+        
+        if (menuItem.getDisabled()) {
+        style = menuItem.getDisabledTitleStyle();
+        }
+        
+        if (UtilValidate.isNotEmpty(style)) {
+        writer.append(" class=\"");
+        writer.append(style);
+        writer.append("\"");
+        }
+        */
     }
 
     public void renderImage(Appendable writer, Map<String, Object> context, ModelMenuItem.Image image) throws IOException {

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java Mon Mar 16 22:12:30 2009
@@ -19,8 +19,10 @@
 package org.ofbiz.widget.html;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
@@ -43,6 +45,7 @@
 import org.ofbiz.webapp.taglib.ContentUrlTag;
 import org.ofbiz.widget.WidgetContentWorker;
 import org.ofbiz.widget.WidgetDataResourceWorker;
+import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.form.FormStringRenderer;
 import org.ofbiz.widget.form.ModelForm;
 import org.ofbiz.widget.menu.MenuStringRenderer;
@@ -449,7 +452,45 @@
     }
 
     public void renderLink(Appendable writer, Map<String, Object> context, ModelScreenWidget.Link link) throws IOException {
-        // open tag
+        HttpServletResponse response = (HttpServletResponse) context.get("response");
+        HttpServletRequest request = (HttpServletRequest) context.get("request");
+
+        String targetWindow = link.getTargetWindow(context);
+        String target = link.getTarget(context);
+        
+        String uniqueItemName = link.getModelScreen().getName() + "_LF_" + UtilMisc.<String>addToBigDecimalInMap(context, "screenUniqueItemIndex", BigDecimal.ONE);
+
+        if ("hidden-form".equals(link.getLinkType())) {
+            writer.append("<form method=\"post\"");
+            writer.append(" action=\"");
+            // note that this passes null for the parameterList on purpose so they won't be put into the URL
+            WidgetWorker.buildHyperlinkUrl(writer, target, link.getUrlMode(), null, link.getPrefix(context),
+                    link.getFullPath(), link.getSecure(), link.getEncode(), request, response, context);
+            writer.append("\"");
+
+            if (UtilValidate.isNotEmpty(targetWindow)) {
+                writer.append(" target=\"");
+                writer.append(targetWindow);
+                writer.append("\"");
+            }
+
+            writer.append(" onSubmit=\"javascript:submitFormDisableSubmits(this)\"");
+
+            writer.append(" name=\"");
+            writer.append(uniqueItemName);
+            writer.append("\">");
+
+            for (WidgetWorker.Parameter parameter: link.getParameterList()) {
+                writer.append("<input name=\"");
+                writer.append(parameter.getName());
+                writer.append("\" value=\"");
+                writer.append(parameter.getValue(context));
+                writer.append("\" type=\"hidden\"/>");
+            }
+            
+            writer.append("</form>");
+        }
+        
         writer.append("<a");
         String id = link.getId(context);
         if (UtilValidate.isNotEmpty(id)) {
@@ -469,64 +510,32 @@
             writer.append(name);
             writer.append("\"");
         }
-        String targetWindow = link.getTargetWindow(context);
         if (UtilValidate.isNotEmpty(targetWindow)) {
             writer.append(" target=\"");
             writer.append(targetWindow);
             writer.append("\"");
         }
-        String target = link.getTarget(context);
         if (UtilValidate.isNotEmpty(target)) {
             writer.append(" href=\"");
-            String urlMode = link.getUrlMode();
-            String prefix = link.getPrefix(context);
-            boolean fullPath = link.getFullPath();
-            boolean secure = link.getSecure();
-            boolean encode = link.getEncode();
-            HttpServletResponse response = (HttpServletResponse) context.get("response");
-            HttpServletRequest request = (HttpServletRequest) context.get("request");
-            if (urlMode != null && urlMode.equalsIgnoreCase("intra-app")) {
-                if (request != null && response != null) {
-                    ServletContext ctx = (ServletContext) request.getAttribute("servletContext");
-                    RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_");
-                    String urlString = rh.makeLink(request, response, target, fullPath, secure, encode);
-                    writer.append(urlString);
-                } else if (prefix != null) {
-                    writer.append(prefix + target);
-                } else {
-                    writer.append(target);
-                }
-            } else  if (urlMode != null && urlMode.equalsIgnoreCase("content")) {
-                if (request != null && response != null) {
-                    StringBuffer newURL = new StringBuffer();
-                    ContentUrlTag.appendContentPrefix(request, newURL);
-                    newURL.append(target);
-                    writer.append(newURL.toString());
-                }
-            } else if ("inter-app".equalsIgnoreCase(urlMode) && request != null) {
-                String externalLoginKey = (String) request.getAttribute("externalLoginKey");
-                if (UtilValidate.isNotEmpty(externalLoginKey)) {
-                    if (target.contains("?")) {
-                        target += "&externalLoginKey=" + externalLoginKey;
-                    } else {
-                        target += "?externalLoginKey=" + externalLoginKey;
-                    }
-                    writer.append(target);
-                }
+            if ("hidden-form".equals(link.getLinkType())) {
+                writer.append("javascript:document.");
+                writer.append(uniqueItemName);
+                writer.append(".submit()");
             } else {
-                writer.append(target);
+                WidgetWorker.buildHyperlinkUrl(writer, target, link.getUrlMode(), link.getParameterList(), link.getPrefix(context),
+                        link.getFullPath(), link.getSecure(), link.getEncode(), request, response, context);
             }
-
             writer.append("\"");
         }
         writer.append(">");
         
         // the text
         ModelScreenWidget.Image img = link.getImage();
-        if (img == null)
+        if (img == null) {
             writer.append(link.getText(context));
-        else
+        } else {
             renderImage(writer, context, img);
+        }
         
         // close tag
         writer.append("</a>");

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuItem.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuItem.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuItem.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuItem.java Mon Mar 16 22:12:30 2009
@@ -26,6 +26,8 @@
 
 import javax.xml.parsers.ParserConfigurationException;
 
+import javolution.util.FastList;
+
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.UtilFormatOut;
@@ -33,6 +35,7 @@
 import org.ofbiz.base.util.UtilXml;
 import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.entityext.permission.EntityPermissionChecker;
+import org.ofbiz.widget.WidgetWorker;
 import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
 
@@ -512,7 +515,6 @@
     }
 
     public static class Link {
-
         protected ModelMenuItem linkMenuItem;
         protected FlexibleStringExpander textExdr;
         protected FlexibleStringExpander idExdr;
@@ -526,9 +528,10 @@
         protected boolean fullPath = false;
         protected boolean secure = false;
         protected boolean encode = false;
+        protected String linkType;
+        protected List<WidgetWorker.Parameter> parameterList = FastList.newInstance();
 
         public Link(Element linkElement, ModelMenuItem parentMenuItem) {
-
             this.linkMenuItem = parentMenuItem;
             setText(linkElement.getAttribute("text"));
             setId(linkElement.getAttribute("id"));
@@ -545,10 +548,15 @@
             if (imageElement != null) {
                 this.image = new Image(imageElement);
             }
+            
+            this.linkType = linkElement.getAttribute("link-type");
+            List<? extends Element> parameterElementList = UtilXml.childElementList(linkElement, "parameter");
+            for (Element parameterElement: parameterElementList) {
+                this.parameterList.add(new WidgetWorker.Parameter(parameterElement));
+            }
         }
 
         public Link(ModelMenuItem parentMenuItem) {
-
             this.linkMenuItem = parentMenuItem;
             setText("");
             setId("");
@@ -632,6 +640,14 @@
             return this.image;
         }
 
+        public String getLinkType() {
+            return this.linkType;
+        }
+        
+        public List<WidgetWorker.Parameter> getParameterList() {
+            return this.parameterList;
+        }
+
         public void setText(String val) {
             String textAttr = UtilFormatOut.checkNull(val);
             this.textExdr = FlexibleStringExpander.getInstance(textAttr);

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java Mon Mar 16 22:12:30 2009
@@ -45,6 +45,7 @@
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.widget.ModelWidget;
+import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.fo.FoScreenRenderer;
 import org.ofbiz.widget.form.FormFactory;
 import org.ofbiz.widget.form.FormStringRenderer;
@@ -65,6 +66,7 @@
 /**
  * Widget Library - Screen model class
  */
+@SuppressWarnings("serial")
 public abstract class ModelScreenWidget extends ModelWidget implements Serializable {
     public static final String module = ModelScreenWidget.class.getName();
 
@@ -83,7 +85,6 @@
     public static List<ModelScreenWidget> readSubWidgets(ModelScreen modelScreen, List<? extends Element> subElementList) {
         List<ModelScreenWidget> subWidgets = FastList.newInstance();
         for (Element subElement: subElementList) {
-
             if ("section".equals(subElement.getNodeName())) {
                 subWidgets.add(new Section(modelScreen, subElement));
             } else if ("container".equals(subElement.getNodeName())) {
@@ -142,7 +143,10 @@
         return modelScreen.boundaryCommentsEnabled();
     }
     
-    @SuppressWarnings("serial")
+    public ModelScreen getModelScreen() {
+        return this.modelScreen;
+    }
+    
     public static class SectionsRenderer extends HashMap<String, Object> {
         protected ScreenStringRenderer screenStringRenderer;
         protected Map<String, Object> context;
@@ -166,7 +170,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class Section extends ModelScreenWidget {
         protected ModelScreenCondition condition;
         protected List<ModelScreenAction> actions;
@@ -260,7 +263,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class Container extends ModelScreenWidget {
         protected FlexibleStringExpander idExdr;
         protected FlexibleStringExpander styleExdr;
@@ -318,7 +320,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class Screenlet extends ModelScreenWidget {
         protected FlexibleStringExpander idExdr;
         protected FlexibleStringExpander titleExdr;
@@ -449,7 +450,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class HorizontalSeparator extends ModelScreenWidget {
         protected FlexibleStringExpander idExdr;
         protected FlexibleStringExpander styleExdr;
@@ -477,7 +477,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class IncludeScreen extends ModelScreenWidget {
         protected FlexibleStringExpander nameExdr;
         protected FlexibleStringExpander locationExdr;
@@ -576,7 +575,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class DecoratorScreen extends ModelScreenWidget {
         protected FlexibleStringExpander nameExdr;
         protected FlexibleStringExpander locationExdr;
@@ -663,7 +661,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class DecoratorSection extends ModelScreenWidget {
         protected List<ModelScreenWidget> subWidgets;
         
@@ -684,7 +681,6 @@
         }
     }
     
-    @SuppressWarnings("serial")
     public static class DecoratorSectionInclude extends ModelScreenWidget {
         
         public DecoratorSectionInclude(ModelScreen modelScreen, Element decoratorSectionElement) {
@@ -717,7 +713,6 @@
         }
     }
     
-    @SuppressWarnings("serial")
     public static class Label extends ModelScreenWidget {
         protected FlexibleStringExpander textExdr;
         
@@ -768,7 +763,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class Form extends ModelScreenWidget {
         protected FlexibleStringExpander nameExdr;
         protected FlexibleStringExpander locationExdr;
@@ -855,7 +849,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class Tree extends ModelScreenWidget {
         protected FlexibleStringExpander nameExdr;
         protected FlexibleStringExpander locationExdr;
@@ -949,7 +942,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class PlatformSpecific extends ModelScreenWidget {
         protected Map<String, ModelScreenWidget> subWidgets;
         
@@ -1004,7 +996,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class Content extends ModelScreenWidget {
         
         protected FlexibleStringExpander contentId;
@@ -1145,7 +1136,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class SubContent extends ModelScreenWidget {
         protected FlexibleStringExpander contentId;
         protected FlexibleStringExpander mapKey;
@@ -1211,7 +1201,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class Menu extends ModelScreenWidget {
         protected FlexibleStringExpander nameExdr;
         protected FlexibleStringExpander locationExdr;
@@ -1278,7 +1267,6 @@
         }
     }
     
-    @SuppressWarnings("serial")
     public static class Link extends ModelScreenWidget {
         protected FlexibleStringExpander textExdr;
         protected FlexibleStringExpander idExdr;
@@ -1292,6 +1280,8 @@
         protected boolean fullPath = false;
         protected boolean secure = false;
         protected boolean encode = false;
+        protected String linkType;
+        protected List<WidgetWorker.Parameter> parameterList = FastList.newInstance();
         
 
         public Link(ModelScreen modelScreen, Element linkElement) {
@@ -1312,7 +1302,12 @@
             if (imageElement != null) {
                 this.image = new Image(modelScreen, imageElement);
             }
-
+            
+            this.linkType = linkElement.getAttribute("link-type");
+            List<? extends Element> parameterElementList = UtilXml.childElementList(linkElement, "parameter");
+            for (Element parameterElement: parameterElementList) {
+                this.parameterList.add(new WidgetWorker.Parameter(parameterElement));
+            }
         }
 
         public void renderWidgetString(Appendable writer, Map<String, Object> context, ScreenStringRenderer screenStringRenderer) {
@@ -1383,6 +1378,14 @@
             return this.image;
         }
 
+        public String getLinkType() {
+            return this.linkType;
+        }
+        
+        public List<WidgetWorker.Parameter> getParameterList() {
+            return this.parameterList;
+        }
+
         public void setText(String val) {
             String textAttr = UtilFormatOut.checkNull(val);
             this.textExdr = FlexibleStringExpander.getInstance(textAttr);
@@ -1442,7 +1445,6 @@
         }
     }
 
-    @SuppressWarnings("serial")
     public static class Image extends ModelScreenWidget {
         protected FlexibleStringExpander srcExdr;
         protected FlexibleStringExpander idExdr;

Modified: ofbiz/trunk/specialpurpose/myportal/widget/MyPortalMenus.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/myportal/widget/MyPortalMenus.xml?rev=755022&r1=755021&r2=755022&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/myportal/widget/MyPortalMenus.xml (original)
+++ ofbiz/trunk/specialpurpose/myportal/widget/MyPortalMenus.xml Mon Mar 16 22:12:30 2009
@@ -122,7 +122,11 @@
                     <if-has-permission permission="PARTYMGR_CME-EMAIL_CREATE"/>
                 </and>
             </condition>
-            <link target="setCommunicationEventRoleStatus?communicationEventId=${parameters.communicationEventId}&amp;roleTypeId=${communicationEventRole.roleTypeId}&amp;statusId=COM_ROLE_COMPLETED"/>
+            <link target="setCommunicationEventRoleStatus">
+                <parameter param-name="communicationEventId" from-field="parameters.communicationEventId"/>
+                <parameter param-name="roleTypeId" from-field="communicationEventRole.roleTypeId"/>
+                <parameter param-name="statusId" value="COM_ROLE_COMPLETED"/>
+            </link>
         </menu-item>
         <menu-item name="send" title="${uiLabelMap.CommonSend}">
             <condition>
@@ -132,7 +136,10 @@
                     <if-has-permission permission="PARTYMGR_CME-EMAIL_UPDATE"/>
                 </and>
             </condition>
-            <link target="updateCommunicationEvent/main?communicationEventId=${parameters.communicationEventId}&amp;statusId=COM_IN_PROGRESS"/>
+            <link target="updateCommunicationEvent/main">
+                <parameter param-name="communicationEventId" from-field="parameters.communicationEventId"/>
+                <parameter param-name="statusId" value="COM_IN_PROGRESS"/>
+            </link>
         </menu-item>
         <menu-item name="delete" title="${uiLabelMap.CommonDelete}">
             <condition>
@@ -141,7 +148,12 @@
                     <if-has-permission permission="PARTYMGR_CME-EMAIL_DELETE"/>
                 </and>
             </condition>
-            <link target="RemoveCommunicationEventRole?communicationEventId=${parameters.communicationEventId}&amp;roleTypeId=${communicationEventRole.roleTypeId}&amp;deleteCommEventIfLast=Y&amp;delContentDataResource=Y"/>
+            <link target="RemoveCommunicationEventRole">
+                <parameter param-name="communicationEventId" from-field="parameters.communicationEventId"/>
+                <parameter param-name="roleTypeId" from-field="communicationEventRole.roleTypeId"/>
+                <parameter param-name="deleteCommEventIfLast" value="Y"/>
+                <parameter param-name="delContentDataResource" value="Y"/>
+            </link>
         </menu-item>
     </menu>
     <menu name="RequestTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml">