From 81b088866be5f55433c12e09c90e2ae404a8ed89 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 7 Jan 2009 15:48:07 -0500 Subject: [PATCH] repolist: New plugin to support the rel=vcs-* microformat. * repolist: New plugin to support the rel=vcs-* microformat. * goodstuff: Include repolist by default. (But it does nothing until configured with the repository locations.) --- IkiWiki/Plugin/goodstuff.pm | 1 + IkiWiki/Plugin/repolist.pm | 51 +++++++++++++++++++++++++++++++++++++ debian/changelog | 3 +++ doc/pagehistory.mdwn | 3 +++ doc/plugins/goodstuff.mdwn | 1 + doc/plugins/repolist.mdwn | 17 +++++++++++++ templates/page.tmpl | 1 + 7 files changed, 77 insertions(+) create mode 100644 IkiWiki/Plugin/repolist.pm create mode 100644 doc/plugins/repolist.mdwn diff --git a/IkiWiki/Plugin/goodstuff.pm b/IkiWiki/Plugin/goodstuff.pm index 46f2380cf..451cd6f84 100644 --- a/IkiWiki/Plugin/goodstuff.pm +++ b/IkiWiki/Plugin/goodstuff.pm @@ -22,6 +22,7 @@ my @bundle=qw{ template toc toggle + repolist }; sub import { 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{} + } @{$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 diff --git a/debian/changelog b/debian/changelog index f4f9df041..74556906e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,9 @@ ikiwiki (3.02) UNRELEASED; urgency=low * table: Find links in external files in scan pass. * rename: Show full names of affected pages. * comments: Fix cache avoidance hack. + * repolist: New plugin to support the rel=vcs-* microformat. + * goodstuff: Include repolist by default. (But it does nothing until + configured with the repository locations.) -- Joey Hess Tue, 06 Jan 2009 15:02:52 -0500 diff --git a/doc/pagehistory.mdwn b/doc/pagehistory.mdwn index fc2a3f543..465062736 100644 --- a/doc/pagehistory.mdwn +++ b/doc/pagehistory.mdwn @@ -3,3 +3,6 @@ revison history of a page. This is enabled by the `historyurl` setting, which is used to specify the URL to a web interface such as [[ViewVC]] (for Subversion) or [[Gitweb]]. In that url, "\[[file]]" is replaced with the name of the file to view. + +The [[plugins/repolist]] plugin can suppliment this information with +urls to the underlying repository of the wiki. diff --git a/doc/plugins/goodstuff.mdwn b/doc/plugins/goodstuff.mdwn index ed57c0f01..ee1bffcfa 100644 --- a/doc/plugins/goodstuff.mdwn +++ b/doc/plugins/goodstuff.mdwn @@ -24,5 +24,6 @@ Currently included: * [[template]] * [[toc]] * [[toggle]] +* [[repolist]] New plugins will be added to this bundle from time to time. diff --git a/doc/plugins/repolist.mdwn b/doc/plugins/repolist.mdwn new file mode 100644 index 000000000..9b3a7575e --- /dev/null +++ b/doc/plugins/repolist.mdwn @@ -0,0 +1,17 @@ +[[!template id=plugin name=repolist author="[[Joey]]"]] +[[!tag type/useful]] + +This plugin allows you to configure ikiwiki with the location of +[[rcs]] repositories for your wiki's source. This is done via the +"repositories" setting in the setup file. Once you tell it where the source +to your wiki can be downloaded from, this information can be published on +your wiki in various ways. + +This plugin supports the [rel-vcs-*](http://kitenet.net/~joey/rfc/rel-vcs/) +microformat, and uses it to embed the repository location information in +every wiki page. + +By using this plugin, you will make [[Joey]] very happy, as he will be able +to easily check out the source of your wiki, for purposes of debugging and +general curiosity. More generally, making it easy for others to find the +repository for your wiki is just a Plain Good Idea(TM). diff --git a/templates/page.tmpl b/templates/page.tmpl index f75491127..29ba688c7 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -13,6 +13,7 @@ + -- 2.26.2