diff options
Diffstat (limited to 'IkiWiki/Plugin/repolist.pm')
-rw-r--r-- | IkiWiki/Plugin/repolist.pm | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/repolist.pm b/IkiWiki/Plugin/repolist.pm new file mode 100644 index 000000000..f69ec3988 --- /dev/null +++ b/IkiWiki/Plugin/repolist.pm @@ -0,0 +1,51 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::repolist; + +use warnings; +use strict; +use IkiWiki 3.00; + +sub import { + hook(type => "getsetup", id => "repolist", call => \&getsetup); + hook(type => "checkconfig", id => "repolist", call => \&checkconfig); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => undef, + }, + repositories => { + type => "string", + example => ["svn://svn.example.org/wiki/trunk"], + description => "URIs of repositories containing the wiki's source", + safe => 1, + rebuild => undef, + }, +} + +my $relvcs; + +sub checkconfig () { + if (defined $config{rcs} && $config{repositories}) { + $relvcs=join("\n", map { + s/"//g; # avoid quotes just in case + qq{<link rel="vcs-$config{rcs}" href="$_" title="wiki $config{rcs} repository" />} + } @{$config{repositories}}); + + hook(type => "pagetemplate", id => "repolist", call => \&pagetemplate); + } +} + +sub pagetemplate (@) { + my %params=@_; + my $page=$params{page}; + my $template=$params{template}; + + if (defined $relvcs && $template->query(name => "relvcs")) { + $template->param(relvcs => $relvcs); + } +} + +1 |