svn commit: r1867662 - in /ofbiz/ofbiz-plugins/trunk/ecommerce: template/order/CompareProducts.ftl webapp/ecommerce/WEB-INF/controller.xml widget/OrderScreens.xml

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

svn commit: r1867662 - in /ofbiz/ofbiz-plugins/trunk/ecommerce: template/order/CompareProducts.ftl webapp/ecommerce/WEB-INF/controller.xml widget/OrderScreens.xml

Pawan Verma-2
Author: pawan
Date: Sat Sep 28 10:14:24 2019
New Revision: 1867662

URL: http://svn.apache.org/viewvc?rev=1867662&view=rev
Log:
Implemented: Improve add to compare screen with latest bootstrap framework
(OFBIZ-10968)

Thanks, Nitish Mishra for your contribution.

Added:
    ofbiz/ofbiz-plugins/trunk/ecommerce/template/order/CompareProducts.ftl   (with props)
Modified:
    ofbiz/ofbiz-plugins/trunk/ecommerce/webapp/ecommerce/WEB-INF/controller.xml
    ofbiz/ofbiz-plugins/trunk/ecommerce/widget/OrderScreens.xml

Added: ofbiz/ofbiz-plugins/trunk/ecommerce/template/order/CompareProducts.ftl
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-plugins/trunk/ecommerce/template/order/CompareProducts.ftl?rev=1867662&view=auto
==============================================================================
--- ofbiz/ofbiz-plugins/trunk/ecommerce/template/order/CompareProducts.ftl (added)
+++ ofbiz/ofbiz-plugins/trunk/ecommerce/template/order/CompareProducts.ftl Sat Sep 28 10:14:24 2019
@@ -0,0 +1,196 @@
+<#--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<div class="card m-5">
+  <div class="card-header">
+    <strong>Compare Products</strong>
+  </div>
+  <div class="card-body">
+    <table class="table">
+      <#-- Header row, contains product small image, product name, price -->
+      <tr>
+        <td>&nbsp;</td>
+        <#list compareList as product>
+          <#assign tdWidth = 100/compareList?size />
+          <#assign productData = productDataMap[product.productId]/>
+          <#assign productContentWrapper = productData.productContentWrapper/>
+          <#assign price = productData.priceMap/>
+          <#assign productUrl><@ofbizCatalogAltUrl productId=product.productId/></#assign>
+          <#assign smallImageUrl = productContentWrapper.get("SMALL_IMAGE_URL", "url")/>
+          <#if smallImageUrl!?length == 0>
+            <#assign smallImageUrl = "/images/defaultImage.jpg"/>
+          </#if>
+          <td style="width:${tdWidth?c}%;">
+            <img src="<@ofbizContentUrl>${contentPathPrefix!}${smallImageUrl}</@ofbizContentUrl>" alt="Small Image"/><br />
+            ${productContentWrapper.get("PRODUCT_NAME", "html")}<br />
+            <#if totalPrice??>
+              <div>${uiLabelMap.ProductAggregatedPrice}: <span class='basePrice'><@ofbizCurrency amount=totalPrice isoCode=totalPrice.currencyUsed/></span></div>
+            <#else>
+              <#if price.isSale?? && price.isSale>
+                <#assign priceStyle = "salePrice">
+              <#else>
+                <#assign priceStyle = "regularPrice">
+              </#if>
+
+              <#if (price.price?default(0) > 0 && "N" == product.requireAmount?default("N"))>
+                <#if "Y" = product.isVirtual!> ${uiLabelMap.CommonFrom} </#if><span class="${priceStyle}"><@ofbizCurrency amount=price.price isoCode=price.currencyUsed/></span>
+              </#if>
+            </#if>
+            <div class="productbuy">
+            <#-- check to see if introductionDate hasn't passed yet -->
+            <#if product.introductionDate?? && nowTimestamp.before(product.introductionDate)>
+              <div style="color: red;">${uiLabelMap.ProductNotYetAvailable}</div>
+            <#-- check to see if salesDiscontinuationDate has passed -->
+            <#elseif product.salesDiscontinuationDate?? && nowTimestamp.after(product.salesDiscontinuationDate)/>
+              <div style="color: red;">${uiLabelMap.ProductNoLongerAvailable}</div>
+            <#-- check to see if it is a rental item; will enter parameters on the detail screen-->
+            <#elseif "ASSET_USAGE" == product.productTypeId!/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderMakeBooking}...</a>
+            <#elseif "ASSET_USAGE_OUT_IN" == product.productTypeId!/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderRent}...</a>
+            <#-- check to see if it is an aggregated or configurable product; will enter parameters on the detail screen-->
+            <#elseif "AGGREGATED" == product.productTypeId! || "AGGREGATED_SERVICE" == product.productTypeId!/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderConfigure}...</a>
+            <#-- check to see if the product is a virtual product -->
+            <#elseif product.isVirtual?? && "Y" == product.isVirtual/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderChooseVariations}...</a>
+            <#-- check to see if the product requires an amount -->
+            <#elseif product.requireAmount?? && "Y" == product.requireAmount/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderChooseAmount}...</a>
+            <#else>
+              <form method="post" action="<@ofbizUrl secure="${request.isSecure()?string}">additem</@ofbizUrl>" name="compareFormAdd${product_index}">
+                <input type="hidden" name="add_product_id" value="${product.productId}"/>
+                <input type="text" size="5" name="quantity" value="1"/>
+                <input type="hidden" name="clearSearch" value="N"/>
+              </form>
+              <a href="javascript:doPostViaParent('compareFormAdd${product_index}');" class="buttontext">${uiLabelMap.OrderAddToCart}</a>
+
+              <#if prodCatMem?? && prodCatMem.quantity?? && 0.00 < prodCatMem.quantity?double>
+                <form method="post" action="<@ofbizUrl secure="${request.isSecure()?string}">additem</@ofbizUrl>" name="compareFormAddDefault${product_index}" style="margin: 0;">
+                  <input type="hidden" name="add_product_id" value="${prodCatMem.productId!}"/>
+                  <input type="hidden" name="quantity" value="${prodCatMem.quantity!}"/>
+                  <input type="hidden" name="clearSearch" value="N"/>
+                </form>
+                <a href="javascript:doPostViaParent('compareFormAddDefault${product_index}');" class="buttontext">${uiLabelMap.CommonAddDefault}(${prodCatMem.quantity?string.number}) ${uiLabelMap.OrderToCart}</a>
+              </#if>
+               </#if>
+            </div>
+          </td>
+        </#list>
+      </tr>
+      <#-- Brand name -->
+      <tr>
+        <td>${uiLabelMap.ProductBrandName}</td>
+        <#list compareList as product>
+          <td>${product.brandName?default("&nbsp;")}</td>
+        </#list>
+      </tr>
+      <#-- Description -->
+      <tr>
+        <td>${uiLabelMap.ProductProductDescription}</td>
+        <#list compareList as product>
+          <#assign productData = productDataMap[product.productId]/>
+          <#assign productContentWrapper = productData.productContentWrapper/>
+          <td>${productContentWrapper.get("DESCRIPTION", "html")?default("&nbsp;")}</td>
+        </#list>
+      </tr>
+      <#-- Long Description -->
+      <tr>
+        <td>${uiLabelMap.ProductLongDescription}</td>
+        <#list compareList as product>
+          <#assign productData = productDataMap[product.productId]/>
+          <#assign productContentWrapper = productData.productContentWrapper/>
+          <td>${productContentWrapper.get("LONG_DESCRIPTION", "html")?default("&nbsp;")}</td>
+        </#list>
+      </tr>
+      <#list productFeatureTypeIds as productFeatureTypeId>
+        <#assign productFeatureType = productFeatureTypeMap[productFeatureTypeId]/>
+        <tr>
+          <td>${productFeatureType.get("description", locale)}</td>
+          <#list compareList as product>
+            <#assign productData = productDataMap[product.productId]/>
+            <#assign applMap = productData[productFeatureTypeId]!/>
+            <td>
+              <#if applMap.STANDARD_FEATURE?has_content>
+                <#assign features = applMap.STANDARD_FEATURE/>
+                <#list features as feature>
+                  <div>${feature.get("description", locale)}</div>
+                </#list>
+              </#if>
+              <#if applMap.DISTINGUISHING_FEAT?has_content>
+                <#assign features = applMap.DISTINGUISHING_FEAT/>
+                <#list features as feature>
+                  <div>${feature.get("description", locale)}</div>
+                </#list>
+              </#if>
+              <#if applMap.SELECTABLE_FEATURE?has_content>
+                <#assign features = applMap.SELECTABLE_FEATURE/>
+                <div>Available Options:</div>
+                <ul>
+                  <#list features as feature>
+                    <li>${feature.get("description", locale)}</li>
+                  </#list>
+                </ul>
+              </#if>
+            </td>
+          </#list>
+        </tr>
+      </#list>
+      <tr>
+        <td>&nbsp;</td>
+        <#list compareList as product>
+          <td>
+            <div class="productbuy">
+            <#-- check to see if introductionDate hasn't passed yet -->
+            <#if product.introductionDate?? && nowTimestamp.before(product.introductionDate)>
+              <div style="color: red;">${uiLabelMap.ProductNotYetAvailable}</div>
+            <#-- check to see if salesDiscontinuationDate has passed -->
+            <#elseif product.salesDiscontinuationDate?? && nowTimestamp.after(product.salesDiscontinuationDate)/>
+              <div style="color: red;">${uiLabelMap.ProductNoLongerAvailable}</div>
+            <#-- check to see if it is a rental item; will enter parameters on the detail screen-->
+            <#elseif "ASSET_USAGE" == product.productTypeId!/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderMakeBooking}...</a>
+            <#elseif "ASSET_USAGE_OUT_IN" == product.productTypeId!/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderRent}...</a>
+            <#-- check to see if it is an aggregated or configurable product; will enter parameters on the detail screen-->
+            <#elseif "AGGREGATED" == product.productTypeId! || "AGGREGATED_SERVICE" == product.productTypeId!/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderConfigure}...</a>
+            <#-- check to see if the product is a virtual product -->
+            <#elseif product.isVirtual?? && "Y" == product.isVirtual/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderChooseVariations}...</a>
+            <#-- check to see if the product requires an amount -->
+            <#elseif product.requireAmount?? && "Y" == product.requireAmount/>
+              <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderChooseAmount}...</a>
+            <#else>
+              <form method="post" action="<@ofbizUrl secure="${request.isSecure()?string}">additem</@ofbizUrl>" name="compare2FormAdd${product_index}">
+                <input type="hidden" name="add_product_id" value="${product.productId}"/>
+                <input type="text" size="5" name="quantity" value="1"/>
+                <input type="hidden" name="clearSearch" value="N"/>
+              </form>
+              <a href="javascript:doPostViaParent('compare2FormAdd${product_index}');" class="buttontext">${uiLabelMap.OrderAddToCart}</a>
+              <#if prodCatMem?? && prodCatMem.quantity?? && 0.00 < prodCatMem.quantity?double>
+                <a href="javascript:doPostViaParent('compareFormAddDefault${product_index}');" class="buttontext">${uiLabelMap.CommonAddDefault}(${prodCatMem.quantity?string.number}) ${uiLabelMap.OrderToCart}</a>
+              </#if>
+            </#if>
+            </div>
+          </td>
+        </#list>
+      </tr>
+    </table>
+  </div>
+</div>

Propchange: ofbiz/ofbiz-plugins/trunk/ecommerce/template/order/CompareProducts.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-plugins/trunk/ecommerce/template/order/CompareProducts.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-plugins/trunk/ecommerce/template/order/CompareProducts.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/ofbiz-plugins/trunk/ecommerce/webapp/ecommerce/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-plugins/trunk/ecommerce/webapp/ecommerce/WEB-INF/controller.xml?rev=1867662&r1=1867661&r2=1867662&view=diff
==============================================================================
--- ofbiz/ofbiz-plugins/trunk/ecommerce/webapp/ecommerce/WEB-INF/controller.xml (original)
+++ ofbiz/ofbiz-plugins/trunk/ecommerce/webapp/ecommerce/WEB-INF/controller.xml Sat Sep 28 10:14:24 2019
@@ -1982,7 +1982,7 @@ under the License.
 
     <!-- One Page Checkout -->
     <view-map name="OnePageCheckout" type="screen" page="component://ecommerce/widget/OrderScreens.xml#OnePageCheckout"/>
-    <view-map name="compareProducts" type="screen" page="component://order/widget/ordermgr/OrderEntryCatalogScreens.xml#compareProducts"/>
+    <view-map name="compareProducts" type="screen" page="component://ecommerce/widget/OrderScreens.xml#compareProducts"/>
     
     <!-- Product in the different UOM -->
     <view-map name="ProductUomDropDownOnly" type="screen" page="component://order/widget/ordermgr/OrderEntryCatalogScreens.xml#ProductUomDropDownOnly"/>

Modified: ofbiz/ofbiz-plugins/trunk/ecommerce/widget/OrderScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-plugins/trunk/ecommerce/widget/OrderScreens.xml?rev=1867662&r1=1867661&r2=1867662&view=diff
==============================================================================
--- ofbiz/ofbiz-plugins/trunk/ecommerce/widget/OrderScreens.xml (original)
+++ ofbiz/ofbiz-plugins/trunk/ecommerce/widget/OrderScreens.xml Sat Sep 28 10:14:24 2019
@@ -672,4 +672,26 @@ under the License.
             </widgets>
         </section>
     </screen>
+
+    <screen name="compareProducts">
+        <section>
+            <actions>
+                <set field="titleProperty" value="ProductCompareProducts"/>
+                <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/>
+                <set field="title" from-field="uiLabelMap.ProductCompareProducts"/>
+                <script location="component://order/groovyScripts/entry/catalog/CompareProducts.groovy"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonPopUpDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <platform-specific>
+                            <html>
+                                <html-template location="component://ecommerce/template/order/CompareProducts.ftl"/>
+                            </html>
+                        </platform-specific>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
 </screens>