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 2014/03/11 22:26:26 UTC
svn commit: r1576509 - in /ofbiz/branches/release13.07: ./
framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
Author: jleroux
Date: Tue Mar 11 21:26:26 2014
New Revision: 1576509
URL: http://svn.apache.org/r1576509
Log:
"Applied fix from trunk for revision: 1576506 "
------------------------------------------------------------------------
r1576506 | jleroux | 2014-03-11 22:25:25 +0100 (mar. 11 mars 2014) | 7 lignes
Thanks to Jacopo's comment on dev ML, reverts r1576331 to avoid injecting the web world in the form model, rather calls MacroFormRenderer.renderDateTimeField() method.
In my opinion a better solution would be to rewrite EditCalendarExceptionWeek and EditCalendarExceptionDay screens to replace the call to EditCalendarExceptionWeek.ftl by direct accesses to the form widgets called by it.
But this means a lot more analysis and delicate work (here the replacement is safe), so this will be it for now.
This is for "View Calendar broken in Manufacturing" https://issues.apache.org/jira/browse/OFBIZ-5558 reported by Rong Nguyen
Url: https://demo-trunk.ofbiz.apache.org:8443/manufacturing/control/EditCalendarExceptionDay?calendarId=SUPPLIER Calendar broken
And is related with https://issues.apache.org/jira/browse/OFBIZ-4739
------------------------------------------------------------------------
Modified:
ofbiz/branches/release13.07/ (props changed)
ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
Propchange: ofbiz/branches/release13.07/
------------------------------------------------------------------------------
Merged /ofbiz/trunk:r1576506
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=1576509&r1=1576508&r2=1576509&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 11 21:26:26 2014
@@ -32,9 +32,6 @@ import java.util.Map;
import java.util.StringTokenizer;
import java.util.TimeZone;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import javolution.util.FastList;
import javolution.util.FastMap;
@@ -76,7 +73,6 @@ import org.w3c.dom.Element;
import bsh.EvalError;
import bsh.Interpreter;
-import freemarker.template.TemplateException;
/**
* Widget Library - Form model class
@@ -2976,14 +2972,7 @@ public class ModelFormField {
@Override
public void renderFieldString(Appendable writer, Map<String, Object> context, FormStringRenderer formStringRenderer) throws IOException {
- HttpServletRequest request = (HttpServletRequest) context.get("request");
- HttpServletResponse response = (HttpServletResponse) context.get("response");
- try {
- MacroFormRenderer renderer = new MacroFormRenderer(UtilProperties.getPropertyValue("widget", "screen.formrenderer"), request, response);
- renderer.renderDateTimeField(writer, context, this);
- } catch (TemplateException e) {
- Debug.logError("Not rendering content, error on MacroFormRenderer creation.", module);
- }
+ formStringRenderer.renderDateTimeField(writer, context, this);
}
public String getType() {
Modified: ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java?rev=1576509&r1=1576508&r2=1576509&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java (original)
+++ ofbiz/branches/release13.07/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java Tue Mar 11 21:26:26 2014
@@ -19,7 +19,6 @@
package org.ofbiz.widget.html;
import java.io.IOException;
-import java.sql.Timestamp;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
@@ -34,12 +33,12 @@ import javolution.util.FastList;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.StringUtil;
+import org.ofbiz.base.util.StringUtil.SimpleEncoder;
import org.ofbiz.base.util.UtilGenerics;
import org.ofbiz.base.util.UtilHttp;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilValidate;
-import org.ofbiz.base.util.StringUtil.SimpleEncoder;
import org.ofbiz.base.util.string.FlexibleStringExpander;
import org.ofbiz.base.util.template.FreeMarkerWorker;
import org.ofbiz.entity.Delegator;
@@ -48,6 +47,7 @@ import org.ofbiz.webapp.taglib.ContentUr
import org.ofbiz.widget.ModelWidget;
import org.ofbiz.widget.WidgetWorker;
import org.ofbiz.widget.form.FormStringRenderer;
+import org.ofbiz.widget.form.MacroFormRenderer;
import org.ofbiz.widget.form.ModelForm;
import org.ofbiz.widget.form.ModelFormField;
import org.ofbiz.widget.form.ModelFormField.CheckField;
@@ -73,7 +73,7 @@ import org.ofbiz.widget.form.ModelFormFi
import org.ofbiz.widget.form.ModelFormField.TextareaField;
import org.ofbiz.widget.form.UtilHelpText;
-import com.ibm.icu.util.Calendar;
+import freemarker.template.TemplateException;
/**
* Widget Library - HTML Form Renderer implementation
@@ -525,206 +525,15 @@ public class HtmlFormRenderer extends Ht
* @see org.ofbiz.widget.form.FormStringRenderer#renderDateTimeField(java.io.Writer, java.util.Map, org.ofbiz.widget.form.ModelFormField.DateTimeField)
*/
public void renderDateTimeField(Appendable writer, Map<String, Object> context, DateTimeField dateTimeField) throws IOException {
- ModelFormField modelFormField = dateTimeField.getModelFormField();
- String paramName = modelFormField.getParameterName(context);
- String defaultDateTimeString = dateTimeField.getDefaultDateTimeString(context);
-
- String event = modelFormField.getEvent();
- String action = modelFormField.getAction(context);
-
- Map<String, String> uiLabelMap = UtilGenerics.checkMap(context.get("uiLabelMap"));
- if (uiLabelMap == null) {
- Debug.logWarning("Could not find uiLabelMap in context", module);
- }
- String localizedInputTitle = "" , localizedIconTitle = "";
-
- // whether the date field is short form, yyyy-mm-dd
- boolean shortDateInput = ("date".equals(dateTimeField.getType()) || "time-dropdown".equals(dateTimeField.getInputMethod()) ? true : false);
-
- writer.append("<input type=\"text\"");
-
- appendClassNames(writer, context, modelFormField);
-
- writer.append(" name=\"");
- if ("time-dropdown".equals(dateTimeField.getInputMethod())) {
- writer.append(UtilHttp.makeCompositeParam(paramName, "date"));
- } else {
- writer.append(paramName);
- }
- writer.append('"');
-
- // the default values for a timestamp
- int size = 25;
- int maxlength = 30;
-
- if (shortDateInput) {
- size = maxlength = 10;
- if ("time".equals(dateTimeField.getType())) {
- // the style attribute is a little bit messy but when using display:none the timepicker is shown on a wrong place
- writer.append(" style=\"height:1px;width:1px;border:none;background-color:transparent\"");
- }
- if (uiLabelMap != null) {
- localizedInputTitle = uiLabelMap.get("CommonFormatDate");
- }
- } else if ("time".equals(dateTimeField.getType())) {
- size = maxlength = 8;
- if (uiLabelMap != null) {
- localizedInputTitle = uiLabelMap.get("CommonFormatTime");
- }
- } else {
- if (uiLabelMap != null) {
- localizedInputTitle = uiLabelMap.get("CommonFormatDateTime");
- }
- }
- writer.append(" title=\"");
- writer.append(localizedInputTitle);
- writer.append('"');
-
- String value = modelFormField.getEntry(context, dateTimeField.getDefaultValue(context));
- if (UtilValidate.isNotEmpty(value)) {
- if (value.length() > maxlength) {
- value = value.substring(0, maxlength);
- }
- writer.append(" value=\"");
- writer.append(value);
- writer.append('"');
- }
-
- writer.append(" size=\"");
- writer.append(Integer.toString(size));
- writer.append('"');
-
- writer.append(" maxlength=\"");
- writer.append(Integer.toString(maxlength));
- writer.append('"');
-
- String idName = modelFormField.getCurrentContainerId(context);
- if (UtilValidate.isNotEmpty(idName)) {
- writer.append(" id=\"");
- writer.append(idName);
- writer.append('"');
- }
-
- if (UtilValidate.isNotEmpty(event) && UtilValidate.isNotEmpty(action)) {
- writer.append(" ");
- writer.append(event);
- writer.append("=\"");
- writer.append(action);
- writer.append('"');
- }
-
- writer.append("/>");
-
- // search for a localized label for the icon
- if (uiLabelMap != null) {
- localizedIconTitle = uiLabelMap.get("CommonViewCalendar");
- }
-
- // add calendar pop-up button and seed data IF this is not a "time" type date-time
- if (!"time".equals(dateTimeField.getType())) {
- if (shortDateInput) {
- writer.append("<a href=\"javascript:call_cal_notime(document.");
- } else {
- writer.append("<a href=\"javascript:call_cal(document.");
- }
- writer.append(modelFormField.getModelForm().getCurrentFormName(context));
- writer.append('.');
- if ("time-dropdown".equals(dateTimeField.getInputMethod())) {
- writer.append(UtilHttp.makeCompositeParam(paramName, "date"));
- } else {
- writer.append(paramName);
- }
- writer.append(",'");
- writer.append(UtilHttp.encodeBlanks(modelFormField.getEntry(context, defaultDateTimeString)));
- writer.append("');\">");
-
- writer.append("<img src=\"");
- this.appendContentUrl(writer, "/images/cal.gif");
- writer.append("\" width=\"16\" height=\"16\" border=\"0\" alt=\"");
- writer.append(localizedIconTitle);
- writer.append("\" title=\"");
- writer.append(localizedIconTitle);
- writer.append("\"/></a>");
+ String macroLibraryPath = UtilProperties.getPropertyValue("widget", "screen.formrenderer");
+ try {
+ MacroFormRenderer macroFormRenderer = new MacroFormRenderer(macroLibraryPath, this.request, this.response);
+ macroFormRenderer.renderDateTimeField(writer, context, dateTimeField);
+ } catch (TemplateException e) {
+ Debug.logError(e, "Error rendering screen thru ftl macro: renderDateTimeField", module);
+ } catch (IOException e) {
+ Debug.logError(e, "Error rendering screen thru ftl, macro: renderDateTimeField", module);
}
-
- // if we have an input method of time-dropdown, then render two dropdowns
- if ("time-dropdown".equals(dateTimeField.getInputMethod())) {
- String className = modelFormField.getWidgetStyle();
- String classString = (className != null ? " class=\"" + className + "\" " : "");
- boolean isTwelveHour = "12".equals(dateTimeField.getClock());
-
- // set the Calendar to the default time of the form or now()
- Calendar cal = null;
- try {
- Timestamp defaultTimestamp = Timestamp.valueOf(modelFormField.getEntry(context, defaultDateTimeString));
- cal = Calendar.getInstance();
- cal.setTime(defaultTimestamp);
- } catch (IllegalArgumentException e) {
- Debug.logWarning("Form widget field [" + paramName + "] with input-method=\"time-dropdown\" was not able to understand the default time ["
- + defaultDateTimeString + "]. The parsing error was: " + e.getMessage(), module);
- }
-
- // write the select for hours
- writer.append(" <select name=\"").append(UtilHttp.makeCompositeParam(paramName, "hour")).append("\"");
- writer.append(classString).append(">");
-
- // keep the two cases separate because it's hard to understand a combined loop
- if (isTwelveHour) {
- for (int i = 1; i <= 12; i++) {
- writer.append("<option value=\"").append(Integer.toString(i)).append("\"");
- if (cal != null) {
- int hour = cal.get(Calendar.HOUR_OF_DAY);
- if (hour == 0) hour = 12;
- if (hour > 12) hour -= 12;
- if (i == hour) writer.append(" selected");
- }
- writer.append(">").append(Integer.toString(i)).append("</option>");
- }
- } else {
- for (int i = 0; i < 24; i++) {
- writer.append("<option value=\"").append(Integer.toString(i)).append("\"");
- if (cal != null && i == cal.get(Calendar.HOUR_OF_DAY)) {
- writer.append(" selected");
- }
- writer.append(">").append(Integer.toString(i)).append("</option>");
- }
- }
-
- // write the select for minutes
- writer.append("</select>:<select name=\"");
- writer.append(UtilHttp.makeCompositeParam(paramName, "minutes")).append("\"");
- writer.append(classString).append(">");
- for (int i = 0; i < 60; i++) {
- writer.append("<option value=\"").append(Integer.toString(i)).append("\"");
- if (cal != null && i == cal.get(Calendar.MINUTE)) {
- writer.append(" selected");
- }
- writer.append(">").append(Integer.toString(i)).append("</option>");
- }
- writer.append("</select>");
-
- // if 12 hour clock, write the AM/PM selector
- if (isTwelveHour) {
- String amSelected = ((cal != null && cal.get(Calendar.AM_PM) == Calendar.AM) ? "selected" : "");
- String pmSelected = ((cal != null && cal.get(Calendar.AM_PM) == Calendar.PM) ? "selected" : "");
- writer.append("<select name=\"").append(UtilHttp.makeCompositeParam(paramName, "ampm")).append("\"");
- writer.append(classString).append(">");
- writer.append("<option value=\"AM\" ").append(amSelected).append(">AM</option>");
- writer.append("<option value=\"PM\" ").append(pmSelected).append(">PM</option>");
- writer.append("</select>");
- }
-
- // create a hidden field for the composite type, which is a Timestamp
- writer.append("<input type=\"hidden\" name=\"");
- writer.append(UtilHttp.makeCompositeParam(paramName, "compositeType"));
- writer.append("\" value=\"Timestamp\"/>");
- }
-
- this.addAsterisks(writer, context, modelFormField);
-
- this.appendTooltip(writer, context, modelFormField);
-
- //appendWhitespace(writer);
}
/* (non-Javadoc)