repolist: New plugin to support the rel=vcs-* microformat.
authorJoey Hess <joey@gnu.kitenet.net>
Wed, 7 Jan 2009 20:48:07 +0000 (15:48 -0500)
committerJoey Hess <joey@gnu.kitenet.net>
Wed, 7 Jan 2009 21:07:46 +0000 (16:07 -0500)
* 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
IkiWiki/Plugin/repolist.pm [new file with mode: 0644]
debian/changelog
doc/pagehistory.mdwn
doc/plugins/goodstuff.mdwn
doc/plugins/repolist.mdwn [new file with mode: 0644]
templates/page.tmpl

index 46f2380cfa4ca98f071a45219c6fa9514d8f664c..451cd6f84fce568167c1d8ef045baba3513dcb80 100644 (file)
@@ -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 (file)
index 0000000..f69ec39
--- /dev/null
@@ -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
index f4f9df041a2be73cb5ef6454960679a9b48753cd..74556906e5642d1a163bf91f0d98091142479ff9 100644 (file)
@@ -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 <joeyh@debian.org>  Tue, 06 Jan 2009 15:02:52 -0500
 
index fc2a3f54386a1f4ab863f705bc350aecf61232a0..4650627366f5118e8c2eb5518cae8512a46e59c3 100644 (file)
@@ -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.
index ed57c0f01336622eb9d53ebb339598dfca78080b..ee1bffcfa8f8e07f0336eff76a0ebc6fd5a0a8ca 100644 (file)
@@ -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 (file)
index 0000000..9b3a757
--- /dev/null
@@ -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).
index f75491127bfd33a921c97bbc1177f48d11874282..29ba688c749de8b2823d67a465bab96be798d8a5 100644 (file)
@@ -13,6 +13,7 @@
 <link rel="alternate" type="application/x-wiki" title="Edit this page" href="<TMPL_VAR EDITURL>" />
 </TMPL_IF>
 <TMPL_IF NAME="FEEDLINKS"><TMPL_VAR FEEDLINKS></TMPL_IF>
+<TMPL_IF NAME="RELVCS"><TMPL_VAR RELVCS></TMPL_IF>
 <TMPL_IF NAME="META"><TMPL_VAR META></TMPL_IF>
 </head>
 <body>