X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/d0b34951240317642543351ec62f98d3d8df8c0f..d8a411b47c904182e7f2068838ac9c993c1cc1da:/IkiWiki/Plugin/calendar.pm diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm index 9639f6d08..45617afe8 100644 --- a/IkiWiki/Plugin/calendar.pm +++ b/IkiWiki/Plugin/calendar.pm @@ -1,4 +1,4 @@ -#! /usr/bin/perl +#!/usr/bin/perl # Copyright (c) 2006, 2007 Manoj Srivastava # # This program is free software; you can redistribute it and/or modify @@ -115,7 +115,7 @@ sub build_affected { $affected{calendarlink($ayear)} = sprintf(gettext("building calendar for %s, its previous or next year has changed"), $ayear) if ($valid); ($ayear, $valid) = previousyear($year, $config{archivebase}); $affected{calendarlink($ayear)} = sprintf(gettext("building calendar for %s, its previous or next year has changed"), $ayear) if ($valid); - foreach my $month (keys $changed{$year}) { + foreach my $month (keys %{$changed{$year}}) { ($ayear, $amonth, $valid) = nextmonth($year, $month, $config{archivebase}); $affected{calendarlink($ayear, sprintf("%02d", $amonth))} = sprintf(gettext("building calendar for %s/%s, its previous or next month has changed"), $amonth, $ayear) if ($valid); ($ayear, $amonth, $valid) = previousmonth($year, $month, $config{archivebase}); @@ -141,7 +141,9 @@ sub autocreate { $template->param(month => $month) if defined $month; $template->param(pagespec => $config{archive_pagespec}); + no warnings 'once'; my $dir = $IkiWiki::Plugin::transient::transientdir; + use warnings; writefile($pagefile, $dir, $template->output); } @@ -171,8 +173,6 @@ sub gencalendaryear { my $year = shift; my %params = @_; - return unless $config{calendar_autocreate}; - # Building year page my $page = calendarlink($year); my $pagefile = newpagefile($page, $config{default_pageext}); @@ -195,7 +195,7 @@ sub gencalendaryear { } # Filling potential gaps in years (e.g. calendar goes from 2010 to 2014, - # and we just added year 2005. We have to had years 2006 to 2009). + # and we just added year 2005. We have to add years 2006 to 2009). return if $params{norecurse}; if ($wikistate{calendar}{minyear} > $year) { foreach my $other ($year + 1 .. $wikistate{calendar}{minyear} - 1) { @@ -223,6 +223,10 @@ sub previousmonth($$$) { my $month = shift; my $archivebase = shift; + if (not exists $wikistate{calendar}{minyear}) { + $wikistate{calendar}{minyear} = $year; + } + my $pmonth = $month; my $pyear = $year; while ((not exists $pagesources{"$archivebase/$pyear/" . sprintf("%02d", $pmonth)}) or ($pmonth == $month and $pyear == $year)) { @@ -241,6 +245,10 @@ sub nextmonth($$$) { my $month = shift; my $archivebase = shift; + if (not exists $wikistate{calendar}{maxyear}) { + $wikistate{calendar}{maxyear} = $year; + } + my $nmonth = $month; my $nyear = $year; while ((not exists $pagesources{"$archivebase/$nyear/" . sprintf("%02d", $nmonth)}) or ($nmonth == $month and $nyear == $year)) { @@ -713,6 +721,8 @@ sub scan (@) { my %params=@_; my $page=$params{page}; + return unless $config{calendar_autocreate}; + # Check if year pages have to be generated if (pagespec_match($page, $config{archive_pagespec})) { my @ctime = localtime($IkiWiki::pagectime{$page});