Added: ofbiz/trunk/applications/order/template/entry/catalog/breadcrumbs.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/entry/catalog/breadcrumbs.ftl?rev=1736868&view=auto ============================================================================== --- ofbiz/trunk/applications/order/template/entry/catalog/breadcrumbs.ftl (added) +++ ofbiz/trunk/applications/order/template/entry/catalog/breadcrumbs.ftl Mon Mar 28 11:14:22 2016 @@ -0,0 +1,69 @@ +<#-- +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="breadcrumbs"> +<#assign isDefaultTheme = !layoutSettings.VT_FTR_TMPLT_LOC?contains("multiflex")> +<#if isDefaultTheme> + <a href="<@ofbizUrl>main</@ofbizUrl>" class="linktext">${uiLabelMap.CommonMain}</a> > +<#else> + <ul> + <li> + <a href="<@ofbizUrl>main</@ofbizUrl>" class="linktext">${uiLabelMap.CommonMain}</a> + </li> +</#if> + <#-- Show the category branch --> + <#assign crumbs = Static["org.ofbiz.product.category.CategoryWorker"].getTrail(request)/> + <#list crumbs as crumb> + <#if catContentWrappers?? && catContentWrappers[crumb]??> + <#if !isDefaultTheme> + <li> + <a href="<@ofbizCatalogUrl currentCategoryId=crumb previousCategoryId=previousCategoryId!""/>" class="<#if crumb_has_next>linktext<#else>buttontextdisabled</#if>"> + <#if catContentWrappers[crumb].get("CATEGORY_NAME", "html")??> + ${catContentWrappers[crumb].get("CATEGORY_NAME", "html")} + <#elseif catContentWrappers[crumb].get("DESCRIPTION", "html")??> + ${catContentWrappers[crumb].get("DESCRIPTION", "html")} + <#else> + ${crumb} + </#if> + </a> + </li> + <#else> + <a href="<@ofbizCatalogUrl currentCategoryId=crumb previousCategoryId=previousCategoryId!""/>" class="<#if crumb_has_next>linktext<#else>buttontextdisabled</#if>"> + <#if catContentWrappers[crumb].get("CATEGORY_NAME", "html")??> + ${catContentWrappers[crumb].get("CATEGORY_NAME", "html")} + <#elseif catContentWrappers[crumb].get("DESCRIPTION", "html")??> + ${catContentWrappers[crumb].get("DESCRIPTION", "html")} + <#else> + ${crumb} + </#if> + </a> + <#if crumb_has_next> ></#if> + </#if> + <#assign previousCategoryId = crumb /> + </#if> + </#list> + <#-- Show the product, if there is one --> + <#if productContentWrapper??> + <#if isDefaultTheme> + > ${productContentWrapper.get("PRODUCT_NAME", "html")!} + <#else> + <li>${productContentWrapper.get("PRODUCT_NAME", "html")!}</li> + </ul> + </#if> + </#if> +</div> Propchange: ofbiz/trunk/applications/order/template/entry/catalog/breadcrumbs.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/order/template/entry/catalog/breadcrumbs.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/order/template/entry/catalog/breadcrumbs.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/applications/order/template/entry/catalog/category.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/entry/catalog/category.ftl?rev=1736868&view=auto ============================================================================== --- ofbiz/trunk/applications/order/template/entry/catalog/category.ftl (added) +++ ofbiz/trunk/applications/order/template/entry/catalog/category.ftl Mon Mar 28 11:14:22 2016 @@ -0,0 +1,27 @@ +<#-- +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. +--> + +${pages.get("/entry/OrderEntryTabBar.ftl")} +<#if productCategory?has_content> + ${pages.get(detailTemplate)} +<#else> + <center><h2>${uiLabelMap.ProductCategoryNotFoundForCategoryID} ${requestParameters.category_id!}!</h2></center> +</#if> + + Propchange: ofbiz/trunk/applications/order/template/entry/catalog/category.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/order/template/entry/catalog/category.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/order/template/entry/catalog/category.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/applications/order/template/entry/catalog/categorydetail.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/entry/catalog/categorydetail.ftl?rev=1736868&view=auto ============================================================================== --- ofbiz/trunk/applications/order/template/entry/catalog/categorydetail.ftl (added) +++ ofbiz/trunk/applications/order/template/entry/catalog/categorydetail.ftl Mon Mar 28 11:14:22 2016 @@ -0,0 +1,172 @@ +<#-- +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. +--> +<script type="text/javascript"> + function callDocumentByPaginate(info) { + var str = info.split('~'); + var checkUrl = '<@ofbizUrl>categoryAjaxFired</@ofbizUrl>'; + if(checkUrl.search("http")) + var ajaxUrl = '<@ofbizUrl>categoryAjaxFired</@ofbizUrl>'; + else + var ajaxUrl = '<@ofbizUrl>categoryAjaxFiredSecure</@ofbizUrl>'; + + //jQuerry Ajax Request + jQuery.ajax({ + url: ajaxUrl, + type: 'POST', + data: {"category_id" : str[0], "VIEW_SIZE" : str[1], "VIEW_INDEX" : str[2]}, + error: function(msg) { + alert("An error occurred loading content! : " + msg); + }, + success: function(msg) { + jQuery('#div3').html(msg); + } + }); + } +</script> + +<#macro paginationControls> + <#assign viewIndexMax = Static["java.lang.Math"].ceil((listSize)?double / viewSize?double)> + <#if (viewIndexMax?int > 0)> + <div class="product-prevnext"> + <select name="pageSelect" onchange="callDocumentByPaginate(this[this.selectedIndex].value);"> + <option value="#">${uiLabelMap.CommonPage} ${viewIndex?int + 1} ${uiLabelMap.CommonOf} ${viewIndexMax}</option> + <#if (viewIndex?int > 1)> + <#list 1..viewIndexMax as curViewNum> + <option value="${productCategoryId}~${viewSize}~${curViewNum-1?int}">${uiLabelMap.CommonGotoPage} ${curViewNum}</option> + </#list> + </#if> + </select> + <#-- End Page Select Drop-Down --> + <#if (viewIndex?int > 0)> + <a href="javascript: void(0);" onclick="callDocumentByPaginate('${productCategoryId}~${viewSize}~${viewIndex?int - 1}');" class="buttontext">${uiLabelMap.CommonPrevious}</a> | + </#if> + <#if ((listSize?int - viewSize?int) > 0)> + <span>${lowIndex} - ${highIndex} ${uiLabelMap.CommonOf} ${listSize}</span> + </#if> + <#if highIndex?int < listSize?int> + | <a href="javascript: void(0);" onclick="callDocumentByPaginate('${productCategoryId}~${viewSize}~${viewIndex?int + 1}');" class="buttontext">${uiLabelMap.CommonNext}</a> + </#if> + </div> + </#if> +</#macro> + + +<#if productCategory??> + <#assign categoryName = categoryContentWrapper.get("CATEGORY_NAME", "html")!/> + <#assign categoryDescription = categoryContentWrapper.get("DESCRIPTION", "html")!/> + <#if categoryName?has_content> + <h1>${categoryName}</h1> + </#if> + <#if categoryDescription?has_content> + <h1>${categoryDescription}</h1> + </#if> + <#if hasQuantities??> + <form method="post" action="<@ofbizUrl>addCategoryDefaults<#if requestAttributes._CURRENT_VIEW_??>/${requestAttributes._CURRENT_VIEW_}</#if></@ofbizUrl>" name="thecategoryform" style='margin: 0;'> + <input type='hidden' name='add_category_id' value='${productCategory.productCategoryId}'/> + <#if requestParameters.product_id??><input type='hidden' name='product_id' value='${requestParameters.product_id}'/></#if> + <#if requestParameters.category_id??><input type='hidden' name='category_id' value='${requestParameters.category_id}'/></#if> + <#if requestParameters.VIEW_INDEX??><input type='hidden' name='VIEW_INDEX' value='${requestParameters.VIEW_INDEX}'/></#if> + <#if requestParameters.SEARCH_STRING??><input type='hidden' name='SEARCH_STRING' value='${requestParameters.SEARCH_STRING}'/></#if> + <#if requestParameters.SEARCH_CATEGORY_ID??><input type='hidden' name='SEARCH_CATEGORY_ID' value='${requestParameters.SEARCH_CATEGORY_ID}'/></#if> + <a href="javascript:document.thecategoryform.submit()" class="buttontext"><span style="white-space: nowrap;">${uiLabelMap.ProductAddProductsUsingDefaultQuantities}</span></a> + </form> + </#if> + <#if searchInCategory?default("Y") == "Y"> + <a href="<@ofbizUrl>advancedsearch?SEARCH_CATEGORY_ID=${productCategory.productCategoryId}</@ofbizUrl>" class="buttontext">${uiLabelMap.ProductSearchInCategory}</a> + </#if> + <#assign longDescription = categoryContentWrapper.get("LONG_DESCRIPTION", "html")!/> + <#assign categoryImageUrl = categoryContentWrapper.get("CATEGORY_IMAGE_URL", "url")!/> + <#if categoryImageUrl?string?has_content || longDescription?has_content> + <div> + <#if categoryImageUrl?string?has_content> + <#assign height=100/> + <img src='<@ofbizContentUrl>${categoryImageUrl}</@ofbizContentUrl>' vspace='5' hspace='5' align='left' class='cssImgLarge' /> + </#if> + <#if longDescription?has_content> + ${longDescription} + </#if> + </div> + </#if> +</#if> + +<#if productCategoryLinkScreen?has_content && productCategoryLinks?has_content> + <div class="productcategorylink-container"> + <#list productCategoryLinks as productCategoryLink> + ${setRequestAttribute("productCategoryLink",productCategoryLink)} + ${screens.render(productCategoryLinkScreen)} + </#list> + </div> +</#if> + +<#if productCategoryMembers?has_content> + <#-- Pagination --> + <#if paginateEcommerceStyle??> + <@paginationControls/> + <#else> + <#include "component://common/webcommon/includes/htmlTemplate.ftl"/> + <#assign commonUrl = "category?category_id="+ (parameters.category_id!) + "&"/> + <#--assign viewIndex = viewIndex - 1/--> + <#assign viewIndexFirst = 0/> + <#assign viewIndexPrevious = viewIndex - 1/> + <#assign viewIndexNext = viewIndex + 1/> + <#assign viewIndexLast = Static["org.ofbiz.base.util.UtilMisc"].getViewLastIndex(listSize, viewSize) /> + <#assign messageMap = Static["org.ofbiz.base.util.UtilMisc"].toMap("lowCount", lowIndex, "highCount", highIndex, "total", listSize)/> + <#assign commonDisplaying = Static["org.ofbiz.base.util.UtilProperties"].getMessage("CommonUiLabels", "CommonDisplaying", messageMap, locale)/> + <@nextPrev commonUrl=commonUrl ajaxEnabled=false javaScriptEnabled=false paginateStyle="nav-pager" paginateFirstStyle="nav-first" viewIndex=viewIndex highIndex=highIndex listSize=listSize viewSize=viewSize ajaxFirstUrl="" firstUrl="" paginateFirstLabel="" paginatePreviousStyle="nav-previous" ajaxPreviousUrl="" previousUrl="" paginatePreviousLabel="" pageLabel="" ajaxSelectUrl="" selectUrl="" ajaxSelectSizeUrl="" selectSizeUrl="" commonDisplaying=commonDisplaying paginateNextStyle="nav-next" ajaxNextUrl="" nextUrl="" paginateNextLabel="" paginateLastStyle="nav-last" ajaxLastUrl="" lastUrl="" paginateLastLabel="" paginateViewSizeLabel="" /> + </#if> + <#assign numCol = numCol?default(1)> + <#assign numCol = numCol?number> + <#assign tabCol = 1> + <div + <#if categoryImageUrl?string?has_content> + style="position: relative; margin-top: ${height}px;" + </#if> + class="productsummary-container<#if (numCol?int > 1)> matrix</#if>"> + <#if (numCol?int > 1)> + <table> + </#if> + <#list productCategoryMembers as productCategoryMember> + <#if (numCol?int == 1)> + ${setRequestAttribute("optProductId", productCategoryMember.productId)} + ${setRequestAttribute("productCategoryMember", productCategoryMember)} + ${setRequestAttribute("listIndex", productCategoryMember_index)} + ${screens.render(productsummaryScreen)} + <#else> + <#if (tabCol?int = 1)><tr></#if> + <td> + ${setRequestAttribute("optProductId", productCategoryMember.productId)} + ${setRequestAttribute("productCategoryMember", productCategoryMember)} + ${setRequestAttribute("listIndex", productCategoryMember_index)} + ${screens.render(productsummaryScreen)} + </td> + <#if (tabCol?int = numCol)></tr></#if> + <#assign tabCol = tabCol+1><#if (tabCol?int > numCol)><#assign tabCol = 1></#if> + </#if> + </#list> + <#if (numCol?int > 1)> + </table> + </#if> + </div> + <#if paginateEcommerceStyle??> + <@paginationControls/> + </#if> +<#else> + <hr /> + <div>${uiLabelMap.ProductNoProductsInThisCategory}</div> +</#if> Propchange: ofbiz/trunk/applications/order/template/entry/catalog/categorydetail.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/order/template/entry/catalog/categorydetail.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/order/template/entry/catalog/categorydetail.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/applications/order/template/entry/catalog/choosecatalog.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/entry/catalog/choosecatalog.ftl?rev=1736868&view=auto ============================================================================== --- ofbiz/trunk/applications/order/template/entry/catalog/choosecatalog.ftl (added) +++ ofbiz/trunk/applications/order/template/entry/catalog/choosecatalog.ftl Mon Mar 28 11:14:22 2016 @@ -0,0 +1,40 @@ +<#-- +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. +--> + +<#-- Only show if there is more than 1 (one) catalog, no sense selecting when there is only one option... --> +<#if (catalogCol?size > 1)> +<div class="screenlet"> + <div class="screenlet-title-bar"> + <div class="h3">${uiLabelMap.ProductChooseCatalog}</div> + </div> + <div class="screenlet-body" style="text-align: center;"> + <form name="choosecatalogform" method="post" action="<@ofbizUrl>choosecatalog</@ofbizUrl>" style='margin: 0;'> + <select name='CURRENT_CATALOG_ID'> + <option value='${currentCatalogId}'>${currentCatalogName}</option> + <option value='${currentCatalogId}'></option> + <#list catalogCol as catalogId> + <#assign thisCatalogName = Static["org.ofbiz.product.catalog.CatalogWorker"].getCatalogName(request, catalogId)> + <option value='${catalogId}'>${thisCatalogName}</option> + </#list> + </select> + <div><a href="javascript:document.choosecatalogform.submit()" class="buttontext">${uiLabelMap.CommonChange}</a></div> + </form> + </div> +</div> +</#if> Propchange: ofbiz/trunk/applications/order/template/entry/catalog/choosecatalog.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/order/template/entry/catalog/choosecatalog.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/order/template/entry/catalog/choosecatalog.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/applications/order/template/entry/catalog/compareproducts.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/entry/catalog/compareproducts.ftl?rev=1736868&view=auto ============================================================================== --- ofbiz/trunk/applications/order/template/entry/catalog/compareproducts.ftl (added) +++ ofbiz/trunk/applications/order/template/entry/catalog/compareproducts.ftl Mon Mar 28 11:14:22 2016 @@ -0,0 +1,189 @@ +<#-- +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. +--> +<table> +<#-- Header row, contains product small image, product name, price --> + <tr> + <td> </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 && product.requireAmount?default("N") == "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 product.productTypeId! == "ASSET_USAGE"/> + <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderMakeBooking}...</a> + <#elseif product.productTypeId! == "ASSET_USAGE_OUT_IN"/> + <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 product.productTypeId! == "AGGREGATED" || product.productTypeId! == "AGGREGATED_SERVICE"/> + <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderConfigure}...</a> + <#-- check to see if the product is a virtual product --> + <#elseif product.isVirtual?? && product.isVirtual == "Y"/> + <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderChooseVariations}...</a> + <#-- check to see if the product requires an amount --> + <#elseif product.requireAmount?? && product.requireAmount == "Y"/> + <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(" ")}</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(" ")}</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(" ")}</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> </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 product.productTypeId! == "ASSET_USAGE"/> + <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderMakeBooking}...</a> + <#elseif product.productTypeId! == "ASSET_USAGE_OUT_IN"/> + <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 product.productTypeId! == "AGGREGATED" || product.productTypeId! == "AGGREGATED_SERVICE"/> + <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderConfigure}...</a> + <#-- check to see if the product is a virtual product --> + <#elseif product.isVirtual?? && product.isVirtual == "Y"/> + <a href="javascript:doGetViaParent('${productUrl}');" class="buttontext">${uiLabelMap.OrderChooseVariations}...</a> + <#-- check to see if the product requires an amount --> + <#elseif product.requireAmount?? && product.requireAmount == "Y"/> + <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> Propchange: ofbiz/trunk/applications/order/template/entry/catalog/compareproducts.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/order/template/entry/catalog/compareproducts.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/order/template/entry/catalog/compareproducts.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/applications/order/template/entry/catalog/compareproductslist.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/entry/catalog/compareproductslist.ftl?rev=1736868&view=auto ============================================================================== --- ofbiz/trunk/applications/order/template/entry/catalog/compareproductslist.ftl (added) +++ ofbiz/trunk/applications/order/template/entry/catalog/compareproductslist.ftl Mon Mar 28 11:14:22 2016 @@ -0,0 +1,56 @@ +<#-- +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 id="productcomparelist" class="screenlet"> + <div class="screenlet-title-bar"> + <ul> + <li class="h3">${uiLabelMap.ProductCompareProducts}</li> + </ul> + <br class="clear"/> + </div> + <div class="screenlet-body"> + <#assign productCompareList = Static["org.ofbiz.product.product.ProductEvents"].getProductCompareList(request)/> + <#if productCompareList?has_content> + <table> + <#list productCompareList as product> + <tr> + <td> + ${Static["org.ofbiz.product.product.ProductContentWrapper"].getProductContentAsText(product, "PRODUCT_NAME", request, "html")} + </td> + <td> + <form method="post" action="<@ofbizUrl>removeFromCompare</@ofbizUrl>" name="removeFromCompare${product_index}form"> + <input type="hidden" name="productId" value="${product.productId}"/> + </form> + <a href="javascript:document.removeFromCompare${product_index}form.submit()" class="buttontext">${uiLabelMap.CommonRemove}</a> + </td> + </tr> + </#list> + </table> + <div> + <a href="<@ofbizUrl>clearCompareList</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonClearAll}</a> + </div> + <div> + <a href="javascript:popUp('<@ofbizUrl secure="${request.isSecure()?string}">compareProducts</@ofbizUrl>', 'compareProducts', '650', '750')" class="buttontext">${uiLabelMap.ProductCompareProducts}</a> + </div> +<#else/> + <div> + ${uiLabelMap.ProductNoProductsToCompare} + </div> +</#if> + </div> +</div> \ No newline at end of file Propchange: ofbiz/trunk/applications/order/template/entry/catalog/compareproductslist.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/order/template/entry/catalog/compareproductslist.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/order/template/entry/catalog/compareproductslist.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/applications/order/template/entry/catalog/configproductdetail.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/entry/catalog/configproductdetail.ftl?rev=1736868&view=auto ============================================================================== --- ofbiz/trunk/applications/order/template/entry/catalog/configproductdetail.ftl (added) +++ ofbiz/trunk/applications/order/template/entry/catalog/configproductdetail.ftl Mon Mar 28 11:14:22 2016 @@ -0,0 +1,686 @@ +<#-- +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. +--> +<#-- variable setup --> +<#assign productContentWrapper = productContentWrapper!> +<#assign price = priceMap!> +<#-- end variable setup --> + +<#-- virtual product javascript --> +${virtualJavaScript!} +<script language="JavaScript" type="text/javascript"> +<!-- + var detailImageUrl = null; + function setAddProductId(name) { + document.addform.add_product_id.value = name; + if (document.addform.quantity == null) return; + if (name == 'NULL' || isVirtual(name) == true) { + document.addform.quantity.disabled = true; + } else { + document.addform.quantity.disabled = false; + } + } + function isVirtual(product) { + var isVirtual = false; + <#if virtualJavaScript??> + for (i = 0; i < VIR.length; i++) { + if (VIR[i] == product) { + isVirtual = true; + } + } + </#if> + return isVirtual; + } + + function addItem() { + document.configform.action = document.addform.action; + document.configform.quantity.value = document.addform.quantity.value; + document.configform.submit(); + } + function verifyConfig() { + document.configform.submit(); + } + + function popupDetail() { + var defaultDetailImage = "${firstDetailImage?default(mainDetailImageUrl?default("_NONE_"))}"; + if (defaultDetailImage == null || defaultDetailImage == "null" || defaultDetailImage == "") { + defaultDetailImage = "_NONE_"; + } + + if (detailImageUrl == null || detailImageUrl == "null") { + detailImageUrl = defaultDetailImage; + } + + if (detailImageUrl == "_NONE_") { + hack = document.createElement('span'); + hack.innerHTML="${uiLabelMap.CommonNoDetailImageAvailableToDisplay}"; + showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonNoDetailImageAvailableToDisplay}"); + return; + } + detailImageUrl = detailImageUrl.replace(/\&\#47;/g, "/"); + popUp("<@ofbizUrl>detailImage?detail=" + detailImageUrl + "</@ofbizUrl>", 'detailImage', '400', '550'); + } + + function toggleAmt(toggle) { + if (toggle == 'Y') { + changeObjectVisibility("add_amount", "visible"); + } + + if (toggle == 'N') { + changeObjectVisibility("add_amount", "hidden"); + } + } + + function findIndex(name) { + for (i = 0; i < OPT.length; i++) { + if (OPT[i] == name) { + return i; + } + } + return -1; + } + + function getList(name, index, src) { + currentFeatureIndex = findIndex(name); + + if (currentFeatureIndex == 0) { + // set the images for the first selection + if (IMG[index] != null) { + if (document.images['mainImage'] != null) { + document.images['mainImage'].src = IMG[index]; + detailImageUrl = DET[index]; + } + } + + // set the drop down index for swatch selection + document.forms["addform"].elements[name].selectedIndex = (index*1)+1; + } + + if (currentFeatureIndex < (OPT.length-1)) { + // eval the next list if there are more + var selectedValue = document.forms["addform"].elements[name].options[(index*1)+1].value; + eval("list" + OPT[(currentFeatureIndex+1)] + selectedValue + "()"); + + // set the product ID to NULL to trigger the alerts + setAddProductId('NULL'); + } else { + // this is the final selection -- locate the selected index of the last selection + var indexSelected = document.forms["addform"].elements[name].selectedIndex; + + // using the selected index locate the sku + var sku = document.forms["addform"].elements[name].options[indexSelected].value; + + // set the product ID + setAddProductId(sku); + + // check for amount box + toggleAmt(checkAmtReq(sku)); + } + } + //--> + </script> + +<script language="JavaScript" type="text/javascript"> +<!-- + +jQuery(document).ready( function() { + jQuery('#configFormId').change(getConfigDetails); +}); + +function getConfigDetails() { + var element = jQuery(this); + if (element.attr("id").is("[id^='comments_']")) { + // don't update the price for comment change + return; + } + + jQuery.ajax({ + url: '/ordermgr/control/getConfigDetailsEvent', + data: jQuery('configFormId').serialize(), + type: "POST", + success: function(data) { + var totalPrice = data.totalPrice; + var configId = data.configId; + document.getElementById('totalPrice').innerHTML = totalPrice; + document.addToShoppingList.configId.value = configId; + } + }, + error: function(data) { + + } + }); +} + +--> +</script> + +<div id="productdetail"> + +<table border="0" cellpadding="2" cellspacing="0" width="100%"> + + <#-- Category next/previous --> + <#if category??> + <tr> + <td colspan="2" align="right"> + <#if previousProductId??> + <a href='<@ofbizUrl>product/~category_id=${categoryId!}/~product_id=${previousProductId!}</@ofbizUrl>' class="buttontext">${uiLabelMap.CommonPrevious}</a> | + </#if> + <a href="<@ofbizUrl>category/~category_id=${categoryId!}</@ofbizUrl>" class="buttontext">${(category.categoryName)?default(category.description)!}</a> + <#if nextProductId??> + | <a href='<@ofbizUrl>product/~category_id=${categoryId!}/~product_id=${nextProductId!}</@ofbizUrl>' class="buttontext">${uiLabelMap.CommonNext}</a> + </#if> + </td> + </tr> + </#if> + + <tr><td colspan="2"><hr class='sepbar'/></td></tr> + + <#-- Product image/name/price --> + <tr> + <td valign="top" width="0"> + <#assign productLargeImageUrl = productContentWrapper.get("LARGE_IMAGE_URL", "url")!> + <#-- remove the next two lines to always display the virtual image first (virtual images must exist) --> + <#if firstLargeImage?has_content> + <#assign productLargeImageUrl = firstLargeImage> + </#if> + <#if productLargeImageUrl?string?has_content> + <a href="javascript:popupDetail();"><img src='<@ofbizContentUrl>${contentPathPrefix!}${productLargeImageUrl!}</@ofbizContentUrl>' name='mainImage' vspace='5' hspace='5' class='cssImgLarge' align='left' alt="" /></a> + </#if> + </td> + <td align="right" valign="top"> + <h2>${productContentWrapper.get("PRODUCT_NAME", "html")!}</h2> + <div>${productContentWrapper.get("DESCRIPTION", "html")!}</div> + <div><b>${product.productId!}</b></div> + <#-- example of showing a certain type of feature with the product --> + <#if sizeProductFeatureAndAppls?has_content> + <div> + <#if (sizeProductFeatureAndAppls?size == 1)> + <#-- TODO : i18n --> + Size: + <#else> + Sizes Available: + </#if> + <#list sizeProductFeatureAndAppls as sizeProductFeatureAndAppl> + ${sizeProductFeatureAndAppl.description?default(sizeProductFeatureAndAppl.abbrev?default(sizeProductFeatureAndAppl.productFeatureId))}<#if sizeProductFeatureAndAppl_has_next>,</#if> + </#list> + </div> + </#if> + + <#-- for prices: + - if totalPrice is present, use it (totalPrice is the price calculated from the parts) + - if price < competitivePrice, show competitive or "Compare At" price + - if price < listPrice, show list price + - if price < defaultPrice and defaultPrice < listPrice, show default + - if isSale show price with salePrice style and print "On Sale!" + --> + <#if totalPrice??> + <div>${uiLabelMap.ProductAggregatedPrice}: <span id='totalPrice' class='basePrice'><@ofbizCurrency amount=totalPrice isoCode=totalPrice.currencyUsed/></span></div> + <#else> + <#if price.competitivePrice?? && price.price?? && price.price?double < price.competitivePrice?double> + <div>${uiLabelMap.ProductCompareAtPrice}: <span class='basePrice'><@ofbizCurrency amount=price.competitivePrice isoCode=price.currencyUsed/></span></div> + </#if> + <#if price.listPrice?? && price.price?? && price.price?double < price.listPrice?double> + <div>${uiLabelMap.ProductListPrice}: <span class='basePrice'><@ofbizCurrency amount=price.listPrice isoCode=price.currencyUsed/></span></div> + </#if> + <#if price.listPrice?? && price.defaultPrice?? && price.price?? && price.price?double < price.defaultPrice?double && price.defaultPrice?double < price.listPrice?double> + <div>${uiLabelMap.ProductRegularPrice}: <span class='basePrice'><@ofbizCurrency amount=price.defaultPrice isoCode=price.currencyUsed/></span></div> + </#if> + <div> + <b> + <#if price.isSale?? && price.isSale> + <span class='salePrice'>${uiLabelMap.OrderOnSale}!</span> + <#assign priceStyle = "salePrice"> + <#else> + <#assign priceStyle = "regularPrice"> + </#if> + ${uiLabelMap.OrderYourPrice}: <#if "Y" = product.isVirtual!> from </#if><span class='${priceStyle}'><@ofbizCurrency amount=price.price isoCode=price.currencyUsed/></span> + </b> + </div> + <#if price.listPrice?? && price.price?? && price.price?double < price.listPrice?double> + <#assign priceSaved = price.listPrice?double - price.price?double> + <#assign percentSaved = (priceSaved?double / price.listPrice?double) * 100> + <div>${uiLabelMap.OrderSave}: <span class="basePrice"><@ofbizCurrency amount=priceSaved isoCode=price.currencyUsed/> (${percentSaved?int}%)</span></div> + </#if> + </#if> + + <#-- Included quantities/pieces --> + <#if product.quantityIncluded?? && product.quantityIncluded?double != 0> + <div>${uiLabelMap.OrderIncludes}: + ${product.quantityIncluded!} + ${product.quantityUomId!} + </div> + </#if> + <#if product.piecesIncluded?? && product.piecesIncluded?long != 0> + <div>${uiLabelMap.OrderPieces}: + ${product.piecesIncluded} + </div> + </#if> + <#if daysToShip??> + <div><b>${uiLabelMap.ProductUsuallyShipsIn} <font color='red'>${daysToShip}</font> ${uiLabelMap.CommonDays}!<b></div> + </#if> + + <#if disFeatureList?? && 0 < disFeatureList.size()> + <p> </p> + <#list disFeatureList as currentFeature> + <div> + ${currentFeature.productFeatureTypeId}: ${currentFeature.description} + </div> + </#list> + <div> </div> + </#if> + + <form method="post" action="<@ofbizUrl>additem<#if requestAttributes._CURRENT_VIEW_??>/${requestAttributes._CURRENT_VIEW_}</#if></@ofbizUrl>" name="addform" style='margin: 0;'> + <#assign inStock = true> + <#-- Variant Selection --> + <#if product.isVirtual?? && product.isVirtual?upper_case == "Y"> + <#if variantTree?? && 0 < variantTree.size()> + <#list featureSet as currentType> + <div> + <select name="FT${currentType}" onchange="javascript:getList(this.name, (this.selectedIndex-1), 1);"> + <option>${featureTypes.get(currentType)}</option> + </select> + </div> + </#list> + <input type='hidden' name="product_id" value='${product.productId}' /> + <input type='hidden' name="add_product_id" value='NULL' /> + <#else> + <input type='hidden' name="product_id" value='${product.productId}' /> + <input type='hidden' name="add_product_id" value='NULL' /> + <div class='tabletext'><b>${uiLabelMap.ProductItemOutOfStock}.</b></div> + <#assign inStock = false> + </#if> + <#else> + <input type='hidden' name="product_id" value='${product.productId}' /> + <input type='hidden' name="add_product_id" value='${product.productId}' /> + <#if productNotAvailable??> + <#assign isStoreInventoryRequired = Static["org.ofbiz.product.store.ProductStoreWorker"].isStoreInventoryRequired(request, product)> + <#if isStoreInventoryRequired> + <div class='tabletext'><b>${uiLabelMap.ProductItemOutOfStock}.</b></div> + <#assign inStock = false> + <#else> + <div class='tabletext'><b>${product.inventoryMessage!}</b></div> + </#if> + </#if> + </#if> + + </td></tr><tr><td colspan="2" align="right"> + + <#-- check to see if introductionDate hasn't passed yet --> + <#if product.introductionDate?? && nowTimestamp.before(product.introductionDate)> + <p> </p> + <div class='tabletext' style='color: red;'>${uiLabelMap.ProductProductNotYetMadeAvailable}.</div> + <#-- check to see if salesDiscontinuationDate has passed --> + <#elseif product.salesDiscontinuationDate?? && nowTimestamp.after(product.salesDiscontinuationDate)> + <div class='tabletext' style='color: red;'>${uiLabelMap.ProductProductNoLongerAvailable}.</div> + <#-- check to see if the product requires inventory check and has inventory --> + <#else> + <#if inStock> + <#if product.requireAmount?default("N") == "Y"> + <#assign hiddenStyle = "visible"> + <#else> + <#assign hiddenStyle = "hidden"> + </#if> + <div id="add_amount" class="${hiddenStyle}"> + <span style="white-space: nowrap;"><b>Amount:</b></span> + <input type="text" size="5" name="add_amount" value="" /> + </div> + <#if !configwrapper.isCompleted()> + <div>[${uiLabelMap.EcommerceProductNotConfigured}] + <input type="text" size="5" name="quantity" value="0" disabled="disabled" /></div> + <#else> + <a href="javascript:addItem()" class="buttontext"><span style="white-space: nowrap;">${uiLabelMap.OrderAddToCart}</span></a> + <input type="text" size="5" name="quantity" value="1" /> + </#if> + </#if> + <#if requestParameters.category_id??> + <input type='hidden' name='category_id' value='${requestParameters.category_id}' /> + </#if> + </#if> + </form> + <div> + <#if sessionAttributes.userLogin?has_content && sessionAttributes.userLogin.userLoginId != "anonymous"> + <hr /> + <form name="addToShoppingList" method="post" action="<@ofbizUrl>addItemToShoppingList<#if requestAttributes._CURRENT_VIEW_??>/${requestAttributes._CURRENT_VIEW_}</#if></@ofbizUrl>"> + <input type="hidden" name="productId" value="${product.productId}" /> + <input type="hidden" name="product_id" value="${product.productId}" /> + <input type="hidden" name="configId" value="${configId!}" /> + <select name="shoppingListId"> + <#if shoppingLists?has_content> + <#list shoppingLists as shoppingList> + <option value="${shoppingList.shoppingListId}">${shoppingList.listName}</option> + </#list> + </#if> + <option value="">---</option> + <option value="">${uiLabelMap.OrderNewShoppingList}</option> + </select> + + <input type="text" size="5" name="quantity" value="1" /> + <a href="javascript:document.addToShoppingList.submit();" class="buttontext">[${uiLabelMap.OrderAddToShoppingList}]</a> + </form> + <#else> <br /> + ${uiLabelMap.OrderYouMust} <a href="<@ofbizUrl>checkLogin/showcart</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonBeLogged}</a> + ${uiLabelMap.OrderToAddSelectedItemsToShoppingList}. + </#if> + </div> + <#-- Prefill first select box (virtual products only) --> + <#if variantTree?? && 0 < variantTree.size()> + <script language="JavaScript" type="text/javascript">eval("list" + "${featureOrderFirst}" + "()");</script> + </#if> + + <#-- Swatches (virtual products only) --> + <#if variantSample?? && 0 < variantSample.size()> + <#assign imageKeys = variantSample.keySet()> + <#assign imageMap = variantSample> + <p> </p> + <table cellspacing="0" cellpadding="0"> + <tr> + <#assign maxIndex = 7> + <#assign indexer = 0> + <#list imageKeys as key> + <#assign swatchProduct = imageMap.get(key)> + <#if swatchProduct?has_content && indexer < maxIndex> + <#assign imageUrl = Static["org.ofbiz.product.product.ProductContentWrapper"].getProductContentAsText(swatchProduct, "SMALL_IMAGE_URL", request, "url")!> + <#if !imageUrl?string?has_content> + <#assign imageUrl = productContentWrapper.get("SMALL_IMAGE_URL", "url")!> + </#if> + <#if !imageUrl?string?has_content> + <#assign imageUrl = "/images/defaultImage.jpg"> + </#if> + <td align="center" valign="bottom"> + <a href="javascript:getList('FT${featureOrderFirst}','${indexer}',1);"><img src="<@ofbizContentUrl>${contentPathPrefix!}${imageUrl}</@ofbizContentUrl>" class='cssImgStandard' alt="" /></a> + <br /> + <a href="javascript:getList('FT${featureOrderFirst}','${indexer}',1);" class="buttontext">${key}</a> + </td> + </#if> + <#assign indexer = indexer + 1> + </#list> + <#if (indexer > maxIndex)> + <div><b>${uiLabelMap.OrderMoreOptionsAvailable}.</b></div> + </#if> + </tr> + </table> + </#if> + </td> + </tr> + + <tr><td colspan="2"><hr class='sepbar'/></td></tr> + + <#-- Long description of product --> + <tr> + <td colspan="2"> + <div>${productContentWrapper.get("LONG_DESCRIPTION", "html")!}</div> + </td> + </tr> + + <tr><td colspan="2"><hr class='sepbar'/></td></tr> + + <#-- Any attributes/etc may go here --> + <#-- Product Configurator --> + <tr> + <td colspan="2"> + <form name="configform" id="configFormId" method="post" action="<@ofbizUrl>product<#if requestAttributes._CURRENT_VIEW_??>/${requestAttributes._CURRENT_VIEW_}</#if></@ofbizUrl>"> + <input type='hidden' name='add_product_id' value='${product.productId}' /> + <input type='hidden' name='add_category_id' value='' /> + <input type='hidden' name='quantity' value='1' /> + + <input type='hidden' name='product_id' value='${product.productId}' /> + <table > + <tr> + <td> + <div> + <a href="javascript:verifyConfig();" class="buttontext">${uiLabelMap.OrderVerifyConfiguration}</a> + </div> + </td> + </tr> + <tr><td><hr /></td></tr> + <#assign counter = 0> + <#assign questions = configwrapper.questions> + <#list questions as question> + <tr> + <td> + <div>${question.question}</div> + <#if question.isFirst()> + <a name='#${question.getConfigItem().getString("configItemId")}'></a> + <div>${question.description!}</div> + <#assign instructions = question.content.get("INSTRUCTIONS", "html")!> + <#if instructions?has_content> + <a href="javascript:showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${instructions}");" class="buttontext">Instructions</a> + </#if> + <#assign image = question.content.get("IMAGE_URL", "url")!> + <#if image?has_content> + <img src='<@ofbizContentUrl>${contentPathPrefix!}${image!}</@ofbizContentUrl>' vspace='5' hspace='5' class='cssImgSmall' align='left' alt="" /> + </#if> + <#else> + <div><a href='#${question.getConfigItem().getString("configItemId")}' class="buttontext">Details</a></div> + </#if> + </td> + </tr> + <tr> + <td> + <#if question.isStandard()> + <#-- Standard item: all the options are always included --> + <#assign options = question.options> + <#assign optionCounter = 0> + <#list options as option> + <div>${option.description} <#if !option.isAvailable()> (*)</#if></div> + <div>${uiLabelMap.CommonComments}: <input type='text' name='comments_${counter}_${optionCounter}' id='comments_${counter}_${optionCounter}' value='${option.comments!}' /></div> + <#assign optionCounter = optionCounter + 1> + </#list> + <#else> + <#if question.isSingleChoice()> + <#-- Single choice question --> + <#assign options = question.options> + <#assign selectedOption = question.getSelected()!> + <#assign selectedPrice = 0.0> + <#if selectedOption?has_content> + <#assign selectedPrice = selectedOption.getPrice()> + </#if> + <#-- The single choice input can be implemented with radio buttons or a select field --> + <#if renderSingleChoiceWithRadioButtons?? && "Y" == renderSingleChoiceWithRadioButtons> + <#-- This is the radio button implementation --> + <#if !question.isMandatory()> + <div><input type="radio" name='${counter}' value='<#if !question.isSelected()>checked="checked"</#if>' /> No option</div> + </#if> + <#assign optionComment = ""> + <#assign optionCounter = 0> + <#list options as option> + <#assign componentCounter = 0> + <#if showOffsetPrice?? && "Y" == showOffsetPrice> + <#assign shownPrice = option.price - selectedPrice> + <#else> + <#assign shownPrice = option.price> + </#if> + <#if option.isSelected()> + <#assign optionComment = option.getComments()!> + </#if> + <#-- Render virtual compoennts --> + <#if option.hasVirtualComponent()> + <div > + <input type='radio' name='${counter}' id="${counter}_${optionCounter}" value='${optionCounter}' onclick="javascript:checkOptionVariants('${counter}_${optionCounter}');" /> + ${option.description} <#if !option.isAvailable()> (*)</#if> + <#assign components = option.getComponents()> + <#list components as component> + <#if (option.isVirtualComponent(component))> + ${setRequestAttribute("inlineProductId", component.productId)} + ${setRequestAttribute("inlineCounter", counter+ "_" +optionCounter + "_"+componentCounter)} + ${setRequestAttribute("addJavaScript", componentCounter)} + ${screens.render(inlineProductDetailScreen)} + <#assign componentCounter = componentCounter + 1> + </#if> + </#list> + </div> + <#else> + <div> + <input type="radio" name='${counter}' value='${optionCounter}' <#if option.isSelected() || (!question.isSelected() && optionCounter == 0 && question.isMandatory())>checked="checked"</#if> /> + ${option.description} + <#if (shownPrice > 0)>+<@ofbizCurrency amount=shownPrice isoCode=price.currencyUsed/> </#if> + <#if (shownPrice < 0)>-<@ofbizCurrency amount=(-1*shownPrice) isoCode=price.currencyUsed/> </#if> + <#if !option.isAvailable()>(*)</#if> + </div> + </#if> + <#assign optionCounter = optionCounter + 1> + </#list> + <div>${uiLabelMap.CommonComments}: <input type="text" name='comments_${counter}_0' id='comments_${counter}_0' value='${optionComment!}' /></div> + <#else> + <#-- And this is the select box implementation --> + <select name='${counter}'> + <#if !question.isMandatory()> + <option value=''>---</option> + </#if> + <#assign options = question.options> + <#assign optionCounter = 0> + <#assign optionComment = ""> + <#list options as option> + <#if showOffsetPrice?? && "Y" == showOffsetPrice> + <#assign shownPrice = option.price - selectedPrice> + <#else> + <#assign shownPrice = option.price> + </#if> + <#if option.isSelected()> + <#assign optionComment = option.getComments()> + <#assign optionCounter = optionCounter + 1> + </#if> + <option value='${optionCounter}' <#if option.isSelected()>selected="selected"</#if>> + ${option.description} + <#if (shownPrice > 0)>+<@ofbizCurrency amount=shownPrice isoCode=price.currencyUsed/> </#if> + <#if (shownPrice < 0)>-<@ofbizCurrency amount=(-1*shownPrice) isoCode=price.currencyUsed/> </#if> + <#if !option.isAvailable()> (*)</#if> + </option> + <#assign optionCounter = optionCounter + 1> + </#list> + </select> + <div>${uiLabelMap.CommonComments}: <input type="text" name='comments_${counter}_0' id='comments_${counter}_0' value='${optionComment!}' /></div> + </#if> + <#else> + <#-- Multi choice question --> + <#assign options = question.options> + <#assign optionCounter = 0> + <#list options as option> + <#assign componentCounter = 0> + <#-- Render virtual compoennts --> + <#if option.hasVirtualComponent()> + <div > + <input type='CHECKBOX' name='${counter}' id="${counter}_${optionCounter}" value='${optionCounter}' onclick="javascript:checkOptionVariants('${counter}_${optionCounter}');" /> + ${option.description} <#if !option.isAvailable()> (*)</#if> + <#assign components = option.getComponents()> + <#list components as component> + <#if (option.isVirtualComponent(component))> + ${setRequestAttribute("inlineProductId", component.productId)} + ${setRequestAttribute("inlineCounter", counter+ "_" +optionCounter + "_"+componentCounter)} + ${setRequestAttribute("addJavaScript", componentCounter)} + ${screens.render(inlineProductDetailScreen)} + <#assign componentCounter = componentCounter + 1> + </#if> + </#list> + </div> + <#else> + <div> + <input type='CHECKBOX' name='${counter}' value='${optionCounter}' <#if option.isSelected()>checked="checked"</#if> /> + ${option.description} +<@ofbizCurrency amount=option.price isoCode=price.currencyUsed/><#if !option.isAvailable()> (*)</#if> + </div> + </#if> + <div>${uiLabelMap.CommonComments}: <input type="text" name='comments_${counter}_${optionCounter}' id='comments_${counter}_${optionCounter}' value='${option.comments!}' /></div> + <#assign optionCounter = optionCounter + 1> + </#list> + </#if> + </#if> + </td> + </tr> + <#if question_has_next> + <tr><td><hr /></td></tr> + </#if> + <#assign counter = counter + 1> + </#list> + </table> + </form> + </td> + </tr> + <tr><td colspan="2"><hr class='sepbar'/></td></tr> + +<#-- Upgrades/Up-Sell/Cross-Sell --> + <#macro associated assocProducts beforeName showName afterName formNamePrefix targetRequestName> + <#assign targetRequest = "product"> + <#if targetRequestName?has_content> + <#assign targetRequest = targetRequestName> + </#if> + <#if assocProducts?has_content> + <tr><td> </td></tr> + <tr><td colspan="2"><h2>${beforeName!}<#if showName == "Y">${productContentWrapper.get("PRODUCT_NAME", "html")!}</#if>${afterName!}</h2></td></tr> + <tr><td><hr /></td></tr> + <#list assocProducts as productAssoc> + <tr><td> + <div> + <a href='<@ofbizUrl>${targetRequest}/<#if categoryId??>~category_id=${categoryId}/</#if>~product_id=${productAssoc.productIdTo!}</@ofbizUrl>' class="buttontext"> + ${productAssoc.productIdTo!} + </a> + - <b>${productAssoc.reason!}</b> + </div> + </td></tr> + ${setRequestAttribute("optProductId", productAssoc.productIdTo)} + ${setRequestAttribute("listIndex", listIndex)} + ${setRequestAttribute("formNamePrefix", formNamePrefix)} + <#if targetRequestName?has_content> + ${setRequestAttribute("targetRequestName", targetRequestName)} + </#if> + <tr> + <td> + ${screens.render(productsummaryScreen)} + </td> + </tr> + <#local listIndex = listIndex + 1> + <tr><td><hr /></td></tr> + </#list> + ${setRequestAttribute("optProductId", "")} + ${setRequestAttribute("formNamePrefix", "")} + ${setRequestAttribute("targetRequestName", "")} + </#if> +</#macro> +<#assign productValue = product> +<#assign listIndex = 1> +${setRequestAttribute("productValue", productValue)} + +<table > + <#-- obsolete --> + <@associated assocProducts=obsoleteProducts beforeName="" showName="Y" afterName=" is made obsolete by these products:" formNamePrefix="obs" targetRequestName=""/> + <#-- cross sell --> + <@associated assocProducts=crossSellProducts beforeName="" showName="N" afterName="You might be interested in these as well:" formNamePrefix="cssl" targetRequestName="crosssell"/> + <#-- up sell --> + <@associated assocProducts=upSellProducts beforeName="Try these instead of " showName="Y" afterName=":" formNamePrefix="upsl" targetRequestName="upsell"/> + <#-- obsolescence --> + <@associated assocProducts=obsolenscenseProducts beforeName="" showName="Y" afterName=" makes these products obsolete:" formNamePrefix="obce" targetRequestName=""/> +</table> + +<#-- special cross/up-sell area using commonFeatureResultIds (from common feature product search) --> +<#if commonFeatureResultIds?has_content> + <h2>Similar Products That Might Interest You...</h2> + <hr /> + + <#list commonFeatureResultIds as commonFeatureResultId> + <div> + ${setRequestAttribute("optProductId", commonFeatureResultId)} + ${setRequestAttribute("listIndex", commonFeatureResultId_index)} + ${setRequestAttribute("formNamePrefix", "cfeatcssl")} + <#-- ${setRequestAttribute("targetRequestName", targetRequestName)} --> + ${screens.render(productsummaryScreen)} + </div> + <#if commonFeatureResultId_has_next> + <hr /> + </#if> + </#list> +</#if> +</div> Propchange: ofbiz/trunk/applications/order/template/entry/catalog/configproductdetail.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/order/template/entry/catalog/configproductdetail.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/order/template/entry/catalog/configproductdetail.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/applications/order/template/entry/catalog/editProduct.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/entry/catalog/editProduct.ftl?rev=1736868&view=auto ============================================================================== --- ofbiz/trunk/applications/order/template/entry/catalog/editProduct.ftl (added) +++ ofbiz/trunk/applications/order/template/entry/catalog/editProduct.ftl Mon Mar 28 11:14:22 2016 @@ -0,0 +1,24 @@ +<#-- +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. +--> + +<#if security.hasEntityPermission("CATALOG", "_CREATE", session)> +<div> +<a href="/catalog/control/EditProduct?productId=${productId}${externalKeyParam!}" target="catalog" class="buttontext">${uiLabelMap.ProductEditProduct}</a> +</div> +</#if> Propchange: ofbiz/trunk/applications/order/template/entry/catalog/editProduct.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/applications/order/template/entry/catalog/editProduct.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/applications/order/template/entry/catalog/editProduct.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain |
Free forum by Nabble | Edit this page |