From 23a21850faf1cbb4bd8547b11563c5806617cf7e Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@gnu.kitenet.net>
Date: Sun, 11 Oct 2009 21:52:50 -0400
Subject: [PATCH] fix next/prev month padding bug

---
 IkiWiki/Plugin/calendar.pm | 21 ++++++++++++---------
 debian/changelog           |  2 +-
 2 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
index 0266612ae..cf133e8dc 100644
--- a/IkiWiki/Plugin/calendar.pm
+++ b/IkiWiki/Plugin/calendar.pm
@@ -96,6 +96,10 @@ sub format_month (@) {
 		$nyear++;
 	}
 
+	# Add padding.
+	$pmonth=sprintf("%02d", $pmonth);
+	$nmonth=sprintf("%02d", $nmonth);
+
 	my $calendar="\n";
 
 	# When did this month start?
@@ -121,24 +125,24 @@ sub format_month (@) {
 	my ($url, $purl, $nurl)=("$monthname",'','');
 	if (exists $pagesources{"$archivebase/$params{year}/$params{month}"}) {
 		$url = htmllink($params{page}, $params{destpage}, 
-			"$archivebase/$params{year}/".sprintf("%02d", $params{month}),
+			"$archivebase/$params{year}/".$params{month},
 			linktext => " $monthname ");
 	}
-	add_depends($params{page}, "$archivebase/$params{year}/".sprintf("%02d", $params{month}),
+	add_depends($params{page}, "$archivebase/$params{year}/$params{month}",
 		deptype("presence"));
 	if (exists $pagesources{"$archivebase/$pyear/$pmonth"}) {
 		$purl = htmllink($params{page}, $params{destpage}, 
-			"$archivebase/$pyear/" . sprintf("%02d", $pmonth),
+			"$archivebase/$pyear/$pmonth",
 			linktext => " $pmonthname ");
 	}
-	add_depends($params{page}, "$archivebase/$pyear/".sprintf("%02d", $pmonth),
+	add_depends($params{page}, "$archivebase/$pyear/$pmonth",
 		deptype("presence"));
 	if (exists $pagesources{"$archivebase/$nyear/$nmonth"}) {
 		$nurl = htmllink($params{page}, $params{destpage}, 
-			"$archivebase/$nyear/" . sprintf("%02d", $nmonth),
+			"$archivebase/$nyear/$nmonth",
 			linktext => " $nmonthname ");
 	}
-	add_depends($params{page}, "$archivebase/$nyear/".sprintf("%02d", $nmonth),
+	add_depends($params{page}, "$archivebase/$nyear/$nmonth",
 		deptype("presence"));
 
 	# Start producing the month calendar
@@ -192,8 +196,7 @@ EOF
 		}
 		
 		my $tag;
-		my $mtag = sprintf("%02d", $params{month});
-		if (defined $linkcache{"$params{year}/$mtag/$day"}) {
+		if (defined $linkcache{"$params{year}/$params{month}/$day"}) {
 			if ($day == $today) {
 				$tag='month-calendar-day-this-day';
 			}
@@ -202,7 +205,7 @@ EOF
 			}
 			$calendar.=qq{\t\t<td class="$tag $downame{$wday}">};
 			$calendar.=htmllink($params{page}, $params{destpage}, 
-			                    $linkcache{"$params{year}/$mtag/$day"},
+			                    $linkcache{"$params{year}/$params{month}/$day"},
 			                    "linktext" => "$day");
 			$calendar.=qq{</td>\n};
 		}
diff --git a/debian/changelog b/debian/changelog
index 8881c48aa..5c47b2524 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -31,7 +31,7 @@ ikiwiki (3.2009XXXX) UNRELEASED; urgency=low
   * calendar: Fix midnight rebuild trigger of calendars with explicit
     month/year.
   * calendar: Fix bug in next/previous year/month links, which sometimes
-    linked to an archive page from the wrong year.
+    linked to an archive page from the wrong year, or were missing.
 
  -- Joey Hess <joeyh@debian.org>  Fri, 09 Oct 2009 19:53:50 -0400
 
-- 
2.39.5