Author: hansbak
Date: Wed May 25 09:25:16 2011 New Revision: 1127449 URL: http://svn.apache.org/viewvc?rev=1127449&view=rev Log: this change will introduce seo friendly urls for products and categories which are generated from the description. It also allows to convert url's from previous systems to point to the product in the current system. In the ecommerce demo records have been added to show this feature. Modified: ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/minicart.ftl ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/breadcrumbs.ftl ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/categorydetail.ftl ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/compareproducts.ftl ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CatalogUrlFilter.java ofbiz/trunk/specialpurpose/ecommerce/data/DemoConfigurator.xml ofbiz/trunk/specialpurpose/ecommerce/data/DemoFinAccount.xml ofbiz/trunk/specialpurpose/ecommerce/data/DemoPopularCategoriesData.xml ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml ofbiz/trunk/specialpurpose/ecommerce/data/DemoPurchasing.xml ofbiz/trunk/specialpurpose/ecommerce/webapp/ecomclone/WEB-INF/web.xml ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/web.xml ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/cart/showcart.ftl ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/ShowBestSellingCategory.ftl ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/minilastviewedcategories.ftl ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/miniproductsummary.ftl ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/productdetail.ftl ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/sidedeepcategory.ftl Modified: ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/minicart.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/minicart.ftl?rev=1127449&r1=1127448&r2=1127449&view=diff ============================================================================== --- ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/minicart.ftl (original) +++ ofbiz/trunk/applications/order/webapp/ordermgr/entry/cart/minicart.ftl Wed May 25 09:25:16 2011 @@ -59,9 +59,9 @@ under the License. <td> <#if cartLine.getProductId()?exists> <#if cartLine.getParentProductId()?exists> - <a href="<@ofbizUrl>product?product_id=${cartLine.getParentProductId()}</@ofbizUrl>" class="linktext">${cartLine.getName()}</a> + <a href="<@ofbizCatalogAltUrl productId=cartLine.getParentProductId()/>" class="linktext">${cartLine.getName()}</a> <#else> - <a href="<@ofbizUrl>product?product_id=${cartLine.getProductId()}</@ofbizUrl>" class="linktext">${cartLine.getName()}</a> + <a href="<@ofbizCatalogAltUrl productId=cartLine.getProductId()/>" class="linktext">${cartLine.getName()}</a> </#if> <#else> <strong>${cartLine.getItemTypeDescription()?if_exists}</strong> Modified: ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/breadcrumbs.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/breadcrumbs.ftl?rev=1127449&r1=1127448&r2=1127449&view=diff ============================================================================== --- ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/breadcrumbs.ftl (original) +++ ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/breadcrumbs.ftl Wed May 25 09:25:16 2011 @@ -29,7 +29,7 @@ under the License. <#if (Static["org.ofbiz.product.category.CategoryWorker"].checkTrailItem(request, category.getString("productCategoryId"))) || (curCategoryId?exists && curCategoryId == category.productCategoryId)> <li> <#if catContentWrappers?exists && catContentWrappers[category.productCategoryId]?exists> - <a href="<@ofbizCatalogUrl currentCategoryId=category.productCategoryId previousCategoryId=previousCategoryId!""/>" class="<#if curCategoryId?exists && curCategoryId == category.productCategoryId>buttontextdisabled<#else>linktext</#if>"> + <a href="<@ofbizCatalogAltUrl productCategoryId=category.productCategoryId previousCategoryId=previousCategoryId!""/>" class="<#if curCategoryId?exists && curCategoryId == category.productCategoryId>buttontextdisabled<#else>linktext</#if>"> <#if catContentWrappers[category.productCategoryId].get("CATEGORY_NAME")?exists> ${catContentWrappers[category.productCategoryId].get("CATEGORY_NAME")} <#elseif catContentWrappers[category.productCategoryId].get("DESCRIPTION")?exists> Modified: ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/categorydetail.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/categorydetail.ftl?rev=1127449&r1=1127448&r2=1127449&view=diff ============================================================================== --- ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/categorydetail.ftl (original) +++ ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/categorydetail.ftl Wed May 25 09:25:16 2011 @@ -25,18 +25,18 @@ under the License. <select name="pageSelect" onchange="window.location=this[this.selectedIndex].value;"> <option value="#">${uiLabelMap.CommonPage} ${viewIndex?int} ${uiLabelMap.CommonOf} ${viewIndexMax + 1}</option> <#list 0..viewIndexMax as curViewNum> - <option value="<@ofbizUrl>category/~category_id=${productCategoryId}/~VIEW_SIZE=${viewSize}/~VIEW_INDEX=${curViewNum?int + 1}</@ofbizUrl>">${uiLabelMap.CommonGotoPage} ${curViewNum + 1}</option> + <option value="<@ofbizCatalogAltUrl productCategoryId=productCategoryId viewSize=viewSize viewIndex=(curViewNum?int + 1)/>">${uiLabelMap.CommonGotoPage} ${curViewNum + 1}</option> </#list> </select> <#-- End Page Select Drop-Down --> <#if (viewIndex?int > 1)> - <a href="<@ofbizUrl>category/~category_id=${productCategoryId}/~VIEW_SIZE=${viewSize}/~VIEW_INDEX=${viewIndex?int - 1}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonPrevious}</a> | + <a href="<@ofbizCatalogAltUrl productCategoryId=productCategoryId viewSize=viewSize viewIndex=(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="<@ofbizUrl>category/~category_id=${productCategoryId}/~VIEW_SIZE=${viewSize}/~VIEW_INDEX=${viewIndex?int + 1}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonNext}</a> + | <a href="<@ofbizCatalogAltUrl productCategoryId=productCategoryId viewSize=viewSize viewIndex=(viewIndex?int + 1)/>" class="buttontext">${uiLabelMap.CommonNext}</a> </#if> </div> </#if> Modified: ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/compareproducts.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/compareproducts.ftl?rev=1127449&r1=1127448&r2=1127449&view=diff ============================================================================== --- ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/compareproducts.ftl (original) +++ ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/compareproducts.ftl Wed May 25 09:25:16 2011 @@ -24,7 +24,7 @@ under the License. <#assign productData = productDataMap[product.productId]/> <#assign productContentWrapper = productData.productContentWrapper/> <#assign price = productData.priceMap/> - <#assign productUrl><@ofbizCatalogUrl productId=product.productId currentCategoryId=categoryId/></#assign> + <#assign productUrl><@ofbizCatalogAltUrl productId=product.productId/></#assign> <#assign smallImageUrl = productContentWrapper.get("SMALL_IMAGE_URL")/> <#if smallImageUrl!?length == 0> <#assign smallImageUrl = "/images/defaultImage.jpg"/> Modified: ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl?rev=1127449&r1=1127448&r2=1127449&view=diff ============================================================================== --- ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl (original) +++ ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl Wed May 25 09:25:16 2011 @@ -53,7 +53,7 @@ ${virtualJavaScript?if_exists} </script> <#if product?exists> <#-- variable setup --> - <#assign productUrl><@ofbizCatalogUrl productId=product.productId currentCategoryId=categoryId/></#assign> + <#assign productUrl><@ofbizCatalogAltUrl productId=product.productId productCategoryId=categoryId/></#assign> <#if requestAttributes.productCategoryMember?exists> <#assign prodCatMem = requestAttributes.productCategoryMember> 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=1127449&r1=1127448&r2=1127449&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 May 25 09:25:16 2011 @@ -57,8 +57,6 @@ public class CatalogUrlFilter extends Co public static final String PRODUCT_REQUEST = "product"; public static final String CATEGORY_REQUEST = "category"; - protected static String defaultViewIndex = null; - protected static String defaultViewSize = null; protected static String defaultLocaleString = null; protected static String redirectUrl = null; @@ -105,20 +103,16 @@ public class CatalogUrlFilter extends Co } // set initial parameters - String initDefaultViewIndex = config.getInitParameter("defaultViewIndex"); - String initDefaultViewSize = config.getInitParameter("defaultViewSize"); String initDefaultLocalesString = config.getInitParameter("defaultLocaleString"); String initRedirectUrl = config.getInitParameter("redirectUrl"); - defaultViewIndex = UtilValidate.isNotEmpty(initDefaultViewIndex) ? initDefaultViewIndex : ""; - defaultViewSize = UtilValidate.isNotEmpty(initDefaultViewSize) ? initDefaultViewSize : ""; defaultLocaleString = UtilValidate.isNotEmpty(initDefaultLocalesString) ? initDefaultLocalesString : ""; redirectUrl = UtilValidate.isNotEmpty(initRedirectUrl) ? initRedirectUrl : ""; String pathInfo = httpRequest.getServletPath(); - if (UtilValidate.isNotEmpty(pathInfo)) { List<String> pathElements = StringUtil.split(pathInfo, "/"); String alternativeUrl = pathElements.get(0); + // get web site and default locale string String localeString = null; String webSiteId = WebSiteWorker.getWebSiteId(request); @@ -138,8 +132,8 @@ public class CatalogUrlFilter extends Co } // get view index, view size and view sort from path info - String viewIndex = defaultViewIndex; - String viewSize = defaultViewSize; + String viewIndex = null; + String viewSize = null; String viewSort = null; String searchString = null; @@ -163,38 +157,131 @@ public class CatalogUrlFilter extends Co } } + if (UtilValidate.isNotEmpty(httpRequest.getParameter("viewIndex"))) { + viewIndex = httpRequest.getParameter("viewIndex"); + } + if (UtilValidate.isNotEmpty(httpRequest.getParameter("viewSize"))) { + viewSize = httpRequest.getParameter("viewSize"); + } + if (UtilValidate.isNotEmpty(httpRequest.getParameter("viewSort"))) { + viewSort = httpRequest.getParameter("viewSort"); + } + if (UtilValidate.isNotEmpty(httpRequest.getParameter("searchString"))) { + searchString = httpRequest.getParameter("searchString"); + } + String productId = null; String productCategoryId = null; try { // look for productId - List<EntityCondition> productContentConds = FastList.newInstance(); - productContentConds.add(EntityCondition.makeCondition( - EntityCondition.makeCondition("drObjectInfo", alternativeUrl) - , EntityOperator.OR - , EntityCondition.makeCondition("drObjectInfo", "/" + alternativeUrl))); - productContentConds.add(EntityCondition.makeCondition("localeString", localeString)); - productContentConds.add(EntityCondition.makeCondition("productContentTypeId", "ALTERNATIVE_URL")); - productContentConds.add(EntityUtil.getFilterByDateExpr()); - List<GenericValue> productContentInfos = delegator.findList("ProductContentAndInfo", EntityCondition.makeCondition(productContentConds), null, UtilMisc.toList("-fromDate"), null, true); - if (UtilValidate.isNotEmpty(productContentInfos)) { - GenericValue productContentInfo = EntityUtil.getFirst(productContentInfos); - productId = productContentInfo.getString("productId"); + if (alternativeUrl.endsWith("-p")) { + List<EntityCondition> productContentConds = FastList.newInstance(); + productContentConds.add(EntityCondition.makeCondition("productContentTypeId", "ALTERNATIVE_URL")); + productContentConds.add(EntityUtil.getFilterByDateExpr()); + List<GenericValue> productContentInfos = delegator.findList("ProductContentAndInfo", EntityCondition.makeCondition(productContentConds), null, UtilMisc.toList("-fromDate"), null, true); + if (UtilValidate.isNotEmpty(productContentInfos)) { + for(GenericValue productContentInfo : productContentInfos){ + String contentId = (String) productContentInfo.get("contentId"); + List<GenericValue> ContentAssocDataResourceViewTos = delegator.findByAndCache("ContentAssocDataResourceViewTo", UtilMisc.toMap("contentIdStart", contentId, "drLocaleString", localeString, "caContentAssocTypeId", "ALTERNATE_LOCALE", "drDataResourceTypeId", "ELECTRONIC_TEXT")); + if (UtilValidate.isNotEmpty(ContentAssocDataResourceViewTos)){ + for (GenericValue ContentAssocDataResourceViewTo : ContentAssocDataResourceViewTos) { + GenericValue ElectronicText = ContentAssocDataResourceViewTo.getRelatedOneCache("ElectronicText"); + if (UtilValidate.isNotEmpty(ElectronicText)) { + String textData = (String) ElectronicText.get("textData"); + textData = invalidCharacter(textData); + if (alternativeUrl.matches(textData + ".+$")) { + String productIdStr = null; + productIdStr = alternativeUrl.replace(textData + "-", ""); + productIdStr = productIdStr.replace("-p", ""); + String checkProductId = (String) productContentInfo.get("productId"); + if (productIdStr.equalsIgnoreCase(checkProductId)) { + productId = checkProductId; + break; + } + } + } + } + } else { + List<GenericValue> contentDataResourceViews = delegator.findByAndCache("ContentDataResourceView", UtilMisc.toMap("contentId", contentId, "statusId", "CTNT_IN_PROGRESS", "drDataResourceTypeId", "ELECTRONIC_TEXT")); + for (GenericValue contentDataResourceView : contentDataResourceViews) { + GenericValue ElectronicText = contentDataResourceView.getRelatedOneCache("ElectronicText"); + if (UtilValidate.isNotEmpty(ElectronicText)) { + String textData = (String) ElectronicText.get("textData"); + if (UtilValidate.isNotEmpty(textData)) { + textData = invalidCharacter(textData); + if (alternativeUrl.matches(textData + ".+$")) { + String productIdStr = null; + productIdStr = alternativeUrl.replace(textData + "-", ""); + productIdStr = productIdStr.replace("-p", ""); + String checkProductId = (String) productContentInfo.get("productId"); + if (productIdStr.equalsIgnoreCase(checkProductId)) { + productId = checkProductId; + break; + } + } + } + } + } + } + } + } } // look for productCategoryId - List<EntityCondition> productCategoryContentConds = FastList.newInstance(); - productCategoryContentConds.add(EntityCondition.makeCondition( - EntityCondition.makeCondition("drObjectInfo", alternativeUrl) - , EntityOperator.OR - , EntityCondition.makeCondition("drObjectInfo", "/" + alternativeUrl))); - productContentConds.add(EntityCondition.makeCondition("localeString", localeString)); - productCategoryContentConds.add(EntityCondition.makeCondition("prodCatContentTypeId", "ALTERNATIVE_URL")); - productCategoryContentConds.add(EntityUtil.getFilterByDateExpr()); - List<GenericValue> productCategoryContentInfos = delegator.findList("ProductCategoryContentAndInfo", EntityCondition.makeCondition(productCategoryContentConds), null, UtilMisc.toList("-fromDate"), null, true); - if (UtilValidate.isNotEmpty(productCategoryContentInfos)) { - GenericValue productCategoryContentInfo = EntityUtil.getFirst(productCategoryContentInfos); - productCategoryId = productCategoryContentInfo.getString("productCategoryId"); + if (alternativeUrl.endsWith("-c")) { + List<EntityCondition> productCategoryContentConds = FastList.newInstance(); + productCategoryContentConds.add(EntityCondition.makeCondition("prodCatContentTypeId", "ALTERNATIVE_URL")); + productCategoryContentConds.add(EntityUtil.getFilterByDateExpr()); + List<GenericValue> productCategoryContentInfos = delegator.findList("ProductCategoryContentAndInfo", EntityCondition.makeCondition(productCategoryContentConds), null, UtilMisc.toList("-fromDate"), null, true); + if (UtilValidate.isNotEmpty(productCategoryContentInfos)) { + for(GenericValue productCategoryContentInfo : productCategoryContentInfos){ + String contentId = (String) productCategoryContentInfo.get("contentId"); + List<GenericValue> ContentAssocDataResourceViewTos = delegator.findByAndCache("ContentAssocDataResourceViewTo", UtilMisc.toMap("contentIdStart", contentId, "drLocaleString", localeString, "caContentAssocTypeId", "ALTERNATE_LOCALE", "drDataResourceTypeId", "ELECTRONIC_TEXT")); + if (UtilValidate.isNotEmpty(ContentAssocDataResourceViewTos)){ + for (GenericValue ContentAssocDataResourceViewTo : ContentAssocDataResourceViewTos) { + GenericValue ElectronicText = ContentAssocDataResourceViewTo.getRelatedOneCache("ElectronicText"); + if (UtilValidate.isNotEmpty(ElectronicText)){ + String textData = (String) ElectronicText.get("textData"); + if (UtilValidate.isNotEmpty(textData)) { + textData = invalidCharacter(textData); + if (alternativeUrl.matches(textData + ".+$")) { + String productCategoryStr = null; + productCategoryStr = alternativeUrl.replace(textData + "-", ""); + productCategoryStr = productCategoryStr.replace("-c", ""); + String checkProductCategoryId = (String) productCategoryContentInfo.get("productCategoryId"); + if (productCategoryStr.equalsIgnoreCase(checkProductCategoryId)) { + productCategoryId = checkProductCategoryId; + break; + } + } + } + } + } + } else { + List<GenericValue> contentDataResourceViews = delegator.findByAndCache("ContentDataResourceView", UtilMisc.toMap("contentId", contentId, "statusId", "CTNT_IN_PROGRESS", "drDataResourceTypeId", "ELECTRONIC_TEXT")); + for (GenericValue contentDataResourceView : contentDataResourceViews) { + GenericValue ElectronicText = contentDataResourceView.getRelatedOneCache("ElectronicText"); + if (UtilValidate.isNotEmpty(ElectronicText)) { + String textData = (String) ElectronicText.get("textData"); + if (UtilValidate.isNotEmpty(textData)) { + textData = invalidCharacter(textData); + if (alternativeUrl.matches(textData + ".+$")) { + String productCategoryStr = null; + productCategoryStr = alternativeUrl.replace(textData + "-", ""); + productCategoryStr = productCategoryStr.replace("-c", ""); + String checkProductCategoryId = (String) productCategoryContentInfo.get("productCategoryId"); + if (productCategoryStr.equalsIgnoreCase(checkProductCategoryId)) { + productCategoryId = checkProductCategoryId; + break; + } + } + } + } + } + } + } + } } } catch (GenericEntityException e) { Debug.logWarning("Cannot look for product and product category", module); @@ -387,6 +474,7 @@ 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); @@ -399,7 +487,13 @@ public class CatalogUrlFilter extends Co urlBuilder.append("/"); } // append alternative URL - urlBuilder.append(alternativeUrl); + url = 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("&")) { @@ -428,6 +522,10 @@ public class CatalogUrlFilter extends Co } urlBuilder.append("searchString=" + searchString + "&"); } + if (urlBuilder.toString().endsWith("&")) { + return urlBuilder.toString().substring(0, urlBuilder.toString().length()-1); + } + return urlBuilder.toString(); } else { return CatalogUrlServlet.makeCatalogUrl(request, productId, productCategoryId, previousCategoryId); @@ -440,6 +538,7 @@ public class CatalogUrlFilter extends Co 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); @@ -451,7 +550,13 @@ public class CatalogUrlFilter extends Co urlBuilder.append("/"); } // append alternative URL - urlBuilder.append(alternativeUrl); + url = 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); @@ -461,4 +566,82 @@ public class CatalogUrlFilter extends Co return redirectUrl; } } + + public static String invalidCharacter(String str) { + str = str.replace("&", "-"); + str = str.replace("\"", "-"); + str = str.replace("Ã", "-"); + str = str.replace("÷", "-"); + str = str.replace(" ", "-"); + str = str.replace("!", "-"); + str = str.replace("#", "-"); + str = str.replace("$", "-"); + str = str.replace("%", "-"); + str = str.replace("'", "-"); + str = str.replace("(", "-"); + str = str.replace(")", "-"); + str = str.replace("*", "-"); + str = str.replace("+", "-"); + str = str.replace(",", "-"); + str = str.replace(".", "-"); + str = str.replace("/", "-"); + str = str.replace(":", "-"); + str = str.replace(";", "-"); + str = str.replace("<", "-"); + str = str.replace("=", "-"); + str = str.replace(">", "-"); + str = str.replace("?", "-"); + str = str.replace("@", "-"); + str = str.replace("[", "-"); + str = str.replace("\\", "-"); + str = str.replace("]", "-"); + str = str.replace("^", "-"); + str = str.replace("_", "-"); + str = str.replace("`", "-"); + str = str.replace("{", "-"); + str = str.replace("|", "-"); + str = str.replace("}", "-"); + str = str.replace("~", "-"); + str = str.replace("ï¿ ", "-"); + str = str.replace("ï¿¡", "-"); + str = str.replace("¤", "-"); + str = str.replace("§", "-"); + str = str.replace("¨", "-"); + str = str.replace("¬", "-"); + str = str.replace("Ë", "-"); + str = str.replace("°", "-"); + str = str.replace("±", "-"); + str = str.replace("μ", "-"); + str = str.replace("â¢", "-"); + str = str.replace("ï¼", "-"); + str = str.replace("ï¿¥", "-"); + str = str.replace("â¦â¦", "-"); + str = str.replace("ï¼", "-"); + str = str.replace("ï¼", "-"); + str = str.replace("ââ", "-"); + str = str.replace("ã", "-"); + str = str.replace("ã", "-"); + str = str.replace("ï½", "-"); + str = str.replace("ï½", "-"); + str = str.replace("ï¼", "-"); + str = str.replace("ï¼", "-"); + str = str.replace("â", "-"); + str = str.replace("ã", "-"); + str = str.replace("ã", "-"); + str = str.replace("ã", "-"); + str = str.replace("ï¼", "-"); + str = str.replace("ã", "-"); + str = str.replace("â", "-"); + str = str.replace("ï¼", "-"); + while(str.startsWith("-")){ + str = str.substring(1); + } + while(str.endsWith("-")){ + str = str.substring(0,str.length() - 1); + } + while(str.indexOf("--") != -1){ + str = str.replace("--","-"); + } + return str; + } } Modified: ofbiz/trunk/specialpurpose/ecommerce/data/DemoConfigurator.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/data/DemoConfigurator.xml?rev=1127449&r1=1127448&r2=1127449&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/data/DemoConfigurator.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/data/DemoConfigurator.xml Wed May 25 09:25:16 2011 @@ -224,4 +224,185 @@ under the License. <ProductCategoryMember productCategoryId="CATALOG1_SEARCH" productId="PIZZA" fromDate="2004-09-24 15:09:47.338"/> <ProductCategoryMember productCategoryId="PROMOTIONS" productId="PIZZA" fromDate="2004-09-24 15:09:47.338"/> + <!-- alternative URL --> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="PC-100-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRPC-100-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="FOOD-001-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRFOOD-001-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="PC001-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRPC001-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="RAM1GB_BRAND-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRRAM1GB_BRAND-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="HD250GB_BRAND-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRHD250GB_BRAND-ALT" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="HD500GB_BRAND-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRHD500GB_BRAND-ALT" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="ETH_BRAND-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRETH_BRAND-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="MOD_BRAND-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRMOD_BRAND-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="MOTHER_BOARD_ASS-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DMOTHER_BOARD_ASS" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="MOTHER_BOARD-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRMOTHER_BOARD-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="CPU-586-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRCPU-586-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="ENCHILADAS-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRENCHILADAS-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="FAJITA_BEEF-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRFAJITA_BEEF-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="JALAPENOS-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRJALAPENOS-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="PIZZA-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRPIZZA-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DOUGH-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRDOUGH-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="SAUCE-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRSAUCE-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="SAUCE-TM-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRSAUCE-TM-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="SAUCE-CM-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRSAUCE-CM-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="SAUCE-TP-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRSAUCE-TP-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="SAUCE-CP-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRSAUCE-CP-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="PEPPERS-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRPEPPERS-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="PEPPERS-H-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRPEPPERS-H-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="PEPPERS-G-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRPEPPERS-G-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="PEPPERS-R-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRPEPPERS-R-ALTEN" localeString="en_US"/> + + <ElectronicText dataResourceId="DRPC-100-ALTEN" textData="configurable-pcs"/> + <ElectronicText dataResourceId="DRFOOD-001-ALTEN" textData="configurable-foods"/> + <ElectronicText dataResourceId="DRPC001-ALTEN" textData="configurable-pc"/> + <ElectronicText dataResourceId="DRRAM1GB_BRAND-ALTEN" textData="ram-1-gb-ddr2"/> + <ElectronicText dataResourceId="DRHD250GB_BRAND-ALT" textData="hd-250-gb"/> + <ElectronicText dataResourceId="DRHD500GB_BRAND-ALT" textData="hd-450-gb"/> + <ElectronicText dataResourceId="DRETH_BRAND-ALTEN" textData="ethernet-card-10-100"/> + <ElectronicText dataResourceId="DRMOD_BRAND-ALTEN" textData="modem-card-56k"/> + <ElectronicText dataResourceId="DMOTHER_BOARD_ASS" textData="motherboard-assembly"/> + <ElectronicText dataResourceId="DRMOTHER_BOARD-ALTEN" textData="motherboard"/> + <ElectronicText dataResourceId="DRCPU-586-ALTEN" textData="cpu-intel-586"/> + <ElectronicText dataResourceId="DRENCHILADAS-ALTEN" textData="enchiladas"/> + <ElectronicText dataResourceId="DRFAJITA_BEEF-ALTEN" textData="fajita-beef"/> + <ElectronicText dataResourceId="DRJALAPENOS-ALTEN" textData="jalapenos"/> + <ElectronicText dataResourceId="DRPIZZA-ALTEN" textData="pizza"/> + <ElectronicText dataResourceId="DRDOUGH-ALTEN" textData="dough"/> + <ElectronicText dataResourceId="DRSAUCE-ALTEN" textData="sauce"/> + <ElectronicText dataResourceId="DRSAUCE-TM-ALTEN" textData="tomato-sauce-with-mozzarella"/> + <ElectronicText dataResourceId="DRSAUCE-CM-ALTEN" textData="chili-sauce-with-mozzarella"/> + <ElectronicText dataResourceId="DRSAUCE-TP-ALTEN" textData="tomato-sauce-with-parmesan"/> + <ElectronicText dataResourceId="DRSAUCE-CP-ALTEN" textData="chili-sauce-with-parmesan"/> + <ElectronicText dataResourceId="DRPEPPERS-ALTEN" textData="pepper"/> + <ElectronicText dataResourceId="DRPEPPERS-G-ALTEN" textData="green-peppers"/> + <ElectronicText dataResourceId="DRPEPPERS-H-ALTEN" textData="hot-peppers"/> + <ElectronicText dataResourceId="DRPEPPERS-R-ALTEN" textData="roasted-peppers"/> + + <Content contentId="PC-100-ALT" contentTypeId="DOCUMENT" dataResourceId="PC-100-ALT" localeString="en"/> + <Content contentId="CPC-100-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRPC-100-ALTEN" localeString="en_US"/> + <Content contentId="FOOD-001-ALT" contentTypeId="DOCUMENT" dataResourceId="FOOD-001-ALT" localeString="en"/> + <Content contentId="CFOOD-001-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRFOOD-001-ALTEN" localeString="en_US"/> + <Content contentId="PC001-ALT" contentTypeId="DOCUMENT" dataResourceId="PC001-ALT" localeString="en"/> + <Content contentId="CPC001-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRPC001-ALTEN" localeString="en_US"/> + <Content contentId="RAM1GB_BRAND-ALT" contentTypeId="DOCUMENT" dataResourceId="RAM1GB_BRAND-ALT" localeString="en"/> + <Content contentId="CRAM1GB_BRAND-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRRAM1GB_BRAND-ALTEN" localeString="en_US"/> + <Content contentId="HD250GB_BRAND-ALT" contentTypeId="DOCUMENT" dataResourceId="HD250GB_BRAND-ALT" localeString="en"/> + <Content contentId="CHD250GB_BRAND-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRHD250GB_BRAND-ALT" localeString="en_US"/> + <Content contentId="HD500GB_BRAND-ALT" contentTypeId="DOCUMENT" dataResourceId="HD500GB_BRAND-ALT" localeString="en"/> + <Content contentId="CHD500GB_BRAND-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRHD500GB_BRAND-ALT" localeString="en_US"/> + <Content contentId="ETH_BRAND-ALT" contentTypeId="DOCUMENT" dataResourceId="ETH_BRAND-ALT" localeString="en"/> + <Content contentId="CETH_BRAND-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRETH_BRAND-ALTEN" localeString="en_US"/> + <Content contentId="MOD_BRAND-ALT" contentTypeId="DOCUMENT" dataResourceId="MOD_BRAND-ALT" localeString="en"/> + <Content contentId="CMOD_BRAND-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRMOD_BRAND-ALTEN" localeString="en_US"/> + <Content contentId="MOTHER_BOARD_ASS-ALT" contentTypeId="DOCUMENT" dataResourceId="MOTHER_BOARD_ASS-ALT" localeString="en"/> + <Content contentId="CMOTHER_BOARD_ASS" contentTypeId="DOCUMENT" dataResourceId="DMOTHER_BOARD_ASS" localeString="en_US"/> + <Content contentId="MOTHER_BOARD-ALT" contentTypeId="DOCUMENT" dataResourceId="MOTHER_BOARD-ALT" localeString="en"/> + <Content contentId="CMOTHER_BOARD-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRMOTHER_BOARD-ALTEN" localeString="en_US"/> + <Content contentId="CPU-586-ALT" contentTypeId="DOCUMENT" dataResourceId="CPU-586-ALT" localeString="en"/> + <Content contentId="CCPU-586-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRCPU-586-ALTEN" localeString="en_US"/> + <Content contentId="ENCHILADAS-ALT" contentTypeId="DOCUMENT" dataResourceId="ENCHILADAS-ALT" localeString="en"/> + <Content contentId="CENCHILADAS-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRENCHILADAS-ALTEN" localeString="en_US"/> + <Content contentId="FAJITA_BEEF-ALT" contentTypeId="DOCUMENT" dataResourceId="FAJITA_BEEF-ALT" localeString="en"/> + <Content contentId="CFAJITA_BEEF-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRFAJITA_BEEF-ALTEN" localeString="en_US"/> + <Content contentId="JALAPENOS-ALT" contentTypeId="DOCUMENT" dataResourceId="JALAPENOS-ALT" localeString="en"/> + <Content contentId="CJALAPENOS-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRJALAPENOS-ALTEN" localeString="en_US"/> + <Content contentId="PIZZA-ALT" contentTypeId="DOCUMENT" dataResourceId="PIZZA-ALT" localeString="en"/> + <Content contentId="CPIZZA-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRPIZZA-ALTEN" localeString="en_US"/> + <Content contentId="DOUGH-ALT" contentTypeId="DOCUMENT" dataResourceId="DOUGH-ALT" localeString="en"/> + <Content contentId="CDOUGH-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRDOUGH-ALTEN" localeString="en_US"/> + <Content contentId="SAUCE-ALT" contentTypeId="DOCUMENT" dataResourceId="SAUCE-ALT" localeString="en"/> + <Content contentId="CSAUCE-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRSAUCE-ALTEN" localeString="en_US"/> + <Content contentId="SAUCE-TM-ALT" contentTypeId="DOCUMENT" dataResourceId="SAUCE-TM-ALT" localeString="en"/> + <Content contentId="CSAUCE-TM-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRSAUCE-TM-ALTEN" localeString="en_US"/> + <Content contentId="SAUCE-CM-ALT" contentTypeId="DOCUMENT" dataResourceId="SAUCE-CM-ALT" localeString="en"/> + <Content contentId="CSAUCE-CM-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRSAUCE-CM-ALTEN" localeString="en_US"/> + <Content contentId="SAUCE-TP-ALT" contentTypeId="DOCUMENT" dataResourceId="SAUCE-TP-ALT" localeString="en"/> + <Content contentId="CSAUCE-TP-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRSAUCE-TP-ALTEN" localeString="en_US"/> + <Content contentId="SAUCE-CP-ALT" contentTypeId="DOCUMENT" dataResourceId="SAUCE-CP-ALT" localeString="en"/> + <Content contentId="CSAUCE-CP-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRSAUCE-CP-ALTEN" localeString="en_US"/> + <Content contentId="PEPPERS-ALT" contentTypeId="DOCUMENT" dataResourceId="PEPPERS-ALT" localeString="en"/> + <Content contentId="CPEPPERS-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRPEPPERS-ALTEN" localeString="en_US"/> + <Content contentId="PEPPERS-G-ALT" contentTypeId="DOCUMENT" dataResourceId="PEPPERS-G-ALT" localeString="en"/> + <Content contentId="CPEPPERS-G-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRPEPPERS-G-ALTEN" localeString="en_US"/> + <Content contentId="PEPPERS-H-ALT" contentTypeId="DOCUMENT" dataResourceId="PEPPERS-H-ALT" localeString="en"/> + <Content contentId="CPEPPERS-H-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRPEPPERS-H-ALTEN" localeString="en_US"/> + <Content contentId="PEPPERS-R-ALT" contentTypeId="DOCUMENT" dataResourceId="PEPPERS-R-ALT" localeString="en"/> + <Content contentId="CPEPPERS-R-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRPEPPERS-R-ALTEN" localeString="en_US"/> + + <ContentAssoc contentId="PC-100-ALT" contentIdTo="CPC-100-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="FOOD-001-ALT" contentIdTo="CFOOD-001-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="PC001-ALT" contentIdTo="CPC001-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="RAM1GB_BRAND-ALT" contentIdTo="CRAM1GB_BRAND-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="HD250GB_BRAND-ALT" contentIdTo="CHD250GB_BRAND-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="HD500GB_BRAND-ALT" contentIdTo="CHD500GB_BRAND-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="ETH_BRAND-ALT" contentIdTo="CETH_BRAND-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="MOD_BRAND-ALT" contentIdTo="CMOD_BRAND-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="MOTHER_BOARD_ASS-ALT" contentIdTo="CMOTHER_BOARD_ASS" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="MOTHER_BOARD-ALT" contentIdTo="CMOTHER_BOARD-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="CPU-586-ALT" contentIdTo="CCPU-586-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="ENCHILADAS-ALT" contentIdTo="CENCHILADAS-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="FAJITA_BEEF-ALT" contentIdTo="CFAJITA_BEEF-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="JALAPENOS-ALT" contentIdTo="CJALAPENOS-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="PIZZA-ALT" contentIdTo="CPIZZA-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="DOUGH-ALT" contentIdTo="CDOUGH-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="SAUCE-ALT" contentIdTo="CSAUCE-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="SAUCE-TM-ALT" contentIdTo="CSAUCE-TM-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="SAUCE-CM-ALT" contentIdTo="CSAUCE-CM-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="SAUCE-TP-ALT" contentIdTo="CSAUCE-TP-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="SAUCE-CP-ALT" contentIdTo="CSAUCE-CP-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="PEPPERS-ALT" contentIdTo="CPEPPERS-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="PEPPERS-G-ALT" contentIdTo="CPEPPERS-G-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="PEPPERS-H-ALT" contentIdTo="CPEPPERS-H-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="PEPPERS-R-ALT" contentIdTo="CPEPPERS-R-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + + <ProductCategoryContent prodCatContentTypeId="ALTERNATIVE_URL" productCategoryId="PC-100" contentId="PC-100-ALT" fromDate="2001-05-13 12:00:00.0"/> + <ProductCategoryContent prodCatContentTypeId="ALTERNATIVE_URL" productCategoryId="FOOD-001" contentId="FOOD-001-ALT" fromDate="2001-05-13 12:00:00.0"/> + + <ProductContent productId="PC001" contentId="PC001-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="RAM1GB_BRAND" contentId="RAM1GB_BRAND-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="HD250GB_BRAND" contentId="HD250GB_BRAND-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="HD500GB_BRAND" contentId="HD500GB_BRAND-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="ETH_BRAND" contentId="ETH_BRAND-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="MOD_BRAND" contentId="MOD_BRAND-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="MOTHER_BOARD_ASS" contentId="MOTHER_BOARD_ASS-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="MOTHER_BOARD" contentId="MOTHER_BOARD-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="CPU-586" contentId="CPU-586-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="ENCHILADAS" contentId="ENCHILADAS-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="FAJITA_BEEF" contentId="FAJITA_BEEF-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="JALAPENOS" contentId="JALAPENOS-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="PIZZA" contentId="PIZZA-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="DOUGH" contentId="DOUGH-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="SAUCE" contentId="SAUCE-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="SAUCE-TM" contentId="SAUCE-TM-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="SAUCE-CM" contentId="SAUCE-CM-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="SAUCE-TP" contentId="SAUCE-TP-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="SAUCE-CP" contentId="SAUCE-CP-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="PEPPERS" contentId="PEPPERS-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="PEPPERS-G" contentId="PEPPERS-G-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="PEPPERS-H" contentId="PEPPERS-H-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="PEPPERS-R" contentId="PEPPERS-R-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> </entity-engine-xml> Modified: ofbiz/trunk/specialpurpose/ecommerce/data/DemoFinAccount.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/data/DemoFinAccount.xml?rev=1127449&r1=1127448&r2=1127449&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/data/DemoFinAccount.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/data/DemoFinAccount.xml Wed May 25 09:25:16 2011 @@ -87,4 +87,41 @@ <!-- associate the fulfillment service with the products --> <ProductContent productId="FA-001" contentId="FA_ACTIVATION" productContentTypeId="FULFILLMENT_EXTASYNC" fromDate="2000-01-01 00:00:00"/> + + <!-- alternative URL --> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="FA-100-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRFA-100-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="FA-001-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRFA-001-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="FA-001-30-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRFA-001-30-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="FA-001-50-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRFA-001-50-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="FA-001-O-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRFA-001-O-ALTEN" localeString="en_US"/> + <ElectronicText dataResourceId="DRFA-100-ALTEN" textData="account-activation"/> + <ElectronicText dataResourceId="DRFA-001-ALTEN" textData="financial-account-activation"/> + <ElectronicText dataResourceId="DRFA-001-30-ALTEN" textData="financial-account-activation-30"/> + <ElectronicText dataResourceId="DRFA-001-50-ALTEN" textData="financial-account-activation-50"/> + <ElectronicText dataResourceId="DRFA-001-O-ALTEN" textData="financial-account-activation-o"/> + <Content contentId="FA-100-ALT" contentTypeId="DOCUMENT" dataResourceId="FA-100-ALT" localeString="en"/> + <Content contentId="CFA-100-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRFA-100-ALTEN" localeString="en_US"/> + <Content contentId="FA-001-ALT" contentTypeId="DOCUMENT" dataResourceId="FA-001-ALT" localeString="en"/> + <Content contentId="CFA-001-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRFA-001-ALTEN" localeString="en_US"/> + <Content contentId="FA-001-30-ALT" contentTypeId="DOCUMENT" dataResourceId="FA-001-30-ALT" localeString="en"/> + <Content contentId="CFA-001-30-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRFA-001-30-ALTEN" localeString="en_US"/> + <Content contentId="FA-001-50-ALT" contentTypeId="DOCUMENT" dataResourceId="FA-001-50-ALT" localeString="en"/> + <Content contentId="CFA-001-50-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRFA-001-50-ALTEN" localeString="en_US"/> + <Content contentId="FA-001-O-ALT" contentTypeId="DOCUMENT" dataResourceId="FA-001-O-ALT" localeString="en"/> + <Content contentId="CFA-001-O-ALTEN" contentTypeId="DOCUMENT" dataResourceId="DRFA-001-O-ALTEN" localeString="en_US"/> + <ContentAssoc contentId="FA-100-ALT" contentIdTo="CFA-100-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="FA-001-ALT" contentIdTo="CFA-001-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="FA-001-30-ALT" contentIdTo="CFA-001-30-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="FA-001-50-ALT" contentIdTo="CFA-001-50-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="FA-001-O-ALT" contentIdTo="CFA-001-O-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ProductCategoryContent prodCatContentTypeId="ALTERNATIVE_URL" productCategoryId="FA-100" contentId="FA-100-ALT" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="FA-001" contentId="FA-001-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="FA-001-30" contentId="FA-001-30-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="FA-001-50" contentId="FA-001-50-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> + <ProductContent productId="FA-001-O" contentId="FA-001-O-ALT" productContentTypeId="ALTERNATIVE_URL" fromDate="2001-05-13 12:00:00.0"/> </entity-engine-xml> \ No newline at end of file Modified: ofbiz/trunk/specialpurpose/ecommerce/data/DemoPopularCategoriesData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/data/DemoPopularCategoriesData.xml?rev=1127449&r1=1127448&r2=1127449&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/data/DemoPopularCategoriesData.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/data/DemoPopularCategoriesData.xml Wed May 25 09:25:16 2011 @@ -39,5 +39,18 @@ under the License. <ProductCategoryMember productCategoryId="BEST-SELL-2" productId="WG-9944" quantity="5" fromDate="2010-01-01 12:00:00.0"/> <ProductCategoryMember productCategoryId="BEST-SELL-2" productId="WG-1111" quantity="7" fromDate="2010-01-01 12:00:00.0"/> <ProductCategoryMember productCategoryId="BEST-SELL-2" productId="WG-5569" quantity="1" fromDate="2010-01-01 12:00:00.0"/> - + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="BEST-SELL-1-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRBEST-SELL-1-ALTEN" localeString="en_US"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="BEST-SELL-2-ALT" localeString="en"/> + <DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRBEST-SELL-2-ALTEN" localeString="en_US"/> + <ElectronicText dataResourceId="DRBEST-SELL-1-ALTEN" textData="best-sell-1"/> + <ElectronicText dataResourceId="DRBEST-SELL-2-ALTEN" textData="best-sell-2"/> + <Content contentTypeId="DOCUMENT" localeString="en" contentId="BEST-SELL-1-ALT" dataResourceId="BEST-SELL-1-ALT"/> + <Content contentTypeId="DOCUMENT" localeString="en_US" contentId="CBEST-SELL-1-ALTEN" dataResourceId="DRBEST-SELL-2-ALTEN"/> + <Content contentTypeId="DOCUMENT" localeString="en" contentId="BEST-SELL-2-ALT" dataResourceId="BEST-SELL-2-ALT"/> + <Content contentTypeId="DOCUMENT" localeString="en_US" contentId="CBEST-SELL-2-ALTEN" dataResourceId="DRBEST-SELL-2-ALTEN"/> + <ContentAssoc contentId="BEST-SELL-1-ALT" contentIdTo="CBEST-SELL-1-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ContentAssoc contentId="BEST-SELL-2-ALT" contentIdTo="CBEST-SELL-2-ALTEN" contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-04-26 12:00:00.0"/> + <ProductCategoryContent prodCatContentTypeId="ALTERNATIVE_URL" productCategoryId="BEST-SELL-1" contentId="BEST-SELL-1-ALT" fromDate="2001-05-13 12:00:00.0"/> + <ProductCategoryContent prodCatContentTypeId="ALTERNATIVE_URL" productCategoryId="BEST-SELL-2" contentId="BEST-SELL-2-ALT" fromDate="2001-05-13 12:00:00.0"/> </entity-engine-xml> |
Free forum by Nabble | Edit this page |