]> scripts.mit.edu Git - www/ikiwiki.git/blobdiff - IkiWiki/Plugin/calendar.pm
Merge branch 'master' of ssh://git.ikiwiki.info/srv/git/ikiwiki.info
[www/ikiwiki.git] / IkiWiki / Plugin / calendar.pm
index d5a80795a1aee782f75b4ba266bed13d56e7ce50..c9bdf4a17b3dc36a5804fcd41f3e8a609be30548 100644 (file)
@@ -242,14 +242,29 @@ EOF
 
 sub format_year (@) {
        my %params=@_;
+       
+       my @post_months;
+       foreach my $p (pagespec_match_list($params{page}, 
+                               "creation_year($params{year}) and ($params{pages})",
+                               # add presence dependencies to update
+                               # year calendar's links to months when
+                               # pages are added/removed
+                               deptype => deptype("presence"))) {
+               my $mtime = $IkiWiki::pagectime{$p};
+               my @date  = localtime($mtime);
+               my $month = $date[4] + 1;
+
+               $post_months[$month]++;
+       }
                
        my $calendar="\n";
        
        my $pyear = $params{year}  - 1;
        my $nyear = $params{year}  + 1;
 
+       my $thisyear = $now[5]+1900;
        my $future_month = 0;
-       $future_month = $now[4]+1 if ($params{year} == $now[5]+1900);
+       $future_month = $now[4]+1 if $params{year} == $thisyear;
 
        my $archivebase = 'archives';
        $archivebase = $config{archivebase} if defined $config{archivebase};
@@ -300,7 +315,7 @@ EOF
                $calendar.=qq{\t<tr>\n}  if ($month % $params{months_per_row} == 1);
                my $tag;
                my $mtag=sprintf("%02d", $month);
-               if ($month == $params{month}) {
+               if ($month == $params{month} && $thisyear == $params{year}) {
                        $tag = 'year-calendar-this-month';
                }
                elsif ($pagesources{"$archivebase/$params{year}/$mtag"}) {
@@ -313,7 +328,8 @@ EOF
                        $tag = 'year-calendar-month-nolink';
                }
 
-               if ($pagesources{"$archivebase/$params{year}/$mtag"}) {
+               if ($pagesources{"$archivebase/$params{year}/$mtag"} &&
+                   $post_months[$mtag]) {
                        $murl = htmllink($params{page}, $params{destpage}, 
                                "$archivebase/$params{year}/$mtag",
                                noimageinline => 1,