Author: hansbak
Date: Wed Mar 16 03:39:49 2011
New Revision: 1082041
URL: http://svn.apache.org/viewvc?rev=1082041&view=rev
Log:
a new version of the category tree, will now display in IE and blankscreen
mostly gone....not perfect yet, we will probably make
the left column about 50% wider in the next version
Added:
ofbiz/trunk/framework/images/webapp/images/catalog/categorytree.css (with
props)
Modified:
ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryServices.java
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/category/CategoryTree.groovy
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
ofbiz/trunk/applications/product/webapp/catalog/category/CategoryTree.ftl
ofbiz/trunk/applications/product/widget/catalog/CommonScreens.xml
Modified:
ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryServices.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryServices.java?rev=1082041&r1=1082040&r2=1082041&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryServices.java
(original) +++
ofbiz/trunk/applications/product/src/org/ofbiz/product/category/CategoryServices.java
Wed Mar 16 03:39:49 2011 @@ -18,14 +18,22 @@
*******************************************************************************/
package org.ofbiz.product.category;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
import java.sql.Timestamp;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
import javolution.util.FastList;
import javolution.util.FastMap;
+import net.sf.json.JSONObject;
+
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilDateTime;
import org.ofbiz.base.util.UtilGenerics;
@@ -391,4 +399,116 @@ public class CategoryServices {
if (productCategoryMembers != null)
result.put("productCategoryMembers", productCategoryMembers);
return result;
}
+
+ // Please note : the structure of map in this function is according to the
JSON data map of the jsTree
+ @SuppressWarnings("unchecked")
+ public static void getChildCategoryTree(HttpServletRequest request,
HttpServletResponse response){
+ Delegator delegator = (Delegator) request.getAttribute("delegator");
+ String productCategoryId = request.getParameter("productCategoryId");
+ String isCatalog = request.getParameter("isCatalog");
+ String entityName = null;
+ String primaryKeyName = null;
+
+ if (isCatalog.equals("true")) {
+ entityName = "ProdCatalog";
+ primaryKeyName = "prodCatalogId";
+ } else {
+ entityName = "ProductCategory";
+ primaryKeyName = "productCategoryId";
+ }
+
+ List categoryList = FastList.newInstance();
+ List<GenericValue> childOfCats;
+
+ try {
+ GenericValue category = delegator.findByPrimaryKey(entityName
,UtilMisc.toMap(primaryKeyName, productCategoryId));
+ if (UtilValidate.isNotEmpty(category)) {
+ if (isCatalog.equals("true")) {
+ CategoryWorker.getRelatedCategories(request,
"ChildCatalogList",
CatalogWorker.getCatalogTopCategoryId(request, productCategoryId), true); +
childOfCats = (List<GenericValue>)
request.getAttribute("ChildCatalogList"); + } else {
+ childOfCats = delegator.findByAnd("ProductCategoryRollup",
UtilMisc.toMap(
+ "parentProductCategoryId", productCategoryId ));
+ }
+ if (UtilValidate.isNotEmpty(childOfCats)) {
+ for (GenericValue childOfCat : childOfCats ) {
+
+ Object catId = null;
+ String catNameField = null;
+
+ catId = childOfCat.get("productCategoryId");
+ catNameField = "CATEGORY_NAME";
+
+ Map josonMap = FastMap.newInstance();
+ List<GenericValue> childList = null;
+
+ // Get the child list of chosen category
+ childList =
delegator.findByAnd("ProductCategoryRollup", UtilMisc.toMap(
+ "parentProductCategoryId", catId));
+
+ // Get the chosen category information for the
categoryContentWrapper
+ GenericValue cate =
delegator.findByPrimaryKey("ProductCategory"
,UtilMisc.toMap("productCategoryId",catId)); +
+ // If chosen category's child exists, then put the
arrow before category icon
+ if (UtilValidate.isNotEmpty(childList)) {
+ josonMap.put("state", "closed");
+ }
+ Map dataMap = FastMap.newInstance();
+ Map dataAttrMap = FastMap.newInstance();
+ CategoryContentWrapper categoryContentWrapper = new
CategoryContentWrapper(cate, request);
+
+ if
(UtilValidate.isNotEmpty(categoryContentWrapper.get(catNameField))) {
+ dataMap.put("title",
categoryContentWrapper.get(catNameField)+"["+catId+"]");
+ } else {
+ dataMap.put("title", catId);
+ }
+
dataAttrMap.put("onClick","window.location.href='EditCategory?productCategoryId="+catId+"';
return
false;"); +
+ dataMap.put("attr", dataAttrMap);
+ josonMap.put("data", dataMap);
+ Map attrMap = FastMap.newInstance();
+ attrMap.put("id", catId);
+ attrMap.put("isCatalog", false);
+ attrMap.put("rel", "CATEGORY");
+ josonMap.put("attr",attrMap);
+
+ categoryList.add(josonMap);
+ }
+ toJsonObjectList(categoryList,response);
+ }
+ }
+ } catch (GenericEntityException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public static void toJsonObjectList(List attrList, HttpServletResponse
response){
+ String jsonStr = "[";
+ for (Object attrMap : attrList) {
+ JSONObject json = JSONObject.fromObject(attrMap);
+ jsonStr = jsonStr + json.toString() + ',';
+ }
+ jsonStr = jsonStr + "{ } ]";
+ if (UtilValidate.isEmpty(jsonStr)) {
+ Debug.logError("JSON Object was empty; fatal error!",module);
+ }
+ // set the X-JSON content type
+ response.setContentType("application/json");
+ // jsonStr.length is not reliable for unicode characters
+ try {
+ response.setContentLength(jsonStr.getBytes("UTF8").length);
+ } catch (UnsupportedEncodingException e) {
+ Debug.logError("Problems with Json encoding",module);
+ }
+ // return the JSON String
+ Writer out;
+ try {
+ out = response.getWriter();
+ out.write(jsonStr);
+ out.flush();
+ } catch (IOException e) {
+ Debug.logError("Unable to get response writer",module);
+ }
+ }
}
Modified:
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/category/CategoryTree.groovy
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/category/CategoryTree.groovy?rev=1082041&r1=1082040&r2=1082041&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/category/CategoryTree.groovy
(original) +++
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/category/CategoryTree.groovy
Wed Mar 16 03:39:49 2011 @@ -17,56
+17,103 @@
* under the License.
*/
+/*
+ * This script is also referenced by the ecommerce's screens and
+ * should not contain order component's specific code.
+ */
+import org.ofbiz.entity.util.EntityUtil;
import org.ofbiz.base.util.*;
import org.ofbiz.product.catalog.*;
import org.ofbiz.product.category.*;
-import org.ofbiz.entity.GenericValue;
import javolution.util.FastMap;
import javolution.util.FastList;
-import org.ofbiz.base.util.UtilMisc;
-import org.ofbiz.base.util.UtilValidate;
-import org.ofbiz.entity.GenericValue;
-import org.ofbiz.entity.util.EntityUtil;
-import javax.servlet.http.HttpSession;
+import javolution.util.FastList.*;
+import org.ofbiz.entity.*;
+import java.util.List;
+
+// Put the result of CategoryWorker.getRelatedCategories into the fillTree
function as attribute.
+// The fillTree function will return the complete list of category of given
catalog.
+// PLEASE NOTE : The structure of the complete list of fillTree function is
according to the JSON_DATA plugin of the jsTree.
+
+List fillTree(rootCat) {
+ if (rootCat) {
+ rootCat.sort{ it.productCategoryId }
+ def listTree = FastList.newInstance();
+ for (root in rootCat) {
+ preCatChilds = delegator.findByAnd("ProductCategoryRollup",
["parentProductCategoryId": root.productCategoryId]);
+ catChilds =
EntityUtil.getRelated("CurrentProductCategory",preCatChilds);
+ def childList = FastList.newInstance();
+ def rootMap = FastMap.newInstance();
+ category = delegator.findByPrimaryKey("ProductCategory",
["productCategoryId": root.productCategoryId]);
+ categoryContentWrapper = new CategoryContentWrapper(category,
request);
+ context.title = categoryContentWrapper.CATEGORY_NAME;
+ categoryDescription = categoryContentWrapper.DESCRIPTION;
+
+ if (categoryContentWrapper.CATEGORY_NAME) {
+ rootMap["categoryName"] = categoryContentWrapper.CATEGORY_NAME;
+ } else {
+ rootMap["categoryName"] = root.categoryName;
+ }
+ if (categoryContentWrapper.DESCRIPTION) {
+ rootMap["categoryDescription"] =
categoryContentWrapper.DESCRIPTION;
+ } else {
+ rootMap["categoryDescription"] = root.description;
+ }
+ rootMap["productCategoryId"] = root.productCategoryId;
+ rootMap["child"] = catChilds;
+ rootMap["isCatalog"] = false;
+ listTree.add(rootMap);
+
+ }
+ return listTree;
+ }
+}
+
+completedTree = FastList.newInstance();
-prodCatalogList = FastList.newInstance();
+// Get the Catalogs
prodCatalogs = delegator.findByAnd("ProdCatalog");
+
if (prodCatalogs.size() > 0) {
for (i = 0; i < prodCatalogs.size(); i++) {
prodCatalogMap = FastMap.newInstance();
prodCatalog = prodCatalogs[i];
prodCatalogId = prodCatalog.getString("prodCatalogId");
- prodCatalogMap.put("prodCatalogId", prodCatalogId);
- prodCatalogMap.put("catalogName",
prodCatalog.getString("catalogName"));
- prodCatalogMap.put("catalogName",
prodCatalog.getString("catalogName"));
-
- //root category list of the catalog
- prodCategoryList = CatalogWorker.getProdCatalogCategories(request,
prodCatalogId, null);
- rootCategoryList = FastList.newInstance();
- if (prodCategoryList.size() > 0) {
- for (j = 0; j < prodCategoryList.size(); j++) {
- prodCategory = prodCategoryList[j];
- rootCategory = delegator.findByPrimaryKey("ProductCategory",
["productCategoryId" :
prodCategory.getString("productCategoryId")]);
- rootCategoryList.add(rootCategory);
- }
- }
-
- if (rootCategoryList) {
- prodCatalogMap.put("rootCategoryList", rootCategoryList);
- prodCatalogList.add(prodCatalogMap);
+ prodCatalogMap.put("productCategoryId", prodCatalogId);
+ prodCatalogMap.put("categoryName",
prodCatalog.getString("catalogName"));
+ prodCatalogMap.put("isCatalog", true);
+
+ CategoryWorker.getRelatedCategories(request, "CatalogList_"+i,
CatalogWorker.getCatalogTopCategoryId(request,
prodCatalogId), true); + categoryList = null;
+ categoryList = request.getAttribute("CatalogList_"+i);
+ prodCatalogTree = FastList.newInstance();
+
+ if (categoryList) {
+ prodCatalogTree = fillTree(categoryList);
+ prodCatalogMap.put("child", prodCatalogTree);
+ completedTree.add(prodCatalogMap);
}
}
}
+// The complete tree list for the category tree
+context.completedTree = completedTree;
-context.prodCatalogList = prodCatalogList;
-
-openTree = false;
+stillInCatalogManager = true;
productCategoryId = null;
+prodCatalogId = null;
+showProductCategoryId = null;
+
+// Reset tree condition check. Are we still in the Catalog Manager ?. If not ,
then reset the tree.
if ((parameters.productCategoryId != null) || (parameters.showProductCategoryId
!= null)) {
- openTree = true;
- productCategoryId = (parameters.productCategoryId != null) ?
parameters.productCategoryId : parameters.showProductCategoryId;
+ stillInCatalogManager = false;
+ productCategoryId = parameters.productCategoryId;
+ showProductCategoryId = parameters.showProductCategoryId;
+} else if (parameters.prodCatalogId != null) {
+ stillInCatalogManager = false;
+ prodCatalogId = parameters.prodCatalogId;
}
-
-context.openTree = openTree;
+context.stillInCatalogManager = stillInCatalogManager;
context.productCategoryId = productCategoryId;
+context.prodCatalogId = prodCatalogId;
+context.showProductCategoryId = showProductCategoryId;
Modified: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml?rev=1082041&r1=1082040&r2=1082041&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml
(original) +++
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml Wed Mar
16 03:39:49 2011 @@ -3076,6 +3076,12 @@ under the
License. <response name="error" type="view"
value="EditProductPromoContent"/>
</request-map>
+ <request-map uri="getChild">
+ <security auth="false" https="true"/>
+ <event type="java" path="org.ofbiz.product.category.CategoryServices"
invoke="getChildCategoryTree"/>
+ <response name="success" type="none"/>
+ </request-map>
+
<!-- View Mappings -->
<view-map name="main" type="screen"
page="component://product/widget/catalog/CommonScreens.xml#main"/>
Modified:
ofbiz/trunk/applications/product/webapp/catalog/category/CategoryTree.ftl
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/category/CategoryTree.ftl?rev=1082041&r1=1082040&r2=1082041&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/webapp/catalog/category/CategoryTree.ftl
(original) +++
ofbiz/trunk/applications/product/webapp/catalog/category/CategoryTree.ftl Wed
Mar 16 03:39:49 2011 @@ -16,66 +16,31 @@ KIND,
either express or implied. See th
specific language governing permissions and limitations
under the License.
-->
-<script language="javascript" type="text/javascript"
src="<@ofbizContentUrl>/images/jquery/ui/development-bundle/external/jquery.cookie.js</@ofbizContentUrl>"></script>
-<script language="javascript" type="text/javascript"
src="<@ofbizContentUrl>/images/jquery/plugins/jsTree/jquery.jstree.js</@ofbizContentUrl>"></script>
-<script type="application/javascript">
-<#-- some labels are not unescaped in the JSON object so we have to do this
manuely -->
+<script type="text/javascript">
+<#-- some labels are not unescaped in the JSON object so we have to do this
manualy -->
function unescapeHtmlText(text) {
return jQuery('<div />').html(text).text()
}
-
-createTree();
+
+jQuery(window).load(createTree());
<#-- creating the JSON Data -->
var rawdata = [
- <#if (prodCatalogList?has_content)>
- <@fillCatalogTree prodCatalogs = prodCatalogList/>
- </#if>
-
- <#macro fillCatalogTree prodCatalogs>
- <#if (prodCatalogs?has_content)>
- <#list prodCatalogs as catalog>
- <#assign catalogId = catalog.prodCatalogId/>
- <#if !catalogName?has_content>
-
- </#if>
- <#assign categoryList = catalog.rootCategoryList/>
- {
- <#if catalogId?has_content>
- "data": {"title" : unescapeHtmlText("<#if
catalog.catalogName?has_content>${catalog.catalogName}<#else>${catalogId}</#if>
<#if
catalog.catalogName?has_content>[${catalogId}]</#if>"), "attr": {"href":
"<@ofbizUrl>/EditProdCatalog?prodCatalogId=${catalogId}</@ofbizUrl>", "onClick"
:
"callDocument('<@ofbizUrl>/EditProdCatalog?prodCatalogId=${catalogId}</@ofbizUrl>');"}},
- "attr": {"id" : "${catalogId}", "rel" : "root"},
-
- </#if>
- <#if categoryList?has_content>
- "children": [
- <@fillCategoryTree childCategoryList = categoryList/>
- ]
- </#if>
- <#if catalog_has_next>
- },
- <#else>
- }
- </#if>
- </#list>
- </#if>
- </#macro>
+ <#if (completedTree?has_content)>
+ <@fillTree rootCat = completedTree/>
+ </#if>
- <#macro fillCategoryTree childCategoryList>
- <#if childCategoryList?has_content>
- <#list childCategoryList as childCategory>
+ <#macro fillTree rootCat>
+ <#if (rootCat?has_content)>
+ <#list rootCat as root>
{
- <#local productCategoryId =
childCategory.productCategoryId/>
- <#local childCategorys =
Static["org.ofbiz.product.category.CategoryWorker"].getRelatedCategoriesRet(request,
"childCategoryList", productCategoryId,
true)>
- "data": {"title" : unescapeHtmlText("<#if
childCategory.categoryName?has_content>${childCategory.categoryName}<#else>${productCategoryId}</#if>
<#if
childCategory.categoryName?has_content>[${productCategoryId}]</#if>"), "attr":
{"href":
"<@ofbizUrl>/EditCategory?productCategoryId=${productCategoryId}</@ofbizUrl>",
"onClick" :
"callDocument('<@ofbizUrl>/EditCategory?productCategoryId=${productCategoryId}</@ofbizUrl>');"}},
- "attr": {"id" : "${productCategoryId}", "rel" :
"CATEGORY"},
-
- <#if childCategoryList?has_content>
- "children": [
- <@fillCategoryTree childCategoryList =
childCategorys/>
- ]
+ "data": {"title" : unescapeHtmlText("<#if
root.categoryName?exists>${root.categoryName?js_string}
[${root.productCategoryId}]<#else>${root.productCategoryId?js_string}</#if>"), "attr":
{"onClick" :
"window.location.href='<@ofbizUrl>/EditProdCatalog?prodCatalogId=${root.productCategoryId}</@ofbizUrl>';
return false;"}}, +
"attr": {"id" : "${root.productCategoryId}", "rel" : "root", "isCatalog" :
"${root.isCatalog?string}"} + <#if
root.child?exists> + ,"state" : "closed"
</#if>
- <#if childCategory_has_next>
+ <#if root_has_next>
},
<#else>
}
@@ -84,33 +49,39 @@ var rawdata = [
</#if>
</#macro>
];
-
-
<#-------------------------------------------------------------------------------------create
Tree-->
+ <#-- create Tree-->
function createTree() {
jQuery(function () {
- <#if !openTree>
+ <#-- reset the tree when user browsing out of scope of catalog manager
-->
+ <#if stillInCatalogManager>
$.cookie('jstree_select', null);
$.cookie('jstree_open', null);
<#else>
- $.cookie("jstree_select", "${productCategoryId}");
+ <#-- Coloring the category when type the product categoryId manualy at
the url bar -->
+ $.cookie('jstree_select', "<#if
productCategoryId?exists>${productCategoryId}<#elseif
prodCatalogId?exists>${prodCatalogId}<#elseif
showProductCategoryId?exists>${showProductCategoryId}</#if>"); </#if>
jQuery("#tree").jstree({
- "plugins" : [ "themes", "json_data", "cookies", "ui", "types"],
+ "plugins" : [ "themes", "json_data","ui" ,"cookies", "types"],
"json_data" : {
- "data" : rawdata
+ "data" : rawdata,
+ "ajax" : { "url" : "<@ofbizUrl>getChild</@ofbizUrl>", "type" :
"POST",
+ "data" : function (n) {
+ return {
+ "isCatalog" : n.attr ?
n.attr("isCatalog").replace("node_","") : 1 ,
+ "productCategoryId" : n.attr ?
n.attr("id").replace("node_","") : 1
+ };
+ }
+ }
},
"themes" : {
"icons" : true
},
- "cookies" : {
- "save_opened" : false
- },
"types" : {
"valid_children" : [ "root" ],
"types" : {
"CATEGORY" : {
- "icon" : {
+ "icon" : {
"image" :
"/images/jquery/plugins/jsTree/themes/apple/d.png",
"position" : "10px40px"
}
@@ -118,27 +89,8 @@ var rawdata = [
}
}
});
-
});
-
- }
-
- function callDocument(url) {
- $(location).attr('href', url);
}
-
</script>
<div id="tree"></div>
-<style type="text/css">
- .jstree-default a
- {
- white-space:normal !important;
- height: auto;
- }
- .jstree-default .jstree-leaf > ins
- {
- background-position:-36px 0;
- vertical-align: top;
- }
-</style>
Modified: ofbiz/trunk/applications/product/widget/catalog/CommonScreens.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/CommonScreens.xml?rev=1082041&r1=1082040&r2=1082041&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/widget/catalog/CommonScreens.xml (original) +++
ofbiz/trunk/applications/product/widget/catalog/CommonScreens.xml Wed Mar 16
03:39:49 2011 @@ -41,6 +41,10 @@ under the License.
<set field="applicationMenuName" value="CatalogAppBar"
global="true"/>
<set field="applicationMenuLocation"
value="component://product/widget/catalog/CatalogMenus.xml" global="true"/>
<set field="applicationTitle"
value="${uiLabelMap.ProductCatalogManagerApplication}" global="true"/>
+ <set field="layoutSettings.javaScripts[+0]"
value="/images/jquery/ui/development-bundle/external/jquery.cookie.js"
global="true"/> + <set
field="layoutSettings.javaScripts[+0]"
value="/images/jquery/plugins/jsTree/jquery.jstree.js" global="true"/> +
<set field="layoutSettings.javaScripts[+0]" value="/images/jquery/jquery-1.4.2.min.js"
global="true"/> + <set
field="layoutSettings.styleSheets[+0]" value="/images/catalog/categorytree.css"
global="true"/> </actions>
<widgets>
<include-screen name="ApplicationDecorator"
location="component://commonext/widget/CommonScreens.xml"/>
@@ -343,7 +347,6 @@ under the License.
<screen name="categorytree">
<section>
<actions>
- <set field="layoutSettings.javaScripts[+0]"
value="/images/jquery/jquery-1.4.2.min.js" global="true"/>
<script
location="component://product/webapp/catalog/WEB-INF/actions/category/CategoryTree.groovy"></script>
</actions>
<widgets>
Added: ofbiz/trunk/framework/images/webapp/images/catalog/categorytree.css
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/catalog/categorytree.css?rev=1082041&view=auto
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/catalog/categorytree.css (added)
+++ ofbiz/trunk/framework/images/webapp/images/catalog/categorytree.css Wed Mar
16 03:39:49 2011
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+/* THE CUSTOM CSS FOR AJUST THE CATEGORY TREE */
+.jstree-default a {
+white-space:normal !important;
+height: auto;
+}
+.jstree-default .jstree-leaf > ins {
+background-position:-36px 0;
+vertical-align: top;
+}
Propchange: ofbiz/trunk/framework/images/webapp/images/catalog/categorytree.css
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ofbiz/trunk/framework/images/webapp/images/catalog/categorytree.css
------------------------------------------------------------------------------
svn:keywords = "Date Rev Author URL Id"
Propchange: ofbiz/trunk/framework/images/webapp/images/catalog/categorytree.css
------------------------------------------------------------------------------
svn:mime-type = text/css