Author: hansbak
Date: Wed Aug 10 05:56:50 2011 New Revision: 1156035 URL: http://svn.apache.org/viewvc?rev=1156035&view=rev Log: the product url on the order confirmation email didn't display because ofbizCatalogAltUrl don't return the URL when request not found: fixed Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlServlet.java ofbiz/trunk/applications/product/src/org/ofbiz/product/category/OfbizCatalogAltUrlTransform.java ofbiz/trunk/specialpurpose/ecommerce/widget/EmailOrderScreens.xml Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java?rev=1156035&r1=1156034&r2=1156035&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java Wed Aug 10 05:56:50 2011 @@ -338,97 +338,112 @@ public class CatalogUrlFilter extends Co public static String makeCategoryUrl(HttpServletRequest request, String previousCategoryId, String productCategoryId, String productId, String viewSize, String viewIndex, String viewSort, String searchString) { Delegator delegator = (Delegator) request.getAttribute("delegator"); - String url = null; try { GenericValue productCategory = delegator.findOne("ProductCategory", UtilMisc.toMap("productCategoryId", productCategoryId), true); CategoryContentWrapper wrapper = new CategoryContentWrapper(productCategory, request); - StringWrapper alternativeUrl = wrapper.get("ALTERNATIVE_URL"); - - if (UtilValidate.isNotEmpty(alternativeUrl) && UtilValidate.isNotEmpty(alternativeUrl.toString())) { - StringBuilder urlBuilder = new StringBuilder(); - urlBuilder.append(request.getSession().getServletContext().getContextPath()); - if (urlBuilder.charAt(urlBuilder.length() - 1) != '/') { - urlBuilder.append("/"); - } - // append alternative URL - url = UrlServletHelper.invalidCharacter(alternativeUrl.toString()); - urlBuilder.append(url); - if (UtilValidate.isNotEmpty(productCategoryId)) { - urlBuilder.append("-"); - urlBuilder.append(productCategoryId); - urlBuilder.append("-c"); - } - // append view index - if (UtilValidate.isNotEmpty(viewIndex)) { - if (!urlBuilder.toString().endsWith("?") && !urlBuilder.toString().endsWith("&")) { - urlBuilder.append("?"); - } - urlBuilder.append("viewIndex=" + viewIndex + "&"); - } - // append view size - if (UtilValidate.isNotEmpty(viewSize)) { - if (!urlBuilder.toString().endsWith("?") && !urlBuilder.toString().endsWith("&")) { - urlBuilder.append("?"); - } - urlBuilder.append("viewSize=" + viewSize + "&"); + return makeCategoryUrl(delegator, wrapper, request.getSession().getServletContext().getContextPath(), previousCategoryId, productCategoryId, productId, viewSize, viewIndex, viewSort, searchString); + } catch (GenericEntityException e) { + Debug.logWarning(e, "Cannot create category's URL for: " + productCategoryId, module); + return redirectUrl; + } + } + + public static String makeCategoryUrl(Delegator delegator, CategoryContentWrapper wrapper, String contextPath, String previousCategoryId, String productCategoryId, String productId, String viewSize, String viewIndex, String viewSort, String searchString) { + String url = ""; + StringWrapper alternativeUrl = wrapper.get("ALTERNATIVE_URL"); + + if (UtilValidate.isNotEmpty(alternativeUrl) && UtilValidate.isNotEmpty(alternativeUrl.toString())) { + StringBuilder urlBuilder = new StringBuilder(); + urlBuilder.append(contextPath); + if (urlBuilder.charAt(urlBuilder.length() - 1) != '/') { + urlBuilder.append("/"); + } + // append alternative URL + url = UrlServletHelper.invalidCharacter(alternativeUrl.toString()); + urlBuilder.append(url); + if (UtilValidate.isNotEmpty(productCategoryId)) { + urlBuilder.append("-"); + urlBuilder.append(productCategoryId); + urlBuilder.append("-c"); + } + // append view index + if (UtilValidate.isNotEmpty(viewIndex)) { + if (!urlBuilder.toString().endsWith("?") && !urlBuilder.toString().endsWith("&")) { + urlBuilder.append("?"); } - // append view sort - if (UtilValidate.isNotEmpty(viewSort)) { - if (!urlBuilder.toString().endsWith("?") && !urlBuilder.toString().endsWith("&")) { - urlBuilder.append("?"); - } - urlBuilder.append("viewSort=" + viewSort + "&"); + urlBuilder.append("viewIndex=" + viewIndex + "&"); + } + // append view size + if (UtilValidate.isNotEmpty(viewSize)) { + if (!urlBuilder.toString().endsWith("?") && !urlBuilder.toString().endsWith("&")) { + urlBuilder.append("?"); } - // append search string - if (UtilValidate.isNotEmpty(searchString)) { - if (!urlBuilder.toString().endsWith("?") && !urlBuilder.toString().endsWith("&")) { - urlBuilder.append("?"); - } - urlBuilder.append("searchString=" + searchString + "&"); + urlBuilder.append("viewSize=" + viewSize + "&"); + } + // append view sort + if (UtilValidate.isNotEmpty(viewSort)) { + if (!urlBuilder.toString().endsWith("?") && !urlBuilder.toString().endsWith("&")) { + urlBuilder.append("?"); } - if (urlBuilder.toString().endsWith("&")) { - return urlBuilder.toString().substring(0, urlBuilder.toString().length()-1); + urlBuilder.append("viewSort=" + viewSort + "&"); + } + // append search string + if (UtilValidate.isNotEmpty(searchString)) { + if (!urlBuilder.toString().endsWith("?") && !urlBuilder.toString().endsWith("&")) { + urlBuilder.append("?"); } - - return urlBuilder.toString(); - } else { - return CatalogUrlServlet.makeCatalogUrl(request, productId, productCategoryId, previousCategoryId); + urlBuilder.append("searchString=" + searchString + "&"); } - } catch (GenericEntityException e) { - Debug.logWarning(e, "Cannot create category's URL for: " + productCategoryId, module); - return redirectUrl; + if (urlBuilder.toString().endsWith("&")) { + return urlBuilder.toString().substring(0, urlBuilder.toString().length()-1); + } + + url = urlBuilder.toString(); + } else { + List<String> crumb = FastList.newInstance(); + String currentCategoryId = null; + url = CatalogUrlServlet.makeCatalogUrl(contextPath, crumb, productId, currentCategoryId, previousCategoryId); } + return url; } public static String makeProductUrl(HttpServletRequest request, String previousCategoryId, String productCategoryId, String productId) { Delegator delegator = (Delegator) request.getAttribute("delegator"); String url = null; try { - GenericValue product = delegator.findOne("Product", UtilMisc.toMap("productId", productId), true); - ProductContentWrapper wrapper = new ProductContentWrapper(product, request); - StringWrapper alternativeUrl = wrapper.get("ALTERNATIVE_URL"); - if (UtilValidate.isNotEmpty(alternativeUrl) && UtilValidate.isNotEmpty(alternativeUrl.toString())) { - StringBuilder urlBuilder = new StringBuilder(); - urlBuilder.append(request.getSession().getServletContext().getContextPath()); - if (urlBuilder.charAt(urlBuilder.length() - 1) != '/') { - urlBuilder.append("/"); - } - // append alternative URL - url = UrlServletHelper.invalidCharacter(alternativeUrl.toString()); - urlBuilder.append(url); - if (UtilValidate.isNotEmpty(productId)) { - urlBuilder.append("-"); - urlBuilder.append(productId); - urlBuilder.append("-p"); - } - return urlBuilder.toString(); - } else { - return CatalogUrlServlet.makeCatalogUrl(request, productId, productCategoryId, previousCategoryId); - } + GenericValue product = delegator.findOne("Product", UtilMisc.toMap("productId", productId), true); + ProductContentWrapper wrapper = new ProductContentWrapper(product, request); + url = makeProductUrl(delegator, wrapper, request.getSession().getServletContext().getContextPath(), previousCategoryId, productCategoryId, productId); } catch (GenericEntityException e) { Debug.logWarning(e, "Cannot create product's URL for: " + productId, module); return redirectUrl; } + return url; + } + + public static String makeProductUrl(Delegator delegator, ProductContentWrapper wrapper, String contextPath, String previousCategoryId, String productCategoryId, String productId) { + String url = ""; + StringWrapper alternativeUrl = wrapper.get("ALTERNATIVE_URL"); + if (UtilValidate.isNotEmpty(alternativeUrl) && UtilValidate.isNotEmpty(alternativeUrl.toString())) { + StringBuilder urlBuilder = new StringBuilder(); + urlBuilder.append(contextPath); + if (urlBuilder.charAt(urlBuilder.length() - 1) != '/') { + urlBuilder.append("/"); + } + // append alternative URL + url = UrlServletHelper.invalidCharacter(alternativeUrl.toString()); + urlBuilder.append(url); + if (UtilValidate.isNotEmpty(productId)) { + urlBuilder.append("-"); + urlBuilder.append(productId); + urlBuilder.append("-p"); + } + url = urlBuilder.toString(); + } else { + List<String> crumb = FastList.newInstance(); + String currentCategoryId = null; + url = CatalogUrlServlet.makeCatalogUrl(contextPath, crumb, productId, currentCategoryId, previousCategoryId); + } + return url; } - } Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlServlet.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlServlet.java?rev=1156035&r1=1156034&r2=1156035&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlServlet.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlServlet.java Wed Aug 10 05:56:50 2011 @@ -179,4 +179,29 @@ public class CatalogUrlServlet extends H return urlBuilder.toString(); } + + public static String makeCatalogUrl(String contextPath, List<String> crumb, String productId, String currentCategoryId, String previousCategoryId) { + StringBuilder urlBuilder = new StringBuilder(); + urlBuilder.append(contextPath); + if (urlBuilder.charAt(urlBuilder.length() - 1) != '/') { + urlBuilder.append("/"); + } + urlBuilder.append(CATALOG_URL_MOUNT_POINT); + + if (UtilValidate.isNotEmpty(currentCategoryId)) { + crumb = CategoryWorker.adjustTrail(crumb, currentCategoryId, previousCategoryId); + for (String trailCategoryId: crumb) { + if ("TOP".equals(trailCategoryId)) continue; + urlBuilder.append("/"); + urlBuilder.append(trailCategoryId); + } + } + + if (UtilValidate.isNotEmpty(productId)) { + urlBuilder.append("/p_"); + urlBuilder.append(productId); + } + + return urlBuilder.toString(); + } } Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/category/OfbizCatalogAltUrlTransform.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/category/OfbizCatalogAltUrlTransform.java?rev=1156035&r1=1156034&r2=1156035&view=diff ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/product/category/OfbizCatalogAltUrlTransform.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/category/OfbizCatalogAltUrlTransform.java Wed Aug 10 05:56:50 2011 @@ -20,11 +20,20 @@ package org.ofbiz.product.category; import java.io.IOException; import java.io.Writer; +import java.util.Locale; import java.util.Map; import javax.servlet.http.HttpServletRequest; +import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.UtilValidate; + +import org.ofbiz.base.util.template.FreeMarkerWorker; +import org.ofbiz.entity.Delegator; +import org.ofbiz.entity.GenericEntityException; +import org.ofbiz.entity.GenericValue; +import org.ofbiz.product.product.ProductContentWrapper; +import org.ofbiz.service.LocalDispatcher; import org.ofbiz.webapp.control.RequestHandler; import freemarker.core.Environment; @@ -87,35 +96,55 @@ public class OfbizCatalogAltUrlTransform public void close() throws IOException { try { - Environment env = Environment.getCurrentEnvironment(); - BeanModel req = (BeanModel) env.getVariable("request"); - if (req != null) { + Environment env = Environment.getCurrentEnvironment(); + BeanModel req = (BeanModel) env.getVariable("request"); String previousCategoryId = getStringArg(args, "previousCategoryId"); String productCategoryId = getStringArg(args, "productCategoryId"); String productId = getStringArg(args, "productId"); - - HttpServletRequest request = (HttpServletRequest) req.getWrappedObject(); String url = ""; - StringBuilder newURL = new StringBuilder(); - if (UtilValidate.isNotEmpty(productId)) { - url = CatalogUrlFilter.makeProductUrl(request, previousCategoryId, productCategoryId, productId); + + Object prefix = env.getVariable("urlPrefix"); + String viewSize = getStringArg(args, "viewSize"); + String viewIndex = getStringArg(args, "viewIndex"); + String viewSort = getStringArg(args, "viewSort"); + String searchString = getStringArg(args, "searchString"); + if (req != null) { + + HttpServletRequest request = (HttpServletRequest) req.getWrappedObject(); + StringBuilder newURL = new StringBuilder(); + if (UtilValidate.isNotEmpty(productId)) { + url = CatalogUrlFilter.makeProductUrl(request, previousCategoryId, productCategoryId, productId); + } else { + url = CatalogUrlFilter.makeCategoryUrl(request, previousCategoryId, productCategoryId, productId, viewSize, viewIndex, viewSort, searchString); + } + // make the link + if (fullPath){ + String serverRootUrl = RequestHandler.getDefaultServerRootUrl(request, secure); + newURL.append(serverRootUrl); + } + newURL.append(url); + out.write(newURL.toString()); + } else if (prefix != null) { + Delegator delegator = FreeMarkerWorker.getWrappedObject("delegator", env); + LocalDispatcher dispatcher = FreeMarkerWorker.getWrappedObject("dispatcher", env); + Locale locale = (Locale) args.get("locale"); + if (UtilValidate.isNotEmpty(productId)) { + GenericValue product = delegator.findOne("Product", UtilMisc.toMap("productId", productId), false); + ProductContentWrapper wrapper = new ProductContentWrapper(dispatcher, product, locale, "text/html"); + url = CatalogUrlFilter.makeProductUrl(delegator, wrapper, ((StringModel) prefix).getAsString(), previousCategoryId, productCategoryId, productId); + } else { + GenericValue productCategory = delegator.findOne("ProductCategory", UtilMisc.toMap("productCategoryId", productCategoryId), false); + CategoryContentWrapper wrapper = new CategoryContentWrapper(dispatcher, productCategory, locale, "text/html"); + url = CatalogUrlFilter.makeCategoryUrl(delegator, wrapper, ((StringModel) prefix).getAsString(), previousCategoryId, productCategoryId, productId, viewSize, viewIndex, viewSort, searchString); + } + out.write(url.toString()); } else { - String viewSize = getStringArg(args, "viewSize"); - String viewIndex = getStringArg(args, "viewIndex"); - String viewSort = getStringArg(args, "viewSort"); - String searchString = getStringArg(args, "searchString"); - url = CatalogUrlFilter.makeCategoryUrl(request, previousCategoryId, productCategoryId, productId, viewSize, viewIndex, viewSort, searchString); + out.write(buf.toString()); } - // make the link - if (fullPath){ - String serverRootUrl = RequestHandler.getDefaultServerRootUrl(request, secure); - newURL.append(serverRootUrl); - } - newURL.append(url); - out.write(newURL.toString()); - } } catch (TemplateModelException e) { throw new IOException(e.getMessage()); + } catch (GenericEntityException e) { + throw new IOException(e.getMessage()); } } }; Modified: ofbiz/trunk/specialpurpose/ecommerce/widget/EmailOrderScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/widget/EmailOrderScreens.xml?rev=1156035&r1=1156034&r2=1156035&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/widget/EmailOrderScreens.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/widget/EmailOrderScreens.xml Wed Aug 10 05:56:50 2011 @@ -30,7 +30,7 @@ under the License. <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/> <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/> <set field="title" value="${uiLabelMap.PageTitleOrderConfirmationNotice}"/> - <set field="baseEcommerceSecureUrl" value="${baseSecureUrl}/ecommerce/control/"/> + <set field="baseEcommerceSecureUrl" value="${baseSecureUrl}/ecommerce"/> <set field="title" value="Order"/> <script location="component://order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy"/> </actions> @@ -84,7 +84,7 @@ under the License. <property-map resource="OrderUiLabels" map-name="uiLabelMap" global="true"/> <property-map resource="PartyUiLabels" map-name="uiLabelMap" global="true"/> <set field="title" value="${uiLabelMap.PageTitleOrderConfirmationNotice}"/> - <set field="baseEcommerceSecureUrl" value="${baseSecureUrl}/ecommerce/control/"/> + <set field="baseEcommerceSecureUrl" value="${baseSecureUrl}/ecommerce"/> <set field="allowAnonymousView" value="Y"/> <!-- this field will instruction OrderStatus.groovy to allow an anonymous order to be viewed by anybody, so the email confirmation screen will work --> <script location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/order/OrderStatus.groovy"/> </actions> |
Free forum by Nabble | Edit this page |