You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by el...@apache.org on 2006/10/04 06:33:34 UTC

svn commit: r452723 - in /incubator/roller/trunk: src/org/apache/roller/business/hibernate/ src/org/apache/roller/model/ src/org/apache/roller/pojos/ src/org/apache/roller/ui/authoring/struts/actions/ src/org/apache/roller/ui/authoring/struts/formbeans...

Author: eliast
Date: Tue Oct  3 21:33:33 2006
New Revision: 452723

URL: http://svn.apache.org/viewvc?view=rev&rev=452723
Log:
Added support for tag aggregate table by adding getAddedTags() and getRemovedTags() to WeblogEntryData bean.

- Refactored getTags() method in WeblogManager to reflect latest design.
- Added support for keeping track of tag changes to WeblogEntryData
- Added support for filtering based on tags in Entry Management UI
- Added getTags() and getHotTags() to Site and Page Model
- Added #showTagCloud and #showEntryTags($entry) macros to weblog.vm
- Updated frontpage theme to use new macros

Also tested to make sure we support unicode in all aspects of tagging.

Modified:
    incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java
    incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java
    incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java
    incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTagAggregateData.java
    incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryManagementAction.java
    incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryManagementForm.java
    incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java
    incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java
    incubator/roller/trunk/web/WEB-INF/velocity/weblog.vm
    incubator/roller/trunk/web/themes/basic/_day.vm
    incubator/roller/trunk/web/themes/frontpage/Weblog.vm
    incubator/roller/trunk/web/themes/frontpage/tags.vm

Modified: incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java Tue Oct  3 21:33:33 2006
@@ -46,6 +46,8 @@
 import org.apache.roller.pojos.WeblogCategoryAssoc;
 import org.apache.roller.pojos.WeblogCategoryData;
 import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.pojos.WeblogEntryTagData;
+import org.apache.roller.pojos.WeblogTagAggregateData;
 import org.apache.roller.pojos.WebsiteData;
 import org.apache.roller.util.DateUtil;
 import org.apache.roller.util.Utilities;
@@ -57,6 +59,7 @@
 import org.hibernate.criterion.Junction;
 import org.hibernate.criterion.MatchMode;
 import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Restrictions;
 
 
 /**
@@ -193,8 +196,18 @@
         if (entry.getAnchor() == null || entry.getAnchor().trim().equals("")) {
             entry.setAnchor(this.createAnchor(entry));
         }
+                
+        for(Iterator it = entry.getAddedTags().iterator(); it.hasNext();) {
+            String name = (String) it.next();
+            updateTagCount(name, entry.getWebsite(), 1);
+        }
         
-        this.strategy.store(entry);
+        for(Iterator it = entry.getRemovedTags().iterator(); it.hasNext();) {
+            String name = (String) it.next();
+            updateTagCount(name, entry.getWebsite(), -1);
+        }  
+        
+        this.strategy.store(entry);        
         
         // update weblog last modified date.  date updated by saveWebsite()
         if(entry.isPublished()) {
@@ -239,6 +252,14 @@
             this.strategy.remove((CommentData) commentsIT.next());
         }
         
+        // remove tags aggregates
+        if(entry.getTagSet() != null) {
+            for(Iterator it = entry.getTagSet().iterator(); it.hasNext(); ) {
+                WeblogEntryTagData tag = (WeblogEntryTagData) it.next();
+                updateTagCount(tag.getName(), entry.getWebsite(), -1);
+            }
+        }
+        
         // remove entry
         this.strategy.remove(entry);
         
@@ -1201,8 +1222,7 @@
         }
     }   
     
-    public List getTags(Date startDate, Date endDate, WebsiteData website,
-            UserData user, String sortBy, int limit)
+    public List getTags(WebsiteData website, String sortBy, String startsWith, int limit)
             throws RollerException {
         try {
             List results = new ArrayList();
@@ -1211,26 +1231,24 @@
                     .getSession();
             
             if (sortBy != null && sortBy.equals("count")) {
-                sortBy = "col_1_0_ desc"; 
+                sortBy = "a.count desc"; 
             } else {
-                sortBy = "t.name";
+                sortBy = "a.name";
             }
-
+            
             StringBuffer queryString = new StringBuffer();
-            queryString.append("select t.name, count(t.name) ");
-            queryString.append("from WeblogEntryTagData t ");
-            queryString.append("where t.time between ? and ? ");
+            queryString.append("select a.name, a.count ");
+            queryString.append("from WeblogTagAggregateData a where ");
             if (website != null)
-                queryString.append("and t.website.id = '" + website.getId()
-                        + "' ");
-            if (user != null)
-                queryString.append("and t.user.id = '" + user.getId() + "' ");
-            queryString.append("group by t.name ");
+                queryString.append("a.website.id = '" + website.getId() + "' ");
+            else
+                queryString.append("a.website = NULL ");
+            if (startsWith != null && startsWith.length() > 0)
+                queryString.append("and a.name like '" + startsWith + "%' ");
+            
             queryString.append("order by " + sortBy);
 
             Query query = session.createQuery(queryString.toString());
-            query.setTimestamp(0, DateUtil.getStartOfDay(startDate));
-            query.setTimestamp(1, DateUtil.getEndOfDay(endDate));
             if (limit > 0)
                 query.setMaxResults(limit);
 
@@ -1251,4 +1269,66 @@
     }
     
 
+    public void updateTagCount(String name, WebsiteData website, int amount) throws RollerException {
+        
+        Session session = ((HibernatePersistenceStrategy) strategy)
+        .getSession();
+        
+        if(amount == 0) {
+            throw new RollerException("Tag increment amount cannot be zero.");
+        }
+        
+        if(website == null) {
+            throw new RollerException("Website cannot be NULL.");
+        }
+                        
+        Junction conjunction = Expression.conjunction();
+        conjunction.add(Expression.eq("name", name));
+        conjunction.add(Expression.eq("website", website));
+
+        Criteria criteria = session.createCriteria(WeblogTagAggregateData.class)
+            .add(conjunction);
+        
+        WeblogTagAggregateData weblogTagData = (WeblogTagAggregateData) criteria.uniqueResult();
+
+        conjunction = Expression.conjunction();
+        conjunction.add(Restrictions.eq("name", name));
+        conjunction.add(Restrictions.isNull("website"));
+        
+        criteria = session.createCriteria(WeblogTagAggregateData.class)
+            .add(conjunction);
+    
+        WeblogTagAggregateData siteTagData = (WeblogTagAggregateData) criteria.uniqueResult();
+        
+        // create it only if we are going to need it.
+        if(weblogTagData == null && amount > 0) {
+            weblogTagData = new WeblogTagAggregateData(null, website, name, 0);
+        }
+        
+        // create it only if we are going to need it.        
+        if(siteTagData == null && amount > 0) {
+            siteTagData = new WeblogTagAggregateData(null, null, name, 0);
+        }
+        
+        // 
+        if(weblogTagData != null) {
+            if ((amount + weblogTagData.getCount()) <= 0) {
+                if(weblogTagData.getId() != null)
+                    session.delete(weblogTagData);
+            } else {
+                weblogTagData.setCount(weblogTagData.getCount() + amount);
+                session.save(weblogTagData);
+            }
+        }        
+        
+        if(siteTagData != null) {
+            if ((amount + siteTagData.getCount()) <= 0) {
+                if(siteTagData.getId() != null)
+                    session.delete(siteTagData);
+            } else {
+                siteTagData.setCount(siteTagData.getCount() + amount);
+                session.save(siteTagData);
+            }
+        }   
+    }
 }

Modified: incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java Tue Oct  3 21:33:33 2006
@@ -27,6 +27,7 @@
 import org.apache.roller.pojos.UserData;
 import org.apache.roller.pojos.WeblogCategoryData;
 import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.pojos.WeblogEntryTagData;
 import org.apache.roller.pojos.WebsiteData;
 
 
@@ -383,16 +384,28 @@
     
     /**
      * Get list of TagStat. There's no offset/length params just a limit.
-     * @param startDate     Start date or null for not start date.
-     * @param endDate       End date or null for no end date.
      * @param website       Weblog or null to get for all weblogs.
-     * @param user          User or null to get for all users.
-     * @param sortBy        Sort by either 'name' or 'count' (null for name)  
+     * @param sortBy        Sort by either 'name' or 'count' (null for name)
+     * @param startsWith    Prefix for tags to be returned (null or a string of length > 0)
      * @param limit         Max TagStats to return (or -1 for no limit)
      * @return
      * @throws RollerException
      */
-    public List getTags(Date startDate, Date endDate, WebsiteData website,
-            UserData user, String sortBy, int limit)
-            throws RollerException;    
+    public List getTags(WebsiteData website, String sortBy, 
+            String startsWith, int limit)
+            throws RollerException;
+    
+    /**
+     * This method maintains the tag aggregate table up-to-date with total counts. More
+     * specifically every time this method is called it will act upon exactly two rows
+     * in the database (tag,website,count), one with website matching the argument passed
+     * and one where website is null. If the count ever reaches zero, the row must be deleted.
+     * 
+     * @param name      The tag name
+     * @param website   The website to used when updating the stats.
+     * @param amount    The amount to increment the tag count (it can be positive or negative).
+     * @throws RollerException
+     */
+    public void updateTagCount(String name, WebsiteData website, int amount)
+        throws RollerException;
 }

Modified: incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java Tue Oct  3 21:33:33 2006
@@ -99,6 +99,8 @@
     private Set attSet = new TreeSet();
     
     private Set tagSet = new HashSet();
+    private Set removedTags = new HashSet();
+    private Set addedTags = new HashSet();
     
     //----------------------------------------------------------- Construction
     
@@ -617,15 +619,22 @@
      private void setTagSet(Set tagSet) throws RollerException
      {
          this.tagSet = tagSet;
+         this.removedTags = new HashSet();
+         this.addedTags = new HashSet();
      }    
      
-     public void addTag(String name) {
+     public void addTag(String name) throws RollerException {
+        name = stripInvalidTagChars(name);
+        name = name.toLowerCase().trim();
+        if(name.length() == 0)
+            return;
+        
         for (Iterator it = tagSet.iterator(); it.hasNext();) {
             WeblogEntryTagData tag = (WeblogEntryTagData) it.next();
-            if(tag.getName().equals(name))
+            if (tag.getName().equals(name))
                 return;
         }
-        
+
         WeblogEntryTagData tag = new WeblogEntryTagData();
         tag.setName(stripInvalidTagChars(name));
         tag.setUser(getCreator());
@@ -633,18 +642,30 @@
         tag.setWeblogEntry(this);
         tag.setTime(getUpdateTime());
         tagSet.add(tag);
+        
+        addedTags.add(name);
     }
 
-    public void removeTag(String name) {  
+    public void removeTag(String name) throws RollerException {
         name = stripInvalidTagChars(name);
         for (Iterator it = tagSet.iterator(); it.hasNext();) {
             WeblogEntryTagData tag = (WeblogEntryTagData) it.next();
-            if(tag.getName().equals(name))
+            if (tag.getName().equals(name)) {
+                removedTags.add(name);
                 it.remove();
+            }
         }
     }
+    
+    public Set getAddedTags() {
+        return addedTags;
+    }
+    
+    public Set getRemovedTags() {
+        return removedTags;
+    }
 
-    public void updateTags(List tags) {
+    public void updateTags(List tags) throws RollerException {
         HashSet newTags = new HashSet(tags);
         
         HashSet removeTags = new HashSet();
@@ -704,7 +725,7 @@
         return sb.toString();
     }
 
-    public void setTags(String tags) {
+    public void setTags(String tags) throws RollerException {
         if (tags == null) {
             tagSet.clear();
             return;

Modified: incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTagAggregateData.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTagAggregateData.java?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTagAggregateData.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/pojos/WeblogTagAggregateData.java Tue Oct  3 21:33:33 2006
@@ -79,7 +79,7 @@
     /**
      * @roller.wrapPojoMethod type="pojo"
      * @ejb:persistent-field
-     * @hibernate.many-to-one column="websiteid" cascade="none" not-null="true"
+     * @hibernate.many-to-one column="websiteid" cascade="none" not-null="false"
      */
     public WebsiteData getWebsite() {
         return this.website;

Modified: incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryManagementAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryManagementAction.java?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryManagementAction.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/actions/WeblogEntryManagementAction.java Tue Oct  3 21:33:33 2006
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.text.DateFormat;
 import java.text.ParseException;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -32,6 +33,7 @@
 import org.apache.struts.action.ActionForward;
 import org.apache.struts.action.ActionMapping;
 import org.apache.struts.actions.DispatchAction;
+import org.apache.commons.lang.StringUtils;
 import org.apache.roller.RollerException;
 import org.apache.roller.model.RollerFactory;
 import org.apache.roller.model.WeblogManager;
@@ -146,6 +148,11 @@
 
             this.status = "ALL".equals(queryForm.getStatus()) ? null: queryForm.getStatus();    
             this.maxEntries = maxEntries;
+            
+           String[] tagsarr = new String[0];
+           
+           if(queryForm.getTags() != null)
+               tagsarr = StringUtils.split(queryForm.getTags().toLowerCase(), ' ');
 
             entries = RollerFactory.getRoller().getWeblogManager().getWeblogEntries(
                     website,
@@ -153,10 +160,11 @@
                     startDate,
                     endDate,
                     category,
-                    null,
+                    Arrays.asList(tagsarr),
                     status,
                     queryForm.getSortby(),
-null,                     queryForm.getOffset(),
+                    null,
+                    queryForm.getOffset(),
                     queryForm.getCount() + 1);
            if (entries.size() > queryForm.getCount()) {
                more = true;

Modified: incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryManagementForm.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryManagementForm.java?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryManagementForm.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryManagementForm.java Tue Oct  3 21:33:33 2006
@@ -43,6 +43,7 @@
     private String mFileBy = "month";
     private String mExportFormat = "rss";
     private String mCategoryId = null;
+    private String mTags = "";
     private String mStatus = "ALL";
     private String mSortby = "updateTime";
     
@@ -66,6 +67,8 @@
         
         cal.set(Calendar.DAY_OF_MONTH, 1);
         mStartDateString = df.format( cal.getTime() );
+        
+        mTags = "";
     }
     
     /**
@@ -182,4 +185,13 @@
     public void setSortby(String sortby) {
         mSortby = sortby;
     }
+
+    public String getTags() {
+        return mTags;
+    }
+
+    public void setTags(String tags) {
+        mTags = tags;
+    }  
+    
 }

Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java Tue Oct  3 21:33:33 2006
@@ -18,11 +18,16 @@
 
 package org.apache.roller.ui.rendering.model; 
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
+import org.apache.roller.model.Roller;
+import org.apache.roller.model.RollerFactory;
+import org.apache.roller.model.WeblogManager;
 import org.apache.roller.pojos.WebsiteData;
 import org.apache.roller.pojos.wrapper.TemplateWrapper;
 import org.apache.roller.pojos.wrapper.WeblogCategoryDataWrapper;
@@ -266,4 +271,36 @@
         }
         return null;
     }
+    
+    /**
+     * @param sinceDay
+     * @return
+     */
+    public List getTags() {
+        List results = new ArrayList();
+        try {            
+            Roller roller = RollerFactory.getRoller();
+            WeblogManager wmgr = roller.getWeblogManager();
+            results = wmgr.getTags(weblog, null, null, -1);
+        } catch (Exception e) {
+            log.error("ERROR: fetching site tags list", e);
+        }
+        return results;
+    }
+    
+    /**
+     * @param sinceDay
+     * @return
+     */
+    public List getHotTags(int length) {
+        List results = new ArrayList();
+        try {            
+            Roller roller = RollerFactory.getRoller();
+            WeblogManager wmgr = roller.getWeblogManager();
+            results = wmgr.getTags(weblog, "count", null, length);
+        } catch (Exception e) {
+            log.error("ERROR: fetching site tags list", e);
+        }
+        return results;
+    }      
 }

Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java Tue Oct  3 21:33:33 2006
@@ -481,18 +481,12 @@
      * @param sinceDay
      * @return
      */
-    public List getTags(
-            int sinceDays) {
+    public List getTags() {
         List results = new ArrayList();
-        Calendar cal = Calendar.getInstance();
-        cal.setTime(new Date());
-        cal.add(Calendar.DATE, -1 * sinceDays);
-        Date startDate = cal.getTime();
         try {            
             Roller roller = RollerFactory.getRoller();
             WeblogManager wmgr = roller.getWeblogManager();
-            results = wmgr.getTags(
-                    startDate, new Date(), null, null, null, -1);
+            results = wmgr.getTags(null, null, null, -1);
         } catch (Exception e) {
             log.error("ERROR: fetching site tags list", e);
         }
@@ -503,18 +497,12 @@
      * @param sinceDay
      * @return
      */
-    public List getHotTags(
-            int sinceDays, int length) {
+    public List getHotTags(int length) {
         List results = new ArrayList();
-        Calendar cal = Calendar.getInstance();
-        cal.setTime(new Date());
-        cal.add(Calendar.DATE, -1 * sinceDays);
-        Date startDate = cal.getTime();
         try {            
             Roller roller = RollerFactory.getRoller();
             WeblogManager wmgr = roller.getWeblogManager();
-            results = wmgr.getTags(
-                    startDate, new Date(), null, null, "count", length);
+            results = wmgr.getTags(null, "count", null, length);
         } catch (Exception e) {
             log.error("ERROR: fetching site tags list", e);
         }

Modified: incubator/roller/trunk/web/WEB-INF/velocity/weblog.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/velocity/weblog.vm?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/velocity/weblog.vm (original)
+++ incubator/roller/trunk/web/WEB-INF/velocity/weblog.vm Tue Oct  3 21:33:33 2006
@@ -789,6 +789,46 @@
 #end
 #end
 
+#** 
+Shows a Tag cloud for a given set of tags
+*#
+#macro(showTagCloud $tags)
+
+  <center>
+					  #set ( $minSize = 12 )
+					  #set ( $maxSize = 28 )
+					
+					  #set ( $max = 0 )
+					  #foreach ( $tag in $tags )
+					    #if ( $tag.count > $max )
+					      #set ( $max = $tag.count )
+					    #end
+					  #end
+					
+					  #set ( $step = $max / ($maxSize - $minSize) )
+					  
+					  #set ( $step = $max / ($maxSize - $minSize) )
+  #if ( $step < 1 )
+  	  #set ( $step = 1 )
+  #end
+					  #foreach ($tag in $tags)
+					    #set( $size = $minSize + ($tag.count / $step)  )
+					    <span class="tag" style="font-size:${size}px"><a href="$url.tag($tag.name)" title="$tag.count">$tag.name</a></span>
+					  #end
+				  </center>
+
+#end
+
+#macro(showEntryTags $entry)
+  
+  #set ( $tags = $entry.tagSet )
+  Tags:&nbsp;
+  #foreach($tag in $tags)
+	    <a href="$url.tag($tag.name)" title="$tag.count" rel="tag">$tag.name</a>&nbsp;
+  #end
+
+#end
+
 
 
 

Modified: incubator/roller/trunk/web/themes/basic/_day.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/themes/basic/_day.vm?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/web/themes/basic/_day.vm (original)
+++ incubator/roller/trunk/web/themes/basic/_day.vm Tue Oct  3 21:33:33 2006
@@ -15,6 +15,9 @@
                 $entry.displayContent($url.entry($entry.anchor))
             #end
         </p>
+        <p class="entryTags">
+           #showEntryTags($entry)
+        </p>
         <p class="entryInfo">
             Posted at <a href="$url.entry($entry.anchor)">$utils.formatDate($entry.pubTime, "hh:mma MMM dd, yyyy")</a>
             by $entry.creator.fullName in <span class="category">$entry.category.name</span> &nbsp;|&nbsp;

Modified: incubator/roller/trunk/web/themes/frontpage/Weblog.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/themes/frontpage/Weblog.vm?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/web/themes/frontpage/Weblog.vm (original)
+++ incubator/roller/trunk/web/themes/frontpage/Weblog.vm Tue Oct  3 21:33:33 2006
@@ -167,42 +167,14 @@
             <div class="sidebarBodyHead">
                 <div class="menu-tr">
                     <div class="menu-tl">
-                       <h3>Hot Tags (past week)</h3>		
+                       <h3>Hot Tags</h3>		
                     </div>
                 </div>
             </div>	
 
             <div class="sidebarBody">  
-                
-				  <style>
-				  span.tag a { color: #ad3537;; text-decoration: none; padding: 3px; }
-				  </style>
-				
-				  <center>
-					  #set($tags = $site.getHotTags(7, $maxResults))
-					  
-					  #set ( $minSize = 12 )
-					  #set ( $maxSize = 28 )
-					
-					  #set ( $max = 0 )
-					  #foreach ( $tag in $tags )
-					    #if ( $tag.count > $max )
-					      #set ( $max = $tag.count )
-					    #end
-					  #end
-					
-					  #set ( $step = $max / ($maxSize - $minSize) )
-					  
-					  #set ( $step = $max / ($maxSize - $minSize) )
-                      #if ( $step < 1 )
-                        #set ( $step = 1 )
-                      #end
-					  #foreach ($tag in $tags)
-					    #set( $size = $minSize + ($tag.count / $step)  )
-					    <span class="tag" style="font-size:${size}px"><a href="$url.tag($tag.name)">$tag.name</span></a>
-					  #end
-				  </center>
-            </div>
+		      #showTagCloud($site.getHotTags($maxResults))
+		    </div>
             
 
         </div>

Modified: incubator/roller/trunk/web/themes/frontpage/tags.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/themes/frontpage/tags.vm?view=diff&rev=452723&r1=452722&r2=452723
==============================================================================
--- incubator/roller/trunk/web/themes/frontpage/tags.vm (original)
+++ incubator/roller/trunk/web/themes/frontpage/tags.vm Tue Oct  3 21:33:33 2006
@@ -37,39 +37,11 @@
             <table class="menuItemTable" cellspacing="0"><tbody><tr>
             <td class="padleft"></td></tr></tbody></table>
 
-            <div id="tabContent">
-
-				<div id='cloud' style="overflow: hidden; padding: 30px" >
-				  <style>
-				  span.tag a { color: #ad3537;; text-decoration: none; padding: 3px; }
-				  </style>
-				
-				  <center>
-					  #set ($tags = $site.getTags(90))
-					  
-					  #set ( $minSize = 14 )
-					  #set ( $maxSize = 50 )
-					
-					  #set ( $max = 0 )
-					  #foreach ( $tag in $tags )
-					    #if ( $tag.count > $max )
-					      #set ( $max = $tag.count )
-					    #end
-					  #end
-					
-					  #set ( $step = $max / ($maxSize - $minSize) )
-                      #if ( $step < 1 )
-                        #set ( $step = 1 )
-                      #end
-					  					
-					  #foreach ($tag in $tags)
-					    #set( $size = $minSize + ($tag.count / $step)  )
-					    <span class="tag" style="font-size:${size}px"><a href="$url.tag($tag.name)">$tag.name</span></a>
-					  #end
-				  </center>
-				  <br/>
-				</div>
-
+            <div id="tabContent">              
+              <div id='cloud' style="overflow: hidden; padding: 30px" >
+              	#showTagCloud($site.getTags())
+                <br/>
+              </div>
             </div>                        
         </div> 
     </div>