svn commit: r603735 - in /ofbiz/trunk/applications/product: config/ src/org/ofbiz/product/product/ webapp/catalog/WEB-INF/actions/find/ webapp/catalog/find/

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r603735 - in /ofbiz/trunk/applications/product: config/ src/org/ofbiz/product/product/ webapp/catalog/WEB-INF/actions/find/ webapp/catalog/find/

mrisaliti
Author: mrisaliti
Date: Wed Dec 12 12:49:03 2007
New Revision: 603735

URL: http://svn.apache.org/viewvc?rev=603735&view=rev
Log:
Now is it possible to search the product by GoodIdentification Type/Value (Part of issue OFBIZ-1372)

Modified:
    ofbiz/trunk/applications/product/config/ProductUiLabels.properties
    ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties
    ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java
    ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java
    ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/find/advancedsearchoptions.bsh
    ofbiz/trunk/applications/product/webapp/catalog/find/advancedsearch.ftl
    ofbiz/trunk/applications/product/webapp/catalog/find/keywordsearch.ftl

Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels.properties?rev=603735&r1=603734&r2=603735&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/config/ProductUiLabels.properties (original)
+++ ofbiz/trunk/applications/product/config/ProductUiLabels.properties Wed Dec 12 12:49:03 2007
@@ -648,6 +648,8 @@
 ProductGlobalPriceRule=Global Price Rule
 ProductGlobalPriceRules=Global Price Rules
 ProductGoodIdentification=Good Identification
+ProductGoodIdentificationType=Good Identification Type
+ProductGoodIdentificationValue=Good Identification Value
 ProductGoToFeatureCategory=Go to Feature Category
 ProductGrams=Grams
 ProductGroupMemberMaintenance=Group Member Maintenance

Modified: ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties?rev=603735&r1=603734&r2=603735&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties (original)
+++ ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties Wed Dec 12 12:49:03 2007
@@ -628,7 +628,10 @@
 ProductGlobal=Globale
 ProductGlobalPriceRule=Regola Globale Prezzi
 ProductGlobalPriceRules=Regole Globali Prezzi
-ProductGoodIdentification=Giusta Identificazione
+ProductGoodIdentification=Identificazione Prodotto
+ProductGoodIdentificationTypeValue=Tipo/Valore Identificazione Prodotto
+ProductGoodIdentificationType=Tipo Identificazione Prodotto
+ProductGoodIdentificationValue=Valore Identificazione Prodotto
 ProductGoToFeatureCategory=Vai alle Categoria Caratteristiche
 ProductGrams=Grammi
 ProductGroupMemberMaintenance=Manutenzione Membri Gruppo

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java?rev=603735&r1=603734&r2=603735&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java Wed Dec 12 12:49:03 2007
@@ -40,6 +40,7 @@
 import org.ofbiz.entity.GenericDelegator;
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.condition.EntityComparisonOperator;
 import org.ofbiz.entity.condition.EntityCondition;
 import org.ofbiz.entity.condition.EntityConditionList;
 import org.ofbiz.entity.condition.EntityConditionParam;
@@ -68,6 +69,7 @@
 
     public static final String module = ProductSearch.class.getName();
     public static final String resource = "ProductUiLabels";
+    public static final String resourceCommon = "CommonUiLabels";
 
     public static ArrayList parametricKeywordSearch(Map featureIdByType, String keywordsString, GenericDelegator delegator, String productCategoryId, String visitId, boolean anyPrefix, boolean anySuffix, boolean isAnd) {
         Set featureIdSet = FastSet.newInstance();
@@ -1710,6 +1712,96 @@
         public boolean equals(Object obj) {
             ProductSearchConstraint psc = (ProductSearchConstraint) obj;
             if (psc instanceof AvailabilityDateConstraint) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+    }
+    
+    public static class GoodIdentificationConstraint extends ProductSearchConstraint {
+        public static final String constraintName = "GoodIdentification";
+        protected String goodIdentificationTypeId;
+        protected String goodIdentificationValue;
+        protected Boolean include;
+
+        public GoodIdentificationConstraint(String goodIdentificationTypeId, String goodIdentificationValue, Boolean include) {
+            this.goodIdentificationTypeId = goodIdentificationTypeId;
+            this.goodIdentificationValue = goodIdentificationValue;
+            this.include = include;
+        }
+
+        public void addConstraint(ProductSearchContext productSearchContext) {
+            if (UtilValidate.isNotEmpty(goodIdentificationTypeId) ||
+                UtilValidate.isNotEmpty(goodIdentificationValue) ||
+                UtilValidate.isNotEmpty(include)) {
+                
+                // make index based values and increment
+                String entityAlias = "GI" + productSearchContext.index;
+                String prefix = "gi" + productSearchContext.index;
+                productSearchContext.index++;
+
+                
+                EntityComparisonOperator operator = EntityOperator.EQUALS;
+                
+                if (UtilValidate.isNotEmpty(include) && include == Boolean.FALSE) {
+                    operator = EntityOperator.NOT_EQUAL;
+                }
+                
+                productSearchContext.dynamicViewEntity.addMemberEntity(entityAlias, "GoodIdentification");
+                
+                if (UtilValidate.isNotEmpty(goodIdentificationTypeId)) {
+                    productSearchContext.dynamicViewEntity.addAlias(entityAlias, prefix + "GoodIdentificationTypeId", "goodIdentificationTypeId", null, null, null, null);
+                    productSearchContext.entityConditionList.add(new EntityExpr(prefix + "GoodIdentificationTypeId", operator, goodIdentificationTypeId));
+                }
+                
+                if (UtilValidate.isNotEmpty(goodIdentificationValue)) {
+                    productSearchContext.dynamicViewEntity.addAlias(entityAlias, prefix + "GoodIdentificationValue", "idValue", null, null, null, null);
+                    productSearchContext.entityConditionList.add(new EntityExpr(prefix + "GoodIdentificationValue", operator, goodIdentificationValue));
+                }
+                
+                productSearchContext.dynamicViewEntity.addViewLink("PROD", entityAlias, Boolean.FALSE, ModelKeyMap.makeKeyMapList("productId"));
+                
+                productSearchContext.productSearchConstraintList.add(productSearchContext.getDelegator().makeValue("ProductSearchConstraint",
+                        UtilMisc.toMap("constraintName", constraintName, "infoString", "goodIdentificationTypeId [" + this.goodIdentificationTypeId + "] goodIdentificationValue [" + this.goodIdentificationValue + "] include [" + this.include + "]")));
+            }
+        }
+
+        public String prettyPrintConstraint(GenericDelegator delegator, boolean detailed, Locale locale) {
+            if (UtilValidate.isEmpty(goodIdentificationTypeId) &&
+                UtilValidate.isEmpty(goodIdentificationValue) &&
+                UtilValidate.isEmpty(include)) {
+                return null;
+            }
+            
+            StringBuffer msgBuf = new StringBuffer();
+            
+            if (UtilValidate.isNotEmpty(include) && include == Boolean.FALSE) {
+                msgBuf.append(UtilProperties.getMessage(resourceCommon, "CommonExclude", locale));
+                msgBuf.append(" ");
+            } else {
+                msgBuf.append(UtilProperties.getMessage(resourceCommon, "CommonInclude", locale));
+                msgBuf.append(" ");
+            }
+            
+            if (UtilValidate.isNotEmpty(goodIdentificationTypeId)) {
+                msgBuf.append(UtilProperties.getMessage(resource, "ProductIdType", locale));
+                msgBuf.append(": ");
+                msgBuf.append(goodIdentificationTypeId);
+                msgBuf.append(" ");
+            }
+            
+            if (UtilValidate.isNotEmpty(goodIdentificationValue)) {
+                msgBuf.append(UtilProperties.getMessage(resource, "ProductIdValue", locale));
+                msgBuf.append(" ");
+                msgBuf.append(goodIdentificationValue);
+            }
+            return msgBuf.toString();
+        }
+
+        public boolean equals(Object obj) {
+            ProductSearchConstraint psc = (ProductSearchConstraint) obj;
+            if (psc instanceof GoodIdentificationConstraint) {
                 return true;
             } else {
                 return false;

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java?rev=603735&r1=603734&r2=603735&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java Wed Dec 12 12:49:03 2007
@@ -548,7 +548,7 @@
             ProductSearchOptions.setTopProductCategoryId(prioritizeCategoryId, session);
             constraintsChanged = true;
         }
-
+        
         // if there is another category, add a constraint for it
         if (UtilValidate.isNotEmpty((String) parameters.get("SEARCH_CATEGORY_ID"))) {
             String searchCategoryId = (String) parameters.get("SEARCH_CATEGORY_ID");
@@ -768,6 +768,22 @@
 
         if ("true".equalsIgnoreCase((String) parameters.get("AVAILABILITY_FILTER"))) {
             searchAddConstraint(new ProductSearch.AvailabilityDateConstraint(), session);
+            constraintsChanged = true;
+        }
+        
+        if (UtilValidate.isNotEmpty((String) parameters.get("SEARCH_GOOD_IDENTIFICATION_TYPE")) ||
+            UtilValidate.isNotEmpty((String) parameters.get("SEARCH_GOOD_IDENTIFICATION_VALUE"))) {
+            String include = (String) parameters.get("SEARCH_GOOD_IDENTIFICATION_INCL");
+            if (UtilValidate.isEmpty(include)) {
+                include = "Y";
+            }
+            Boolean inc =  Boolean.TRUE;
+            if ("N".equalsIgnoreCase(include)) {
+                inc =  Boolean.FALSE;
+            }
+            
+            searchAddConstraint(new ProductSearch.GoodIdentificationConstraint((String)parameters.get("SEARCH_GOOD_IDENTIFICATION_TYPE"),
+                                (String) parameters.get("SEARCH_GOOD_IDENTIFICATION_VALUE"), inc), session);
             constraintsChanged = true;
         }
 

Modified: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/find/advancedsearchoptions.bsh
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/find/advancedsearchoptions.bsh?rev=603735&r1=603734&r2=603735&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/find/advancedsearchoptions.bsh (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/find/advancedsearchoptions.bsh Wed Dec 12 12:49:03 2007
@@ -47,6 +47,9 @@
 // get suppliers in system
 supplerPartyRoleAndPartyDetails = delegator.findByAnd("PartyRoleAndPartyDetail", UtilMisc.toMap("roleTypeId", "SUPPLIER"), UtilMisc.toList("groupName", "firstName"));
 
+// get the GoodIdentification types
+goodIdentificationTypes = delegator.findAll("GoodIdentificationType", UtilMisc.toList("description"));
+
 context.put("searchCategoryId", searchCategoryId);
 context.put("searchCategory", searchCategory);
 context.put("productFeaturesByTypeMap", productFeaturesByTypeMap);
@@ -55,3 +58,4 @@
 context.put("searchConstraintStrings", searchConstraintStrings);
 context.put("searchSortOrderString", searchSortOrderString);
 context.put("supplerPartyRoleAndPartyDetails", supplerPartyRoleAndPartyDetails);
+context.put("goodIdentificationTypes", goodIdentificationTypes);
\ No newline at end of file

Modified: ofbiz/trunk/applications/product/webapp/catalog/find/advancedsearch.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/find/advancedsearch.ftl?rev=603735&r1=603734&r2=603735&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/find/advancedsearch.ftl (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/find/advancedsearch.ftl Wed Dec 12 12:49:03 2007
@@ -16,254 +16,281 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<h1>${uiLabelMap.ProductAdvancedSearchinCategory}</h1>
-<br/>
-<form name="advtokeywordsearchform" method="post" action="<@ofbizUrl>keywordsearch</@ofbizUrl>" style="margin: 0;">
-  <input type="hidden" name="VIEW_SIZE" value="25"/>
-  <input type="hidden" name="PAGING" value="Y"/>
-  <table border="0" wdith="100%">
-    <#if searchCategory?has_content>
-        <input type="hidden" name="SEARCH_CATEGORY_ID" value="${searchCategoryId?if_exists}"/>
+<div class="screenlet">
+  <div class="screenlet-title-bar">
+    <h3>${uiLabelMap.ProductAdvancedSearchinCategory}</h3>
+  </div>  
+  <div class="screenlet-body">
+    <form name="advtokeywordsearchform" method="post" action="<@ofbizUrl>keywordsearch</@ofbizUrl>" style="margin: 0;">
+      <input type="hidden" name="VIEW_SIZE" value="25"/>
+      <input type="hidden" name="PAGING" value="Y"/>
+      <table border="0" width="100%">
+        <#if searchCategory?has_content>
+            <input type="hidden" name="SEARCH_CATEGORY_ID" value="${searchCategoryId?if_exists}"/>
+            <tr>
+              <td class="label" align="right" valign="middle">
+                ${uiLabelMap.ProductCategory}:
+              </td>
+              <td valign="middle">
+                <div class="tabletext">
+                  <b>"${(searchCategory.description)?if_exists}" [${(searchCategory.productCategoryId)?if_exists}]</b> ${uiLabelMap.ProductIncludeSubCategories}?
+                  ${uiLabelMap.CommonYes}<input type="radio" name="SEARCH_SUB_CATEGORIES" value="Y" checked/>
+                  ${uiLabelMap.CommonNo}<input type="radio" name="SEARCH_SUB_CATEGORIES" value="N"/>
+                </div>
+              </td>
+            </tr>
+        <#else>
+            <tr>
+               <td class="label" align="right" valign="top">
+                 ${uiLabelMap.ProductCatalog}:
+               </td>
+               <td valign="middle">
+                 <div class="tabletext">
+                    <select class="selectBox" name="SEARCH_CATALOG_ID">
+                      <option value="">- ${uiLabelMap.ProductAnyCatalog} -</option>
+                      <#list prodCatalogs as prodCatalog>
+                        <#assign displayDesc = prodCatalog.catalogName?default("${uiLabelMap.ProductNoDescription}")>
+                          <#if 18 < displayDesc?length>
+                            <#assign displayDesc = displayDesc[0..15] + "...">
+                          </#if>
+                          <option value="${prodCatalog.prodCatalogId}">${displayDesc} [${prodCatalog.prodCatalogId}]</option>
+                      </#list>
+                    </select>
+                 </div>
+               </td>
+            </tr>    
+            <tr>
+              <td class="label" align="right" valign="top">
+                ${uiLabelMap.ProductCategory}:
+              </td>
+              <td valign="middle">
+                <div class="tabletext">
+                  <input type="text" class="inputBox" name="SEARCH_CATEGORY_ID" size="20" maxlength="20" value="${requestParameters.SEARCH_CATEGORY_ID?if_exists}"/>
+                  <a href="javascript:call_fieldlookup2(document.advtokeywordsearchform.SEARCH_CATEGORY_ID,'LookupProductCategory');"><img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'/></a>
+                  ${uiLabelMap.ProductIncludeSubCategories}?
+                  ${uiLabelMap.CommonYes}<input type="radio" name="SEARCH_SUB_CATEGORIES" value="Y" checked="checked"/>
+                  ${uiLabelMap.CommonNo}<input type="radio" name="SEARCH_SUB_CATEGORIES" value="N"/>
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_CATEGORY_EXC" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_CATEGORY_EXC" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_CATEGORY_EXC" value="N"/>
+                </div>
+              </td>
+            </tr>
+        </#if>
         <tr>
-          <td align="right" valign="middle">
-            <div class="tabletext">${uiLabelMap.ProductCategory}:</div>
+          <td class="label" align="right" valign="top">
+            ${uiLabelMap.ProductKeywords}:
           </td>
           <td valign="middle">
             <div class="tabletext">
-              <b>"${(searchCategory.description)?if_exists}" [${(searchCategory.productCategoryId)?if_exists}]</b> ${uiLabelMap.ProductIncludeSubCategories}?
-              ${uiLabelMap.CommonYes}<input type="radio" name="SEARCH_SUB_CATEGORIES" value="Y" checked/>
-              ${uiLabelMap.CommonNo}<input type="radio" name="SEARCH_SUB_CATEGORIES" value="N"/>
+              <input type="text" class="inputBox" name="SEARCH_STRING" size="40" value="${requestParameters.SEARCH_STRING?if_exists}"/>&nbsp;
+              ${uiLabelMap.CommonAny}<input type="radio" name="SEARCH_OPERATOR" value="OR" <#if searchOperator == "OR">checked</#if>/>
+              ${uiLabelMap.CommonAll}<input type="radio" name="SEARCH_OPERATOR" value="AND" <#if searchOperator == "AND">checked</#if>/>
             </div>
           </td>
         </tr>
-    <#else>
-        <tr>
-           <td align="right" valign="top">
-             <div class="tabletext">${uiLabelMap.ProductCatalog}:</div>
-           </td>
-           <td valign="middle">
-             <div class="tabletext">
-                <select class="selectBox" name="SEARCH_CATALOG_ID">
-                  <option value="">- ${uiLabelMap.ProductAnyCatalog} -</option>
-                  <#list prodCatalogs as prodCatalog>
-                    <#assign displayDesc = prodCatalog.catalogName?default("${uiLabelMap.ProductNoDescription}")>
-                      <#if 18 < displayDesc?length>
-                        <#assign displayDesc = displayDesc[0..15] + "...">
-                      </#if>
-                      <option value="${prodCatalog.prodCatalogId}">${displayDesc} [${prodCatalog.prodCatalogId}]</option>
+        <tr>
+          <td class="label" align="right" valign="top">
+            ${uiLabelMap.ProductFeatureCategory} ${uiLabelMap.CommonIds}:
+          </td>
+          <td valign="middle">
+            <div>
+              <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_CAT1" size="15" value="${requestParameters.SEARCH_PROD_FEAT_CAT1?if_exists}"/>&nbsp;
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC1" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC1" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC1" value="N"/>
+            </div>
+            <div>
+              <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_CAT2" size="15" value="${requestParameters.SEARCH_PROD_FEAT_CAT2?if_exists}"/>&nbsp;
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC2" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC2" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC2" value="N"/>
+            </div>
+            <div>
+              <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_CAT3" size="15" value="${requestParameters.SEARCH_PROD_FEAT_CAT3?if_exists}"/>&nbsp;
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC3" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC3" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC3" value="N"/>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td class="label" align="right" valign="top">
+            ${uiLabelMap.ProductFeatureGroup} ${uiLabelMap.CommonIds}:
+          </td>
+          <td valign="middle">
+            <div>
+              <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_GRP1" size="15" value="${requestParameters.SEARCH_PROD_FEAT_GRP1?if_exists}"/>&nbsp;
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC1" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC1" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC1" value="N"/>
+            </div>
+            <div>
+              <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_GRP2" size="15" value="${requestParameters.SEARCH_PROD_FEAT_GRP2?if_exists}"/>&nbsp;
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC2" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC2" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC2" value="N"/>
+            </div>
+            <div>
+              <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_GRP3" size="15" value="${requestParameters.SEARCH_PROD_FEAT_GRP3?if_exists}"/>&nbsp;
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC3" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC3" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC3" value="N"/>
+            </div>
+          </td>
+        </tr>
+        
+        <tr>
+          <td class="label" align="right" valign="top">
+            ${uiLabelMap.ProductFeatures} ${uiLabelMap.CommonIds}:
+          </td>
+          <td valign="middle">
+            <div>
+              <input type="text" class="inputBox" name="SEARCH_FEAT1" size="15" value="${requestParameters.SEARCH_FEAT1?if_exists}"/>&nbsp;
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_FEAT_EXC1" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_FEAT_EXC1" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_FEAT_EXC1" value="N"/>
+            </div>
+            <div>
+              <input type="text" class="inputBox" name="SEARCH_FEAT2" size="15" value="${requestParameters.SEARCH_FEAT2?if_exists}"/>&nbsp;
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_FEAT_EXC2" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_FEAT_EXC2" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_FEAT_EXC2" value="N"/>
+            </div>
+            <div>
+              <input type="text" class="inputBox" name="SEARCH_FEAT3" size="15" value="${requestParameters.SEARCH_FEAT3?if_exists}"/>&nbsp;
+                  ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_FEAT_EXC3" value="" checked="checked"/>
+                  ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_FEAT_EXC3" value="Y"/>
+                  ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_FEAT_EXC3" value="N"/>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td class="label" align="right" valign="top">
+            ${uiLabelMap.ListPriceRange}:
+          </td>
+          <td valign="middle">
+            <div>
+              <input type="text" class="inputBox" name="LIST_PRICE_LOW" size="8" value="${requestParameters.LIST_PRICE_LOW?if_exists}"/>&nbsp;
+              <input type="text" class="inputBox" name="LIST_PRICE_HIGH" size="8" value="${requestParameters.LIST_PRICE_HIGH?if_exists}"/>&nbsp;
+            </div>  
+          </td>
+        </tr>
+        <#list productFeatureTypeIdsOrdered as productFeatureTypeId>
+          <#assign findPftMap = Static["org.ofbiz.base.util.UtilMisc"].toMap("productFeatureTypeId", productFeatureTypeId)>
+          <#assign productFeatureType = delegator.findByPrimaryKeyCache("ProductFeatureType", findPftMap)>
+          <#assign productFeatures = productFeaturesByTypeMap[productFeatureTypeId]>
+          <tr>
+            <td class="label" align="right" valign="middle">
+              ${(productFeatureType.get("description",locale))?if_exists}:
+            </td>
+            <td valign="middle">
+              <div class="tabletext">
+                <select class="selectBox" name="pft_${productFeatureTypeId}">
+                  <option value="">- ${uiLabelMap.CommonSelectAny} -</option>
+                  <#list productFeatures as productFeature>
+                  <option value="${productFeature.productFeatureId}">${productFeature.description?default("${uiLabelMap.ProductNoDescription}")} [${productFeature.productFeatureId}]</option>
                   </#list>
                 </select>
-             </div>
-           </td>
-        </tr>    
+              </div>
+            </td>
+          </tr>
+        </#list>
         <tr>
-          <td align="right" valign="top">
-            <div class="tabletext">${uiLabelMap.ProductCategory}:</div>
+          <td class="label" align="right" valign="middle">
+            ${uiLabelMap.ProductSupplier}:
           </td>
           <td valign="middle">
             <div class="tabletext">
-              <input type="text" class="inputBox" name="SEARCH_CATEGORY_ID" size="20" maxlength="20" value="${requestParameters.SEARCH_CATEGORY_ID?if_exists}"/>
-              <a href="javascript:call_fieldlookup2(document.advtokeywordsearchform.SEARCH_CATEGORY_ID,'LookupProductCategory');"><img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'/></a>
-              ${uiLabelMap.ProductIncludeSubCategories}?
-              ${uiLabelMap.CommonYes}<input type="radio" name="SEARCH_SUB_CATEGORIES" value="Y" checked="checked"/>
-              ${uiLabelMap.CommonNo}<input type="radio" name="SEARCH_SUB_CATEGORIES" value="N"/>
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_CATEGORY_EXC" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_CATEGORY_EXC" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_CATEGORY_EXC" value="N"/>
-            </div>
-          </td>
-        </tr>
-    </#if>
-    <tr>
-      <td align="right" valign="top">
-        <div class="tabletext">${uiLabelMap.ProductKeywords}:</div>
-      </td>
-      <td valign="middle">
-        <div class="tabletext">
-          <input type="text" class="inputBox" name="SEARCH_STRING" size="40" value="${requestParameters.SEARCH_STRING?if_exists}"/>&nbsp;
-          ${uiLabelMap.CommonAny}<input type="radio" name="SEARCH_OPERATOR" value="OR" <#if searchOperator == "OR">checked</#if>/>
-          ${uiLabelMap.CommonAll}<input type="radio" name="SEARCH_OPERATOR" value="AND" <#if searchOperator == "AND">checked</#if>/>
-        </div>
-      </td>
-    </tr>
-    <tr>
-      <td align="right" valign="top">
-        <div class="tabletext">${uiLabelMap.ProductFeatureCategory} ${uiLabelMap.CommonIds}:</div>
-      </td>
-      <td valign="middle">
-        <div>
-          <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_CAT1" size="15" value="${requestParameters.SEARCH_PROD_FEAT_CAT1?if_exists}"/>&nbsp;
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC1" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC1" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC1" value="N"/>
-        </div>
-        <div>
-          <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_CAT2" size="15" value="${requestParameters.SEARCH_PROD_FEAT_CAT2?if_exists}"/>&nbsp;
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC2" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC2" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC2" value="N"/>
-        </div>
-        <div>
-          <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_CAT3" size="15" value="${requestParameters.SEARCH_PROD_FEAT_CAT3?if_exists}"/>&nbsp;
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC3" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC3" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_CAT_EXC3" value="N"/>
-        </div>
-      </td>
-    </tr>
-    <tr>
-      <td align="right" valign="top">
-        <div class="tabletext">${uiLabelMap.ProductFeatureGroup} ${uiLabelMap.CommonIds}:</div>
-      </td>
-      <td valign="middle">
-        <div>
-          <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_GRP1" size="15" value="${requestParameters.SEARCH_PROD_FEAT_GRP1?if_exists}"/>&nbsp;
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC1" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC1" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC1" value="N"/>
-        </div>
-        <div>
-          <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_GRP2" size="15" value="${requestParameters.SEARCH_PROD_FEAT_GRP2?if_exists}"/>&nbsp;
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC2" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC2" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC2" value="N"/>
-        </div>
-        <div>
-          <input type="text" class="inputBox" name="SEARCH_PROD_FEAT_GRP3" size="15" value="${requestParameters.SEARCH_PROD_FEAT_GRP3?if_exists}"/>&nbsp;
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC3" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC3" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_PROD_FEAT_GRP_EXC3" value="N"/>
-        </div>
-      </td>
-    </tr>
-    
-    <tr>
-      <td align="right" valign="top">
-        <div class="tabletext">${uiLabelMap.ProductFeatures} ${uiLabelMap.CommonIds}:</div>
-      </td>
-      <td valign="middle">
-        <div>
-          <input type="text" class="inputBox" name="SEARCH_FEAT1" size="15" value="${requestParameters.SEARCH_FEAT1?if_exists}"/>&nbsp;
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_FEAT_EXC1" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_FEAT_EXC1" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_FEAT_EXC1" value="N"/>
-        </div>
-        <div>
-          <input type="text" class="inputBox" name="SEARCH_FEAT2" size="15" value="${requestParameters.SEARCH_FEAT2?if_exists}"/>&nbsp;
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_FEAT_EXC2" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_FEAT_EXC2" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_FEAT_EXC2" value="N"/>
-        </div>
-        <div>
-          <input type="text" class="inputBox" name="SEARCH_FEAT3" size="15" value="${requestParameters.SEARCH_FEAT3?if_exists}"/>&nbsp;
-              ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_FEAT_EXC3" value="" checked="checked"/>
-              ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_FEAT_EXC3" value="Y"/>
-              ${uiLabelMap.CommonAlwaysInclude}<input type="radio" name="SEARCH_FEAT_EXC3" value="N"/>
-        </div>
-      </td>
-    </tr>
-    <tr>
-      <td align="right" valign="top">
-        <div>${uiLabelMap.ListPriceRange}:</div>
-      </td>
-      <td valign="middle">
-        <div>
-          <input type="text" class="inputBox" name="LIST_PRICE_LOW" size="8" value="${requestParameters.LIST_PRICE_LOW?if_exists}"/>&nbsp;
-          <input type="text" class="inputBox" name="LIST_PRICE_HIGH" size="8" value="${requestParameters.LIST_PRICE_HIGH?if_exists}"/>&nbsp;
-        </div>  
-      </td>
-    </tr>
-    <#list productFeatureTypeIdsOrdered as productFeatureTypeId>
-      <#assign findPftMap = Static["org.ofbiz.base.util.UtilMisc"].toMap("productFeatureTypeId", productFeatureTypeId)>
-      <#assign productFeatureType = delegator.findByPrimaryKeyCache("ProductFeatureType", findPftMap)>
-      <#assign productFeatures = productFeaturesByTypeMap[productFeatureTypeId]>
-      <tr>
-        <td align="right" valign="middle">
-          <div class="tabletext">${(productFeatureType.get("description",locale))?if_exists}:</div>
-        </td>
-        <td valign="middle">
-          <div class="tabletext">
-            <select class="selectBox" name="pft_${productFeatureTypeId}">
+              <select name="SEARCH_SUPPLIER_ID" class="selectBox">
+                <option value="">- ${uiLabelMap.CommonSelectAny} -</option>
+                <#list supplerPartyRoleAndPartyDetails as supplerPartyRoleAndPartyDetail>
+                  <option value="${supplerPartyRoleAndPartyDetail.partyId}">${supplerPartyRoleAndPartyDetail.groupName?if_exists} ${supplerPartyRoleAndPartyDetail.firstName?if_exists} ${supplerPartyRoleAndPartyDetail.lastName?if_exists} [${supplerPartyRoleAndPartyDetail.partyId}]</option>
+                </#list>
+              </select>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td class="label" align="right" valign="middle">
+            ${uiLabelMap.CommonSortedBy}:
+          </td>
+          <td valign="middle">
+            <div class="tabletext">
+              <select name="sortOrder" class="selectBox">
+                <option value="SortKeywordRelevancy">${uiLabelMap.ProductKeywordRelevancy}</option>
+                <option value="SortProductField:productName">${uiLabelMap.ProductProductName}</option>
+                <option value="SortProductField:internalName">${uiLabelMap.ProductInternalName}</option>
+                <option value="SortProductField:totalQuantityOrdered">${uiLabelMap.ProductPopularityByOrders}</option>
+                <option value="SortProductField:totalTimesViewed">${uiLabelMap.ProductPopularityByViews}</option>
+                <option value="SortProductField:averageCustomerRating">${uiLabelMap.ProductCustomerRating}</option>
+                <option value="SortProductPrice:LIST_PRICE">${uiLabelMap.ProductListPrice}</option>
+                <option value="SortProductPrice:DEFAULT_PRICE">${uiLabelMap.ProductDefaultPrice}</option>
+                <option value="SortProductPrice:AVERAGE_COST">${uiLabelMap.ProductAverageCost}</option>
+                <option value="SortProductPrice:MINIMUM_PRICE">${uiLabelMap.ProductMinimumPrice}</option>
+                <option value="SortProductPrice:MAXIMUM_PRICE">${uiLabelMap.ProductMaximumPrice}</option>
+              </select>
+              ${uiLabelMap.ProductLowToHigh}<input type="radio" name="sortAscending" value="Y" checked/>
+              ${uiLabelMap.ProductHighToLow}<input type="radio" name="sortAscending" value="N"/>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td class="label" align="right" valign="middle">
+            ${uiLabelMap.ProductPrioritizeProductsinCategory}:
+          </td>
+          <td valign="middle">
+            <input type="text" class="inputBox" name="PRIORITIZE_CATEGORY_ID" size="20" maxlength="20" value="${requestParameters.PRIORITIZE_CATEGORY_ID?if_exists}"/>
+            <a href="javascript:call_fieldlookup2(document.advtokeywordsearchform.PRIORITIZE_CATEGORY_ID,'LookupProductCategory');"><img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'/></a>
+          </td>
+        </tr>
+        <tr>
+          <td class="label">
+            ${uiLabelMap.ProductGoodIdentificationType}
+          </td>
+          <td>
+            <select name="SEARCH_GOOD_IDENTIFICATION_TYPE" class="selectBox">
               <option value="">- ${uiLabelMap.CommonSelectAny} -</option>
-              <#list productFeatures as productFeature>
-              <option value="${productFeature.productFeatureId}">${productFeature.description?default("${uiLabelMap.ProductNoDescription}")} [${productFeature.productFeatureId}]</option>
+              <#list goodIdentificationTypes as goodIdentificationType>
+              <option value="${goodIdentificationType.goodIdentificationTypeId}">${goodIdentificationType.get("description")?if_exists}</option>
               </#list>
             </select>
-          </div>
-        </td>
-      </tr>
-    </#list>
-    <tr>
-      <td align="right" valign="middle">
-        <div class="tabletext">${uiLabelMap.ProductSupplier}:</div>
-      </td>
-      <td valign="middle">
-        <div class="tabletext">
-          <select name="SEARCH_SUPPLIER_ID" class="selectBox">
-            <option value="">- ${uiLabelMap.CommonSelectAny} -</option>
-            <#list supplerPartyRoleAndPartyDetails as supplerPartyRoleAndPartyDetail>
-              <option value="${supplerPartyRoleAndPartyDetail.partyId}">${supplerPartyRoleAndPartyDetail.groupName?if_exists} ${supplerPartyRoleAndPartyDetail.firstName?if_exists} ${supplerPartyRoleAndPartyDetail.lastName?if_exists} [${supplerPartyRoleAndPartyDetail.partyId}]</option>
-            </#list>
-          </select>
-        </div>
-      </td>
-    </tr>
-    <tr>
-      <td align="right" valign="middle">
-        <div class="tabletext">${uiLabelMap.CommonSortedBy}:</div>
-      </td>
-      <td valign="middle">
-        <div class="tabletext">
-          <select name="sortOrder" class="selectBox">
-            <option value="SortKeywordRelevancy">${uiLabelMap.ProductKeywordRelevancy}</option>
-            <option value="SortProductField:productName">${uiLabelMap.ProductProductName}</option>
-            <option value="SortProductField:internalName">${uiLabelMap.ProductInternalName}</option>
-            <option value="SortProductField:totalQuantityOrdered">${uiLabelMap.ProductPopularityByOrders}</option>
-            <option value="SortProductField:totalTimesViewed">${uiLabelMap.ProductPopularityByViews}</option>
-            <option value="SortProductField:averageCustomerRating">${uiLabelMap.ProductCustomerRating}</option>
-            <option value="SortProductPrice:LIST_PRICE">${uiLabelMap.ProductListPrice}</option>
-            <option value="SortProductPrice:DEFAULT_PRICE">${uiLabelMap.ProductDefaultPrice}</option>
-            <option value="SortProductPrice:AVERAGE_COST">${uiLabelMap.ProductAverageCost}</option>
-            <option value="SortProductPrice:MINIMUM_PRICE">${uiLabelMap.ProductMinimumPrice}</option>
-            <option value="SortProductPrice:MAXIMUM_PRICE">${uiLabelMap.ProductMaximumPrice}</option>
-          </select>
-          ${uiLabelMap.ProductLowToHigh}<input type="radio" name="sortAscending" value="Y" checked/>
-          ${uiLabelMap.ProductHighToLow}<input type="radio" name="sortAscending" value="N"/>
-        </div>
-      </td>
-    </tr>
-    <tr>
-      <td align="right" valign="middle">
-        ${uiLabelMap.ProductPrioritizeProductsinCategory}:
-      </td>
-      <td valign="middle">
-        <input type="text" class="inputBox" name="PRIORITIZE_CATEGORY_ID" size="20" maxlength="20" value="${requestParameters.PRIORITIZE_CATEGORY_ID?if_exists}"/>
-        <a href="javascript:call_fieldlookup2(document.advtokeywordsearchform.PRIORITIZE_CATEGORY_ID,'LookupProductCategory');"><img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'/></a>
-      </td>
-    </tr>
-    <#if searchConstraintStrings?has_content>
-      <tr>
-        <td align="right" valign="top">
-          <div class="tabletext">${uiLabelMap.ProductLastSearch}</div>
-        </td>
-        <td valign="top">
-            <#list searchConstraintStrings as searchConstraintString>
-                <div class="tabletext">&nbsp;-&nbsp;${searchConstraintString}</div>
-            </#list>
-            <div class="tabletext">${uiLabelMap.CommonSortedBy}: ${searchSortOrderString}</div>
-            <div class="tabletext">
-              ${uiLabelMap.ProductNewSearch}<input type="radio" name="clearSearch" value="Y" checked="checked"/>
-              ${uiLabelMap.ProductRefineSearch}<input type="radio" name="clearSearch" value="N"/>
-            </div>
-        </td>
-      </tr>
-    </#if>
-    <tr>
-      <td>
-        <div class="tabletext">
-          <a href="javascript:document.advtokeywordsearchform.submit()" class="buttontext">${uiLabelMap.CommonFind}</a>
-        </div>
-      </td>
-    </tr>
-  </table>
-</form>
+          </td>
+        </tr>
+        <tr>
+          <td class="label">
+            ${uiLabelMap.ProductGoodIdentificationValue}
+          </td>
+          <td>
+            <input type="text" class="inputBox" name="SEARCH_GOOD_IDENTIFICATION_VALUE" size="60" maxlength="60" value="${requestParameters.SEARCH_GOOD_IDENTIFICATION_VALUE?if_exists}"/>
+            ${uiLabelMap.CommonInclude}<input type="radio" name="SEARCH_GOOD_IDENTIFICATION_INCL" value="Y" checked="checked"/>
+            ${uiLabelMap.CommonExclude}<input type="radio" name="SEARCH_GOOD_IDENTIFICATION_INCL" value="N"/>
+          </td>
+        </tr>
+        <#if searchConstraintStrings?has_content>
+          <tr>
+            <td align="right" valign="top">
+              <div class="tabletext">${uiLabelMap.ProductLastSearch}</div>
+            </td>
+            <td valign="top">
+                <#list searchConstraintStrings as searchConstraintString>
+                    <div class="tabletext">&nbsp;-&nbsp;${searchConstraintString}</div>
+                </#list>
+                <div class="tabletext">${uiLabelMap.CommonSortedBy}: ${searchSortOrderString}</div>
+                <div class="tabletext">
+                  ${uiLabelMap.ProductNewSearch}<input type="radio" name="clearSearch" value="Y" checked="checked"/>
+                  ${uiLabelMap.ProductRefineSearch}<input type="radio" name="clearSearch" value="N"/>
+                </div>
+            </td>
+          </tr>
+        </#if>
+        <tr>
+          <td align="center" colspan="2">
+            <hr/>
+            <a href="javascript:document.advtokeywordsearchform.submit()" class="buttontext">${uiLabelMap.CommonFind}</a>
+          </td>
+        </tr>
+      </table>
+    </form>
+  </div>
+</div>
\ No newline at end of file

Modified: ofbiz/trunk/applications/product/webapp/catalog/find/keywordsearch.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/find/keywordsearch.ftl?rev=603735&r1=603734&r2=603735&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/find/keywordsearch.ftl (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/find/keywordsearch.ftl Wed Dec 12 12:49:03 2007
@@ -16,114 +16,119 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-<h1>${uiLabelMap.ProductSearchProducts}, <span class="head2">${uiLabelMap.ProductSearchFor}:</span></h1>
-<#list searchConstraintStrings as searchConstraintString>
-    <div class="tabletext">&nbsp;<a href="<@ofbizUrl>keywordsearch?removeConstraint=${searchConstraintString_index}&clearSearch=N</@ofbizUrl>" class="buttontext">X</a>&nbsp;${searchConstraintString}</div>
-</#list>
-<div class="tabletext">${uiLabelMap.CommonSortedBy}: ${searchSortOrderString}</div>
-<div class="tabletext"><a href="<@ofbizUrl>advancedsearch?SEARCH_CATEGORY_ID=${(requestParameters.SEARCH_CATEGORY_ID)?if_exists}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonRefine} ${uiLabelMap.CommonSearch}</a></div>
-
-<#if !productIds?has_content>
-  <br/><h2>&nbsp;${uiLabelMap.ProductNoResultsFound}.</h2>
-</#if>
-
-<#if productIds?has_content>
-<script language="JavaScript" type="text/javascript">
-    function checkProductToBagTextArea(field, idValue) {
-        fullValue = idValue + "\n";
-        tempStr = document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value;
-        if (field.checked) {
-            if (tempStr.length > 0 && tempStr.substring(tempStr.length-1, tempStr.length) != "\n") {
-                tempStr = tempStr + "\n";
-            }
-            document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value = tempStr + fullValue;
-        } else {
-            start = document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value.indexOf(fullValue);
-            if (start >= 0) {
-                end = start + fullValue.length;
-                document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value = tempStr.substring(0, start) + tempStr.substring(end, tempStr.length);
-                //document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value += start + ", " + end + "\n";
+<div class="screenlet">
+  <div class="screenlet-title-bar">
+    <h3>${uiLabelMap.ProductSearchProducts}, ${uiLabelMap.ProductSearchFor}:</h3>
+  </div>  
+  <div class="screenlet-body">
+    <#list searchConstraintStrings as searchConstraintString>
+      <div class="tabletext">&nbsp;<a href="<@ofbizUrl>keywordsearch?removeConstraint=${searchConstraintString_index}&clearSearch=N</@ofbizUrl>" class="buttontext">X</a>&nbsp;${searchConstraintString}</div>
+    </#list>
+    <div class="tabletext">${uiLabelMap.CommonSortedBy}: ${searchSortOrderString}</div>
+    <div class="tabletext"><a href="<@ofbizUrl>advancedsearch?SEARCH_CATEGORY_ID=${(requestParameters.SEARCH_CATEGORY_ID)?if_exists}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonRefine} ${uiLabelMap.CommonSearch}</a></div>
+    
+    <#if !productIds?has_content>
+      <br/><h2>&nbsp;${uiLabelMap.ProductNoResultsFound}.</h2>
+    </#if>
+    
+    <#if productIds?has_content>
+    <script language="JavaScript" type="text/javascript">
+        function checkProductToBagTextArea(field, idValue) {
+            fullValue = idValue + "\n";
+            tempStr = document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value;
+            if (field.checked) {
+                if (tempStr.length > 0 && tempStr.substring(tempStr.length-1, tempStr.length) != "\n") {
+                    tempStr = tempStr + "\n";
+                }
+                document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value = tempStr + fullValue;
+            } else {
+                start = document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value.indexOf(fullValue);
+                if (start >= 0) {
+                    end = start + fullValue.length;
+                    document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value = tempStr.substring(0, start) + tempStr.substring(end, tempStr.length);
+                    //document.forms["quickCreateVirtualWithVariants"].elements["variantProductIdsBag"].value += start + ", " + end + "\n";
+                }
             }
         }
-    }
-    
-    function toggleAll(e) {
-        var cform = document.products;
-        var len = cform.elements.length;
-        for (var i = 0; i < len; i++) {
-            var element = cform.elements[i];
-            if (element.name == "selectResult" && element.checked != e.checked) {
-                toggle(element);
+        
+        function toggleAll(e) {
+            var cform = document.products;
+            var len = cform.elements.length;
+            for (var i = 0; i < len; i++) {
+                var element = cform.elements[i];
+                if (element.name == "selectResult" && element.checked != e.checked) {
+                    toggle(element);
+                }
             }
         }
-    }
+        
+        function toggle(e) {
+            e.checked = !e.checked;
+        }
+    </script>
     
-    function toggle(e) {
-        e.checked = !e.checked;
-    }
-</script>
-
-<table border="0" width="100%" cellpadding="2">
-    <tr>
-      <td align="left"><input type="checkbox" name="selectAll" value="0" onclick="javascript:toggleAll(this);"> <b>${uiLabelMap.ProductProduct}</b></td>
-      <td align="right">
-        <b>
-        <#if 0 < viewIndex?int>
-          <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=${viewIndex-1}/~VIEW_SIZE=${viewSize}/~clearSearch=N/~PAGING=${paging}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPrevious}</a> |
-        </#if>
-        <#if 0 < listSize?int>
-          <span class="tabletext">${lowIndex+1} - ${highIndex} ${uiLabelMap.CommonOf} ${listSize}</span>
-        </#if>
-        <#if highIndex?int < listSize?int>
-          | <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=${viewIndex+1}/~VIEW_SIZE=${viewSize}/~clearSearch=N/~PAGING=${paging}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonNext}</a>
-        </#if>
-        <#if paging == "Y">
-          <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=0/~VIEW_SIZE=99999/~clearSearch=N/~PAGING=N</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPagingOff}</a>
-        <#else>
-          <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=0/~VIEW_SIZE=${previousViewSize}/~clearSearch=N/~PAGING=Y</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPagingOn}</a>
-        </#if>
-        </b>
-      </td>
-    </tr>
-    <tr><td colspan="2"><hr class="sepbar"/></td></tr>
-</table>
-
-<form method="post" name="products">
-  <table width="100%" cellpadding="0" cellspacing="0">
-    <#assign listIndex = lowIndex>
-    <#list productIds as productId><#-- note that there is no boundary range because that is being done before the list is put in the content -->
-      <#assign product = delegator.findByPrimaryKey("Product", Static["org.ofbiz.base.util.UtilMisc"].toMap("productId", productId))>
-      <tr>
-        <td>
-          <input type="checkbox" name="selectResult" value="${productId}" onchange="checkProductToBagTextArea(this, '${productId}');"/>
-          <a href="<@ofbizUrl>EditProduct?productId=${productId}</@ofbizUrl>" class="buttontext">[${productId}] ${(product.internalName)?if_exists}</a>
-        </td>
-      </tr>
-    </#list>
-  </table>
-<form>
-
-<table border="0" width="100%" cellpadding="2">
-    <tr>
-      <td align="right">
-        <b>
-        <#if 0 < viewIndex?int>
-          <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=${viewIndex-1}/~VIEW_SIZE=${viewSize}/~clearSearch=N/~PAGING=${paging}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPrevious}</a> |
-        </#if>
-        <#if 0 < listSize?int>
-          <span class="tabletext">${lowIndex+1} - ${highIndex} ${uiLabelMap.CommonOf} ${listSize}</span>
-        </#if>
-        <#if highIndex?int < listSize?int>
-          | <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=${viewIndex+1}/~VIEW_SIZE=${viewSize}/~clearSearch=N/~PAGING=${paging}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonNext}</a>
-        </#if>
-        <#if paging == "Y">
-          <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=0/~VIEW_SIZE=99999/~clearSearch=N/~PAGING=N</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPagingOff}</a>
-        <#else>
-          <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=0/~VIEW_SIZE=${previousViewSize}/~clearSearch=N/~PAGING=Y</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPagingOn}</a>
-        </#if>
-        </b>
-      </td>
-    </tr>
-</table>
-</#if>
+    <table border="0" width="100%" cellpadding="2">
+        <tr>
+          <td align="left"><input type="checkbox" name="selectAll" value="0" onclick="javascript:toggleAll(this);"> <b>${uiLabelMap.ProductProduct}</b></td>
+          <td align="right">
+            <b>
+            <#if 0 < viewIndex?int>
+              <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=${viewIndex-1}/~VIEW_SIZE=${viewSize}/~clearSearch=N/~PAGING=${paging}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPrevious}</a> |
+            </#if>
+            <#if 0 < listSize?int>
+              <span class="tabletext">${lowIndex+1} - ${highIndex} ${uiLabelMap.CommonOf} ${listSize}</span>
+            </#if>
+            <#if highIndex?int < listSize?int>
+              | <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=${viewIndex+1}/~VIEW_SIZE=${viewSize}/~clearSearch=N/~PAGING=${paging}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonNext}</a>
+            </#if>
+            <#if paging == "Y">
+              <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=0/~VIEW_SIZE=99999/~clearSearch=N/~PAGING=N</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPagingOff}</a>
+            <#else>
+              <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=0/~VIEW_SIZE=${previousViewSize}/~clearSearch=N/~PAGING=Y</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPagingOn}</a>
+            </#if>
+            </b>
+          </td>
+        </tr>
+        <tr><td colspan="2"><hr class="sepbar"/></td></tr>
+    </table>
+    
+    <form method="post" name="products">
+      <table width="100%" cellpadding="0" cellspacing="0">
+        <#assign listIndex = lowIndex>
+        <#list productIds as productId><#-- note that there is no boundary range because that is being done before the list is put in the content -->
+          <#assign product = delegator.findByPrimaryKey("Product", Static["org.ofbiz.base.util.UtilMisc"].toMap("productId", productId))>
+          <tr>
+            <td>
+              <input type="checkbox" name="selectResult" value="${productId}" onchange="checkProductToBagTextArea(this, '${productId}');"/>
+              <a href="<@ofbizUrl>EditProduct?productId=${productId}</@ofbizUrl>" class="buttontext">[${productId}] ${(product.internalName)?if_exists}</a>
+            </td>
+          </tr>
+        </#list>
+      </table>
+    <form>
+    
+    <table border="0" width="100%" cellpadding="2">
+        <tr>
+          <td align="right">
+            <b>
+            <#if 0 < viewIndex?int>
+              <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=${viewIndex-1}/~VIEW_SIZE=${viewSize}/~clearSearch=N/~PAGING=${paging}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPrevious}</a> |
+            </#if>
+            <#if 0 < listSize?int>
+              <span class="tabletext">${lowIndex+1} - ${highIndex} ${uiLabelMap.CommonOf} ${listSize}</span>
+            </#if>
+            <#if highIndex?int < listSize?int>
+              | <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=${viewIndex+1}/~VIEW_SIZE=${viewSize}/~clearSearch=N/~PAGING=${paging}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonNext}</a>
+            </#if>
+            <#if paging == "Y">
+              <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=0/~VIEW_SIZE=99999/~clearSearch=N/~PAGING=N</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPagingOff}</a>
+            <#else>
+              <a href="<@ofbizUrl>keywordsearch/~VIEW_INDEX=0/~VIEW_SIZE=${previousViewSize}/~clearSearch=N/~PAGING=Y</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPagingOn}</a>
+            </#if>
+            </b>
+          </td>
+        </tr>
+    </table>
+    </#if>
+  </div>
+</div>
\ No newline at end of file