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,  <p...@apache.org> 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>&nbsp;</#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("&nbsp;", " 
> ")}</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>&nbsp;</#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 + "&amp;_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>&nbsp;</#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>
>
>

Reply via email to