web commit by https://id.mayfirst.org/jamie/: woops - forgot the patch
parent
6cc12f559a
commit
ed88d219d7
|
@ -29,4 +29,180 @@ Longer term plans:
|
|||
|
||||
* Convincing the world to switch to base 10 calendar system.
|
||||
|
||||
|
||||
|
||||
--- calendar.pm.orig 2008-06-24 22:36:09.000000000 -0400
|
||||
+++ calendar.pm 2008-06-28 22:02:15.000000000 -0400
|
||||
@@ -23,6 +23,8 @@
|
||||
use IkiWiki 2.00;
|
||||
use Time::Local;
|
||||
use POSIX;
|
||||
+use Date::Parse;
|
||||
+use Data::Dumper;
|
||||
|
||||
my %cache;
|
||||
my %linkcache;
|
||||
@@ -32,6 +34,7 @@
|
||||
sub import { #{{{
|
||||
hook(type => "needsbuild", id => "version", call => \&needsbuild);
|
||||
hook(type => "preprocess", id => "calendar", call => \&preprocess);
|
||||
+ hook(type => "preprocess", id => "event", call => \&preprocess_event);
|
||||
} #}}}
|
||||
|
||||
sub is_leap_year (@) { #{{{
|
||||
@@ -58,6 +61,7 @@
|
||||
my $nmonth = $params{nmonth};
|
||||
my $pyear = $params{pyear};
|
||||
my $nyear = $params{nyear};
|
||||
+ my $detail = $params{detail};
|
||||
|
||||
my @list;
|
||||
my $calendar="\n";
|
||||
@@ -153,33 +157,58 @@
|
||||
}
|
||||
|
||||
my $tag;
|
||||
+ my $display_day;
|
||||
my $mtag = sprintf("%02d", $month);
|
||||
- if (defined $cache{$pagespec}{"$year/$mtag/$day"}) {
|
||||
- if ($day == $today) {
|
||||
+ if ($day == $today) {
|
||||
$tag='month-calendar-day-this-day';
|
||||
- }
|
||||
- else {
|
||||
- $tag='month-calendar-day-link';
|
||||
- }
|
||||
- $calendar.=qq{\t\t<td class="$tag $downame{$wday}">};
|
||||
- $calendar.=htmllink($params{page}, $params{destpage},
|
||||
- pagename($linkcache{"$year/$mtag/$day"}),
|
||||
- "linktext" => "$day");
|
||||
- push @list, pagename($linkcache{"$year/$mtag/$day"});
|
||||
- $calendar.=qq{</td>\n};
|
||||
+ }
|
||||
+ elsif ($day >= $future_dom) {
|
||||
+ $tag='month-calendar-day-future';
|
||||
+ }
|
||||
+ elsif($params{detail} == 0 &&
|
||||
+ !defined $cache{$pagespec}{"$year/$mtag/$day"}) {
|
||||
+ $tag='month-calendar-day-nolink';
|
||||
+ }
|
||||
+ elsif($params{detail} == 0 &&
|
||||
+ defined $cache{$pagespec}{"$year/$mtag/$day"}) {
|
||||
+ $tag='month-calendar-day-link';
|
||||
}
|
||||
else {
|
||||
- if ($day == $today) {
|
||||
- $tag='month-calendar-day-this-day';
|
||||
- }
|
||||
- elsif ($day == $future_dom) {
|
||||
- $tag='month-calendar-day-future';
|
||||
+ $tag='month-calendar-day';
|
||||
+ }
|
||||
+
|
||||
+ $calendar.=qq{\t\t<td class="$tag $downame{$wday}">};
|
||||
+ my $day_label = qq{<span class="month-calendar-day-label">$day</span>};
|
||||
+ if (defined $cache{$pagespec}{"$year/$mtag/$day"}) {
|
||||
+ my $srcpage; my $destpage;
|
||||
+ if($params{detail} == 0) {
|
||||
+ # pull off the first page
|
||||
+ (($srcpage,$destpage) = each(%{$linkcache{"$year/$mtag/$day"}}));
|
||||
+ $calendar.=htmllink($params{page}, $params{destpage},
|
||||
+ pagename($destpage),
|
||||
+ "linktext" => "$day_label");
|
||||
+ push @list, pagename($linkcache{"$year/$mtag/$day"});
|
||||
}
|
||||
else {
|
||||
- $tag='month-calendar-day-nolink';
|
||||
+ $calendar.=qq{$day_label\n};
|
||||
+ while(($srcpage,$destpage) = each(%{$linkcache{"$year/$mtag/$day"}})) {
|
||||
+ my $title = IkiWiki::basename(pagename($srcpage));
|
||||
+ if (exists $pagestate{$srcpage}{meta}{title} ) {
|
||||
+ $title = $pagestate{$srcpage}{meta}{title};
|
||||
+ }
|
||||
+ $calendar.=qq{\t\t<div class="$tag $downame{$wday}">};
|
||||
+ $calendar.=htmllink($params{page}, $params{destpage},
|
||||
+ pagename($destpage),
|
||||
+ "linktext" => $title);
|
||||
+ push @list, pagename($linkcache{"$year/$mtag/$day"}{"$srcpage"});
|
||||
+ $calendar.=qq{\t\t</div>};
|
||||
+ }
|
||||
}
|
||||
- $calendar.=qq{\t\t<td class="$tag $downame{$wday}">$day</td>\n};
|
||||
}
|
||||
+ else {
|
||||
+ $calendar.=qq{$day_label\n};
|
||||
+ }
|
||||
+ $calendar.=qq{</td>\n};
|
||||
}
|
||||
|
||||
# finish off the week
|
||||
@@ -304,6 +333,18 @@
|
||||
return $calendar;
|
||||
} #}}}
|
||||
|
||||
+sub preprocess_event (@) { #{{{
|
||||
+ my %params=@_;
|
||||
+ # if now time is given, use now
|
||||
+ $params{begin} = localtime($time) unless defined $params{begin};
|
||||
+
|
||||
+ my $timestamp = str2time($params{begin});
|
||||
+ if ( defined $timestamp) {
|
||||
+ $pagestate{$params{page}}{event}{begin}=$timestamp;
|
||||
+ }
|
||||
+ return "<!-- $params{begin} -->";
|
||||
+} #}}
|
||||
+
|
||||
sub preprocess (@) { #{{{
|
||||
my %params=@_;
|
||||
$params{pages} = "*" unless defined $params{pages};
|
||||
@@ -311,6 +352,8 @@
|
||||
$params{month} = sprintf("%02d", $params{month}) if defined $params{month};
|
||||
$params{week_start_day} = 0 unless defined $params{week_start_day};
|
||||
$params{months_per_row} = 3 unless defined $params{months_per_row};
|
||||
+ $params{time_src} = 'auto' unless defined $params{time_src};
|
||||
+ $params{detail} = 0 unless defined $params{detail};
|
||||
|
||||
if (! defined $params{year} || ! defined $params{month}) {
|
||||
# Record that the calendar next changes at midnight.
|
||||
@@ -355,19 +398,29 @@
|
||||
if (! defined $cache{$pagespec}) {
|
||||
foreach my $p (keys %pagesources) {
|
||||
next unless pagespec_match($p, $pagespec);
|
||||
- my $mtime = $IkiWiki::pagectime{$p};
|
||||
- my $src = $pagesources{$p};
|
||||
- my @date = localtime($mtime);
|
||||
- my $mday = $date[3];
|
||||
- my $month = $date[4] + 1;
|
||||
- my $year = $date[5] + 1900;
|
||||
- my $mtag = sprintf("%02d", $month);
|
||||
-
|
||||
- # Only one posting per day is being linked to.
|
||||
- $linkcache{"$year/$mtag/$mday"} = "$src";
|
||||
- $cache{$pagespec}{"$year"}++;
|
||||
- $cache{$pagespec}{"$year/$mtag"}++;
|
||||
- $cache{$pagespec}{"$year/$mtag/$mday"}++;
|
||||
+ my $begin = '';
|
||||
+ # use time defined by event preprocessor if it's available
|
||||
+ if (defined $pagestate{$p}{event}{begin}) {
|
||||
+ $begin = $pagestate{$p}{event}{begin};
|
||||
+ # fall back on ctime if time_src is set to auto
|
||||
+ # set time_src to 'event' to skip posts that don't
|
||||
+ # have the event preprocessor
|
||||
+ } elsif ($params{time_src} eq 'auto') {
|
||||
+ $begin = $IkiWiki::pagectime{$p};
|
||||
+ }
|
||||
+ if($begin ne '') {
|
||||
+ my $dest = $pagesources{$p};
|
||||
+ my @date = localtime($begin);
|
||||
+ my $mday = $date[3];
|
||||
+ my $month = $date[4] + 1;
|
||||
+ my $year = $date[5] + 1900;
|
||||
+ my $mtag = sprintf("%02d", $month);
|
||||
+
|
||||
+ $linkcache{"$year/$mtag/$mday"}{$p} = "$dest";
|
||||
+ $cache{$pagespec}{"$year"}++;
|
||||
+ $cache{$pagespec}{"$year/$mtag"}++;
|
||||
+ $cache{$pagespec}{"$year/$mtag/$mday"}++;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue