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)) {