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("&"); } 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}&roleTypeId=${communicationEventRole.roleTypeId}&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}&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}&roleTypeId=${communicationEventRole.roleTypeId}&deleteCommEventIfLast=Y&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"> |
Free forum by Nabble | Edit this page |