Author: jleroux
Date: Mon Nov 23 10:40:52 2015
New Revision: 1715755
URL: http://svn.apache.org/viewvc?rev=1715755&view=rev
Log:
A completed patch from Christian Carlow for "Replace EditProductAssoc ftl with
widgets" https://issues.apache.org/jira/browse/OFBIZ-6320
jleroux:
Added
bottom note (in both lists now)
title="${uiLabelMap.ProductProductId}"
title="${uiLabelMap.ProductProductIdTo}"
fromDate <date-time default-value="${nowTimestamp}"
tooltip="${uiLabelMap.ProductRecreateAssociation}"
Removed
EditProductAssoc.ftl
old screen with ftl ref in screen (commented out by Christian)
UNUSED FORMS comment
Product column when same than picked (depend on iterate-section)
I liked the idea of changing the main product using a lookup in edit part.
Removed:
ofbiz/trunk/applications/product/webapp/catalog/product/EditProductAssoc.ftl
Modified:
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductAssoc.groovy
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml
ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml
Modified:
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductAssoc.groovy
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductAssoc.groovy?rev=1715755&r1=1715754&r2=1715755&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductAssoc.groovy
(original)
+++
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductAssoc.groovy
Mon Nov 23 10:40:52 2015
@@ -20,69 +20,22 @@
import org.ofbiz.entity.*
import org.ofbiz.base.util.*
-context.nowDate = UtilDateTime.nowDate();
-context.nowTimestampString = UtilDateTime.nowTimestamp().toString();
+uiLabelMap = UtilProperties.getResourceBundleMap("ProductUiLabels", locale);
-useValues = true;
-if (request.getAttribute("_ERROR_MESSAGE_")) {
- useValues = false;
-}
-
-productId = parameters.productId;
-if (!productId) {
- productId = parameters.PRODUCT_ID;
-} else {
- context.productId = productId;
-}
+product = from("Product").where("productId", parameters.productId).queryOne();
-productIdTo = parameters.PRODUCT_ID_TO;
-if (productIdTo) {
- context.productIdTo = productIdTo;
+fromDate = UtilDateTime.nowTimestamp();
+if (UtilValidate.isNotEmpty(parameters.fromDate)) {
+ fromDate = ObjectType.simpleTypeConvert(parameters.fromDate, "Timestamp",
null, timeZone, locale, false);
}
-productAssocTypeId = parameters.PRODUCT_ASSOC_TYPE_ID;
-if (productAssocTypeId != null) {
- context.productAssocTypeId = productAssocTypeId;
-}
-
-fromDateStr = parameters.FROM_DATE;
+productAssoc = from("ProductAssoc").where("productId", parameters.productId,
"productIdTo", parameters.productIdTo, "productAssocTypeId",
parameters.productAssocTypeId, "fromDate", fromDate).queryOne();
+context.productAssoc = productAssoc;
-fromDate = null;
-if (UtilValidate.isNotEmpty(fromDateStr)) {
- fromDate = ObjectType.simpleTypeConvert(fromDateStr, "Timestamp", null,
timeZone, locale, false);
-}
-if (!fromDate) {
- fromDate = request.getAttribute("ProductAssocCreateFromDate");
-} else {
- context.fromDate = fromDate;
-}
-
-product = from("Product").where("productId", productId).queryOne();
if (product) {
- context.product = product;
-}
-
-productAssoc = from("ProductAssoc").where("productId", productId,
"productIdTo", productIdTo, "productAssocTypeId", productAssocTypeId,
"fromDate", fromDate).queryOne();
-if (productAssoc) {
- context.productAssoc = productAssoc;
-}
-
-if ("true".equalsIgnoreCase(parameters.useValues)) {
- useValues = true;
-}
-
-if (!productAssoc) {
- useValues = false;
-}
-
-context.useValues = useValues;
-context.isCreate = true;
-
-assocTypes = from("ProductAssocType").orderBy("description").queryList();
-context.assocTypes = assocTypes;
-
-if (product) {
- context.assocFromProducts = product.getRelated("MainProductAssoc", null,
['sequenceNum'], false);
-
- context.assocToProducts = product.getRelated("AssocProductAssoc", null,
null, false);
-}
+ assocFromProducts = product.getRelated("MainProductAssoc", null,
['sequenceNum'], false);
+ assocToProducts = product.getRelated("AssocProductAssoc", null, null,
false);
+ assocFromMap = ["assocProducts" : assocFromProducts, "sectionTitle" :
uiLabelMap.ProductAssociationsFromProduct];
+ assocToMap = ["assocProducts" : assocToProducts, "sectionTitle" :
uiLabelMap.ProductAssociationsToProduct];
+ context.assocSections = [assocFromMap, assocToMap];
+}
\ No newline at end of file
Modified: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml?rev=1715755&r1=1715754&r2=1715755&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
(original)
+++ ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml Mon
Nov 23 10:40:52 2015
@@ -822,12 +822,22 @@ under the License.
<security https="true" auth="true"/>
<response name="success" type="view" value="EditProductAssoc"/>
</request-map>
- <request-map uri="UpdateProductAssoc">
+ <request-map uri="createProductAssoc">
<security https="true" auth="true"/>
- <event type="java" path="org.ofbiz.product.product.ProductEvents"
invoke="updateProductAssoc"/>
- <response name="success" type="request-redirect"
value="EditProductAssoc">
- <redirect-parameter name="productId"/>
- </response>
+ <event type="service" invoke="createProductAssoc"/>
+ <response name="success" type="view" value="EditProductAssoc"/>
+ <response name="error" type="view" value="EditProductAssoc"/>
+ </request-map>
+ <request-map uri="updateProductAssoc">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="updateProductAssoc"/>
+ <response name="success" type="view" value="EditProductAssoc"/>
+ <response name="error" type="view" value="EditProductAssoc"/>
+ </request-map>
+ <request-map uri="deleteProductAssoc">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="deleteProductAssoc"/>
+ <response name="success" type="view" value="EditProductAssoc"/>
<response name="error" type="view" value="EditProductAssoc"/>
</request-map>
Modified: ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml?rev=1715755&r1=1715754&r2=1715755&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml (original)
+++ ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml Mon Nov 23
10:40:52 2015
@@ -1137,29 +1137,94 @@ under the License.
<field name="submitButton" title="${uiLabelMap.CommonUpdate}"
widget-style="smallSubmit"><submit button-type="button"/></field>
</form>
- <!-- UNUSED FORMS
- <form name="ListProductAssocs" type="list" use-row-submit="true" title=""
list-name="productAssocs"
- odd-row-style="alternate-row" default-table-style="basic-table"
paginate-target="EditProductAssoc">
- <auto-fields-entity entity-name="ProductAssoc"
default-field-type="display"/>
- <field name="productId"><hidden/></field>
- <field name="productIdTo" title="${uiLabelMap.CommonEdit}"
widget-style="buttontext">
- <hyperlink also-hidden="false" description="${productIdTo}"
target="EditProduct">
- <parameter param-name="productId" from-field="productIdTo"/>
- </hyperlink>
+ <form name="EditProductAssoc" type="single" use-row-submit="true"
title="" default-map-name="productAssoc" target="createProductAssoc"
+ default-table-style="basic-table" paginate-target="EditProductAssoc">
+ <alt-target use-when="productAssoc!=null" target="updateProductAssoc"/>
+ <field name="productId" use-when="productAssoc==null"
title="${uiLabelMap.ProductProductId}"><lookup
target-form-name="LookupProduct"/></field>
+ <field name="productId" use-when="productAssoc!=null"
title="${uiLabelMap.ProductProductId}"
tooltip="${uiLabelMap.ProductRecreateAssociation}" ><display/></field>
+ <field name="productIdTo" use-when="productAssoc==null"
title="${uiLabelMap.ProductProductIdTo}">
+ <lookup target-form-name="LookupProduct"/>
+ </field>
+ <field name="productIdTo" use-when="productAssoc!=null"
title="${uiLabelMap.ProductProductIdTo}"
tooltip="${uiLabelMap.ProductRecreateAssociation}"><display/></field>
+ <field name="productAssocTypeId" use-when="productAssoc==null"
title="${uiLabelMap.ProductAssociationType}">
+ <drop-down>
+ <entity-options description="${description}"
entity-name="ProductAssocType">
+ <entity-order-by field-name="description"/>
+ </entity-options>
+ </drop-down>
+ </field>
+ <field name="productAssocTypeId" use-when="productAssoc!=null"
title="${uiLabelMap.ProductAssociationType}"
tooltip="${uiLabelMap.ProductRecreateAssociation}"><display/></field>
+ <field name="fromDate" use-when="productAssoc==null"
tooltip="${uiLabelMap.CommonSetNowEmpty}"><date-time
default-value="${nowTimestamp}"/></field>
+ <field name="fromDate" use-when="productAssoc!=null"
tooltip="${uiLabelMap.ProductRecreateAssociation}"><display
type="date-time"/></field>
+ <field name="thruDate"><date-time/></field>
+ <field name="sequenceNum"><text size="6"/></field>
+ <field name="reason"><text/></field>
+ <field name="instruction"><text/></field>
+ <field name="quantity"><text size="6"
default-value="${quantity}"/></field>
+ <field name="scrapFactor"><hidden/></field>
+ <field name="routingWorkEffortId"><hidden/></field>
+ <field name="estimateCalcMethod"><hidden/></field>
+ <field name="recurrenceInfoId"><hidden/></field>
+ <field name="createButton" use-when="productAssoc == null">
+ <submit/>
+ </field>
+ <field name="updateButton" use-when="productAssoc != null">
+ <submit/>
</field>
-
</form>
- <form name="ListProductAssocsTo" type="list" use-row-submit="true"
title="" list-name="productAssocsTo"
+ <form name="ListProductAssocs" type="list" use-row-submit="true" title=""
list-name="assocProducts"
odd-row-style="alternate-row" default-table-style="basic-table"
paginate-target="EditProductAssoc">
- <auto-fields-entity entity-name="ProductAssoc"
default-field-type="display"/>
- <field name="productIdTo"><hidden/></field>
- <field name="productId" title="${uiLabelMap.CommonEdit}"
widget-style="buttontext">
- <hyperlink also-hidden="false" description="${productId}"
target="EditProduct">
+ <actions>
+ <set field="labelFrom"
from-field="uiLabelMap.ProductAssociationsFromProduct"/>
+ <set field="labelTo"
from-field="uiLabelMap.ProductAssociationsToProduct"/>
+ <set field="sectionTitle" from-field="assocSection.sectionTitle"/>
+ </actions>
+ <row-actions>
+ <entity-one value-field="product" entity-name="Product">
+ <field-map field-name="productId"
value="${parameters.productId}"/>
+ </entity-one>
+ </row-actions>
+ <field name="productId" widget-style="buttontext"
ignore-when="sectionTitle.equals(labelFrom)"
title="${uiLabelMap.ProductProductId}">
+ <display-entity entity-name="Product"
description="${internalName}">
+ <sub-hyperlink description="${productId}"
link-style="buttontext" target="EditProductAssoc">
+ <parameter param-name="productId"/>
+ </sub-hyperlink>
+ </display-entity>
+ </field>
+ <field name="productIdTo" widget-style="buttontext"
ignore-when="sectionTitle.equals(labelTo)"
title="${uiLabelMap.ProductProductId}">
+ <display-entity entity-name="Product" key-field-name="productId"
description="${internalName}">
+ <sub-hyperlink description="${productIdTo}"
link-style="buttontext" target="EditProductAssoc">
+ <parameter param-name="productId" value="${productIdTo}"/>
+ </sub-hyperlink>
+ </display-entity>
+ </field>
+ <field name="productAssocTypeId"
title="${uiLabelMap.ProductAssociationType}" >
+ <display-entity entity-name="ProductAssocType"></display-entity>
+ </field>
+ <field name="fromDate"><display/></field>
+ <field name="thruDate"><display/></field>
+ <field name="sequenceNum"><display/></field>
+ <field name="reason"><display/></field>
+ <field name="instruction"><display/></field>
+ <field name="quantity"><display/></field>
+ <field name="editLink" widget-style="buttontext">
+ <hyperlink target="EditProductAssoc"
description="${uiLabelMap.CommonEdit}">
+ <parameter param-name="productId"/>
+ <parameter param-name="productIdTo"/>
+ <parameter param-name="productAssocTypeId"/>
+ <parameter param-name="fromDate"/>
+ </hyperlink>
+ </field>
+ <field name="deleteButton" widget-style="buttontext">
+ <hyperlink target="deleteProductAssoc"
description="${uiLabelMap.CommonDelete}">
<parameter param-name="productId"/>
+ <parameter param-name="productIdTo"/>
+ <parameter param-name="productAssocTypeId"/>
+ <parameter param-name="fromDate"/>
+ <parameter param-name="lastProductId"
from-field="parameters.productId"/>
</hyperlink>
</field>
</form>
- -->
<form name="ListProductComponents" type="list" use-row-submit="true"
title="" list-name="components"
odd-row-style="alternate-row" default-table-style="basic-table"
paginate-target="ViewProductManufacturing">
Modified: ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml?rev=1715755&r1=1715754&r2=1715755&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml
(original)
+++ ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml Mon Nov
23 10:40:52 2015
@@ -986,56 +986,33 @@ under the License.
<set field="titleProperty"
value="PageTitleEditProductAssociations"/>
<set field="tabButtonItem" value="EditProductAssoc"/>
<set field="labelTitleProperty" value="ProductAssociations"/>
-
<script
location="component://product/webapp/catalog/WEB-INF/actions/product/EditProductAssoc.groovy"/>
</actions>
<widgets>
<decorator-screen name="CommonProductDecorator"
location="${parameters.productDecoratorLocation}">
<decorator-section name="body">
- <container>
+ <screenlet
title="${uiLabelMap.PageTitleEditProductAssociations}">
+ <include-form name="EditProductAssoc"
location="component://product/widget/catalog/ProductForms.xml"/>
+ </screenlet>
+ <iterate-section entry="assocSection"
list="assocSections">
<section>
+ <actions>
+ <set field="assocProducts"
from-field="assocSection.assocProducts"/>
+ </actions>
<widgets>
- <platform-specific>
- <html><html-template
location="component://product/webapp/catalog/product/EditProductAssoc.ftl"/></html>
- </platform-specific>
+ <screenlet
title="${assocSection.sectionTitle}">
+ <include-form name="ListProductAssocs"
location="component://product/widget/catalog/ProductForms.xml"/>
+ </screenlet>
+ <label
style="tooltip">${uiLabelMap.CommonNote} :
${uiLabelMap.ProductHighlightedExplanation}</label>
</widgets>
</section>
- </container>
+ </iterate-section>
</decorator-section>
</decorator-screen>
</widgets>
</section>
</screen>
- <!--
- <screen name="EditProductAssoc">
- <section>
- <actions>
- <set field="titleProperty"
value="PageTitleEditProductAssociations"/>
- <set field="tabButtonItem" value="EditProductAssoc"/>
- <set field="labelTitleProperty" value="EditProductAssoc"/>
- <set field="productId" from-field="parameters.productId"/>
- <entity-one entity-name="Product" value-field="product"/>
- <entity-and entity-name="ProductAssoc"
list-name="productAssocs">
- <field-map field-name="productId"/>
- <order-by field-name="productAssocTypeId"/>
- </entity-and>
- <entity-and entity-name="ProductAssoc"
list-name="productAssocsTo">
- <field-map from-field="productId"
field-name="productIdTo"/>
- <order-by field-name="productAssocTypeId"/>
- </entity-and>
- </actions>
- <widgets>
- <decorator-screen name="CommonProductDecorator"
location="${parameters.productDecoratorLocation}">
- <decorator-section name="body">
- <include-form name="ListProductAssocs"
location="component://product/widget/catalog/ProductForms.xml"/>
- <include-form name="ListProductAssocsTo"
location="component://product/widget/catalog/ProductForms.xml"/>
- </decorator-section>
- </decorator-screen>
- </widgets>
- </section>
- </screen>
- -->
<screen name="ApplyFeaturesFromCategory">
<section>
<actions>