Author: jleroux
Date: Thu Mar 19 14:38:37 2015
New Revision: 1667774

URL: http://svn.apache.org/r1667774
Log:
Fixes <<You can't rely on Lookup field description-field-name attribute in a 
form having skip-start="true">> https://issues.apache.org/jira/browse/OFBIZ-6170

Instead of adding a form-name attribute only in lookup sub-element, I added it 
a the field level and removed the one at the lookup level.So the form-name 
field attribute can be used in the field of both the lookup and if needed the 
field set in the lookup description-field-name attribute. I only tested it in a 
version more near 13.07 but I believe it's ok here

Modified:
    ofbiz/trunk/framework/widget/dtd/widget-form.xsd
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormField.java
    
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormFieldBuilder.java
    
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java

Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1667774&r1=1667773&r2=1667774&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
+++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Thu Mar 19 14:38:37 2015
@@ -912,6 +912,14 @@ under the License.
                 </xs:documentation>
                 </xs:annotation>
             </xs:attribute>
+            <xs:attribute type="xs:string" name="form-name">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the parent form, needed at least for 
lookups when using skip-start="true"
+                        Must be set also on the related field if 
description-field-name is used 
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
         </xs:complexType>
     </xs:element>
 
@@ -1317,13 +1325,6 @@ under the License.
                 <xs:element minOccurs="0" ref="sub-hyperlink" />
             </xs:sequence>
             <xs:attribute type="xs:string" name="target-form-name" 
use="required" />
-            <xs:attribute type="xs:string" name="form-name">
-                <xs:annotation>
-                    <xs:documentation>
-                        The name of the parent form, needed when using 
skip-start="true" along with correct id-name value on field
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
             <xs:attribute type="xs:nonNegativeInteger" name="size" 
default="25" />
             <xs:attribute type="xs:positiveInteger" name="maxlength" />
             <xs:attribute type="xs:string" name="default-value" />

Modified: 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormField.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormField.java?rev=1667774&r1=1667773&r2=1667774&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormField.java 
(original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormField.java 
Thu Mar 19 14:38:37 2015
@@ -137,6 +137,7 @@ public class ModelFormField {
     private final FlexibleStringExpander useWhen;
     private final String widgetAreaStyle;
     private final String widgetStyle;
+    private final String parentFormName;
 
     private ModelFormField(ModelFormFieldBuilder builder) {
         this.action = builder.getAction();
@@ -187,6 +188,7 @@ public class ModelFormField {
         this.useWhen = builder.getUseWhen();
         this.widgetAreaStyle = builder.getWidgetAreaStyle();
         this.widgetStyle = builder.getWidgetStyle();
+        this.parentFormName = builder.getParentFormName();
     }
 
     public FlexibleStringExpander getAction() {
@@ -398,8 +400,13 @@ public class ModelFormField {
     public String getIdName() {
         if (UtilValidate.isNotEmpty(idName))
             return idName;
-        return this.modelForm.getName() + "_" + this.getFieldName();
-    }
+        String parentFormName = this.getParentFormName();
+        if (UtilValidate.isNotEmpty(parentFormName)) {
+            return parentFormName + "_" + this.getFieldName();
+        } else {
+           return this.modelForm.getName() + "_" + this.getFieldName();
+        }
+     }
 
     public Map<String, ? extends Object> getMap(Map<String, ? extends Object> 
context) {
         if (UtilValidate.isEmpty(this.mapAcsr))
@@ -643,6 +650,12 @@ public class ModelFormField {
         return this.modelForm.getDefaultWidgetStyle();
     }
 
+    public String getParentFormName() {
+        if (UtilValidate.isNotEmpty(this.parentFormName)) 
+            return this.parentFormName;
+        return "";
+    }
+
     /**
      * Checks if field is a row submit field.
      */
@@ -2761,7 +2774,6 @@ public class ModelFormField {
         private final String descriptionFieldName;
         private final String fadeBackground;
         private final FlexibleStringExpander formName;
-        private final String parentFormName;
         private final String initiallyCollapsed;
         private final String lookupHeight;
         private final String lookupPosition;
@@ -2773,7 +2785,6 @@ public class ModelFormField {
         public LookupField(Element element, ModelFormField modelFormField) {
             super(element, modelFormField);
             this.descriptionFieldName = 
element.getAttribute("description-field-name");
-            this.parentFormName = element.getAttribute("form-name");
             this.fadeBackground = element.getAttribute("fade-background");
             this.formName = 
FlexibleStringExpander.getInstance(element.getAttribute("target-form-name"));
             this.initiallyCollapsed = 
element.getAttribute("initially-collapsed");
@@ -2790,7 +2801,6 @@ public class ModelFormField {
             this.descriptionFieldName = "";
             this.fadeBackground = "";
             this.formName = FlexibleStringExpander.getInstance("");
-            this.parentFormName = "";
             this.initiallyCollapsed = "";
             this.lookupHeight = "";
             this.lookupPosition = "";
@@ -2805,7 +2815,6 @@ public class ModelFormField {
             this.descriptionFieldName = original.descriptionFieldName;
             this.fadeBackground = original.fadeBackground;
             this.formName = original.formName;
-            this.parentFormName = original.parentFormName;
             this.initiallyCollapsed = original.initiallyCollapsed;
             this.lookupHeight = original.lookupHeight;
             this.lookupPosition = original.lookupPosition;
@@ -2870,10 +2879,6 @@ public class ModelFormField {
             return targetParameter;
         }
 
-        public String getParentFormName() {
-            return this.parentFormName;
-        }        
-
         public List<String> getTargetParameterList() {
             List<String> paramList = new LinkedList<String>();
             if (UtilValidate.isNotEmpty(this.targetParameter)) {

Modified: 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormFieldBuilder.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormFieldBuilder.java?rev=1667774&r1=1667773&r2=1667774&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormFieldBuilder.java
 (original)
+++ 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/model/ModelFormFieldBuilder.java
 Thu Mar 19 14:38:37 2015
@@ -104,6 +104,7 @@ public class ModelFormFieldBuilder {
     private FlexibleStringExpander useWhen = 
FlexibleStringExpander.getInstance("");;
     private String widgetAreaStyle = "";
     private String widgetStyle = "";
+    private String parentFormName = "";
 
     public ModelFormFieldBuilder() {
     }
@@ -152,6 +153,7 @@ public class ModelFormFieldBuilder {
         this.useWhen = 
FlexibleStringExpander.getInstance(fieldElement.getAttribute("use-when"));
         this.widgetAreaStyle = fieldElement.getAttribute("widget-area-style");
         this.widgetStyle = fieldElement.getAttribute("widget-style");
+        this.parentFormName = fieldElement.getAttribute("form-name");
         Element childElement = null;
         List<? extends Element> subElements = 
UtilXml.childElementList(fieldElement);
         for (Element subElement : subElements) {
@@ -255,6 +257,7 @@ public class ModelFormFieldBuilder {
         this.useWhen = modelFormField.getUseWhen();
         this.widgetAreaStyle = modelFormField.getWidgetAreaStyle();
         this.widgetStyle = modelFormField.getWidgetStyle();
+        this.parentFormName = modelFormField.getParentFormName();
     }
 
     public ModelFormFieldBuilder(ModelFormFieldBuilder builder) {
@@ -294,6 +297,7 @@ public class ModelFormFieldBuilder {
         this.useWhen = builder.getUseWhen();
         this.widgetAreaStyle = builder.getWidgetAreaStyle();
         this.widgetStyle = builder.getWidgetStyle();
+        this.parentFormName = builder.getParentFormName();
     }
 
     public ModelFormFieldBuilder addOnChangeUpdateArea(UpdateArea 
onChangeUpdateArea) {
@@ -458,6 +462,10 @@ public class ModelFormFieldBuilder {
         return widgetStyle;
     }
 
+    public String getParentFormName() {
+        return this.parentFormName;
+    }
+
     private boolean induceFieldInfo(ModelForm modelForm, String 
defaultFieldType, ModelReader entityModelReader, DispatchContext 
dispatchContext) {
         if (induceFieldInfoFromEntityField(defaultFieldType, 
entityModelReader))
             return true;
@@ -716,6 +724,8 @@ public class ModelFormFieldBuilder {
             this.titleStyle = builder.getTitleStyle();
         if (UtilValidate.isNotEmpty(builder.getWidgetStyle()))
             this.widgetStyle = builder.getWidgetStyle();
+        if (UtilValidate.isNotEmpty(builder.getParentFormName()))
+            this.parentFormName = builder.getParentFormName();
         if (UtilValidate.isNotEmpty(builder.getRedWhen()))
             this.redWhen = builder.getRedWhen();
         if (UtilValidate.isNotEmpty(builder.getEvent()))
@@ -918,4 +928,8 @@ public class ModelFormFieldBuilder {
         this.widgetStyle = widgetStyle;
         return this;
     }
+    public ModelFormFieldBuilder setParentFormName(String parentFormName) {
+        this.parentFormName = parentFormName;
+        return this;
+    }
 }

Modified: 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1667774&r1=1667773&r2=1667774&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java
 (original)
+++ 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/renderer/macro/MacroFormRenderer.java
 Thu Mar 19 14:38:37 2015
@@ -2068,7 +2068,7 @@ public final class MacroFormRenderer imp
         // add lookup pop-up button
         String descriptionFieldName = lookupField.getDescriptionFieldName();
         ModelForm modelForm = modelFormField.getModelForm();
-        String formName = lookupField.getParentFormName();
+        String formName = modelFormField.getParentFormName();
         if (UtilValidate.isEmpty(formName)) {
             formName = FormRenderer.getCurrentFormName(modelForm, context);
         }        


Reply via email to