| /* |
| * 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. |
| */ |
| |
| /* |
| * This script is also referenced by the ecommerce's screens and |
| * should not contain order component's specific code. |
| */ |
| import org.apache.ofbiz.entity.util.EntityUtil |
| |
| import org.apache.ofbiz.base.util.* |
| import org.apache.ofbiz.product.catalog.* |
| import org.apache.ofbiz.product.category.* |
| import org.apache.ofbiz.entity.* |
| |
| List fillTree(rootCat ,CatLvl, parentCategoryId) { |
| if(rootCat) { |
| rootCat.sort{ it.productCategoryId } |
| def listTree = [] |
| for(root in rootCat) { |
| preCatChilds = from("ProductCategoryRollup").where("parentProductCategoryId", root.productCategoryId).queryList() |
| catChilds = EntityUtil.getRelated("CurrentProductCategory",null,preCatChilds,false) |
| def childList = [] |
| |
| // CatLvl uses for identify the Category level for display different css class |
| if(catChilds) { |
| if(CatLvl==2) |
| childList = fillTree(catChilds,CatLvl+1, parentCategoryId.replaceAll("/", "")+'/'+root.productCategoryId) |
| // replaceAll and '/' uses for fix bug in the breadcrum for href of category |
| else if(CatLvl==1) |
| childList = fillTree(catChilds,CatLvl+1, parentCategoryId.replaceAll("/", "")+root.productCategoryId) |
| else |
| childList = fillTree(catChilds,CatLvl+1, parentCategoryId+'/'+root.productCategoryId) |
| } |
| |
| productsInCat = from("ProductCategoryAndMember").where("productCategoryId", root.productCategoryId).queryList() |
| |
| // Display the category if this category containing products or contain the category that's containing products |
| if(productsInCat || childList) { |
| def rootMap = [:] |
| category = from("ProductCategory").where("productCategoryId", root.productCategoryId).queryOne() |
| categoryContentWrapper = new CategoryContentWrapper(category, request) |
| context.title = categoryContentWrapper.get("CATEGORY_NAME", "html") |
| categoryDescription = categoryContentWrapper.get("DESCRIPTION", "html") |
| |
| if(categoryContentWrapper.get("CATEGORY_NAME", "html").toString()) |
| rootMap["categoryName"] = categoryContentWrapper.get("CATEGORY_NAME", "html") |
| else |
| rootMap["categoryName"] = root.categoryName |
| |
| if(categoryContentWrapper.get("DESCRIPTION", "html").toString()) |
| rootMap["categoryDescription"] = categoryContentWrapper.get("DESCRIPTION", "html") |
| else |
| rootMap["categoryDescription"] = root.description |
| |
| rootMap["productCategoryId"] = root.productCategoryId |
| rootMap["parentCategoryId"] = parentCategoryId |
| rootMap["child"] = childList |
| |
| listTree.add(rootMap) |
| } |
| } |
| return listTree |
| } |
| } |
| |
| CategoryWorker.getRelatedCategories(request, "topLevelList", CatalogWorker.getCatalogTopCategoryId(request, CatalogWorker.getCurrentCatalogId(request)), true) |
| curCategoryId = parameters.category_id ?: parameters.CATEGORY_ID ?: "" |
| request.setAttribute("curCategoryId", curCategoryId) |
| CategoryWorker.setTrail(request, curCategoryId) |
| |
| categoryList = request.getAttribute("topLevelList") |
| if (categoryList) { |
| catContentWrappers = [:] |
| CategoryWorker.getCategoryContentWrappers(catContentWrappers, categoryList, request) |
| context.catContentWrappers = catContentWrappers |
| completedTree = fillTree(categoryList, 1, "") |
| context.completedTree = completedTree |
| } |