Author: hansbak
Date: Thu Dec 29 07:05:42 2011 New Revision: 1225452 URL: http://svn.apache.org/viewvc?rev=1225452&view=rev Log: add a tagcloud demo to the ecommerce home page, contribution of tom of antwebsystems.com Added: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/catalog/PopularTags.groovy (with props) ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/populartags.ftl (with props) Modified: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml ofbiz/trunk/specialpurpose/ecommerce/widget/CatalogScreens.xml ofbiz/trunk/specialpurpose/ecommerce/widget/CommonScreens.xml 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=1225452&r1=1225451&r2=1225452&view=diff ============================================================================== --- ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml (original) +++ ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/controller.xml Thu Dec 29 07:05:42 2011 @@ -3035,8 +3035,8 @@ under the License. <request-map uri="updateProductTag"> <security https="true" auth="true"/> - <event type="service" path="" invoke="updateProductKeyword"/> - <response name="success" type="view" value="EditProductTag"/> + <event type="service-multi" path="" invoke="updateProductKeyword"/> + <response name="success" type="request-redirect" value="EditProductTag"/> <response name="error" type="view" value="EditProductTag"/> </request-map> <!-- end of request mappings --> Modified: ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml?rev=1225452&r1=1225451&r2=1225452&view=diff ============================================================================== --- ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml (original) +++ ofbiz/trunk/applications/product/widget/catalog/ProductForms.xml Thu Dec 29 07:05:42 2011 @@ -2200,8 +2200,8 @@ under the License. <field name="submitButton" title="${uiLabelMap.CommonUpdate}" widget-style="smallSubmit"><submit button-type="button"/></field> </form> - <form name="ListProductTag" type="list" target="updateProductTag" title="" list-name="" - odd-row-style="alternate-row" default-table-style="basic-table" paginate-target="EditProductTag"> + <form name="ListProductTag" type="multi" target="updateProductTag" title="" list-name="" + odd-row-style="alternate-row" default-table-style="basic-table" paginate-target="EditProductTag" separate-columns="true"> <actions> <entity-condition entity-name="ProductKeyword"> <condition-list combine="and"> @@ -2213,12 +2213,12 @@ under the License. </entity-condition> </actions> <field name="keywordTypeId"><hidden/></field> - <field name="productId" sort-field="true"> - <hyperlink also-hidden="false" description="${productId}" target="EditProduct"> + <field name="productId"> + <hyperlink target="EditProduct" description="${productId}"> <parameter param-name="productId"/> </hyperlink> </field> - <field name="keyword" title="${uiLabelMap.ProductTag}" sort-field="true"><display/></field> + <field name="keyword" title="${uiLabelMap.ProductTag}"><display/></field> <field name="statusId"> <drop-down allow-empty="true"> <entity-options entity-name="StatusItem" key-field-name="statusId" description="${description}"> @@ -2227,6 +2227,7 @@ under the License. </entity-options> </drop-down> </field> + <field name="_rowSubmit" title="${uiLabelMap.CommonSelect}"><check/></field> <field name="submitButton" title="${uiLabelMap.CommonUpdate}"><submit button-type="button"/></field> </form> </forms> Modified: ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml?rev=1225452&r1=1225451&r2=1225452&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml Thu Dec 29 07:05:42 2011 @@ -3369,6 +3369,9 @@ <value xml:lang="zh">è°æ¥</value> <value xml:lang="zh_TW">調æ¥</value> </property> + <property key="EcommerceTags"> + <value xml:lang="en">Tag Cloud</value> + </property> <property key="EcommerceTakeSurvey"> <value xml:lang="da">Foretag rundspørge</value> <value xml:lang="de">An Befragung teilnehmen</value> Modified: ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties?rev=1225452&r1=1225451&r2=1225452&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties (original) +++ ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties Thu Dec 29 07:05:42 2011 @@ -38,3 +38,8 @@ janrain.baseUrl= # -- Janrain application name janrain.appName= + +# Tag Cloud +tagcloud.min.fontsize = 8 +tagcloud.max.fontsize = 14 +tagcloud.limit = 99 Modified: ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml?rev=1225452&r1=1225451&r2=1225452&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml Thu Dec 29 07:05:42 2011 @@ -1662,4 +1662,29 @@ under the License. <ProductFacilityLocation productId="RentalShip" facilityId="WebStoreWarehouse" locationSeqId="TLTLTLUL01" minimumStock="5" moveQuantity="20"/> <InventoryItem facilityId="WebStoreWarehouse" inventoryItemId="InventoryRentalShip" inventoryItemTypeId="NON_SERIAL_INV_ITEM" datetimeReceived="2008-08-01 08:00:00.000" productId="RentalShip" ownerPartyId="Company" currencyUomId="USD" unitCost="2.4"/> <InventoryItemDetail inventoryItemId="InventoryRentalShip" inventoryItemDetailSeqId="0001" effectiveDate="2011-09-01 12:00:00.0" availableToPromiseDiff="10" quantityOnHandDiff="10" accountingQuantityDiff="10"/> + + <!-- Demo product tags --> + <ProductKeyword productId="GZ-1000" keyword="gizmos" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-1001" keyword="gizmos" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-2002" keyword="gizmos" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-2644" keyword="gizmos" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-5005" keyword="gizmos" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="WG-1111" keyword="red" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-1004" keyword="red" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-2644" keyword="red" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="SV-1001" keyword="demonstration" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="SV-1000" keyword="demonstration" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="CFSV1001" keyword="demonstration" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="WG-5569" keyword="widget" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="WG-9943" keyword="widget" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-1000" keyword="small" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-2644" keyword="small" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="SV-1001" keyword="service" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="CFSV1001" keyword="service" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-1000" keyword="tiny" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-8544" keyword="big" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="WG-9943" keyword="black" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="WG-1111" keyword="chrome" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + <ProductKeyword productId="GZ-1006" keyword="standard" keywordTypeId="KWT_TAG" statusId="KW_APPROVED"/> + </entity-engine-xml> Added: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/catalog/PopularTags.groovy URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/catalog/PopularTags.groovy?rev=1225452&view=auto ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/catalog/PopularTags.groovy (added) +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/catalog/PopularTags.groovy Thu Dec 29 07:05:42 2011 @@ -0,0 +1,81 @@ +/* + * 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. + */ + +import java.util.List; +import org.ofbiz.entity.*; +import org.ofbiz.entity.condition.*; +import org.ofbiz.entity.util.*; +import org.ofbiz.entity.util.EntityUtil; +import org.ofbiz.entity.transaction.* +import org.ofbiz.base.util.*; +import org.ofbiz.base.util.string.*; +import org.ofbiz.content.content.*; +import org.apache.commons.lang.StringEscapeUtils; + +int minFontSize = Integer.parseInt(UtilProperties.getPropertyValue("ecommerce.properties", "tagcloud.min.fontsize")); +int maxFontSize = Integer.parseInt(UtilProperties.getPropertyValue("ecommerce.properties", "tagcloud.max.fontsize")); +int limitTagCloud = Integer.parseInt(UtilProperties.getPropertyValue("ecommerce.properties", "tagcloud.limit")); + +tagCloudList = [] as LinkedList; +tagList = [] as LinkedList; + +keywordConditions = EntityCondition.makeCondition([keywordTypeId : "KWT_TAG", statusId : "KW_APPROVED"], EntityOperator.AND); +keywordOrder = ["keyword"]; +keywordFields = ["keyword", "keywordTypeId", "statusId"] as Set; +keywordFindOptions = new EntityFindOptions(); +keywordFindOptions.setDistinct(true); +productKeywords = delegator.findList("ProductKeyword", keywordConditions, keywordFields, keywordOrder, keywordFindOptions, false); + +if (UtilValidate.isNotEmpty(productKeywords)) { + productKeywords.each { productKeyword -> + productTags = delegator.findByAnd("ProductKeyword", ["keyword": productKeyword.keyword, "keywordTypeId" : "KWT_TAG", "statusId" : "KW_APPROVED"]); + searchResult = [:]; + searchResult.tag = productKeyword.keyword; + searchResult.countTag = productTags.size(); + tagList.add(searchResult); + } +} + +if (tagList) { + int tag = 0; + tagList.sort{ a,b -> b.countTag <=> a.countTag }; + if (tagList.size() < limitTagCloud) { + limitTagCloud = tagList.size(); + } + int maxResult = tagList[0].countTag; + int minResult = tagList[limitTagCloud - 1].countTag; + tagList.each { tagCloud -> + if (tag < limitTagCloud) { + tagCloudOfbizInfo = [:]; + double weight = 0; + if ((maxResult - minResult) > 0) { + weight = (tagCloud.countTag - minResult) / (maxResult - minResult); + } + double fontSize = minFontSize + ((maxFontSize - minFontSize) * weight); + tagCloudOfbizInfo.tag = tagCloud.tag; + tagCloudOfbizInfo.fontSize = fontSize; + tagCloudList.add(tagCloudOfbizInfo); + tag++; + } + } +} + +tagCloudList = tagCloudList.sort{it.tag} + +context.tagCloudList = tagCloudList; Propchange: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/catalog/PopularTags.groovy ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/catalog/PopularTags.groovy ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/catalog/PopularTags.groovy ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/populartags.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/populartags.ftl?rev=1225452&view=auto ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/populartags.ftl (added) +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/populartags.ftl Thu Dec 29 07:05:42 2011 @@ -0,0 +1,34 @@ +<#-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<#if tagCloudList?has_content> + <div id="populartags" class="screenlet"> + <div class="screenlet-title-bar"> + <ul> + <li class="h3">${uiLabelMap.EcommerceTags}</li> + </ul> + <br class="clear"/> + </div> + <div class="screenlet-body"> + <#list tagCloudList as tagCloud> + <a style="font-size: ${tagCloud.fontSize}pt;" href="<@ofbizUrl>tagsearch?SEARCH_STRING=${tagCloud.tag}&keywordTypeId=KWT_TAG&statusId=KW_APPROVED</@ofbizUrl>">${tagCloud.tag}</a> + </#list> + </div> + </div> +</#if> Propchange: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/populartags.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/populartags.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/catalog/populartags.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/trunk/specialpurpose/ecommerce/widget/CatalogScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/widget/CatalogScreens.xml?rev=1225452&r1=1225451&r2=1225452&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/widget/CatalogScreens.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/widget/CatalogScreens.xml Thu Dec 29 07:05:42 2011 @@ -588,4 +588,16 @@ under the License. </widgets> </section> </screen> + + <screen name="populartags"> + <section> + <actions> + <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/> + <script location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/catalog/PopularTags.groovy"/> + </actions> + <widgets> + <platform-specific><html><html-template location="component://ecommerce/webapp/ecommerce/catalog/populartags.ftl"/></html></platform-specific> + </widgets> + </section> + </screen> </screens> Modified: ofbiz/trunk/specialpurpose/ecommerce/widget/CommonScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/widget/CommonScreens.xml?rev=1225452&r1=1225451&r2=1225452&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/widget/CommonScreens.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/widget/CommonScreens.xml Thu Dec 29 07:05:42 2011 @@ -132,6 +132,7 @@ under the License. <include-screen name="minilastviewedproducts" location="component://ecommerce/widget/CatalogScreens.xml"/> <include-screen name="minilastproductsearches" location="component://ecommerce/widget/CatalogScreens.xml"/> <include-screen name="recentlyviewed" location="component://ecommerce/widget/ContentScreens.xml"/> + <include-screen name="populartags" location="component://ecommerce/widget/CatalogScreens.xml"/> </widgets> </section> </screen> |
Free forum by Nabble | Edit this page |