Hi Gil,
Great work so far. However, I seem to be facing a bug. I list the error below that shows in almost every form: When calling macro "renderHiddenField", required parameter "conditionGroup" (parameter #2) was not specified. ---- Tip: If the omission was deliberate, you may consider making the parameter optional in the macro by specifying a default value for it, like <#macro macroName paramName=defaultExpr>) ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #macro renderHiddenField name conditi... [in template "component://common-theme/template/macro/HtmlFormMacroLibrary.ftl" in macro "renderHiddenField" at line 305, column 1] - Reached through: @renderHiddenField name="realestateCi... [in template "-222c6da2:161d256a91a:-7356" at line 1, column 1] On Mon, Feb 26, 2018 at 12:57 PM, <[hidden email]> wrote: > Author: pgil > Date: Mon Feb 26 09:57:36 2018 > New Revision: 1825350 > > URL: http://svn.apache.org/viewvc?rev=1825350&view=rev > Log: > Implemented: Add the ability in performFind service to set OR search criteria (OFBIZ-10195) > > This improvement add a way to specify a condition-group attribute on search fields, for performFind service usage. > The same group conditions are gathered with AND operator, and each group is added with a OR > The resulting condition is added to the other with AND operator. > Thanks Taher for your reviews and ideas > > Modified: > ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java > ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd > ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java > ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java > ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java > ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl > ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl > ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl > ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl > ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl > ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl > > Modified: ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java (original) > +++ ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java Mon Feb 26 09:57:36 2018 > @@ -218,11 +218,19 @@ public class FindServices { > Set<String> processed = new LinkedHashSet<>(); > Set<String> keys = new LinkedHashSet<>(); > Map<String, ModelField> fieldMap = new LinkedHashMap<>(); > + /** > + * When inputFields contains several xxxx_grp, yyyy_grp ... values, > + * Corresponding conditions will grouped by an {@link EntityOperator.AND} then all added to final > + * condition grouped by an {@link EntityOperator.OR} > + * That will allow union of search criteria, instead of default intersection. > + */ > + Map<String, List<EntityCondition>> savedGroups = new LinkedHashMap(); > for (ModelField modelField : fieldList) { > fieldMap.put(modelField.getName(), modelField); > } > List<EntityCondition> result = new LinkedList<>(); > for (Map.Entry<String, ? extends Object> entry : parameters.entrySet()) { > + String currentGroup = null; > String parameterName = entry.getKey(); > if (processed.contains(parameterName)) { > continue; > @@ -237,7 +245,15 @@ public class FindServices { > } else if (parameterName.endsWith("_value")) { > fieldName = parameterName.substring(0, parameterName.length() - 6); > } > - String key = fieldName.concat("_ic"); > + > + String key = fieldName.concat("_grp"); > + if (parameters.containsKey(key)) { > + if (parameters.containsKey(key)) { > + keys.add(key); > + } > + currentGroup = (String) parameters.get(key); > + } > + key = fieldName.concat("_ic"); > if (parameters.containsKey(key)) { > keys.add(key); > ignoreCase = "Y".equals(parameters.get(key)); > @@ -272,11 +288,28 @@ public class FindServices { > if (ObjectType.isEmpty(fieldValue) && !"empty".equals(operation)) { > continue; > } > - result.add(createSingleCondition(modelField, operation, fieldValue, ignoreCase, delegator, context)); > + if (UtilValidate.isNotEmpty(currentGroup)){ > + List<EntityCondition> groupedConditions = new LinkedList<>(); > + if(savedGroups.get(currentGroup) != null) { > + groupedConditions.addAll(savedGroups.get(currentGroup)); > + } > + groupedConditions.add(createSingleCondition(modelField, operation, fieldValue, ignoreCase, delegator, context)); > + savedGroups.put(currentGroup, groupedConditions); > + } else { > + result.add(createSingleCondition(modelField, operation, fieldValue, ignoreCase, delegator, context)); > + } > + > for (String mapKey : keys) { > queryStringMap.put(mapKey, parameters.get(mapKey)); > } > } > + //Add OR-grouped conditions > + List<EntityCondition> orConditions = new LinkedList<>(); > + for (String groupedConditions : savedGroups.keySet()) { > + orConditions.add(EntityCondition.makeCondition(savedGroups.get(groupedConditions))); > + } > + if (orConditions.size() > 0) result.add(EntityCondition.makeCondition(orConditions, EntityOperator.OR)); > + > return result; > } > > > Modified: ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd (original) > +++ ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd Mon Feb 26 09:57:36 2018 > @@ -925,6 +925,16 @@ under the License. > </xs:documentation> > </xs:annotation> > </xs:attribute> > + <xs:attribute type="xs:string" name="condition-group"> > + <xs:annotation> > + <xs:documentation> > + The condition-group regroup search criterias together. > + Each group member will be gathered with AND operator > + Every defined groups will be joined each other with OR operator > + Any ungrouped condition will be added with AND operator > + </xs:documentation> > + </xs:annotation> > + </xs:attribute> > </xs:complexType> > </xs:element> > > > Modified: ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java (original) > +++ ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java Mon Feb 26 09:57:36 2018 > @@ -144,6 +144,7 @@ public class ModelFormField { > private final String widgetStyle; > private final String parentFormName; > private final String tabindex; > + private final String conditionGroup; > > private ModelFormField(ModelFormFieldBuilder builder) { > this.action = builder.getAction(); > @@ -197,6 +198,7 @@ public class ModelFormField { > this.widgetStyle = builder.getWidgetStyle(); > this.parentFormName = builder.getParentFormName(); > this.tabindex = builder.getTabindex(); > + this.conditionGroup = builder.getConditionGroup(); > } > > public FlexibleStringExpander getAction() { > @@ -448,6 +450,10 @@ public class ModelFormField { > return tabindex; > } > > + public String getConditionGroup() { > + return conditionGroup; > + } > + > public Map<String, ? extends Object> getMap(Map<String, ? extends Object> context) { > if (UtilValidate.isEmpty(this.mapAcsr)) { > return this.modelForm.getDefaultMap(context); > > Modified: ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java (original) > +++ ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java Mon Feb 26 09:57:36 2018 > @@ -111,6 +111,7 @@ public class ModelFormFieldBuilder { > private String widgetStyle = ""; > private String parentFormName = ""; > private String tabindex = ""; > + private String conditionGroup = ""; > > public ModelFormFieldBuilder() { > } > @@ -162,6 +163,7 @@ public class ModelFormFieldBuilder { > this.widgetStyle = fieldElement.getAttribute("widget-style"); > this.parentFormName = fieldElement.getAttribute("form-name"); > this.tabindex = fieldElement.getAttribute("tabindex"); > + this.conditionGroup = fieldElement.getAttribute("condition-group"); > Element childElement = null; > List<? extends Element> subElements = UtilXml.childElementList(fieldElement); > for (Element subElement : subElements) { > @@ -277,6 +279,7 @@ public class ModelFormFieldBuilder { > this.widgetStyle = modelFormField.getWidgetStyle(); > this.parentFormName = modelFormField.getParentFormName(); > this.tabindex = modelFormField.getTabindex(); > + this.conditionGroup = modelFormField.getConditionGroup(); > } > > public ModelFormFieldBuilder(ModelFormFieldBuilder builder) { > @@ -318,6 +321,7 @@ public class ModelFormFieldBuilder { > this.widgetStyle = builder.getWidgetStyle(); > this.parentFormName = builder.getParentFormName(); > this.tabindex = builder.getTabindex(); > + this.conditionGroup = builder.getConditionGroup(); > } > > public ModelFormFieldBuilder addOnChangeUpdateArea(UpdateArea onChangeUpdateArea) { > @@ -494,6 +498,10 @@ public class ModelFormFieldBuilder { > return tabindex; > } > > + public String getConditionGroup() { > + return conditionGroup; > + } > + > private boolean induceFieldInfo(ModelForm modelForm, String defaultFieldType, ModelReader entityModelReader, DispatchContext dispatchContext) { > if (induceFieldInfoFromEntityField(defaultFieldType, entityModelReader)) { > return true; > @@ -810,6 +818,9 @@ public class ModelFormFieldBuilder { > if (UtilValidate.isNotEmpty(builder.getTabindex())) { > this.tabindex = builder.getTabindex(); > } > + if (UtilValidate.isNotEmpty(builder.getConditionGroup())) { > + this.conditionGroup = builder.getConditionGroup(); > + } > this.encodeOutput = builder.getEncodeOutput(); > this.position = builder.getPosition(); > this.requiredField = builder.getRequiredField(); > @@ -1000,4 +1011,8 @@ public class ModelFormFieldBuilder { > this.tabindex = tabindex; > return this; > } > + public ModelFormFieldBuilder setConditionGroup(String conditionGroup) { > + this.conditionGroup = conditionGroup; > + return this; > + } > } > > Modified: ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original) > +++ ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Mon Feb 26 09:57:36 2018 > @@ -774,6 +774,7 @@ public final class MacroFormRenderer imp > ModelFormField modelFormField = dropDownField.getModelFormField(); > ModelForm modelForm = modelFormField.getModelForm(); > String currentValue = modelFormField.getEntry(context); > + String conditionGroup = modelFormField.getConditionGroup(); > List<ModelFormField.OptionValue> allOptionValues = dropDownField.getAllOptionValues(context, WidgetWorker.getDelegator(context)); > ModelFormField.AutoComplete autoComplete = dropDownField.getAutoComplete(); > String event = modelFormField.getEvent(); > @@ -1000,6 +1001,8 @@ public final class MacroFormRenderer imp > sr.append(ignoreCase); > sr.append("\" fullSearch=\""); > sr.append(fullSearch); > + sr.append("\" conditionGroup=\""); > + sr.append(conditionGroup); > sr.append("\" tabindex=\""); > sr.append(tabindex); > sr.append("\" />"); > @@ -1014,6 +1017,7 @@ public final class MacroFormRenderer imp > public void renderCheckField(Appendable writer, Map<String, Object> context, CheckField checkField) throws IOException { > ModelFormField modelFormField = checkField.getModelFormField(); > String currentValue = modelFormField.getEntry(context); > + String conditionGroup = modelFormField.getConditionGroup(); > Boolean allChecked = checkField.isAllChecked(context); > String id = modelFormField.getCurrentContainerId(context); > String className = ""; > @@ -1051,6 +1055,8 @@ public final class MacroFormRenderer imp > sr.append(alert); > sr.append("\" id=\""); > sr.append(id); > + sr.append("\" conditionGroup=\""); > + sr.append(conditionGroup); > sr.append("\" allChecked="); > sr.append((allChecked != null ? Boolean.toString(allChecked) : "\"\"")); > sr.append(" currentValue=\""); > @@ -1076,6 +1082,7 @@ public final class MacroFormRenderer imp > ModelFormField modelFormField = radioField.getModelFormField(); > List<ModelFormField.OptionValue> allOptionValues = radioField.getAllOptionValues(context, WidgetWorker.getDelegator(context)); > String currentValue = modelFormField.getEntry(context); > + String conditionGroup = modelFormField.getConditionGroup(); > String className = ""; > String alert = "false"; > String name = modelFormField.getParameterName(context); > @@ -1123,6 +1130,8 @@ public final class MacroFormRenderer imp > if (action != null) { > sr.append(action); > } > + sr.append("\" conditionGroup=\""); > + sr.append(conditionGroup); > sr.append("\" tabindex=\""); > sr.append(tabindex); > sr.append("\" />"); > @@ -1243,12 +1252,15 @@ public final class MacroFormRenderer imp > public void renderHiddenField(Appendable writer, Map<String, Object> context, ModelFormField modelFormField, String value) throws IOException { > String name = modelFormField.getParameterName(context); > String action = modelFormField.getAction(context); > + String conditionGroup = modelFormField.getConditionGroup(); > String event = modelFormField.getEvent(); > String id = modelFormField.getCurrentContainerId(context); > StringWriter sr = new StringWriter(); > sr.append("<@renderHiddenField "); > sr.append(" name=\""); > sr.append(name); > + sr.append("\" conditionGroup=\""); > + sr.append(conditionGroup); > sr.append("\" value=\""); > sr.append(value); > sr.append("\" id=\""); > @@ -1788,6 +1800,7 @@ public final class MacroFormRenderer imp > public void renderTextFindField(Appendable writer, Map<String, Object> context, TextFindField textFindField) throws IOException { > ModelFormField modelFormField = textFindField.getModelFormField(); > String defaultOption = textFindField.getDefaultOption(context); > + String conditionGroup = modelFormField.getConditionGroup(); > String className = ""; > String alert = "false"; > String opEquals = ""; > @@ -1869,6 +1882,8 @@ public final class MacroFormRenderer imp > sr.append(ignoreCase); > sr.append("\" tabindex=\""); > sr.append(tabindex); > + sr.append("\" conditionGroup=\""); > + sr.append(conditionGroup); > sr.append("\" />"); > executeMacro(writer, sr.toString()); > this.appendTooltip(writer, context, modelFormField); > @@ -1882,6 +1897,7 @@ public final class MacroFormRenderer imp > String opGreaterThanEquals = UtilProperties.getMessage("conditionalUiLabels", "greater_than_equals", locale); > String opLessThan = UtilProperties.getMessage("conditionalUiLabels", "less_than", locale); > String opLessThanEquals = UtilProperties.getMessage("conditionalUiLabels", "less_than_equals", locale); > + String conditionGroup = modelFormField.getConditionGroup(); > String className = ""; > String alert = "false"; > if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) { > @@ -1950,6 +1966,8 @@ public final class MacroFormRenderer imp > sr.append(value2); > sr.append("\" defaultOptionThru=\""); > sr.append(defaultOptionThru); > + sr.append("\" conditionGroup=\""); > + sr.append(conditionGroup); > sr.append("\" tabindex=\""); > sr.append(tabindex); > sr.append("\" />"); > @@ -1968,6 +1986,7 @@ public final class MacroFormRenderer imp > String opUpToDay = UtilProperties.getMessage("conditionalUiLabels", "up_to_day", locale); > String opUpThruDay = UtilProperties.getMessage("conditionalUiLabels", "up_thru_day", locale); > String opIsEmpty = UtilProperties.getMessage("conditionalUiLabels", "is_empty", locale); > + String conditionGroup = modelFormField.getConditionGroup(); > Map<String, String> uiLabelMap = UtilGenerics.checkMap(context.get("uiLabelMap")); > if (uiLabelMap == null) { > Debug.logWarning("Could not find uiLabelMap in context", module); > @@ -2066,6 +2085,8 @@ public final class MacroFormRenderer imp > sr.append(defaultDateTimeString); > sr.append("\" imgSrc=\""); > sr.append(imgSrc.toString()); > + sr.append("\" conditionGroup=\""); > + sr.append(conditionGroup); > sr.append("\" localizedIconTitle=\""); > sr.append(localizedIconTitle); > sr.append("\" titleStyle=\""); > @@ -2102,6 +2123,7 @@ public final class MacroFormRenderer imp > public void renderLookupField(Appendable writer, Map<String, Object> context, LookupField lookupField) throws IOException { > ModelFormField modelFormField = lookupField.getModelFormField(); > String lookupFieldFormName = lookupField.getFormName(context); > + String conditionGroup = modelFormField.getConditionGroup(); > String className = ""; > String alert = "false"; > if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) { > @@ -2275,6 +2297,8 @@ public final class MacroFormRenderer imp > sr.append(Boolean.toString(isInitiallyCollapsed)); > sr.append("\" lastViewName=\""); > sr.append(lastViewName); > + sr.append("\" conditionGroup=\""); > + sr.append(conditionGroup); > sr.append("\" tabindex=\""); > sr.append(tabindex); > sr.append("\" delegatorName=\""); > > Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl (original) > +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 > @@ -30,7 +30,7 @@ under the License. > > <#macro renderDateTimeField name className alert title value size maxlength id dateType shortDateInput timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType formName mask="" event="" action="" step="" timeValues="" tabindex="" ><@renderField value /></#macro> > > -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex> > +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup tabindex> > <#if currentValue?has_content && firstInList?has_content> > <@renderField explicitDescription /> > <#else> > @@ -41,13 +41,13 @@ under the License. > </#macro> > > <#macro renderTooltip tooltip tooltipStyle></#macro> > -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex></#macro> > -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex></#macro> > +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex></#macro> > +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex></#macro> > > <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> > <#macro renderResetField className alert name title></#macro> > > -<#macro renderHiddenField name value id event action></#macro> > +<#macro renderHiddenField name conditionGroup value id event action></#macro> > <#macro renderIgnoredField></#macro> > > <#macro renderFieldTitle style title id="" fieldHelpText="" for=""><@renderField title />,</#macro> > @@ -97,15 +97,15 @@ under the License. > > <#macro renderFormatEmptySpace> </#macro> > > -<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex><@renderField value /></#macro> > +<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup tabindex><@renderField value /></#macro> > > -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value /></#macro> > +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex><@renderField value /></#macro> > > -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex> > +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex> > <@renderField value /> > </#macro> > > -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">></#macro> > +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">></#macro> > <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> > <#macro renderFileField className alert name value size maxlength autocomplete tabindex><@renderField value /></#macro> > <#macro renderPasswordField className alert name value size maxlength id autocomplete tabindex></#macro> > > Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl (original) > +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 > @@ -57,7 +57,7 @@ under the License. > > <#macro renderDateTimeField name className alert title value size maxlength step timeValues id event action dateType shortDateInput timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType formName mask="" event="" action="" step="" timeValues="" tabindex=""><@makeBlock className value /></#macro> > > -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex firstInList="" currentValue=""> > +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignorease fullSearch conditionGroup tabindex firstInList="" currentValue=""> > <#if currentValue?has_content && firstInList?has_content> > <@makeBlock "" explicitDescription /> > <#else> > @@ -67,13 +67,13 @@ under the License. > </#if> > </#macro> > > -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex><@makeBlock "" "" /></#macro> > -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex><@makeBlock "" "" /></#macro> > +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex><@makeBlock "" "" /></#macro> > +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex><@makeBlock "" "" /></#macro> > > <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex><@makeBlock "" "" /></#macro> > <#macro renderResetField className alert name title><@makeBlock "" "" /></#macro> > > -<#macro renderHiddenField name value id event action><!--hidden--></#macro> > +<#macro renderHiddenField name conditionGroup value id event action><!--hidden--></#macro> > <#macro renderIgnoredField><!--ignore--></#macro> > > <#macro renderFieldTitle style title id fieldHelpText="" for=""><fo:block <@getFoStyle style/>>${title?default("")?replace(" ", " ")}</fo:block></#macro> > @@ -121,16 +121,16 @@ under the License. > > <#macro renderFormatEmptySpace> <@makeBlock "" " " /><!--space--></#macro> > > -<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex><@makeBlock className value/></#macro> > +<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup tabindex><@makeBlock className value/></#macro> > > -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex> > +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex> > <@makeBlock className value /> > </#macro> > -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex> > +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex> > <@makeBlock className value /> > </#macro> > > -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default"></#macro> > +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default"></#macro> > <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> > <#macro renderFileField className alert name value size maxlength autocomplete tabindex><@makeBlock className value /></#macro> > <#macro renderPasswordField className alert name value size maxlength id autocomplete tabindex><@makeBlock className "" /></#macro> > > Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl (original) > +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 > @@ -207,7 +207,10 @@ under the License. > </span> > </#macro> > > -<#macro renderDropDownField name className alert id formName otherFieldName action explicitDescription options fieldName otherFieldName otherValue otherFieldSize ajaxEnabled ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex="" multiple="" event="" size="" firstInList="" currentValue="" allowEmpty="" dDFCurrent="" noCurrentSelectedKey=""> > +<#macro renderDropDownField name className alert id formName otherFieldName 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=""> > + <#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 otherFieldSize gt 0> onchange="process_choice(this,document.${formName}.${otherFieldName})"</#if><#if event?has_content> ${event}="${action}"</#if><#if size?has_content> size="${size}"</#if><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/>> > <#if firstInList?has_content && currentValue?has_content && !multiple?has_content> > @@ -249,7 +252,10 @@ under the License. > </#if> > </#macro> > > -<#macro renderCheckField items className alert id name action allChecked="" currentValue="" event="" tabindex=""> > +<#macro renderCheckField items className alert id name action conditionGroup allChecked="" currentValue="" event="" tabindex=""> > + <#if conditionGroup?has_content> > + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> > + </#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/> > @@ -261,7 +267,10 @@ under the License. > </#list> > </#macro> > > -<#macro renderRadioField items className alert name action currentValue="" noCurrentSelectedKey="" event="" tabindex=""> > +<#macro renderRadioField items className alert name action conditionGroup currentValue="" noCurrentSelectedKey="" event="" tabindex=""> > + <#if conditionGroup?has_content> > + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> > + </#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/> > @@ -293,7 +302,10 @@ under the License. > <input type="reset" <@renderClass className alert /> name="${name}"<#if title?has_content> value="${title}"</#if>/> > </#macro> > > -<#macro renderHiddenField name value="" id="" event="" action=""> > +<#macro renderHiddenField name conditionGroup value="" id="" event="" action=""> > + <#if conditionGroup?has_content> > + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> > + </#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>/> > </#macro> > > @@ -449,7 +461,10 @@ under the License. > > <#macro renderFormatEmptySpace> </#macro> > > -<#macro renderTextFindField name defaultOption opBeginsWith opContains opIsEmpty opNotEqual className alert hideIgnoreCase ignCase ignoreCase 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=""> > + <#if conditionGroup?has_content> > + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> > + </#if> > <#if opEquals?has_content> > <select <#if name?has_content>name="${name}_op"</#if> class="selectBox"><#rt/> > <option value="equals"<#if defaultOption=="equals"> selected="selected"</#if>>${opEquals}</option><#rt/> > @@ -472,7 +487,10 @@ under the License. > </#if> > </#macro> > > -<#macro renderDateFindField className alert name dateType formName value defaultDateTimeString imgSrc localizedIconTitle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty localizedInputTitle="" value2="" size="" maxlength="" titleStyle="" tabindex=""> > +<#macro renderDateFindField className alert 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=""> > + <#if conditionGroup?has_content> > + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> > + </#if> > <span class="view-calendar"> > <input id="${name?html}_fld0_value" type="text" <@renderClass className alert /><#if name?has_content> name="${name?html}_fld0_value"</#if><#if localizedInputTitle?has_content> title="${localizedInputTitle}"</#if><#if value?has_content> value="${value}"</#if><#if size?has_content> size="${size}"</#if><#if maxlength?has_content> maxlength="${maxlength}"</#if>/><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> > <#if dateType != "time"> > @@ -550,7 +568,10 @@ under the License. > </span> > </#macro> > > -<#macro renderRangeFindField className alert value defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals defaultOptionThru 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=""> > + <#if conditionGroup?has_content> > + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> > + </#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/> > <#if titleStyle?has_content> > <span class="${titleStyle}" ><#rt/> > @@ -612,7 +633,7 @@ Parameter: lastViewName, String, optiona > Parameter: tabindex, String, optional - HTML tabindex number. > Parameter: delegatorName, String, optional - name of the delegator in context. > --> > -<#macro renderLookupField name formName fieldFormName 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="" lastViewName="main" tabindex="" delegatorName="default"> > +<#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="" lastViewName="main" tabindex="" delegatorName="default"> > <#if Static["org.apache.ofbiz.widget.model.ModelWidget"].widgetBoundaryCommentsEnabled(context)><#-- context is always null here, but this is handled in widgetBoundaryCommentsEnabled --> > <!-- @renderLookupField --> > </#if> > @@ -629,6 +650,9 @@ Parameter: delegatorName, String, option > <#if ajaxEnabled?has_content && ajaxEnabled && (presentation?has_content && "window" == presentation)> > <#local ajaxUrl = ajaxUrl + "&_LAST_VIEW_NAME_=" + lastViewName /> > </#if> > + <#if conditionGroup?has_content> > + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> > + </#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/> > > Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl (original) > +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 > @@ -30,7 +30,7 @@ under the License. > > <#macro renderDateTimeField name className alert title value size maxlength id dateType shortDateInput timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType formName mask="" event="" action="" step="" timeValues="" tabindex="" ><@renderField value /></#macro> > > -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex> > +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup tabindex> > <#if currentValue?has_content && firstInList?has_content> > <@renderField explicitDescription /> > <#else> > @@ -41,13 +41,13 @@ under the License. > </#macro> > > <#macro renderTooltip tooltip tooltipStyle></#macro> > -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex></#macro> > -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex></#macro> > +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex></#macro> > +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex></#macro> > > <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> > <#macro renderResetField className alert name title></#macro> > > -<#macro renderHiddenField name value id event action></#macro> > +<#macro renderHiddenField name conditionGroup value id event action></#macro> > <#macro renderIgnoredField></#macro> > > <#macro renderFieldTitle style title id fieldHelpText="" for=""><@renderField title /></#macro> > @@ -97,15 +97,15 @@ under the License. > > <#macro renderFormatEmptySpace> </#macro> > > -<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex><@renderField value /></#macro> > +<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup tabindex><@renderField value /></#macro> > > -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value /></#macro> > +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex><@renderField value /></#macro> > > -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex> > +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex> > <@renderField value /> > </#macro> > > -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">><@renderField value /></#macro> > +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">><@renderField value /></#macro> > <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> > <#macro renderFileField className alert name value size maxlength autocomplete tabindex><@renderField value /></#macro> > <#macro renderPasswordField className alert name value size maxlength id autocomplete tabindex></#macro> > > Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl (original) > +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 > @@ -40,17 +40,17 @@ under the License. > <#else><@renderItemField value "dtf" className/></#if> > </#macro> > > -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex><@renderItemField explicitDescription "txf" className/></#macro> > +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup tabindex><@renderItemField explicitDescription "txf" className/></#macro> > > -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex><@renderItemField currentValue "txf" className/></#macro> > +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex><@renderItemField currentValue "txf" className/></#macro> > > -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex><@renderItemField currentValue "txf" className/></#macro> > +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex><@renderItemField currentValue "txf" className/></#macro> > > <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> > > <#macro renderResetField className alert name title></#macro> > > -<#macro renderHiddenField name value id event action></#macro> > +<#macro renderHiddenField name conditionGroup value id event action></#macro> > > <#macro renderIgnoredField></#macro> > > @@ -112,13 +112,13 @@ under the License. > > <#macro renderFormatEmptySpace><@renderItemField "" "txf"/></#macro> > > -<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex></#macro> > +<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup tabindex></#macro> > > -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex></#macro> > +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> > > -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex></#macro> > +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex></#macro> > > -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">><@renderItemField value "txf" className/></#macro> > +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">><@renderItemField value "txf" className/></#macro> > > <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> > > > Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl > URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff > ============================================================================== > --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl (original) > +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 > @@ -46,16 +46,16 @@ under the License. > > <#macro renderDateTimeField name className alert title value size maxlength id dateType shortDateInput timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType formName mask="" event="" action="" step="" timeValues="" tabindex="" ><@renderField value/></#macro> > > -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex> > +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup tabindex> > </#macro> > > -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex></#macro> > -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex></#macro> > +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex></#macro> > +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex></#macro> > > <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> > <#macro renderResetField className alert name title></#macro> > > -<#macro renderHiddenField name value id event action></#macro> > +<#macro renderHiddenField name conditionGroup value id event action></#macro> > <#macro renderIgnoredField></#macro> > > <#macro renderFieldTitle style title id fieldHelpText="" for=""></#macro> > @@ -92,12 +92,12 @@ under the License. > > <#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex><@renderField value/></#macro> > > -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex></#macro> > +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> > > -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex> > +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex> > </#macro> > > -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">></#macro> > +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">></#macro> > <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> > <#macro renderFileField className alert name value size maxlength autocomplete tabindex></#macro> > <#macro renderPasswordField className alert name value size maxlength id autocomplete tabindex></#macro> > > |
Hello Taher,
Oww, i might have missed something :( , i'll look at it very soon ! Gil On 26/02/2018 14:52, Taher Alkhateeb wrote: > Hi Gil, > > Great work so far. However, I seem to be facing a bug. I list the > error below that shows in almost every form: > > When calling macro "renderHiddenField", required parameter > "conditionGroup" (parameter #2) was not specified. ---- Tip: If the > omission was deliberate, you may consider making the parameter > optional in the macro by specifying a default value for it, like > <#macro macroName paramName=defaultExpr>) ---- ---- FTL stack trace > ("~" means nesting-related): - Failed at: #macro renderHiddenField > name conditi... [in template > "component://common-theme/template/macro/HtmlFormMacroLibrary.ftl" in > macro "renderHiddenField" at line 305, column 1] - Reached through: > @renderHiddenField name="realestateCi... [in template > "-222c6da2:161d256a91a:-7356" at line 1, column 1] > > On Mon, Feb 26, 2018 at 12:57 PM, <[hidden email]> wrote: >> Author: pgil >> Date: Mon Feb 26 09:57:36 2018 >> New Revision: 1825350 >> >> URL: http://svn.apache.org/viewvc?rev=1825350&view=rev >> Log: >> Implemented: Add the ability in performFind service to set OR search criteria (OFBIZ-10195) >> >> This improvement add a way to specify a condition-group attribute on search fields, for performFind service usage. >> The same group conditions are gathered with AND operator, and each group is added with a OR >> The resulting condition is added to the other with AND operator. >> Thanks Taher for your reviews and ideas >> >> Modified: >> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >> ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >> >> Modified: ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java (original) >> +++ ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java Mon Feb 26 09:57:36 2018 >> @@ -218,11 +218,19 @@ public class FindServices { >> Set<String> processed = new LinkedHashSet<>(); >> Set<String> keys = new LinkedHashSet<>(); >> Map<String, ModelField> fieldMap = new LinkedHashMap<>(); >> + /** >> + * When inputFields contains several xxxx_grp, yyyy_grp ... values, >> + * Corresponding conditions will grouped by an {@link EntityOperator.AND} then all added to final >> + * condition grouped by an {@link EntityOperator.OR} >> + * That will allow union of search criteria, instead of default intersection. >> + */ >> + Map<String, List<EntityCondition>> savedGroups = new LinkedHashMap(); >> for (ModelField modelField : fieldList) { >> fieldMap.put(modelField.getName(), modelField); >> } >> List<EntityCondition> result = new LinkedList<>(); >> for (Map.Entry<String, ? extends Object> entry : parameters.entrySet()) { >> + String currentGroup = null; >> String parameterName = entry.getKey(); >> if (processed.contains(parameterName)) { >> continue; >> @@ -237,7 +245,15 @@ public class FindServices { >> } else if (parameterName.endsWith("_value")) { >> fieldName = parameterName.substring(0, parameterName.length() - 6); >> } >> - String key = fieldName.concat("_ic"); >> + >> + String key = fieldName.concat("_grp"); >> + if (parameters.containsKey(key)) { >> + if (parameters.containsKey(key)) { >> + keys.add(key); >> + } >> + currentGroup = (String) parameters.get(key); >> + } >> + key = fieldName.concat("_ic"); >> if (parameters.containsKey(key)) { >> keys.add(key); >> ignoreCase = "Y".equals(parameters.get(key)); >> @@ -272,11 +288,28 @@ public class FindServices { >> if (ObjectType.isEmpty(fieldValue) && !"empty".equals(operation)) { >> continue; >> } >> - result.add(createSingleCondition(modelField, operation, fieldValue, ignoreCase, delegator, context)); >> + if (UtilValidate.isNotEmpty(currentGroup)){ >> + List<EntityCondition> groupedConditions = new LinkedList<>(); >> + if(savedGroups.get(currentGroup) != null) { >> + groupedConditions.addAll(savedGroups.get(currentGroup)); >> + } >> + groupedConditions.add(createSingleCondition(modelField, operation, fieldValue, ignoreCase, delegator, context)); >> + savedGroups.put(currentGroup, groupedConditions); >> + } else { >> + result.add(createSingleCondition(modelField, operation, fieldValue, ignoreCase, delegator, context)); >> + } >> + >> for (String mapKey : keys) { >> queryStringMap.put(mapKey, parameters.get(mapKey)); >> } >> } >> + //Add OR-grouped conditions >> + List<EntityCondition> orConditions = new LinkedList<>(); >> + for (String groupedConditions : savedGroups.keySet()) { >> + orConditions.add(EntityCondition.makeCondition(savedGroups.get(groupedConditions))); >> + } >> + if (orConditions.size() > 0) result.add(EntityCondition.makeCondition(orConditions, EntityOperator.OR)); >> + >> return result; >> } >> >> >> Modified: ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd (original) >> +++ ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd Mon Feb 26 09:57:36 2018 >> @@ -925,6 +925,16 @@ under the License. >> </xs:documentation> >> </xs:annotation> >> </xs:attribute> >> + <xs:attribute type="xs:string" name="condition-group"> >> + <xs:annotation> >> + <xs:documentation> >> + The condition-group regroup search criterias together. >> + Each group member will be gathered with AND operator >> + Every defined groups will be joined each other with OR operator >> + Any ungrouped condition will be added with AND operator >> + </xs:documentation> >> + </xs:annotation> >> + </xs:attribute> >> </xs:complexType> >> </xs:element> >> >> >> Modified: ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java (original) >> +++ ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java Mon Feb 26 09:57:36 2018 >> @@ -144,6 +144,7 @@ public class ModelFormField { >> private final String widgetStyle; >> private final String parentFormName; >> private final String tabindex; >> + private final String conditionGroup; >> >> private ModelFormField(ModelFormFieldBuilder builder) { >> this.action = builder.getAction(); >> @@ -197,6 +198,7 @@ public class ModelFormField { >> this.widgetStyle = builder.getWidgetStyle(); >> this.parentFormName = builder.getParentFormName(); >> this.tabindex = builder.getTabindex(); >> + this.conditionGroup = builder.getConditionGroup(); >> } >> >> public FlexibleStringExpander getAction() { >> @@ -448,6 +450,10 @@ public class ModelFormField { >> return tabindex; >> } >> >> + public String getConditionGroup() { >> + return conditionGroup; >> + } >> + >> public Map<String, ? extends Object> getMap(Map<String, ? extends Object> context) { >> if (UtilValidate.isEmpty(this.mapAcsr)) { >> return this.modelForm.getDefaultMap(context); >> >> Modified: ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java (original) >> +++ ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java Mon Feb 26 09:57:36 2018 >> @@ -111,6 +111,7 @@ public class ModelFormFieldBuilder { >> private String widgetStyle = ""; >> private String parentFormName = ""; >> private String tabindex = ""; >> + private String conditionGroup = ""; >> >> public ModelFormFieldBuilder() { >> } >> @@ -162,6 +163,7 @@ public class ModelFormFieldBuilder { >> this.widgetStyle = fieldElement.getAttribute("widget-style"); >> this.parentFormName = fieldElement.getAttribute("form-name"); >> this.tabindex = fieldElement.getAttribute("tabindex"); >> + this.conditionGroup = fieldElement.getAttribute("condition-group"); >> Element childElement = null; >> List<? extends Element> subElements = UtilXml.childElementList(fieldElement); >> for (Element subElement : subElements) { >> @@ -277,6 +279,7 @@ public class ModelFormFieldBuilder { >> this.widgetStyle = modelFormField.getWidgetStyle(); >> this.parentFormName = modelFormField.getParentFormName(); >> this.tabindex = modelFormField.getTabindex(); >> + this.conditionGroup = modelFormField.getConditionGroup(); >> } >> >> public ModelFormFieldBuilder(ModelFormFieldBuilder builder) { >> @@ -318,6 +321,7 @@ public class ModelFormFieldBuilder { >> this.widgetStyle = builder.getWidgetStyle(); >> this.parentFormName = builder.getParentFormName(); >> this.tabindex = builder.getTabindex(); >> + this.conditionGroup = builder.getConditionGroup(); >> } >> >> public ModelFormFieldBuilder addOnChangeUpdateArea(UpdateArea onChangeUpdateArea) { >> @@ -494,6 +498,10 @@ public class ModelFormFieldBuilder { >> return tabindex; >> } >> >> + public String getConditionGroup() { >> + return conditionGroup; >> + } >> + >> private boolean induceFieldInfo(ModelForm modelForm, String defaultFieldType, ModelReader entityModelReader, DispatchContext dispatchContext) { >> if (induceFieldInfoFromEntityField(defaultFieldType, entityModelReader)) { >> return true; >> @@ -810,6 +818,9 @@ public class ModelFormFieldBuilder { >> if (UtilValidate.isNotEmpty(builder.getTabindex())) { >> this.tabindex = builder.getTabindex(); >> } >> + if (UtilValidate.isNotEmpty(builder.getConditionGroup())) { >> + this.conditionGroup = builder.getConditionGroup(); >> + } >> this.encodeOutput = builder.getEncodeOutput(); >> this.position = builder.getPosition(); >> this.requiredField = builder.getRequiredField(); >> @@ -1000,4 +1011,8 @@ public class ModelFormFieldBuilder { >> this.tabindex = tabindex; >> return this; >> } >> + public ModelFormFieldBuilder setConditionGroup(String conditionGroup) { >> + this.conditionGroup = conditionGroup; >> + return this; >> + } >> } >> >> Modified: ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original) >> +++ ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Mon Feb 26 09:57:36 2018 >> @@ -774,6 +774,7 @@ public final class MacroFormRenderer imp >> ModelFormField modelFormField = dropDownField.getModelFormField(); >> ModelForm modelForm = modelFormField.getModelForm(); >> String currentValue = modelFormField.getEntry(context); >> + String conditionGroup = modelFormField.getConditionGroup(); >> List<ModelFormField.OptionValue> allOptionValues = dropDownField.getAllOptionValues(context, WidgetWorker.getDelegator(context)); >> ModelFormField.AutoComplete autoComplete = dropDownField.getAutoComplete(); >> String event = modelFormField.getEvent(); >> @@ -1000,6 +1001,8 @@ public final class MacroFormRenderer imp >> sr.append(ignoreCase); >> sr.append("\" fullSearch=\""); >> sr.append(fullSearch); >> + sr.append("\" conditionGroup=\""); >> + sr.append(conditionGroup); >> sr.append("\" tabindex=\""); >> sr.append(tabindex); >> sr.append("\" />"); >> @@ -1014,6 +1017,7 @@ public final class MacroFormRenderer imp >> public void renderCheckField(Appendable writer, Map<String, Object> context, CheckField checkField) throws IOException { >> ModelFormField modelFormField = checkField.getModelFormField(); >> String currentValue = modelFormField.getEntry(context); >> + String conditionGroup = modelFormField.getConditionGroup(); >> Boolean allChecked = checkField.isAllChecked(context); >> String id = modelFormField.getCurrentContainerId(context); >> String className = ""; >> @@ -1051,6 +1055,8 @@ public final class MacroFormRenderer imp >> sr.append(alert); >> sr.append("\" id=\""); >> sr.append(id); >> + sr.append("\" conditionGroup=\""); >> + sr.append(conditionGroup); >> sr.append("\" allChecked="); >> sr.append((allChecked != null ? Boolean.toString(allChecked) : "\"\"")); >> sr.append(" currentValue=\""); >> @@ -1076,6 +1082,7 @@ public final class MacroFormRenderer imp >> ModelFormField modelFormField = radioField.getModelFormField(); >> List<ModelFormField.OptionValue> allOptionValues = radioField.getAllOptionValues(context, WidgetWorker.getDelegator(context)); >> String currentValue = modelFormField.getEntry(context); >> + String conditionGroup = modelFormField.getConditionGroup(); >> String className = ""; >> String alert = "false"; >> String name = modelFormField.getParameterName(context); >> @@ -1123,6 +1130,8 @@ public final class MacroFormRenderer imp >> if (action != null) { >> sr.append(action); >> } >> + sr.append("\" conditionGroup=\""); >> + sr.append(conditionGroup); >> sr.append("\" tabindex=\""); >> sr.append(tabindex); >> sr.append("\" />"); >> @@ -1243,12 +1252,15 @@ public final class MacroFormRenderer imp >> public void renderHiddenField(Appendable writer, Map<String, Object> context, ModelFormField modelFormField, String value) throws IOException { >> String name = modelFormField.getParameterName(context); >> String action = modelFormField.getAction(context); >> + String conditionGroup = modelFormField.getConditionGroup(); >> String event = modelFormField.getEvent(); >> String id = modelFormField.getCurrentContainerId(context); >> StringWriter sr = new StringWriter(); >> sr.append("<@renderHiddenField "); >> sr.append(" name=\""); >> sr.append(name); >> + sr.append("\" conditionGroup=\""); >> + sr.append(conditionGroup); >> sr.append("\" value=\""); >> sr.append(value); >> sr.append("\" id=\""); >> @@ -1788,6 +1800,7 @@ public final class MacroFormRenderer imp >> public void renderTextFindField(Appendable writer, Map<String, Object> context, TextFindField textFindField) throws IOException { >> ModelFormField modelFormField = textFindField.getModelFormField(); >> String defaultOption = textFindField.getDefaultOption(context); >> + String conditionGroup = modelFormField.getConditionGroup(); >> String className = ""; >> String alert = "false"; >> String opEquals = ""; >> @@ -1869,6 +1882,8 @@ public final class MacroFormRenderer imp >> sr.append(ignoreCase); >> sr.append("\" tabindex=\""); >> sr.append(tabindex); >> + sr.append("\" conditionGroup=\""); >> + sr.append(conditionGroup); >> sr.append("\" />"); >> executeMacro(writer, sr.toString()); >> this.appendTooltip(writer, context, modelFormField); >> @@ -1882,6 +1897,7 @@ public final class MacroFormRenderer imp >> String opGreaterThanEquals = UtilProperties.getMessage("conditionalUiLabels", "greater_than_equals", locale); >> String opLessThan = UtilProperties.getMessage("conditionalUiLabels", "less_than", locale); >> String opLessThanEquals = UtilProperties.getMessage("conditionalUiLabels", "less_than_equals", locale); >> + String conditionGroup = modelFormField.getConditionGroup(); >> String className = ""; >> String alert = "false"; >> if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) { >> @@ -1950,6 +1966,8 @@ public final class MacroFormRenderer imp >> sr.append(value2); >> sr.append("\" defaultOptionThru=\""); >> sr.append(defaultOptionThru); >> + sr.append("\" conditionGroup=\""); >> + sr.append(conditionGroup); >> sr.append("\" tabindex=\""); >> sr.append(tabindex); >> sr.append("\" />"); >> @@ -1968,6 +1986,7 @@ public final class MacroFormRenderer imp >> String opUpToDay = UtilProperties.getMessage("conditionalUiLabels", "up_to_day", locale); >> String opUpThruDay = UtilProperties.getMessage("conditionalUiLabels", "up_thru_day", locale); >> String opIsEmpty = UtilProperties.getMessage("conditionalUiLabels", "is_empty", locale); >> + String conditionGroup = modelFormField.getConditionGroup(); >> Map<String, String> uiLabelMap = UtilGenerics.checkMap(context.get("uiLabelMap")); >> if (uiLabelMap == null) { >> Debug.logWarning("Could not find uiLabelMap in context", module); >> @@ -2066,6 +2085,8 @@ public final class MacroFormRenderer imp >> sr.append(defaultDateTimeString); >> sr.append("\" imgSrc=\""); >> sr.append(imgSrc.toString()); >> + sr.append("\" conditionGroup=\""); >> + sr.append(conditionGroup); >> sr.append("\" localizedIconTitle=\""); >> sr.append(localizedIconTitle); >> sr.append("\" titleStyle=\""); >> @@ -2102,6 +2123,7 @@ public final class MacroFormRenderer imp >> public void renderLookupField(Appendable writer, Map<String, Object> context, LookupField lookupField) throws IOException { >> ModelFormField modelFormField = lookupField.getModelFormField(); >> String lookupFieldFormName = lookupField.getFormName(context); >> + String conditionGroup = modelFormField.getConditionGroup(); >> String className = ""; >> String alert = "false"; >> if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) { >> @@ -2275,6 +2297,8 @@ public final class MacroFormRenderer imp >> sr.append(Boolean.toString(isInitiallyCollapsed)); >> sr.append("\" lastViewName=\""); >> sr.append(lastViewName); >> + sr.append("\" conditionGroup=\""); >> + sr.append(conditionGroup); >> sr.append("\" tabindex=\""); >> sr.append(tabindex); >> sr.append("\" delegatorName=\""); >> >> Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl (original) >> +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 >> @@ -30,7 +30,7 @@ under the License. >> >> <#macro renderDateTimeField name className alert title value size maxlength id dateType shortDateInput timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType formName mask="" event="" action="" step="" timeValues="" tabindex="" ><@renderField value /></#macro> >> >> -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex> >> +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup tabindex> >> <#if currentValue?has_content && firstInList?has_content> >> <@renderField explicitDescription /> >> <#else> >> @@ -41,13 +41,13 @@ under the License. >> </#macro> >> >> <#macro renderTooltip tooltip tooltipStyle></#macro> >> -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex></#macro> >> -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex></#macro> >> +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex></#macro> >> +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex></#macro> >> >> <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >> <#macro renderResetField className alert name title></#macro> >> >> -<#macro renderHiddenField name value id event action></#macro> >> +<#macro renderHiddenField name conditionGroup value id event action></#macro> >> <#macro renderIgnoredField></#macro> >> >> <#macro renderFieldTitle style title id="" fieldHelpText="" for=""><@renderField title />,</#macro> >> @@ -97,15 +97,15 @@ under the License. >> >> <#macro renderFormatEmptySpace> </#macro> >> >> -<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex><@renderField value /></#macro> >> +<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup tabindex><@renderField value /></#macro> >> >> -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value /></#macro> >> +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex><@renderField value /></#macro> >> >> -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex> >> +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex> >> <@renderField value /> >> </#macro> >> >> -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">></#macro> >> +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">></#macro> >> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> >> <#macro renderFileField className alert name value size maxlength autocomplete tabindex><@renderField value /></#macro> >> <#macro renderPasswordField className alert name value size maxlength id autocomplete tabindex></#macro> >> >> Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl (original) >> +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 >> @@ -57,7 +57,7 @@ under the License. >> >> <#macro renderDateTimeField name className alert title value size maxlength step timeValues id event action dateType shortDateInput timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType formName mask="" event="" action="" step="" timeValues="" tabindex=""><@makeBlock className value /></#macro> >> >> -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex firstInList="" currentValue=""> >> +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignorease fullSearch conditionGroup tabindex firstInList="" currentValue=""> >> <#if currentValue?has_content && firstInList?has_content> >> <@makeBlock "" explicitDescription /> >> <#else> >> @@ -67,13 +67,13 @@ under the License. >> </#if> >> </#macro> >> >> -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex><@makeBlock "" "" /></#macro> >> -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex><@makeBlock "" "" /></#macro> >> +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex><@makeBlock "" "" /></#macro> >> +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex><@makeBlock "" "" /></#macro> >> >> <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex><@makeBlock "" "" /></#macro> >> <#macro renderResetField className alert name title><@makeBlock "" "" /></#macro> >> >> -<#macro renderHiddenField name value id event action><!--hidden--></#macro> >> +<#macro renderHiddenField name conditionGroup value id event action><!--hidden--></#macro> >> <#macro renderIgnoredField><!--ignore--></#macro> >> >> <#macro renderFieldTitle style title id fieldHelpText="" for=""><fo:block <@getFoStyle style/>>${title?default("")?replace(" ", " ")}</fo:block></#macro> >> @@ -121,16 +121,16 @@ under the License. >> >> <#macro renderFormatEmptySpace> <@makeBlock "" " " /><!--space--></#macro> >> >> -<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex><@makeBlock className value/></#macro> >> +<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup tabindex><@makeBlock className value/></#macro> >> >> -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex> >> +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex> >> <@makeBlock className value /> >> </#macro> >> -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex> >> +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex> >> <@makeBlock className value /> >> </#macro> >> >> -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default"></#macro> >> +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default"></#macro> >> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> >> <#macro renderFileField className alert name value size maxlength autocomplete tabindex><@makeBlock className value /></#macro> >> <#macro renderPasswordField className alert name value size maxlength id autocomplete tabindex><@makeBlock className "" /></#macro> >> >> Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl (original) >> +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 >> @@ -207,7 +207,10 @@ under the License. >> </span> >> </#macro> >> >> -<#macro renderDropDownField name className alert id formName otherFieldName action explicitDescription options fieldName otherFieldName otherValue otherFieldSize ajaxEnabled ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex="" multiple="" event="" size="" firstInList="" currentValue="" allowEmpty="" dDFCurrent="" noCurrentSelectedKey=""> >> +<#macro renderDropDownField name className alert id formName otherFieldName 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=""> >> + <#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 otherFieldSize gt 0> onchange="process_choice(this,document.${formName}.${otherFieldName})"</#if><#if event?has_content> ${event}="${action}"</#if><#if size?has_content> size="${size}"</#if><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/>> >> <#if firstInList?has_content && currentValue?has_content && !multiple?has_content> >> @@ -249,7 +252,10 @@ under the License. >> </#if> >> </#macro> >> >> -<#macro renderCheckField items className alert id name action allChecked="" currentValue="" event="" tabindex=""> >> +<#macro renderCheckField items className alert id name action conditionGroup allChecked="" currentValue="" event="" tabindex=""> >> + <#if conditionGroup?has_content> >> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >> + </#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/> >> @@ -261,7 +267,10 @@ under the License. >> </#list> >> </#macro> >> >> -<#macro renderRadioField items className alert name action currentValue="" noCurrentSelectedKey="" event="" tabindex=""> >> +<#macro renderRadioField items className alert name action conditionGroup currentValue="" noCurrentSelectedKey="" event="" tabindex=""> >> + <#if conditionGroup?has_content> >> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >> + </#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/> >> @@ -293,7 +302,10 @@ under the License. >> <input type="reset" <@renderClass className alert /> name="${name}"<#if title?has_content> value="${title}"</#if>/> >> </#macro> >> >> -<#macro renderHiddenField name value="" id="" event="" action=""> >> +<#macro renderHiddenField name conditionGroup value="" id="" event="" action=""> >> + <#if conditionGroup?has_content> >> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >> + </#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>/> >> </#macro> >> >> @@ -449,7 +461,10 @@ under the License. >> >> <#macro renderFormatEmptySpace> </#macro> >> >> -<#macro renderTextFindField name defaultOption opBeginsWith opContains opIsEmpty opNotEqual className alert hideIgnoreCase ignCase ignoreCase 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=""> >> + <#if conditionGroup?has_content> >> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >> + </#if> >> <#if opEquals?has_content> >> <select <#if name?has_content>name="${name}_op"</#if> class="selectBox"><#rt/> >> <option value="equals"<#if defaultOption=="equals"> selected="selected"</#if>>${opEquals}</option><#rt/> >> @@ -472,7 +487,10 @@ under the License. >> </#if> >> </#macro> >> >> -<#macro renderDateFindField className alert name dateType formName value defaultDateTimeString imgSrc localizedIconTitle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty localizedInputTitle="" value2="" size="" maxlength="" titleStyle="" tabindex=""> >> +<#macro renderDateFindField className alert 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=""> >> + <#if conditionGroup?has_content> >> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >> + </#if> >> <span class="view-calendar"> >> <input id="${name?html}_fld0_value" type="text" <@renderClass className alert /><#if name?has_content> name="${name?html}_fld0_value"</#if><#if localizedInputTitle?has_content> title="${localizedInputTitle}"</#if><#if value?has_content> value="${value}"</#if><#if size?has_content> size="${size}"</#if><#if maxlength?has_content> maxlength="${maxlength}"</#if>/><#if tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> >> <#if dateType != "time"> >> @@ -550,7 +568,10 @@ under the License. >> </span> >> </#macro> >> >> -<#macro renderRangeFindField className alert value defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals defaultOptionThru 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=""> >> + <#if conditionGroup?has_content> >> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >> + </#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/> >> <#if titleStyle?has_content> >> <span class="${titleStyle}" ><#rt/> >> @@ -612,7 +633,7 @@ Parameter: lastViewName, String, optiona >> Parameter: tabindex, String, optional - HTML tabindex number. >> Parameter: delegatorName, String, optional - name of the delegator in context. >> --> >> -<#macro renderLookupField name formName fieldFormName 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="" lastViewName="main" tabindex="" delegatorName="default"> >> +<#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="" lastViewName="main" tabindex="" delegatorName="default"> >> <#if Static["org.apache.ofbiz.widget.model.ModelWidget"].widgetBoundaryCommentsEnabled(context)><#-- context is always null here, but this is handled in widgetBoundaryCommentsEnabled --> >> <!-- @renderLookupField --> >> </#if> >> @@ -629,6 +650,9 @@ Parameter: delegatorName, String, option >> <#if ajaxEnabled?has_content && ajaxEnabled && (presentation?has_content && "window" == presentation)> >> <#local ajaxUrl = ajaxUrl + "&_LAST_VIEW_NAME_=" + lastViewName /> >> </#if> >> + <#if conditionGroup?has_content> >> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >> + </#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/> >> >> Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl (original) >> +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 >> @@ -30,7 +30,7 @@ under the License. >> >> <#macro renderDateTimeField name className alert title value size maxlength id dateType shortDateInput timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType formName mask="" event="" action="" step="" timeValues="" tabindex="" ><@renderField value /></#macro> >> >> -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex> >> +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup tabindex> >> <#if currentValue?has_content && firstInList?has_content> >> <@renderField explicitDescription /> >> <#else> >> @@ -41,13 +41,13 @@ under the License. >> </#macro> >> >> <#macro renderTooltip tooltip tooltipStyle></#macro> >> -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex></#macro> >> -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex></#macro> >> +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex></#macro> >> +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex></#macro> >> >> <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >> <#macro renderResetField className alert name title></#macro> >> >> -<#macro renderHiddenField name value id event action></#macro> >> +<#macro renderHiddenField name conditionGroup value id event action></#macro> >> <#macro renderIgnoredField></#macro> >> >> <#macro renderFieldTitle style title id fieldHelpText="" for=""><@renderField title /></#macro> >> @@ -97,15 +97,15 @@ under the License. >> >> <#macro renderFormatEmptySpace> </#macro> >> >> -<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex><@renderField value /></#macro> >> +<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup tabindex><@renderField value /></#macro> >> >> -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value /></#macro> >> +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex><@renderField value /></#macro> >> >> -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex> >> +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex> >> <@renderField value /> >> </#macro> >> >> -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">><@renderField value /></#macro> >> +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">><@renderField value /></#macro> >> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> >> <#macro renderFileField className alert name value size maxlength autocomplete tabindex><@renderField value /></#macro> >> <#macro renderPasswordField className alert name value size maxlength id autocomplete tabindex></#macro> >> >> Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl (original) >> +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 >> @@ -40,17 +40,17 @@ under the License. >> <#else><@renderItemField value "dtf" className/></#if> >> </#macro> >> >> -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex><@renderItemField explicitDescription "txf" className/></#macro> >> +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup tabindex><@renderItemField explicitDescription "txf" className/></#macro> >> >> -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex><@renderItemField currentValue "txf" className/></#macro> >> +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex><@renderItemField currentValue "txf" className/></#macro> >> >> -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex><@renderItemField currentValue "txf" className/></#macro> >> +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex><@renderItemField currentValue "txf" className/></#macro> >> >> <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >> >> <#macro renderResetField className alert name title></#macro> >> >> -<#macro renderHiddenField name value id event action></#macro> >> +<#macro renderHiddenField name conditionGroup value id event action></#macro> >> >> <#macro renderIgnoredField></#macro> >> >> @@ -112,13 +112,13 @@ under the License. >> >> <#macro renderFormatEmptySpace><@renderItemField "" "txf"/></#macro> >> >> -<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex></#macro> >> +<#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup tabindex></#macro> >> >> -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex></#macro> >> +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> >> >> -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex></#macro> >> +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex></#macro> >> >> -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">><@renderItemField value "txf" className/></#macro> >> +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">><@renderItemField value "txf" className/></#macro> >> >> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> >> >> >> Modified: ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >> URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >> ============================================================================== >> --- ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl (original) >> +++ ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl Mon Feb 26 09:57:36 2018 >> @@ -46,16 +46,16 @@ under the License. >> >> <#macro renderDateTimeField name className alert title value size maxlength id dateType shortDateInput timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName amSelected pmSelected compositeType formName mask="" event="" action="" step="" timeValues="" tabindex="" ><@renderField value/></#macro> >> >> -<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch tabindex> >> +<#macro renderDropDownField name className alert id multiple formName otherFieldName event action size firstInList currentValue explicitDescription allowEmpty options fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect partialSearch partialChars ignoreCase fullSearch conditionGroup tabindex> >> </#macro> >> >> -<#macro renderCheckField items className alert id allChecked currentValue name event action tabindex></#macro> >> -<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action tabindex></#macro> >> +<#macro renderCheckField items className alert id allChecked currentValue name event action conditionGroup tabindex></#macro> >> +<#macro renderRadioField items className alert currentValue noCurrentSelectedKey name event action conditionGroup tabindex></#macro> >> >> <#macro renderSubmitField buttonType className alert formName title name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >> <#macro renderResetField className alert name title></#macro> >> >> -<#macro renderHiddenField name value id event action></#macro> >> +<#macro renderHiddenField name conditionGroup value id event action></#macro> >> <#macro renderIgnoredField></#macro> >> >> <#macro renderFieldTitle style title id fieldHelpText="" for=""></#macro> >> @@ -92,12 +92,12 @@ under the License. >> >> <#macro renderTextFindField name value defaultOption opEquals opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex><@renderField value/></#macro> >> >> -<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty tabindex></#macro> >> +<#macro renderDateFindField className alert name localizedInputTitle value value2 size maxlength dateType formName defaultDateTimeString imgSrc localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> >> >> -<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru tabindex> >> +<#macro renderRangeFindField className alert name value size maxlength autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru conditionGroup tabindex> >> </#macro> >> >> -<#macro renderLookupField name formName fieldFormName className="" alert="false" value="" size="" maxlength="" id="" event="" action="" readonly=false autocomplete="" descriptionFieldName="" targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled presentation="layer" width="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">></#macro> >> +<#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="" height="" position="" fadeBackground="true" clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" tabindex="" delegatorName="default">></#macro> >> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl paginateLastLabel paginateViewSizeLabel></#macro> >> <#macro renderFileField className alert name value size maxlength autocomplete tabindex></#macro> >> <#macro renderPasswordField className alert name value size maxlength id autocomplete tabindex></#macro> >> >> |
Ah, are you sure to have recompiled Java ? I cannot reproduce locally..
Gil On 26/02/2018 15:00, gil portenseigne wrote: > Hello Taher, > > Oww, i might have missed something :( , i'll look at it very soon ! > > Gil > > > On 26/02/2018 14:52, Taher Alkhateeb wrote: >> Hi Gil, >> >> Great work so far. However, I seem to be facing a bug. I list the >> error below that shows in almost every form: >> >> When calling macro "renderHiddenField", required parameter >> "conditionGroup" (parameter #2) was not specified. ---- Tip: If the >> omission was deliberate, you may consider making the parameter >> optional in the macro by specifying a default value for it, like >> <#macro macroName paramName=defaultExpr>) ---- ---- FTL stack trace >> ("~" means nesting-related): - Failed at: #macro renderHiddenField >> name conditi... [in template >> "component://common-theme/template/macro/HtmlFormMacroLibrary.ftl" in >> macro "renderHiddenField" at line 305, column 1] - Reached through: >> @renderHiddenField name="realestateCi... [in template >> "-222c6da2:161d256a91a:-7356" at line 1, column 1] >> >> On Mon, Feb 26, 2018 at 12:57 PM, <[hidden email]> wrote: >>> Author: pgil >>> Date: Mon Feb 26 09:57:36 2018 >>> New Revision: 1825350 >>> >>> URL: http://svn.apache.org/viewvc?rev=1825350&view=rev >>> Log: >>> Implemented: Add the ability in performFind service to set OR search >>> criteria (OFBIZ-10195) >>> >>> This improvement add a way to specify a condition-group attribute on >>> search fields, for performFind service usage. >>> The same group conditions are gathered with AND operator, and each >>> group is added with a OR >>> The resulting condition is added to the other with AND operator. >>> Thanks Taher for your reviews and ideas >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>> ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>> Mon Feb 26 09:57:36 2018 >>> @@ -218,11 +218,19 @@ public class FindServices { >>>          Set<String> processed = new LinkedHashSet<>(); >>>          Set<String> keys = new LinkedHashSet<>(); >>>          Map<String, ModelField> fieldMap = new LinkedHashMap<>(); >>> +       /** >>> +        * When inputFields contains several xxxx_grp, yyyy_grp ... >>> values, >>> +        * Corresponding conditions will grouped by an {@link >>> EntityOperator.AND} then all added to final >>> +        * condition grouped by an {@link EntityOperator.OR} >>> +        * That will allow union of search criteria, instead of >>> default intersection. >>> +        */ >>> +       Map<String, List<EntityCondition>> savedGroups = new >>> LinkedHashMap(); >>>          for (ModelField modelField : fieldList) { >>>              fieldMap.put(modelField.getName(), modelField); >>>          } >>>          List<EntityCondition> result = new LinkedList<>(); >>>          for (Map.Entry<String, ? extends Object> entry : >>> parameters.entrySet()) { >>> +           String currentGroup = null; >>>              String parameterName = entry.getKey(); >>>              if (processed.contains(parameterName)) { >>>                  continue; >>> @@ -237,7 +245,15 @@ public class FindServices { >>>              } else if (parameterName.endsWith("_value")) { >>>                  fieldName = parameterName.substring(0, >>> parameterName.length() - 6); >>>              } >>> -           String key = fieldName.concat("_ic"); >>> + >>> +           String key = fieldName.concat("_grp"); >>> +           if (parameters.containsKey(key)) { >>> +               if (parameters.containsKey(key)) { >>> +                   keys.add(key); >>> +               } >>> +               currentGroup = (String) parameters.get(key); >>> +           } >>> +           key = fieldName.concat("_ic"); >>>              if (parameters.containsKey(key)) { >>>                  keys.add(key); >>>                  ignoreCase = "Y".equals(parameters.get(key)); >>> @@ -272,11 +288,28 @@ public class FindServices { >>>              if (ObjectType.isEmpty(fieldValue) && >>> !"empty".equals(operation)) { >>>                  continue; >>>              } >>> -           result.add(createSingleCondition(modelField, operation, >>> fieldValue, ignoreCase, delegator, context)); >>> +           if (UtilValidate.isNotEmpty(currentGroup)){ >>> +               List<EntityCondition> groupedConditions = new >>> LinkedList<>(); >>> +               if(savedGroups.get(currentGroup) != null) { >>> + groupedConditions.addAll(savedGroups.get(currentGroup)); >>> +               } >>> + groupedConditions.add(createSingleCondition(modelField, operation, >>> fieldValue, ignoreCase, delegator, context)); >>> +               savedGroups.put(currentGroup, groupedConditions); >>> +           } else { >>> +               result.add(createSingleCondition(modelField, >>> operation, fieldValue, ignoreCase, delegator, context)); >>> +           } >>> + >>>              for (String mapKey : keys) { >>>                  queryStringMap.put(mapKey, parameters.get(mapKey)); >>>              } >>>          } >>> +       //Add OR-grouped conditions >>> +       List<EntityCondition> orConditions = new LinkedList<>(); >>> +       for (String groupedConditions : savedGroups.keySet()) { >>> + >>> orConditions.add(EntityCondition.makeCondition(savedGroups.get(groupedConditions))); >>> +       } >>> +       if (orConditions.size() > 0) >>> result.add(EntityCondition.makeCondition(orConditions, >>> EntityOperator.OR)); >>> + >>>          return result; >>>      } >>> >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>> (original) >>> +++ ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>> Mon Feb 26 09:57:36 2018 >>> @@ -925,6 +925,16 @@ under the License. >>>                      </xs:documentation> >>>                  </xs:annotation> >>>              </xs:attribute> >>> +           <xs:attribute type="xs:string" name="condition-group"> >>> +               <xs:annotation> >>> +                   <xs:documentation> >>> +                       The condition-group regroup search >>> criterias together. >>> +                       Each group member will be gathered with AND >>> operator >>> +                       Every defined groups will be joined each >>> other with OR operator >>> +                       Any ungrouped condition will be added with >>> AND operator >>> +                   </xs:documentation> >>> +               </xs:annotation> >>> +           </xs:attribute> >>>          </xs:complexType> >>>      </xs:element> >>> >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>> Mon Feb 26 09:57:36 2018 >>> @@ -144,6 +144,7 @@ public class ModelFormField { >>>      private final String widgetStyle; >>>      private final String parentFormName; >>>      private final String tabindex; >>> +   private final String conditionGroup; >>> >>>      private ModelFormField(ModelFormFieldBuilder builder) { >>>          this.action = builder.getAction(); >>> @@ -197,6 +198,7 @@ public class ModelFormField { >>>          this.widgetStyle = builder.getWidgetStyle(); >>>          this.parentFormName = builder.getParentFormName(); >>>          this.tabindex = builder.getTabindex(); >>> +       this.conditionGroup = builder.getConditionGroup(); >>>      } >>> >>>      public FlexibleStringExpander getAction() { >>> @@ -448,6 +450,10 @@ public class ModelFormField { >>>          return tabindex; >>>      } >>> >>> +   public String getConditionGroup() { >>> +       return conditionGroup; >>> +   } >>> + >>>      public Map<String, ? extends Object> getMap(Map<String, ? >>> extends Object> context) { >>>          if (UtilValidate.isEmpty(this.mapAcsr)) { >>>              return this.modelForm.getDefaultMap(context); >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>> Mon Feb 26 09:57:36 2018 >>> @@ -111,6 +111,7 @@ public class ModelFormFieldBuilder { >>>      private String widgetStyle = ""; >>>      private String parentFormName = ""; >>>      private String tabindex = ""; >>> +   private String conditionGroup = ""; >>> >>>      public ModelFormFieldBuilder() { >>>      } >>> @@ -162,6 +163,7 @@ public class ModelFormFieldBuilder { >>>          this.widgetStyle = fieldElement.getAttribute("widget-style"); >>>          this.parentFormName = fieldElement.getAttribute("form-name"); >>>          this.tabindex = fieldElement.getAttribute("tabindex"); >>> +       this.conditionGroup = >>> fieldElement.getAttribute("condition-group"); >>>          Element childElement = null; >>>          List<? extends Element> subElements = >>> UtilXml.childElementList(fieldElement); >>>          for (Element subElement : subElements) { >>> @@ -277,6 +279,7 @@ public class ModelFormFieldBuilder { >>>          this.widgetStyle = modelFormField.getWidgetStyle(); >>>          this.parentFormName = modelFormField.getParentFormName(); >>>          this.tabindex = modelFormField.getTabindex(); >>> +       this.conditionGroup = modelFormField.getConditionGroup(); >>>      } >>> >>>      public ModelFormFieldBuilder(ModelFormFieldBuilder builder) { >>> @@ -318,6 +321,7 @@ public class ModelFormFieldBuilder { >>>          this.widgetStyle = builder.getWidgetStyle(); >>>          this.parentFormName = builder.getParentFormName(); >>>          this.tabindex = builder.getTabindex(); >>> +       this.conditionGroup = builder.getConditionGroup(); >>>      } >>> >>>      public ModelFormFieldBuilder addOnChangeUpdateArea(UpdateArea >>> onChangeUpdateArea) { >>> @@ -494,6 +498,10 @@ public class ModelFormFieldBuilder { >>>          return tabindex; >>>      } >>> >>> +   public String getConditionGroup() { >>> +       return conditionGroup; >>> +   } >>> + >>>      private boolean induceFieldInfo(ModelForm modelForm, String >>> defaultFieldType, ModelReader entityModelReader, DispatchContext >>> dispatchContext) { >>>          if (induceFieldInfoFromEntityField(defaultFieldType, >>> entityModelReader)) { >>>              return true; >>> @@ -810,6 +818,9 @@ public class ModelFormFieldBuilder { >>>          if (UtilValidate.isNotEmpty(builder.getTabindex())) { >>>              this.tabindex = builder.getTabindex(); >>>          } >>> +       if (UtilValidate.isNotEmpty(builder.getConditionGroup())) { >>> +           this.conditionGroup = builder.getConditionGroup(); >>> +       } >>>          this.encodeOutput = builder.getEncodeOutput(); >>>          this.position = builder.getPosition(); >>>          this.requiredField = builder.getRequiredField(); >>> @@ -1000,4 +1011,8 @@ public class ModelFormFieldBuilder { >>>          this.tabindex = tabindex; >>>          return this; >>>      } >>> +   public ModelFormFieldBuilder setConditionGroup(String >>> conditionGroup) { >>> +       this.conditionGroup = conditionGroup; >>> +       return this; >>> +   } >>>  } >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>> Mon Feb 26 09:57:36 2018 >>> @@ -774,6 +774,7 @@ public final class MacroFormRenderer imp >>>          ModelFormField modelFormField = >>> dropDownField.getModelFormField(); >>>          ModelForm modelForm = modelFormField.getModelForm(); >>>          String currentValue = modelFormField.getEntry(context); >>> +       String conditionGroup = modelFormField.getConditionGroup(); >>>          List<ModelFormField.OptionValue> allOptionValues = >>> dropDownField.getAllOptionValues(context, >>> WidgetWorker.getDelegator(context)); >>>          ModelFormField.AutoComplete autoComplete = >>> dropDownField.getAutoComplete(); >>>          String event = modelFormField.getEvent(); >>> @@ -1000,6 +1001,8 @@ public final class MacroFormRenderer imp >>>          sr.append(ignoreCase); >>>          sr.append("\" fullSearch=\""); >>>          sr.append(fullSearch); >>> +       sr.append("\" conditionGroup=\""); >>> +       sr.append(conditionGroup); >>>          sr.append("\" tabindex=\""); >>>          sr.append(tabindex); >>>          sr.append("\" />"); >>> @@ -1014,6 +1017,7 @@ public final class MacroFormRenderer imp >>>      public void renderCheckField(Appendable writer, Map<String, >>> Object> context, CheckField checkField) throws IOException { >>>          ModelFormField modelFormField = >>> checkField.getModelFormField(); >>>          String currentValue = modelFormField.getEntry(context); >>> +       String conditionGroup = modelFormField.getConditionGroup(); >>>          Boolean allChecked = checkField.isAllChecked(context); >>>          String id = modelFormField.getCurrentContainerId(context); >>>          String className = ""; >>> @@ -1051,6 +1055,8 @@ public final class MacroFormRenderer imp >>>          sr.append(alert); >>>          sr.append("\" id=\""); >>>          sr.append(id); >>> +       sr.append("\" conditionGroup=\""); >>> +       sr.append(conditionGroup); >>>          sr.append("\" allChecked="); >>>          sr.append((allChecked != null ? >>> Boolean.toString(allChecked) : "\"\"")); >>>          sr.append(" currentValue=\""); >>> @@ -1076,6 +1082,7 @@ public final class MacroFormRenderer imp >>>          ModelFormField modelFormField = >>> radioField.getModelFormField(); >>>          List<ModelFormField.OptionValue> allOptionValues = >>> radioField.getAllOptionValues(context, >>> WidgetWorker.getDelegator(context)); >>>          String currentValue = modelFormField.getEntry(context); >>> +       String conditionGroup = modelFormField.getConditionGroup(); >>>          String className = ""; >>>          String alert = "false"; >>>          String name = modelFormField.getParameterName(context); >>> @@ -1123,6 +1130,8 @@ public final class MacroFormRenderer imp >>>          if (action != null) { >>>              sr.append(action); >>>          } >>> +       sr.append("\" conditionGroup=\""); >>> +       sr.append(conditionGroup); >>>          sr.append("\" tabindex=\""); >>>          sr.append(tabindex); >>>          sr.append("\" />"); >>> @@ -1243,12 +1252,15 @@ public final class MacroFormRenderer imp >>>      public void renderHiddenField(Appendable writer, Map<String, >>> Object> context, ModelFormField modelFormField, String value) throws >>> IOException { >>>          String name = modelFormField.getParameterName(context); >>>          String action = modelFormField.getAction(context); >>> +       String conditionGroup = modelFormField.getConditionGroup(); >>>          String event = modelFormField.getEvent(); >>>          String id = modelFormField.getCurrentContainerId(context); >>>          StringWriter sr = new StringWriter(); >>>          sr.append("<@renderHiddenField "); >>>          sr.append(" name=\""); >>>          sr.append(name); >>> +       sr.append("\" conditionGroup=\""); >>> +       sr.append(conditionGroup); >>>          sr.append("\" value=\""); >>>          sr.append(value); >>>          sr.append("\" id=\""); >>> @@ -1788,6 +1800,7 @@ public final class MacroFormRenderer imp >>>      public void renderTextFindField(Appendable writer, Map<String, >>> Object> context, TextFindField textFindField) throws IOException { >>>          ModelFormField modelFormField = >>> textFindField.getModelFormField(); >>>          String defaultOption = >>> textFindField.getDefaultOption(context); >>> +       String conditionGroup = modelFormField.getConditionGroup(); >>>          String className = ""; >>>          String alert = "false"; >>>          String opEquals = ""; >>> @@ -1869,6 +1882,8 @@ public final class MacroFormRenderer imp >>>          sr.append(ignoreCase); >>>          sr.append("\" tabindex=\""); >>>          sr.append(tabindex); >>> +       sr.append("\" conditionGroup=\""); >>> +       sr.append(conditionGroup); >>>          sr.append("\" />"); >>>          executeMacro(writer, sr.toString()); >>>          this.appendTooltip(writer, context, modelFormField); >>> @@ -1882,6 +1897,7 @@ public final class MacroFormRenderer imp >>>          String opGreaterThanEquals = >>> UtilProperties.getMessage("conditionalUiLabels", >>> "greater_than_equals", locale); >>>          String opLessThan = >>> UtilProperties.getMessage("conditionalUiLabels", "less_than", locale); >>>          String opLessThanEquals = >>> UtilProperties.getMessage("conditionalUiLabels", "less_than_equals", >>> locale); >>> +       String conditionGroup = modelFormField.getConditionGroup(); >>>          String className = ""; >>>          String alert = "false"; >>>          if >>> (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) { >>> @@ -1950,6 +1966,8 @@ public final class MacroFormRenderer imp >>>          sr.append(value2); >>>          sr.append("\" defaultOptionThru=\""); >>>          sr.append(defaultOptionThru); >>> +       sr.append("\" conditionGroup=\""); >>> +       sr.append(conditionGroup); >>>          sr.append("\" tabindex=\""); >>>          sr.append(tabindex); >>>          sr.append("\" />"); >>> @@ -1968,6 +1986,7 @@ public final class MacroFormRenderer imp >>>          String opUpToDay = >>> UtilProperties.getMessage("conditionalUiLabels", "up_to_day", locale); >>>          String opUpThruDay = >>> UtilProperties.getMessage("conditionalUiLabels", "up_thru_day", >>> locale); >>>          String opIsEmpty = >>> UtilProperties.getMessage("conditionalUiLabels", "is_empty", locale); >>> +       String conditionGroup = modelFormField.getConditionGroup(); >>>          Map<String, String> uiLabelMap = >>> UtilGenerics.checkMap(context.get("uiLabelMap")); >>>          if (uiLabelMap == null) { >>>              Debug.logWarning("Could not find uiLabelMap in >>> context", module); >>> @@ -2066,6 +2085,8 @@ public final class MacroFormRenderer imp >>>          sr.append(defaultDateTimeString); >>>          sr.append("\" imgSrc=\""); >>>          sr.append(imgSrc.toString()); >>> +       sr.append("\" conditionGroup=\""); >>> +       sr.append(conditionGroup); >>>          sr.append("\" localizedIconTitle=\""); >>>          sr.append(localizedIconTitle); >>>          sr.append("\" titleStyle=\""); >>> @@ -2102,6 +2123,7 @@ public final class MacroFormRenderer imp >>>      public void renderLookupField(Appendable writer, Map<String, >>> Object> context, LookupField lookupField) throws IOException { >>>          ModelFormField modelFormField = >>> lookupField.getModelFormField(); >>>          String lookupFieldFormName = >>> lookupField.getFormName(context); >>> +       String conditionGroup = modelFormField.getConditionGroup(); >>>          String className = ""; >>>          String alert = "false"; >>>          if >>> (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) { >>> @@ -2275,6 +2297,8 @@ public final class MacroFormRenderer imp >>>          sr.append(Boolean.toString(isInitiallyCollapsed)); >>>          sr.append("\" lastViewName=\""); >>>          sr.append(lastViewName); >>> +       sr.append("\" conditionGroup=\""); >>> +       sr.append(conditionGroup); >>>          sr.append("\" tabindex=\""); >>>          sr.append(tabindex); >>>          sr.append("\" delegatorName=\""); >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>> Mon Feb 26 09:57:36 2018 >>> @@ -30,7 +30,7 @@ under the License. >>> >>>  <#macro renderDateTimeField name className alert title value size >>> maxlength id dateType shortDateInput timeDropdownParamName >>> defaultDateTimeString localizedIconTitle timeDropdown timeHourName >>> classString hour1 hour2 timeMinutesName minutes isTwelveHour >>> ampmName amSelected pmSelected compositeType formName mask="" >>> event="" action="" step="" timeValues="" tabindex="" ><@renderField >>> value /></#macro> >>> >>> -<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size firstInList currentValue >>> explicitDescription allowEmpty options fieldName otherFieldName >>> otherValue otherFieldSize dDFCurrent ajaxEnabled >>> noCurrentSelectedKey ajaxOptions frequency minChars choices >>> autoSelect partialSearch partialChars ignoreCase fullSearch tabindex> >>> +<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size firstInList currentValue >>> explicitDescription allowEmpty options fieldName otherFieldName >>> otherValue otherFieldSize dDFCurrent ajaxEnabled >>> noCurrentSelectedKey ajaxOptions frequency minChars choices >>> autoSelect partialSearch partialChars ignoreCase fullSearch >>> conditionGroup tabindex> >>>  <#if currentValue?has_content && firstInList?has_content> >>>  <@renderField explicitDescription /> >>>  <#else> >>> @@ -41,13 +41,13 @@ under the License. >>>  </#macro> >>> >>>  <#macro renderTooltip tooltip tooltipStyle></#macro> >>> -<#macro renderCheckField items className alert id allChecked >>> currentValue name event action tabindex></#macro> >>> -<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action tabindex></#macro> >>> +<#macro renderCheckField items className alert id allChecked >>> currentValue name event action conditionGroup tabindex></#macro> >>> +<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action conditionGroup >>> tabindex></#macro> >>> >>>  <#macro renderSubmitField buttonType className alert formName >>> title name event action imgSrc confirmation containerId ajaxUrl >>> tabindex></#macro> >>>  <#macro renderResetField className alert name title></#macro> >>> >>> -<#macro renderHiddenField name value id event action></#macro> >>> +<#macro renderHiddenField name conditionGroup value id event >>> action></#macro> >>>  <#macro renderIgnoredField></#macro> >>> >>>  <#macro renderFieldTitle style title id="" fieldHelpText="" >>> for=""><@renderField title />,</#macro> >>> @@ -97,15 +97,15 @@ under the License. >>> >>>  <#macro renderFormatEmptySpace> </#macro> >>> >>> -<#macro renderTextFindField name value defaultOption opEquals >>> opBeginsWith opContains opIsEmpty opNotEqual className alert size >>> maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>> tabindex><@renderField value /></#macro> >>> +<#macro renderTextFindField name value defaultOption opEquals >>> opBeginsWith opContains opIsEmpty opNotEqual className alert size >>> maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>> conditionGroup tabindex><@renderField value /></#macro> >>> >>> -<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value >>> /></#macro> >>> +<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty conditionGroup >>> tabindex><@renderField value /></#macro> >>> >>> -<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru tabindex> >>> +<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru conditionGroup tabindex> >>>  <@renderField value /> >>>  </#macro> >>> >>> -<#macro renderLookupField name formName fieldFormName className="" >>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>> readonly=false autocomplete="" descriptionFieldName="" >>> targetParameterIter="" imgSrc="" ajaxUrl="" >>> ajaxEnabled=javaScriptEnabled presentation="layer" width="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default">></#macro> >>> +<#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="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default">></#macro> >>>  <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled >>> ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle >>> ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel >>> ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl >>> commonDisplaying paginateNextStyle ajaxNextUrl nextUrl >>> paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>> paginateLastLabel paginateViewSizeLabel></#macro> >>>  <#macro renderFileField className alert name value size maxlength >>> autocomplete tabindex><@renderField value /></#macro> >>>  <#macro renderPasswordField className alert name value size >>> maxlength id autocomplete tabindex></#macro> >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>> Mon Feb 26 09:57:36 2018 >>> @@ -57,7 +57,7 @@ under the License. >>> >>>  <#macro renderDateTimeField name className alert title value size >>> maxlength step timeValues id event action dateType shortDateInput >>> timeDropdownParamName defaultDateTimeString localizedIconTitle >>> timeDropdown timeHourName classString hour1 hour2 timeMinutesName >>> minutes isTwelveHour ampmName amSelected pmSelected compositeType >>> formName mask="" event="" action="" step="" timeValues="" >>> tabindex=""><@makeBlock className value /></#macro> >>> >>> -<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size explicitDescription >>> allowEmpty options fieldName otherFieldName otherValue >>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey >>> ajaxOptions frequency minChars choices autoSelect partialSearch >>> partialChars ignoreCase fullSearch tabindex firstInList="" >>> currentValue=""> >>> +<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size explicitDescription >>> allowEmpty options fieldName otherFieldName otherValue >>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey >>> ajaxOptions frequency minChars choices autoSelect partialSearch >>> partialChars ignorease fullSearch conditionGroup tabindex >>> firstInList="" currentValue=""> >>>  <#if currentValue?has_content && firstInList?has_content> >>>  <@makeBlock "" explicitDescription /> >>>  <#else> >>> @@ -67,13 +67,13 @@ under the License. >>>  </#if> >>>  </#macro> >>> >>> -<#macro renderCheckField items className alert id allChecked >>> currentValue name event action tabindex><@makeBlock "" "" /></#macro> >>> -<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action tabindex><@makeBlock "" "" >>> /></#macro> >>> +<#macro renderCheckField items className alert id allChecked >>> currentValue name event action conditionGroup tabindex><@makeBlock >>> "" "" /></#macro> >>> +<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action conditionGroup >>> tabindex><@makeBlock "" "" /></#macro> >>> >>>  <#macro renderSubmitField buttonType className alert formName >>> title name event action imgSrc confirmation containerId ajaxUrl >>> tabindex><@makeBlock "" "" /></#macro> >>>  <#macro renderResetField className alert name title><@makeBlock "" >>> "" /></#macro> >>> >>> -<#macro renderHiddenField name value id event >>> action><!--hidden--></#macro> >>> +<#macro renderHiddenField name conditionGroup value id event >>> action><!--hidden--></#macro> >>>  <#macro renderIgnoredField><!--ignore--></#macro> >>> >>>  <#macro renderFieldTitle style title id fieldHelpText="" >>> for=""><fo:block <@getFoStyle >>> style/>>${title?default("")?replace(" ", " ")}</fo:block></#macro> >>> @@ -121,16 +121,16 @@ under the License. >>> >>>  <#macro renderFormatEmptySpace> <@makeBlock "" " " >>> /><!--space--></#macro> >>> >>> -<#macro renderTextFindField name value defaultOption opEquals >>> opBeginsWith opContains opIsEmpty opNotEqual className alert size >>> maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>> tabindex><@makeBlock className value/></#macro> >>> +<#macro renderTextFindField name value defaultOption opEquals >>> opBeginsWith opContains opIsEmpty opNotEqual className alert size >>> maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>> conditionGroup tabindex><@makeBlock className value/></#macro> >>> >>> -<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty tabindex> >>> +<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex> >>>  <@makeBlock className value /> >>>  </#macro> >>> -<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru tabindex> >>> +<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru conditionGroup tabindex> >>>  <@makeBlock className value /> >>>  </#macro> >>> >>> -<#macro renderLookupField name formName fieldFormName className="" >>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>> readonly=false autocomplete="" descriptionFieldName="" >>> targetParameterIter="" imgSrc="" ajaxUrl="" >>> ajaxEnabled=javaScriptEnabled presentation="layer" width="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default"></#macro> >>> +<#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="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default"></#macro> >>>  <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled >>> ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle >>> ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel >>> ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl >>> commonDisplaying paginateNextStyle ajaxNextUrl nextUrl >>> paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>> paginateLastLabel paginateViewSizeLabel></#macro> >>>  <#macro renderFileField className alert name value size maxlength >>> autocomplete tabindex><@makeBlock className value /></#macro> >>>  <#macro renderPasswordField className alert name value size >>> maxlength id autocomplete tabindex><@makeBlock className "" /></#macro> >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>> Mon Feb 26 09:57:36 2018 >>> @@ -207,7 +207,10 @@ under the License. >>>    </span> >>>  </#macro> >>> >>> -<#macro renderDropDownField name className alert id formName >>> otherFieldName action explicitDescription options fieldName >>> otherFieldName otherValue otherFieldSize ajaxEnabled ajaxOptions >>> frequency minChars choices autoSelect partialSearch partialChars >>> ignoreCase fullSearch tabindex="" multiple="" event="" size="" >>> firstInList="" currentValue="" allowEmpty="" dDFCurrent="" >>> noCurrentSelectedKey=""> >>> +<#macro renderDropDownField name className alert id formName >>> otherFieldName 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=""> >>> + <#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 otherFieldSize >>> gt 0> >>> onchange="process_choice(this,document.${formName}.${otherFieldName})"</#if><#if >>> event?has_content> ${event}="${action}"</#if><#if size?has_content> >>> size="${size}"</#if><#if tabindex?has_content> >>> tabindex="${tabindex}"</#if><#rt/>> >>>        <#if firstInList?has_content && currentValue?has_content && >>> !multiple?has_content> >>> @@ -249,7 +252,10 @@ under the License. >>>    </#if> >>>  </#macro> >>> >>> -<#macro renderCheckField items className alert id name action >>> allChecked="" currentValue="" event="" tabindex=""> >>> +<#macro renderCheckField items className alert id name action >>> conditionGroup allChecked="" currentValue="" event="" tabindex=""> >>> + <#if conditionGroup?has_content> >>> +   <input type="hidden" name="${name}_grp" >>> value="${conditionGroup}"/> >>> + </#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/> >>> @@ -261,7 +267,10 @@ under the License. >>>    </#list> >>>  </#macro> >>> >>> -<#macro renderRadioField items className alert name action >>> currentValue="" noCurrentSelectedKey="" event="" tabindex=""> >>> +<#macro renderRadioField items className alert name action >>> conditionGroup currentValue="" noCurrentSelectedKey="" event="" >>> tabindex=""> >>> + <#if conditionGroup?has_content> >>> +   <input type="hidden" name="${name}_grp" >>> value="${conditionGroup}"/> >>> + </#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/> >>> @@ -293,7 +302,10 @@ under the License. >>>    <input type="reset" <@renderClass className alert /> >>> name="${name}"<#if title?has_content> value="${title}"</#if>/> >>>  </#macro> >>> >>> -<#macro renderHiddenField name value="" id="" event="" action=""> >>> +<#macro renderHiddenField name conditionGroup value="" id="" >>> event="" action=""> >>> + <#if conditionGroup?has_content> >>> +   <input type="hidden" name="${name}_grp" >>> value="${conditionGroup}"/> >>> + </#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>/> >>>  </#macro> >>> >>> @@ -449,7 +461,10 @@ under the License. >>> >>>  <#macro renderFormatEmptySpace> </#macro> >>> >>> -<#macro renderTextFindField name defaultOption opBeginsWith >>> opContains opIsEmpty opNotEqual className alert hideIgnoreCase >>> ignCase ignoreCase 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=""> >>> + <#if conditionGroup?has_content> >>> +   <input type="hidden" name="${name}_grp" >>> value="${conditionGroup}"/> >>> + </#if> >>>    <#if opEquals?has_content> >>>      <select <#if name?has_content>name="${name}_op"</#if> >>> class="selectBox"><#rt/> >>>        <option value="equals"<#if defaultOption=="equals"> >>> selected="selected"</#if>>${opEquals}</option><#rt/> >>> @@ -472,7 +487,10 @@ under the License. >>>    </#if> >>>  </#macro> >>> >>> -<#macro renderDateFindField className alert name dateType formName >>> value defaultDateTimeString imgSrc localizedIconTitle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty localizedInputTitle="" value2="" >>> size="" maxlength="" titleStyle="" tabindex=""> >>> +<#macro renderDateFindField className alert 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=""> >>> + <#if conditionGroup?has_content> >>> +   <input type="hidden" name="${name}_grp" >>> value="${conditionGroup}"/> >>> + </#if> >>>    <span class="view-calendar"> >>>      <input id="${name?html}_fld0_value" type="text" <@renderClass >>> className alert /><#if name?has_content> >>> name="${name?html}_fld0_value"</#if><#if >>> localizedInputTitle?has_content> >>> title="${localizedInputTitle}"</#if><#if value?has_content> >>> value="${value}"</#if><#if size?has_content> >>> size="${size}"</#if><#if maxlength?has_content> >>> maxlength="${maxlength}"</#if>/><#if tabindex?has_content> >>> tabindex="${tabindex}"</#if><#rt/> >>>      <#if dateType != "time"> >>> @@ -550,7 +568,10 @@ under the License. >>>    </span> >>>  </#macro> >>> >>> -<#macro renderRangeFindField className alert value >>> defaultOptionFrom opEquals opGreaterThan opGreaterThanEquals >>> opLessThan opLessThanEquals defaultOptionThru 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=""> >>> + <#if conditionGroup?has_content> >>> +   <input type="hidden" name="${name}_grp" >>> value="${conditionGroup}"/> >>> + </#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/> >>>    <#if titleStyle?has_content> >>>      <span class="${titleStyle}" ><#rt/> >>> @@ -612,7 +633,7 @@ Parameter: lastViewName, String, optiona >>>  Parameter: tabindex, String, optional - HTML tabindex number. >>>  Parameter: delegatorName, String, optional - name of the delegator >>> in context. >>>  --> >>> -<#macro renderLookupField name formName fieldFormName 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="" >>> lastViewName="main" tabindex="" delegatorName="default"> >>> +<#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="" >>> lastViewName="main" tabindex="" delegatorName="default"> >>>    <#if >>> Static["org.apache.ofbiz.widget.model.ModelWidget"].widgetBoundaryCommentsEnabled(context)><#-- >>> context is always null here, but this is handled in >>> widgetBoundaryCommentsEnabled --> >>>    <!-- @renderLookupField --> >>>    </#if> >>> @@ -629,6 +650,9 @@ Parameter: delegatorName, String, option >>>    <#if ajaxEnabled?has_content && ajaxEnabled && >>> (presentation?has_content && "window" == presentation)> >>>      <#local ajaxUrl = ajaxUrl + "&_LAST_VIEW_NAME_=" + >>> lastViewName /> >>>    </#if> >>> + <#if conditionGroup?has_content> >>> +   <input type="hidden" name="${name}_grp" >>> value="${conditionGroup}"/> >>> + </#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/> >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>> Mon Feb 26 09:57:36 2018 >>> @@ -30,7 +30,7 @@ under the License. >>> >>>  <#macro renderDateTimeField name className alert title value size >>> maxlength id dateType shortDateInput timeDropdownParamName >>> defaultDateTimeString localizedIconTitle timeDropdown timeHourName >>> classString hour1 hour2 timeMinutesName minutes isTwelveHour >>> ampmName amSelected pmSelected compositeType formName mask="" >>> event="" action="" step="" timeValues="" tabindex="" ><@renderField >>> value /></#macro> >>> >>> -<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size firstInList currentValue >>> explicitDescription allowEmpty options fieldName otherFieldName >>> otherValue otherFieldSize dDFCurrent ajaxEnabled >>> noCurrentSelectedKey ajaxOptions frequency minChars choices >>> autoSelect partialSearch partialChars ignoreCase fullSearch tabindex> >>> +<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size firstInList currentValue >>> explicitDescription allowEmpty options fieldName otherFieldName >>> otherValue otherFieldSize dDFCurrent ajaxEnabled >>> noCurrentSelectedKey ajaxOptions frequency minChars choices >>> autoSelect partialSearch partialChars ignoreCase fullSearch >>> conditionGroup tabindex> >>>  <#if currentValue?has_content && firstInList?has_content> >>>  <@renderField explicitDescription /> >>>  <#else> >>> @@ -41,13 +41,13 @@ under the License. >>>  </#macro> >>> >>>  <#macro renderTooltip tooltip tooltipStyle></#macro> >>> -<#macro renderCheckField items className alert id allChecked >>> currentValue name event action tabindex></#macro> >>> -<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action tabindex></#macro> >>> +<#macro renderCheckField items className alert id allChecked >>> currentValue name event action conditionGroup tabindex></#macro> >>> +<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action conditionGroup >>> tabindex></#macro> >>> >>>  <#macro renderSubmitField buttonType className alert formName >>> title name event action imgSrc confirmation containerId ajaxUrl >>> tabindex></#macro> >>>  <#macro renderResetField className alert name title></#macro> >>> >>> -<#macro renderHiddenField name value id event action></#macro> >>> +<#macro renderHiddenField name conditionGroup value id event >>> action></#macro> >>>  <#macro renderIgnoredField></#macro> >>> >>>  <#macro renderFieldTitle style title id fieldHelpText="" >>> for=""><@renderField title /></#macro> >>> @@ -97,15 +97,15 @@ under the License. >>> >>>  <#macro renderFormatEmptySpace> </#macro> >>> >>> -<#macro renderTextFindField name value defaultOption opEquals >>> opBeginsWith opContains opIsEmpty opNotEqual className alert size >>> maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>> tabindex><@renderField value /></#macro> >>> +<#macro renderTextFindField name value defaultOption opEquals >>> opBeginsWith opContains opIsEmpty opNotEqual className alert size >>> maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>> conditionGroup tabindex><@renderField value /></#macro> >>> >>> -<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value >>> /></#macro> >>> +<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty conditionGroup >>> tabindex><@renderField value /></#macro> >>> >>> -<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru tabindex> >>> +<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru conditionGroup tabindex> >>>  <@renderField value /> >>>  </#macro> >>> >>> -<#macro renderLookupField name formName fieldFormName className="" >>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>> readonly=false autocomplete="" descriptionFieldName="" >>> targetParameterIter="" imgSrc="" ajaxUrl="" >>> ajaxEnabled=javaScriptEnabled presentation="layer" width="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default">><@renderField value /></#macro> >>> +<#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="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default">><@renderField value /></#macro> >>>  <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled >>> ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle >>> ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel >>> ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl >>> commonDisplaying paginateNextStyle ajaxNextUrl nextUrl >>> paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>> paginateLastLabel paginateViewSizeLabel></#macro> >>>  <#macro renderFileField className alert name value size maxlength >>> autocomplete tabindex><@renderField value /></#macro> >>>  <#macro renderPasswordField className alert name value size >>> maxlength id autocomplete tabindex></#macro> >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>> Mon Feb 26 09:57:36 2018 >>> @@ -40,17 +40,17 @@ under the License. >>>  <#else><@renderItemField value "dtf" className/></#if> >>>  </#macro> >>> >>> -<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size firstInList currentValue >>> explicitDescription allowEmpty options fieldName otherFieldName >>> otherValue otherFieldSize dDFCurrent ajaxEnabled >>> noCurrentSelectedKey ajaxOptions frequency minChars choices >>> autoSelect partialSearch partialChars ignoreCase fullSearch >>> tabindex><@renderItemField explicitDescription "txf" >>> className/></#macro> >>> +<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size firstInList currentValue >>> explicitDescription allowEmpty options fieldName otherFieldName >>> otherValue otherFieldSize dDFCurrent ajaxEnabled >>> noCurrentSelectedKey ajaxOptions frequency minChars choices >>> autoSelect partialSearch partialChars ignoreCase fullSearch >>> conditionGroup tabindex><@renderItemField explicitDescription "txf" >>> className/></#macro> >>> >>> -<#macro renderCheckField items className alert id allChecked >>> currentValue name event action tabindex><@renderItemField >>> currentValue "txf" className/></#macro> >>> +<#macro renderCheckField items className alert id allChecked >>> currentValue name event action conditionGroup >>> tabindex><@renderItemField currentValue "txf" className/></#macro> >>> >>> -<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action tabindex><@renderItemField >>> currentValue "txf" className/></#macro> >>> +<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action conditionGroup >>> tabindex><@renderItemField currentValue "txf" className/></#macro> >>> >>>  <#macro renderSubmitField buttonType className alert formName >>> title name event action imgSrc confirmation containerId ajaxUrl >>> tabindex></#macro> >>> >>>  <#macro renderResetField className alert name title></#macro> >>> >>> -<#macro renderHiddenField name value id event action></#macro> >>> +<#macro renderHiddenField name conditionGroup value id event >>> action></#macro> >>> >>>  <#macro renderIgnoredField></#macro> >>> >>> @@ -112,13 +112,13 @@ under the License. >>> >>>  <#macro renderFormatEmptySpace><@renderItemField "" "txf"/></#macro> >>> >>> -<#macro renderTextFindField name value defaultOption opEquals >>> opBeginsWith opContains opIsEmpty opNotEqual className alert size >>> maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>> tabindex></#macro> >>> +<#macro renderTextFindField name value defaultOption opEquals >>> opBeginsWith opContains opIsEmpty opNotEqual className alert size >>> maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>> conditionGroup tabindex></#macro> >>> >>> -<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty tabindex></#macro> >>> +<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> >>> >>> -<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru tabindex></#macro> >>> +<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru conditionGroup tabindex></#macro> >>> >>> -<#macro renderLookupField name formName fieldFormName className="" >>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>> readonly=false autocomplete="" descriptionFieldName="" >>> targetParameterIter="" imgSrc="" ajaxUrl="" >>> ajaxEnabled=javaScriptEnabled presentation="layer" width="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default">><@renderItemField value "txf" >>> className/></#macro> >>> +<#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="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default">><@renderItemField value "txf" >>> className/></#macro> >>> >>>  <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled >>> ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle >>> ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel >>> ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl >>> commonDisplaying paginateNextStyle ajaxNextUrl nextUrl >>> paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>> paginateLastLabel paginateViewSizeLabel></#macro> >>> >>> >>> Modified: >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>> ============================================================================== >>> >>> --- >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>> (original) >>> +++ >>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>> Mon Feb 26 09:57:36 2018 >>> @@ -46,16 +46,16 @@ under the License. >>> >>>  <#macro renderDateTimeField name className alert title value size >>> maxlength id dateType shortDateInput timeDropdownParamName >>> defaultDateTimeString localizedIconTitle timeDropdown timeHourName >>> classString hour1 hour2 timeMinutesName minutes isTwelveHour >>> ampmName amSelected pmSelected compositeType formName mask="" >>> event="" action="" step="" timeValues="" tabindex="" ><@renderField >>> value/></#macro> >>> >>> -<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size firstInList currentValue >>> explicitDescription allowEmpty options fieldName otherFieldName >>> otherValue otherFieldSize dDFCurrent ajaxEnabled >>> noCurrentSelectedKey ajaxOptions frequency minChars choices >>> autoSelect partialSearch partialChars ignoreCase fullSearch tabindex> >>> +<#macro renderDropDownField name className alert id multiple >>> formName otherFieldName event action size firstInList currentValue >>> explicitDescription allowEmpty options fieldName otherFieldName >>> otherValue otherFieldSize dDFCurrent ajaxEnabled >>> noCurrentSelectedKey ajaxOptions frequency minChars choices >>> autoSelect partialSearch partialChars ignoreCase fullSearch >>> conditionGroup tabindex> >>>  </#macro> >>> >>> -<#macro renderCheckField items className alert id allChecked >>> currentValue name event action tabindex></#macro> >>> -<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action tabindex></#macro> >>> +<#macro renderCheckField items className alert id allChecked >>> currentValue name event action conditionGroup tabindex></#macro> >>> +<#macro renderRadioField items className alert currentValue >>> noCurrentSelectedKey name event action conditionGroup >>> tabindex></#macro> >>> >>>  <#macro renderSubmitField buttonType className alert formName >>> title name event action imgSrc confirmation containerId ajaxUrl >>> tabindex></#macro> >>>  <#macro renderResetField className alert name title></#macro> >>> >>> -<#macro renderHiddenField name value id event action></#macro> >>> +<#macro renderHiddenField name conditionGroup value id event >>> action></#macro> >>>  <#macro renderIgnoredField></#macro> >>> >>>  <#macro renderFieldTitle style title id fieldHelpText="" >>> for=""></#macro> >>> @@ -92,12 +92,12 @@ under the License. >>> >>>  <#macro renderTextFindField name value defaultOption opEquals >>> opBeginsWith opContains opIsEmpty opNotEqual className alert size >>> maxlength autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>> tabindex><@renderField value/></#macro> >>> >>> -<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty tabindex></#macro> >>> +<#macro renderDateFindField className alert name >>> localizedInputTitle value value2 size maxlength dateType formName >>> defaultDateTimeString imgSrc localizedIconTitle titleStyle >>> defaultOptionFrom defaultOptionThru opEquals opSameDay >>> opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> >>> >>> -<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru tabindex> >>> +<#macro renderRangeFindField className alert name value size >>> maxlength autocomplete titleStyle defaultOptionFrom opEquals >>> opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals value2 >>> defaultOptionThru conditionGroup tabindex> >>>  </#macro> >>> >>> -<#macro renderLookupField name formName fieldFormName className="" >>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>> readonly=false autocomplete="" descriptionFieldName="" >>> targetParameterIter="" imgSrc="" ajaxUrl="" >>> ajaxEnabled=javaScriptEnabled presentation="layer" width="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default">></#macro> >>> +<#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="" >>> height="" position="" fadeBackground="true" clearText="" >>> showDescription="" initiallyCollapsed="" lastViewName="main" >>> tabindex="" delegatorName="default">></#macro> >>>  <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled >>> ajaxFirstUrl firstUrl paginateFirstLabel paginatePreviousStyle >>> ajaxPreviousUrl previousUrl paginatePreviousLabel pageLabel >>> ajaxSelectUrl selectUrl ajaxSelectSizeUrl selectSizeUrl >>> commonDisplaying paginateNextStyle ajaxNextUrl nextUrl >>> paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>> paginateLastLabel paginateViewSizeLabel></#macro> >>>  <#macro renderFileField className alert name value size maxlength >>> autocomplete tabindex></#macro> >>>  <#macro renderPasswordField className alert name value size >>> maxlength id autocomplete tabindex></#macro> >>> >>> > |
I merged the code at the moment I was compiling, I think this is why
this bug occured to me. It seems to be working perfectly well now. Sorry, false alarm. On Mon, Feb 26, 2018 at 5:06 PM, gil portenseigne <[hidden email]> wrote: > Ah, are you sure to have recompiled Java ? I cannot reproduce locally.. > > Gil > > > > On 26/02/2018 15:00, gil portenseigne wrote: >> >> Hello Taher, >> >> Oww, i might have missed something :( , i'll look at it very soon ! >> >> Gil >> >> >> On 26/02/2018 14:52, Taher Alkhateeb wrote: >>> >>> Hi Gil, >>> >>> Great work so far. However, I seem to be facing a bug. I list the >>> error below that shows in almost every form: >>> >>> When calling macro "renderHiddenField", required parameter >>> "conditionGroup" (parameter #2) was not specified. ---- Tip: If the >>> omission was deliberate, you may consider making the parameter >>> optional in the macro by specifying a default value for it, like >>> <#macro macroName paramName=defaultExpr>) ---- ---- FTL stack trace >>> ("~" means nesting-related): - Failed at: #macro renderHiddenField >>> name conditi... [in template >>> "component://common-theme/template/macro/HtmlFormMacroLibrary.ftl" in >>> macro "renderHiddenField" at line 305, column 1] - Reached through: >>> @renderHiddenField name="realestateCi... [in template >>> "-222c6da2:161d256a91a:-7356" at line 1, column 1] >>> >>> On Mon, Feb 26, 2018 at 12:57 PM, <[hidden email]> wrote: >>>> >>>> Author: pgil >>>> Date: Mon Feb 26 09:57:36 2018 >>>> New Revision: 1825350 >>>> >>>> URL: http://svn.apache.org/viewvc?rev=1825350&view=rev >>>> Log: >>>> Implemented: Add the ability in performFind service to set OR search >>>> criteria (OFBIZ-10195) >>>> >>>> This improvement add a way to specify a condition-group attribute on >>>> search fields, for performFind service usage. >>>> The same group conditions are gathered with AND operator, and each group >>>> is added with a OR >>>> The resulting condition is added to the other with AND operator. >>>> Thanks Taher for your reviews and ideas >>>> >>>> Modified: >>>> >>>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>>> ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>>> >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>>> >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>>> >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>>> >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>>> >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>>> >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>>> >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>>> >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>>> >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -218,11 +218,19 @@ public class FindServices { >>>> Set<String> processed = new LinkedHashSet<>(); >>>> Set<String> keys = new LinkedHashSet<>(); >>>> Map<String, ModelField> fieldMap = new LinkedHashMap<>(); >>>> + /** >>>> + * When inputFields contains several xxxx_grp, yyyy_grp ... >>>> values, >>>> + * Corresponding conditions will grouped by an {@link >>>> EntityOperator.AND} then all added to final >>>> + * condition grouped by an {@link EntityOperator.OR} >>>> + * That will allow union of search criteria, instead of default >>>> intersection. >>>> + */ >>>> + Map<String, List<EntityCondition>> savedGroups = new >>>> LinkedHashMap(); >>>> for (ModelField modelField : fieldList) { >>>> fieldMap.put(modelField.getName(), modelField); >>>> } >>>> List<EntityCondition> result = new LinkedList<>(); >>>> for (Map.Entry<String, ? extends Object> entry : >>>> parameters.entrySet()) { >>>> + String currentGroup = null; >>>> String parameterName = entry.getKey(); >>>> if (processed.contains(parameterName)) { >>>> continue; >>>> @@ -237,7 +245,15 @@ public class FindServices { >>>> } else if (parameterName.endsWith("_value")) { >>>> fieldName = parameterName.substring(0, >>>> parameterName.length() - 6); >>>> } >>>> - String key = fieldName.concat("_ic"); >>>> + >>>> + String key = fieldName.concat("_grp"); >>>> + if (parameters.containsKey(key)) { >>>> + if (parameters.containsKey(key)) { >>>> + keys.add(key); >>>> + } >>>> + currentGroup = (String) parameters.get(key); >>>> + } >>>> + key = fieldName.concat("_ic"); >>>> if (parameters.containsKey(key)) { >>>> keys.add(key); >>>> ignoreCase = "Y".equals(parameters.get(key)); >>>> @@ -272,11 +288,28 @@ public class FindServices { >>>> if (ObjectType.isEmpty(fieldValue) && >>>> !"empty".equals(operation)) { >>>> continue; >>>> } >>>> - result.add(createSingleCondition(modelField, operation, >>>> fieldValue, ignoreCase, delegator, context)); >>>> + if (UtilValidate.isNotEmpty(currentGroup)){ >>>> + List<EntityCondition> groupedConditions = new >>>> LinkedList<>(); >>>> + if(savedGroups.get(currentGroup) != null) { >>>> + groupedConditions.addAll(savedGroups.get(currentGroup)); >>>> + } >>>> + groupedConditions.add(createSingleCondition(modelField, operation, >>>> fieldValue, ignoreCase, delegator, context)); >>>> + savedGroups.put(currentGroup, groupedConditions); >>>> + } else { >>>> + result.add(createSingleCondition(modelField, operation, >>>> fieldValue, ignoreCase, delegator, context)); >>>> + } >>>> + >>>> for (String mapKey : keys) { >>>> queryStringMap.put(mapKey, parameters.get(mapKey)); >>>> } >>>> } >>>> + //Add OR-grouped conditions >>>> + List<EntityCondition> orConditions = new LinkedList<>(); >>>> + for (String groupedConditions : savedGroups.keySet()) { >>>> + >>>> orConditions.add(EntityCondition.makeCondition(savedGroups.get(groupedConditions))); >>>> + } >>>> + if (orConditions.size() > 0) >>>> result.add(EntityCondition.makeCondition(orConditions, EntityOperator.OR)); >>>> + >>>> return result; >>>> } >>>> >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>>> (original) >>>> +++ ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd Mon >>>> Feb 26 09:57:36 2018 >>>> @@ -925,6 +925,16 @@ under the License. >>>> </xs:documentation> >>>> </xs:annotation> >>>> </xs:attribute> >>>> + <xs:attribute type="xs:string" name="condition-group"> >>>> + <xs:annotation> >>>> + <xs:documentation> >>>> + The condition-group regroup search criterias >>>> together. >>>> + Each group member will be gathered with AND >>>> operator >>>> + Every defined groups will be joined each other >>>> with OR operator >>>> + Any ungrouped condition will be added with AND >>>> operator >>>> + </xs:documentation> >>>> + </xs:annotation> >>>> + </xs:attribute> >>>> </xs:complexType> >>>> </xs:element> >>>> >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -144,6 +144,7 @@ public class ModelFormField { >>>> private final String widgetStyle; >>>> private final String parentFormName; >>>> private final String tabindex; >>>> + private final String conditionGroup; >>>> >>>> private ModelFormField(ModelFormFieldBuilder builder) { >>>> this.action = builder.getAction(); >>>> @@ -197,6 +198,7 @@ public class ModelFormField { >>>> this.widgetStyle = builder.getWidgetStyle(); >>>> this.parentFormName = builder.getParentFormName(); >>>> this.tabindex = builder.getTabindex(); >>>> + this.conditionGroup = builder.getConditionGroup(); >>>> } >>>> >>>> public FlexibleStringExpander getAction() { >>>> @@ -448,6 +450,10 @@ public class ModelFormField { >>>> return tabindex; >>>> } >>>> >>>> + public String getConditionGroup() { >>>> + return conditionGroup; >>>> + } >>>> + >>>> public Map<String, ? extends Object> getMap(Map<String, ? extends >>>> Object> context) { >>>> if (UtilValidate.isEmpty(this.mapAcsr)) { >>>> return this.modelForm.getDefaultMap(context); >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -111,6 +111,7 @@ public class ModelFormFieldBuilder { >>>> private String widgetStyle = ""; >>>> private String parentFormName = ""; >>>> private String tabindex = ""; >>>> + private String conditionGroup = ""; >>>> >>>> public ModelFormFieldBuilder() { >>>> } >>>> @@ -162,6 +163,7 @@ public class ModelFormFieldBuilder { >>>> this.widgetStyle = fieldElement.getAttribute("widget-style"); >>>> this.parentFormName = fieldElement.getAttribute("form-name"); >>>> this.tabindex = fieldElement.getAttribute("tabindex"); >>>> + this.conditionGroup = >>>> fieldElement.getAttribute("condition-group"); >>>> Element childElement = null; >>>> List<? extends Element> subElements = >>>> UtilXml.childElementList(fieldElement); >>>> for (Element subElement : subElements) { >>>> @@ -277,6 +279,7 @@ public class ModelFormFieldBuilder { >>>> this.widgetStyle = modelFormField.getWidgetStyle(); >>>> this.parentFormName = modelFormField.getParentFormName(); >>>> this.tabindex = modelFormField.getTabindex(); >>>> + this.conditionGroup = modelFormField.getConditionGroup(); >>>> } >>>> >>>> public ModelFormFieldBuilder(ModelFormFieldBuilder builder) { >>>> @@ -318,6 +321,7 @@ public class ModelFormFieldBuilder { >>>> this.widgetStyle = builder.getWidgetStyle(); >>>> this.parentFormName = builder.getParentFormName(); >>>> this.tabindex = builder.getTabindex(); >>>> + this.conditionGroup = builder.getConditionGroup(); >>>> } >>>> >>>> public ModelFormFieldBuilder addOnChangeUpdateArea(UpdateArea >>>> onChangeUpdateArea) { >>>> @@ -494,6 +498,10 @@ public class ModelFormFieldBuilder { >>>> return tabindex; >>>> } >>>> >>>> + public String getConditionGroup() { >>>> + return conditionGroup; >>>> + } >>>> + >>>> private boolean induceFieldInfo(ModelForm modelForm, String >>>> defaultFieldType, ModelReader entityModelReader, DispatchContext >>>> dispatchContext) { >>>> if (induceFieldInfoFromEntityField(defaultFieldType, >>>> entityModelReader)) { >>>> return true; >>>> @@ -810,6 +818,9 @@ public class ModelFormFieldBuilder { >>>> if (UtilValidate.isNotEmpty(builder.getTabindex())) { >>>> this.tabindex = builder.getTabindex(); >>>> } >>>> + if (UtilValidate.isNotEmpty(builder.getConditionGroup())) { >>>> + this.conditionGroup = builder.getConditionGroup(); >>>> + } >>>> this.encodeOutput = builder.getEncodeOutput(); >>>> this.position = builder.getPosition(); >>>> this.requiredField = builder.getRequiredField(); >>>> @@ -1000,4 +1011,8 @@ public class ModelFormFieldBuilder { >>>> this.tabindex = tabindex; >>>> return this; >>>> } >>>> + public ModelFormFieldBuilder setConditionGroup(String >>>> conditionGroup) { >>>> + this.conditionGroup = conditionGroup; >>>> + return this; >>>> + } >>>> } >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -774,6 +774,7 @@ public final class MacroFormRenderer imp >>>> ModelFormField modelFormField = >>>> dropDownField.getModelFormField(); >>>> ModelForm modelForm = modelFormField.getModelForm(); >>>> String currentValue = modelFormField.getEntry(context); >>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>> List<ModelFormField.OptionValue> allOptionValues = >>>> dropDownField.getAllOptionValues(context, >>>> WidgetWorker.getDelegator(context)); >>>> ModelFormField.AutoComplete autoComplete = >>>> dropDownField.getAutoComplete(); >>>> String event = modelFormField.getEvent(); >>>> @@ -1000,6 +1001,8 @@ public final class MacroFormRenderer imp >>>> sr.append(ignoreCase); >>>> sr.append("\" fullSearch=\""); >>>> sr.append(fullSearch); >>>> + sr.append("\" conditionGroup=\""); >>>> + sr.append(conditionGroup); >>>> sr.append("\" tabindex=\""); >>>> sr.append(tabindex); >>>> sr.append("\" />"); >>>> @@ -1014,6 +1017,7 @@ public final class MacroFormRenderer imp >>>> public void renderCheckField(Appendable writer, Map<String, >>>> Object> context, CheckField checkField) throws IOException { >>>> ModelFormField modelFormField = >>>> checkField.getModelFormField(); >>>> String currentValue = modelFormField.getEntry(context); >>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>> Boolean allChecked = checkField.isAllChecked(context); >>>> String id = modelFormField.getCurrentContainerId(context); >>>> String className = ""; >>>> @@ -1051,6 +1055,8 @@ public final class MacroFormRenderer imp >>>> sr.append(alert); >>>> sr.append("\" id=\""); >>>> sr.append(id); >>>> + sr.append("\" conditionGroup=\""); >>>> + sr.append(conditionGroup); >>>> sr.append("\" allChecked="); >>>> sr.append((allChecked != null ? Boolean.toString(allChecked) : >>>> "\"\"")); >>>> sr.append(" currentValue=\""); >>>> @@ -1076,6 +1082,7 @@ public final class MacroFormRenderer imp >>>> ModelFormField modelFormField = >>>> radioField.getModelFormField(); >>>> List<ModelFormField.OptionValue> allOptionValues = >>>> radioField.getAllOptionValues(context, WidgetWorker.getDelegator(context)); >>>> String currentValue = modelFormField.getEntry(context); >>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>> String className = ""; >>>> String alert = "false"; >>>> String name = modelFormField.getParameterName(context); >>>> @@ -1123,6 +1130,8 @@ public final class MacroFormRenderer imp >>>> if (action != null) { >>>> sr.append(action); >>>> } >>>> + sr.append("\" conditionGroup=\""); >>>> + sr.append(conditionGroup); >>>> sr.append("\" tabindex=\""); >>>> sr.append(tabindex); >>>> sr.append("\" />"); >>>> @@ -1243,12 +1252,15 @@ public final class MacroFormRenderer imp >>>> public void renderHiddenField(Appendable writer, Map<String, >>>> Object> context, ModelFormField modelFormField, String value) throws >>>> IOException { >>>> String name = modelFormField.getParameterName(context); >>>> String action = modelFormField.getAction(context); >>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>> String event = modelFormField.getEvent(); >>>> String id = modelFormField.getCurrentContainerId(context); >>>> StringWriter sr = new StringWriter(); >>>> sr.append("<@renderHiddenField "); >>>> sr.append(" name=\""); >>>> sr.append(name); >>>> + sr.append("\" conditionGroup=\""); >>>> + sr.append(conditionGroup); >>>> sr.append("\" value=\""); >>>> sr.append(value); >>>> sr.append("\" id=\""); >>>> @@ -1788,6 +1800,7 @@ public final class MacroFormRenderer imp >>>> public void renderTextFindField(Appendable writer, Map<String, >>>> Object> context, TextFindField textFindField) throws IOException { >>>> ModelFormField modelFormField = >>>> textFindField.getModelFormField(); >>>> String defaultOption = >>>> textFindField.getDefaultOption(context); >>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>> String className = ""; >>>> String alert = "false"; >>>> String opEquals = ""; >>>> @@ -1869,6 +1882,8 @@ public final class MacroFormRenderer imp >>>> sr.append(ignoreCase); >>>> sr.append("\" tabindex=\""); >>>> sr.append(tabindex); >>>> + sr.append("\" conditionGroup=\""); >>>> + sr.append(conditionGroup); >>>> sr.append("\" />"); >>>> executeMacro(writer, sr.toString()); >>>> this.appendTooltip(writer, context, modelFormField); >>>> @@ -1882,6 +1897,7 @@ public final class MacroFormRenderer imp >>>> String opGreaterThanEquals = >>>> UtilProperties.getMessage("conditionalUiLabels", "greater_than_equals", >>>> locale); >>>> String opLessThan = >>>> UtilProperties.getMessage("conditionalUiLabels", "less_than", locale); >>>> String opLessThanEquals = >>>> UtilProperties.getMessage("conditionalUiLabels", "less_than_equals", >>>> locale); >>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>> String className = ""; >>>> String alert = "false"; >>>> if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) >>>> { >>>> @@ -1950,6 +1966,8 @@ public final class MacroFormRenderer imp >>>> sr.append(value2); >>>> sr.append("\" defaultOptionThru=\""); >>>> sr.append(defaultOptionThru); >>>> + sr.append("\" conditionGroup=\""); >>>> + sr.append(conditionGroup); >>>> sr.append("\" tabindex=\""); >>>> sr.append(tabindex); >>>> sr.append("\" />"); >>>> @@ -1968,6 +1986,7 @@ public final class MacroFormRenderer imp >>>> String opUpToDay = >>>> UtilProperties.getMessage("conditionalUiLabels", "up_to_day", locale); >>>> String opUpThruDay = >>>> UtilProperties.getMessage("conditionalUiLabels", "up_thru_day", locale); >>>> String opIsEmpty = >>>> UtilProperties.getMessage("conditionalUiLabels", "is_empty", locale); >>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>> Map<String, String> uiLabelMap = >>>> UtilGenerics.checkMap(context.get("uiLabelMap")); >>>> if (uiLabelMap == null) { >>>> Debug.logWarning("Could not find uiLabelMap in context", >>>> module); >>>> @@ -2066,6 +2085,8 @@ public final class MacroFormRenderer imp >>>> sr.append(defaultDateTimeString); >>>> sr.append("\" imgSrc=\""); >>>> sr.append(imgSrc.toString()); >>>> + sr.append("\" conditionGroup=\""); >>>> + sr.append(conditionGroup); >>>> sr.append("\" localizedIconTitle=\""); >>>> sr.append(localizedIconTitle); >>>> sr.append("\" titleStyle=\""); >>>> @@ -2102,6 +2123,7 @@ public final class MacroFormRenderer imp >>>> public void renderLookupField(Appendable writer, Map<String, >>>> Object> context, LookupField lookupField) throws IOException { >>>> ModelFormField modelFormField = >>>> lookupField.getModelFormField(); >>>> String lookupFieldFormName = lookupField.getFormName(context); >>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>> String className = ""; >>>> String alert = "false"; >>>> if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) >>>> { >>>> @@ -2275,6 +2297,8 @@ public final class MacroFormRenderer imp >>>> sr.append(Boolean.toString(isInitiallyCollapsed)); >>>> sr.append("\" lastViewName=\""); >>>> sr.append(lastViewName); >>>> + sr.append("\" conditionGroup=\""); >>>> + sr.append(conditionGroup); >>>> sr.append("\" tabindex=\""); >>>> sr.append(tabindex); >>>> sr.append("\" delegatorName=\""); >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -30,7 +30,7 @@ under the License. >>>> >>>> <#macro renderDateTimeField name className alert title value size >>>> maxlength id dateType shortDateInput timeDropdownParamName >>>> defaultDateTimeString localizedIconTitle timeDropdown timeHourName >>>> classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName >>>> amSelected pmSelected compositeType formName mask="" event="" action="" >>>> step="" timeValues="" tabindex="" ><@renderField value /></#macro> >>>> >>>> -<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size firstInList currentValue >>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>> fullSearch tabindex> >>>> +<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size firstInList currentValue >>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>> fullSearch conditionGroup tabindex> >>>> <#if currentValue?has_content && firstInList?has_content> >>>> <@renderField explicitDescription /> >>>> <#else> >>>> @@ -41,13 +41,13 @@ under the License. >>>> </#macro> >>>> >>>> <#macro renderTooltip tooltip tooltipStyle></#macro> >>>> -<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action tabindex></#macro> >>>> -<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action tabindex></#macro> >>>> +<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action conditionGroup tabindex></#macro> >>>> +<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action conditionGroup tabindex></#macro> >>>> >>>> <#macro renderSubmitField buttonType className alert formName title >>>> name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >>>> <#macro renderResetField className alert name title></#macro> >>>> >>>> -<#macro renderHiddenField name value id event action></#macro> >>>> +<#macro renderHiddenField name conditionGroup value id event >>>> action></#macro> >>>> <#macro renderIgnoredField></#macro> >>>> >>>> <#macro renderFieldTitle style title id="" fieldHelpText="" >>>> for=""><@renderField title />,</#macro> >>>> @@ -97,15 +97,15 @@ under the License. >>>> >>>> <#macro renderFormatEmptySpace> </#macro> >>>> >>>> -<#macro renderTextFindField name value defaultOption opEquals >>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>>> tabindex><@renderField value /></#macro> >>>> +<#macro renderTextFindField name value defaultOption opEquals >>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup >>>> tabindex><@renderField value /></#macro> >>>> >>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value /></#macro> >>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex><@renderField value >>>> /></#macro> >>>> >>>> -<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> tabindex> >>>> +<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> conditionGroup tabindex> >>>> <@renderField value /> >>>> </#macro> >>>> >>>> -<#macro renderLookupField name formName fieldFormName className="" >>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>> readonly=false autocomplete="" descriptionFieldName="" >>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default">></#macro> >>>> +<#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="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default">></#macro> >>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>> <#macro renderFileField className alert name value size maxlength >>>> autocomplete tabindex><@renderField value /></#macro> >>>> <#macro renderPasswordField className alert name value size maxlength >>>> id autocomplete tabindex></#macro> >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -57,7 +57,7 @@ under the License. >>>> >>>> <#macro renderDateTimeField name className alert title value size >>>> maxlength step timeValues id event action dateType shortDateInput >>>> timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown >>>> timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour >>>> ampmName amSelected pmSelected compositeType formName mask="" event="" >>>> action="" step="" timeValues="" tabindex=""><@makeBlock className value >>>> /></#macro> >>>> >>>> -<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size explicitDescription allowEmpty options >>>> fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled >>>> noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect >>>> partialSearch partialChars ignoreCase fullSearch tabindex firstInList="" >>>> currentValue=""> >>>> +<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size explicitDescription allowEmpty options >>>> fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled >>>> noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect >>>> partialSearch partialChars ignorease fullSearch conditionGroup tabindex >>>> firstInList="" currentValue=""> >>>> <#if currentValue?has_content && firstInList?has_content> >>>> <@makeBlock "" explicitDescription /> >>>> <#else> >>>> @@ -67,13 +67,13 @@ under the License. >>>> </#if> >>>> </#macro> >>>> >>>> -<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action tabindex><@makeBlock "" "" /></#macro> >>>> -<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action tabindex><@makeBlock "" "" >>>> /></#macro> >>>> +<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action conditionGroup tabindex><@makeBlock "" "" >>>> /></#macro> >>>> +<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action conditionGroup tabindex><@makeBlock >>>> "" "" /></#macro> >>>> >>>> <#macro renderSubmitField buttonType className alert formName title >>>> name event action imgSrc confirmation containerId ajaxUrl >>>> tabindex><@makeBlock "" "" /></#macro> >>>> <#macro renderResetField className alert name title><@makeBlock "" "" >>>> /></#macro> >>>> >>>> -<#macro renderHiddenField name value id event >>>> action><!--hidden--></#macro> >>>> +<#macro renderHiddenField name conditionGroup value id event >>>> action><!--hidden--></#macro> >>>> <#macro renderIgnoredField><!--ignore--></#macro> >>>> >>>> <#macro renderFieldTitle style title id fieldHelpText="" >>>> for=""><fo:block <@getFoStyle style/>>${title?default("")?replace(" ", >>>> " ")}</fo:block></#macro> >>>> @@ -121,16 +121,16 @@ under the License. >>>> >>>> <#macro renderFormatEmptySpace> <@makeBlock "" " " >>>> /><!--space--></#macro> >>>> >>>> -<#macro renderTextFindField name value defaultOption opEquals >>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>>> tabindex><@makeBlock className value/></#macro> >>>> +<#macro renderTextFindField name value defaultOption opEquals >>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup >>>> tabindex><@makeBlock className value/></#macro> >>>> >>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty tabindex> >>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex> >>>> <@makeBlock className value /> >>>> </#macro> >>>> -<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> tabindex> >>>> +<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> conditionGroup tabindex> >>>> <@makeBlock className value /> >>>> </#macro> >>>> >>>> -<#macro renderLookupField name formName fieldFormName className="" >>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>> readonly=false autocomplete="" descriptionFieldName="" >>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default"></#macro> >>>> +<#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="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default"></#macro> >>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>> <#macro renderFileField className alert name value size maxlength >>>> autocomplete tabindex><@makeBlock className value /></#macro> >>>> <#macro renderPasswordField className alert name value size maxlength >>>> id autocomplete tabindex><@makeBlock className "" /></#macro> >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -207,7 +207,10 @@ under the License. >>>> </span> >>>> </#macro> >>>> >>>> -<#macro renderDropDownField name className alert id formName >>>> otherFieldName action explicitDescription options fieldName otherFieldName >>>> otherValue otherFieldSize ajaxEnabled ajaxOptions frequency minChars choices >>>> autoSelect partialSearch partialChars ignoreCase fullSearch tabindex="" >>>> multiple="" event="" size="" firstInList="" currentValue="" allowEmpty="" >>>> dDFCurrent="" noCurrentSelectedKey=""> >>>> +<#macro renderDropDownField name className alert id formName >>>> otherFieldName 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=""> >>>> + <#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 otherFieldSize gt 0> >>>> onchange="process_choice(this,document.${formName}.${otherFieldName})"</#if><#if >>>> event?has_content> ${event}="${action}"</#if><#if size?has_content> >>>> size="${size}"</#if><#if tabindex?has_content> >>>> tabindex="${tabindex}"</#if><#rt/>> >>>> <#if firstInList?has_content && currentValue?has_content && >>>> !multiple?has_content> >>>> @@ -249,7 +252,10 @@ under the License. >>>> </#if> >>>> </#macro> >>>> >>>> -<#macro renderCheckField items className alert id name action >>>> allChecked="" currentValue="" event="" tabindex=""> >>>> +<#macro renderCheckField items className alert id name action >>>> conditionGroup allChecked="" currentValue="" event="" tabindex=""> >>>> + <#if conditionGroup?has_content> >>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>> + </#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/> >>>> @@ -261,7 +267,10 @@ under the License. >>>> </#list> >>>> </#macro> >>>> >>>> -<#macro renderRadioField items className alert name action >>>> currentValue="" noCurrentSelectedKey="" event="" tabindex=""> >>>> +<#macro renderRadioField items className alert name action >>>> conditionGroup currentValue="" noCurrentSelectedKey="" event="" tabindex=""> >>>> + <#if conditionGroup?has_content> >>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>> + </#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/> >>>> @@ -293,7 +302,10 @@ under the License. >>>> <input type="reset" <@renderClass className alert /> >>>> name="${name}"<#if title?has_content> value="${title}"</#if>/> >>>> </#macro> >>>> >>>> -<#macro renderHiddenField name value="" id="" event="" action=""> >>>> +<#macro renderHiddenField name conditionGroup value="" id="" event="" >>>> action=""> >>>> + <#if conditionGroup?has_content> >>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>> + </#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>/> >>>> </#macro> >>>> >>>> @@ -449,7 +461,10 @@ under the License. >>>> >>>> <#macro renderFormatEmptySpace> </#macro> >>>> >>>> -<#macro renderTextFindField name defaultOption opBeginsWith opContains >>>> opIsEmpty opNotEqual className alert hideIgnoreCase ignCase ignoreCase >>>> 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=""> >>>> + <#if conditionGroup?has_content> >>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>> + </#if> >>>> <#if opEquals?has_content> >>>> <select <#if name?has_content>name="${name}_op"</#if> >>>> class="selectBox"><#rt/> >>>> <option value="equals"<#if defaultOption=="equals"> >>>> selected="selected"</#if>>${opEquals}</option><#rt/> >>>> @@ -472,7 +487,10 @@ under the License. >>>> </#if> >>>> </#macro> >>>> >>>> -<#macro renderDateFindField className alert name dateType formName >>>> value defaultDateTimeString imgSrc localizedIconTitle defaultOptionFrom >>>> defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan >>>> opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty >>>> localizedInputTitle="" value2="" size="" maxlength="" titleStyle="" >>>> tabindex=""> >>>> +<#macro renderDateFindField className alert 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=""> >>>> + <#if conditionGroup?has_content> >>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>> + </#if> >>>> <span class="view-calendar"> >>>> <input id="${name?html}_fld0_value" type="text" <@renderClass >>>> className alert /><#if name?has_content> >>>> name="${name?html}_fld0_value"</#if><#if localizedInputTitle?has_content> >>>> title="${localizedInputTitle}"</#if><#if value?has_content> >>>> value="${value}"</#if><#if size?has_content> size="${size}"</#if><#if >>>> maxlength?has_content> maxlength="${maxlength}"</#if>/><#if >>>> tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> >>>> <#if dateType != "time"> >>>> @@ -550,7 +568,10 @@ under the License. >>>> </span> >>>> </#macro> >>>> >>>> -<#macro renderRangeFindField className alert value defaultOptionFrom >>>> opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals >>>> defaultOptionThru 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=""> >>>> + <#if conditionGroup?has_content> >>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>> + </#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/> >>>> <#if titleStyle?has_content> >>>> <span class="${titleStyle}" ><#rt/> >>>> @@ -612,7 +633,7 @@ Parameter: lastViewName, String, optiona >>>> Parameter: tabindex, String, optional - HTML tabindex number. >>>> Parameter: delegatorName, String, optional - name of the delegator in >>>> context. >>>> --> >>>> -<#macro renderLookupField name formName fieldFormName 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="" >>>> lastViewName="main" tabindex="" delegatorName="default"> >>>> +<#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="" >>>> lastViewName="main" tabindex="" delegatorName="default"> >>>> <#if >>>> Static["org.apache.ofbiz.widget.model.ModelWidget"].widgetBoundaryCommentsEnabled(context)><#-- >>>> context is always null here, but this is handled in >>>> widgetBoundaryCommentsEnabled --> >>>> <!-- @renderLookupField --> >>>> </#if> >>>> @@ -629,6 +650,9 @@ Parameter: delegatorName, String, option >>>> <#if ajaxEnabled?has_content && ajaxEnabled && >>>> (presentation?has_content && "window" == presentation)> >>>> <#local ajaxUrl = ajaxUrl + "&_LAST_VIEW_NAME_=" + >>>> lastViewName /> >>>> </#if> >>>> + <#if conditionGroup?has_content> >>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>> + </#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/> >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -30,7 +30,7 @@ under the License. >>>> >>>> <#macro renderDateTimeField name className alert title value size >>>> maxlength id dateType shortDateInput timeDropdownParamName >>>> defaultDateTimeString localizedIconTitle timeDropdown timeHourName >>>> classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName >>>> amSelected pmSelected compositeType formName mask="" event="" action="" >>>> step="" timeValues="" tabindex="" ><@renderField value /></#macro> >>>> >>>> -<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size firstInList currentValue >>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>> fullSearch tabindex> >>>> +<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size firstInList currentValue >>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>> fullSearch conditionGroup tabindex> >>>> <#if currentValue?has_content && firstInList?has_content> >>>> <@renderField explicitDescription /> >>>> <#else> >>>> @@ -41,13 +41,13 @@ under the License. >>>> </#macro> >>>> >>>> <#macro renderTooltip tooltip tooltipStyle></#macro> >>>> -<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action tabindex></#macro> >>>> -<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action tabindex></#macro> >>>> +<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action conditionGroup tabindex></#macro> >>>> +<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action conditionGroup tabindex></#macro> >>>> >>>> <#macro renderSubmitField buttonType className alert formName title >>>> name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >>>> <#macro renderResetField className alert name title></#macro> >>>> >>>> -<#macro renderHiddenField name value id event action></#macro> >>>> +<#macro renderHiddenField name conditionGroup value id event >>>> action></#macro> >>>> <#macro renderIgnoredField></#macro> >>>> >>>> <#macro renderFieldTitle style title id fieldHelpText="" >>>> for=""><@renderField title /></#macro> >>>> @@ -97,15 +97,15 @@ under the License. >>>> >>>> <#macro renderFormatEmptySpace> </#macro> >>>> >>>> -<#macro renderTextFindField name value defaultOption opEquals >>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>>> tabindex><@renderField value /></#macro> >>>> +<#macro renderTextFindField name value defaultOption opEquals >>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup >>>> tabindex><@renderField value /></#macro> >>>> >>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value /></#macro> >>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex><@renderField value >>>> /></#macro> >>>> >>>> -<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> tabindex> >>>> +<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> conditionGroup tabindex> >>>> <@renderField value /> >>>> </#macro> >>>> >>>> -<#macro renderLookupField name formName fieldFormName className="" >>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>> readonly=false autocomplete="" descriptionFieldName="" >>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default">><@renderField value /></#macro> >>>> +<#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="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default">><@renderField value /></#macro> >>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>> <#macro renderFileField className alert name value size maxlength >>>> autocomplete tabindex><@renderField value /></#macro> >>>> <#macro renderPasswordField className alert name value size maxlength >>>> id autocomplete tabindex></#macro> >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -40,17 +40,17 @@ under the License. >>>> <#else><@renderItemField value "dtf" className/></#if> >>>> </#macro> >>>> >>>> -<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size firstInList currentValue >>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>> fullSearch tabindex><@renderItemField explicitDescription "txf" >>>> className/></#macro> >>>> +<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size firstInList currentValue >>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>> fullSearch conditionGroup tabindex><@renderItemField explicitDescription >>>> "txf" className/></#macro> >>>> >>>> -<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action tabindex><@renderItemField currentValue "txf" >>>> className/></#macro> >>>> +<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action conditionGroup tabindex><@renderItemField >>>> currentValue "txf" className/></#macro> >>>> >>>> -<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action tabindex><@renderItemField >>>> currentValue "txf" className/></#macro> >>>> +<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action conditionGroup >>>> tabindex><@renderItemField currentValue "txf" className/></#macro> >>>> >>>> <#macro renderSubmitField buttonType className alert formName title >>>> name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >>>> >>>> <#macro renderResetField className alert name title></#macro> >>>> >>>> -<#macro renderHiddenField name value id event action></#macro> >>>> +<#macro renderHiddenField name conditionGroup value id event >>>> action></#macro> >>>> >>>> <#macro renderIgnoredField></#macro> >>>> >>>> @@ -112,13 +112,13 @@ under the License. >>>> >>>> <#macro renderFormatEmptySpace><@renderItemField "" "txf"/></#macro> >>>> >>>> -<#macro renderTextFindField name value defaultOption opEquals >>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex></#macro> >>>> +<#macro renderTextFindField name value defaultOption opEquals >>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup >>>> tabindex></#macro> >>>> >>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty tabindex></#macro> >>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> >>>> >>>> -<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> tabindex></#macro> >>>> +<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> conditionGroup tabindex></#macro> >>>> >>>> -<#macro renderLookupField name formName fieldFormName className="" >>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>> readonly=false autocomplete="" descriptionFieldName="" >>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default">><@renderItemField value "txf" >>>> className/></#macro> >>>> +<#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="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default">><@renderItemField value "txf" >>>> className/></#macro> >>>> >>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>> >>>> >>>> Modified: >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>>> (original) >>>> +++ >>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>>> Mon Feb 26 09:57:36 2018 >>>> @@ -46,16 +46,16 @@ under the License. >>>> >>>> <#macro renderDateTimeField name className alert title value size >>>> maxlength id dateType shortDateInput timeDropdownParamName >>>> defaultDateTimeString localizedIconTitle timeDropdown timeHourName >>>> classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName >>>> amSelected pmSelected compositeType formName mask="" event="" action="" >>>> step="" timeValues="" tabindex="" ><@renderField value/></#macro> >>>> >>>> -<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size firstInList currentValue >>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>> fullSearch tabindex> >>>> +<#macro renderDropDownField name className alert id multiple formName >>>> otherFieldName event action size firstInList currentValue >>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>> fullSearch conditionGroup tabindex> >>>> </#macro> >>>> >>>> -<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action tabindex></#macro> >>>> -<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action tabindex></#macro> >>>> +<#macro renderCheckField items className alert id allChecked >>>> currentValue name event action conditionGroup tabindex></#macro> >>>> +<#macro renderRadioField items className alert currentValue >>>> noCurrentSelectedKey name event action conditionGroup tabindex></#macro> >>>> >>>> <#macro renderSubmitField buttonType className alert formName title >>>> name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >>>> <#macro renderResetField className alert name title></#macro> >>>> >>>> -<#macro renderHiddenField name value id event action></#macro> >>>> +<#macro renderHiddenField name conditionGroup value id event >>>> action></#macro> >>>> <#macro renderIgnoredField></#macro> >>>> >>>> <#macro renderFieldTitle style title id fieldHelpText="" >>>> for=""></#macro> >>>> @@ -92,12 +92,12 @@ under the License. >>>> >>>> <#macro renderTextFindField name value defaultOption opEquals >>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>>> tabindex><@renderField value/></#macro> >>>> >>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty tabindex></#macro> >>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> >>>> >>>> -<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> tabindex> >>>> +<#macro renderRangeFindField className alert name value size maxlength >>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>> conditionGroup tabindex> >>>> </#macro> >>>> >>>> -<#macro renderLookupField name formName fieldFormName className="" >>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>> readonly=false autocomplete="" descriptionFieldName="" >>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default">></#macro> >>>> +<#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="" height="" position="" fadeBackground="true" >>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>> tabindex="" delegatorName="default">></#macro> >>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>> <#macro renderFileField className alert name value size maxlength >>>> autocomplete tabindex></#macro> >>>> <#macro renderPasswordField className alert name value size maxlength >>>> id autocomplete tabindex></#macro> >>>> >>>> >> > |
No worry ;)
Thanks, Gil On 26/02/2018 15:09, Taher Alkhateeb wrote: > I merged the code at the moment I was compiling, I think this is why > this bug occured to me. It seems to be working perfectly well now. > Sorry, false alarm. > > On Mon, Feb 26, 2018 at 5:06 PM, gil portenseigne > <[hidden email]> wrote: >> Ah, are you sure to have recompiled Java ? I cannot reproduce locally.. >> >> Gil >> >> >> >> On 26/02/2018 15:00, gil portenseigne wrote: >>> Hello Taher, >>> >>> Oww, i might have missed something :( , i'll look at it very soon ! >>> >>> Gil >>> >>> >>> On 26/02/2018 14:52, Taher Alkhateeb wrote: >>>> Hi Gil, >>>> >>>> Great work so far. However, I seem to be facing a bug. I list the >>>> error below that shows in almost every form: >>>> >>>> When calling macro "renderHiddenField", required parameter >>>> "conditionGroup" (parameter #2) was not specified. ---- Tip: If the >>>> omission was deliberate, you may consider making the parameter >>>> optional in the macro by specifying a default value for it, like >>>> <#macro macroName paramName=defaultExpr>) ---- ---- FTL stack trace >>>> ("~" means nesting-related): - Failed at: #macro renderHiddenField >>>> name conditi... [in template >>>> "component://common-theme/template/macro/HtmlFormMacroLibrary.ftl" in >>>> macro "renderHiddenField" at line 305, column 1] - Reached through: >>>> @renderHiddenField name="realestateCi... [in template >>>> "-222c6da2:161d256a91a:-7356" at line 1, column 1] >>>> >>>> On Mon, Feb 26, 2018 at 12:57 PM, <[hidden email]> wrote: >>>>> Author: pgil >>>>> Date: Mon Feb 26 09:57:36 2018 >>>>> New Revision: 1825350 >>>>> >>>>> URL: http://svn.apache.org/viewvc?rev=1825350&view=rev >>>>> Log: >>>>> Implemented: Add the ability in performFind service to set OR search >>>>> criteria (OFBIZ-10195) >>>>> >>>>> This improvement add a way to specify a condition-group attribute on >>>>> search fields, for performFind service usage. >>>>> The same group conditions are gathered with AND operator, and each group >>>>> is added with a OR >>>>> The resulting condition is added to the other with AND operator. >>>>> Thanks Taher for your reviews and ideas >>>>> >>>>> Modified: >>>>> >>>>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>>>> >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>>>> >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>>>> >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>>>> >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>>>> >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>>>> >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>>>> >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>>>> >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>>>> >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/framework/common/src/main/java/org/apache/ofbiz/common/FindServices.java >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -218,11 +218,19 @@ public class FindServices { >>>>> Set<String> processed = new LinkedHashSet<>(); >>>>> Set<String> keys = new LinkedHashSet<>(); >>>>> Map<String, ModelField> fieldMap = new LinkedHashMap<>(); >>>>> + /** >>>>> + * When inputFields contains several xxxx_grp, yyyy_grp ... >>>>> values, >>>>> + * Corresponding conditions will grouped by an {@link >>>>> EntityOperator.AND} then all added to final >>>>> + * condition grouped by an {@link EntityOperator.OR} >>>>> + * That will allow union of search criteria, instead of default >>>>> intersection. >>>>> + */ >>>>> + Map<String, List<EntityCondition>> savedGroups = new >>>>> LinkedHashMap(); >>>>> for (ModelField modelField : fieldList) { >>>>> fieldMap.put(modelField.getName(), modelField); >>>>> } >>>>> List<EntityCondition> result = new LinkedList<>(); >>>>> for (Map.Entry<String, ? extends Object> entry : >>>>> parameters.entrySet()) { >>>>> + String currentGroup = null; >>>>> String parameterName = entry.getKey(); >>>>> if (processed.contains(parameterName)) { >>>>> continue; >>>>> @@ -237,7 +245,15 @@ public class FindServices { >>>>> } else if (parameterName.endsWith("_value")) { >>>>> fieldName = parameterName.substring(0, >>>>> parameterName.length() - 6); >>>>> } >>>>> - String key = fieldName.concat("_ic"); >>>>> + >>>>> + String key = fieldName.concat("_grp"); >>>>> + if (parameters.containsKey(key)) { >>>>> + if (parameters.containsKey(key)) { >>>>> + keys.add(key); >>>>> + } >>>>> + currentGroup = (String) parameters.get(key); >>>>> + } >>>>> + key = fieldName.concat("_ic"); >>>>> if (parameters.containsKey(key)) { >>>>> keys.add(key); >>>>> ignoreCase = "Y".equals(parameters.get(key)); >>>>> @@ -272,11 +288,28 @@ public class FindServices { >>>>> if (ObjectType.isEmpty(fieldValue) && >>>>> !"empty".equals(operation)) { >>>>> continue; >>>>> } >>>>> - result.add(createSingleCondition(modelField, operation, >>>>> fieldValue, ignoreCase, delegator, context)); >>>>> + if (UtilValidate.isNotEmpty(currentGroup)){ >>>>> + List<EntityCondition> groupedConditions = new >>>>> LinkedList<>(); >>>>> + if(savedGroups.get(currentGroup) != null) { >>>>> + groupedConditions.addAll(savedGroups.get(currentGroup)); >>>>> + } >>>>> + groupedConditions.add(createSingleCondition(modelField, operation, >>>>> fieldValue, ignoreCase, delegator, context)); >>>>> + savedGroups.put(currentGroup, groupedConditions); >>>>> + } else { >>>>> + result.add(createSingleCondition(modelField, operation, >>>>> fieldValue, ignoreCase, delegator, context)); >>>>> + } >>>>> + >>>>> for (String mapKey : keys) { >>>>> queryStringMap.put(mapKey, parameters.get(mapKey)); >>>>> } >>>>> } >>>>> + //Add OR-grouped conditions >>>>> + List<EntityCondition> orConditions = new LinkedList<>(); >>>>> + for (String groupedConditions : savedGroups.keySet()) { >>>>> + >>>>> orConditions.add(EntityCondition.makeCondition(savedGroups.get(groupedConditions))); >>>>> + } >>>>> + if (orConditions.size() > 0) >>>>> result.add(EntityCondition.makeCondition(orConditions, EntityOperator.OR)); >>>>> + >>>>> return result; >>>>> } >>>>> >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd >>>>> (original) >>>>> +++ ofbiz/ofbiz-framework/trunk/framework/widget/dtd/widget-form.xsd Mon >>>>> Feb 26 09:57:36 2018 >>>>> @@ -925,6 +925,16 @@ under the License. >>>>> </xs:documentation> >>>>> </xs:annotation> >>>>> </xs:attribute> >>>>> + <xs:attribute type="xs:string" name="condition-group"> >>>>> + <xs:annotation> >>>>> + <xs:documentation> >>>>> + The condition-group regroup search criterias >>>>> together. >>>>> + Each group member will be gathered with AND >>>>> operator >>>>> + Every defined groups will be joined each other >>>>> with OR operator >>>>> + Any ungrouped condition will be added with AND >>>>> operator >>>>> + </xs:documentation> >>>>> + </xs:annotation> >>>>> + </xs:attribute> >>>>> </xs:complexType> >>>>> </xs:element> >>>>> >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -144,6 +144,7 @@ public class ModelFormField { >>>>> private final String widgetStyle; >>>>> private final String parentFormName; >>>>> private final String tabindex; >>>>> + private final String conditionGroup; >>>>> >>>>> private ModelFormField(ModelFormFieldBuilder builder) { >>>>> this.action = builder.getAction(); >>>>> @@ -197,6 +198,7 @@ public class ModelFormField { >>>>> this.widgetStyle = builder.getWidgetStyle(); >>>>> this.parentFormName = builder.getParentFormName(); >>>>> this.tabindex = builder.getTabindex(); >>>>> + this.conditionGroup = builder.getConditionGroup(); >>>>> } >>>>> >>>>> public FlexibleStringExpander getAction() { >>>>> @@ -448,6 +450,10 @@ public class ModelFormField { >>>>> return tabindex; >>>>> } >>>>> >>>>> + public String getConditionGroup() { >>>>> + return conditionGroup; >>>>> + } >>>>> + >>>>> public Map<String, ? extends Object> getMap(Map<String, ? extends >>>>> Object> context) { >>>>> if (UtilValidate.isEmpty(this.mapAcsr)) { >>>>> return this.modelForm.getDefaultMap(context); >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -111,6 +111,7 @@ public class ModelFormFieldBuilder { >>>>> private String widgetStyle = ""; >>>>> private String parentFormName = ""; >>>>> private String tabindex = ""; >>>>> + private String conditionGroup = ""; >>>>> >>>>> public ModelFormFieldBuilder() { >>>>> } >>>>> @@ -162,6 +163,7 @@ public class ModelFormFieldBuilder { >>>>> this.widgetStyle = fieldElement.getAttribute("widget-style"); >>>>> this.parentFormName = fieldElement.getAttribute("form-name"); >>>>> this.tabindex = fieldElement.getAttribute("tabindex"); >>>>> + this.conditionGroup = >>>>> fieldElement.getAttribute("condition-group"); >>>>> Element childElement = null; >>>>> List<? extends Element> subElements = >>>>> UtilXml.childElementList(fieldElement); >>>>> for (Element subElement : subElements) { >>>>> @@ -277,6 +279,7 @@ public class ModelFormFieldBuilder { >>>>> this.widgetStyle = modelFormField.getWidgetStyle(); >>>>> this.parentFormName = modelFormField.getParentFormName(); >>>>> this.tabindex = modelFormField.getTabindex(); >>>>> + this.conditionGroup = modelFormField.getConditionGroup(); >>>>> } >>>>> >>>>> public ModelFormFieldBuilder(ModelFormFieldBuilder builder) { >>>>> @@ -318,6 +321,7 @@ public class ModelFormFieldBuilder { >>>>> this.widgetStyle = builder.getWidgetStyle(); >>>>> this.parentFormName = builder.getParentFormName(); >>>>> this.tabindex = builder.getTabindex(); >>>>> + this.conditionGroup = builder.getConditionGroup(); >>>>> } >>>>> >>>>> public ModelFormFieldBuilder addOnChangeUpdateArea(UpdateArea >>>>> onChangeUpdateArea) { >>>>> @@ -494,6 +498,10 @@ public class ModelFormFieldBuilder { >>>>> return tabindex; >>>>> } >>>>> >>>>> + public String getConditionGroup() { >>>>> + return conditionGroup; >>>>> + } >>>>> + >>>>> private boolean induceFieldInfo(ModelForm modelForm, String >>>>> defaultFieldType, ModelReader entityModelReader, DispatchContext >>>>> dispatchContext) { >>>>> if (induceFieldInfoFromEntityField(defaultFieldType, >>>>> entityModelReader)) { >>>>> return true; >>>>> @@ -810,6 +818,9 @@ public class ModelFormFieldBuilder { >>>>> if (UtilValidate.isNotEmpty(builder.getTabindex())) { >>>>> this.tabindex = builder.getTabindex(); >>>>> } >>>>> + if (UtilValidate.isNotEmpty(builder.getConditionGroup())) { >>>>> + this.conditionGroup = builder.getConditionGroup(); >>>>> + } >>>>> this.encodeOutput = builder.getEncodeOutput(); >>>>> this.position = builder.getPosition(); >>>>> this.requiredField = builder.getRequiredField(); >>>>> @@ -1000,4 +1011,8 @@ public class ModelFormFieldBuilder { >>>>> this.tabindex = tabindex; >>>>> return this; >>>>> } >>>>> + public ModelFormFieldBuilder setConditionGroup(String >>>>> conditionGroup) { >>>>> + this.conditionGroup = conditionGroup; >>>>> + return this; >>>>> + } >>>>> } >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -774,6 +774,7 @@ public final class MacroFormRenderer imp >>>>> ModelFormField modelFormField = >>>>> dropDownField.getModelFormField(); >>>>> ModelForm modelForm = modelFormField.getModelForm(); >>>>> String currentValue = modelFormField.getEntry(context); >>>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>>> List<ModelFormField.OptionValue> allOptionValues = >>>>> dropDownField.getAllOptionValues(context, >>>>> WidgetWorker.getDelegator(context)); >>>>> ModelFormField.AutoComplete autoComplete = >>>>> dropDownField.getAutoComplete(); >>>>> String event = modelFormField.getEvent(); >>>>> @@ -1000,6 +1001,8 @@ public final class MacroFormRenderer imp >>>>> sr.append(ignoreCase); >>>>> sr.append("\" fullSearch=\""); >>>>> sr.append(fullSearch); >>>>> + sr.append("\" conditionGroup=\""); >>>>> + sr.append(conditionGroup); >>>>> sr.append("\" tabindex=\""); >>>>> sr.append(tabindex); >>>>> sr.append("\" />"); >>>>> @@ -1014,6 +1017,7 @@ public final class MacroFormRenderer imp >>>>> public void renderCheckField(Appendable writer, Map<String, >>>>> Object> context, CheckField checkField) throws IOException { >>>>> ModelFormField modelFormField = >>>>> checkField.getModelFormField(); >>>>> String currentValue = modelFormField.getEntry(context); >>>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>>> Boolean allChecked = checkField.isAllChecked(context); >>>>> String id = modelFormField.getCurrentContainerId(context); >>>>> String className = ""; >>>>> @@ -1051,6 +1055,8 @@ public final class MacroFormRenderer imp >>>>> sr.append(alert); >>>>> sr.append("\" id=\""); >>>>> sr.append(id); >>>>> + sr.append("\" conditionGroup=\""); >>>>> + sr.append(conditionGroup); >>>>> sr.append("\" allChecked="); >>>>> sr.append((allChecked != null ? Boolean.toString(allChecked) : >>>>> "\"\"")); >>>>> sr.append(" currentValue=\""); >>>>> @@ -1076,6 +1082,7 @@ public final class MacroFormRenderer imp >>>>> ModelFormField modelFormField = >>>>> radioField.getModelFormField(); >>>>> List<ModelFormField.OptionValue> allOptionValues = >>>>> radioField.getAllOptionValues(context, WidgetWorker.getDelegator(context)); >>>>> String currentValue = modelFormField.getEntry(context); >>>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>>> String className = ""; >>>>> String alert = "false"; >>>>> String name = modelFormField.getParameterName(context); >>>>> @@ -1123,6 +1130,8 @@ public final class MacroFormRenderer imp >>>>> if (action != null) { >>>>> sr.append(action); >>>>> } >>>>> + sr.append("\" conditionGroup=\""); >>>>> + sr.append(conditionGroup); >>>>> sr.append("\" tabindex=\""); >>>>> sr.append(tabindex); >>>>> sr.append("\" />"); >>>>> @@ -1243,12 +1252,15 @@ public final class MacroFormRenderer imp >>>>> public void renderHiddenField(Appendable writer, Map<String, >>>>> Object> context, ModelFormField modelFormField, String value) throws >>>>> IOException { >>>>> String name = modelFormField.getParameterName(context); >>>>> String action = modelFormField.getAction(context); >>>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>>> String event = modelFormField.getEvent(); >>>>> String id = modelFormField.getCurrentContainerId(context); >>>>> StringWriter sr = new StringWriter(); >>>>> sr.append("<@renderHiddenField "); >>>>> sr.append(" name=\""); >>>>> sr.append(name); >>>>> + sr.append("\" conditionGroup=\""); >>>>> + sr.append(conditionGroup); >>>>> sr.append("\" value=\""); >>>>> sr.append(value); >>>>> sr.append("\" id=\""); >>>>> @@ -1788,6 +1800,7 @@ public final class MacroFormRenderer imp >>>>> public void renderTextFindField(Appendable writer, Map<String, >>>>> Object> context, TextFindField textFindField) throws IOException { >>>>> ModelFormField modelFormField = >>>>> textFindField.getModelFormField(); >>>>> String defaultOption = >>>>> textFindField.getDefaultOption(context); >>>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>>> String className = ""; >>>>> String alert = "false"; >>>>> String opEquals = ""; >>>>> @@ -1869,6 +1882,8 @@ public final class MacroFormRenderer imp >>>>> sr.append(ignoreCase); >>>>> sr.append("\" tabindex=\""); >>>>> sr.append(tabindex); >>>>> + sr.append("\" conditionGroup=\""); >>>>> + sr.append(conditionGroup); >>>>> sr.append("\" />"); >>>>> executeMacro(writer, sr.toString()); >>>>> this.appendTooltip(writer, context, modelFormField); >>>>> @@ -1882,6 +1897,7 @@ public final class MacroFormRenderer imp >>>>> String opGreaterThanEquals = >>>>> UtilProperties.getMessage("conditionalUiLabels", "greater_than_equals", >>>>> locale); >>>>> String opLessThan = >>>>> UtilProperties.getMessage("conditionalUiLabels", "less_than", locale); >>>>> String opLessThanEquals = >>>>> UtilProperties.getMessage("conditionalUiLabels", "less_than_equals", >>>>> locale); >>>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>>> String className = ""; >>>>> String alert = "false"; >>>>> if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) >>>>> { >>>>> @@ -1950,6 +1966,8 @@ public final class MacroFormRenderer imp >>>>> sr.append(value2); >>>>> sr.append("\" defaultOptionThru=\""); >>>>> sr.append(defaultOptionThru); >>>>> + sr.append("\" conditionGroup=\""); >>>>> + sr.append(conditionGroup); >>>>> sr.append("\" tabindex=\""); >>>>> sr.append(tabindex); >>>>> sr.append("\" />"); >>>>> @@ -1968,6 +1986,7 @@ public final class MacroFormRenderer imp >>>>> String opUpToDay = >>>>> UtilProperties.getMessage("conditionalUiLabels", "up_to_day", locale); >>>>> String opUpThruDay = >>>>> UtilProperties.getMessage("conditionalUiLabels", "up_thru_day", locale); >>>>> String opIsEmpty = >>>>> UtilProperties.getMessage("conditionalUiLabels", "is_empty", locale); >>>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>>> Map<String, String> uiLabelMap = >>>>> UtilGenerics.checkMap(context.get("uiLabelMap")); >>>>> if (uiLabelMap == null) { >>>>> Debug.logWarning("Could not find uiLabelMap in context", >>>>> module); >>>>> @@ -2066,6 +2085,8 @@ public final class MacroFormRenderer imp >>>>> sr.append(defaultDateTimeString); >>>>> sr.append("\" imgSrc=\""); >>>>> sr.append(imgSrc.toString()); >>>>> + sr.append("\" conditionGroup=\""); >>>>> + sr.append(conditionGroup); >>>>> sr.append("\" localizedIconTitle=\""); >>>>> sr.append(localizedIconTitle); >>>>> sr.append("\" titleStyle=\""); >>>>> @@ -2102,6 +2123,7 @@ public final class MacroFormRenderer imp >>>>> public void renderLookupField(Appendable writer, Map<String, >>>>> Object> context, LookupField lookupField) throws IOException { >>>>> ModelFormField modelFormField = >>>>> lookupField.getModelFormField(); >>>>> String lookupFieldFormName = lookupField.getFormName(context); >>>>> + String conditionGroup = modelFormField.getConditionGroup(); >>>>> String className = ""; >>>>> String alert = "false"; >>>>> if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) >>>>> { >>>>> @@ -2275,6 +2297,8 @@ public final class MacroFormRenderer imp >>>>> sr.append(Boolean.toString(isInitiallyCollapsed)); >>>>> sr.append("\" lastViewName=\""); >>>>> sr.append(lastViewName); >>>>> + sr.append("\" conditionGroup=\""); >>>>> + sr.append(conditionGroup); >>>>> sr.append("\" tabindex=\""); >>>>> sr.append(tabindex); >>>>> sr.append("\" delegatorName=\""); >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -30,7 +30,7 @@ under the License. >>>>> >>>>> <#macro renderDateTimeField name className alert title value size >>>>> maxlength id dateType shortDateInput timeDropdownParamName >>>>> defaultDateTimeString localizedIconTitle timeDropdown timeHourName >>>>> classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName >>>>> amSelected pmSelected compositeType formName mask="" event="" action="" >>>>> step="" timeValues="" tabindex="" ><@renderField value /></#macro> >>>>> >>>>> -<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size firstInList currentValue >>>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>>> fullSearch tabindex> >>>>> +<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size firstInList currentValue >>>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>>> fullSearch conditionGroup tabindex> >>>>> <#if currentValue?has_content && firstInList?has_content> >>>>> <@renderField explicitDescription /> >>>>> <#else> >>>>> @@ -41,13 +41,13 @@ under the License. >>>>> </#macro> >>>>> >>>>> <#macro renderTooltip tooltip tooltipStyle></#macro> >>>>> -<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action tabindex></#macro> >>>>> -<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action tabindex></#macro> >>>>> +<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action conditionGroup tabindex></#macro> >>>>> +<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action conditionGroup tabindex></#macro> >>>>> >>>>> <#macro renderSubmitField buttonType className alert formName title >>>>> name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >>>>> <#macro renderResetField className alert name title></#macro> >>>>> >>>>> -<#macro renderHiddenField name value id event action></#macro> >>>>> +<#macro renderHiddenField name conditionGroup value id event >>>>> action></#macro> >>>>> <#macro renderIgnoredField></#macro> >>>>> >>>>> <#macro renderFieldTitle style title id="" fieldHelpText="" >>>>> for=""><@renderField title />,</#macro> >>>>> @@ -97,15 +97,15 @@ under the License. >>>>> >>>>> <#macro renderFormatEmptySpace> </#macro> >>>>> >>>>> -<#macro renderTextFindField name value defaultOption opEquals >>>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>>>> tabindex><@renderField value /></#macro> >>>>> +<#macro renderTextFindField name value defaultOption opEquals >>>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup >>>>> tabindex><@renderField value /></#macro> >>>>> >>>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value /></#macro> >>>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex><@renderField value >>>>> /></#macro> >>>>> >>>>> -<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> tabindex> >>>>> +<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> conditionGroup tabindex> >>>>> <@renderField value /> >>>>> </#macro> >>>>> >>>>> -<#macro renderLookupField name formName fieldFormName className="" >>>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>>> readonly=false autocomplete="" descriptionFieldName="" >>>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default">></#macro> >>>>> +<#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="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default">></#macro> >>>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>>> <#macro renderFileField className alert name value size maxlength >>>>> autocomplete tabindex><@renderField value /></#macro> >>>>> <#macro renderPasswordField className alert name value size maxlength >>>>> id autocomplete tabindex></#macro> >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/FoFormMacroLibrary.ftl >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -57,7 +57,7 @@ under the License. >>>>> >>>>> <#macro renderDateTimeField name className alert title value size >>>>> maxlength step timeValues id event action dateType shortDateInput >>>>> timeDropdownParamName defaultDateTimeString localizedIconTitle timeDropdown >>>>> timeHourName classString hour1 hour2 timeMinutesName minutes isTwelveHour >>>>> ampmName amSelected pmSelected compositeType formName mask="" event="" >>>>> action="" step="" timeValues="" tabindex=""><@makeBlock className value >>>>> /></#macro> >>>>> >>>>> -<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size explicitDescription allowEmpty options >>>>> fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled >>>>> noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect >>>>> partialSearch partialChars ignoreCase fullSearch tabindex firstInList="" >>>>> currentValue=""> >>>>> +<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size explicitDescription allowEmpty options >>>>> fieldName otherFieldName otherValue otherFieldSize dDFCurrent ajaxEnabled >>>>> noCurrentSelectedKey ajaxOptions frequency minChars choices autoSelect >>>>> partialSearch partialChars ignorease fullSearch conditionGroup tabindex >>>>> firstInList="" currentValue=""> >>>>> <#if currentValue?has_content && firstInList?has_content> >>>>> <@makeBlock "" explicitDescription /> >>>>> <#else> >>>>> @@ -67,13 +67,13 @@ under the License. >>>>> </#if> >>>>> </#macro> >>>>> >>>>> -<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action tabindex><@makeBlock "" "" /></#macro> >>>>> -<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action tabindex><@makeBlock "" "" >>>>> /></#macro> >>>>> +<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action conditionGroup tabindex><@makeBlock "" "" >>>>> /></#macro> >>>>> +<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action conditionGroup tabindex><@makeBlock >>>>> "" "" /></#macro> >>>>> >>>>> <#macro renderSubmitField buttonType className alert formName title >>>>> name event action imgSrc confirmation containerId ajaxUrl >>>>> tabindex><@makeBlock "" "" /></#macro> >>>>> <#macro renderResetField className alert name title><@makeBlock "" "" >>>>> /></#macro> >>>>> >>>>> -<#macro renderHiddenField name value id event >>>>> action><!--hidden--></#macro> >>>>> +<#macro renderHiddenField name conditionGroup value id event >>>>> action><!--hidden--></#macro> >>>>> <#macro renderIgnoredField><!--ignore--></#macro> >>>>> >>>>> <#macro renderFieldTitle style title id fieldHelpText="" >>>>> for=""><fo:block <@getFoStyle style/>>${title?default("")?replace(" ", >>>>> " ")}</fo:block></#macro> >>>>> @@ -121,16 +121,16 @@ under the License. >>>>> >>>>> <#macro renderFormatEmptySpace> <@makeBlock "" " " >>>>> /><!--space--></#macro> >>>>> >>>>> -<#macro renderTextFindField name value defaultOption opEquals >>>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>>>> tabindex><@makeBlock className value/></#macro> >>>>> +<#macro renderTextFindField name value defaultOption opEquals >>>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup >>>>> tabindex><@makeBlock className value/></#macro> >>>>> >>>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty tabindex> >>>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex> >>>>> <@makeBlock className value /> >>>>> </#macro> >>>>> -<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> tabindex> >>>>> +<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> conditionGroup tabindex> >>>>> <@makeBlock className value /> >>>>> </#macro> >>>>> >>>>> -<#macro renderLookupField name formName fieldFormName className="" >>>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>>> readonly=false autocomplete="" descriptionFieldName="" >>>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default"></#macro> >>>>> +<#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="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default"></#macro> >>>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>>> <#macro renderFileField className alert name value size maxlength >>>>> autocomplete tabindex><@makeBlock className value /></#macro> >>>>> <#macro renderPasswordField className alert name value size maxlength >>>>> id autocomplete tabindex><@makeBlock className "" /></#macro> >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -207,7 +207,10 @@ under the License. >>>>> </span> >>>>> </#macro> >>>>> >>>>> -<#macro renderDropDownField name className alert id formName >>>>> otherFieldName action explicitDescription options fieldName otherFieldName >>>>> otherValue otherFieldSize ajaxEnabled ajaxOptions frequency minChars choices >>>>> autoSelect partialSearch partialChars ignoreCase fullSearch tabindex="" >>>>> multiple="" event="" size="" firstInList="" currentValue="" allowEmpty="" >>>>> dDFCurrent="" noCurrentSelectedKey=""> >>>>> +<#macro renderDropDownField name className alert id formName >>>>> otherFieldName 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=""> >>>>> + <#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 otherFieldSize gt 0> >>>>> onchange="process_choice(this,document.${formName}.${otherFieldName})"</#if><#if >>>>> event?has_content> ${event}="${action}"</#if><#if size?has_content> >>>>> size="${size}"</#if><#if tabindex?has_content> >>>>> tabindex="${tabindex}"</#if><#rt/>> >>>>> <#if firstInList?has_content && currentValue?has_content && >>>>> !multiple?has_content> >>>>> @@ -249,7 +252,10 @@ under the License. >>>>> </#if> >>>>> </#macro> >>>>> >>>>> -<#macro renderCheckField items className alert id name action >>>>> allChecked="" currentValue="" event="" tabindex=""> >>>>> +<#macro renderCheckField items className alert id name action >>>>> conditionGroup allChecked="" currentValue="" event="" tabindex=""> >>>>> + <#if conditionGroup?has_content> >>>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>>> + </#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/> >>>>> @@ -261,7 +267,10 @@ under the License. >>>>> </#list> >>>>> </#macro> >>>>> >>>>> -<#macro renderRadioField items className alert name action >>>>> currentValue="" noCurrentSelectedKey="" event="" tabindex=""> >>>>> +<#macro renderRadioField items className alert name action >>>>> conditionGroup currentValue="" noCurrentSelectedKey="" event="" tabindex=""> >>>>> + <#if conditionGroup?has_content> >>>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>>> + </#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/> >>>>> @@ -293,7 +302,10 @@ under the License. >>>>> <input type="reset" <@renderClass className alert /> >>>>> name="${name}"<#if title?has_content> value="${title}"</#if>/> >>>>> </#macro> >>>>> >>>>> -<#macro renderHiddenField name value="" id="" event="" action=""> >>>>> +<#macro renderHiddenField name conditionGroup value="" id="" event="" >>>>> action=""> >>>>> + <#if conditionGroup?has_content> >>>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>>> + </#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>/> >>>>> </#macro> >>>>> >>>>> @@ -449,7 +461,10 @@ under the License. >>>>> >>>>> <#macro renderFormatEmptySpace> </#macro> >>>>> >>>>> -<#macro renderTextFindField name defaultOption opBeginsWith opContains >>>>> opIsEmpty opNotEqual className alert hideIgnoreCase ignCase ignoreCase >>>>> 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=""> >>>>> + <#if conditionGroup?has_content> >>>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>>> + </#if> >>>>> <#if opEquals?has_content> >>>>> <select <#if name?has_content>name="${name}_op"</#if> >>>>> class="selectBox"><#rt/> >>>>> <option value="equals"<#if defaultOption=="equals"> >>>>> selected="selected"</#if>>${opEquals}</option><#rt/> >>>>> @@ -472,7 +487,10 @@ under the License. >>>>> </#if> >>>>> </#macro> >>>>> >>>>> -<#macro renderDateFindField className alert name dateType formName >>>>> value defaultDateTimeString imgSrc localizedIconTitle defaultOptionFrom >>>>> defaultOptionThru opEquals opSameDay opGreaterThanFromDayStart opGreaterThan >>>>> opGreaterThan opLessThan opUpToDay opUpThruDay opIsEmpty >>>>> localizedInputTitle="" value2="" size="" maxlength="" titleStyle="" >>>>> tabindex=""> >>>>> +<#macro renderDateFindField className alert 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=""> >>>>> + <#if conditionGroup?has_content> >>>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>>> + </#if> >>>>> <span class="view-calendar"> >>>>> <input id="${name?html}_fld0_value" type="text" <@renderClass >>>>> className alert /><#if name?has_content> >>>>> name="${name?html}_fld0_value"</#if><#if localizedInputTitle?has_content> >>>>> title="${localizedInputTitle}"</#if><#if value?has_content> >>>>> value="${value}"</#if><#if size?has_content> size="${size}"</#if><#if >>>>> maxlength?has_content> maxlength="${maxlength}"</#if>/><#if >>>>> tabindex?has_content> tabindex="${tabindex}"</#if><#rt/> >>>>> <#if dateType != "time"> >>>>> @@ -550,7 +568,10 @@ under the License. >>>>> </span> >>>>> </#macro> >>>>> >>>>> -<#macro renderRangeFindField className alert value defaultOptionFrom >>>>> opEquals opGreaterThan opGreaterThanEquals opLessThan opLessThanEquals >>>>> defaultOptionThru 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=""> >>>>> + <#if conditionGroup?has_content> >>>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>>> + </#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/> >>>>> <#if titleStyle?has_content> >>>>> <span class="${titleStyle}" ><#rt/> >>>>> @@ -612,7 +633,7 @@ Parameter: lastViewName, String, optiona >>>>> Parameter: tabindex, String, optional - HTML tabindex number. >>>>> Parameter: delegatorName, String, optional - name of the delegator in >>>>> context. >>>>> --> >>>>> -<#macro renderLookupField name formName fieldFormName 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="" >>>>> lastViewName="main" tabindex="" delegatorName="default"> >>>>> +<#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="" >>>>> lastViewName="main" tabindex="" delegatorName="default"> >>>>> <#if >>>>> Static["org.apache.ofbiz.widget.model.ModelWidget"].widgetBoundaryCommentsEnabled(context)><#-- >>>>> context is always null here, but this is handled in >>>>> widgetBoundaryCommentsEnabled --> >>>>> <!-- @renderLookupField --> >>>>> </#if> >>>>> @@ -629,6 +650,9 @@ Parameter: delegatorName, String, option >>>>> <#if ajaxEnabled?has_content && ajaxEnabled && >>>>> (presentation?has_content && "window" == presentation)> >>>>> <#local ajaxUrl = ajaxUrl + "&_LAST_VIEW_NAME_=" + >>>>> lastViewName /> >>>>> </#if> >>>>> + <#if conditionGroup?has_content> >>>>> + <input type="hidden" name="${name}_grp" value="${conditionGroup}"/> >>>>> + </#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/> >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/TextFormMacroLibrary.ftl >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -30,7 +30,7 @@ under the License. >>>>> >>>>> <#macro renderDateTimeField name className alert title value size >>>>> maxlength id dateType shortDateInput timeDropdownParamName >>>>> defaultDateTimeString localizedIconTitle timeDropdown timeHourName >>>>> classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName >>>>> amSelected pmSelected compositeType formName mask="" event="" action="" >>>>> step="" timeValues="" tabindex="" ><@renderField value /></#macro> >>>>> >>>>> -<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size firstInList currentValue >>>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>>> fullSearch tabindex> >>>>> +<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size firstInList currentValue >>>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>>> fullSearch conditionGroup tabindex> >>>>> <#if currentValue?has_content && firstInList?has_content> >>>>> <@renderField explicitDescription /> >>>>> <#else> >>>>> @@ -41,13 +41,13 @@ under the License. >>>>> </#macro> >>>>> >>>>> <#macro renderTooltip tooltip tooltipStyle></#macro> >>>>> -<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action tabindex></#macro> >>>>> -<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action tabindex></#macro> >>>>> +<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action conditionGroup tabindex></#macro> >>>>> +<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action conditionGroup tabindex></#macro> >>>>> >>>>> <#macro renderSubmitField buttonType className alert formName title >>>>> name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >>>>> <#macro renderResetField className alert name title></#macro> >>>>> >>>>> -<#macro renderHiddenField name value id event action></#macro> >>>>> +<#macro renderHiddenField name conditionGroup value id event >>>>> action></#macro> >>>>> <#macro renderIgnoredField></#macro> >>>>> >>>>> <#macro renderFieldTitle style title id fieldHelpText="" >>>>> for=""><@renderField title /></#macro> >>>>> @@ -97,15 +97,15 @@ under the License. >>>>> >>>>> <#macro renderFormatEmptySpace> </#macro> >>>>> >>>>> -<#macro renderTextFindField name value defaultOption opEquals >>>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>>>> tabindex><@renderField value /></#macro> >>>>> +<#macro renderTextFindField name value defaultOption opEquals >>>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup >>>>> tabindex><@renderField value /></#macro> >>>>> >>>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty tabindex><@renderField value /></#macro> >>>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex><@renderField value >>>>> /></#macro> >>>>> >>>>> -<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> tabindex> >>>>> +<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> conditionGroup tabindex> >>>>> <@renderField value /> >>>>> </#macro> >>>>> >>>>> -<#macro renderLookupField name formName fieldFormName className="" >>>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>>> readonly=false autocomplete="" descriptionFieldName="" >>>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default">><@renderField value /></#macro> >>>>> +<#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="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default">><@renderField value /></#macro> >>>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>>> <#macro renderFileField className alert name value size maxlength >>>>> autocomplete tabindex><@renderField value /></#macro> >>>>> <#macro renderPasswordField className alert name value size maxlength >>>>> id autocomplete tabindex></#macro> >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -40,17 +40,17 @@ under the License. >>>>> <#else><@renderItemField value "dtf" className/></#if> >>>>> </#macro> >>>>> >>>>> -<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size firstInList currentValue >>>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>>> fullSearch tabindex><@renderItemField explicitDescription "txf" >>>>> className/></#macro> >>>>> +<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size firstInList currentValue >>>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>>> fullSearch conditionGroup tabindex><@renderItemField explicitDescription >>>>> "txf" className/></#macro> >>>>> >>>>> -<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action tabindex><@renderItemField currentValue "txf" >>>>> className/></#macro> >>>>> +<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action conditionGroup tabindex><@renderItemField >>>>> currentValue "txf" className/></#macro> >>>>> >>>>> -<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action tabindex><@renderItemField >>>>> currentValue "txf" className/></#macro> >>>>> +<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action conditionGroup >>>>> tabindex><@renderItemField currentValue "txf" className/></#macro> >>>>> >>>>> <#macro renderSubmitField buttonType className alert formName title >>>>> name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >>>>> >>>>> <#macro renderResetField className alert name title></#macro> >>>>> >>>>> -<#macro renderHiddenField name value id event action></#macro> >>>>> +<#macro renderHiddenField name conditionGroup value id event >>>>> action></#macro> >>>>> >>>>> <#macro renderIgnoredField></#macro> >>>>> >>>>> @@ -112,13 +112,13 @@ under the License. >>>>> >>>>> <#macro renderFormatEmptySpace><@renderItemField "" "txf"/></#macro> >>>>> >>>>> -<#macro renderTextFindField name value defaultOption opEquals >>>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase tabindex></#macro> >>>>> +<#macro renderTextFindField name value defaultOption opEquals >>>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase conditionGroup >>>>> tabindex></#macro> >>>>> >>>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty tabindex></#macro> >>>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> >>>>> >>>>> -<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> tabindex></#macro> >>>>> +<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> conditionGroup tabindex></#macro> >>>>> >>>>> -<#macro renderLookupField name formName fieldFormName className="" >>>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>>> readonly=false autocomplete="" descriptionFieldName="" >>>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default">><@renderItemField value "txf" >>>>> className/></#macro> >>>>> +<#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="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default">><@renderItemField value "txf" >>>>> className/></#macro> >>>>> >>>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>>> >>>>> >>>>> Modified: >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl?rev=1825350&r1=1825349&r2=1825350&view=diff >>>>> >>>>> ============================================================================== >>>>> --- >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>>>> (original) >>>>> +++ >>>>> ofbiz/ofbiz-framework/trunk/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl >>>>> Mon Feb 26 09:57:36 2018 >>>>> @@ -46,16 +46,16 @@ under the License. >>>>> >>>>> <#macro renderDateTimeField name className alert title value size >>>>> maxlength id dateType shortDateInput timeDropdownParamName >>>>> defaultDateTimeString localizedIconTitle timeDropdown timeHourName >>>>> classString hour1 hour2 timeMinutesName minutes isTwelveHour ampmName >>>>> amSelected pmSelected compositeType formName mask="" event="" action="" >>>>> step="" timeValues="" tabindex="" ><@renderField value/></#macro> >>>>> >>>>> -<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size firstInList currentValue >>>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>>> fullSearch tabindex> >>>>> +<#macro renderDropDownField name className alert id multiple formName >>>>> otherFieldName event action size firstInList currentValue >>>>> explicitDescription allowEmpty options fieldName otherFieldName otherValue >>>>> otherFieldSize dDFCurrent ajaxEnabled noCurrentSelectedKey ajaxOptions >>>>> frequency minChars choices autoSelect partialSearch partialChars ignoreCase >>>>> fullSearch conditionGroup tabindex> >>>>> </#macro> >>>>> >>>>> -<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action tabindex></#macro> >>>>> -<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action tabindex></#macro> >>>>> +<#macro renderCheckField items className alert id allChecked >>>>> currentValue name event action conditionGroup tabindex></#macro> >>>>> +<#macro renderRadioField items className alert currentValue >>>>> noCurrentSelectedKey name event action conditionGroup tabindex></#macro> >>>>> >>>>> <#macro renderSubmitField buttonType className alert formName title >>>>> name event action imgSrc confirmation containerId ajaxUrl tabindex></#macro> >>>>> <#macro renderResetField className alert name title></#macro> >>>>> >>>>> -<#macro renderHiddenField name value id event action></#macro> >>>>> +<#macro renderHiddenField name conditionGroup value id event >>>>> action></#macro> >>>>> <#macro renderIgnoredField></#macro> >>>>> >>>>> <#macro renderFieldTitle style title id fieldHelpText="" >>>>> for=""></#macro> >>>>> @@ -92,12 +92,12 @@ under the License. >>>>> >>>>> <#macro renderTextFindField name value defaultOption opEquals >>>>> opBeginsWith opContains opIsEmpty opNotEqual className alert size maxlength >>>>> autocomplete titleStyle hideIgnoreCase ignCase ignoreCase >>>>> tabindex><@renderField value/></#macro> >>>>> >>>>> -<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty tabindex></#macro> >>>>> +<#macro renderDateFindField className alert name localizedInputTitle >>>>> value value2 size maxlength dateType formName defaultDateTimeString imgSrc >>>>> localizedIconTitle titleStyle defaultOptionFrom defaultOptionThru opEquals >>>>> opSameDay opGreaterThanFromDayStart opGreaterThan opGreaterThan opLessThan >>>>> opUpToDay opUpThruDay opIsEmpty conditionGroup tabindex></#macro> >>>>> >>>>> -<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> tabindex> >>>>> +<#macro renderRangeFindField className alert name value size maxlength >>>>> autocomplete titleStyle defaultOptionFrom opEquals opGreaterThan >>>>> opGreaterThanEquals opLessThan opLessThanEquals value2 defaultOptionThru >>>>> conditionGroup tabindex> >>>>> </#macro> >>>>> >>>>> -<#macro renderLookupField name formName fieldFormName className="" >>>>> alert="false" value="" size="" maxlength="" id="" event="" action="" >>>>> readonly=false autocomplete="" descriptionFieldName="" >>>>> targetParameterIter="" imgSrc="" ajaxUrl="" ajaxEnabled=javaScriptEnabled >>>>> presentation="layer" width="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default">></#macro> >>>>> +<#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="" height="" position="" fadeBackground="true" >>>>> clearText="" showDescription="" initiallyCollapsed="" lastViewName="main" >>>>> tabindex="" delegatorName="default">></#macro> >>>>> <#macro renderNextPrev paginateStyle paginateFirstStyle viewIndex >>>>> highIndex listSize viewSize ajaxEnabled javaScriptEnabled ajaxFirstUrl >>>>> firstUrl paginateFirstLabel paginatePreviousStyle ajaxPreviousUrl >>>>> previousUrl paginatePreviousLabel pageLabel ajaxSelectUrl selectUrl >>>>> ajaxSelectSizeUrl selectSizeUrl commonDisplaying paginateNextStyle >>>>> ajaxNextUrl nextUrl paginateNextLabel paginateLastStyle ajaxLastUrl lastUrl >>>>> paginateLastLabel paginateViewSizeLabel></#macro> >>>>> <#macro renderFileField className alert name value size maxlength >>>>> autocomplete tabindex></#macro> >>>>> <#macro renderPasswordField className alert name value size maxlength >>>>> id autocomplete tabindex></#macro> >>>>> >>>>> |
Free forum by Nabble | Edit this page |