You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mr...@apache.org on 2007/12/31 16:01:11 UTC

svn commit: r607738 [1/2] - in /ofbiz/trunk/applications/product: config/ webapp/catalog/category/ webapp/catalog/product/ widget/catalog/

Author: mrisaliti
Date: Mon Dec 31 07:00:53 2007
New Revision: 607738

URL: http://svn.apache.org/viewvc?rev=607738&view=rev
Log:
Various forms (ftl/widgets screen) has now the same look and feel (Part of issue OFBIZ-1544)

Modified:
    ofbiz/trunk/applications/product/config/ProductUiLabels.properties
    ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties
    ofbiz/trunk/applications/product/webapp/catalog/category/CategoryForms.xml
    ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryProducts.ftl
    ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryRollup.ftl
    ofbiz/trunk/applications/product/webapp/catalog/product/EditProductAssoc.ftl
    ofbiz/trunk/applications/product/webapp/catalog/product/EditProductContent.ftl
    ofbiz/trunk/applications/product/webapp/catalog/product/EditProductFeatures.ftl
    ofbiz/trunk/applications/product/webapp/catalog/product/EditProductInventoryItems.ftl
    ofbiz/trunk/applications/product/webapp/catalog/product/EditProductQuickAdmin.ftl
    ofbiz/trunk/applications/product/webapp/catalog/product/EditVirtualProductInventory.ftl
    ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml

Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels.properties?rev=607738&r1=607737&r2=607738&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/config/ProductUiLabels.properties (original)
+++ ofbiz/trunk/applications/product/config/ProductUiLabels.properties Mon Dec 31 07:00:53 2007
@@ -1522,7 +1522,7 @@
 PublishAndView=Publish & View
 RemoveFromSite=Remove From Site
 SelectableFeatures=Selectable Features
-ShippingDimensionsAndWeights=Shipping Dimensions and Weights:
+ShippingDimensionsAndWeights=Shipping Dimensions and Weights
 StandardFeatures=Standard Features
 
 UpdateCategories=Update Categories

Modified: ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties?rev=607738&r1=607737&r2=607738&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties (original)
+++ ofbiz/trunk/applications/product/config/ProductUiLabels_it.properties Mon Dec 31 07:00:53 2007
@@ -1493,7 +1493,7 @@
 PublishAndView=Pubblica e Mostra
 RemoveFromSite=Rimuovi Dal Sito
 SelectableFeatures=Caratteristiche Selezionabili
-ShippingDimensionsAndWeights=Dimensioni e Pesi Spedizione:
+ShippingDimensionsAndWeights=Dimensioni e Pesi Spedizione
 StandardFeatures=Caratteristiche Standard
 UpdateCategories=Aggiorna Categorie
 UpdateName=Aggiorna Nome

Modified: ofbiz/trunk/applications/product/webapp/catalog/category/CategoryForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/category/CategoryForms.xml?rev=607738&r1=607737&r2=607738&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/category/CategoryForms.xml (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/category/CategoryForms.xml Mon Dec 31 07:00:53 2007
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -151,7 +151,7 @@
         <field name="detailSubScreen"><ignored/></field>
         <field name="imageUrl"><ignored/></field>
         <field name="imageTwoUrl"><ignored/></field>      
-        <field name="deleteLink" title="${uiLabelMap.CommonEmptyHeader}">
+        <field name="deleteLink" title="${uiLabelMap.CommonEmptyHeader}" widget-style="buttontext">
             <hyperlink target="deleteProductCategoryLink?productCategoryId=${productCategoryId}&amp;linkSeqId=${linkSeqId}&amp;fromDate=${fromDate}"
                 description="${uiLabelMap.CommonDelete}" also-hidden="false"/>
         </field>

Modified: ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryProducts.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryProducts.ftl?rev=607738&r1=607737&r2=607738&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryProducts.ftl (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryProducts.ftl Mon Dec 31 07:00:53 2007
@@ -26,19 +26,19 @@
         <#if (listSize > 0)>
             <div class="boxhead-right">
                 <#if (viewIndex > 1)>
-                    <a href="<@o...@ofbizUrl>" class="lightbuttontext">${uiLabelMap.CommonPrevious}</a> |
+                    <a href="<@o...@ofbizUrl>" class="submenutext">${uiLabelMap.CommonPrevious}</a> |
                 </#if>
-                ${lowIndex} - ${highIndex} ${uiLabelMap.CommonOf} ${listSize}
+                <span class="submenutextinfo">${lowIndex} - ${highIndex} ${uiLabelMap.CommonOf} ${listSize}</span>
                 <#if (listSize > highIndex)>
-                    | <a class="lightbuttontext" href="<@o...@ofbizUrl>" class="lightbuttontext">${uiLabelMap.CommonNext}</a>
-                </#if>
+                    | <a class="lightbuttontext" href="<@o...@ofbizUrl>" class="submenutextright">${uiLabelMap.CommonNext}</a>
+                </#if>                
+                &nbsp;
             </div>
             <div class="boxhead-left">
-                <h3>${uiLabelMap.PageTitleEditCategoryProducts}<h3>
+                ${uiLabelMap.PageTitleEditCategoryProducts}
             </div>
             <div class="boxhead-fill">&nbsp;</div>
         </#if>
-        <br/>      
     </div>
     <div class="screenlet-body">
         <table cellspacing="0" class="basic-table">        
@@ -106,19 +106,19 @@
         <#if (listSize > 0)>
             <div class="boxhead-right">
                 <#if (viewIndex > 1)>
-                    <a href="<@o...@ofbizUrl>" class="lightbuttontext">${uiLabelMap.CommonPrevious}</a> |
+                    <a href="<@o...@ofbizUrl>" class="submenutext">${uiLabelMap.CommonPrevious}</a> |
                 </#if>
-                ${lowIndex} - ${highIndex} ${uiLabelMap.CommonOf} ${listSize}
+                <span class="submenutextinfo">${lowIndex} - ${highIndex} ${uiLabelMap.CommonOf} ${listSize}</span>
                 <#if (listSize > highIndex)>
-                    | <a class="lightbuttontext" href="<@o...@ofbizUrl>" class="lightbuttontext">${uiLabelMap.CommonNext}</a>
-                </#if>
+                    | <a class="lightbuttontext" href="<@o...@ofbizUrl>" class="submenutextright">${uiLabelMap.CommonNext}</a>
+                </#if>                
+                &nbsp;
             </div>
             <div class="boxhead-left">
-                <h3>${uiLabelMap.PageTitleEditCategoryProducts}<h3>
+                ${uiLabelMap.PageTitleEditCategoryProducts}
             </div>
             <div class="boxhead-fill">&nbsp;</div>
-        </#if>
-        <br/>      
+        </#if>     
     </div>        
 </div>
 <div class="screenlet">

Modified: ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryRollup.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryRollup.ftl?rev=607738&r1=607737&r2=607738&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryRollup.ftl (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/category/EditCategoryRollup.ftl Mon Dec 31 07:00:53 2007
@@ -101,9 +101,6 @@
         </table>
     </div>
 </div>
-<br/>
-<hr/>
-<br/>
 <div class="screenlet">
     <div class="screenlet-title-bar">
         <h3>${uiLabelMap.ProductCategoryRollupChildCategories}</h3>

Modified: ofbiz/trunk/applications/product/webapp/catalog/product/EditProductAssoc.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/product/EditProductAssoc.ftl?rev=607738&r1=607737&r2=607738&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/product/EditProductAssoc.ftl (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/product/EditProductAssoc.ftl Mon Dec 31 07:00:53 2007
@@ -16,238 +16,254 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<form action="<@o...@ofbizUrl>" method="post" style="margin: 0;" name="editProductAssocForm">
-<input type="hidden" name="productId" value="${productId?if_exists}">
-<table cellspacing="0" class="basic-table">
-
-<#if !(productAssoc?exists)>
-    <#if productId?exists && productIdTo?exists && productAssocTypeId?exists && fromDate?exists>
-        <div><b><#assign uiLabelWithVar=uiLabelMap.ProductAssociationNotFound?interpret><@uiLabelWithVar/></b></div>
-        <input type="hidden" name="UPDATE_MODE" value="CREATE">
-        <tr>
-        <td align="right" class="label">${uiLabelMap.ProductProductId}</td>
-        <td>&nbsp;</td>
-        <td><input type="text" name="PRODUCT_ID" size="20" maxlength="40" value="${productId?if_exists}"></td>
-        </tr>
-        <tr>
-        <td align="right" class="label">${uiLabelMap.ProductProductIdTo}</td>
-        <td>&nbsp;</td>
-        <td><input type="text" name="PRODUCT_ID_TO" size="20" maxlength="40" value="${productIdTo?if_exists}"></td>
-        </tr>
-        <tr>
-        <td align="right" class="label">${uiLabelMap.ProductAssociationTypeId}</td>
-        <td>&nbsp;</td>
-        <td>
-            <select name="PRODUCT_ASSOC_TYPE_ID" size="1">
-            <#if productAssocTypeId?has_content>
-                <#assign curAssocType = delegator.findByPrimaryKey("ProductAssocType", Static["org.ofbiz.base.util.UtilMisc"].toMap("productAssocTypeId", productAssocTypeId))>
-                <#if curAssocType?exists>
-                    <option selected value="${(curAssocType.productAssocTypeId)?if_exists}">${(curAssocType.get("description",locale))?if_exists}</option>
-                    <option value="${(curAssocType.productAssocTypeId)?if_exists}"></option>
-                </#if>
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <h3>${uiLabelMap.PageTitleEditProductAssociations}</h3>
+    </div>
+    <div class="screenlet-body"> 
+        <form action="<@o...@ofbizUrl>" method="post" style="margin: 0;" name="editProductAssocForm">
+        <input type="hidden" name="productId" value="${productId?if_exists}">
+        <table cellspacing="0" class="basic-table">
+        
+        <#if !(productAssoc?exists)>
+            <#if productId?exists && productIdTo?exists && productAssocTypeId?exists && fromDate?exists>
+                <div><b><#assign uiLabelWithVar=uiLabelMap.ProductAssociationNotFound?interpret><@uiLabelWithVar/></b></div>
+                <input type="hidden" name="UPDATE_MODE" value="CREATE">
+                <tr>
+                <td align="right" class="label">${uiLabelMap.ProductProductId}</td>
+                <td>&nbsp;</td>
+                <td><input type="text" name="PRODUCT_ID" size="20" maxlength="40" value="${productId?if_exists}"></td>
+                </tr>
+                <tr>
+                <td align="right" class="label">${uiLabelMap.ProductProductIdTo}</td>
+                <td>&nbsp;</td>
+                <td><input type="text" name="PRODUCT_ID_TO" size="20" maxlength="40" value="${productIdTo?if_exists}"></td>
+                </tr>
+                <tr>
+                <td align="right" class="label">${uiLabelMap.ProductAssociationTypeId}</td>
+                <td>&nbsp;</td>
+                <td>
+                    <select name="PRODUCT_ASSOC_TYPE_ID" size="1">
+                    <#if productAssocTypeId?has_content>
+                        <#assign curAssocType = delegator.findByPrimaryKey("ProductAssocType", Static["org.ofbiz.base.util.UtilMisc"].toMap("productAssocTypeId", productAssocTypeId))>
+                        <#if curAssocType?exists>
+                            <option selected value="${(curAssocType.productAssocTypeId)?if_exists}">${(curAssocType.get("description",locale))?if_exists}</option>
+                            <option value="${(curAssocType.productAssocTypeId)?if_exists}"></option>
+                        </#if>
+                    </#if>
+                    <#list assocTypes as assocType>
+                        <option value="${(assocType.productAssocTypeId)?if_exists}">${(assocType.get("description",locale))?if_exists}</option>
+                    </#list>
+                    </select>
+                </td>
+                </tr>
+                <tr>
+                <td align="right" class="label">${uiLabelMap.CommonFromDate}</td>
+                <td>&nbsp;</td>
+                <td>
+                    <div>
+                        <input type="text" name="FROM_DATE" size="25" maxlength="40" value="${fromDate?if_exists}">
+                        <a href="javascript:call_cal(document.editProductAssocForm.FROM_DATE, '${fromDate?default(nowTimestampString)}');"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
+                        ${uiLabelMap.CommonSetNowEmpty}
+                    </div>
+                </td>
+                </tr>
+            <#else>
+                <input type="hidden" name="UPDATE_MODE" value="CREATE">
+                <tr>
+                <td align="right" class="label">${uiLabelMap.ProductProductId}</td>
+                <td>&nbsp;</td>
+                <td><input type="text" name="PRODUCT_ID" size="20" maxlength="40" value="${productId?if_exists}"></td>
+                </tr>
+                <tr>
+                <td align="right" class="label">${uiLabelMap.ProductProductIdTo}</td>
+                <td>&nbsp;</td>
+                <td><input type="text" name="PRODUCT_ID_TO" size="20" maxlength="40" value="${productIdTo?if_exists}">
+                <a href="javascript:call_fieldlookup2(document.editProductAssocForm.PRODUCT_ID_TO,'LookupProduct');"><img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'/></a></td>
+                </tr>
+                <tr>
+                <td align="right" class="label">${uiLabelMap.ProductAssociationTypeId}</td>
+                <td>&nbsp;</td>
+                <td>
+                    <select name="PRODUCT_ASSOC_TYPE_ID" size="1">
+                    <-- <option value="">&nbsp;</option> -->
+                    <#list assocTypes as assocType>
+                        <option value="${(assocType.productAssocTypeId)?if_exists}">${(assocType.get("description",locale))?if_exists}</option>
+                    </#list>
+                    </select>
+                </td>
+                </tr>
+                <tr>
+                <td align="right" class="label">${uiLabelMap.CommonFromDate}</td>
+                <td>&nbsp;</td>
+                <td>
+                    <div>
+                        <input type="text" name="FROM_DATE" size="25" maxlength="40" value="">
+                        <a href="javascript:call_cal(document.editProductAssocForm.FROM_DATE, '${nowTimestampString}');"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
+                        ${uiLabelMap.CommonSetNowEmpty}
+                    </div>
+                </td>
+                </tr>
             </#if>
-            <#list assocTypes as assocType>
-                <option value="${(assocType.productAssocTypeId)?if_exists}">${(assocType.get("description",locale))?if_exists}</option>
-            </#list>
-            </select>
-        </td>
-        </tr>
+        <#else>
+            <#assign isCreate = false>
+            <#assign curProductAssocType = productAssoc.getRelatedOneCache("ProductAssocType")>
+            <input type="hidden" name="UPDATE_MODE" value="UPDATE">
+            <input type="hidden" name="PRODUCT_ID" value="${productId?if_exists}">
+            <input type="hidden" name="PRODUCT_ID_TO" value="${productIdTo?if_exists}">
+            <input type="hidden" name="PRODUCT_ASSOC_TYPE_ID" value="${productAssocTypeId?if_exists}">
+            <input type="hidden" name="FROM_DATE" value="${fromDate?if_exists}">
+            <tr>
+                <td align="right" class="label">${uiLabelMap.ProductProductId}</td>
+                <td>&nbsp;</td>
+                <td><b>${productId?if_exists}</b> ${uiLabelMap.ProductRecreateAssociation}</td>
+            </tr>
+            <tr>
+                <td align="right" class="label">${uiLabelMap.ProductProductIdTo}</td>
+                <td>&nbsp;</td>
+                <td><b>${productIdTo?if_exists}</b> ${uiLabelMap.ProductRecreateAssociation}</td>
+            </tr>
+            <tr>
+                <td align="right" class="label">${uiLabelMap.ProductAssociationType}</td>
+                <td>&nbsp;</td>
+                <td><b><#if curProductAssocType?exists>${(curProductAssocType.get("description",locale))?if_exists}<#else> ${productAssocTypeId?if_exists}</#if></b> ${uiLabelMap.ProductRecreateAssociation}</td>
+            </tr>
+            <tr>
+                <td align="right" class="label">${uiLabelMap.CommonFromDate}</td>
+                <td>&nbsp;</td>
+                <td><b>${fromDate?if_exists}</b> ${uiLabelMap.ProductRecreateAssociation}</td>
+            </tr>
+        </#if>
         <tr>
-        <td align="right" class="label">${uiLabelMap.CommonFromDate}</td>
-        <td>&nbsp;</td>
-        <td>
+            <td width="26%" align="right" class="label">${uiLabelMap.CommonThruDate}</td>
+            <td>&nbsp;</td>
+            <td width="74%">
             <div>
-                <input type="text" name="FROM_DATE" size="25" maxlength="40" value="${fromDate?if_exists}">
-                <a href="javascript:call_cal(document.editProductAssocForm.FROM_DATE, '${fromDate?default(nowTimestampString)}');"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
-                ${uiLabelMap.CommonSetNowEmpty}
+                <input type="text" name="THRU_DATE" <#if useValues> value="${productAssoc.thruDate?if_exists}"<#else>value="${(request.getParameter("THRU_DATE"))?if_exists}"</#if> size="30" maxlength="30"> 
+                <a href="javascript:call_cal(document.editProductAssocForm.THRU_DATE, <#if useValues>'${productAssoc.thruDate?if_exists}'<#elseif (request.getParameter("THRU_DATE"))?exists>'${request.getParameter("THRU_DATE")}'<#else>'${nowTimestampString}'</#if>);"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
             </div>
-        </td>
+            </td>
         </tr>
-    <#else>
-        <input type="hidden" name="UPDATE_MODE" value="CREATE">
         <tr>
-        <td align="right" class="label">${uiLabelMap.ProductProductId}</td>
-        <td>&nbsp;</td>
-        <td><input type="text" name="PRODUCT_ID" size="20" maxlength="40" value="${productId?if_exists}"></td>
+            <td width="26%" align="right" class="label">${uiLabelMap.ProductSequenceNum}</td>
+            <td>&nbsp;</td>
+            <td width="74%"><input type="text" name="SEQUENCE_NUM" <#if useValues>value="${(productAssoc.sequenceNum)?if_exists}"<#else>value="${(request.getParameter("SEQUENCE_NUM"))?if_exists}"</#if> size="5" maxlength="10"></td>
         </tr>
         <tr>
-        <td align="right" class="label">${uiLabelMap.ProductProductIdTo}</td>
-        <td>&nbsp;</td>
-        <td><input type="text" name="PRODUCT_ID_TO" size="20" maxlength="40" value="${productIdTo?if_exists}">
-        <a href="javascript:call_fieldlookup2(document.editProductAssocForm.PRODUCT_ID_TO,'LookupProduct');"><img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'/></a></td>
+            <td width="26%" align="right" class="label">${uiLabelMap.ProductReason}</td>
+            <td>&nbsp;</td>
+            <td width="74%"><input type="text" name="REASON" <#if useValues>value="${(productAssoc.reason)?if_exists}"<#else>value="${(request.getParameter("REASON"))?if_exists}"</#if> size="60" maxlength="255"></td>
         </tr>
         <tr>
-        <td align="right" class="label">${uiLabelMap.ProductAssociationTypeId}</td>
-        <td>&nbsp;</td>
-        <td>
-            <select name="PRODUCT_ASSOC_TYPE_ID" size="1">
-            <-- <option value="">&nbsp;</option> -->
-            <#list assocTypes as assocType>
-                <option value="${(assocType.productAssocTypeId)?if_exists}">${(assocType.get("description",locale))?if_exists}</option>
-            </#list>
-            </select>
-        </td>
+            <td width="26%" align="right" class="label">${uiLabelMap.ProductInstruction}</td>
+            <td>&nbsp;</td>
+            <td width="74%"><input type="text" name="INSTRUCTION" <#if useValues>value="${(productAssoc.instruction)?if_exists}"<#else>value="${(request.getParameter("INSTRUCTION"))?if_exists}"</#if> size="60" maxlength="255"></td>
         </tr>
+        
         <tr>
-        <td align="right" class="label">${uiLabelMap.CommonFromDate}</td>
-        <td>&nbsp;</td>
-        <td>
-            <div>
-                <input type="text" name="FROM_DATE" size="25" maxlength="40" value="">
-                <a href="javascript:call_cal(document.editProductAssocForm.FROM_DATE, '${nowTimestampString}');"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
-                ${uiLabelMap.CommonSetNowEmpty}
-            </div>
-        </td>
+            <td width="26%" align="right" class="label">${uiLabelMap.ProductQuantity}</td>
+            <td>&nbsp;</td>
+            <td width="74%"><input type="text" name="QUANTITY" <#if useValues>value="${(productAssoc.quantity)?if_exists}"<#else>value="${(request.getParameter("QUANTITY"))?if_exists}"</#if> size="10" maxlength="15"></td>
         </tr>
-    </#if>
-<#else>
-    <#assign isCreate = false>
-    <#assign curProductAssocType = productAssoc.getRelatedOneCache("ProductAssocType")>
-    <input type="hidden" name="UPDATE_MODE" value="UPDATE">
-    <input type="hidden" name="PRODUCT_ID" value="${productId?if_exists}">
-    <input type="hidden" name="PRODUCT_ID_TO" value="${productIdTo?if_exists}">
-    <input type="hidden" name="PRODUCT_ASSOC_TYPE_ID" value="${productAssocTypeId?if_exists}">
-    <input type="hidden" name="FROM_DATE" value="${fromDate?if_exists}">
-    <tr>
-        <td align="right" class="label">${uiLabelMap.ProductProductId}</td>
-        <td>&nbsp;</td>
-        <td><b>${productId?if_exists}</b> ${uiLabelMap.ProductRecreateAssociation}</td>
-    </tr>
-    <tr>
-        <td align="right" class="label">${uiLabelMap.ProductProductIdTo}</td>
-        <td>&nbsp;</td>
-        <td><b>${productIdTo?if_exists}</b> ${uiLabelMap.ProductRecreateAssociation}</td>
-    </tr>
-    <tr>
-        <td align="right" class="label">${uiLabelMap.ProductAssociationType}</td>
-        <td>&nbsp;</td>
-        <td><b><#if curProductAssocType?exists>${(curProductAssocType.get("description",locale))?if_exists}<#else> ${productAssocTypeId?if_exists}</#if></b> ${uiLabelMap.ProductRecreateAssociation}</td>
-    </tr>
-    <tr>
-        <td align="right" class="label">${uiLabelMap.CommonFromDate}</td>
-        <td>&nbsp;</td>
-        <td><b>${fromDate?if_exists}</b> ${uiLabelMap.ProductRecreateAssociation}</td>
-    </tr>
-</#if>
-<tr>
-    <td width="26%" align="right" class="label">${uiLabelMap.CommonThruDate}</td>
-    <td>&nbsp;</td>
-    <td width="74%">
-    <div>
-        <input type="text" name="THRU_DATE" <#if useValues> value="${productAssoc.thruDate?if_exists}"<#else>value="${(request.getParameter("THRU_DATE"))?if_exists}"</#if> size="30" maxlength="30"> 
-        <a href="javascript:call_cal(document.editProductAssocForm.THRU_DATE, <#if useValues>'${productAssoc.thruDate?if_exists}'<#elseif (request.getParameter("THRU_DATE"))?exists>'${request.getParameter("THRU_DATE")}'<#else>'${nowTimestampString}'</#if>);"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
-    </div>
-    </td>
-</tr>
-<tr>
-    <td width="26%" align="right" class="label">${uiLabelMap.ProductSequenceNum}</td>
-    <td>&nbsp;</td>
-    <td width="74%"><input type="text" name="SEQUENCE_NUM" <#if useValues>value="${(productAssoc.sequenceNum)?if_exists}"<#else>value="${(request.getParameter("SEQUENCE_NUM"))?if_exists}"</#if> size="5" maxlength="10"></td>
-</tr>
-<tr>
-    <td width="26%" align="right" class="label">${uiLabelMap.ProductReason}</td>
-    <td>&nbsp;</td>
-    <td width="74%"><input type="text" name="REASON" <#if useValues>value="${(productAssoc.reason)?if_exists}"<#else>value="${(request.getParameter("REASON"))?if_exists}"</#if> size="60" maxlength="255"></td>
-</tr>
-<tr>
-    <td width="26%" align="right" class="label">${uiLabelMap.ProductInstruction}</td>
-    <td>&nbsp;</td>
-    <td width="74%"><input type="text" name="INSTRUCTION" <#if useValues>value="${(productAssoc.instruction)?if_exists}"<#else>value="${(request.getParameter("INSTRUCTION"))?if_exists}"</#if> size="60" maxlength="255"></td>
-</tr>
-
-<tr>
-    <td width="26%" align="right" class="label">${uiLabelMap.ProductQuantity}</td>
-    <td>&nbsp;</td>
-    <td width="74%"><input type="text" name="QUANTITY" <#if useValues>value="${(productAssoc.quantity)?if_exists}"<#else>value="${(request.getParameter("QUANTITY"))?if_exists}"</#if> size="10" maxlength="15"></td>
-</tr>
-
-<tr>
-    <td colspan="2">&nbsp;</td>
-    <td align="left"><input type="submit" <#if isCreate>value="${uiLabelMap.CommonCreate}"<#else>value="${uiLabelMap.CommonUpdate}"</#if>></td>
-</tr>
-</table>
-</form>
-<br/>
-<#if productId?exists && product?exists>
-    <br/>
-    <h2>${uiLabelMap.ProductAssociationsFromProduct}...</h2>        
-    <table cellspacing="0" class="basic-table">
-        <tr class="header-row">
-        <td><b>${uiLabelMap.ProductProductId}</b></td>
-        <td><b>${uiLabelMap.ProductName}</b></td>
-        <td><b>${uiLabelMap.CommonFromDateTime}</b></td>
-        <td><b>${uiLabelMap.CommonThruDateTime}</b></td>
-        <td><b>${uiLabelMap.ProductSeqNum}</b></td>
-        <td><b>${uiLabelMap.CommonQuantity}</b></td>
-        <td><b>${uiLabelMap.ProductAssociationType}</b></td>
-        <td><b>&nbsp;</b></td>
-        <td><b>&nbsp;</b></td>
-        </tr>
-        <#assign rowClass = "2">
-        <#list assocFromProducts as assocFromProduct>
-        <#assign listToProduct = assocFromProduct.getRelatedOneCache("AssocProduct")>
-        <#assign curProductAssocType = assocFromProduct.getRelatedOneCache("ProductAssocType")>
-        <tr valign="middle"<#if rowClass == "1"> class="alternate-row"</#if>>
-            <td><a href="<@o...@ofbizUrl>" class="buttontext">${(assocFromProduct.productIdTo)?if_exists}</a></td>
-            <td><#if listToProduct?exists><a href="<@o...@ofbizUrl>" class="buttontext">${(listToProduct.internalName)?if_exists}</a></#if>&nbsp;</td>
-            <td <#if (assocFromProduct.getTimestamp("fromDate"))?exists && nowDate.before(assocFromProduct.getTimestamp("fromDate"))> style="color: red;"</#if>>
-            ${(assocFromProduct.fromDate)?if_exists}&nbsp;</td>
-            <td <#if (assocFromProduct.getTimestamp("thruDate"))?exists && nowDate.after(assocFromProduct.getTimestamp("thruDate"))> style="color: red;"</#if>>
-            ${(assocFromProduct.thruDate)?if_exists}&nbsp;</td>
-            <td>&nbsp;${(assocFromProduct.sequenceNum)?if_exists}</td>
-            <td>&nbsp;${(assocFromProduct.quantity)?if_exists}<</td>
-            <td><#if curProductAssocType?exists> ${(curProductAssocType.get("description",locale))?if_exists}<#else>${(assocFromProduct.productAssocTypeId)?if_exists}</#if></td>
-            <td>
-            <a href="<@o...@ofbizUrl>" class="buttontext">
-            ${uiLabelMap.CommonDelete}</a>
-            </td>
-            <td>
-            <a href="<@o...@ofbizUrl>" class="buttontext">
-            ${uiLabelMap.CommonEdit}</a>
-            </td>
+        
+        <tr>
+            <td colspan="2">&nbsp;</td>
+            <td align="left"><input type="submit" <#if isCreate>value="${uiLabelMap.CommonCreate}"<#else>value="${uiLabelMap.CommonUpdate}"</#if>></td>
         </tr>
-        <#-- toggle the row color -->
-        <#if rowClass == "2">
-            <#assign rowClass = "1">
-        <#else>
+        </table>
+        </form>
+    </div>
+</div>
+<#if productId?exists && product?exists>
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <h3>${uiLabelMap.ProductAssociationsFromProduct}</h3>
+    </div>
+    <div class="screenlet-body"> 
+        <table cellspacing="0" class="basic-table">
+            <tr class="header-row">
+            <td><b>${uiLabelMap.ProductProductId}</b></td>
+            <td><b>${uiLabelMap.ProductName}</b></td>
+            <td><b>${uiLabelMap.CommonFromDateTime}</b></td>
+            <td><b>${uiLabelMap.CommonThruDateTime}</b></td>
+            <td><b>${uiLabelMap.ProductSeqNum}</b></td>
+            <td><b>${uiLabelMap.CommonQuantity}</b></td>
+            <td><b>${uiLabelMap.ProductAssociationType}</b></td>
+            <td><b>&nbsp;</b></td>
+            <td><b>&nbsp;</b></td>
+            </tr>
             <#assign rowClass = "2">
-        </#if>
-        </#list>
-    </table>
-    <br/>
-    <h2>${uiLabelMap.ProductAssociationsToProduct}...</h2>
-    <table cellspacing="0" class="basic-table">
-        <tr class="header-row">
-        <td><b>${uiLabelMap.ProductProductId}</b></td>
-        <td><b>${uiLabelMap.ProductName}</b></td>
-        <td><b>${uiLabelMap.CommonFromDateTime}</b></td>
-        <td><b>${uiLabelMap.CommonThruDateTime}</b></td>
-        <td><b>${uiLabelMap.ProductAssociationType}</b></td>
-        <td><b>&nbsp;</b></td>
-        </tr>
-        <#assign rowClass = "2">
-        <#list assocToProducts as assocToProduct>
-        <#assign listToProduct = assocToProduct.getRelatedOneCache("MainProduct")>
-        <#assign curProductAssocType = assocToProduct.getRelatedOneCache("ProductAssocType")>
-        <tr valign="middle"<#if rowClass == "1"> class="alternate-row"</#if>>
-            <td><a href="<@o...@ofbizUrl>" class="buttontext">${(assocToProduct.productId)?if_exists}</a></td>
-            <td><#if listToProduct?exists><a href="<@o...@ofbizUrl>" class="buttontext">${(listToProduct.internalName)?if_exists}</a></#if></td>
-            <td>${(assocToProduct.getTimestamp("fromDate"))?if_exists}&nbsp;</td>
-            <td>${(assocToProduct.getTimestamp("thruDate"))?if_exists}&nbsp;</td>
-            <td><#if curProductAssocType?exists> ${(curProductAssocType.get("description",locale))?if_exists}<#else> ${(assocToProduct.productAssocTypeId)?if_exists}</#if></td>
-            <td>
-            <a href="<@o...@ofbizUrl>" class="buttontext">
-            ${uiLabelMap.CommonDelete}</a>
-            </td>
-        </tr>
-        <#-- toggle the row color -->
-        <#if rowClass == "2">
-            <#assign rowClass = "1">
-        <#else>
+            <#list assocFromProducts as assocFromProduct>
+            <#assign listToProduct = assocFromProduct.getRelatedOneCache("AssocProduct")>
+            <#assign curProductAssocType = assocFromProduct.getRelatedOneCache("ProductAssocType")>
+            <tr valign="middle"<#if rowClass == "1"> class="alternate-row"</#if>>
+                <td><a href="<@o...@ofbizUrl>" class="buttontext">${(assocFromProduct.productIdTo)?if_exists}</a></td>
+                <td><#if listToProduct?exists><a href="<@o...@ofbizUrl>" class="buttontext">${(listToProduct.internalName)?if_exists}</a></#if>&nbsp;</td>
+                <td <#if (assocFromProduct.getTimestamp("fromDate"))?exists && nowDate.before(assocFromProduct.getTimestamp("fromDate"))> style="color: red;"</#if>>
+                ${(assocFromProduct.fromDate)?if_exists}&nbsp;</td>
+                <td <#if (assocFromProduct.getTimestamp("thruDate"))?exists && nowDate.after(assocFromProduct.getTimestamp("thruDate"))> style="color: red;"</#if>>
+                ${(assocFromProduct.thruDate)?if_exists}&nbsp;</td>
+                <td>&nbsp;${(assocFromProduct.sequenceNum)?if_exists}</td>
+                <td>&nbsp;${(assocFromProduct.quantity)?if_exists}<</td>
+                <td><#if curProductAssocType?exists> ${(curProductAssocType.get("description",locale))?if_exists}<#else>${(assocFromProduct.productAssocTypeId)?if_exists}</#if></td>
+                <td>
+                <a href="<@o...@ofbizUrl>" class="buttontext">
+                ${uiLabelMap.CommonDelete}</a>
+                </td>
+                <td>
+                <a href="<@o...@ofbizUrl>" class="buttontext">
+                ${uiLabelMap.CommonEdit}</a>
+                </td>
+            </tr>
+            <#-- toggle the row color -->
+            <#if rowClass == "2">
+                <#assign rowClass = "1">
+            <#else>
+                <#assign rowClass = "2">
+            </#if>
+            </#list>
+        </table>
+    </div>
+</div>
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <h3>${uiLabelMap.ProductAssociationsToProduct}</h3>
+    </div>
+    <div class="screenlet-body"> 
+        <table cellspacing="0" class="basic-table">
+            <tr class="header-row">
+            <td><b>${uiLabelMap.ProductProductId}</b></td>
+            <td><b>${uiLabelMap.ProductName}</b></td>
+            <td><b>${uiLabelMap.CommonFromDateTime}</b></td>
+            <td><b>${uiLabelMap.CommonThruDateTime}</b></td>
+            <td><b>${uiLabelMap.ProductAssociationType}</b></td>
+            <td><b>&nbsp;</b></td>
+            </tr>
             <#assign rowClass = "2">
-        </#if>
-        </#list>
-    </table>
-    <br/>
-    <div>${uiLabelMap.CommonNote} : ${uiLabelMap.ProductRedExplanation}</div>
+            <#list assocToProducts as assocToProduct>
+            <#assign listToProduct = assocToProduct.getRelatedOneCache("MainProduct")>
+            <#assign curProductAssocType = assocToProduct.getRelatedOneCache("ProductAssocType")>
+            <tr valign="middle"<#if rowClass == "1"> class="alternate-row"</#if>>
+                <td><a href="<@o...@ofbizUrl>" class="buttontext">${(assocToProduct.productId)?if_exists}</a></td>
+                <td><#if listToProduct?exists><a href="<@o...@ofbizUrl>" class="buttontext">${(listToProduct.internalName)?if_exists}</a></#if></td>
+                <td>${(assocToProduct.getTimestamp("fromDate"))?if_exists}&nbsp;</td>
+                <td>${(assocToProduct.getTimestamp("thruDate"))?if_exists}&nbsp;</td>
+                <td><#if curProductAssocType?exists> ${(curProductAssocType.get("description",locale))?if_exists}<#else> ${(assocToProduct.productAssocTypeId)?if_exists}</#if></td>
+                <td>
+                <a href="<@o...@ofbizUrl>" class="buttontext">
+                ${uiLabelMap.CommonDelete}</a>
+                </td>
+            </tr>
+            <#-- toggle the row color -->
+            <#if rowClass == "2">
+                <#assign rowClass = "1">
+            <#else>
+                <#assign rowClass = "2">
+            </#if>
+            </#list>
+        </table>
+    </div>
+</div>
 </#if>
+<br/>
+<span class="tooltip">${uiLabelMap.CommonNote} : ${uiLabelMap.ProductRedExplanation}</span>
\ No newline at end of file

Modified: ofbiz/trunk/applications/product/webapp/catalog/product/EditProductContent.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/product/EditProductContent.ftl?rev=607738&r1=607737&r2=607738&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/product/EditProductContent.ftl (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/product/EditProductContent.ftl Mon Dec 31 07:00:53 2007
@@ -157,9 +157,6 @@
     </tr>
     </table>
     </form>
-
-    <hr/>
-
     <script language="JavaScript" type="text/javascript">
         function setUploadUrl(newUrl) {
         var toExec = 'document.imageUploadForm.action="' + newUrl + '";';
@@ -168,14 +165,19 @@
     </script>
     <h3>${uiLabelMap.ProductUploadImage}</h3>
     <form method="post" enctype="multipart/form-data" action="<@o...@ofbizUrl>" name="imageUploadForm">
-        <input type="file" size="50" name="fname">
-        <br/>
-        <span>
-            <input class="radioButton" type="radio" name="upload_file_type_bogus" value="small" checked onclick='setUploadUrl("<@o...@ofbizUrl>");'>${uiLabelMap.CommonSmall}
-            <input class="radioButton" type="radio" name="upload_file_type_bogus" value="medium" onclick='setUploadUrl("<@o...@ofbizUrl>");'>${uiLabelMap.CommonMedium}
-            <input class="radioButton" type="radio" name="upload_file_type_bogus" value="large"onclick='setUploadUrl("<@o...@ofbizUrl>");'>${uiLabelMap.CommonLarge}
-            <input class="radioButton" type="radio" name="upload_file_type_bogus" value="detail" onclick='setUploadUrl("<@o...@ofbizUrl>");'>${uiLabelMap.CommonDetail}
-        </span>
-        <input type="submit" class="smallSubmit" value="${uiLabelMap.ProductUploadImage}">
+        <table cellspacing="0" class="basic-table">
+            <tr>
+                <td width="20%" align="right" valign="top">    
+                    <input type="file" size="50" name="fname">
+                <td>&nbsp;</td>
+                <td width="80%" colspan="4" valign="top">
+                    <input class="radioButton" type="radio" name="upload_file_type_bogus" value="small" checked onclick='setUploadUrl("<@o...@ofbizUrl>");'>${uiLabelMap.CommonSmall}
+                    <input class="radioButton" type="radio" name="upload_file_type_bogus" value="medium" onclick='setUploadUrl("<@o...@ofbizUrl>");'>${uiLabelMap.CommonMedium}
+                    <input class="radioButton" type="radio" name="upload_file_type_bogus" value="large"onclick='setUploadUrl("<@o...@ofbizUrl>");'>${uiLabelMap.CommonLarge}
+                    <input class="radioButton" type="radio" name="upload_file_type_bogus" value="detail" onclick='setUploadUrl("<@o...@ofbizUrl>");'>${uiLabelMap.CommonDetail}
+                    <input type="submit" class="smallSubmit" value="${uiLabelMap.ProductUploadImage}">
+                </td>
+            </tr>
+        </table>
     </form>
 </#if>

Modified: ofbiz/trunk/applications/product/webapp/catalog/product/EditProductFeatures.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/product/EditProductFeatures.ftl?rev=607738&r1=607737&r2=607738&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/product/EditProductFeatures.ftl (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/product/EditProductFeatures.ftl Mon Dec 31 07:00:53 2007
@@ -17,161 +17,179 @@
 under the License.
 -->
 <#if productId?exists>    
-    <table cellspacing="0" class="basic-table">
-        <form method="post" action="<@o...@ofbizUrl>" name="selectAllForm">
-        <input type="hidden" name="_useRowSubmit" value="Y">
-        <input type="hidden" name="_checkGlobalScope" value="Y">
-        <input type="hidden" name="productId" value="${productId}">
-        <tr class="header-row">
-            <td><b>${uiLabelMap.CommonId}</b></td>
-            <td><b>${uiLabelMap.CommonDescription}</b></td>
-            <td><b>${uiLabelMap.ProductType}</b></td>
-            <td><b>${uiLabelMap.ProductCategory}</b></td>
-            <td><b>${uiLabelMap.CommonFromDate}</b></td>
-            <td><b>${uiLabelMap.ProductThruDateAmountSequenceApplicationType}</b></td>
-            <td><b>${uiLabelMap.CommonAll}<input type="checkbox" name="selectAll" value="${uiLabelMap.CommonY}" onclick="javascript:toggleAll(this, 'selectAllForm');"></td>
-        </tr>
-        <#assign rowCount = 0>
-        <#assign rowClass = "2">
-        <#list productFeatureAndAppls as productFeatureAndAppl>
-            <#assign curProductFeatureType = productFeatureAndAppl.getRelatedOneCache("ProductFeatureType")>
-            <#assign curProductFeatureApplType = productFeatureAndAppl.getRelatedOneCache("ProductFeatureApplType")>
-            <#assign curProductFeatureCategory = (productFeatureAndAppl.getRelatedOneCache("ProductFeatureCategory")?if_exists)>
-            <tr valign="middle"<#if rowClass == "1"> class="alternate-row"</#if>>
-                <input type="hidden" name="productId_o_${rowCount}" value="${(productFeatureAndAppl.productId)?if_exists}">
-                <input type="hidden" name="productFeatureId_o_${rowCount}" value="${(productFeatureAndAppl.productFeatureId)?if_exists}">
-                <input type="hidden" name="fromDate_o_${rowCount}" value="${(productFeatureAndAppl.fromDate)?if_exists}">
-                <td>${(productFeatureAndAppl.productFeatureId)?if_exists}</td>
-                <td>${(productFeatureAndAppl.get("description",locale))?if_exists}</td>
-                <td>${(curProductFeatureType.get("description",locale))?default((productFeatureAndAppl.productFeatureTypeId)?if_exists)}</td>
-                <td><a href="<@o...@ofbizUrl>" class="buttontext">
-                    ${(curProductFeatureCategory.description)?if_exists}
-                    [${(productFeatureAndAppl.productFeatureCategoryId)?if_exists}]</a></td>
-                <#assign hasntStarted = false>
-                <#if (productFeatureAndAppl.getTimestamp("fromDate"))?exists && Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().before(productFeatureAndAppl.getTimestamp("fromDate"))> <#assign hasntStarted = true></#if>
-                <td <#if hasntStarted> style='color: red;'</#if>>${(productFeatureAndAppl.fromDate)?if_exists}</td>
-                <td>
-                    <#assign hasExpired = false>
-                    <#if (productFeatureAndAppl.getTimestamp("thruDate"))?exists && Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().after(productFeatureAndAppl.getTimestamp("thruDate"))> <#assign hasExpired = true></#if>
-                    <input type='text' size='25' name='thruDate_o_${rowCount}' value='${(productFeatureAndAppl.thruDate)?if_exists}' <#if hasExpired> style='color: red;'</#if>>
-                    <a href="javascript:call_cal(document.selectAllForm.thruDate_o_${rowCount}, '${(productFeatureAndAppl.thruDate)?default(nowTimestamp?string)}');"><img src='/images/cal.gif' width='16' height='16' border='0' alt='Calendar'></a>
-                    <input type="text" size='6' name='amount_o_${rowCount}' value='${(productFeatureAndAppl.amount)?if_exists}'>
-                    <input type="text" size='5' name='sequenceNum_o_${rowCount}' value='${(productFeatureAndAppl.sequenceNum)?if_exists}'>
-                    <select name='productFeatureApplTypeId_o_${rowCount}' size="1">
-                    <#if (productFeatureAndAppl.productFeatureApplTypeId)?exists>
-                        <option value='${(productFeatureAndAppl.productFeatureApplTypeId)?if_exists}'><#if curProductFeatureApplType?exists> ${(curProductFeatureApplType.get("description",locale))?if_exists} <#else> [${productFeatureAndAppl.productFeatureApplTypeId}]</#if></option>
-                        <option value='${productFeatureAndAppl.productFeatureApplTypeId}'> </option>
-                    </#if>
-                    <#list productFeatureApplTypes as productFeatureApplType>
-                        <option value='${(productFeatureApplType.productFeatureApplTypeId)?if_exists}'>${(productFeatureApplType.get("description",locale))?if_exists} </option>
-                    </#list>
-                    </select>
-                </td>
-                <td align="right">              
-                    <input type="checkbox" name="_rowSubmit_o_${rowCount}" value="Y" onclick="javascript:checkToggle(this, 'selectAllForm');">
-                </td>
-                <td>
-                    <a href='<@o...@ofbizUrl>' class="buttontext">
-                    ${uiLabelMap.CommonDelete}</a>
-                </td>
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <h3>${uiLabelMap.PageTitleEditProductFeatures}</h3>
+    </div>
+    <div class="screenlet-body">     
+        <table cellspacing="0" class="basic-table">
+            <form method="post" action="<@o...@ofbizUrl>" name="selectAllForm">
+            <input type="hidden" name="_useRowSubmit" value="Y">
+            <input type="hidden" name="_checkGlobalScope" value="Y">
+            <input type="hidden" name="productId" value="${productId}">
+            <tr class="header-row">
+                <td><b>${uiLabelMap.CommonId}</b></td>
+                <td><b>${uiLabelMap.CommonDescription}</b></td>
+                <td><b>${uiLabelMap.ProductType}</b></td>
+                <td><b>${uiLabelMap.ProductCategory}</b></td>
+                <td><b>${uiLabelMap.CommonFromDate}</b></td>
+                <td><b>${uiLabelMap.ProductThruDateAmountSequenceApplicationType}</b></td>
+                <td><b>${uiLabelMap.CommonAll}<input type="checkbox" name="selectAll" value="${uiLabelMap.CommonY}" onclick="javascript:toggleAll(this, 'selectAllForm');"></td>
             </tr>
-            <#assign rowCount = rowCount + 1>
-            <#-- toggle the row color -->
-            <#if rowClass == "2">
-                <#assign rowClass = "1">
-            <#else>
-                <#assign rowClass = "2">
-            </#if>
-        </#list>
-        <input type="hidden" name="_rowCount" value="${rowCount}">
-        <tr><td colspan="8" align="center"><input type="submit" value='${uiLabelMap.CommonUpdate}'/></td></tr>
+            <#assign rowCount = 0>
+            <#assign rowClass = "2">
+            <#list productFeatureAndAppls as productFeatureAndAppl>
+                <#assign curProductFeatureType = productFeatureAndAppl.getRelatedOneCache("ProductFeatureType")>
+                <#assign curProductFeatureApplType = productFeatureAndAppl.getRelatedOneCache("ProductFeatureApplType")>
+                <#assign curProductFeatureCategory = (productFeatureAndAppl.getRelatedOneCache("ProductFeatureCategory")?if_exists)>
+                <tr valign="middle"<#if rowClass == "1"> class="alternate-row"</#if>>
+                    <input type="hidden" name="productId_o_${rowCount}" value="${(productFeatureAndAppl.productId)?if_exists}">
+                    <input type="hidden" name="productFeatureId_o_${rowCount}" value="${(productFeatureAndAppl.productFeatureId)?if_exists}">
+                    <input type="hidden" name="fromDate_o_${rowCount}" value="${(productFeatureAndAppl.fromDate)?if_exists}">
+                    <td>${(productFeatureAndAppl.productFeatureId)?if_exists}</td>
+                    <td>${(productFeatureAndAppl.get("description",locale))?if_exists}</td>
+                    <td>${(curProductFeatureType.get("description",locale))?default((productFeatureAndAppl.productFeatureTypeId)?if_exists)}</td>
+                    <td><a href="<@o...@ofbizUrl>" class="buttontext">
+                        ${(curProductFeatureCategory.description)?if_exists}
+                        [${(productFeatureAndAppl.productFeatureCategoryId)?if_exists}]</a></td>
+                    <#assign hasntStarted = false>
+                    <#if (productFeatureAndAppl.getTimestamp("fromDate"))?exists && Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().before(productFeatureAndAppl.getTimestamp("fromDate"))> <#assign hasntStarted = true></#if>
+                    <td <#if hasntStarted> style='color: red;'</#if>>${(productFeatureAndAppl.fromDate)?if_exists}</td>
+                    <td>
+                        <#assign hasExpired = false>
+                        <#if (productFeatureAndAppl.getTimestamp("thruDate"))?exists && Static["org.ofbiz.base.util.UtilDateTime"].nowTimestamp().after(productFeatureAndAppl.getTimestamp("thruDate"))> <#assign hasExpired = true></#if>
+                        <input type='text' size='25' name='thruDate_o_${rowCount}' value='${(productFeatureAndAppl.thruDate)?if_exists}' <#if hasExpired> style='color: red;'</#if>>
+                        <a href="javascript:call_cal(document.selectAllForm.thruDate_o_${rowCount}, '${(productFeatureAndAppl.thruDate)?default(nowTimestamp?string)}');"><img src='/images/cal.gif' width='16' height='16' border='0' alt='Calendar'></a>
+                        <input type="text" size='6' name='amount_o_${rowCount}' value='${(productFeatureAndAppl.amount)?if_exists}'>
+                        <input type="text" size='5' name='sequenceNum_o_${rowCount}' value='${(productFeatureAndAppl.sequenceNum)?if_exists}'>
+                        <select name='productFeatureApplTypeId_o_${rowCount}' size="1">
+                        <#if (productFeatureAndAppl.productFeatureApplTypeId)?exists>
+                            <option value='${(productFeatureAndAppl.productFeatureApplTypeId)?if_exists}'><#if curProductFeatureApplType?exists> ${(curProductFeatureApplType.get("description",locale))?if_exists} <#else> [${productFeatureAndAppl.productFeatureApplTypeId}]</#if></option>
+                            <option value='${productFeatureAndAppl.productFeatureApplTypeId}'> </option>
+                        </#if>
+                        <#list productFeatureApplTypes as productFeatureApplType>
+                            <option value='${(productFeatureApplType.productFeatureApplTypeId)?if_exists}'>${(productFeatureApplType.get("description",locale))?if_exists} </option>
+                        </#list>
+                        </select>
+                    </td>
+                    <td align="right">              
+                        <input type="checkbox" name="_rowSubmit_o_${rowCount}" value="Y" onclick="javascript:checkToggle(this, 'selectAllForm');">
+                    </td>
+                    <td>
+                        <a href='<@o...@ofbizUrl>' class="buttontext">
+                        ${uiLabelMap.CommonDelete}</a>
+                    </td>
+                </tr>
+                <#assign rowCount = rowCount + 1>
+                <#-- toggle the row color -->
+                <#if rowClass == "2">
+                    <#assign rowClass = "1">
+                <#else>
+                    <#assign rowClass = "2">
+                </#if>
+            </#list>
+            <input type="hidden" name="_rowCount" value="${rowCount}">
+            <tr><td colspan="8" align="center"><input type="submit" value='${uiLabelMap.CommonUpdate}'/></td></tr>
+            </form>
+        </table>
+    </div>
+</div>
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <h3>${uiLabelMap.ProductAddProductFeatureFromCategory}</h3>
+    </div>
+    <div class="screenlet-body"> 
+        <form method="post" action="<@o...@ofbizUrl>" style='margin: 0;'>
+            <input type="hidden" name="productId" value="${productId}">
+            <select name='productFeatureCategoryId' size="1">
+                <option value='' selected>${uiLabelMap.ProductChooseFeatureCategory}</option>
+                <#list productFeatureCategories as productFeatureCategory>
+                    <option value='${(productFeatureCategory.productFeatureCategoryId)?if_exists}'>${(productFeatureCategory.description)?if_exists} [${(productFeatureCategory.productFeatureCategoryId)?if_exists}]</option>
+                </#list>
+            </select>
+            <select name='productFeatureGroupId' size="1">
+                <option value='' selected>${uiLabelMap.ProductChooseFeatureGroup}</option>
+                <#list productFeatureGroups as productFeatureGroup>
+                    <option value='${(productFeatureGroup.productFeatureGroupId)?if_exists}'>${(productFeatureGroup.description)?if_exists} [${(productFeatureGroup.productFeatureGroupId)?if_exists}]</option>
+                </#list>
+            </select>
+            <span class='label'>${uiLabelMap.ProductFeatureApplicationType}: </span>
+            <select name='productFeatureApplTypeId' size="1">
+                <#list productFeatureApplTypes as productFeatureApplType>
+                   <option value='${(productFeatureApplType.productFeatureApplTypeId)?if_exists}' 
+                   <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'Y' && productFeatureApplType.productFeatureApplTypeId =="SELECTABLE_FEATURE")>selected</#if>
+                   <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'N' && productFeatureApplType.productFeatureApplTypeId?if_exists =="STANDARD_FEATURE")>selected</#if>
+                   >${(productFeatureApplType.get("description",locale))?if_exists} </option>           
+                </#list>
+            </select>
+            <input type="submit" value='${uiLabelMap.CommonAdd}'>
         </form>
-    </table>
-    <br/>
-    <form method="post" action="<@o...@ofbizUrl>" style='margin: 0;'>
-        <input type="hidden" name="productId" value="${productId}">
-        <h2>${uiLabelMap.ProductAddProductFeatureFromCategory}:</h2>
-        <br/>
-        <select name='productFeatureCategoryId' size="1">
-            <option value='' selected>${uiLabelMap.ProductChooseFeatureCategory}</option>
-            <#list productFeatureCategories as productFeatureCategory>
-                <option value='${(productFeatureCategory.productFeatureCategoryId)?if_exists}'>${(productFeatureCategory.description)?if_exists} [${(productFeatureCategory.productFeatureCategoryId)?if_exists}]</option>
-            </#list>
-        </select>
-        <select name='productFeatureGroupId' size="1">
-            <option value='' selected>${uiLabelMap.ProductChooseFeatureGroup}</option>
-            <#list productFeatureGroups as productFeatureGroup>
-                <option value='${(productFeatureGroup.productFeatureGroupId)?if_exists}'>${(productFeatureGroup.description)?if_exists} [${(productFeatureGroup.productFeatureGroupId)?if_exists}]</option>
-            </#list>
-        </select>
-        <span class='label'>${uiLabelMap.ProductFeatureApplicationType}: </span>
-        <select name='productFeatureApplTypeId' size="1">
-            <#list productFeatureApplTypes as productFeatureApplType>
-               <option value='${(productFeatureApplType.productFeatureApplTypeId)?if_exists}' 
-               <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'Y' && productFeatureApplType.productFeatureApplTypeId =="SELECTABLE_FEATURE")>selected</#if>
-               <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'N' && productFeatureApplType.productFeatureApplTypeId?if_exists =="STANDARD_FEATURE")>selected</#if>
-               >${(productFeatureApplType.get("description",locale))?if_exists} </option>           
-            </#list>
-        </select>
-        <input type="submit" value='${uiLabelMap.CommonAdd}'>
-    </form>
-    <br/>
-    <form method="post" action="<@o...@ofbizUrl>" name='addFeatureByTypeIdCode'>
-        <input type="hidden" name="productId" value="${productId}">
-        <h2>${uiLabelMap.ProductAddProductFeatureTypeId}:</h2>
-        <br/>
-        <span class='label'>${uiLabelMap.ProductFeatureType}: </span><select name='productFeatureTypeId' size="1">
-            <#list productFeatureTypes as productFeatureType>
-            <option value='${(productFeatureType.productFeatureTypeId)?if_exists}'>${(productFeatureType.get("description",locale))?if_exists} </option>
-            </#list>
-        </select>
-        <span class='label'>${uiLabelMap.CommonIdCode}: </span><input type="text" size='10' name='idCode' value=''>
-        <br/>
-        <span class='label'>${uiLabelMap.ProductFeatureApplicationType}: </span>
-        <select name='productFeatureApplTypeId' size="1">
-            <#list productFeatureApplTypes as productFeatureApplType>
-               <option value='${(productFeatureApplType.productFeatureApplTypeId)?if_exists}' 
-               <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'Y' && productFeatureApplType.productFeatureApplTypeId =="SELECTABLE_FEATURE")>selected</#if>
-               <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'N' && productFeatureApplType.productFeatureApplTypeId =="STANDARD_FEATURE")>selected</#if>
-               >${(productFeatureApplType.get("description",locale))?if_exists} </option>           
-            </#list>
-        </select>
-        <br/>
-        <span class='label'>${uiLabelMap.CommonFrom} : </span><input type="text" size='25' name='fromDate'>
-        <a href="javascript:call_cal(document.addFeatureByTypeIdCode.fromDate, '${nowTimestamp?string}');"><img src='/images/cal.gif' width='16' height='16' border='0' alt='Calendar'></a>
-        <span class='label'>${uiLabelMap.CommonThru} : </span><input type="text" size='25' name='thruDate'>
-        <a href="javascript:call_cal(document.addFeatureByTypeIdCode.thruDate, '${nowTimestamp?string}');"><img src='/images/cal.gif' width='16' height='16' border='0' alt='Calendar'></a>
-        <span class='label'>${uiLabelMap.CommonSequence} : </span><input type="text" size='5' name='sequenceNum'>
-        <input type="submit" value="${uiLabelMap.CommonAdd}">
-    </form>
-    <br/>
-    <form method="post" action="<@o...@ofbizUrl>" name="addFeatureById">
-        <input type="hidden" name="productId" value="${productId}">
-        <h2>${uiLabelMap.ProductAddProductFeatureID}:</h2>
-        <br/>
-        <span class="label">${uiLabelMap.CommonId}: </span>
-        <input type="text" size="10" name="productFeatureId" value="">
-        <span class='label'>
-            <a href="javascript:call_fieldlookup2(document.addFeatureById.productFeatureId,'LookupProductFeature');">
-                <img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'>
-            </a> 
-        </span>
-        <span class="label">${uiLabelMap.ProductFeatureApplicationType}: </span>
-        <select name="productFeatureApplTypeId" size="1">
-            <#list productFeatureApplTypes as productFeatureApplType>
-               <option value='${(productFeatureApplType.productFeatureApplTypeId)?if_exists}' 
-               <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'Y' && productFeatureApplType.productFeatureApplTypeId =="SELECTABLE_FEATURE")>selected</#if>
-               <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'N' && productFeatureApplType.productFeatureApplTypeId =="STANDARD_FEATURE")>selected</#if>
-               >${(productFeatureApplType.get("description",locale))?if_exists} </option>           
-            </#list>
-        </select>
-        <br/>
-        <span class="label">${uiLabelMap.CommonFrom} : </span><input type="text" size="25" name="fromDate">
-        <a href="javascript:call_cal(document.addFeatureById.fromDate, '${nowTimestamp?string}');"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
-        <span class="label">${uiLabelMap.CommonThru} : </span><input type="text" size="25" name="thruDate">
-        <a href="javascript:call_cal(document.addFeatureById.thruDate, '${nowTimestamp?string}');"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
-        <span class="label">${uiLabelMap.CommonSequence} : </span><input type="text" size="5" name="sequenceNum">
-        <input type="submit" value="${uiLabelMap.CommonAdd}">
-    </form>
-</#if>
-<br/>
\ No newline at end of file
+    </div>
+</div>
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <h3>${uiLabelMap.ProductAddProductFeatureTypeId}</h3>
+    </div>
+    <div class="screenlet-body"> 
+        <form method="post" action="<@o...@ofbizUrl>" name='addFeatureByTypeIdCode'>
+            <input type="hidden" name="productId" value="${productId}">
+            <span class='label'>${uiLabelMap.ProductFeatureType}: </span><select name='productFeatureTypeId' size="1">
+                <#list productFeatureTypes as productFeatureType>
+                <option value='${(productFeatureType.productFeatureTypeId)?if_exists}'>${(productFeatureType.get("description",locale))?if_exists} </option>
+                </#list>
+            </select>
+            <span class='label'>${uiLabelMap.CommonIdCode}: </span><input type="text" size='10' name='idCode' value=''>
+            <br/>
+            <span class='label'>${uiLabelMap.ProductFeatureApplicationType}: </span>
+            <select name='productFeatureApplTypeId' size="1">
+                <#list productFeatureApplTypes as productFeatureApplType>
+                   <option value='${(productFeatureApplType.productFeatureApplTypeId)?if_exists}' 
+                   <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'Y' && productFeatureApplType.productFeatureApplTypeId =="SELECTABLE_FEATURE")>selected</#if>
+                   <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'N' && productFeatureApplType.productFeatureApplTypeId =="STANDARD_FEATURE")>selected</#if>
+                   >${(productFeatureApplType.get("description",locale))?if_exists} </option>           
+                </#list>
+            </select>
+            <br/>
+            <span class='label'>${uiLabelMap.CommonFrom} : </span><input type="text" size='25' name='fromDate'>
+            <a href="javascript:call_cal(document.addFeatureByTypeIdCode.fromDate, '${nowTimestamp?string}');"><img src='/images/cal.gif' width='16' height='16' border='0' alt='Calendar'></a>
+            <span class='label'>${uiLabelMap.CommonThru} : </span><input type="text" size='25' name='thruDate'>
+            <a href="javascript:call_cal(document.addFeatureByTypeIdCode.thruDate, '${nowTimestamp?string}');"><img src='/images/cal.gif' width='16' height='16' border='0' alt='Calendar'></a>
+            <span class='label'>${uiLabelMap.CommonSequence} : </span><input type="text" size='5' name='sequenceNum'>
+            <input type="submit" value="${uiLabelMap.CommonAdd}">
+        </form>
+    </div>
+</div>
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <h3>${uiLabelMap.ProductAddProductFeatureID}</h3>
+    </div>
+    <div class="screenlet-body"> 
+        <form method="post" action="<@o...@ofbizUrl>" name="addFeatureById">
+            <input type="hidden" name="productId" value="${productId}">
+            <span class="label">${uiLabelMap.CommonId}: </span>
+            <input type="text" size="10" name="productFeatureId" value="">
+            <span class='label'>
+                <a href="javascript:call_fieldlookup2(document.addFeatureById.productFeatureId,'LookupProductFeature');">
+                    <img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt='Click here For Field Lookup'>
+                </a> 
+            </span>
+            <span class="label">${uiLabelMap.ProductFeatureApplicationType}: </span>
+            <select name="productFeatureApplTypeId" size="1">
+                <#list productFeatureApplTypes as productFeatureApplType>
+                   <option value='${(productFeatureApplType.productFeatureApplTypeId)?if_exists}' 
+                   <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'Y' && productFeatureApplType.productFeatureApplTypeId =="SELECTABLE_FEATURE")>selected</#if>
+                   <#if (productFeatureApplType.productFeatureApplTypeId?exists && product?exists && product.isVirtual == 'N' && productFeatureApplType.productFeatureApplTypeId =="STANDARD_FEATURE")>selected</#if>
+                   >${(productFeatureApplType.get("description",locale))?if_exists} </option>           
+                </#list>
+            </select>
+            <br/>
+            <span class="label">${uiLabelMap.CommonFrom} : </span><input type="text" size="25" name="fromDate">
+            <a href="javascript:call_cal(document.addFeatureById.fromDate, '${nowTimestamp?string}');"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
+            <span class="label">${uiLabelMap.CommonThru} : </span><input type="text" size="25" name="thruDate">
+            <a href="javascript:call_cal(document.addFeatureById.thruDate, '${nowTimestamp?string}');"><img src="<@o...@ofbizContentUrl>" width="16" height="16" border="0" alt="Calendar"></a>
+            <span class="label">${uiLabelMap.CommonSequence} : </span><input type="text" size="5" name="sequenceNum">
+            <input type="submit" value="${uiLabelMap.CommonAdd}">
+        </form>
+    </div>
+</div>
+</#if>
\ No newline at end of file