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:35 UTC
svn commit: r1665544 - in /ofbiz/branches/release12.04/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:35 2015
New Revision: 1665544
URL: http://svn.apache.org/r1665544
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/release12.04/framework/widget/dtd/widget-form.xsd
ofbiz/branches/release12.04/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
ofbiz/branches/release12.04/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
Modified: ofbiz/branches/release12.04/framework/widget/dtd/widget-form.xsd
URL: http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/widget/dtd/widget-form.xsd?rev=1665544&r1=1665543&r2=1665544&view=diff
==============================================================================
--- ofbiz/branches/release12.04/framework/widget/dtd/widget-form.xsd (original)
+++ ofbiz/branches/release12.04/framework/widget/dtd/widget-form.xsd Tue Mar 10 13:37:35 2015
@@ -681,6 +681,7 @@ under the License.
<xs:sequence>
<xs:element ref="in-place-editor" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
+ <xs:enumeration value="date-fix" />
<xs:attributeGroup ref="attlist.display"/>
</xs:complexType>
</xs:element>
@@ -1139,6 +1140,13 @@ under the License.
</xs:attribute>
<xs:attribute name="confirmation-message" type="xs:string"><xs:annotation><xs:documentation>The message displayed in confirmation box</xs:documentation></xs:annotation></xs:attribute>
</xs:attributeGroup>
+ <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:element name="text" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
Modified: ofbiz/branches/release12.04/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java?rev=1665544&r1=1665543&r2=1665544&view=diff
==============================================================================
--- ofbiz/branches/release12.04/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java (original)
+++ ofbiz/branches/release12.04/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java Tue Mar 10 13:37:35 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;
@@ -667,6 +668,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=\"");
@@ -731,6 +737,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);
@@ -1602,6 +1610,10 @@ public class MacroFormRenderer implement
oddRowStyle = FlexibleStringExpander.expandString(modelForm.getOddRowStyle(), context);
}
}
+
+ Delegator delegator = (Delegator)context.get("delegator");
+ String defaultDateFormat = EntityUtilProperties.getPropertyValue("general.properties", "displayDateFindFormat", "yy-mm-dd", delegator);
+
StringWriter sr = new StringWriter();
sr.append("<@renderFormatItemRowOpen ");
sr.append(" formName=\"");
@@ -1954,7 +1966,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");
@@ -2050,6 +2062,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());
@@ -2112,7 +2126,10 @@ public class MacroFormRenderer implement
// 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/release12.04/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=1665544&r1=1665543&r2=1665544&view=diff
==============================================================================
--- ofbiz/branches/release12.04/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original)
+++ ofbiz/branches/release12.04/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Tue Mar 10 13:37:35 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;
@@ -1993,19 +1994,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();
@@ -2015,23 +2011,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();
@@ -3516,6 +3503,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;
@@ -3528,6 +3516,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");
@@ -3556,6 +3545,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)) {