You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2015/03/10 14:37:26 UTC

svn commit: r1665543 - in /ofbiz/branches/release13.07/framework/widget: dtd/widget-form.xsd src/org/ofbiz/widget/form/MacroFormRenderer.java src/org/ofbiz/widget/form/ModelFormField.java

Author: jleroux
Date: Tue Mar 10 13:37:26 2015
New Revision: 1665543

URL: http://svn.apache.org/r1665543
Log:
Fixes <<"Lookup fields break when used with a form having skip-start="true">> https://issues.apache.org/jira/browse/OFBIZ-6139

We neglected this aspect so far, adding a "form-name" attribute to the lookup element fixes it. You then need also to set the correct id-name value on field element.

Modified:
    ofbiz/branches/release13.07/framework/widget/dtd/widget-form.xsd
    ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
    ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java

Modified: ofbiz/branches/release13.07/framework/widget/dtd/widget-form.xsd
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/widget/dtd/widget-form.xsd?rev=1665543&r1=1665542&r2=1665543&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/widget/dtd/widget-form.xsd (original)
+++ ofbiz/branches/release13.07/framework/widget/dtd/widget-form.xsd Tue Mar 10 13:37:26 2015
@@ -679,6 +679,7 @@ under the License.
                     <xs:restriction base="xs:token">
                         <xs:enumeration value="timestamp" />
                         <xs:enumeration value="date" />
+                        <xs:enumeration value="date-fix" />
                         <xs:enumeration value="time" />
                     </xs:restriction>
                 </xs:simpleType>
@@ -1076,6 +1077,13 @@ 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/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java?rev=1665543&r1=1665542&r2=1665543&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java (original)
+++ ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java Tue Mar 10 13:37:26 2015
@@ -50,6 +50,7 @@ import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.base.util.template.FreeMarkerWorker;
 import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.util.EntityUtilProperties;
 import org.ofbiz.webapp.control.RequestHandler;
 import org.ofbiz.webapp.taglib.ContentUrlTag;
 import org.ofbiz.widget.ModelWidget;
@@ -637,6 +638,11 @@ public class MacroFormRenderer implement
                 formattedMask = "9999-99-99 99:99:99";
             }
         }
+        Delegator delegator = (Delegator) request.getAttribute("delegator");
+        String timeFormat = "";
+        if (UtilValidate.isNotEmpty(delegator)) {
+            timeFormat = EntityUtilProperties.getPropertyValue("general", "displayTimeFormat", delegator);
+        }
         StringWriter sr = new StringWriter();
         sr.append("<@renderDateTimeField ");
         sr.append("name=\"");
@@ -701,6 +707,8 @@ public class MacroFormRenderer implement
         sr.append(formName);
         sr.append("\" mask=\"");
         sr.append(formattedMask);
+        sr.append("\" timeFormat=\"");
+        sr.append(timeFormat);
         sr.append("\" />");
         executeMacro(writer, sr.toString());
         this.addAsterisks(writer, context, modelFormField);
@@ -1870,7 +1878,7 @@ public class MacroFormRenderer implement
         int size = 25;
         int maxlength = 30;
         String dateType = dateFindField.getType();
-        if ("date".equals(dateType)) {
+        if ("date".equals(dateType) || "date-fix".equals(dateType)) {
             size = maxlength = 10;
             if (uiLabelMap != null) {
                 localizedInputTitle = uiLabelMap.get("CommonFormatDate");
@@ -1912,6 +1920,10 @@ public class MacroFormRenderer implement
         if (UtilValidate.isNotEmpty(modelFormField.getTitleStyle())) {
             titleStyle = modelFormField.getTitleStyle();
         }
+        
+        Delegator delegator = (Delegator)context.get("delegator");
+        String defaultDateFormat = EntityUtilProperties.getPropertyValue("general.properties", "displayDateFindFormat", "yy-mm-dd", delegator);
+
         StringWriter sr = new StringWriter();
         sr.append("<@renderDateFindField ");
         sr.append(" className=\"");
@@ -1962,6 +1974,8 @@ public class MacroFormRenderer implement
         sr.append(opUpThruDay);
         sr.append("\" opIsEmpty=\"");
         sr.append(opIsEmpty);
+        sr.append("\" defaultDateFormat=\"");
+        sr.append(defaultDateFormat);
         sr.append("\" />");
         executeMacro(writer, sr.toString());
         this.appendTooltip(writer, context, modelFormField);
@@ -2019,7 +2033,10 @@ public class MacroFormRenderer implement
         boolean readonly = lookupField.readonly;
         // add lookup pop-up button
         String descriptionFieldName = lookupField.getDescriptionFieldName();
-        String formName = modelFormField.getModelForm().getCurrentFormName(context);
+        String formName = lookupField.getParentFormName();
+        if (UtilValidate.isEmpty(formName)) {
+            formName = modelFormField.getModelForm().getCurrentFormName(context);
+        }
         StringBuilder targetParameterIter = new StringBuilder();
         StringBuilder imgSrc = new StringBuilder();
         // FIXME: refactor using the StringUtils methods

Modified: ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=1665543&r1=1665542&r2=1665543&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original)
+++ ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Tue Mar 10 13:37:26 2015
@@ -63,6 +63,7 @@ import org.ofbiz.entity.model.ModelEntit
 import org.ofbiz.entity.model.ModelField;
 import org.ofbiz.entity.model.ModelReader;
 import org.ofbiz.entity.util.EntityUtil;
+import org.ofbiz.entity.util.EntityUtilProperties;
 import org.ofbiz.service.DispatchContext;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.ModelParam;
@@ -2002,19 +2003,14 @@ public class ModelFormField {
                     throw new IllegalArgumentException(errMsg);
                 }
             } else if ("date".equals(this.type) && retVal.length() > 10) {
-                Locale locale = (Locale) context.get("locale");
-                if (locale == null) {
-                    locale = Locale.getDefault();
-                }
-
                 StringToTimestamp stringToTimestamp = new DateTimeConverters.StringToTimestamp();
                 Timestamp timestamp = null;
                 try {
                     timestamp = stringToTimestamp.convert(retVal);
                     Date date = new Date(timestamp.getTime());
-
-                    DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.SHORT, locale);
-                    retVal = dateFormatter.format(date);
+                    Delegator delegator = (Delegator)context.get("delegator");
+                    String displayDateFormat = EntityUtilProperties.getPropertyValue("general.properties", "displayDateFormat", "dd-MM-yyyy", delegator);
+                    retVal = UtilDateTime.toDateString(date, displayDateFormat);
                 }
                 catch (ConversionException e) {
                     String errMsg = "Error formatting date using default instead [" + retVal + "]: " + e.toString();
@@ -2024,23 +2020,14 @@ public class ModelFormField {
                 }
 
             } else if ("date-time".equals(this.type) && retVal.length() > 16) {
-                Locale locale = (Locale) context.get("locale");
-                TimeZone timeZone = (TimeZone) context.get("timeZone");
-                if (locale == null) {
-                    locale = Locale.getDefault();
-                }
-                if (timeZone == null) {
-                    timeZone = TimeZone.getDefault();
-                }
-
                 StringToTimestamp stringToTimestamp = new DateTimeConverters.StringToTimestamp();
                 Timestamp timestamp = null;
                 try {
                     timestamp = stringToTimestamp.convert(retVal);
                     Date date = new Date(timestamp.getTime());
-
-                    DateFormat dateFormatter = UtilDateTime.toDateTimeFormat(null, timeZone, locale);
-                    retVal = dateFormatter.format(date);
+                    Delegator delegator = (Delegator)context.get("delegator");
+                    String displayDateTimeFormat = EntityUtilProperties.getPropertyValue("general.properties", "displayDateTimeFormat", "dd-MM-yyyy HH:mm:ss.SSS", delegator);
+                    retVal = UtilDateTime.toDateString(date, displayDateTimeFormat);
                 }
                 catch (ConversionException e) {
                     String errMsg = "Error formatting date/time using default instead [" + retVal + "]: " + e.toString();
@@ -3525,6 +3512,7 @@ public class ModelFormField {
 
     public static class LookupField extends TextField {
         protected FlexibleStringExpander formName;
+        protected String parentFormName;
         protected String descriptionFieldName;
         protected String targetParameter;
         protected String lookupPresentation;
@@ -3538,6 +3526,7 @@ public class ModelFormField {
         public LookupField(Element element, ModelFormField modelFormField) {
             super(element, modelFormField);
             this.formName = FlexibleStringExpander.getInstance(element.getAttribute("target-form-name"));
+            this.parentFormName = element.getAttribute("form-name");
             this.descriptionFieldName = element.getAttribute("description-field-name");
             this.targetParameter = element.getAttribute("target-parameter");
             this.lookupPresentation = element.getAttribute("presentation");
@@ -3567,6 +3556,10 @@ public class ModelFormField {
             return this.formName.expandString(context);
         }
 
+        public String getParentFormName() {
+            return this.parentFormName;
+        }
+
         public List<String> getTargetParameterList() {
             List<String> paramList = FastList.newInstance();
             if (UtilValidate.isNotEmpty(this.targetParameter)) {