Recent changes to this wiki:

Added a comment: Additional advice?
diff --git a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_2_5156273724765f6eb1bccbb16d5f876a._comment b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_2_5156273724765f6eb1bccbb16d5f876a._comment
new file mode 100644
index 0000000..150ad06
--- /dev/null
+++ b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_2_5156273724765f6eb1bccbb16d5f876a._comment
@@ -0,0 +1,27 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlobQ5j7hQVIGkwMWW3yKB_DWqthJcpnsQ"
+ nickname="Qi"
+ subject="Additional advice?"
+ date="2015-01-29T20:07:11Z"
+ content="""
+I manually modified `/usr/pkg/lib/perl5/vendor_perl/5.20.0/IkiWiki/CGI.pm` removing the three lines
+
+    # call decode_utf8 on >= 5.20 only if it's not already decoded,
+    # otherwise it balks, on < 5.20, always call it
+    if ($] < 5.02 || !Encode::is_utf8($octets)) {
+
+and adding a new line
+
+    if (!Encode::is_utf8($octets)) {
+
+Then I ran ikiwiki --setup mysite.setup and see the following messages:
+
+	...
+	Aborting
+	'git pull --prune origin' failed:  at /usr/pkg/lib/perl5/vendor_perl/5.20.0/IkiWiki/Plugin/git.pm line 220.
+	Cannot decode string with wide characters at /usr/pkg/lib/perl5/5.20.0/darwin-thread-multi-2level/Encode.pm line 175.
+
+
+Any ideas?
+
+"""]]

removed
diff --git a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_2_10b12514d3929ed00f452d072a215c78._comment b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_2_10b12514d3929ed00f452d072a215c78._comment
deleted file mode 100644
index e2b14ad..0000000
--- a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_2_10b12514d3929ed00f452d072a215c78._comment
+++ /dev/null
@@ -1,25 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlobQ5j7hQVIGkwMWW3yKB_DWqthJcpnsQ"
- nickname="Qi"
- subject="Additional advice?"
- date="2015-01-29T20:01:14Z"
- content="""
-I manually modified `/lib/perl5/vendor_perl/5.20.0/IkiWiki/CGI.pm` removing the three lines 
-
-    # call decode_utf8 on >= 5.20 only if it's not already decoded,
-    # otherwise it balks, on < 5.20, always call it
-    if ($] < 5.02 || !Encode::is_utf8($octets)) {
-
-and adding a new line
-
-    if (!Encode::is_utf8($octets)) {
-
-Then I ran `ikiwiki --setup mysite.setup` and see the following messages:
-
-    ...
-    Aborting
-    'git pull --prune origin' failed:  at /usr/pkg/lib/perl5/vendor_perl/5.20.0/IkiWiki/Plugin/git.pm line 220.
-    Cannot decode string with wide characters at /usr/pkg/lib/perl5/5.20.0/darwin-thread-multi-2level/Encode.pm line 175.
-    
-Any ideas?
-"""]]

Added a comment: Additional advice?
diff --git a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_2_10b12514d3929ed00f452d072a215c78._comment b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_2_10b12514d3929ed00f452d072a215c78._comment
new file mode 100644
index 0000000..e2b14ad
--- /dev/null
+++ b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_2_10b12514d3929ed00f452d072a215c78._comment
@@ -0,0 +1,25 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlobQ5j7hQVIGkwMWW3yKB_DWqthJcpnsQ"
+ nickname="Qi"
+ subject="Additional advice?"
+ date="2015-01-29T20:01:14Z"
+ content="""
+I manually modified `/lib/perl5/vendor_perl/5.20.0/IkiWiki/CGI.pm` removing the three lines 
+
+    # call decode_utf8 on >= 5.20 only if it's not already decoded,
+    # otherwise it balks, on < 5.20, always call it
+    if ($] < 5.02 || !Encode::is_utf8($octets)) {
+
+and adding a new line
+
+    if (!Encode::is_utf8($octets)) {
+
+Then I ran `ikiwiki --setup mysite.setup` and see the following messages:
+
+    ...
+    Aborting
+    'git pull --prune origin' failed:  at /usr/pkg/lib/perl5/vendor_perl/5.20.0/IkiWiki/Plugin/git.pm line 220.
+    Cannot decode string with wide characters at /usr/pkg/lib/perl5/5.20.0/darwin-thread-multi-2level/Encode.pm line 175.
+    
+Any ideas?
+"""]]

Added a comment: potential patch
diff --git a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_1_93859a66a7380299c8e166192fb86dc9._comment b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_1_93859a66a7380299c8e166192fb86dc9._comment
new file mode 100644
index 0000000..71ce185
--- /dev/null
+++ b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_/comment_1_93859a66a7380299c8e166192fb86dc9._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="smcv"
+ subject="potential patch"
+ date="2015-01-29T19:33:23Z"
+ content="""
+This sounds like an issue that I hoped we'd already fixed, but
+[Debian bug 776181](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776181) points
+out one other situation where it can happen. Could you try the patch from that bug and
+see whether that fixes it for you too?
+"""]]

diff --git a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
index 0f5adef..38b64b5 100644
--- a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
+++ b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
@@ -1,11 +1,10 @@
 I got the following error related to `Encode.pm` when I build my Ikiwiki instance 
 
-```
-$ ikiwiki --setup mysite.setup
-...
-'git pull --prune origin' failed:  at /usr/pkg/lib/perl5/vendor_perl/5.20.0/IkiWiki/Plugin/git.pm line 220.
-Cannot decode string with wide characters at /usr/pkg/lib/perl5/5.20.0/darwin-thread-multi-2level/Encode.pm line 175.
-```
+
+    $ ikiwiki --setup mysite.setup
+    'git pull --prune origin' failed:  at /usr/pkg/lib/perl5/vendor_perl/5.20.0/IkiWiki/Plugin/git.pm line 220.
+    Cannot decode string with wide characters at /usr/pkg/lib/perl5/5.20.0/darwin-thread-multi-2level/Encode.pm line 175.
+
 
 Any idea how to fix it?
 

diff --git a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
index d37fcb3..0f5adef 100644
--- a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
+++ b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
@@ -11,16 +11,14 @@ Any idea how to fix it?
 
 I installed ikiwiki via pkgsrc on OS X 10.10.2:
 
-```
-$ ikiwiki --version
-ikiwiki version 3.20141016
-$ uname -a
-Darwin qazwsx.local 14.1.0 Darwin Kernel Version 14.1.0: Mon Dec 22 23:10:38 PST 2014; root:xnu-2782.10.72~2/RELEASE_X86_64 x86_64
-$ which perl
-/usr/bin/perl
-$ perl --version
+	 $ ikiwiki --version
+	 ikiwiki version 3.20141016
+	 $ uname -a
+	 Darwin qazwsx.local 14.1.0 Darwin Kernel Version 14.1.0: Mon Dec 22 23:10:38 PST 2014; root:xnu-2782.10.72~2/RELEASE_X86_64 x86_64
+	 $ which perl
+	 /usr/bin/perl
+	 $ perl --version
 
-This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
-(with 2 registered patches, see perl -V for more detail)
-...
-```
+	 This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
+	 (with 2 registered patches, see perl -V for more detail)
+         ...

diff --git a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
index c7ce660..d37fcb3 100644
--- a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
+++ b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
@@ -10,6 +10,7 @@ Cannot decode string with wide characters at /usr/pkg/lib/perl5/5.20.0/darwin-th
 Any idea how to fix it?
 
 I installed ikiwiki via pkgsrc on OS X 10.10.2:
+
 ```
 $ ikiwiki --version
 ikiwiki version 3.20141016

diff --git a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
index 18e5a83..c7ce660 100644
--- a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
+++ b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
@@ -8,3 +8,18 @@ Cannot decode string with wide characters at /usr/pkg/lib/perl5/5.20.0/darwin-th
 ```
 
 Any idea how to fix it?
+
+I installed ikiwiki via pkgsrc on OS X 10.10.2:
+```
+$ ikiwiki --version
+ikiwiki version 3.20141016
+$ uname -a
+Darwin qazwsx.local 14.1.0 Darwin Kernel Version 14.1.0: Mon Dec 22 23:10:38 PST 2014; root:xnu-2782.10.72~2/RELEASE_X86_64 x86_64
+$ which perl
+/usr/bin/perl
+$ perl --version
+
+This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
+(with 2 registered patches, see perl -V for more detail)
+...
+```

diff --git a/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
new file mode 100644
index 0000000..18e5a83
--- /dev/null
+++ b/doc/forum/Build_time_error:_Cannot_decode_string_with_wide_characters_.mdwn
@@ -0,0 +1,10 @@
+I got the following error related to `Encode.pm` when I build my Ikiwiki instance 
+
+```
+$ ikiwiki --setup mysite.setup
+...
+'git pull --prune origin' failed:  at /usr/pkg/lib/perl5/vendor_perl/5.20.0/IkiWiki/Plugin/git.pm line 220.
+Cannot decode string with wide characters at /usr/pkg/lib/perl5/5.20.0/darwin-thread-multi-2level/Encode.pm line 175.
+```
+
+Any idea how to fix it?

missing timezone leads to excessive stat()
diff --git a/doc/bugs/without_timezone__44___excessive_statting_causes_slowness.mdwn b/doc/bugs/without_timezone__44___excessive_statting_causes_slowness.mdwn
new file mode 100644
index 0000000..3b70e13
--- /dev/null
+++ b/doc/bugs/without_timezone__44___excessive_statting_causes_slowness.mdwn
@@ -0,0 +1,9 @@
+If the TZ environment variable is unset *and* the 'timezone' entry in setup is unset, then libc defaults to /etc/localtime which is all well and good, but it causes it to stat() that file for every strftime or similar.  This results in somewhere in the region of 300k calls to stat(/etc/localtime) for my 600 page ikiwiki and introduces appreciable slowness into builds.
+
+If either of TZ or timezone is set, then instead it is believed and /etc/localtime is not repeatedly stat()d, even if TZ or timezone is set to ":/etc/localtime".
+
+A conversation with smcv on IRC suggested:
+
+> `it just needs "elsif (-e /etc/localtime) { $ENV{TZ} = ':/etc/localtime'; } else { $ENV{TZ} = 'GMT'; } or some such`
+
+relating to the processing of `$ENV{TZ}` and `$config{timezone}` in `Ikiwiki.pm`

question created -- situation with setup and rebuild/refresh options
diff --git a/doc/forum/refresh_and_setup.mdwn b/doc/forum/refresh_and_setup.mdwn
new file mode 100644
index 0000000..680a5de
--- /dev/null
+++ b/doc/forum/refresh_and_setup.mdwn
@@ -0,0 +1,58 @@
+I found the handling of options and terms regarding both actions highly confusing from the very beginning some weeks ago. so i created a bash function used as *iki $wikiname* that called *ikiwiki* with the needed parameters and the complete pathname of the apropriate configuration file. Only now that shell is gone and the function lost. So I had to find that command again (remember, I didn't used it for weeks).
+
+    ikiwiki --setup $setupfile
+
+Didn't work as expected, rebuilt the whole wiki.
+
+    ikiwiki -setup -refresh $setupfile
+
+Output was:
+
+    cannot read -refresh: No such file or directory
+    usage: ikiwiki [options] source dest
+           ikiwiki --setup configfile
+
+So it was clear: *first* refresh, *then* setup -- and so
+
+    ikiwiki -refresh -setup $setupfile
+
+finally did what I wanted.
+
+## situation
+
+1.) The manpage says:
+
+       --refresh
+              Refresh the wiki, updating any changed pages. This is the
+              default behavior so you don't normally need to specify it.
+       --setup setupfile
+              The default action when --setup is specified is to automatically
+              generate wrappers for a wiki based on data in a setup file, and
+              rebuild the wiki.  If you only want to build any changed pages,
+              you can use --refresh with --setup.
+
+Only, both *ikiwiki* and *ikiwiki $setupfile* spit out an error. So it seems i **MUST** use *--refresh* to do a refresh. but I also have to use *--setup $setupfile* because ikiwiki **NEEDS** a config file, but only one of those two options take one.
+
+2.) after building the wiki with the list of directories the install script says:
+
+    To modify settings, edit ~/ikiwiki/$wikiname.setup and then run:
+            ikiwiki -setup ~/ikiwiki/$wikiname.setup
+
+2.a) It is the only place where *-setup* is used. the error output and the manpage use *--setup*  
+2.b) It should also say how to rebuild the wiki by creating *only* the new and changed pages.
+
+3.) The file with the basic settings for the installation procedure is referred to as "setup" file. And so are the files with the settings for a particular wiki. Only the manpage uses the term "configuration" more than just a few times. 
+
+And maybe it would be possible to update a wiki if the program is called with only a config file as parameter. the mass-rebuild aproach doesn't work for me, a wiki in a user directory is not part of system stucture and so i don't use my root account for anything besides basic installation.
+
+## conclusion
+
+1.) The text for *--refresh* should be updated.  
+2.) Short and long options should be clearly distinguishable (and also if 1 or 2 hyphens may be used). So the line *--refresh* in the man page could e.g. read *-r --refresh*  
+3.) I'd suggest using "setup" for the file(s) shipped with the software thatare used to create (then so to be called) configuration files with the settings for particular wiki instances.
+
+I also adapted the install script so it doen's clutter my home directory. As for now it still creates *~/.ikiwiki* (useless for me, maybe there could be a setup option not to do it?) but all the rest goes into the same directory (setup file, and the config file and the directory for each instance).
+
+*P.S.: HOWTO sign?*
+
+--[[EdePopede]]

move the tl;dr summary to the top (plugins/highlight is recommended)
diff --git a/doc/todo/syntax_highlighting.mdwn b/doc/todo/syntax_highlighting.mdwn
index 3d12282..dd7c8a1 100644
--- a/doc/todo/syntax_highlighting.mdwn
+++ b/doc/todo/syntax_highlighting.mdwn
@@ -1,6 +1,11 @@
 There's been a lot of work on contrib syntax highlighting plugins. One should be
 picked and added to ikiwiki core.
 
+> I'm calling this [[done]] since I added the [[plugins/highlight]]
+> plugin. There are some unresolved issues touched on here,
+> but they either have the own other bug reports, or are documented
+> as semi-features in the docs to the plugin. --[[Joey]] 
+
 We want to support both converting whole source files into wiki
 pages, as well as doing syntax highlighting as a preprocessor directive 
 (which is either passed the text, or reads it from a file). But,
@@ -111,10 +116,3 @@ releases the 5 or 6 language definitions he has running on his web site, it migh
   Perhaps the thing to do here is to use the new `longname` parameter to
   the format hook, to give them all names that will group together at or
   near the end of the list. Ie: "Syntax: perl", "Source code: c", etc.
-
----
-
-I'm calling this [[done]] since I added the [[plugins/highlight]]
-plugin. There are some unresolved issues touched on here,
-but they either have the own other bug reports, or are documented
-as semi-features in the docs to the plugin. --[[Joey]] 

poll vote (Accept only password logins)
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index d40b0ee..8d701be 100644
--- a/doc/news/openid.mdwn
+++ b/doc/news/openid.mdwn
@@ -10,4 +10,4 @@ log back in, try out the OpenID signup process if you don't already have an
 OpenID, and see how OpenID works for you. And let me know your feelings about
 making such a switch. --[[Joey]]
 
-[[!poll 78 "Accept only OpenID for logins" 21 "Accept only password logins" 50 "Accept both"]]
+[[!poll 77 "Accept only OpenID for logins" 22 "Accept only password logins" 50 "Accept both"]]

poll vote (Accept only OpenID for logins)
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index a163186..d40b0ee 100644
--- a/doc/news/openid.mdwn
+++ b/doc/news/openid.mdwn
@@ -10,4 +10,4 @@ log back in, try out the OpenID signup process if you don't already have an
 OpenID, and see how OpenID works for you. And let me know your feelings about
 making such a switch. --[[Joey]]
 
-[[!poll 77 "Accept only OpenID for logins" 21 "Accept only password logins" 50 "Accept both"]]
+[[!poll 78 "Accept only OpenID for logins" 21 "Accept only password logins" 50 "Accept both"]]

diff --git a/doc/users/iuri.mdwn b/doc/users/iuri.mdwn
index 44fbce1..420c30a 100644
--- a/doc/users/iuri.mdwn
+++ b/doc/users/iuri.mdwn
@@ -1,9 +1,19 @@
-iuri _at_ hush _dot_ ai
+Contacts
+=
 
-[Neocities page](http://iuri.neocities.org)
+* iuri _at_ hush _dot_ ai
+* [Neocities contact page](http://iuri.neocities.org/contatos.html) (brazilian portuguese)
+* [Ikiwiki personal blog](http://iuri.tem.blog.br) (actually currently is an octopress blog but it is supposed to build from an ikiwiki generated git repository)
 
-[User page at wiki.hi.ato.br](https://wiki.hi.ato.br/users/iuri)
+Ikiwiki projects
+=
 
----
+I used/still_try to maintain these Ikiwiki projects:
 
-Internet should  **`s/media/iki/g`**
+* [Hacklab Independência](https://wiki.hi.ato.br) - Free software initiative
+* [Ninguém Tem Blog!](http://ninguem.tem.blog.br) - Ikiwiki (and other platforms) blog hosting
+
+Quote made for this page
+=
+
+> Internet should  **`s/media/iki/g`** period

diff --git a/doc/users/iuri.mdwn b/doc/users/iuri.mdwn
new file mode 100644
index 0000000..44fbce1
--- /dev/null
+++ b/doc/users/iuri.mdwn
@@ -0,0 +1,9 @@
+iuri _at_ hush _dot_ ai
+
+[Neocities page](http://iuri.neocities.org)
+
+[User page at wiki.hi.ato.br](https://wiki.hi.ato.br/users/iuri)
+
+---
+
+Internet should  **`s/media/iki/g`**

fixed formatting
diff --git a/doc/plugins/toc/discussion.mdwn b/doc/plugins/toc/discussion.mdwn
index 52712bb..e704eee 100644
--- a/doc/plugins/toc/discussion.mdwn
+++ b/doc/plugins/toc/discussion.mdwn
@@ -30,4 +30,4 @@ inlined pages?  --[[schmonz]]
 >> sorry I can't offer precise feedback right now, but it looks sane
 >> at a glance. --[[schmonz]]
 
-How could this be tampered to make another plugin that would enable partial listing so I could make multiple "subTOCs" in the same page? For instance I'd have a `[[!toc startlevel=1 levels=1]]` in the top of the page while after a level 1 heading I would have a `[[!toc startlevel=2]]` with the level 2 and below headers limited by the ones below this particular level 1 header --[[iuri]]
+How could this be tampered to make another plugin that would enable partial listing so I could make multiple "subTOCs" in the same page? For instance I'd have a `\[[!toc startlevel=1 levels=1]]` in the top of the page while after a level 1 heading I would have a `\[[!toc startlevel=2]]` with the level 2 and below headers limited by the ones below this particular level 1 header --[[iuri]]

added a question
diff --git a/doc/plugins/toc/discussion.mdwn b/doc/plugins/toc/discussion.mdwn
index 11c874f..52712bb 100644
--- a/doc/plugins/toc/discussion.mdwn
+++ b/doc/plugins/toc/discussion.mdwn
@@ -29,3 +29,5 @@ inlined pages?  --[[schmonz]]
 >> along the way and it stays falsish. Interested in your branch;
 >> sorry I can't offer precise feedback right now, but it looks sane
 >> at a glance. --[[schmonz]]
+
+How could this be tampered to make another plugin that would enable partial listing so I could make multiple "subTOCs" in the same page? For instance I'd have a `[[!toc startlevel=1 levels=1]]` in the top of the page while after a level 1 heading I would have a `[[!toc startlevel=2]]` with the level 2 and below headers limited by the ones below this particular level 1 header --[[iuri]]

providing the .po file so that it can be included
diff --git a/doc/todo/provide_the_ikiwiki_croatian_localization.mdwn b/doc/todo/provide_the_ikiwiki_croatian_localization.mdwn
new file mode 100644
index 0000000..536d4ca
--- /dev/null
+++ b/doc/todo/provide_the_ikiwiki_croatian_localization.mdwn
@@ -0,0 +1 @@
+I am zvonimir from croatia. i have created the localization for @ikiwiki

Note spam, already reverted by the real spalax.
diff --git a/doc/spam_fighting.mdwn b/doc/spam_fighting.mdwn
index f956940..c4b224b 100644
--- a/doc/spam_fighting.mdwn
+++ b/doc/spam_fighting.mdwn
@@ -34,4 +34,5 @@ e3376ce | 2014/08/19 | Nng_L (OpenID) | 58.186.127.104
 104c606 | 2014/08/19 | tlevine (OpenID) | 82.153.13.48
 4c7f247 and 4 more | 2015/01/08 | lis (OpenID) | 122.173.219.54
 eb526e9 and 5 more | 2015/01/10 | loveneet (OpenID) | 122.173.133.14
+ca4d8fc and 17 more | 2015/01/12-14 | spalax. (note the trailing dot) | 122.173.227.51 and 122.173.17.141
 """]]

Spam fighting
diff --git a/doc/spam_fighting/discussion.mdwn b/doc/spam_fighting/discussion.mdwn
new file mode 100644
index 0000000..6119c39
--- /dev/null
+++ b/doc/spam_fighting/discussion.mdwn
@@ -0,0 +1,3 @@
+An user ``spalax.`` has been hijacking [[my|spalax]] page, and started doing the same with [[anarcat's|http://source.ikiwiki.branchable.com/?p=source.git;a=blobdiff;f=doc/tips/convert_mediawiki_to_ikiwiki.mdwn;h=5eaf5b14c16a55ae8ae8838fe59759d9f2317e3c;hp=e8f6a26a1e8f6d27289e56835e2d6a97478cd5ad;hb=16f9fee1da6f3f102c953f61f79bcd8bdb28aaf3;hpb=5e2ffe57e4926a5082069533a2de4957f328d49a]] page (examples [[1|http://source.ikiwiki.branchable.com/?p=source.git;a=blobdiff;f=doc/plugins/contrib/sidebar2.mdwn;h=c4c46637784ef760d70d587cd5512fefac064941;hp=5c169bfd49f4f132860dee56f69c4a423d2ed7b5;hb=5e2ffe57e4926a5082069533a2de4957f328d49a;hpb=2c19d161310832e0e5fb64c86a408dd01fc2f88a]] [[2|http://source.ikiwiki.branchable.com/?p=source.git;a=blobdiff;f=doc/users/spalax..mdwn;h=a9a030c5a338b26bcde79411c4703292fc6cb114;hp=0000000000000000000000000000000000000000;hb=9b3c77c5dc50f6f67318bdfa456917b93472548d;hpb=42452ba377baa5f3be3e1d0b405fcb05954b5dee]] [[3|http://source.ikiwiki.branchable.com/?p=source.git;a=blobdiff;f=doc/bugs/empty_div_element.mdwn;h=84341accc241bdd345a930202d5c3589590d3881;hp=7e28730fd9689bfc8de34713bf02bf62067debcc;hb=ca4d8fc32e18a6dbd84882f0253e57ff389ca64d;hpb=460cc21af5d30d20f3aabbfa9026971cfc5cd7dd]]). I [[reverted|http://source.ikiwiki.branchable.com/?p=source.git;a=commit;h=544608aa5e926563f099f7f397aa0536a7b25c5d]] the modifications, but I do not have the rights to block the user.
+
+-- [[Louis|spalax]]

Revert spam
Reverted commits:
- from ca4d8fc32e18a6dbd84882f0253e57ff389ca64d (on Mon, 12 Jan 2015 07:20:48 +0100 (02:20 -0400))
- to 16f9fee1da6f3f102c953f61f79bcd8bdb28aaf3 (on Wed, 14 Jan 2015 07:14:31 +0100 (02:14 -0400))
diff --git a/doc/bugs/empty_div_element.mdwn b/doc/bugs/empty_div_element.mdwn
index 84341ac..7e28730 100644
--- a/doc/bugs/empty_div_element.mdwn
+++ b/doc/bugs/empty_div_element.mdwn
@@ -32,4 +32,4 @@ I tried looking for something like this, but I couldn't find it. Perhaps I just
 
 > This can easily be achieved by modifying [[templates]]. Simply copy the default page template to the template directory of your wiki, and modify it to add your empty divs.
 >
-> -- [[Louis|spalax.]]
+> -- [[Louis|spalax]]
diff --git a/doc/plugins/contrib/compile.mdwn b/doc/plugins/contrib/compile.mdwn
index 86bbdc9..564f7f6 100644
--- a/doc/plugins/contrib/compile.mdwn
+++ b/doc/plugins/contrib/compile.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=compile author="[[Louis|spalax.]]"]]
+[[!template id=plugin name=compile author="[[Louis|spalax]]"]]
 
 # Compile
 
diff --git a/doc/plugins/contrib/created_in_future.mdwn b/doc/plugins/contrib/created_in_future.mdwn
index 9f77a8a..95793e1 100644
--- a/doc/plugins/contrib/created_in_future.mdwn
+++ b/doc/plugins/contrib/created_in_future.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name="created_in_future (deprecated)" author="[[Louis|spalax.]]"]]
+[[!template id=plugin name="created_in_future (deprecated)" author="[[Louis|spalax]]"]]
 
 # Created_in_future
 
diff --git a/doc/plugins/contrib/datetime_cmp.mdwn b/doc/plugins/contrib/datetime_cmp.mdwn
index 612fa3d..ba35b37 100644
--- a/doc/plugins/contrib/datetime_cmp.mdwn
+++ b/doc/plugins/contrib/datetime_cmp.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=datetime_cmp author="[[Louis|spalax.]]"]]
+[[!template id=plugin name=datetime_cmp author="[[Louis|spalax]]"]]
 [[!tag type/pagespec]]
 
 # Datetime_cmp
diff --git a/doc/plugins/contrib/jscalendar.mdwn b/doc/plugins/contrib/jscalendar.mdwn
index bf49b12..8123b31 100644
--- a/doc/plugins/contrib/jscalendar.mdwn
+++ b/doc/plugins/contrib/jscalendar.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=jscalendar author="[[Louis|spalax.]]"]]
+[[!template id=plugin name=jscalendar author="[[Louis|spalax]]"]]
 
 # Jscalendar
 
diff --git a/doc/plugins/contrib/monthcalendar.mdwn b/doc/plugins/contrib/monthcalendar.mdwn
index f7ee786..c21be0a 100644
--- a/doc/plugins/contrib/monthcalendar.mdwn
+++ b/doc/plugins/contrib/monthcalendar.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=monthcalendar author="[[Louis|spalax.]]"]]
+[[!template id=plugin name=monthcalendar author="[[Louis|spalax]]"]]
 
 # Monthcalendar
 
diff --git a/doc/plugins/contrib/parenttag.mdwn b/doc/plugins/contrib/parenttag.mdwn
index 52c7f32..5dc01c7 100644
--- a/doc/plugins/contrib/parenttag.mdwn
+++ b/doc/plugins/contrib/parenttag.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=parenttag author="[[Louis|spalax.]]"]]
+[[!template id=plugin name=parenttag author="[[Louis|spalax]]"]]
 [[!tag type/tags]]
 
 This plugin deals with subtags (e.g. `mathematics/calculus`). Whenever a page is tagged, it is automatically tagged with its subtags as well: the following directives are equivalent:
diff --git a/doc/plugins/contrib/poetry.mdwn b/doc/plugins/contrib/poetry.mdwn
index 7a8573b..aed2e42 100644
--- a/doc/plugins/contrib/poetry.mdwn
+++ b/doc/plugins/contrib/poetry.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=poetry author="[[Louis|spalax.]]"]]
+[[!template id=plugin name=poetry author="[[Louis|spalax]]"]]
 
 # Poetry
 
diff --git a/doc/plugins/contrib/sidebar2.mdwn b/doc/plugins/contrib/sidebar2.mdwn
index c4c4663..5c169bf 100644
--- a/doc/plugins/contrib/sidebar2.mdwn
+++ b/doc/plugins/contrib/sidebar2.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=sidebar2 author="[[Louis|spalax.]]"]]
+[[!template id=plugin name=sidebar2 author="[[Louis|spalax]]"]]
 [[!tag type/chrome]]
 
 *Claim:* The [[sidebar|plugins/sidebar]] plugin has nothing
diff --git a/doc/plugins/contrib/taskreport.mdwn b/doc/plugins/contrib/taskreport.mdwn
index 5173ec1..377c9ed 100644
--- a/doc/plugins/contrib/taskreport.mdwn
+++ b/doc/plugins/contrib/taskreport.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=taskreport author="[[Louis|spalax.]]"]]
+[[!template id=plugin name=taskreport author="[[Louis|spalax]]"]]
 
 # Taskreport
 
diff --git a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn
index 5eaf5b1..e8f6a26 100644
--- a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn
+++ b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn
@@ -207,7 +207,7 @@ There's now support for mediawiki as a git remote:
 > gitmodule available in the right place for it to use.. perhaps you could
 > automate that? --[[Joey]]
 
-> > You mean a debian package? :) media2iki is actually a submodule, so you need to go through extra steps to install it. mwlib being the most annoying part... I have fixed my script so it looks for media2iki directly in the submodule and improved the install instructions in the README file, but I'm not sure I can do much more short of starting to package the whole thing... --[[spalax.]]
+> > You mean a debian package? :) media2iki is actually a submodule, so you need to go through extra steps to install it. mwlib being the most annoying part... I have fixed my script so it looks for media2iki directly in the submodule and improved the install instructions in the README file, but I'm not sure I can do much more short of starting to package the whole thing... --[[anarcat]]
 
 >>> You may have forgotten to push that, I don't see those changes.
 >>> Packaging the python library might be a good 1st step.
diff --git a/doc/users/spalax..mdwn b/doc/users/spalax..mdwn
deleted file mode 100644
index a9a030c..0000000
--- a/doc/users/spalax..mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-[[!meta title="Louis Paternault"]]
-
-User of IkiWiki (my [professional website](http://paternault.fr), among others).
-
-# Plugins
-
-I wrote and maintain a few plugins, which are available here: [[https://atelier.gresille.org/projects/gresille-ikiwiki]].
-
-[[!map pages="plugins/contrib/* and ! plugins/contrib/*/* and author(spalax)"]]
-
-# Wishlist
-
-I have a few things in mind. Their status is something between *I will implement it someday* to *maybe someone could need this* or *I will need it if I implement this killer website I have in mind*.
-
-* [[plugins/contrib/htaccessmanager]]: Create a cgi page to manage a htaccess file.
-
-
-# Contact
-
-Contact: `spalax at gresille dot org`.

diff --git a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn
index e8f6a26..5eaf5b1 100644
--- a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn
+++ b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn
@@ -207,7 +207,7 @@ There's now support for mediawiki as a git remote:
 > gitmodule available in the right place for it to use.. perhaps you could
 > automate that? --[[Joey]]
 
-> > You mean a debian package? :) media2iki is actually a submodule, so you need to go through extra steps to install it. mwlib being the most annoying part... I have fixed my script so it looks for media2iki directly in the submodule and improved the install instructions in the README file, but I'm not sure I can do much more short of starting to package the whole thing... --[[anarcat]]
+> > You mean a debian package? :) media2iki is actually a submodule, so you need to go through extra steps to install it. mwlib being the most annoying part... I have fixed my script so it looks for media2iki directly in the submodule and improved the install instructions in the README file, but I'm not sure I can do much more short of starting to package the whole thing... --[[spalax.]]
 
 >>> You may have forgotten to push that, I don't see those changes.
 >>> Packaging the python library might be a good 1st step.

diff --git a/doc/plugins/contrib/sidebar2.mdwn b/doc/plugins/contrib/sidebar2.mdwn
index 5c169bf..c4c4663 100644
--- a/doc/plugins/contrib/sidebar2.mdwn
+++ b/doc/plugins/contrib/sidebar2.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=sidebar2 author="[[Louis|spalax]]"]]
+[[!template id=plugin name=sidebar2 author="[[Louis|spalax.]]"]]
 [[!tag type/chrome]]
 
 *Claim:* The [[sidebar|plugins/sidebar]] plugin has nothing

diff --git a/doc/plugins/contrib/jscalendar.mdwn b/doc/plugins/contrib/jscalendar.mdwn
index 8123b31..bf49b12 100644
--- a/doc/plugins/contrib/jscalendar.mdwn
+++ b/doc/plugins/contrib/jscalendar.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=jscalendar author="[[Louis|spalax]]"]]
+[[!template id=plugin name=jscalendar author="[[Louis|spalax.]]"]]
 
 # Jscalendar
 

diff --git a/doc/plugins/contrib/poetry.mdwn b/doc/plugins/contrib/poetry.mdwn
index aed2e42..7a8573b 100644
--- a/doc/plugins/contrib/poetry.mdwn
+++ b/doc/plugins/contrib/poetry.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=poetry author="[[Louis|spalax]]"]]
+[[!template id=plugin name=poetry author="[[Louis|spalax.]]"]]
 
 # Poetry
 

diff --git a/doc/plugins/contrib/parenttag.mdwn b/doc/plugins/contrib/parenttag.mdwn
index 5dc01c7..52c7f32 100644
--- a/doc/plugins/contrib/parenttag.mdwn
+++ b/doc/plugins/contrib/parenttag.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=parenttag author="[[Louis|spalax]]"]]
+[[!template id=plugin name=parenttag author="[[Louis|spalax.]]"]]
 [[!tag type/tags]]
 
 This plugin deals with subtags (e.g. `mathematics/calculus`). Whenever a page is tagged, it is automatically tagged with its subtags as well: the following directives are equivalent:

diff --git a/doc/plugins/contrib/monthcalendar.mdwn b/doc/plugins/contrib/monthcalendar.mdwn
index c21be0a..f7ee786 100644
--- a/doc/plugins/contrib/monthcalendar.mdwn
+++ b/doc/plugins/contrib/monthcalendar.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=monthcalendar author="[[Louis|spalax]]"]]
+[[!template id=plugin name=monthcalendar author="[[Louis|spalax.]]"]]
 
 # Monthcalendar
 

diff --git a/doc/plugins/contrib/datetime_cmp.mdwn b/doc/plugins/contrib/datetime_cmp.mdwn
index ba35b37..612fa3d 100644
--- a/doc/plugins/contrib/datetime_cmp.mdwn
+++ b/doc/plugins/contrib/datetime_cmp.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=datetime_cmp author="[[Louis|spalax]]"]]
+[[!template id=plugin name=datetime_cmp author="[[Louis|spalax.]]"]]
 [[!tag type/pagespec]]
 
 # Datetime_cmp

diff --git a/doc/plugins/contrib/created_in_future.mdwn b/doc/plugins/contrib/created_in_future.mdwn
index 95793e1..9f77a8a 100644
--- a/doc/plugins/contrib/created_in_future.mdwn
+++ b/doc/plugins/contrib/created_in_future.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name="created_in_future (deprecated)" author="[[Louis|spalax]]"]]
+[[!template id=plugin name="created_in_future (deprecated)" author="[[Louis|spalax.]]"]]
 
 # Created_in_future
 

diff --git a/doc/plugins/contrib/compile.mdwn b/doc/plugins/contrib/compile.mdwn
index 564f7f6..86bbdc9 100644
--- a/doc/plugins/contrib/compile.mdwn
+++ b/doc/plugins/contrib/compile.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=compile author="[[Louis|spalax]]"]]
+[[!template id=plugin name=compile author="[[Louis|spalax.]]"]]
 
 # Compile
 

diff --git a/doc/plugins/contrib/taskreport.mdwn b/doc/plugins/contrib/taskreport.mdwn
index 377c9ed..5173ec1 100644
--- a/doc/plugins/contrib/taskreport.mdwn
+++ b/doc/plugins/contrib/taskreport.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=taskreport author="[[Louis|spalax]]"]]
+[[!template id=plugin name=taskreport author="[[Louis|spalax.]]"]]
 
 # Taskreport
 

diff --git a/doc/users/spalax..mdwn b/doc/users/spalax..mdwn
new file mode 100644
index 0000000..a9a030c
--- /dev/null
+++ b/doc/users/spalax..mdwn
@@ -0,0 +1,20 @@
+[[!meta title="Louis Paternault"]]
+
+User of IkiWiki (my [professional website](http://paternault.fr), among others).
+
+# Plugins
+
+I wrote and maintain a few plugins, which are available here: [[https://atelier.gresille.org/projects/gresille-ikiwiki]].
+
+[[!map pages="plugins/contrib/* and ! plugins/contrib/*/* and author(spalax)"]]
+
+# Wishlist
+
+I have a few things in mind. Their status is something between *I will implement it someday* to *maybe someone could need this* or *I will need it if I implement this killer website I have in mind*.
+
+* [[plugins/contrib/htaccessmanager]]: Create a cgi page to manage a htaccess file.
+
+
+# Contact
+
+Contact: `spalax at gresille dot org`.

diff --git a/doc/plugins/contrib/addtag.mdwn b/doc/plugins/contrib/addtag.mdwn
index 27b08b5..5b9461d 100644
--- a/doc/plugins/contrib/addtag.mdwn
+++ b/doc/plugins/contrib/addtag.mdwn
@@ -1,5 +1,5 @@
 [[!meta author="spalax"]]
-[[!template id=plugin name=addtag author="[[Louis|spalax.]]"]]
+[[!template id=plugin name=addtag author="[[Louis|spalax]]"]]
 [[!tag type/widget]]
 
 # Addtag

diff --git a/doc/plugins/contrib/addtag.mdwn b/doc/plugins/contrib/addtag.mdwn
index 1ce6290..27b08b5 100644
--- a/doc/plugins/contrib/addtag.mdwn
+++ b/doc/plugins/contrib/addtag.mdwn
@@ -1,4 +1,4 @@
-[[!meta author="spalax."]]
+[[!meta author="spalax"]]
 [[!template id=plugin name=addtag author="[[Louis|spalax.]]"]]
 [[!tag type/widget]]
 

removed
diff --git a/doc/bugs/spalax..mdwn b/doc/bugs/spalax..mdwn
deleted file mode 100644
index a9a030c..0000000
--- a/doc/bugs/spalax..mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-[[!meta title="Louis Paternault"]]
-
-User of IkiWiki (my [professional website](http://paternault.fr), among others).
-
-# Plugins
-
-I wrote and maintain a few plugins, which are available here: [[https://atelier.gresille.org/projects/gresille-ikiwiki]].
-
-[[!map pages="plugins/contrib/* and ! plugins/contrib/*/* and author(spalax)"]]
-
-# Wishlist
-
-I have a few things in mind. Their status is something between *I will implement it someday* to *maybe someone could need this* or *I will need it if I implement this killer website I have in mind*.
-
-* [[plugins/contrib/htaccessmanager]]: Create a cgi page to manage a htaccess file.
-
-
-# Contact
-
-Contact: `spalax at gresille dot org`.

diff --git a/doc/plugins/contrib/addtag.mdwn b/doc/plugins/contrib/addtag.mdwn
index 5b9461d..1ce6290 100644
--- a/doc/plugins/contrib/addtag.mdwn
+++ b/doc/plugins/contrib/addtag.mdwn
@@ -1,5 +1,5 @@
-[[!meta author="spalax"]]
-[[!template id=plugin name=addtag author="[[Louis|spalax]]"]]
+[[!meta author="spalax."]]
+[[!template id=plugin name=addtag author="[[Louis|spalax.]]"]]
 [[!tag type/widget]]
 
 # Addtag

diff --git a/doc/bugs/spalax..mdwn b/doc/bugs/spalax..mdwn
new file mode 100644
index 0000000..a9a030c
--- /dev/null
+++ b/doc/bugs/spalax..mdwn
@@ -0,0 +1,20 @@
+[[!meta title="Louis Paternault"]]
+
+User of IkiWiki (my [professional website](http://paternault.fr), among others).
+
+# Plugins
+
+I wrote and maintain a few plugins, which are available here: [[https://atelier.gresille.org/projects/gresille-ikiwiki]].
+
+[[!map pages="plugins/contrib/* and ! plugins/contrib/*/* and author(spalax)"]]
+
+# Wishlist
+
+I have a few things in mind. Their status is something between *I will implement it someday* to *maybe someone could need this* or *I will need it if I implement this killer website I have in mind*.
+
+* [[plugins/contrib/htaccessmanager]]: Create a cgi page to manage a htaccess file.
+
+
+# Contact
+
+Contact: `spalax at gresille dot org`.

diff --git a/doc/bugs/empty_div_element.mdwn b/doc/bugs/empty_div_element.mdwn
index 7e28730..84341ac 100644
--- a/doc/bugs/empty_div_element.mdwn
+++ b/doc/bugs/empty_div_element.mdwn
@@ -32,4 +32,4 @@ I tried looking for something like this, but I couldn't find it. Perhaps I just
 
 > This can easily be achieved by modifying [[templates]]. Simply copy the default page template to the template directory of your wiki, and modify it to add your empty divs.
 >
-> -- [[Louis|spalax]]
+> -- [[Louis|spalax.]]

Removed TODO item (done)
diff --git a/doc/users/spalax.mdwn b/doc/users/spalax.mdwn
index 4bf895c..a9a030c 100644
--- a/doc/users/spalax.mdwn
+++ b/doc/users/spalax.mdwn
@@ -13,7 +13,6 @@ I wrote and maintain a few plugins, which are available here: [[https://atelier.
 I have a few things in mind. Their status is something between *I will implement it someday* to *maybe someone could need this* or *I will need it if I implement this killer website I have in mind*.
 
 * [[plugins/contrib/htaccessmanager]]: Create a cgi page to manage a htaccess file.
-* Automatically add calendar pages (WIP: see the [[ikiwiki-calendar discussion|ikiwiki-calendar/discussion]]).
 
 
 # Contact

Added my professional website
diff --git a/doc/users/spalax.mdwn b/doc/users/spalax.mdwn
index d5867ca..4bf895c 100644
--- a/doc/users/spalax.mdwn
+++ b/doc/users/spalax.mdwn
@@ -1,6 +1,6 @@
 [[!meta title="Louis Paternault"]]
 
-User of IkiWiki.
+User of IkiWiki (my [professional website](http://paternault.fr), among others).
 
 # Plugins
 

Added a site using IkiWiki.
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 733edfd..d974f6b 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -206,3 +206,4 @@ Personal sites and blogs
 * Kalle Söderman: [Seen Architecture](http://img.kalleswork.net), [Stockholm Project](http://stockholm.kalleswork.net) - Mainly -image galleries using the album and osm plugins with a customized html5 theme.
 * [James Technotes](http://jamestechnotes.com), my [wiki](http://jamestechnotes.com) and [blog](http://jamestechnotes.com/blog).
 * [Amitai Schlair's site](http://www.schmonz.com/)
+* My ([[spalax]]) [professional website](http://paternault.fr)

despam
diff --git a/doc/blog.mdwn b/doc/blog.mdwn
index 9de244c..c4a379f 100644
--- a/doc/blog.mdwn
+++ b/doc/blog.mdwn
@@ -1,4 +1,4 @@
 Ikiwiki allows turning any page into a weblog, by using the
 [[ikiwiki/directive/inline]] [[ikiwiki/directive]]. For example:
-[.](http://www.mommyliciousmaternity.com/)
+
 	\[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]]
diff --git a/doc/bugs.mdwn b/doc/bugs.mdwn
index b28ed57..f16a4f8 100644
--- a/doc/bugs.mdwn
+++ b/doc/bugs.mdwn
@@ -1,7 +1,8 @@
 If you've found a bug in ikiwiki, post about it here. [[TODO]] items go
 elsewhere. Link items to [[bugs/done]] when done.
 
-Also see the [Debian bugs](http://bugs.debian.org/ikiwiki)[.](http://www.mommyliciousmaternity.com/collections/plus-size-maternity-dresses)
+Also see the [Debian bugs](http://bugs.debian.org/ikiwiki).
+
 There are [[!pagecount pages="bugs/* and !bugs/done and !bugs/discussion and 
 !link(patch) and !link(bugs/done) and !bugs/*/*"
 feedpages="created_after(bugs/no_commit_mails_for_new_pages)"]] "open" bugs:
diff --git a/doc/bugs/done.mdwn b/doc/bugs/done.mdwn
index 41fa940..0a666ab 100644
--- a/doc/bugs/done.mdwn
+++ b/doc/bugs/done.mdwn
@@ -1,3 +1,3 @@
-recently fixed [[bugs]][.](http://www.mommyliciousmaternity.com/collections/plus-size-maternity-dresses)
+recently fixed [[bugs]]
 
 [[!inline pages="link(bugs/done) and !bugs and !*/Discussion" sort=mtime show=10]]
diff --git a/doc/plugins/attachment.mdwn b/doc/plugins/attachment.mdwn
index 7cf7da6..4fcd714 100644
--- a/doc/plugins/attachment.mdwn
+++ b/doc/plugins/attachment.mdwn
@@ -1,7 +1,8 @@
 [[!template id=plugin name=attachment core=0 author="[[Joey]]"]]
 [[!tag type/web]]
 
-This plugin allows files to be uploaded to the wiki over the web
+This plugin allows files to be uploaded to the wiki over the web.
+
 For each page `foo`, files in the subdirectory `foo/` are treated as
 attachments of that page. Attachments can be uploaded and managed as
 part of the interface for editing a page.
@@ -22,6 +23,5 @@ Bear in mind that if you let anyone upload a particular kind of file
 If you enable this plugin, be sure to lock it down, via the
 `allowed_attachments` setup file option. This is a special 
 [[enhanced_PageSpec|ikiwiki/pagespec/attachment]] using tests provided by
-the [[filecheck]][.](http://www.mommyliciousmaternity.com/collections/plus-size-maternity-dresses)
- plugin. That plugin will be automatically enabled when
+the [[filecheck]] plugin. That plugin will be automatically enabled when
 this plugin is enabled.
diff --git a/doc/spam_fighting.mdwn b/doc/spam_fighting.mdwn
index 619f354..f956940 100644
--- a/doc/spam_fighting.mdwn
+++ b/doc/spam_fighting.mdwn
@@ -32,9 +32,6 @@ c2924ce | 2014/01/02 | domtheo9110 | 182.253.51.174
 cd81b9f | 2014/01/03 | domtheo9110 | ?
 e3376ce | 2014/08/19 | Nng_L (OpenID) | 58.186.127.104
 104c606 | 2014/08/19 | tlevine (OpenID) | 82.153.13.48
-4c7f247 | 2015/01/08 | lis (OpenID) | 122.173.219.54
-246678f | 2015/01/08 | lis (OpenID) | 122.173.219.54
-504a6b8 | 2015/01/08 | lis (OpenID) | 122.173.219.54
-b500d89 | 2015/01/08 | lis (OpenID) | 122.173.219.54
-3ae8a75 | 2015/01/08 | lis (OpenID) | 122.173.219.54
+4c7f247 and 4 more | 2015/01/08 | lis (OpenID) | 122.173.219.54
+eb526e9 and 5 more | 2015/01/10 | loveneet (OpenID) | 122.173.133.14
 """]]

diff --git a/doc/plugins/attachment.mdwn b/doc/plugins/attachment.mdwn
index 29e945a..7cf7da6 100644
--- a/doc/plugins/attachment.mdwn
+++ b/doc/plugins/attachment.mdwn
@@ -1,8 +1,7 @@
 [[!template id=plugin name=attachment core=0 author="[[Joey]]"]]
 [[!tag type/web]]
 
-This plugin allows files to be uploaded to the wiki over the web[.](http://www.mommyliciousmaternity.com/collections/plus-size-maternity-dresses)
-
+This plugin allows files to be uploaded to the wiki over the web
 For each page `foo`, files in the subdirectory `foo/` are treated as
 attachments of that page. Attachments can be uploaded and managed as
 part of the interface for editing a page.
@@ -23,5 +22,6 @@ Bear in mind that if you let anyone upload a particular kind of file
 If you enable this plugin, be sure to lock it down, via the
 `allowed_attachments` setup file option. This is a special 
 [[enhanced_PageSpec|ikiwiki/pagespec/attachment]] using tests provided by
-the [[filecheck]] plugin. That plugin will be automatically enabled when
+the [[filecheck]][.](http://www.mommyliciousmaternity.com/collections/plus-size-maternity-dresses)
+ plugin. That plugin will be automatically enabled when
 this plugin is enabled.

diff --git a/doc/plugins/attachment.mdwn b/doc/plugins/attachment.mdwn
index 4fcd714..29e945a 100644
--- a/doc/plugins/attachment.mdwn
+++ b/doc/plugins/attachment.mdwn
@@ -1,7 +1,7 @@
 [[!template id=plugin name=attachment core=0 author="[[Joey]]"]]
 [[!tag type/web]]
 
-This plugin allows files to be uploaded to the wiki over the web.
+This plugin allows files to be uploaded to the wiki over the web[.](http://www.mommyliciousmaternity.com/collections/plus-size-maternity-dresses)
 
 For each page `foo`, files in the subdirectory `foo/` are treated as
 attachments of that page. Attachments can be uploaded and managed as

diff --git a/doc/bugs/done.mdwn b/doc/bugs/done.mdwn
index 0a666ab..41fa940 100644
--- a/doc/bugs/done.mdwn
+++ b/doc/bugs/done.mdwn
@@ -1,3 +1,3 @@
-recently fixed [[bugs]]
+recently fixed [[bugs]][.](http://www.mommyliciousmaternity.com/collections/plus-size-maternity-dresses)
 
 [[!inline pages="link(bugs/done) and !bugs and !*/Discussion" sort=mtime show=10]]

diff --git a/doc/bugs.mdwn b/doc/bugs.mdwn
index f16a4f8..b28ed57 100644
--- a/doc/bugs.mdwn
+++ b/doc/bugs.mdwn
@@ -1,8 +1,7 @@
 If you've found a bug in ikiwiki, post about it here. [[TODO]] items go
 elsewhere. Link items to [[bugs/done]] when done.
 
-Also see the [Debian bugs](http://bugs.debian.org/ikiwiki).
-
+Also see the [Debian bugs](http://bugs.debian.org/ikiwiki)[.](http://www.mommyliciousmaternity.com/collections/plus-size-maternity-dresses)
 There are [[!pagecount pages="bugs/* and !bugs/done and !bugs/discussion and 
 !link(patch) and !link(bugs/done) and !bugs/*/*"
 feedpages="created_after(bugs/no_commit_mails_for_new_pages)"]] "open" bugs:

diff --git a/doc/blog.mdwn b/doc/blog.mdwn
index 5c9237b..9de244c 100644
--- a/doc/blog.mdwn
+++ b/doc/blog.mdwn
@@ -1,4 +1,4 @@
 Ikiwiki allows turning any page into a weblog, by using the
 [[ikiwiki/directive/inline]] [[ikiwiki/directive]]. For example:
-http://www.mommyliciousmaternity.com/
+[.](http://www.mommyliciousmaternity.com/)
 	\[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]]

diff --git a/doc/blog.mdwn b/doc/blog.mdwn
index c4a379f..5c9237b 100644
--- a/doc/blog.mdwn
+++ b/doc/blog.mdwn
@@ -1,4 +1,4 @@
 Ikiwiki allows turning any page into a weblog, by using the
 [[ikiwiki/directive/inline]] [[ikiwiki/directive]]. For example:
-
+http://www.mommyliciousmaternity.com/
 	\[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]]

Docker image with ikiwiki pre-installed
diff --git a/doc/setup.mdwn b/doc/setup.mdwn
index bdbe323..c6005fb 100644
--- a/doc/setup.mdwn
+++ b/doc/setup.mdwn
@@ -7,6 +7,8 @@ This tutorial will walk you through setting up a wiki with ikiwiki.
 If you're using Debian or Ubuntu, ikiwiki is an <code><a href="http://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_basic_package_management_operations">apt-get</a> install ikiwiki</code> away.
 If you're not, see the [[download]] and [[install]] pages.
 
+You may also want to try out a [[Docker image|https://github.com/elecnix/ikiwiki-docker]] with ikiwiki pre-installed.
+
 ## Create your wiki
 
 All it takes to create a fully functional wiki using ikiwiki is running

Have committed anonymous-comments-via-vcs patch.
diff --git a/doc/plugins/comments/discussion.mdwn b/doc/plugins/comments/discussion.mdwn
index ad61ac8..0641ddc 100644
--- a/doc/plugins/comments/discussion.mdwn
+++ b/doc/plugins/comments/discussion.mdwn
@@ -253,3 +253,5 @@ way I've tried, and lets me render my (incredibly valuable ;-)
 imported blog comments with full fidelity. OK to commit?
 
 > Ship it. --[[smcv]]
+
+>> Thanks, have done. --[[schmonz]]

schmonz/comments-anonymous-url-vcs looks good to merge
diff --git a/doc/plugins/comments/discussion.mdwn b/doc/plugins/comments/discussion.mdwn
index 0e5c5e6..ad61ac8 100644
--- a/doc/plugins/comments/discussion.mdwn
+++ b/doc/plugins/comments/discussion.mdwn
@@ -251,3 +251,5 @@ My branch has a fix that doesn't break `t/comments.t`, doesn't
 appear to break anonymous or signed-in comments via the CGI in any
 way I've tried, and lets me render my (incredibly valuable ;-)
 imported blog comments with full fidelity. OK to commit?
+
+> Ship it. --[[smcv]]

Revert spam (5 edits)
diff --git a/doc/blog.mdwn b/doc/blog.mdwn
index 3c6300b..c4a379f 100644
--- a/doc/blog.mdwn
+++ b/doc/blog.mdwn
@@ -1,11 +1,4 @@
-Ikiwiki allows turning any page into a [weblog](https://www.listango.com/blog), by using the
+Ikiwiki allows turning any page into a weblog, by using the
 [[ikiwiki/directive/inline]] [[ikiwiki/directive]]. For example:
 
 	\[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]]
-
-
-
-
-Ok, great thank you I was looking to deep. I have managed to assign it to a class but the only problem I am experiencing now is when I assign a article to "technology" than go back out and click on my " technology" on my main parent class menu item it will not display in "technology" the way I would like all I would like to do is just organize the blogs into sections where I would assign them parent classes and have them show up when clicked on by the visitor like to click on "technology" on my menu bar and have that person dive into [blog](https://readingpack.com/blog) relevant to that category
-
-something like [newsylicious.com](http://newsylicious.wordpress.com/) may be a great example of my goal...when you hover over TECH. with your mouse the menu drops down and when you click on the context you're interested in it will take you to that page along with other topics relevant to TECH.
diff --git a/doc/index.mdwn b/doc/index.mdwn
index e3a33ad..f4073aa 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -18,7 +18,7 @@ with ikiwiki, and some [[tips]].  Basic documentation for ikiwiki plugins
 and syntax is provided [[here|ikiwiki]]. The [[forum]] is open for
 discussions.
 
-All wikis are supposed to have a [[sandbox]], so [this one](http://fixithere.net/) does too.
+All wikis are supposed to have a [[sandbox]], so this one does too.
 
 This site generally runs the latest release of ikiwiki; currently, it runs
 ikiwiki [[!version ]].
diff --git a/doc/plugins/goodstuff.mdwn b/doc/plugins/goodstuff.mdwn
index b2f01d1..ee1bffc 100644
--- a/doc/plugins/goodstuff.mdwn
+++ b/doc/plugins/goodstuff.mdwn
@@ -26,4 +26,4 @@ Currently included:
 * [[toggle]]
 * [[repolist]]
 
-New plugins will be added to this [bundle](http://contentcurator.withknown.com/) from time to time.
+New plugins will be added to this bundle from time to time.
diff --git a/doc/spam_fighting.mdwn b/doc/spam_fighting.mdwn
index 712eb07..619f354 100644
--- a/doc/spam_fighting.mdwn
+++ b/doc/spam_fighting.mdwn
@@ -32,4 +32,9 @@ c2924ce | 2014/01/02 | domtheo9110 | 182.253.51.174
 cd81b9f | 2014/01/03 | domtheo9110 | ?
 e3376ce | 2014/08/19 | Nng_L (OpenID) | 58.186.127.104
 104c606 | 2014/08/19 | tlevine (OpenID) | 82.153.13.48
+4c7f247 | 2015/01/08 | lis (OpenID) | 122.173.219.54
+246678f | 2015/01/08 | lis (OpenID) | 122.173.219.54
+504a6b8 | 2015/01/08 | lis (OpenID) | 122.173.219.54
+b500d89 | 2015/01/08 | lis (OpenID) | 122.173.219.54
+3ae8a75 | 2015/01/08 | lis (OpenID) | 122.173.219.54
 """]]

diff --git a/doc/plugins/goodstuff.mdwn b/doc/plugins/goodstuff.mdwn
index ee1bffc..b2f01d1 100644
--- a/doc/plugins/goodstuff.mdwn
+++ b/doc/plugins/goodstuff.mdwn
@@ -26,4 +26,4 @@ Currently included:
 * [[toggle]]
 * [[repolist]]
 
-New plugins will be added to this bundle from time to time.
+New plugins will be added to this [bundle](http://contentcurator.withknown.com/) from time to time.

diff --git a/doc/blog.mdwn b/doc/blog.mdwn
index c4a379f..3c6300b 100644
--- a/doc/blog.mdwn
+++ b/doc/blog.mdwn
@@ -1,4 +1,11 @@
-Ikiwiki allows turning any page into a weblog, by using the
+Ikiwiki allows turning any page into a [weblog](https://www.listango.com/blog), by using the
 [[ikiwiki/directive/inline]] [[ikiwiki/directive]]. For example:
 
 	\[[!inline pages="blog/* and !*/Discussion" show="10" rootpage="blog"]]
+
+
+
+
+Ok, great thank you I was looking to deep. I have managed to assign it to a class but the only problem I am experiencing now is when I assign a article to "technology" than go back out and click on my " technology" on my main parent class menu item it will not display in "technology" the way I would like all I would like to do is just organize the blogs into sections where I would assign them parent classes and have them show up when clicked on by the visitor like to click on "technology" on my menu bar and have that person dive into [blog](https://readingpack.com/blog) relevant to that category
+
+something like [newsylicious.com](http://newsylicious.wordpress.com/) may be a great example of my goal...when you hover over TECH. with your mouse the menu drops down and when you click on the context you're interested in it will take you to that page along with other topics relevant to TECH.

diff --git a/doc/index.mdwn b/doc/index.mdwn
index 0a65700..e3a33ad 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -18,7 +18,7 @@ with ikiwiki, and some [[tips]].  Basic documentation for ikiwiki plugins
 and syntax is provided [[here|ikiwiki]]. The [[forum]] is open for
 discussions.
 
-All wikis are supposed to have a [[sandbox]], so [http://fixithere.net/ this one] does too.
+All wikis are supposed to have a [[sandbox]], so [this one](http://fixithere.net/) does too.
 
 This site generally runs the latest release of ikiwiki; currently, it runs
 ikiwiki [[!version ]].

diff --git a/doc/index.mdwn b/doc/index.mdwn
index d6c38f4..0a65700 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -18,7 +18,7 @@ with ikiwiki, and some [[tips]].  Basic documentation for ikiwiki plugins
 and syntax is provided [[here|ikiwiki]]. The [[forum]] is open for
 discussions.
 
-All wikis are supposed to have a [[sandbox]], so this one does too. http://fixithere.net/
+All wikis are supposed to have a [[sandbox]], so [http://fixithere.net/ this one] does too.
 
 This site generally runs the latest release of ikiwiki; currently, it runs
 ikiwiki [[!version ]].

diff --git a/doc/index.mdwn b/doc/index.mdwn
index f4073aa..d6c38f4 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -18,7 +18,7 @@ with ikiwiki, and some [[tips]].  Basic documentation for ikiwiki plugins
 and syntax is provided [[here|ikiwiki]]. The [[forum]] is open for
 discussions.
 
-All wikis are supposed to have a [[sandbox]], so this one does too.
+All wikis are supposed to have a [[sandbox]], so this one does too. http://fixithere.net/
 
 This site generally runs the latest release of ikiwiki; currently, it runs
 ikiwiki [[!version ]].

Document ikiwiki-import, such as it currently is.
diff --git a/doc/convert.mdwn b/doc/convert.mdwn
index a6f19a8..b96ae7a 100644
--- a/doc/convert.mdwn
+++ b/doc/convert.mdwn
@@ -6,5 +6,6 @@ to handle such conversions.
 * [[tips/convert_moinmoin_to_ikiwiki]]
 * [[tips/convert_blogger_blogs_to_ikiwiki]]
 * [[tips/Movable_Type_to_ikiwiki]]
+* [[tips/convert_textpattern_to_ikiwiki]]
 
 In addition, [[JoshTriplett]] has written scripts to convert Twiki sites, see [his page](/users/JoshTriplett) for more information.
diff --git a/doc/tips/convert_textpattern_to_ikiwiki.mdwn b/doc/tips/convert_textpattern_to_ikiwiki.mdwn
new file mode 100644
index 0000000..b6c6e96
--- /dev/null
+++ b/doc/tips/convert_textpattern_to_ikiwiki.mdwn
@@ -0,0 +1,6 @@
+[[Amitai Schlair|schmonz]] wrote an `ikiwiki-import` program that
+currently can only [import from
+Textpattern](https://github.com/schmonz/txp2ikiwiki), and then only
+if configured exactly like the site he imported. But `ikiwiki-import`
+is designed to be extensible, and maybe after a little extending
+it'll be suitable for inclusion in ikiwiki.

Mention schmonz/comments-anonymous-url-vcs
diff --git a/doc/plugins/comments/discussion.mdwn b/doc/plugins/comments/discussion.mdwn
index 2b8add9..0e5c5e6 100644
--- a/doc/plugins/comments/discussion.mdwn
+++ b/doc/plugins/comments/discussion.mdwn
@@ -230,3 +230,24 @@ Any suggestions or hints how to implement this?
 
 > I've implemented this. See [[todo/Restrict_formats_allowed_for_comments]].
 > --[[wentasah]]
+
+## URLs in anonymous-style comments committed directly via VCS
+
+[[!template id=gitbranch branch=schmonz/comments-anonymous-url-vcs author="[[schmonz]]"]]
+
+I recently imported my site from Textpattern into ikiwiki (using
+an `ikiwiki-import` program that may someday make its way into
+ikiwiki proper). Textpattern's comments behave much like ikiwiki's
+anonymous comments, so piping each imported comment through
+`ikiwiki-comment` and regenerating the site with `comments_allowauthor=1`
+preserved almost all the information.
+
+What's missing: if a comment directive has a `url` param, I'd expect
+the rendered page to href the author's name to that URL. This works
+as I expect for new comments added via the CGI, but not for imported
+comments added via the VCS directly.
+
+My branch has a fix that doesn't break `t/comments.t`, doesn't
+appear to break anonymous or signed-in comments via the CGI in any
+way I've tried, and lets me render my (incredibly valuable ;-)
+imported blog comments with full fidelity. OK to commit?

fix link
diff --git a/doc/news/version_3.20150107.mdwn b/doc/news/version_3.20150107.mdwn
index f996157..17e65ea 100644
--- a/doc/news/version_3.20150107.mdwn
+++ b/doc/news/version_3.20150107.mdwn
@@ -1,6 +1,6 @@
 ikiwiki 3.20150107 released with [[!toggle text="these changes"]]
 [[!toggleable text="""
-  [ [[Joey Hess|joeyh]] ]
+  [ [[Joey Hess|joey]] ]
 
   * Added ikiwiki-comment program.
   * Add missing build-depends on `libcgi-formbuilder-perl`, needed for

update news
diff --git a/doc/news/version_3.20140613.mdwn b/doc/news/version_3.20140613.mdwn
deleted file mode 100644
index ab9940a..0000000
--- a/doc/news/version_3.20140613.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-ikiwiki 3.20140613 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * only\_committed\_changes could fail in a git repository merged
-     with git merge -s ours.
-   * Remove google from openid selector, per http://xkcd.com/1361/"""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20150107.mdwn b/doc/news/version_3.20150107.mdwn
new file mode 100644
index 0000000..f996157
--- /dev/null
+++ b/doc/news/version_3.20150107.mdwn
@@ -0,0 +1,43 @@
+ikiwiki 3.20150107 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+  [ [[Joey Hess|joeyh]] ]
+
+  * Added ikiwiki-comment program.
+  * Add missing build-depends on `libcgi-formbuilder-perl`, needed for
+    `t/relativity.t`
+  * openid: Stop suppressing the email field on the Preferences page.
+  * Set Debian package maintainer to Simon McVittie as I'm retiring from
+    Debian.
+
+  [ [[Simon McVittie|smcv]] ]
+
+  * calendar: add `calendar_autocreate` option, with which `ikiwiki --refresh`
+    can mostly supersede the `ikiwiki-calendar` command.
+    Thanks, Louis Paternault
+  * search: add more classes as a hook for CSS. Thanks, sajolida
+  * core: generate HTML5 by default, but keep avoiding new elements
+    like `<section>` that require specific browser support unless `html5` is
+    set to 1.
+  * Tell mobile browsers to draw our pages in a device-sized viewport,
+    not an 800-1000px viewport designed to emulate a desktop/laptop browser.
+  * Add new `responsive_layout` option which can be set to 0 if your custom
+    CSS only works in a large viewport.
+  * style.css, actiontabs, blueview, goldtype, monochrome: adjust layout
+    below 600px ("responsive layout") so that horizontal scrolling is not
+    needed on smartphone browsers or other small viewports.
+  * core: new `libdirs` option alongside `libdir`. Thanks, Louis Paternault
+
+  [ [[Amitai Schlair|schmonz]] ]
+
+  * core: log a debug message before waiting for the lock.
+    Thanks, Mark Jason Dominus
+  * build: in po/Makefile, use the same `$(MAKE)` as the rest of the build.
+    Thanks, ttw
+  * blogspam: use the 2.0 JSON API (the 1.0 XML-RPC API has been EOL'd).
+    Closes: [[!debbug 774441]]
+
+  [ [[Joey Hess|joey]] ]
+
+  * po: If msgmerge falls over on a problem po file, print a warning
+    message, but don't let this problem crash ikiwiki entirely.
+"""]]

blogspam uses JSON instead of RPC::XML now.
diff --git a/doc/plugins/blogspam.mdwn b/doc/plugins/blogspam.mdwn
index 9c4072a..745fc48 100644
--- a/doc/plugins/blogspam.mdwn
+++ b/doc/plugins/blogspam.mdwn
@@ -10,7 +10,7 @@ stored in a queue for moderation by an admin.
 To check for and moderate comments, log in to the wiki as an admin,
 go to your Preferences page, and click the "Comment Moderation" button.
 
-The plugin requires the [[!cpan RPC::XML]] perl module.
+The plugin requires the [[!cpan JSON]] perl module.
 
 You can control how content is tested via the `blogspam_options` setting.
 The list of options is [here](http://blogspam.net/api/2.0/testComment.html#options).

update link to new protocol
diff --git a/doc/plugins/blogspam.mdwn b/doc/plugins/blogspam.mdwn
index 5ced33b..9c4072a 100644
--- a/doc/plugins/blogspam.mdwn
+++ b/doc/plugins/blogspam.mdwn
@@ -13,7 +13,7 @@ go to your Preferences page, and click the "Comment Moderation" button.
 The plugin requires the [[!cpan RPC::XML]] perl module.
 
 You can control how content is tested via the `blogspam_options` setting.
-The list of options is [here](http://blogspam.net/api/1.0/testComment.html#options).
+The list of options is [here](http://blogspam.net/api/2.0/testComment.html#options).
 By default, the options are configured in a way that is appropriate for
 wiki content. This includes turning off some of the more problematic tests.
 An interesting option for testing is `fail`, by setting it (e.g.,

Update blogspam to the 2.0 API.
diff --git a/IkiWiki/Plugin/blogspam.pm b/IkiWiki/Plugin/blogspam.pm
index e48ed72..3eb4cf8 100644
--- a/IkiWiki/Plugin/blogspam.pm
+++ b/IkiWiki/Plugin/blogspam.pm
@@ -6,7 +6,8 @@ use strict;
 use IkiWiki 3.00;
 use Encode;
 
-my $defaulturl='http://test.blogspam.net:8888/';
+my $defaulturl='http://test.blogspam.net:9999/';
+my $client;
 
 sub import {
 	hook(type => "getsetup", id => "blogspam",  call => \&getsetup);
@@ -33,14 +34,14 @@ sub getsetup () {
 			type => "string",
 			example => "blacklist=1.2.3.4,blacklist=8.7.6.5,max-links=10",
 			description => "options to send to blogspam server",
-			link => "http://blogspam.net/api/testComment.html#options",
+			link => "http://blogspam.net/api/2.0/testComment.html#options",
 			safe => 1,
 			rebuild => 0,
 		},
 		blogspam_server => {
 			type => "string",
 			default => $defaulturl,
-			description => "blogspam server XML-RPC url",
+			description => "blogspam server JSON url",
 			safe => 1,
 			rebuild => 0,
 		},
@@ -51,11 +52,23 @@ sub checkconfig () {
 	# if the module is missing when a spam is posted would not
 	# let the admin know about the problem.
 	eval q{
-		use RPC::XML;
-		use RPC::XML::Client;
-		$RPC::XML::ENCODING = 'utf-8';
+		use JSON;
+		use HTTP::Request;
 	};
 	error $@ if $@;
+
+	eval q{use LWPx::ParanoidAgent};
+	if (!$@) {
+		$client=LWPx::ParanoidAgent->new(agent => $config{useragent});
+	}
+	else {
+		eval q{use LWP};
+		if ($@) {
+			error $@;
+			return;
+		}
+		$client=useragent();
+	}
 }
 
 sub checkcontent (@) {
@@ -77,8 +90,6 @@ sub checkcontent (@) {
 	my $url=$defaulturl;
 	$url = $config{blogspam_server} if exists $config{blogspam_server};
 
-	my $client = RPC::XML::Client->new($url);
-
 	my @options = split(",", $config{blogspam_options})
 		if exists $config{blogspam_options};
 
@@ -107,19 +118,28 @@ sub checkcontent (@) {
 		site => encode_utf8($config{url}),
 		version => "ikiwiki ".$IkiWiki::version,
 	);
-	my $res = $client->send_request('testComment', \%req);
+	eval q{use JSON; use HTTP::Request}; # errors handled in checkconfig()
+	my $res = $client->request(
+		HTTP::Request->new(
+			'POST',
+			$url,
+			[ 'Content-Type' => 'application/json' ],
+			to_json(\%req),
+		),
+	);
 
-	if (! ref $res || ! defined $res->value) {
+	if (! ref $res || ! $res->is_success()) {
 		debug("failed to get response from blogspam server ($url)");
 		return undef;
 	}
-	elsif ($res->value =~ /^SPAM:(.*)/) {
+	my $details = from_json($res->content);
+	if ($details->{result} eq 'SPAM') {
 		eval q{use Data::Dumper};
-		debug("blogspam server reports ".$res->value.": ".Dumper(\%req));
-		return gettext("Sorry, but that looks like spam to <a href=\"http://blogspam.net/\">blogspam</a>: ").$1;
+		debug("blogspam server reports $details->{reason}: ".Dumper(\%req));
+		return gettext("Sorry, but that looks like spam to <a href=\"http://blogspam.net/\">blogspam</a>: ").$details->{reason};
 	}
-	elsif ($res->value ne 'OK') {
-		debug("blogspam server failure: ".$res->value);
+	elsif ($details->{result} ne 'OK') {
+		debug("blogspam server failure: ".$res->content);
 		return undef;
 	}
 	else {
diff --git a/debian/changelog b/debian/changelog
index b8a7493..de3ee01 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -30,6 +30,7 @@ ikiwiki (3.20141017) UNRELEASED; urgency=medium
     Thanks, Mark Jason Dominus
   * build: in po/Makefile, use the same $(MAKE) as the rest of the build.
     Thanks, ttw
+  * blogspam: use the 2.0 JSON API (the 1.0 XML-RPC API has been EOL'd).
 
   [ Joey Hess ]
   * po: If msgmerge falls over on a problem po file, print a warning
diff --git a/doc/bugs/blogspam_server_stopped_supporting_xml-rpc.mdwn b/doc/bugs/blogspam_server_stopped_supporting_xml-rpc.mdwn
index b8fe329..596c58e 100644
--- a/doc/bugs/blogspam_server_stopped_supporting_xml-rpc.mdwn
+++ b/doc/bugs/blogspam_server_stopped_supporting_xml-rpc.mdwn
@@ -2,3 +2,5 @@
 
 Unfortunately, this affects the blogspam plugin. I suspect it no
 longer detects spam at all. --[[Joey]]
+
+> Just updated blogspam to the 2.0 API. [[done]] --[[schmonz]]

bug that anarcat's pump feed reminded me of
diff --git a/doc/bugs/blogspam_server_stopped_supporting_xml-rpc.mdwn b/doc/bugs/blogspam_server_stopped_supporting_xml-rpc.mdwn
new file mode 100644
index 0000000..b8fe329
--- /dev/null
+++ b/doc/bugs/blogspam_server_stopped_supporting_xml-rpc.mdwn
@@ -0,0 +1,4 @@
+<http://blog.steve.org.uk/an_anniversary_and_a_retirement.html>
+
+Unfortunately, this affects the blogspam plugin. I suspect it no
+longer detects spam at all. --[[Joey]]

1.0 API obsolete, rendered unavailable yesterday.
diff --git a/doc/plugins/blogspam.mdwn b/doc/plugins/blogspam.mdwn
index 3dd017f..5ced33b 100644
--- a/doc/plugins/blogspam.mdwn
+++ b/doc/plugins/blogspam.mdwn
@@ -13,7 +13,7 @@ go to your Preferences page, and click the "Comment Moderation" button.
 The plugin requires the [[!cpan RPC::XML]] perl module.
 
 You can control how content is tested via the `blogspam_options` setting.
-The list of options is [here](http://blogspam.net/api/testComment.html#options).
+The list of options is [here](http://blogspam.net/api/1.0/testComment.html#options).
 By default, the options are configured in a way that is appropriate for
 wiki content. This includes turning off some of the more problematic tests.
 An interesting option for testing is `fail`, by setting it (e.g.,

I'm finally using ikiwiki (for one more site)!
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index a8ae0ff..733edfd 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -205,3 +205,4 @@ Personal sites and blogs
 * [Stig Sandbeck Mathisen](http://fnord.no/) - Personal site and blog, with a bootstrap theme, and varnish frontend.
 * Kalle Söderman: [Seen Architecture](http://img.kalleswork.net), [Stockholm Project](http://stockholm.kalleswork.net) - Mainly -image galleries using the album and osm plugins with a customized html5 theme.
 * [James Technotes](http://jamestechnotes.com), my [wiki](http://jamestechnotes.com) and [blog](http://jamestechnotes.com/blog).
+* [Amitai Schlair's site](http://www.schmonz.com/)
diff --git a/doc/users/schmonz.mdwn b/doc/users/schmonz.mdwn
index dcbb8df..04b3254 100644
--- a/doc/users/schmonz.mdwn
+++ b/doc/users/schmonz.mdwn
@@ -8,6 +8,7 @@ pages="!*/Discussion and ((link(users/schmonz) and plugins/* and !plugins/openid
 
 ## Public
 
+* [My personal web site](http://www.schmonz.com/)
 * [A major open-source project's wiki](http://wiki.netbsd.org) (with
   the [[rcs/cvs]] plugin)
 * [An undergraduate group's university-provided-static-hosted
@@ -24,9 +25,3 @@ pages="!*/Discussion and ((link(users/schmonz) and plugins/* and !plugins/openid
 * On my laptop, personal to-do and scratch space
 * [A small personal site](http://podcast.schmonz.com/) (happily hosted at
   [Branchable](http://www.branchable.com/))
-
-## Non-yet-ikiwiki
-
-* [My personal web site](http://www.schmonz.com/) (to be happily
-  hosted at Branchable when it's running a post-[[todo/fancypodcast]]
-  release)

Info about how KJS is using/tweaking ikiwiki
diff --git a/doc/users/kjs.mdwn b/doc/users/kjs.mdwn
index d65b663..7a80072 100644
--- a/doc/users/kjs.mdwn
+++ b/doc/users/kjs.mdwn
@@ -2,10 +2,46 @@
 
 Websites using ikiwiki: 
 
+* <http://kalleswork.net>
 * <http://img.kalleswork.net>
 * <http://stockholm.kalleswork.net>
 
 
-Mostly using ikiwiki with the [[/plugins/contrib/album/]] and [[plugins/osm]] plugins. My git repo with tweaks including the simplebw theme and changes to the [[plugins/contrib/album]] templates can be cloned via http at:
+Mostly using ikiwiki with the [[/plugins/contrib/album/]] and [[plugins/osm]]
+plugins. My git repo with tweaks including the simplebw theme and various
+changes to the [[plugins/contrib/album]] plugin and templates can be cloned at:
 
-* <http://src.kalleswork.net/ikiwiki.git>
+	git://src.kalleswork.net/ikiwiki.git
+
+Note that the default branch kalleswork.net-current is all my changes piled
+into one branch. **I can't code (clone my repo above if you don't believe me!)
+so noone should run my code without checking it first.** I can't stress this
+enough.
+
+The main changes I've done are the following
+
+* How you browse through the images. The interface i simplified and you click
+the image to view the next rather than download it.
+* Added separate download link for full resolution image unless size is set to
+full in the album directive.
+* Extract metadata from exif/xmp data in the image according to preexisting
+pattern in the album plugin. This was done using
+[Image::ExifTool](http://www.sno.phy.queensu.ca/~phil/exiftool/ExifTool.html)
+* Autogenerate [[ikiwiki/directive/tag/]]s from exif:Subject if possible.
+* Use the albumitem template to create tag pages with thumbnails.
+* Additional albumpreview template which allows you to define a thumbnail that
+link to the album. Useful for visual index of albums.
+* Extract GPS data and populate a [[plugins/osm]] waypoint if available.
+* Add span around osm icon to allow for styling.
+
+For my public websites above the image metadata is "manually" ie shell script
+populated but I'll eventually start using automatic metadata for new images.
+
+A dump of my debug site with relatively low res images can be found at
+<http://src.kalleswork.net/ikidebug/> where the current behavior sans maps can be
+tested. Its full of noise so see my proper sites above for how it should look.
+
+* <http://src.kalleswork.net/ikidebug/album01> contains scaled images with
+download link
+* <http://src.kalleswork.net/ikidebug/album02> contains images with album size
+set to "full"

closing this
diff --git a/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn b/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
index 4b22e12..26e72ae 100644
--- a/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
+++ b/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
@@ -23,6 +23,13 @@ index 5b0eb74..94adb0f 100755
 > understand the problem it's trying to fix? --[[schmonz]]
 >> Thinking about this more and perhaps this is incorrect?  Or more accurately, I may have been using `DESTDIR` incorrectly.  I'm unsure.  I don't currently have access to the correct build environment but my best recollection is that I was using the `DESTDIR` to set base install directory for multiple working copies.  Of course, the `DESTDIR` is normally a staging install for the root directory (i.e. not normally visible during runtime).  I'm not 100% on the use of `DESTDIR` but perhaps you are?  Otherwise, leave this, and I'll adjust that build environment to rework the `PREFIX` variable instead.  -- [[ttw]]
 
+>>> Maybe one of these explanations from
+>>> [GNU](https://www.gnu.org/prep/standards/html_node/DESTDIR.html) or
+>>> [pkgsrc](https://www.netbsd.org/docs/pkgsrc/fixes.html#destdir-support)
+>>> clarifies `DESTDIR` for you. If you can narrow down a specific,
+>>> reproducible problem that setting `DESTDIR` helps solve, please do
+>>> report it here. Until then, marking this [[done]]. --[[schmonz]]
+
 Also, the `po/Makefile` presumes the use of `make`, explicitly.  If you use another build tool it fails (ironically I was actually using `gmake` in non-gnu environment so it wasn't aliased to `make`).  Switch from the explicit call to the generic recall variable `$(MAKE)`.
 
 [[!format diff """

Suggest to drop the first patch, probably incorrect.
diff --git a/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn b/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
index 0a80647..4b22e12 100644
--- a/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
+++ b/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
@@ -21,6 +21,7 @@ index 5b0eb74..94adb0f 100755
 > noticed any problems there. Would you be willing to do one more
 > build in your environment without this change, so that we can
 > understand the problem it's trying to fix? --[[schmonz]]
+>> Thinking about this more and perhaps this is incorrect?  Or more accurately, I may have been using `DESTDIR` incorrectly.  I'm unsure.  I don't currently have access to the correct build environment but my best recollection is that I was using the `DESTDIR` to set base install directory for multiple working copies.  Of course, the `DESTDIR` is normally a staging install for the root directory (i.e. not normally visible during runtime).  I'm not 100% on the use of `DESTDIR` but perhaps you are?  Otherwise, leave this, and I'll adjust that build environment to rework the `PREFIX` variable instead.  -- [[ttw]]
 
 Also, the `po/Makefile` presumes the use of `make`, explicitly.  If you use another build tool it fails (ironically I was actually using `gmake` in non-gnu environment so it wasn't aliased to `make`).  Switch from the explicit call to the generic recall variable `$(MAKE)`.
 

Applied one patch, need more info for the other.
diff --git a/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn b/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
index 4b84e56..0a80647 100644
--- a/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
+++ b/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
@@ -16,6 +16,12 @@ index 5b0eb74..94adb0f 100755
                 'XML::Simple'           => "0",
 """]]
 
+> This change certainly looks plausible, but I maintain a package
+> of ikiwiki in a build system that sets `DESTDIR`, and I've not
+> noticed any problems there. Would you be willing to do one more
+> build in your environment without this change, so that we can
+> understand the problem it's trying to fix? --[[schmonz]]
+
 Also, the `po/Makefile` presumes the use of `make`, explicitly.  If you use another build tool it fails (ironically I was actually using `gmake` in non-gnu environment so it wasn't aliased to `make`).  Switch from the explicit call to the generic recall variable `$(MAKE)`.
 
 [[!format diff """
@@ -34,6 +40,11 @@ index 5ec4a15..4d1d33e 100644
         cd .. && ./Makefile.PL
 """]]
 
+> This change looks more obviously correct, and I understand exactly
+> I haven't encountered the problem you have (my build system ensures
+> that `make` gets me `gmake` for ikiwiki). Cherry-picked, with amended
+> commit message. --[[schmonz]]
+
 Note following comments by [[Joey]] via github
 
 > These are not mergeable in their current state.

diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 9aeb10d..bfc1bf4 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -19,6 +19,11 @@ pre formated text?
 >
 >> Without a space works too.
 >>> to three levels
+
+
+Azerty
+** Qsdf **
+
 >
 > Back to the first level.
 >

Create new TODO for minor makefile patches
diff --git a/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn b/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
new file mode 100644
index 0000000..4b84e56
--- /dev/null
+++ b/doc/todo/Add_DESTDIR_to_the___39__pm__95__filter__39___and_use_MAKE_in___39__po__47__Makefile__39__.mdwn
@@ -0,0 +1,65 @@
+The `PM_FILTER` doesn't include the `DESTDIR` variable.  This means that, if you use it with your build, it's incoherent to the rest of the build; i.e. the `INSTALLDIR_AUTOREPLACE` doesn't include it.  Honestly I can't recall what the final effect of that was but the following [[patch]] fixed it.
+
+[[!format diff """
+diff --git a/Makefile.PL b/Makefile.PL
+index 5b0eb74..94adb0f 100755
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -194,7 +194,7 @@ coverage:
+ WriteMakefile(
+        NAME            => 'IkiWiki',
+        PREFIX          => "/usr/local",
+-       PM_FILTER       => './pm_filter $(PREFIX) $(VER) $(PROBABLE_INST_LIB)',
++       PM_FILTER       => './pm_filter $(DESTDIR)$(PREFIX) $(VER) $(PROBABLE_INST_LIB)',
+        MAN1PODS        => {},
+        PREREQ_PM       => {
+                'XML::Simple'           => "0",
+"""]]
+
+Also, the `po/Makefile` presumes the use of `make`, explicitly.  If you use another build tool it fails (ironically I was actually using `gmake` in non-gnu environment so it wasn't aliased to `make`).  Switch from the explicit call to the generic recall variable `$(MAKE)`.
+
+[[!format diff """
+diff --git a/po/Makefile b/po/Makefile
+index 5ec4a15..4d1d33e 100644
+--- a/po/Makefile
++++ b/po/Makefile
+@@ -84,7 +84,7 @@ underlays: ../ikiwiki.out underlays_copy_stamp
+        ../ikiwiki.out -libdir .. -setup underlay.setup -refresh
+ 
+ ../ikiwiki.out: ../Makefile
+-       make -C .. ikiwiki.out
++       $(MAKE) -C .. ikiwiki.out
+ 
+ ../Makefile: ../Makefile.PL
+        cd .. && ./Makefile.PL
+"""]]
+
+Note following comments by [[Joey]] via github
+
+> These are not mergeable in their current state.
+>
+> *Pull 'DESTDIR' update to 'Makefile.PL' from mixed-master.*
+>
+> This doesn't explain
+>
+> * what the problem was
+> * how the change fixed it
+> * why the change is correct
+
+>> No, I suppose not; I won't explain.  Hopefully the above clarifies.  -- [[ttw]]
+
+> *Re-merge from 'joeyh' to new, clean head.*
+>
+> I have no idea what the above commit is doing, but it somehow makes changes to 432 files?!
+
+>> Yeah, sort of.  I'm not very good with computers ... specifically, with `git` and stuff.  The diff between my `master` and your `master` is only two files so hopefully it *is* actually doing what's intended (that is, those changes are from your repository into my own -- I "rebased" my own in an attempt to simplify things).  Anyway. -- [[ttw]]
+
+> *Pull the 'po/Makefile' change from the mixed-master.*
+>
+> This one is adding a $(MAKE) where there was a make. Which is fine, but the commit message is again, horrible. What is the mixed-master? Describe the change you are making, not your internal process for making it.
+
+>> Note to others, `graft` from `hg` doesn't pull original commit messages the way you wish it did (or I did something wrong ... more likely). -- [[ttw]]
+
+> Also, please don't use github pull requests for ikiwiki. Post todo items on ikiwiki.info with a link to your git repository and branches to be merged.
+
+>> NP.  [[http://github.com/ttw/ikiwiki]]; `master` branch. -- [[ttw]]

update
diff --git a/doc/tipjar.mdwn b/doc/tipjar.mdwn
index 37968e0..17599e0 100644
--- a/doc/tipjar.mdwn
+++ b/doc/tipjar.mdwn
@@ -19,6 +19,7 @@ Thanks to the following people for their kind contributions:
 * Amitai Schlair
 * Luca Capello
 * Patrick ZAJDA
+* Fergus Cameron
 
 (Note that this page is locked to prevent anyone from tampering with the PayPal link.
 If you prefer your donation *not* be listed here, let [[Joey]] know.)

de-emphasize contributions to Joey; ikiwiki has more developers than just me. Donations have been used to help cover hosting and domain name costs, and so just say that's what they're for.
diff --git a/doc/tipjar.mdwn b/doc/tipjar.mdwn
index d23dc10..37968e0 100644
--- a/doc/tipjar.mdwn
+++ b/doc/tipjar.mdwn
@@ -1,5 +1,5 @@
 Ikiwiki is [[FreeSoftware]], but you're also free to show your appreciation
-to [[Joey]] or help offset hosting costs with a donation in any amount you
+by helping to offset hosting costs with a donation in any amount you
 choose. If you'd like to fund development of a specific feature, see the
 [[consultants]] page.
 

initial creation
diff --git a/doc/forum/Blog_pages.mdwn b/doc/forum/Blog_pages.mdwn
new file mode 100644
index 0000000..4ff1e95
--- /dev/null
+++ b/doc/forum/Blog_pages.mdwn
@@ -0,0 +1,3 @@
+How can I add an "older posts" link to my blog? I understand trail can be used for moving between individual posts, but how do I move between pages of blog posts?
+
+Thanks, Jamie

Fix getlibdirs when libdirs is unset
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 41baa66..7afd579 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -569,7 +569,10 @@ sub getsetup () {
 }
 
 sub getlibdirs () {
-	my @libdirs = @{$config{libdirs}};
+	my @libdirs;
+	if ($config{libdirs}) {
+		@libdirs = @{$config{libdirs}};
+	}
 	if (length $config{libdir}) {
 		push @libdirs, $config{libdir};
 	}
diff --git a/doc/bugs/getlibdirs_function_failure.mdwn b/doc/bugs/getlibdirs_function_failure.mdwn
index 68d4326..ac909f7 100644
--- a/doc/bugs/getlibdirs_function_failure.mdwn
+++ b/doc/bugs/getlibdirs_function_failure.mdwn
@@ -11,3 +11,5 @@ This error is triggered when $config{libdirs} is undefined; it didn't happen in
 A simple patch would be to alter that line to this:
 
         my @libdirs = $config{libdirs} ? @{$config{libdirs}} : ();
+
+> [[Fixed|done]], sorry about that --[[smcv]]

bug with patch
diff --git a/doc/bugs/getlibdirs_function_failure.mdwn b/doc/bugs/getlibdirs_function_failure.mdwn
new file mode 100644
index 0000000..68d4326
--- /dev/null
+++ b/doc/bugs/getlibdirs_function_failure.mdwn
@@ -0,0 +1,13 @@
+Up-to-date version today (commit 287231f7d29374264c2cd23818d5cb9d607d33e9). Now "make test" fails with the following error:
+
+        Error:  Can't use an undefined value as an ARRAY reference at /home/kat/files/repos/ikiwiki_master/blib/lib/IkiWiki.pm line 570.
+
+Looked up line 570, it's the first line of the "getlibdirs" function.
+
+        my @libdirs = @{$config{libdirs}};
+
+This error is triggered when $config{libdirs} is undefined; it didn't happen in the previous version because more checking was done before the value was dereferenced.
+
+A simple patch would be to alter that line to this:
+
+        my @libdirs = $config{libdirs} ? @{$config{libdirs}} : ();

libdirs option: I agree
diff --git a/doc/todo/support_multiple_perl_libraries.mdwn b/doc/todo/support_multiple_perl_libraries.mdwn
index 89bef40..579e357 100644
--- a/doc/todo/support_multiple_perl_libraries.mdwn
+++ b/doc/todo/support_multiple_perl_libraries.mdwn
@@ -49,4 +49,8 @@ I think the change is a one-liner, but I put this here for discussion before att
 >>>> instead: ikiwiki will now search each item of `$config{libdirs}`, then
 >>>> `$config{libdir}`. [[done]] --[[smcv]]
 
+>>>>> Good. I cannot see any justification apart from historical reasons, but I
+>>>>> agree with your choice.
+>>>>> -- [[Louis|spalax]]
+
 [[!taglink wishlist]]

diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
index e546ec5..fef64dd 100644
--- a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
@@ -4,7 +4,7 @@ The rest of the wiki continues to work, but only "Content-type: text/html" gets
 
 * Fresh ikiwiki --setup of 3.20141016-1 
 * Nginx
-EDIT: Arch Linux, built ikiwiki from AUR
+* EDIT: Arch Linux, built ikiwiki from AUR
 
 Would this be something I'm doing wrong or a bug?
 

diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
index 568abbb..e546ec5 100644
--- a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
@@ -4,7 +4,7 @@ The rest of the wiki continues to work, but only "Content-type: text/html" gets
 
 * Fresh ikiwiki --setup of 3.20141016-1 
 * Nginx
-EDIT: Arch Linux, built ikiwiki form AUR
+EDIT: Arch Linux, built ikiwiki from AUR
 
 Would this be something I'm doing wrong or a bug?
 

diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
index d1d3505..568abbb 100644
--- a/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page.mdwn
@@ -4,5 +4,7 @@ The rest of the wiki continues to work, but only "Content-type: text/html" gets
 
 * Fresh ikiwiki --setup of 3.20141016-1 
 * Nginx
+EDIT: Arch Linux, built ikiwiki form AUR
 
 Would this be something I'm doing wrong or a bug?
+

Added a comment: Apologies
diff --git a/doc/forum/global__95__sidebars_breaks_my_web_setup_page/comment_2_52e045d33c5aab67d37dba35536ecec6._comment b/doc/forum/global__95__sidebars_breaks_my_web_setup_page/comment_2_52e045d33c5aab67d37dba35536ecec6._comment
new file mode 100644
index 0000000..093f80f
--- /dev/null
+++ b/doc/forum/global__95__sidebars_breaks_my_web_setup_page/comment_2_52e045d33c5aab67d37dba35536ecec6._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="Veyrdite"
+ subject="Apologies"
+ date="2014-12-12T01:32:56Z"
+ content="""
+I'm a horrible person.  Rather than working out what caused the issue I instead setup ikiwiki on Debian Stable (which was going to be my final platform for the server anyway). 
+
+My debugging experience with cgi and webservers is limited, but I will give it another go on my Arch box to see if I can find a resolution.  Other users might be affected by the same issue.
+"""]]

Correct minor spelling error
diff --git a/doc/plugins/notifyemail.mdwn b/doc/plugins/notifyemail.mdwn
index 302979e..642b266 100644
--- a/doc/plugins/notifyemail.mdwn
+++ b/doc/plugins/notifyemail.mdwn
@@ -1,5 +1,5 @@
-This plugin allows uses to subscribe to pages, and emails them when
-they are created or changed.
+This plugin allows users to subscribe to pages, and emails them when
+those pages are created or changed.
 
 It needs the [[!cpan Mail::SendMail]] perl module, and sends mail
 using the local MTA.

diff --git a/doc/plugins/contrib/org_mode.mdwn b/doc/plugins/contrib/org_mode.mdwn
index 539423c..11153be 100644
--- a/doc/plugins/contrib/org_mode.mdwn
+++ b/doc/plugins/contrib/org_mode.mdwn
@@ -1,5 +1,3 @@
-[[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
-
 Summary
 =======
 
@@ -12,6 +10,8 @@ be a bit faster than the older plugin, as well as properly handling
 [[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
 plugin.  An example of its use can be found at my [blog][chrismgray-blog].
 
+[[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
+
 Original plugin
 ===============
 

move this with the real plugins, since it's now implemented - not sure it was still in todos
diff --git a/doc/plugins/contrib/org_mode.mdwn b/doc/plugins/contrib/org_mode.mdwn
index bb3b7de..539423c 100644
--- a/doc/plugins/contrib/org_mode.mdwn
+++ b/doc/plugins/contrib/org_mode.mdwn
@@ -1,12 +1,19 @@
 [[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
 
-summary
+Summary
 =======
 
-Add a plugin for handling files written in [org-mode][].
+A plugin for handling files written in [org-mode][].
 
-notes
-=====
+A complete rewrite of the plugin can be found
+[here][chrismgray-rewrite].  It uses a
+dedicated emacs instance to parse the org-mode files.  Thus, it should
+be a bit faster than the older plugin, as well as properly handling
+[[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
+plugin.  An example of its use can be found at my [blog][chrismgray-blog].
+
+Original plugin
+===============
 
 This is an updated form of [Manoj Srivastava's plugin][MS].  You can
 see the plugin [in action][example] on my blog.
@@ -18,19 +25,10 @@ but Ikiwiki currently (as far as I know) lacks a method to escape
 inserted HTML depending on which plugins will be used during the
 [[htmlize phase|plugins/write#index11h3]].
 
-new plugin
-==========
-
-A complete rewrite of the plugin can be found
-[here][chrismgray-rewrite].  It uses a
-dedicated emacs instance to parse the org-mode files.  Thus, it should
-be a bit faster than the older plugin, as well as properly handling
-[[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
-plugin.  An example of its use can be found at my [blog][chrismgray-blog].
-
 [org-mode]: http://orgmode.org/
 [MS]: http://www.golden-gryphon.com/blog/manoj/blog/2008/06/08/Using_org-mode_with_Ikiwiki/
 [example]: http://blog.tremily.us/posts/Git/notes/
 [raw]: http://orgmode.org/manual/Quoting-HTML-tags.html
 [chrismgray-rewrite]: https://github.com/chrismgray/ikiwiki-org-plugin
 [chrismgray-blog]: http://chrismgray.github.com
+

update for rename of todo/org_mode/Discussion.mdwn to plugins/contrib/org_mode/Discussion.mdwn
diff --git a/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn b/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
index 4ac817a..a05b367 100644
--- a/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
+++ b/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
@@ -1,4 +1,4 @@
-If you look at [[plugins/contrib/org_mode]], the link to the Discussion page is not there (has a question mark), as if it didn't exist. But--through the search--I discovered that the Discussion page does exist actually: [[todo/org mode/Discussion]]. 
+If you look at [[plugins/contrib/org_mode]], the link to the Discussion page is not there (has a question mark), as if it didn't exist. But--through the search--I discovered that the Discussion page does exist actually: [[plugins/contrib/org_mode/Discussion]]. 
 
 So, there is a bug that prevents a link to the existing Discussion page from appearing in the correct way on the corresponding main page. --Ivan Z.
 

update for rename of todo/org_mode.mdwn to plugins/contrib/org_mode.mdwn
diff --git a/doc/users/chrismgray.mdwn b/doc/users/chrismgray.mdwn
index b008483..d4068d4 100644
--- a/doc/users/chrismgray.mdwn
+++ b/doc/users/chrismgray.mdwn
@@ -1,4 +1,4 @@
 I'm Chris Gray.  I have an ikiwiki-based blog at
 [[http://chrismgray.github.com]].  I wrote a plugin for
-[[org-mode|todo/org_mode]] files that is probably the first ikiwiki
+[[org-mode|plugins/contrib/org_mode]] files that is probably the first ikiwiki
 plugin written mostly in emacs lisp.

update for rename of todo/org_mode.mdwn to plugins/contrib/org_mode.mdwn
diff --git a/doc/todo/be_more_selective_about_running_hooks.mdwn b/doc/todo/be_more_selective_about_running_hooks.mdwn
index 70a1cb7..768a6d1 100644
--- a/doc/todo/be_more_selective_about_running_hooks.mdwn
+++ b/doc/todo/be_more_selective_about_running_hooks.mdwn
@@ -12,7 +12,7 @@ only do anything if they do.
 > something else, it has no reason to care what the pagetype is. (Same for
 > linkify.) --[[Joey]]
 
->> My [[org-mode|todo/org_mode]] external plugin (which will never
+>> My [[org-mode|plugins/contrib/org_mode]] external plugin (which will never
 >> really make sense to include with ikiwiki I think) does this.  I
 >> think that most plugins defining alternate wiki syntaxes would as
 >> well. --[[chrismgray]]

update for rename of todo/org_mode.mdwn to plugins/contrib/org_mode.mdwn
diff --git a/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn b/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
index 9ba4ede..4ac817a 100644
--- a/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
+++ b/doc/bugs/Existing_Discussion_pages_appear_as_non-existing.mdwn
@@ -1,4 +1,4 @@
-If you look at [[todo/org mode]], the link to the Discussion page is not there (has a question mark), as if it didn't exist. But--through the search--I discovered that the Discussion page does exist actually: [[todo/org mode/Discussion]]. 
+If you look at [[plugins/contrib/org_mode]], the link to the Discussion page is not there (has a question mark), as if it didn't exist. But--through the search--I discovered that the Discussion page does exist actually: [[todo/org mode/Discussion]]. 
 
 So, there is a bug that prevents a link to the existing Discussion page from appearing in the correct way on the corresponding main page. --Ivan Z.
 

rename todo/org_mode.mdwn to plugins/contrib/org_mode.mdwn
diff --git a/doc/plugins/contrib/org_mode.mdwn b/doc/plugins/contrib/org_mode.mdwn
new file mode 100644
index 0000000..bb3b7de
--- /dev/null
+++ b/doc/plugins/contrib/org_mode.mdwn
@@ -0,0 +1,36 @@
+[[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
+
+summary
+=======
+
+Add a plugin for handling files written in [org-mode][].
+
+notes
+=====
+
+This is an updated form of [Manoj Srivastava's plugin][MS].  You can
+see the plugin [in action][example] on my blog.
+
+For reasons discussed in the [[reStructuredText plugin|plugins/rst]],
+wikilinks and other ikiwiki markup that inserts raw HTML can cause
+problems.  Org-mode provides a [means for processing raw HTML][raw],
+but Ikiwiki currently (as far as I know) lacks a method to escape
+inserted HTML depending on which plugins will be used during the
+[[htmlize phase|plugins/write#index11h3]].
+
+new plugin
+==========
+
+A complete rewrite of the plugin can be found
+[here][chrismgray-rewrite].  It uses a
+dedicated emacs instance to parse the org-mode files.  Thus, it should
+be a bit faster than the older plugin, as well as properly handling
+[[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
+plugin.  An example of its use can be found at my [blog][chrismgray-blog].
+
+[org-mode]: http://orgmode.org/
+[MS]: http://www.golden-gryphon.com/blog/manoj/blog/2008/06/08/Using_org-mode_with_Ikiwiki/
+[example]: http://blog.tremily.us/posts/Git/notes/
+[raw]: http://orgmode.org/manual/Quoting-HTML-tags.html
+[chrismgray-rewrite]: https://github.com/chrismgray/ikiwiki-org-plugin
+[chrismgray-blog]: http://chrismgray.github.com
diff --git a/doc/plugins/contrib/org_mode/Discussion.mdwn b/doc/plugins/contrib/org_mode/Discussion.mdwn
new file mode 100644
index 0000000..726590b
--- /dev/null
+++ b/doc/plugins/contrib/org_mode/Discussion.mdwn
@@ -0,0 +1,7 @@
+I don't find org.pm in git branch. The steps are:
+
+1. git clone git://github.com/wking/ikiwiki.git
+2. cd ikiwiki
+3. find . | grep org.pm
+
+I've taken the name from <http://www.golden-gryphon.com/software/misc/org.pm.html>
diff --git a/doc/todo/org_mode.mdwn b/doc/todo/org_mode.mdwn
deleted file mode 100644
index bb3b7de..0000000
--- a/doc/todo/org_mode.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-[[!template id=gitbranch branch=wtk/org author="[[wtk]]"]]
-
-summary
-=======
-
-Add a plugin for handling files written in [org-mode][].
-
-notes
-=====
-
-This is an updated form of [Manoj Srivastava's plugin][MS].  You can
-see the plugin [in action][example] on my blog.
-
-For reasons discussed in the [[reStructuredText plugin|plugins/rst]],
-wikilinks and other ikiwiki markup that inserts raw HTML can cause
-problems.  Org-mode provides a [means for processing raw HTML][raw],
-but Ikiwiki currently (as far as I know) lacks a method to escape
-inserted HTML depending on which plugins will be used during the
-[[htmlize phase|plugins/write#index11h3]].
-
-new plugin
-==========
-
-A complete rewrite of the plugin can be found
-[here][chrismgray-rewrite].  It uses a
-dedicated emacs instance to parse the org-mode files.  Thus, it should
-be a bit faster than the older plugin, as well as properly handling
-[[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
-plugin.  An example of its use can be found at my [blog][chrismgray-blog].
-
-[org-mode]: http://orgmode.org/
-[MS]: http://www.golden-gryphon.com/blog/manoj/blog/2008/06/08/Using_org-mode_with_Ikiwiki/
-[example]: http://blog.tremily.us/posts/Git/notes/
-[raw]: http://orgmode.org/manual/Quoting-HTML-tags.html
-[chrismgray-rewrite]: https://github.com/chrismgray/ikiwiki-org-plugin
-[chrismgray-blog]: http://chrismgray.github.com
diff --git a/doc/todo/org_mode/Discussion.mdwn b/doc/todo/org_mode/Discussion.mdwn
deleted file mode 100644
index 726590b..0000000
--- a/doc/todo/org_mode/Discussion.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I don't find org.pm in git branch. The steps are:
-
-1. git clone git://github.com/wking/ikiwiki.git
-2. cd ikiwiki
-3. find . | grep org.pm
-
-I've taken the name from <http://www.golden-gryphon.com/software/misc/org.pm.html>

please don't rely on me for this bit
diff --git a/doc/bugs/outdated_jquery-ui.mdwn b/doc/bugs/outdated_jquery-ui.mdwn
index 41d3f1b..bcd44e2 100644
--- a/doc/bugs/outdated_jquery-ui.mdwn
+++ b/doc/bugs/outdated_jquery-ui.mdwn
@@ -8,3 +8,9 @@ Amitai gets there first.
 It doesn't look as though we actually use the vulnerable functionality.
 
 --[[smcv]]
+
+> This is more complicated than it looked at first glance because both
+> jquery and jquery-ui have broken API since the version we embed,
+> and we also ship other jquery plugins for [[plugins/attachment]].
+> Perhaps someone who knows jquery could check compatibility and
+> propose a branch? --[[smcv]]

some notes on ikiwiki vs. Markdown
diff --git a/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn b/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn
index bf1ca0e..819f1ac 100644
--- a/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn
+++ b/doc/todo/Fenced_code_blocks___40__from_GitHub_Flavored_Markdown__41__.mdwn
@@ -43,4 +43,22 @@ main = forever $
 > >
 > > ... maybe a bug in Discount... --[[anarcat]]
 
+> > > Discount versions older than 2.1.6 do not support the \`\`\` fences.
+> > > ikiwiki.info (hosted by branchable.com) presumably runs on Debian
+> > > stable, which only has 2.1.3. I am not involved in running Branchable,
+> > > but it seems reasonable to assume that it will be upgraded to 2.1.7
+> > > as part of upgrading to Debian 8 when that is released. --[[smcv]]
+
 > > I strongly support this feature as well! --[[integrii]]
+
+> > > ikiwiki has no support for specific Markdown features: all it does
+> > > is to recognise a Markdown file and give it to a Markdown
+> > > implementation such as [[!cpan Text::Markdown::Discount]].
+> > > If you would like ikiwiki to support a different subset of Markdown,
+> > > please either recommend a better Markdown implementation, or
+> > > report bugs / feature requests to the maintainer of Discount.
+> > >
+> > > In this case it appears there is no code change required in
+> > > ikiwiki (and for that matter, nothing to do in Discount either
+> > > because the feature request has already been implemented),
+> > > so I'm [[closing this todo item|done]]. --[[smcv]]
diff --git a/doc/todo/Track_Markdown_Standardisation_Efforts.mdwn b/doc/todo/Track_Markdown_Standardisation_Efforts.mdwn
index 54a6159..85dfddf 100644
--- a/doc/todo/Track_Markdown_Standardisation_Efforts.mdwn
+++ b/doc/todo/Track_Markdown_Standardisation_Efforts.mdwn
@@ -5,3 +5,13 @@ Just a quick note that some people are making noise about Markdown standardisati
   * <http://johnmacfarlane.net/babelmark2/faq.html#what-are-some-big-questions-that-the-markdown-spec-does-not-answer>
 
 It might be worth following...
+
+> ikiwiki does not implement Markdown: we use a third-party library for that
+> (there are several options, but the recommended one is currently
+> [[!cpan Text::Markdown::Discount]]). We support whatever dialect
+> of Markdown is implemented by the chosen Markdown implementation.
+>
+> As a result, nothing is likely to change in ikiwiki's interpretation of
+> Markdown unless someone either changes the behaviour of Discount,
+> or recommends a different (and hopefully better) third-party library.
+> --[[smcv]]

changelog, close bug
diff --git a/debian/changelog b/debian/changelog
index afe3bb5..824a006 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -23,6 +23,11 @@ ikiwiki (3.20141017) UNRELEASED; urgency=medium
   * style.css, actiontabs, blueview, goldtype, monochrome: adjust layout
     below 600px ("responsive layout") so that horizontal scrolling is not
     needed on smartphone browsers or other small viewports.
+  * core: new libdirs option alongside libdir. Thanks, Louis Paternault
+
+  [ Amitai Schlair ]
+  * core: log a debug message before waiting for the lock.
+    Thanks, Mark Jason Dominus
 
  -- Joey Hess <joeyh@debian.org>  Mon, 20 Oct 2014 12:04:49 -0400
 
diff --git a/doc/todo/support_multiple_perl_libraries.mdwn b/doc/todo/support_multiple_perl_libraries.mdwn
index 6e3fe22..89bef40 100644
--- a/doc/todo/support_multiple_perl_libraries.mdwn
+++ b/doc/todo/support_multiple_perl_libraries.mdwn
@@ -43,5 +43,10 @@ I think the change is a one-liner, but I put this here for discussion before att
 >>> efficient in Python) feel free to improve my [[!taglink patch]].
 >>> [[!template  id=gitbranch branch=spalax/paternal/libdirs browse="https://github.com/paternal/ikiwiki/tree/paternal/libdirs" author="[[Louis|spalax]]"]]
 
+>>>> While reviewing and applying your patch I decided the new
+>>>> "sometimes a list, sometimes not" behaviour of `libdir` was
+>>>> too confusing in documentation, so I made it work like underlaydir(s)
+>>>> instead: ikiwiki will now search each item of `$config{libdirs}`, then
+>>>> `$config{libdir}`. [[done]] --[[smcv]]
 
 [[!taglink wishlist]]

Use templatebody for the templates in the basewiki and docwiki
Now that ikiwiki.info has ikiwiki (>= 3.20140916) we can do this.
diff --git a/doc/templates/gitbranch.mdwn b/doc/templates/gitbranch.mdwn
index 853da92..4ea73c9 100644
--- a/doc/templates/gitbranch.mdwn
+++ b/doc/templates/gitbranch.mdwn
@@ -1,9 +1,11 @@
+[[!templatebody <<ENDBODY
 <div class="infobox">
 Available in a [[!taglink /git]] repository [[!taglink branch|/branches]].<br />
 Branch: <TMPL_IF browse><a href="<TMPL_VAR browse>"></TMPL_IF><TMPL_VAR branch><TMPL_IF browse></a></TMPL_IF><br />
 <TMPL_IF author>Author: <TMPL_VAR author><br /></TMPL_IF>
 </div>
-<TMPL_UNLESS branch>
+ENDBODY]]
+
 This template is used to create an infobox for a git branch. It uses
 these parameters:
 
@@ -13,4 +15,3 @@ these parameters:
   (e.g. github/master)</li>
 <li>author - the author of the branch</li>
 </ul>
-</TMPL_UNLESS>
diff --git a/doc/templates/links.mdwn b/doc/templates/links.mdwn
index 27f81e6..946694d 100644
--- a/doc/templates/links.mdwn
+++ b/doc/templates/links.mdwn
@@ -1,3 +1,4 @@
+[[!templatebody <<ENDBODY
 <div class="infobox">
 [[ikiwiki_logo|logo/ikiwiki.png]]  
 <ul>
@@ -12,3 +13,6 @@
 <li><a href="http://flattr.com/thing/39811/ikiwiki">Flattr ikiwiki</a></li>
 </ul>
 </div>
+ENDBODY]]
+
+This template contains the navigation links used on the front page.
diff --git a/doc/templates/note.mdwn b/doc/templates/note.mdwn
index 9ef5ad9..8de7374 100644
--- a/doc/templates/note.mdwn
+++ b/doc/templates/note.mdwn
@@ -1,11 +1,12 @@
+[[!templatebody <<ENDBODY
 <div class="notebox">
 <TMPL_VAR text>
 </div>
-<TMPL_UNLESS text>
+ENDBODY]]
+
 Use this template to insert a note into a page. The note will be styled to
 float to the right of other text on the page. This template has one
 parameter:
 <ul>
 <li>`text` - the text to display in the note
 </ul>
-</TMPL_UNLESS>
diff --git a/doc/templates/plugin.mdwn b/doc/templates/plugin.mdwn
index 322c494..d36dd5f 100644
--- a/doc/templates/plugin.mdwn
+++ b/doc/templates/plugin.mdwn
@@ -1,3 +1,4 @@
+[[!templatebody <<ENDBODY
 <span class="infobox">
 Plugin: <TMPL_VAR name><br />
 Author: <TMPL_VAR author><br />
@@ -8,7 +9,8 @@ Currently enabled: [[!if test="enabled(<TMPL_VAR name>)" then="yes" else="no"]]<
 </span>
 [[!if test="sourcepage(plugins/contrib/*)" then="""[[!meta title="<TMPL_VAR name> (third party plugin)"]]"""]]
 <TMPL_IF core>[[!tag plugins/type/core]]</TMPL_IF>
-<TMPL_UNLESS name>
+ENDBODY]]
+
 This template is used to create an infobox for an ikiwiki plugin. It uses
 these parameters:
 <ul>
@@ -16,4 +18,3 @@ these parameters:
 <li>author - the author of the plugin
 <li>core - set to a true value if the plugin is enabled by default
 </ul>
-</TMPL_UNLESS>
diff --git a/doc/templates/popup.mdwn b/doc/templates/popup.mdwn
index 92455eb..b721a95 100644
--- a/doc/templates/popup.mdwn
+++ b/doc/templates/popup.mdwn
@@ -1,4 +1,3 @@
-<TMPL_UNLESS mouseover>
 Use this template to create a popup window that is displayed when the mouse
 is over part of the page. This template has two parameters:
 <ul>
@@ -10,7 +9,9 @@ large for good usability.
 </ul>
 Note that browsers that do not support the CSS will display the popup
 inline in the page, inside square brackets.
-</TMPL_UNLESS>
+
+[[templatebody <<ENDBODY
 <span class="popup"><TMPL_VAR mouseover>
 <span class="paren">[</span><span class="balloon"><TMPL_VAR popup></span><span class="paren">]</span>
 </span>
+ENDBODY]]