Package: ikiwiki
Version: 3.20100815.7

This is meant to be a slightly more generic version of the Action Tracker[0]
plugin for TWiki.  You can see that in use at the bottom of this page[1].

Sample usage:

[[!event who="clint" date="2011-04-30" class="action" state="due" 
notify="kabukiman" priority="plaid" description="That thing"]]

The only part I've implemented is the rendering of an HTML table.

[0] http://twiki.org/cgi-bin/view/Plugins/ActionTrackerPlugin
[1] 
http://emoglen.law.columbia.edu/twiki/bin/view/LawContempSoc/CitizensUnitedVFederalElectionCommission
package IkiWiki::Plugin::event;

use warnings;
use strict;
use Encode;
use IkiWiki 3.00;

sub import {
	hook(type => "getsetup", id => "event", call => \&getsetup);
	hook(type => "preprocess", id => "event", call => \&preprocess, scan => 1);
}

sub getsetup () {
	return
		plugin => {
			safe => 1,
			rebuild => undef,
			section => "widget",
		},
}

sub preprocess (@) {
	my %params =(
		format	=> 'auto',
		header	=> 'row',
		@_
	);

	my @lines;
	push @lines, defined $params{class}
			? "<table class=\"".$params{class}.'">'
			: '<table>';
	push @lines, "\t<thead><th>Assigned to</th><th>Due date</th><th>Description</th><th>State</th><th>Notify</th></thead>";
	push @lines, "\t<tbody>";
	push @lines, defined $params{priority}
			? "\t<tr class=\"".$params{priority}.'">'
			: "\t<tr>";
	push @lines, "\t\t<td>".$params{who}."</td>" if defined $params{who};
	push @lines, "\t\t<td>".$params{date}."</td>" if defined $params{date};
	push @lines, "\t\t<td>".$params{description}."</td>" if defined $params{description};
	push @lines, "\t\t<td>".$params{state}."</td>" if defined $params{state};
	push @lines, "\t\t<td>".$params{notify}."</td>" if defined $params{notify};
	push @lines, "\t</tr>";
	push @lines, "\t</tbody>";
	push @lines, '</table>';
	my $html = join("\n", @lines);

	return $html;
}

1;

Reply via email to