Anil,

This looks like a good fix which is long overdue, but I am wondering if using the weblog.dateCreated attribute is the best option. I may be wrong, but for some reason I remember us having a problem in the past with the dateCreated field being updated at some point(s) in the various upgrade processes from the early Roller days. If that's the case then it may be unreliable to use that column for upgrading users. We could probably work around that with a bit of upgrade logic which sets the weblog.dateCreated to the date of the oldest entry if the oldest entry is older than creation date.

Also, if for some reason someone post dates an entry to before the date they created a weblog then that would be a problem as well. It's pretty unlikely that would happen, but it's technically possible.

Those issues may not be likely enough to happen to be worth worrying about, but I wanted to mention it.

-- Allen


[EMAIL PROTECTED] wrote:
Author: gangolli
Date: Sat Dec  2 12:45:54 2006
New Revision: 481624

URL: http://svn.apache.org/viewvc?view=rev&rev=481624
Log:
Fixes for ROL-1145.  Don't link back in time beyond creation date of weblog 
(website).  Relies on creation date of weblog being set (non-null).  If it is 
null, at least limits stepping back beyond beginning of Java epoch (Jan 1, 1970 
UTC).

Modified:
    
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarModel.java
    
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarTag.java
    
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java
    
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
    
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java

Modified: 
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarModel.java
URL: 
http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarModel.java?view=diff&rev=481624&r1=481623&r2=481624
==============================================================================
--- 
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarModel.java
 (original)
+++ 
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarModel.java
 Sat Dec  2 12:45:54 2006
@@ -32,12 +32,20 @@
     public Date getDay();
public Date getNextMonth();
+
+    public Date getPrevMonth();
public String computePrevMonthUrl(); public String computeTodayMonthUrl(); public String computeNextMonthUrl();
+
+    /**
+     * Get the earliest month in which there could possibly be data.  For a 
weblog this
+     * is the beginning of the month containing the creation date.
+     */
+    public Date getInitialMonth();
/**
      * Create URL for use on edit-weblog page, preserves the request

Modified: 
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarTag.java
URL: 
http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarTag.java?view=diff&rev=481624&r1=481623&r2=481624
==============================================================================
--- 
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarTag.java
 (original)
+++ 
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/CalendarTag.java
 Sat Dec  2 12:45:54 2006
@@ -183,9 +183,11 @@
             pw.print("<tr>");
             pw.print("<td colspan=\"7\" align=\"center\" "+
                     "class=\"hCalendarMonthYearRow"+mClassSuffix+"\">");
-            pw.print("<a href=\"" + model.computePrevMonthUrl()
-            + "\" title=\"" + resources.getMessage(mLocale, "calendar.prev")
-            + "\" class=\"hCalendarNavBar\">&laquo;</a> ");
+            if (model.getPrevMonth().compareTo(model.getInitialMonth()) >= 0) {
+                pw.print("<a href=\"" + model.computePrevMonthUrl()
+                        + "\" title=\"" + resources.getMessage(mLocale, 
"calendar.prev")
+                        + "\" class=\"hCalendarNavBar\">&laquo;</a> ");
+            }
             pw.print( formatTitle.format(day) );
             if (todayCal.getTime().compareTo(model.getNextMonth()) >= 0) {
                 pw.print(" <a href=\"" + model.computeNextMonthUrl()

Modified: 
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java
URL: 
http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java?view=diff&rev=481624&r1=481623&r2=481624
==============================================================================
--- 
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java
 (original)
+++ 
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java
 Sat Dec  2 12:45:54 2006
@@ -87,7 +87,6 @@
protected void initDay(Date month) {
-        this.day = day;
         calendar = Calendar.getInstance(
                 weblog.getTimeZoneInstance(),
                 weblog.getLocaleInstance());
@@ -192,6 +191,13 @@
         nextCal.add( Calendar.MONTH, 1 );
         return getFirstDayOfMonth(nextCal).getTime();
     }
+
+    public Date getPrevMonth() {
+        Calendar prevCal = getCalendar();
+        prevCal.setTime( day );
+        prevCal.add( Calendar.MONTH, -1 );
+        return getFirstDayOfMonth(prevCal).getTime();
+    }
protected Calendar getFirstDayOfMonth(Calendar cal) {
         int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
@@ -215,7 +221,14 @@
         // and strip off last two digits to get a month URL
         return nextMonth;
     }
- +
+    public Date getInitialMonth() {
+        Calendar cal = getCalendar();
+        // if there is no dateCreated value, default to beginning of epoch.
+        cal.setTime(weblog.getDateCreated() != null ? weblog.getDateCreated() 
: new Date(0));
+        return getFirstDayOfMonth(cal).getTime();
+    }
+
     public String computePrevMonthUrl() {
         // Create yyyyMMdd dates for prev month, prev month and today
         Calendar prevCal = getCalendar();

Modified: 
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
URL: 
http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java?view=diff&rev=481624&r1=481623&r2=481624
==============================================================================
--- 
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
 (original)
+++ 
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
 Sat Dec  2 12:45:54 2006
@@ -94,6 +94,10 @@
         cal.set(Calendar.MINUTE, 59);
         cal.set(Calendar.SECOND, 59);
         prevDay = cal.getTime();
+        Date weblogInitialDate = weblog.getDateCreated() != null ? 
weblog.getDateCreated() : new Date(0);
+        if (DateUtil.getEndOfDay(prevDay,cal).before(weblogInitialDate)) {
+            prevDay = null;
+        }
     }
Modified: 
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java
URL: 
http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java?view=diff&rev=481624&r1=481623&r2=481624
==============================================================================
--- 
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java
 (original)
+++ 
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java
 Sat Dec  2 12:45:54 2006
@@ -29,9 +29,7 @@
 import org.apache.commons.collections.comparators.ReverseComparator;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.roller.business.Roller;
 import org.apache.roller.business.RollerFactory;
-import org.apache.roller.business.WeblogManager;
 import org.apache.roller.pojos.WeblogEntryData;
 import org.apache.roller.pojos.WebsiteData;
 import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
@@ -88,6 +86,11 @@
         cal.setTime(month);
         cal.add(Calendar.MONTH, -1);
         prevMonth = cal.getTime();
+        Date endOfPrevMonth = DateUtil.getEndOfMonth(prevMonth,cal) ;
+        Date weblogInitialDate = weblog.getDateCreated() != null ? 
weblog.getDateCreated() : new Date(0);
+        if (endOfPrevMonth.before(weblogInitialDate)) {
+            prevMonth = null;
+        }
     }
@@ -97,14 +100,12 @@
         cal.setTime(date);
         cal.add(Calendar.DATE, 1);
         date = cal.getTime();
-        Date startDate = DateUtil.getStartOfMonth(date, cal);;
-        Date endDate = DateUtil.getEndOfMonth(date, cal);;
+        Date startDate = DateUtil.getStartOfMonth(date, cal);
+        Date endDate = DateUtil.getEndOfMonth(date, cal);
if (entries == null) {
             entries = new TreeMap(new ReverseComparator());
             try {
-                Roller roller = RollerFactory.getRoller();
-                WeblogManager wmgr = roller.getWeblogManager();
                 Map mmap = 
RollerFactory.getRoller().getWeblogManager().getWeblogEntryObjectMap(
                         weblog,
                         startDate,


Reply via email to