This is an automated email from the ASF dual-hosted git repository. danwatford pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push: new 45300fef14 Improved: Use FlexibleStringExpander for disabled attribute on fields 45300fef14 is described below commit 45300fef14f453fdb25ecc6ad458b89d5e7fdaa0 Author: Florian Motteau <florian.mott...@nereide.fr> AuthorDate: Fri Sep 30 17:50:14 2022 +0200 Improved: Use FlexibleStringExpander for disabled attribute on fields Add disabled support on all form field types OF-12678 --- framework/widget/dtd/widget-form.xsd | 10 +- .../apache/ofbiz/widget/model/ModelFormField.java | 30 ++- .../ofbiz/widget/model/ModelFormFieldBuilder.java | 12 +- .../widget/renderer/macro/MacroFormRenderer.java | 50 +++-- .../macro/RenderableFtlFormElementsBuilder.java | 2 +- .../template/macro/HtmlFormMacroLibrary.ftl | 223 +++++++++++++-------- 6 files changed, 220 insertions(+), 107 deletions(-) diff --git a/framework/widget/dtd/widget-form.xsd b/framework/widget/dtd/widget-form.xsd index 3b482a3aae..bb5c1d54c5 100644 --- a/framework/widget/dtd/widget-form.xsd +++ b/framework/widget/dtd/widget-form.xsd @@ -857,7 +857,15 @@ under the License. </xs:documentation> </xs:annotation> </xs:attribute> - <xs:attribute name="disabled" type="xs:boolean" default="false"/> + <xs:attribute type="xs:string" name="disabled"> + <xs:annotation> + <xs:documentation> + Set a field as disabled : not mutable, not focusable, not submitted if in a form. + Accepts ${} notation to allow use of expressions. + Expressions must evaluate to the strings 'true', 'false' (without quotes) or empty (equivalent to false) + </xs:documentation> + </xs:annotation> + </xs:attribute> </xs:complexType> </xs:element> diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java index 093f6c0a43..0b14bc0cb7 100644 --- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java +++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java @@ -160,7 +160,7 @@ public final class ModelFormField { private final String parentFormName; private final String tabindex; private final String conditionGroup; - private final boolean disabled; + private final FlexibleStringExpander disabled; private ModelFormField(ModelFormFieldBuilder builder) { this.action = builder.getAction(); @@ -215,7 +215,7 @@ public final class ModelFormField { this.parentFormName = builder.getParentFormName(); this.tabindex = builder.getTabindex(); this.conditionGroup = builder.getConditionGroup(); - this.disabled = builder.getDisabled(); + this.disabled = builder.getDisabledSpec(); } public FlexibleStringExpander getAction() { @@ -483,10 +483,17 @@ public final class ModelFormField { return conditionGroup; } - public boolean getDisabled() { + public FlexibleStringExpander getDisabledSpec() { return disabled; } + public boolean getDisabled(Map<String, Object> context) { + if (UtilValidate.isNotEmpty(this.disabled)) { + return "true".equals(disabled.expandString(context)); + } + return false; + } + public Map<String, ? extends Object> getMap(Map<String, ? extends Object> context) { if (UtilValidate.isEmpty(this.mapAcsr)) { return this.modelForm.getDefaultMap(context); @@ -2738,25 +2745,30 @@ public final class ModelFormField { */ public static class HiddenField extends FieldInfo { private final FlexibleStringExpander value; + private final FlexibleStringExpander disabled; public HiddenField(Element element, ModelFormField modelFormField) { super(element, modelFormField); this.value = FlexibleStringExpander.getInstance(element.getAttribute("value")); + this.disabled = FlexibleStringExpander.getInstance(element.getAttribute("disabled")); } private HiddenField(HiddenField original, ModelFormField modelFormField) { super(original.getFieldSource(), original.getFieldType(), modelFormField); this.value = original.value; + this.disabled = original.disabled; } public HiddenField(int fieldSource, ModelFormField modelFormField) { super(fieldSource, FieldInfo.HIDDEN, modelFormField); this.value = FlexibleStringExpander.getInstance(""); + this.disabled = FlexibleStringExpander.getInstance(""); } public HiddenField(ModelFormField modelFormField) { super(FieldInfo.SOURCE_EXPLICIT, FieldInfo.HIDDEN, modelFormField); this.value = FlexibleStringExpander.getInstance(""); + this.disabled = FlexibleStringExpander.getInstance(""); } @Override @@ -2799,6 +2811,18 @@ public final class ModelFormField { return getModelFormField().getEntry(context); } + /** + * + * @param context the context + * @return evaluated value + */ + public boolean getDisabled(Map<String, Object> context) { + if (UtilValidate.isNotEmpty(this.disabled)) { + return "true".equals(disabled.expandString(context)); + } + return false; + } + @Override public void renderFieldString(Appendable writer, Map<String, Object> context, FormStringRenderer formStringRenderer) throws IOException { diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java index 2501af1181..9647fa9641 100644 --- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java +++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java @@ -116,7 +116,7 @@ public class ModelFormFieldBuilder { private String parentFormName = ""; private String tabindex = ""; private String conditionGroup = ""; - private boolean disabled = false; + private FlexibleStringExpander disabled = FlexibleStringExpander.getInstance(""); protected static final List<String> NUMERIC_FIELD_TYPES = Collections.unmodifiableList(UtilMisc.toList( "floating-point", "numeric", "fixed-point", @@ -206,7 +206,7 @@ public class ModelFormFieldBuilder { this.parentFormName = fieldElement.getAttribute("form-name"); this.tabindex = fieldElement.getAttribute("tabindex"); this.conditionGroup = fieldElement.getAttribute("condition-group"); - this.disabled = "true".equals(fieldElement.getAttribute("disabled")); + this.disabled = FlexibleStringExpander.getInstance(fieldElement.getAttribute("disabled")); Element childElement = null; List<? extends Element> subElements = UtilXml.childElementList(fieldElement); for (Element subElement : subElements) { @@ -323,7 +323,7 @@ public class ModelFormFieldBuilder { this.parentFormName = modelFormField.getParentFormName(); this.tabindex = modelFormField.getTabindex(); this.conditionGroup = modelFormField.getConditionGroup(); - this.disabled = modelFormField.getDisabled(); + this.disabled = modelFormField.getDisabledSpec(); } public ModelFormFieldBuilder(ModelFormFieldBuilder builder) { @@ -366,7 +366,7 @@ public class ModelFormFieldBuilder { this.parentFormName = builder.getParentFormName(); this.tabindex = builder.getTabindex(); this.conditionGroup = builder.getConditionGroup(); - this.disabled = builder.getDisabled(); + this.disabled = builder.getDisabledSpec(); } /** @@ -729,7 +729,7 @@ public class ModelFormFieldBuilder { * Gets disabled.* * @return the disabled */ - public boolean getDisabled() { + public FlexibleStringExpander getDisabledSpec() { return disabled; } @@ -1048,7 +1048,7 @@ public class ModelFormFieldBuilder { this.position = builder.getPosition(); this.requiredField = builder.getRequiredField(); this.separateColumn = builder.getSeparateColumn(); - this.disabled = builder.getDisabled(); + this.disabled = builder.getDisabledSpec(); } /** diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java index 5e5f4f4276..dabc2d32d3 100644 --- a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java +++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java @@ -294,7 +294,7 @@ public final class MacroFormRenderer implements FormStringRenderer { } String tabindex = modelFormField.getTabindex(); String value = modelFormField.getEntry(context, textareaField.getDefaultValue(context)); - boolean disabled = modelFormField.getDisabled(); + boolean disabled = modelFormField.getDisabled(context); StringWriter sr = new StringWriter(); sr.append("<@renderTextareaField "); sr.append("name=\""); @@ -342,7 +342,7 @@ public final class MacroFormRenderer implements FormStringRenderer { ModelFormField modelFormField = dateTimeField.getModelFormField(); String paramName = modelFormField.getParameterName(context); String defaultDateTimeString = dateTimeField.getDefaultDateTimeString(context); - boolean disabled = modelFormField.getDisabled(); + boolean disabled = modelFormField.getDisabled(context); String className = ""; String alert = "false"; String name = ""; @@ -609,7 +609,7 @@ public final class MacroFormRenderer implements FormStringRenderer { ModelForm modelForm = modelFormField.getModelForm(); String currentValue = modelFormField.getEntry(context); String conditionGroup = modelFormField.getConditionGroup(); - boolean disabled = modelFormField.getDisabled(); + boolean disabled = modelFormField.getDisabled(context); List<ModelFormField.OptionValue> allOptionValues = dropDownField.getAllOptionValues(context, WidgetWorker.getDelegator(context)); ModelFormField.AutoComplete autoComplete = dropDownField.getAutoComplete(); String event = modelFormField.getEvent(); @@ -861,7 +861,7 @@ public final class MacroFormRenderer implements FormStringRenderer { String currentValue = modelFormField.getEntry(context); String conditionGroup = modelFormField.getConditionGroup(); Boolean allChecked = checkField.isAllChecked(context); - boolean disabled = modelFormField.getDisabled(); + boolean disabled = modelFormField.getDisabled(context); String id = modelFormField.getCurrentContainerId(context); String className = ""; String alert = "false"; @@ -942,7 +942,7 @@ public final class MacroFormRenderer implements FormStringRenderer { List<ModelFormField.OptionValue> allOptionValues = radioField.getAllOptionValues(context, WidgetWorker.getDelegator(context)); String currentValue = modelFormField.getEntry(context); String conditionGroup = modelFormField.getConditionGroup(); - boolean disabled = modelFormField.getDisabled(); + boolean disabled = modelFormField.getDisabled(context); String className = ""; String alert = "false"; String name = modelFormField.getParameterName(context); @@ -1045,6 +1045,7 @@ public final class MacroFormRenderer implements FormStringRenderer { ajaxUrl = MacroCommonRenderer.createAjaxParamsFromUpdateAreas(updateAreas, null, modelForm, "", context); } String tabindex = modelFormField.getTabindex(); + boolean disabled = modelFormField.getDisabled(context); StringWriter sr = new StringWriter(); sr.append("<@renderSubmitField "); sr.append("buttonType=\""); @@ -1083,7 +1084,9 @@ public final class MacroFormRenderer implements FormStringRenderer { } sr.append("\" tabindex=\""); sr.append(tabindex); - sr.append("\" />"); + sr.append("\" disabled="); + sr.append(Boolean.toString(disabled)); + sr.append(" />"); executeMacro(writer, sr.toString()); this.appendTooltip(writer, context, modelFormField); } @@ -1130,6 +1133,7 @@ public final class MacroFormRenderer implements FormStringRenderer { String conditionGroup = modelFormField.getConditionGroup(); String event = modelFormField.getEvent(); String id = modelFormField.getCurrentContainerId(context); + boolean disabled = modelFormField.getDisabled(context); StringWriter sr = new StringWriter(); sr.append("<@renderHiddenField "); sr.append(" name=\""); @@ -1148,7 +1152,9 @@ public final class MacroFormRenderer implements FormStringRenderer { if (action != null) { sr.append(action); } - sr.append("\" />"); + sr.append("\" disabled="); + sr.append(Boolean.toString(disabled)); + sr.append(" />"); executeMacro(writer, sr.toString()); } @@ -1775,6 +1781,7 @@ public final class MacroFormRenderer implements FormStringRenderer { boolean ignCase = textFindField.getIgnoreCase(context); boolean hideIgnoreCase = textFindField.getHideIgnoreCase(); String tabindex = modelFormField.getTabindex(); + boolean disabled = modelFormField.getDisabled(context); StringWriter sr = new StringWriter(); sr.append("<@renderTextFindField "); sr.append(" name=\""); @@ -1815,7 +1822,9 @@ public final class MacroFormRenderer implements FormStringRenderer { sr.append(tabindex); sr.append("\" conditionGroup=\""); sr.append(conditionGroup); - sr.append("\" />"); + sr.append("\" disabled="); + sr.append(Boolean.toString(disabled)); + sr.append(" />"); executeMacro(writer, sr.toString()); this.appendTooltip(writer, context, modelFormField); } @@ -1862,6 +1871,7 @@ public final class MacroFormRenderer implements FormStringRenderer { } String defaultOptionThru = rangeFindField.getDefaultOptionThru(); String tabindex = modelFormField.getTabindex(); + boolean disabled = modelFormField.getDisabled(context); StringWriter sr = new StringWriter(); sr.append("<@renderRangeFindField "); sr.append(" className=\""); @@ -1902,7 +1912,9 @@ public final class MacroFormRenderer implements FormStringRenderer { sr.append(conditionGroup); sr.append("\" tabindex=\""); sr.append(tabindex); - sr.append("\" />"); + sr.append("\" disabled="); + sr.append(Boolean.toString(disabled)); + sr.append(" />"); executeMacro(writer, sr.toString()); this.appendTooltip(writer, context, modelFormField); } @@ -1996,6 +2008,7 @@ public final class MacroFormRenderer implements FormStringRenderer { } String id = modelFormField.getCurrentContainerId(context); String tabindex = modelFormField.getTabindex(); + boolean disabled = modelFormField.getDisabled(context); StringWriter sr = new StringWriter(); sr.append("<@renderDateFindField "); sr.append(" className=\""); @@ -2054,7 +2067,9 @@ public final class MacroFormRenderer implements FormStringRenderer { sr.append(opIsEmpty); sr.append("\" tabindex=\""); sr.append(tabindex); - sr.append("\" />"); + sr.append("\" disabled="); + sr.append(Boolean.toString(disabled)); + sr.append(" />"); executeMacro(writer, locale, sr.toString()); this.appendTooltip(writer, context, modelFormField); } @@ -2172,6 +2187,7 @@ public final class MacroFormRenderer implements FormStringRenderer { } lastViewName = UtilHttp.getEncodedParameter(lastViewName); String tabindex = modelFormField.getTabindex(); + boolean disabled = modelFormField.getDisabled(context); StringWriter sr = new StringWriter(); sr.append("<@renderLookupField "); sr.append(" className=\""); @@ -2242,7 +2258,9 @@ public final class MacroFormRenderer implements FormStringRenderer { sr.append(conditionGroup); sr.append("\" tabindex=\""); sr.append(tabindex); - sr.append("\" delegatorName=\""); + sr.append("\" disabled="); + sr.append(Boolean.toString(disabled)); + sr.append(" delegatorName=\""); sr.append(((HttpSession) context.get("session")).getAttribute("delegatorName").toString()); sr.append("\" />"); executeMacro(writer, sr.toString()); @@ -2519,6 +2537,7 @@ public final class MacroFormRenderer implements FormStringRenderer { autocomplete = "off"; } String tabindex = modelFormField.getTabindex(); + boolean disabled = modelFormField.getDisabled(context); StringWriter sr = new StringWriter(); sr.append("<@renderFileField "); sr.append(" className=\""); @@ -2537,7 +2556,9 @@ public final class MacroFormRenderer implements FormStringRenderer { sr.append(autocomplete); sr.append("\" tabindex=\""); sr.append(tabindex); - sr.append("\" />"); + sr.append("\" disabled="); + sr.append(Boolean.toString(disabled)); + sr.append(" />"); executeMacro(writer, sr.toString()); this.makeHyperlinkString(writer, textField.getSubHyperlink(), context); this.appendTooltip(writer, context, modelFormField); @@ -2552,6 +2573,7 @@ public final class MacroFormRenderer implements FormStringRenderer { String size = Integer.toString(passwordField.getSize()); String maxlength = ""; String id = modelFormField.getCurrentContainerId(context); + boolean disabled = modelFormField.getDisabled(context); String autocomplete = ""; if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) { className = modelFormField.getWidgetStyle(); @@ -2607,7 +2629,9 @@ public final class MacroFormRenderer implements FormStringRenderer { sr.append(autocomplete); sr.append("\" tabindex=\""); sr.append(tabindex); - sr.append("\" />"); + sr.append("\" disabled="); + sr.append(Boolean.toString(disabled)); + sr.append(" />"); executeMacro(writer, sr.toString()); this.addAsterisks(writer, context, modelFormField); this.makeHyperlinkString(writer, passwordField.getSubHyperlink(), context); diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java index 4a39a1b675..591026be33 100644 --- a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java +++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java @@ -272,7 +272,7 @@ public final class RenderableFtlFormElementsBuilder { mask = textField.getMask(); } String ajaxUrl = createAjaxParamsFromUpdateAreas(updateAreas, "", context); - boolean disabled = modelFormField.getDisabled(); + boolean disabled = modelFormField.getDisabled(context); boolean readonly = textField.getReadonly(); String tabindex = modelFormField.getTabindex(); diff --git a/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl b/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl index 201863cf11..94a9ba7b57 100644 --- a/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl +++ b/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl @@ -43,7 +43,7 @@ under the License. </#macro> <#macro renderHyperlinkField></#macro> -<#macro renderTextField name className alert value="" textSize="" maxlength="" id="" event="" action="" disabled="" clientAutocomplete="" ajaxUrl="" ajaxEnabled="" mask="" tabindex="" readonly="" placeholder="" delegatorName="default"> +<#macro renderTextField name className alert value="" textSize="" maxlength="" id="" event="" action="" disabled=false clientAutocomplete="" ajaxUrl="" ajaxEnabled="" mask="" tabindex="" readonly="" placeholder="" delegatorName="default"> <input type="text" name="${name?default("")?html}"<#t/> <#if ajaxEnabled?has_content && ajaxEnabled && ajaxUrl?has_content> <#local defaultMinLength = modelTheme.getAutocompleterDefaultMinLength()> @@ -54,11 +54,10 @@ under the License. data-ajax-url="${ajaxUrl!}"<#rt/> data-default-delay="${defaultDelay!300}"<#rt/> </#if> - <@renderClass className alert /> + <@renderClass className alert /> <@renderDisabled disabled /> <#if value?has_content> value="${value}"</#if><#rt/> <#if textSize?has_content> size="${textSize}"</#if><#rt/> <#if maxlength?has_content> maxlength="${maxlength}"</#if><#rt/> - <#if disabled?has_content && disabled> disabled="disabled"</#if><#rt/> <#if readonly?has_content && readonly> readonly="readonly"</#if><#rt/> <#if mask?has_content> data-mask="${mask}"</#if><#rt/> <#if id?has_content> id="${id}"</#if><#rt/> @@ -70,12 +69,12 @@ under the License. /><#t/> </#macro> -<#macro renderTextareaField name className alert cols="" rows="" maxlength="" id="" readonly="" value="" visualEditorEnable="" buttons="" tabindex="" language="" disabled=""> +<#macro renderTextareaField name className alert cols="" rows="" maxlength="" id="" readonly="" value="" visualEditorEnable="" buttons="" tabindex="" language="" disabled=false> <#if visualEditorEnable?has_content> <#local className = className + " visual-editor"> </#if> <textarea name="${name}"<#t/> - <@renderClass className alert /> + <@renderClass className alert /> <@renderDisabled disabled /> <#if cols?has_content> cols="${cols}"</#if><#rt/> <#if rows?has_content> rows="${rows}"</#if><#rt/> <#if id?has_content> id="${id}"</#if><#rt/> @@ -84,33 +83,34 @@ under the License. <#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> <#if visualEditorEnable?has_content> data-toolbar="${buttons?default("maxi")}"</#if><#rt/> <#if language?has_content> data-language="${language!"en"}"</#if><#rt/> - <#if disabled?has_content && disabled> disabled="disabled"</#if><#rt/> ><#t/> <#if value?has_content>${value}</#if><#t/> </textarea><#lt/> </#macro> -<#macro renderDateTimeField name className alert dateType timeDropdownParamName defaultDateTimeString localizedIconTitle timeHourName timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType timeDropdown="" classString="" hour1="" hour2="" shortDateInput="" title="" value="" size="" maxlength="" id="" formName="" mask="" event="" action="" step="" timeValues="" tabindex="" disabled="" isXMLHttpRequest=""> +<#macro renderDateTimeField name className alert dateType timeDropdownParamName defaultDateTimeString localizedIconTitle timeHourName timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType timeDropdown="" classString="" hour1="" hour2="" shortDateInput="" title="" value="" size="" maxlength="" id="" formName="" mask="" event="" action="" step="" timeValues="" tabindex="" disabled=false isXMLHttpRequest=""> <span class="view-calendar"> <#local cultureInfo = Static["org.apache.ofbiz.common.JsLanguageFilesMappingUtil"].getFile("datejs", .locale)/> <#local datePickerLang = Static["org.apache.ofbiz.common.JsLanguageFilesMappingUtil"].getFile("jquery", .locale)/> <#local timePicker = "/common/js/node_modules/@chinchilla-software/jquery-ui-timepicker-addon/dist/jquery-ui-timepicker-addon.min.js,/common/js/node_modules/@chinchilla-software/jquery-ui-timepicker-addon/dist/jquery-ui-timepicker-addon.css"/> <#local timePickerLang = Static["org.apache.ofbiz.common.JsLanguageFilesMappingUtil"].getFile("dateTime", .locale)/> <#if dateType!="time" > - <input type="text" <#if tabindex?has_content> tabindex="${tabindex}"</#if> name="${name}_i18n" <@renderClass className alert /><#rt/> + <input type="text" name="${name}_i18n" <@renderClass className alert /> <@renderDisabled disabled /> + <#if tabindex?has_content> tabindex="${tabindex}"</#if> <#if title?has_content> title="${title}"</#if> <#if value?has_content> value="${value}"</#if> <#if size?has_content> size="${size}"</#if><#rt/> <#if maxlength?has_content> maxlength="${maxlength}"</#if> - <#if disabled?has_content && disabled> disabled="disabled"</#if><#rt/> <#if id?has_content> id="${id}_i18n"</#if>/><#rt/> <#local className = className + " date-time-picker"/> </#if> - <input type="hidden" <#if tabindex?has_content> tabindex="${tabindex}"</#if> name="${name}" <#if event?has_content && action?has_content> ${event}="${action}"</#if> <@renderClass className alert /><#rt/> + <input type="hidden" name="${name}" <@renderClass className alert /> <@renderDisabled disabled /> + <#if tabindex?has_content> tabindex="${tabindex}"</#if> + <#if event?has_content && action?has_content> ${event}="${action}"</#if><#rt/> <#if title?has_content> title="${title}"</#if> <#if value?has_content> value="${value}"</#if> <#if size?has_content> size="${size}"</#if><#rt/> - <#if maxlength?has_content> maxlength="${maxlength}"</#if> + <#if maxlength?has_content> maxlength="${maxlength}"</#if> <#if mask?has_content> data-mask="${mask}"</#if><#rt/> <#if cultureInfo?has_content> data-cultureinfo="${cultureInfo}"</#if><#rt/> <#if datePickerLang?has_content> data-datepickerlang="${datePickerLang}"</#if><#rt/> @@ -119,7 +119,7 @@ under the License. data-shortdate="${shortDateInput?string}" <#if id?has_content> id="${id}"</#if>/><#rt/> <#if timeDropdown?has_content && timeDropdown=="time-dropdown"> - <select name="${timeHourName}" <#if classString?has_content>class="${classString}"</#if>><#rt/> + <select name="${timeHourName}" <@renderDisabled disabled /> <#if classString?has_content>class="${classString}"</#if>><#rt/> <#if isTwelveHour> <#local x=11> <#list 0..x as i> @@ -131,7 +131,7 @@ under the License. <option value="${i}"<#if hour2?has_content><#if i=hour2> selected="selected"</#if></#if>>${i}</option><#rt/> </#list> </#if> - </select>:<select name="${timeMinutesName}" <#if classString?has_content>class="${classString}"</#if>><#rt/> + </select>:<select name="${timeMinutesName}" <@renderDisabled disabled /> <#if classString?has_content>class="${classString}"</#if>><#rt/> <#local values = Static["org.apache.ofbiz.base.util.StringUtil"].toList(timeValues)> <#list values as i> <option value="${i}"<#if minutes?has_content><#if i?number== minutes ||((i?number==(60 -step?number)) && (minutes > 60 - (step?number/2))) || ((minutes > i?number )&& (minutes < i?number+(step?number/2))) || ((minutes < i?number )&& (minutes > i?number-(step?number/2)))> selected="selected"</#if></#if>>${i}</option><#rt/> @@ -139,7 +139,7 @@ under the License. </select> <#rt/> <#if isTwelveHour> - <select name="${ampmName}" <#if classString?has_content>class="${classString}"</#if>><#rt/> + <select name="${ampmName}" <@renderDisabled disabled /> <#if classString?has_content>class="${classString}"</#if>><#rt/> <option value="AM" <#if "selected" == amSelected>selected="selected"</#if> >AM</option><#rt/> <option value="PM" <#if "selected" == pmSelected>selected="selected"</#if>>PM</option><#rt/> </select> @@ -155,17 +155,24 @@ under the License. </span> </#macro> -<#macro renderDropDownField name className alert id formName action explicitDescription options fieldName otherFieldName otherValue otherFieldSize ajaxEnabled ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup="" tabindex="" multiple="" event="" size="" firstInList="" currentValue="" allowEmpty="" dDFCurrent="" noCurrentSelectedKey="" disabled=""> +<#macro renderDropDownField name className alert id formName action explicitDescription options fieldName otherFieldName otherValue otherFieldSize ajaxEnabled ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup="" tabindex="" multiple="" event="" size="" firstInList="" currentValue="" allowEmpty="" dDFCurrent="" noCurrentSelectedKey="" disabled=false> <#if conditionGroup?has_content> <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> </#if> <span class="ui-widget"> - <select name="${name?default("")}<#rt/>" <@renderClass className alert /><#if id?has_content> id="${id}"</#if><#if multiple?has_content> multiple="multiple"</#if><#if ajaxEnabled> class="autoCompleteDropDown"</#if><#if event?has_content> ${event}="${action}"</#if><#if size?has_content> size="${size}"</#if><#if tabindex?has_content> tabindex="${tabindex}"</#if><#if disabled?has_content && disabled> disabled</#if><#rt/> - <#if otherFieldName?has_content> - data-other-field-name="${otherFieldName}" - data-other-field-value='${otherValue?js_string}' - data-other-field-size='${otherFieldSize}' - </#if>> + <select name="${name?default("")}<#rt/>" + <@renderClass className alert /> <@renderDisabled disabled /> + <#if id?has_content> id="${id}"</#if> + <#if multiple?has_content> multiple="multiple"</#if> + <#if ajaxEnabled> class="autoCompleteDropDown"</#if> + <#if event?has_content> ${event}="${action}"</#if> + <#if size?has_content> size="${size}"</#if> + <#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> + <#if otherFieldName?has_content> + data-other-field-name="${otherFieldName}" + data-other-field-value='${otherValue?js_string}' + data-other-field-size='${otherFieldSize}' + </#if>> <#if firstInList?has_content && currentValue?has_content && !multiple?has_content> <option selected="selected" value="${currentValue}">${explicitDescription?replace("\'","'")}</option><#rt/><#-- replace("\'","'") related to OFBIZ-6504 --> </#if> @@ -188,61 +195,66 @@ under the License. </#if> </#macro> -<#macro renderCheckField items className alert id name action conditionGroup="" allChecked="" currentValue="" event="" tabindex="" disabled=""> +<#macro renderCheckField items className alert id name action conditionGroup="" allChecked="" currentValue="" event="" tabindex="" disabled=false> <#if conditionGroup?has_content> - <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> + <input type="hidden" name="${name}_grp" value="${conditionGroup}" <@renderDisabled disabled />/> </#if> <#list items as item> <span <@renderClass className alert />><#rt/> - <input type="checkbox"<#if (item_index == 0)> id="${id}"</#if><#rt/><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> - <#if disabled?has_content && disabled> disabled="disabled"</#if><#rt/> + <input <@renderDisabled disabled /> type="checkbox"<#if (item_index == 0)> id="${id}"</#if><#rt/><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> <#if allChecked?has_content && allChecked> checked="checked" <#elseif allChecked?has_content && !allChecked> - <#elseif item.checked?has_content && item.checked?boolean> checked="checked"</#if> - name="${name?default("")?html}" value="${item.value?default("")?html}"<#if event?has_content> ${event}="${action}"</#if>/><#rt/> + <#elseif item.checked?has_content && item.checked?boolean> checked="checked"</#if> + name="${name?default("")?html}" value="${item.value?default("")?html}"<#if event?has_content> ${event}="${action}"</#if>/><#rt/> ${item.description?default("")} </span> </#list> </#macro> -<#macro renderRadioField items className alert name action conditionGroup="" currentValue="" noCurrentSelectedKey="" event="" tabindex="" disabled=""> +<#macro renderRadioField items className alert name action conditionGroup="" currentValue="" noCurrentSelectedKey="" event="" tabindex="" disabled=false> <#if conditionGroup?has_content> - <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> + <input type="hidden" name="${name}_grp" value="${conditionGroup}" <@renderDisabled disabled />/> </#if> <#list items as item> <span <@renderClass className alert />><#rt/> - <input type="radio"<#if currentValue?has_content><#if currentValue==item.key> checked="checked"</#if><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> - <#elseif noCurrentSelectedKey?has_content && noCurrentSelectedKey == item.key> checked="checked"</#if><#if disabled?has_content && disabled> disabled="disabled"</#if> - name="${name?default("")?html}" value="${item.key?default("")?html}"<#if event?has_content> ${event}="${action}"</#if>/><#rt/> + <input type="radio" <@renderDisabled disabled /> + <#if currentValue?has_content> + <#if currentValue==item.key> checked="checked"</#if> + <#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> + <#elseif noCurrentSelectedKey?has_content && noCurrentSelectedKey == item.key> checked="checked"</#if> + name="${name?default("")?html}" value="${item.key?default("")?html}" + <#if event?has_content> ${event}="${action}"</#if>/><#rt/> ${item.description} </span> </#list> </#macro> -<#macro renderSubmitField buttonType className alert formName action imgSrc ajaxUrl id title="" name="" event="" confirmation="" containerId="" tabindex=""> +<#macro renderSubmitField buttonType className alert formName action imgSrc ajaxUrl id title="" name="" event="" confirmation="" containerId="" tabindex="" disabled=false> <#if buttonType=="text-link"> <a <@renderClass className alert /> href="javascript:document.${formName}.submit()" <#if confirmation?has_content>onclick="return confirm('${confirmation?js_string}');"</#if>><#if title?has_content>${title}</#if> </a> <#elseif buttonType=="image"> - <input type="image" src="${imgSrc}" <@renderClass className alert /><#if name?has_content> name="${name}"</#if> + <input type="image" src="${imgSrc}" <@renderClass className alert /> <@renderDisabled disabled /> <#if name?has_content> name="${name}"</#if> <#if title?has_content> alt="${title}"</#if><#if event?has_content> ${event}="${action}"</#if> <#if confirmation?has_content>onclick="return confirm('${confirmation?js_string}');"</#if>/> <#else> - <input type="<#if containerId?has_content>button<#else>submit</#if>" <@renderClass className alert /> - <#if id?has_content> id="${id}"</#if><#rt/> - <#if name??> name="${name}"</#if><#if title?has_content> value="${title}"</#if><#if event?has_content> ${event}="${action}"</#if> - <#if containerId?has_content> onclick="<#if confirmation?has_content>if (confirm('${confirmation?js_string}')) </#if>ajaxSubmitFormUpdateAreas('${formName}', '${ajaxUrl}')" - <#else><#if confirmation?has_content> onclick="return confirm('${confirmation?js_string}');"</#if> - <#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> - </#if>/> - <#if containerId?has_content> - <#-- the form will be submit by ajax, we inform that perss enter need to call --> - <script> - $("form[name='${formName}']").keypress(function(e) { - if (e.which === 13 && ! $(e.target).is('textarea')) { - e.preventDefault(); - $("#${id!}").click(); - }}); - </script> - </#if> + <input type="<#if containerId?has_content>button<#else>submit</#if>" <@renderClass className alert /> <@renderDisabled disabled /> + <#if id?has_content> id="${id}"</#if><#rt/> + <#if name??> name="${name}"</#if> + <#if title?has_content> value="${title}"</#if> + <#if event?has_content> ${event}="${action}"</#if> + <#if containerId?has_content> onclick="<#if confirmation?has_content>if (confirm('${confirmation?js_string}')) </#if>ajaxSubmitFormUpdateAreas('${formName}', '${ajaxUrl}')" + <#else><#if confirmation?has_content> onclick="return confirm('${confirmation?js_string}');"</#if> + <#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> + </#if>/> + <#if containerId?has_content> + <#-- the form will be submit by ajax, we inform that perss enter need to call --> + <script> + $("form[name='${formName}']").keypress(function(e) { + if (e.which === 13 && ! $(e.target).is('textarea')) { + e.preventDefault(); + $("#${id!}").click(); + }}); + </script> + </#if> </#if> </#macro> @@ -250,11 +262,14 @@ under the License. <input type="reset" <@renderClass className alert /> name="${name}"<#if title?has_content> value="${title}"</#if>/> </#macro> -<#macro renderHiddenField name conditionGroup="" value="" id="" event="" action=""> +<#macro renderHiddenField name conditionGroup="" value="" id="" event="" action="" disabled=false> <#if conditionGroup?has_content> - <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> + <input type="hidden" name="${name}_grp" value="${conditionGroup}" <@renderDisabled disabled />/> </#if> - <input type="hidden" name="${name}"<#if value?has_content> value="${value}"</#if><#if id?has_content> id="${id}"</#if><#if event?has_content && action?has_content> ${event}="${action}"</#if>/> + <input type="hidden" name="${name}" <@renderDisabled disabled /> + <#if value?has_content> value="${value}"</#if> + <#if id?has_content> id="${id}"</#if> + <#if event?has_content && action?has_content> ${event}="${action}"</#if>/> </#macro> <#macro renderIgnoredField></#macro> @@ -396,12 +411,12 @@ under the License. <#macro renderFormatEmptySpace> </#macro> -<#macro renderTextFindField name defaultOption opBeginsWith opContains opIsEmpty opNotEqual className alert hideIgnoreCase ignCase ignoreCase conditionGroup="" value="" opEquals="" size="" maxlength="" autocomplete="" titleStyle="" tabindex=""> +<#macro renderTextFindField name defaultOption opBeginsWith opContains opIsEmpty opNotEqual className alert hideIgnoreCase ignCase ignoreCase conditionGroup="" value="" opEquals="" size="" maxlength="" autocomplete="" titleStyle="" tabindex="" disabled=false> <#if conditionGroup?has_content> - <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> + <input type="hidden" name="${name}_grp" value="${conditionGroup}" <@renderDisabled disabled />/> </#if> <#if opEquals?has_content> - <select <#if name?has_content>name="${name}_op"</#if> class="selectBox"><#rt/> + <select <@renderDisabled disabled /> <#if name?has_content>name="${name}_op"</#if> class="selectBox"<#rt/> <option value="equals"<#if defaultOption=="equals"> selected="selected"</#if>>${opEquals}</option><#rt/> <option value="like"<#if defaultOption=="like"> selected="selected"</#if>>${opBeginsWith}</option><#rt/> <option value="contains"<#if defaultOption=="contains"> selected="selected"</#if>>${opContains}</option><#rt/> @@ -411,20 +426,25 @@ under the License. <#else> <input type="hidden" name=<#if name?has_content> "${name}_op"</#if> value="${defaultOption}"/><#rt/> </#if> - <input type="text" <@renderClass className alert /> name="${name}"<#if value?has_content> value="${value}"</#if><#if size?has_content> size="${size}"</#if><#if maxlength?has_content> maxlength="${maxlength}"</#if><#if autocomplete?has_content> autocomplete="off"</#if>/><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> + <input type="text" <@renderClass className alert /> <@renderDisabled disabled /> name="${name}" + <#if value?has_content> value="${value}"</#if> + <#if size?has_content> size="${size}"</#if> + <#if maxlength?has_content> maxlength="${maxlength}"</#if> + <#if autocomplete?has_content> autocomplete="off"</#if> + <#if tabindex?has_content> tabindex="${tabindex}"</#if>/><#rt/> <#if titleStyle?has_content><span class="${titleStyle}" ><#rt/></#if> <#if hideIgnoreCase> <input type="hidden" name="${name}_ic" value=<#if ignCase>"Y"<#else> ""</#if>/><#rt/> <#else> - <input type="checkbox" name="${name}_ic" value="Y" <#if ignCase> checked="checked"</#if> /> ${ignoreCase}<#rt/> + <input type="checkbox" name="${name}_ic" value="Y" <#if ignCase> checked="checked"</#if> <@renderDisabled disabled />/> ${ignoreCase}<#rt/> </#if> <#if titleStyle?has_content></span> </#if> </#macro> -<#macro renderDateFindField className alert id name dateType formName value defaultDateTimeString imgSrc localizedIconTitle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup="" localizedInputTitle="" value2="" size="" maxlength="" titleStyle="" tabindex=""> +<#macro renderDateFindField className alert id name dateType formName value defaultDateTimeString imgSrc localizedIconTitle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup="" localizedInputTitle="" value2="" size="" maxlength="" titleStyle="" tabindex="" disabled=false> <#if conditionGroup?has_content> - <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> + <input type="hidden" name="${name}_grp" value="${conditionGroup}" <@renderDisabled disabled />/> </#if> <#if dateType != "time"> <#local className = className + " date-time-picker"/> @@ -435,7 +455,7 @@ under the License. <#local timePicker = "/common/js/node_modules/@chinchilla-software/jquery-ui-timepicker-addon/dist/jquery-ui-timepicker-addon.min.js,/common/js/node_modules/@chinchilla-software/jquery-ui-timepicker-addon/dist/jquery-ui-timepicker-addon.css"/> <#local timePickerLang = Static["org.apache.ofbiz.common.JsLanguageFilesMappingUtil"].getFile("dateTime", .locale)/> <span class="view-calendar"> - <input id="${id}_fld0_value" type="text" <@renderClass className alert /> + <input id="${id}_fld0_value" type="text" <@renderClass className alert /> <@renderDisabled disabled /> <#if name?has_content> name="${name?html}_fld0_value"</#if> <#if localizedInputTitle?has_content> title="${localizedInputTitle}"</#if> <#if value?has_content> value="${value}"</#if> @@ -451,7 +471,7 @@ under the License. <#if titleStyle?has_content> <span class="${titleStyle}"><#rt/> </#if> - <select<#if name?has_content> name="${name}_fld0_op"</#if> class="selectBox"><#rt/> + <select <@renderDisabled disabled /> <#if name?has_content> name="${name}_fld0_op"</#if> class="selectBox"><#rt/> <option value="equals"<#if defaultOptionFrom=="equals"> selected="selected"</#if>>${opEquals}</option><#rt/> <option value="sameDay"<#if defaultOptionFrom=="sameDay"> selected="selected"</#if>>${opSameDay}</option><#rt/> <option value="greaterThanFromDayStart"<#if defaultOptionFrom=="greaterThanFromDayStart"> selected="selected"</#if>>${opGreaterThanFromDayStart}</option><#rt/> @@ -461,7 +481,7 @@ under the License. </span><#rt/> </#if> <#rt/> - <input id="${id}_fld1_value" type="text" <@renderClass className alert /> + <input id="${id}_fld1_value" type="text" <@renderClass className alert /> <@renderDisabled disabled /> <#if name?has_content> name="${name}_fld1_value"</#if> <#if localizedInputTitle??> title="${localizedInputTitle?html}"</#if> <#if value2?has_content> value="${value2}"</#if> @@ -471,12 +491,12 @@ under the License. <#if datePickerLang?has_content> data-datepickerlang="${datePickerLang}"</#if><#rt/> <#if timePicker?has_content> data-timePicker="${timePicker}"</#if><#rt/> <#if timePickerLang?has_content> data-timepickerlang="${timePickerLang}"</#if><#rt/> - data-shortdate="${shortDateInput?string}" + data-shortdate="${shortDateInput?string}" /><#rt/> <#if titleStyle?has_content> <span class="${titleStyle}"><#rt/> </#if> - <select name=<#if name?has_content>"${name}_fld1_op"</#if> class="selectBox"><#rt/> + <select name=<#if name?has_content>"${name}_fld1_op"</#if> class="selectBox" <@renderDisabled disabled />><#rt/> <option value="opLessThan"<#if defaultOptionThru=="opLessThan"> selected="selected"</#if>>${opLessThan}</option><#rt/> <option value="upToDay"<#if defaultOptionThru=="upToDay"> selected="selected"</#if>>${opUpToDay}</option><#rt/> <option value="upThruDay"<#if defaultOptionThru=="upThruDay"> selected="selected"</#if>>${opUpThruDay}</option><#rt/> @@ -488,15 +508,21 @@ under the License. </span> </#macro> -<#macro renderRangeFindField className alert value defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals defaultOptionThru conditionGroup="" name="" size="" maxlength="" autocomplete="" titleStyle="" value2="" tabindex=""> +<#macro renderRangeFindField className alert value defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals defaultOptionThru conditionGroup="" name="" size="" maxlength="" autocomplete="" titleStyle="" value2="" tabindex="" disabled=false> <#if conditionGroup?has_content> - <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> + <input type="hidden" name="${name}_grp" value="${conditionGroup}" <@renderDisabled disabled />/> </#if> - <input type="text" <@renderClass className alert /> <#if name?has_content>name="${name}_fld0_value"</#if><#if value?has_content> value="${value}"</#if><#if size?has_content> size="${size}"</#if><#if maxlength?has_content> maxlength="${maxlength}"</#if><#if autocomplete?has_content> autocomplete="off"</#if>/><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> + <input type="text" <@renderClass className alert /> <@renderDisabled disabled /> + <#if name?has_content>name="${name}_fld0_value"</#if> + <#if value?has_content> value="${value}"</#if> + <#if size?has_content> size="${size}"</#if> + <#if maxlength?has_content> maxlength="${maxlength}"</#if> + <#if autocomplete?has_content> autocomplete="off"</#if> + <#if tabindex?has_content> tabindex="${tabindex}"</#if>/><#rt/> <#if titleStyle?has_content> <span class="${titleStyle}" ><#rt/> </#if> - <select <#if name?has_content>name="${name}_fld0_op"</#if> class="selectBox"><#rt/> + <select <@renderDisabled disabled /> <#if name?has_content>name="${name}_fld0_op"</#if> class="selectBox"><#rt/> <option value="equals"<#if defaultOptionFrom=="equals"> selected="selected"</#if>>${opEquals}</option><#rt/> <option value="greaterThan"<#if defaultOptionFrom=="greaterThan"> selected="selected"</#if>>${opGreaterThan}</option><#rt/> <option value="greaterThanEqualTo"<#if defaultOptionFrom=="greaterThanEqualTo"> selected="selected"</#if>>${opGreaterThanEquals}</option><#rt/> @@ -505,11 +531,16 @@ under the License. </span><#rt/> </#if> <br /><#rt/> - <input type="text" <@renderClass className alert /><#if name?has_content> name="${name}_fld1_value"</#if><#if value2?has_content> value="${value2}"</#if><#if size?has_content> size="${size}"</#if><#if maxlength?has_content> maxlength="${maxlength}"</#if><#if autocomplete?has_content> autocomplete="off"</#if>/><#rt/> + <input type="text" <@renderClass className alert /> <@renderDisabled disabled /> + <#if name?has_content> name="${name}_fld1_value"</#if> + <#if value2?has_content> value="${value2}"</#if> + <#if size?has_content> size="${size}"</#if> + <#if maxlength?has_content> maxlength="${maxlength}"</#if> + <#if autocomplete?has_content> autocomplete="off"</#if>/><#rt/> <#if titleStyle?has_content> - <span class="${titleStyle}" ><#rt/> + <span class="${titleStyle}"><#rt/> </#if> - <select name=<#if name?has_content>"${name}_fld1_op"</#if> class="selectBox"><#rt/> + <select <@renderDisabled disabled /> name=<#if name?has_content>"${name}_fld1_op"</#if> class="selectBox"><#rt/> <option value="lessThan"<#if defaultOptionThru=="lessThan"> selected="selected"</#if>>${opLessThan?html}</option><#rt/> <option value="lessThanEqualTo"<#if defaultOptionThru=="lessThanEqualTo"> selected="selected"</#if>>${opLessThanEquals?html}</option><#rt/> </select><#rt/> @@ -553,7 +584,7 @@ Parameter: lastViewName, String, optional - If the ajaxEnabled parameter is true Parameter: tabindex, String, optional - HTML tabindex number. Parameter: delegatorName, String, optional - name of the delegator in context. --> -<#macro renderLookupField name formName fieldFormName conditionGroup="" className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width=modelTheme.getLookupWidth() height=modelTheme.getLookupHeight() position=modelTheme.getLookupPosition() fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" la [...] +<#macro renderLookupField name formName fieldFormName conditionGroup="" className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width=modelTheme.getLookupWidth() height=modelTheme.getLookupHeight() position=modelTheme.getLookupPosition() fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" la [...] <#if Static["org.apache.ofbiz.widget.model.ModelWidget"].widgetBoundaryCommentsEnabled(context)><#-- context is always null here, but this is handled in widgetBoundaryCommentsEnabled --> <!-- @renderLookupField --> </#if> @@ -571,13 +602,16 @@ Parameter: delegatorName, String, optional - name of the delegator in context. <#local ajaxUrl = ajaxUrl + "&_LAST_VIEW_NAME_=" + lastViewName /> </#if> <#if conditionGroup?has_content> - <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> + <input type="hidden" name="${name}_grp" value="${conditionGroup}" <@renderDisabled disabled />/> </#if> <span class="field-lookup"> <#if size?has_content && size=="0"> - <input type="hidden" <#if name?has_content> name="${name}"</#if><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> + <input type="hidden" <@renderDisabled disabled /> + <#if name?has_content> name="${name}"</#if> + <#if tabindex?has_content> tabindex="${tabindex}"</#if> <#else> - <input type="text" <@renderClass className alert /><#if name?has_content> name="${name}"</#if><#if value?has_content> value="${value}"</#if><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> + <input type="text" <@renderClass className alert /> <@renderDisabled disabled /> + <#if name?has_content> name="${name}"</#if><#if value?has_content> value="${value}"</#if><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> <#if size?has_content> size="${size}"</#if><#if maxlength?has_content> maxlength="${maxlength}"</#if><#if id?has_content> id="${id}"</#if><#rt/> <#if readonly?has_content && readonly> readonly="readonly"</#if><#rt/><#if event?has_content && action?has_content> ${event}="${action}"</#if><#rt/> <#if autocomplete?has_content> autocomplete="off"</#if><#rt/> @@ -659,12 +693,31 @@ Parameter: delegatorName, String, optional - name of the delegator in context. </#if> </#macro> -<#macro renderFileField className alert name="" value="" size="" maxlength="" autocomplete="" tabindex=""> - <input type="file" <@renderClass className alert /><#if name?has_content> name="${name}"</#if><#if value?has_content> value="${value}"</#if><#if size?has_content> size="${size}"</#if><#if maxlength?has_content> maxlength="${maxlength}"</#if><#if autocomplete?has_content> autocomplete="off"</#if>/><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> +<#macro renderFileField className alert name="" value="" size="" maxlength="" autocomplete="" tabindex="" disabled=false> + <input type="file" + <@renderClass className alert /> + <@renderDisabled disabled /> + <#if name?has_content> name="${name}"</#if> + <#if value?has_content> value="${value}"</#if> + <#if size?has_content> size="${size}"</#if> + <#if maxlength?has_content> maxlength="${maxlength}"</#if> + <#if autocomplete?has_content> autocomplete="off"</#if> + <#if tabindex?has_content> tabindex="${tabindex}"</#if>/><#rt/> </#macro> -<#macro renderPasswordField className alert name="" value="" size="" maxlength="" id="" autocomplete="" tabindex=""> - <input type="password" <@renderClass className alert /><#if name?has_content> name="${name}"</#if><#if value?has_content> value="${value}"</#if><#if size?has_content> size="${size}"</#if><#if maxlength?has_content> maxlength="${maxlength}"</#if><#if id?has_content> id="${id}"</#if><#if autocomplete?has_content> autocomplete="off"</#if><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/>/> + +<#macro renderPasswordField className alert name="" value="" size="" maxlength="" id="" autocomplete="" tabindex="" disabled=false> + <input type="password" + <@renderClass className alert /> + <@renderDisabled disabled /> + <#if name?has_content> name="${name}"</#if> + <#if value?has_content> value="${value}"</#if> + <#if size?has_content> size="${size}"</#if> + <#if maxlength?has_content> maxlength="${maxlength}"</#if> + <#if id?has_content> id="${id}"</#if> + <#if autocomplete?has_content> autocomplete="off"</#if> + <#if tabindex?has_content> tabindex="${tabindex}"</#if>/><#rt/> </#macro> + <#macro renderImageField action value="" description="" alternate="" style="" event=""><img<#if value?has_content> src="${value}"</#if><#if description?has_content> title="${description}"</#if> alt="<#if alternate?has_content>${alternate}"</#if><#if style?has_content> class="${style}"</#if><#if event?has_content> ${event?html}="${action}" </#if>/></#macro> <#macro renderBanner style="" leftStyle="" rightStyle="" leftText="" text="" rightText=""> @@ -722,10 +775,14 @@ Parameter: delegatorName, String, optional - name of the delegator in context. <#if requiredField=="true"><#if !requiredStyle?has_content>*</#if></#if> </#macro> -<#macro makeHiddenFormLinkForm actionUrl name parameters targetWindow=""> +<#macro renderDisabled disabled> + <#if disabled?has_content && disabled> disabled </#if> +</#macro> + +<#macro makeHiddenFormLinkForm actionUrl name parameters targetWindow="" disabled=false> <form method="post" action="${actionUrl}" <#if targetWindow?has_content>target="${targetWindow}"</#if> onsubmit="javascript:submitFormDisableSubmits(this)" name="${name}"> <#list parameters as parameter> - <input name="${parameter.name}" value="${parameter.value?html}" type="hidden"/> + <input name="${parameter.name}" value="${parameter.value?html}" type="hidden" <@renderDisabled disabled />/> </#list> </form> </#macro>