Recent changes to this wiki:

propose the bootstrap theme
diff --git a/doc/themes/discussion.mdwn b/doc/themes/discussion.mdwn
index ce79d0f..d01b783 100644
--- a/doc/themes/discussion.mdwn
+++ b/doc/themes/discussion.mdwn
@@ -7,3 +7,8 @@ For an example of the theme in action, see: [[https://antportal.com/wiki/]]
 > Shouldn't we just make people post their themes in the [[themes]] page? Or maybe we should make a [[theme market]]? --[[anarcat]]
 
 > I did just that. -- [[anarcat]]
+
+What is the process for merging a theme in Ikiwiki? It seems to me the
+[[Bootstrap theme|http://www2.tblein.eu/posts/How_to_have_a_nice_design_for_ikiwiki/]]
+could improve the options a lot... See the [[theme market]] for the
+links to the actual theme. -- [[anarcat]]

mention the theme market directly here
diff --git a/doc/themes.mdwn b/doc/themes.mdwn
index 7df25e6..e152483 100644
--- a/doc/themes.mdwn
+++ b/doc/themes.mdwn
@@ -3,7 +3,9 @@ ikiwiki a nice look and feel. The local.css [[CSS]] file is left
 free for you to further customize.
 
 Ikiwiki now comes with several themes contributed by users.
-You can enable the [[theme_plugin|plugins/theme]] to use any of these:
+You can enable the [[theme_plugin|plugins/theme]] to use any of
+these, but you can also deploy custom themes maintained by the
+community from the [[theme market]].
 
 [[!img actiontabs_small.png align=left]] The **actiontabs** theme, contributed by
 [[svend]]. This style sheet displays the action list

add bootstrap theme i found
diff --git a/doc/theme_market.mdwn b/doc/theme_market.mdwn
index 06526df..e9bdaa0 100644
--- a/doc/theme_market.mdwn
+++ b/doc/theme_market.mdwn
@@ -9,3 +9,5 @@ Feel free to add your own [[theme|themes]] here, but first consider writing a si
  * **[[AntPortal theme|https://github.com/AntPortal/ikiwiked]]**, contributed by Danny, see an example [[on the Antportal wiki|https://antportal.com/wiki/]]
 
  * **[[Night city theme|http://anarcat.ath.cx/night_city/README/]]**, contributed by [[anarcat]], see an example [[on his homepage|http://anarcat.ath.cx/]]
+
+ * **[[Bootstrap theme|http://anonscm.debian.org/gitweb/?p=users/jak/website.git;a=summary]]**, contributed by [[JAK LINUX|http://jak-linux.org/about/]], based on [[Twitter Bootstrap|http://twitter.github.com/bootstrap/]]

add a bunch of wikis i have deployed
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 9647b35..ecba46e 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -89,6 +89,8 @@ Projects & Organizations
 * [FusionInventory project](http://www.fusioninventory.org)
 * FabLab Deventer i.o.
 * [Börn og tónlist](http://bornogtonlist.net/) - an Icelandic open-content site, primarily for kindergarten teachers, about music and music-related activites with children. Migrated from MediaWiki to IkiWiki in June 2013. Heavily changed appearance with only minimal changes to page.tmpl.
+* [Réseaulibre.ca](http://wiki.reseaulibre.ca) - a mesh project in Montréal, most data is stored in the wiki, including IP address allocation and geographic data. Features map ([[plugins/osm]]) integration.
+* [Foufem](http://foufem.orangeseeds.org/) - Foufem, a feminist hackerspace
 
 Personal sites and blogs
 ========================
@@ -193,3 +195,4 @@ Personal sites and blogs
 * [Manifesto](http://manifesto.hi.ato.br) Open, free and annoymous blog. No need for account registering and login. It is Brazilian so it is in Portuguese.
  * [Z is for Zombies](http://blog.zouish.org/) — personal blog/site of Francesca Ciceri
 * Julien Lefrique's [homepage](http://julien.lefrique.name/), hosted on [GitHub pages](https://github.com/jlefrique/jlefrique.github.com) with CGI disabled
+* [Anarcat's homepage](http://anarcat.ath.cx/) - with a custom [[theme|theme_market]]

try to fix link
diff --git a/doc/bugs/blogspam_marks_me_as_spam_on_ipv6.mdwn b/doc/bugs/blogspam_marks_me_as_spam_on_ipv6.mdwn
index bbec2b7..9b415a8 100644
--- a/doc/bugs/blogspam_marks_me_as_spam_on_ipv6.mdwn
+++ b/doc/bugs/blogspam_marks_me_as_spam_on_ipv6.mdwn
@@ -5,4 +5,4 @@ I just got this message trying to post to this wiki:
 So yeah, it seems I have no reverse DNS for my IPv6 address, which may
 be quite common for emerging IPv6 deployments...
 
-This may be related to [[bugs/blogspam_options whitelist vs. IPv6?]].
+This may be related to [[blogspam_options whitelist vs. IPv6?]].

mention the fastcgi todo here
diff --git a/doc/forum/web_service_API__44___fastcgi_support.mdwn b/doc/forum/web_service_API__44___fastcgi_support.mdwn
index 4a78fb9..84b227e 100644
--- a/doc/forum/web_service_API__44___fastcgi_support.mdwn
+++ b/doc/forum/web_service_API__44___fastcgi_support.mdwn
@@ -11,3 +11,8 @@ Anyway - I've realised that a big part of the interactive todo lists stuff is tr
 Second, and in a way related, I've been mooting hacking fastcgi support into ikiwiki. Essentially one ikiwiki.cgi process would persist and serve CGI-ish requests on stdin/stdout. The initial content-scanning and dependency generation would happen once and not need to be repeated for future requests. Although, all state-changing operations would need to be careful to ensure the in-memory models were accurate. Also, I don't know how suited the data structures would be for persistence, since the current model is build em up, throw em away, they might not be space-efficient enough for persistence.
 
 If I did attempt this, I would want to avoid restructuring things in a way which would impair ikiwiki's core philosophy of being a static compiler. -- [[Jon]]
+
+> This is quite interesting! There is a related discussion about FastCGI
+> support (and therefore better support for Nginx, for example) in
+> [[todo/fastcgi_or_modperl_installation_instructions/]]... --
+> [[anarcat]]

i am blocked!
diff --git a/doc/bugs/blogspam_marks_me_as_spam_on_ipv6.mdwn b/doc/bugs/blogspam_marks_me_as_spam_on_ipv6.mdwn
new file mode 100644
index 0000000..bbec2b7
--- /dev/null
+++ b/doc/bugs/blogspam_marks_me_as_spam_on_ipv6.mdwn
@@ -0,0 +1,8 @@
+I just got this message trying to post to this wiki:
+
+    Error: Sorry, but that looks like spam to blogspam: No reverse DNS entry for 2001:1928:1:9::1
+
+So yeah, it seems I have no reverse DNS for my IPv6 address, which may
+be quite common for emerging IPv6 deployments...
+
+This may be related to [[bugs/blogspam_options whitelist vs. IPv6?]].

diff --git a/doc/forum/Translating_ikiwiki_interface.mdwn b/doc/forum/Translating_ikiwiki_interface.mdwn
new file mode 100644
index 0000000..4003302
--- /dev/null
+++ b/doc/forum/Translating_ikiwiki_interface.mdwn
@@ -0,0 +1,2 @@
+I am using ikiwiki for a spanish language wiki. I've read the [[translation]] page and [[plugins/po]] plugin page but it is not completely clear to me. As I understand it the po plugin is the recommended way to create translated versions of existing pages in your wiki based on a master language.  But I actually don't need that as myself and other users already edit the wiki in spanish.  What I would actually like is to have the ikiwiki interface itself translated into spanish. 
+Is it possible to have my wiki always appear in spanish? I can see that the debian package already includes po files for spanish.  How do i activate the spanish translation permanently? Did I miss something obvious?

Added description of mathjax plugin
diff --git a/doc/plugins/contrib/mathjax.mdwn b/doc/plugins/contrib/mathjax.mdwn
new file mode 100644
index 0000000..a784b95
--- /dev/null
+++ b/doc/plugins/contrib/mathjax.mdwn
@@ -0,0 +1,13 @@
+[[!template id="plugin" name="mathjax" author="Baldur Kristinsson"]]
+
+The [mathjax plugin](https://github.com/bk/ikiwiki-plugin-mathjax), available on GitHub, provides easy MathJax support for ikiwiki.
+
+Features:
+
+- No change needed to page.tmpl
+- Javascript is only loaded on pages which need it.
+- Both inline and display math are supported.
+- Unlike [[the pandoc plugin|plugins/contrib/pandoc]] or a solution based on editing page.tmpl, no irritating conflicts with the smiley plugin.
+- Unlike the pandoc plugin, it is easy to use in shared hosting or other environments where you have difficulty in installing extra software (beyond Perl modules, obviously).
+
+However, if you need the power of Pandoc, such as bibliography support or pdf generation, then that is probably the better option for you.

Added bornogtonlist.net to the list
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index b58ef20..9647b35 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -88,6 +88,7 @@ Projects & Organizations
 * [The RS-232 Club](http://rs232club.org)
 * [FusionInventory project](http://www.fusioninventory.org)
 * FabLab Deventer i.o.
+* [Börn og tónlist](http://bornogtonlist.net/) - an Icelandic open-content site, primarily for kindergarten teachers, about music and music-related activites with children. Migrated from MediaWiki to IkiWiki in June 2013. Heavily changed appearance with only minimal changes to page.tmpl.
 
 Personal sites and blogs
 ========================

revert probable spam
This reverts commit b23e70100c9d7814786320b9b56be309ab8a6235
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 254f51a..4c22ce0 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,6 +27,3 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
-
-
-[[!img College_of_New_Brunswick.jpg align="right" size="" alt=""]]

diff --git a/doc/index.mdwn b/doc/index.mdwn
index 4c22ce0..254f51a 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,3 +27,6 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
+
+
+[[!img College_of_New_Brunswick.jpg align="right" size="" alt=""]]

update instructions to work with new debian apache packages
diff --git a/doc/tips/dot_cgi.mdwn b/doc/tips/dot_cgi.mdwn
index dc88d95..9067fbe 100644
--- a/doc/tips/dot_cgi.mdwn
+++ b/doc/tips/dot_cgi.mdwn
@@ -15,7 +15,10 @@ configuration changes should work anywhere.
 
 ## apache 2
 
-* Edit /etc/apache2/apache2.conf and add a line like this:
+* Make sure the cgi module is loaded. (Ie, `a2enmod cgi`)
+
+* Edit /etc/apache2/apache2.conf (or /etc/apache2/mods-available/mime.conf)
+  and add a line like this:
 
 	AddHandler cgi-script .cgi
 
@@ -26,8 +29,6 @@ configuration changes should work anywhere.
   Or, if you've put it in a `~/public_html`, edit
   `/etc/apache2/mods-available/userdir.conf`.
 
-  You may also want to install some dependencies to enable CGI in apache2 setup as: `libcgi-formbuilder-perl` and `libcgi-session-perl`.
-
 * If your wiki is in `~/public_html` and does not appear when you enter the URL given by the installer, check that you have 
   the userdir mod enabled (there should be simlinks to userdir.load and userdir.conf in /etc/apache2/modes-enabled).  If not,
   run `a2enmod userdir` and reload apache2.

new patch
diff --git a/doc/bugs/encoding_issue_in_blogspam_plugin.mdwn b/doc/bugs/encoding_issue_in_blogspam_plugin.mdwn
new file mode 100644
index 0000000..61e75a1
--- /dev/null
+++ b/doc/bugs/encoding_issue_in_blogspam_plugin.mdwn
@@ -0,0 +1,32 @@
+[[!tag patch]]
+
+<pre>
+From 5ad35b2805ca50478f07d810e57e7c9b8f4eddea Mon Sep 17 00:00:00 2001
+From: Changaco &lt;changaco@changaco.net>
+Date: Tue, 4 Jun 2013 02:54:35 +0200
+Subject: [PATCH] fix encoding issue in blogspam plugin
+
+RPC::XML uses ascii as default encoding, we have to tell it to use utf8.
+
+Without this, ikiwiki returns "failed to get response from blogspam server"
+every time a non-ascii character is used in a content that needs checking.
+
+---
+ IkiWiki/Plugin/blogspam.pm | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/IkiWiki/Plugin/blogspam.pm b/IkiWiki/Plugin/blogspam.pm
+index d32c2f1..e48ed72 100644
+--- a/IkiWiki/Plugin/blogspam.pm
++++ b/IkiWiki/Plugin/blogspam.pm
+@@ -53,6 +53,7 @@ sub checkconfig () {
+ 	eval q{
+ 		use RPC::XML;
+ 		use RPC::XML::Client;
++		$RPC::XML::ENCODING = 'utf-8';
+ 	};
+ 	error $@ if $@;
+ }
+-- 
+1.8.3
+</pre>

Added a comment
diff --git a/doc/forum/Forward_slashes_being_escaped_as_252F/comment_1_7702cf6d354ab600d6643b075b9f09da._comment b/doc/forum/Forward_slashes_being_escaped_as_252F/comment_1_7702cf6d354ab600d6643b075b9f09da._comment
new file mode 100644
index 0000000..7c9ccbc
--- /dev/null
+++ b/doc/forum/Forward_slashes_being_escaped_as_252F/comment_1_7702cf6d354ab600d6643b075b9f09da._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawm6gCEo_Z36OJ7x5kyZn52lEVvyjn3zSUc"
+ nickname="Ángel"
+ subject="comment 1"
+ date="2013-05-31T16:03:03Z"
+ content="""
+Simply add the NE (No escape) flag:
+
+RewriteEngine on
+RewriteCond %{HTTP_HOST} ^www\.ciffer\.net$
+RewriteRule /(.*) http://ciffer.net/$1 [L,R,NE]
+"""]]

poll vote (Accept both)
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index 8f04c5e..0f4b8b5 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 70 "Accept only OpenID for logins" 21 "Accept only password logins" 46 "Accept both"]]
+[[!poll 70 "Accept only OpenID for logins" 21 "Accept only password logins" 47 "Accept both"]]

Update my user page.
diff --git a/doc/users/schmonz.mdwn b/doc/users/schmonz.mdwn
index 84dca19..97fa1cb 100644
--- a/doc/users/schmonz.mdwn
+++ b/doc/users/schmonz.mdwn
@@ -1,20 +1,32 @@
-[Amitai Schlair](http://www.schmonz.com/) uses ikiwiki
-for all sorts of things:
-
-* a undergraduate group's university-provided-static-hosted site
-  (with [[plugins/rsync]] and a [WIND
-  authentication](http://www.columbia.edu/acis/rad/authmethods/wind/)
-  plugin)
-* a major open-source project's wiki (with the [[rcs/cvs]] plugin)
-* team documentation and project planning at work: product and
-  sprint backlogs, burndown charts, release plans/procedures/announcements,
-  aggregating feeds of shared interest, etc. (with the
-  [[plugins/contrib/dynamiccookies]] and [[plugins/contrib/proxies]]
-  plugins)
-* personal to-do and scratch space
-
-ikiwiki contributions:
+[Amitai Schlair](http://www.schmonz.com/) has contributed code to ikiwiki...
 
 [[!map
 pages="!*/Discussion and ((link(users/schmonz) and plugins/*) or rcs/cvs or todo/fancypodcast)"
 ]]
+
+...and uses ikiwiki for all sorts of things:
+
+## Public
+
+* [A major open-source project's wiki](http://wiki.netbsd.org) (with
+  the [[rcs/cvs]] plugin)
+* [An undergraduate group's university-provided-static-hosted
+  site](http://www.columbia.edu/cu/philo/) (with [[plugins/rsync]] and a [WIND
+  authentication](http://www.columbia.edu/acis/rad/authmethods/wind/) plugin)
+* [A small personal site](http://www.anglofish.net/) (happily hosted at
+  [Branchable](http://www.branchable.com/))
+
+## Non-public
+
+* At work, team documentation and project planning: product and sprint
+  backlogs, burndown charts, release plans/procedures/announcements,
+  aggregating feeds of shared interest, etc. (with the
+  [[plugins/contrib/dynamiccookies]] and [[plugins/contrib/proxies]] plugins)
+* 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/) (pending
+  [[todo/fancypodcast]] integration)

Link to NetBSD (cat has been released from bag).
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 07b669f..b58ef20 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -19,7 +19,7 @@ Projects & Organizations
 ========================
 
 * [This wiki](http://ikiwiki.info) (of course!)
-<!-- * [NetBSD wiki](http://wiki.netbsd.org) -->
+* [NetBSD wiki](http://wiki.netbsd.org)
 * The [GNU Hurd](http://www.gnu.org/software/hurd/)
 * [DragonFly BSD](http://www.dragonflybsd.org/)
 * [Monotone](http://wiki.monotone.ca/)

Nicer to look at: no red X's, just checkmarks.
diff --git a/doc/todo/fancypodcast.mdwn b/doc/todo/fancypodcast.mdwn
index ccf08ee..f67c62d 100644
--- a/doc/todo/fancypodcast.mdwn
+++ b/doc/todo/fancypodcast.mdwn
@@ -22,18 +22,18 @@ critical eyes ([[smcv]]?) raking over my diffs. --[[schmonz]]
 
 [[!table data="""
 Feature            |iTunes RSS|iTunes Atom|Downcast RSS|Downcast Atom
-Feed image         |{X}       |{X}        |{X}         |{X}
+Feed image         |          |           |            |
 Feed title         |(./)      |(./)       |(./)        |(./)
-Feed publisher     |{X}       |{X}        |{X}         |{X}
-Feed "category"    |{X}       |{X}        |{X}         |{X}
+Feed publisher     |          |           |            |
+Feed "category"    |          |           |            |
 Feed date          |(./)      |(./)       |(./)        |(./)
-Feed description   |(./)      |(./)       |(./)        |{X}
-Episode image      |{X}       |{X}        |{X}         |{X}
+Feed description   |(./)      |(./)       |(./)        |
+Episode image      |          |           |            |
 Episode title      |(./)      |(./)       |(./)        |(./)
 Episode date       |(./)      |(./)       |(./)        |(./)
-Episode duration   |{X}       |{X}        |{X}         |{X}
-Episode author     |{X}       |{X}        |{X}         |{X}
-Episode description|(./)      |(./)       |(./)        |{X}
+Episode duration   |          |           |            |
+Episode author     |          |           |            |
+Episode description|(./)      |(./)       |(./)        |
 Episode enclosure  |(./)      |(./)       |(./)        |(./)
 """]]
 

Add jlefrique's homepage
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 6b657c8..07b669f 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -191,3 +191,4 @@ Personal sites and blogs
 * [WikiAtoBR](http://wiki.hi.ato.br) Open, free and annoymous wiki. No need for account registering and login. It is Brazilian so it is in Portuguese.
 * [Manifesto](http://manifesto.hi.ato.br) Open, free and annoymous blog. No need for account registering and login. It is Brazilian so it is in Portuguese.
  * [Z is for Zombies](http://blog.zouish.org/) — personal blog/site of Francesca Ciceri
+* Julien Lefrique's [homepage](http://julien.lefrique.name/), hosted on [GitHub pages](https://github.com/jlefrique/jlefrique.github.com) with CGI disabled

Verified smooth migrations in two podcatchers.
diff --git a/doc/todo/fancypodcast.mdwn b/doc/todo/fancypodcast.mdwn
index ea3bebd..ccf08ee 100644
--- a/doc/todo/fancypodcast.mdwn
+++ b/doc/todo/fancypodcast.mdwn
@@ -71,23 +71,113 @@ Episode enclosure  |(./)      |(./)       |(./)        |(./)
 * Verify that the feeds validate.
 * Subscribe to a fancy feed in some common podcatchers and verify
   display details against a reference podcast.
+* Verify smooth transitions for two common use cases (see testing
+  details below).
 
 ### Must-have (for [[schmonz]], anyway)
 
-* Think carefully about...
-    * UTF-8.
-    * Whether [[tips/howto avoid flooding aggregators]] suffices for...
-        * Converting a simple podcast to a fancy one.
-            7. Set up a non-production copy of one of my podcasts.
-                * Manually test that feeds match production.
-                * Subscribe to the copy in `r2e`, iTunes, Downcast.
-            7. Try migrating the copy from simple to fancy.
-                * Document the steps I take.
-                * Make the feed readers update.
-                * Document what happens for each of them.
-        * Migrating a fancy podcast from elsewhere into ikiwiki.
+* Think carefully about UTF-8.
 * Verify that _all_ the tests pass (not just my new ones).
 
+## Migration
+
+### Upgrading within ikiwiki: from simple to fancy
+
+#### My test podcast
+
+For this test, I chose a podcast that tries to work around ikiwiki's
+current limitations by issuing two separate `inline`s:
+
+* One with `feedonly=yes` that includes `.mdwn`, `.pdf`, and `.mp3`
+* One with `feeds=no` that includes only `.mdwn` (and makes a trail)
+
+This has the following effects:
+
+* Browser: sees just the articles (each of which has a manually
+  created link to its corresponding media file)
+* Feedreader: sees all the articles and media in one flat stream
+* Podcatcher: sees just the media (sans articles)
+
+I want instead to write one `inline` with these effects:
+
+* Browser: sees just the articles (each of which automatically links
+  to its enclosure)
+* Feedreader: sees just the articles (each of which specifies its
+  enclosure)
+* Podcatcher: sees just the enclosures (each of which has an enclosing
+  article, rendered as the media's "description")
+
+#### Upgrade steps
+
+7. Set up a non-production copy of the podcast.
+    7. Visually diff RSS and Atom feeds against production.
+    7. Subscribe to the copy (both feeds) in `r2e`, iTunes, Downcast.
+7. Apply fancypodcast patch to the installed ikiwiki:
+    7. `cd ~/Documents/trees/ikiwiki && git checkout fancypodcast`
+    7. `git diff --no-prefix master > ~/Documents/trees/localpatches/www/ikiwiki/fancypodcast.diff`
+    7. `cd ~/Documents/trees/pkgsrc-current/www/ikiwiki && make deinstall && make install clean`
+7. Verify that simple podcasts are unaffected:
+    7. Rerun `ikiwiki --setup`.
+    7. `diff -uB simple-before.rss simple-after.rss`
+        * A few new elements and attributes, as expected.
+    7. `diff -uB simple-before.atom simple-after.atom`
+        * No change.
+7. Remove the feed-only `inline` and enable feeds on the remaining one.
+7. Convert articles' manual download links to `\[[!meta enclosure=""]]`.
+7. I want existing and future podcatchers to get my new fancy
+   episodes, and I know my podcast isn't in any planets, so I'm
+   going to skip [[tips/howto avoid flooding aggregators]].
+7. Rerun `ikiwiki --setup`.
+7. Verify browser shows the same stuff.
+7. `diff -uB simple-after.rss fancy-after.rss   # and atom`
+    * MP3s and PDFs are no longer naked enclosures, but belong to
+      articles as they should.
+    * Articles have updated modification times, as they should.
+7. `r2e run` (both RSS and Atom)
+    * Nothing new with the default `trust-guid = True` (otherwise
+      would expect updated articles).
+7. iTunes "Update Podcast" (both RSS and Atom)
+    * Added one episode per article, with article text as the episode
+      description.
+    * Kept old naked-enclosure episodes around.
+7. Downcast refresh (RSS):
+    * Added one episode per article, with article text as the episode
+      description.
+    * Kept old naked-enclosure episodes around.
+7. Downcast refresh (Atom):
+    * Added one episode per article, with no episode description
+      (expected, see feature table).
+    * Kept old naked-enclosure episodes around.
+
+Different tradeoffs are possible. These seem okay to me.
+
+### Importing into ikiwiki: fancy (from another CMS)
+
+#### My test podcast
+
+For this test, I chose a podcast currently being published with
+Textpattern and tru_podcast, because I'd strongly prefer to publish
+it with ikiwiki instead.
+
+#### Upgrade steps
+
+7. Set up a non-production copy of the podcast.
+    7. Visually diff RSS and Atom feeds against production.
+    7. Subscribe to the copy (both feeds) in `r2e`, iTunes, Downcast.
+7. With a fancypodcast-enabled ikiwiki installed:
+    7. Copy content from Textpattern to ikiwiki:
+        7. Match article paths to preserve `/YYYY/MM/DD/post-title` permalinks.
+        7. Match enclosure paths (or redirect) to preserve Textpattern's URLs.
+        7. Match titles, post dates, and guids with `\[[!meta]]`.
+	    7. Match feed paths with permanent redirects from `/atom/` to
+           `/index.atom` (and same for RSS).
+        7. `\[[!inline]]` the articles.
+    7. Rerun `ikiwiki --setup`.
+7. Stop Textpattern, start ikiwiki.
+7. Verify that podcatchers see the feeds and don't redownload anything.
+7. Naively add two new blog posts, one with an enclosure.
+7. Verify that podcatchers download the new enclosures.
+
 -----
 
 ## Future improvements
@@ -122,6 +212,8 @@ Episode enclosure  |(./)      |(./)       |(./)        |(./)
 
 ### Other ideas
 
+* Don't render template text (e.g., "Use this template to insert a
+  note into a page") in feeds.
 * Optionally specify the enclosure's:
     * MIME type, in case `File::MimeInfo` guesses wrong.
     * Duration, in case `ffprobe` guesses wrong.

diff --git a/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
index a470541..a004154 100644
--- a/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
+++ b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
@@ -24,3 +24,9 @@ Richard
 > [[done]]. --[[smcv]]
 
 > > As per IRC: Thanks. As an aside, shouldn't this ikiwiki instance ignore directives in normal text? The problem may be non-trivial, but still... -- Richard
+
+>>> "Normal text" is exactly where directives go, so, not really.
+>>> If you mean verbatim text (e.g. indentation in Markdown): the fact that
+>>> directives still expand to HTML, which is then treated as verbatim, is an
+>>> unfortunate result of how ikiwiki interacts with pages' markup languages
+>>> (directives and wikilinks happen before markup is converted to HTML). --[[smcv]]

diff --git a/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
index f0d0f78..a470541 100644
--- a/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
+++ b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
@@ -22,3 +22,5 @@ Richard
 >     <span class="error">Error: syntax error in pagespec "(./posts/*/*/* and !*/Discussion) and (./posts/*/*/* and !*/Discussion and not tagged(tags/random/hidden))"</span>
 >
 > [[done]]. --[[smcv]]
+
+> > As per IRC: Thanks. As an aside, shouldn't this ikiwiki instance ignore directives in normal text? The problem may be non-trivial, but still... -- Richard

syntax error in pagespec, not an ikiwiki bug
diff --git a/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
index bed4ab0..f0d0f78 100644
--- a/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
+++ b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
@@ -1,7 +1,7 @@
 I added a feedpages directive to `blog/index.mdwn` to not pick up anything tagged `tags/random/hidden` yet that still happenend.
 
     ~git/richardhartmann.de/blog % grep hidden index.mdwn
-    [[!inline pages="./posts/*/*/* and !*/Discussion" feedpages="./posts/*/*/* and !*/Discussion and not tagged(tags/random/hidden)" show="10" actions=yes rootpage="blog"]]
+    \[[!inline pages="./posts/*/*/* and !*/Discussion" feedpages="./posts/*/*/* and !*/Discussion and not tagged(tags/random/hidden)" show="10" actions=yes rootpage="blog"]]
     ~git/richardhartmann.de/blog % grep hidden posts/2013/05/17-Debian_Release_Critical_Bug_report_for_Week_20.mdwn
     \[[!tag tags/tech/floss/debian tags/tech/floss/debian/rc-stats/8.0-jessie tags/random/hidden]]
     ~git/richardhartmann.de/blog %
@@ -9,3 +9,16 @@ I added a feedpages directive to `blog/index.mdwn` to not pick up anything tagge
 If you need more information, please let me know.
 
 Richard
+
+> I don't think this is a bug. You have a syntax error in your pagespec:
+> "not" is not a recognised keyword in [[pagespecs|ikiwiki/pagespec]],
+> so `and not tagged(...)` should be `and !tagged(...)`. Presumably inline
+> falls back to `pages` when `feedpages` doesn't work.
+>
+> By posting the pagespec here with insufficient escaping (which I've fixed)
+> you caused *this* ikiwiki instance's HTML to contain an error message
+> illustrating that syntax error :-)
+>
+>     <span class="error">Error: syntax error in pagespec "(./posts/*/*/* and !*/Discussion) and (./posts/*/*/* and !*/Discussion and not tagged(tags/random/hidden))"</span>
+>
+> [[done]]. --[[smcv]]

diff --git a/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
index d00e6b8..bed4ab0 100644
--- a/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
+++ b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
@@ -3,7 +3,7 @@ I added a feedpages directive to `blog/index.mdwn` to not pick up anything tagge
     ~git/richardhartmann.de/blog % grep hidden index.mdwn
     [[!inline pages="./posts/*/*/* and !*/Discussion" feedpages="./posts/*/*/* and !*/Discussion and not tagged(tags/random/hidden)" show="10" actions=yes rootpage="blog"]]
     ~git/richardhartmann.de/blog % grep hidden posts/2013/05/17-Debian_Release_Critical_Bug_report_for_Week_20.mdwn
-    [[!tag tags/tech/floss/debian tags/tech/floss/debian/rc-stats/8.0-jessie tags/random/hidden]]
+    \[[!tag tags/tech/floss/debian tags/tech/floss/debian/rc-stats/8.0-jessie tags/random/hidden]]
     ~git/richardhartmann.de/blog %
 
 If you need more information, please let me know.

diff --git a/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
new file mode 100644
index 0000000..d00e6b8
--- /dev/null
+++ b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
@@ -0,0 +1,11 @@
+I added a feedpages directive to `blog/index.mdwn` to not pick up anything tagged `tags/random/hidden` yet that still happenend.
+
+    ~git/richardhartmann.de/blog % grep hidden index.mdwn
+    [[!inline pages="./posts/*/*/* and !*/Discussion" feedpages="./posts/*/*/* and !*/Discussion and not tagged(tags/random/hidden)" show="10" actions=yes rootpage="blog"]]
+    ~git/richardhartmann.de/blog % grep hidden posts/2013/05/17-Debian_Release_Critical_Bug_report_for_Week_20.mdwn
+    [[!tag tags/tech/floss/debian tags/tech/floss/debian/rc-stats/8.0-jessie tags/random/hidden]]
+    ~git/richardhartmann.de/blog %
+
+If you need more information, please let me know.
+
+Richard

diff --git a/doc/forum/Can_ikiwiki_be_configured_as_multi_user_blog__63__.mdwn b/doc/forum/Can_ikiwiki_be_configured_as_multi_user_blog__63__.mdwn
new file mode 100644
index 0000000..118b534
--- /dev/null
+++ b/doc/forum/Can_ikiwiki_be_configured_as_multi_user_blog__63__.mdwn
@@ -0,0 +1,7 @@
+All the ikiwiki blogs I have seen have a single user blog. Is it possible to give every user a blog, where they can create their own pages in their own directory = based on their user name? 
+
+I feel that a wiki might give more options in the way users share and collaborate when compared to a blog engine (like Word Press in multi user format)
+
+Is this the best place to post a question like this? There doesn't seem to be much traffic in this forum
+Thanks for your help
+Richard

add news item for ikiwiki 3.20130518
diff --git a/doc/news/version_3.20121016.mdwn b/doc/news/version_3.20121016.mdwn
deleted file mode 100644
index 62cb397..0000000
--- a/doc/news/version_3.20121016.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-ikiwiki 3.20121016 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * monochrome: New theme, contributed by Jon Dowland.
-   * rst: Ported to python 3, while still also being valid python 2.
-     Thanks, W. Trevor King
-   * Try to avoid a situation in which so many ikiwiki cgi wrapper programs
-     are running, all waiting on some long-running thing like a site rebuild,
-     that it prevents the web server from doing anything else. The current
-     approach only avoids this problem for GET requests; if multiple cgi's
-     run GETs on a site at the same time, one will display a "please wait"
-     page for a configurable number of seconds, which then redirects to retry.
-     To enable this protection, set cgi\_overload\_delay to the number of
-     seconds to wait. This is not enabled by default.
-   * Add back a 1em margin between archivepage divs.
-   * recentchangesdiff: Correct broken template that resulted in duplicate
-     diff icons being displayed, and bloated the recentchanges page with
-     inline diffs when the configuration should have not allowed them."""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20130518.mdwn b/doc/news/version_3.20130518.mdwn
new file mode 100644
index 0000000..635b869
--- /dev/null
+++ b/doc/news/version_3.20130518.mdwn
@@ -0,0 +1,9 @@
+ikiwiki 3.20130518 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * Fix test suite to not fail when XML::Twig is not installed.
+     Closes: #[707436](http://bugs.debian.org/707436)
+   * theme: Now &lt;TMPL\_IF THEME\_$NAME&gt; can be used in all templates when
+     a theme is enabled.
+   * notifyemail: Fix bug that caused duplicate emails to be sent when
+     site was rebuilt.
+   * bzr: bzr rm no longer has a --force option, remove"""]]
\ No newline at end of file

Added a comment: SOLVED -- How can I prevent spam?
diff --git a/doc/forum/How_can_I_prevent_spam__63__/comment_3_deb434d01aaefa18d2791e48d6c824ae._comment b/doc/forum/How_can_I_prevent_spam__63__/comment_3_deb434d01aaefa18d2791e48d6c824ae._comment
new file mode 100644
index 0000000..64783be
--- /dev/null
+++ b/doc/forum/How_can_I_prevent_spam__63__/comment_3_deb434d01aaefa18d2791e48d6c824ae._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://claimid.com/richard-lyons"
+ nickname="richard-lyons"
+ subject="SOLVED -- How can I prevent spam?"
+ date="2013-05-18T08:13:19Z"
+ content="""
+I can now confirm that this particular attack has stopped after removing the opendiscussion plugin.
+"""]]

Added a comment
diff --git a/doc/forum/How_can_I_prevent_spam__63__/comment_2_d098124f005976ee815d25c883bc9106._comment b/doc/forum/How_can_I_prevent_spam__63__/comment_2_d098124f005976ee815d25c883bc9106._comment
new file mode 100644
index 0000000..53e7433
--- /dev/null
+++ b/doc/forum/How_can_I_prevent_spam__63__/comment_2_d098124f005976ee815d25c883bc9106._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="http://claimid.com/richard-lyons"
+ nickname="richard-lyons"
+ subject="comment 2"
+ date="2013-05-17T20:56:23Z"
+ content="""
+I did indeed have opendiscussion active.  I shall wait to see what happens after disabling it.
+
+The bots seem to make 5 consecutive edits at short intervals (around 2 minutes) using an IP 
+address as a username.  I do not know if the IP is the one from which they work.  There are 
+usually two or three sets of five edits using different IP addresses as username in each hour.
+
+I did try blocking specific IPs but they constantly change.
+
+It would be good if blocking could match a regexp, but as far as I can see this is not an option,
+"""]]

Added a comment
diff --git a/doc/forum/How_can_I_prevent_spam__63__/comment_1_fd26fb7f1569e8c44ba8262794f938db._comment b/doc/forum/How_can_I_prevent_spam__63__/comment_1_fd26fb7f1569e8c44ba8262794f938db._comment
new file mode 100644
index 0000000..a729328
--- /dev/null
+++ b/doc/forum/How_can_I_prevent_spam__63__/comment_1_fd26fb7f1569e8c44ba8262794f938db._comment
@@ -0,0 +1,19 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ nickname="joey"
+ subject="comment 1"
+ date="2013-05-17T17:55:46Z"
+ content="""
+Normally ikiwiki requires a valid session cookie of a logged in user to edit pages. It sounds like you may have the opendiscussion or anonok plugins enabled, which allows anyone to edit without logging in. Recommend disabling them.
+
+Since you know the spammer's IP, put it into ikiwiki.setup:
+
+<pre>
+banned_users:
+  - ip(85.25.146.11)
+</pre>
+
+If the user was logging in, you could also put their username in the ban list.
+
+You can also try enabling the blogspam plugin.
+"""]]

new topic re 2rand[0,1,1] spam
diff --git a/doc/forum/How_can_I_prevent_spam__63__.mdwn b/doc/forum/How_can_I_prevent_spam__63__.mdwn
new file mode 100644
index 0000000..44e3192
--- /dev/null
+++ b/doc/forum/How_can_I_prevent_spam__63__.mdwn
@@ -0,0 +1,17 @@
+I am getting continuous spam like this:
+
+    discussion  85.25.146.11  web  11:02:19 05/17/13  2rand[0,1,1]
+    discussion  85.25.146.11  web  11:02:13 05/17/13  2rand[0,1,1]
+
+The bot uses an IP address as the username and puts '2rand[0,1,1]' as comment text.
+
+I do not have a page 'discussion' in use, so I have redirected this page with an apache2
+Alias to a static page, just in case anyone stumbles on it.  This means it cannot really 
+be edited via the web. However the bots that post 
+this spam are evidently not opening the page to edit it, but merely sending a cgi request 
+as if they had edited the page.  The result is that no damage is done on the site and no 
+benefit is achieved for the spammer since google cannot see the result.  However, the 
+logs are stuffed with spurious entries and a page is constantly recompiled, which wastes 
+resources.  
+
+Is there some way to reject edits that do not arise from an established session?

Revert 2 spam commits
diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 8272958..338bca7 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
+
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index a08da78..8272958 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-[http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit Baby Pink] | [http://www.propertykita.com/rumah.html Rumah Dijual] | [http://www.optimaweb.co.id/jasa-seo Jasa SEO]
+[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 338bca7..a08da78 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-
+[http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit Baby Pink] | [http://www.propertykita.com/rumah.html Rumah Dijual] | [http://www.optimaweb.co.id/jasa-seo Jasa SEO]
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

Revert spam
This reverts commit 3281e185ee8ce13348e7cf4fb3b14837af651197.
diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index f51c752..338bca7 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,5 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
 
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 

diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 338bca7..f51c752 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,5 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
+[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
 
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 

Revert spam
This reverts commit 871545c27c7e477c26b008434de216be44c585bd.
diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 8272958..338bca7 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
+
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 338bca7..8272958 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-
+[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

Revert spam
This reverts commit a867da05bbdd0ee8765de21db27aebfe3d9fc0e5.
diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 8272958..338bca7 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
+
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 338bca7..8272958 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-
+[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

Revert spam
This reverts commit f2a0fa40a384a5c8aefdee61e5f2c579b5d7d1ed.
diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 0154ff5..338bca7 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,4 @@
 # Introduction
-[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
-
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
 
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.

despam
This reverts commit 792d3dd6f087e9abcdaf4e3f09e2e64f0186df25
diff --git a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
index 074e6e7..0c871d6 100644
--- a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
+++ b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
@@ -275,4 +275,3 @@ mainline of the project.
 
 Ikiwiki powers its own bug tracking system.  To see how wiki bug tracking
 works in practice, visit the [[bugs]] or [[TODO]] pages.
-[Aksesoris mobil](http://www.detikauto.com/) | [Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [rumah dijual](http://www.propertykita.com/rumah.html)

diff --git a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
index 0c871d6..074e6e7 100644
--- a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
+++ b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
@@ -275,3 +275,4 @@ mainline of the project.
 
 Ikiwiki powers its own bug tracking system.  To see how wiki bug tracking
 works in practice, visit the [[bugs]] or [[TODO]] pages.
+[Aksesoris mobil](http://www.detikauto.com/) | [Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [rumah dijual](http://www.propertykita.com/rumah.html)

diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 338bca7..0154ff5 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,4 +1,6 @@
 # Introduction
+[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
+
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
 
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.

add news item for ikiwiki 3.20130504
diff --git a/doc/news/version_3.20120725.mdwn b/doc/news/version_3.20120725.mdwn
deleted file mode 100644
index 08e2c77..0000000
--- a/doc/news/version_3.20120725.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-ikiwiki 3.20120725 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * recentchangesdiff: When diffurl is not set, provide inline diffs
-     in the recentchanges page, with visibility toggleable via javascript.
-     Thanks, Antoine Beaupré
-   * Split CFLAGS into words when building wrapper. Closes: #[682237](http://bugs.debian.org/682237)
-   * osm: Avoid calling urlto before generated files are registered.
-     Thanks, Philippe Gauthier and Antoine Beaupré
-   * osm: Add osm\_openlayers\_url configuration setting.
-     Thanks, Genevieve
-   * osm: osm\_layers can be used to configured the layers displayed on the map.
-     Thanks, Antoine Beaupré
-   * comments: Remove ipv6 address specific code."""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20130504.mdwn b/doc/news/version_3.20130504.mdwn
new file mode 100644
index 0000000..18baf01
--- /dev/null
+++ b/doc/news/version_3.20130504.mdwn
@@ -0,0 +1,11 @@
+ikiwiki 3.20130504 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * Allow dots in directive parameter names. (tango)
+   * Add missing plugin section, and deal with missing sections with a warning.
+   * Detect plugins with a broken getsetup and warn.
+   * map: Correct reversion introduced in version 3.20110225 that could
+     generate invalid html. (smcv)
+   * Makefile.PL: overwrite theme style.css instead of appending
+     (Thanks, Mikko Rapeli)
+   * meta: Fix anchors used to link to the page's license and copyright.
+     Closes: #[706437](http://bugs.debian.org/706437)"""]]
\ No newline at end of file

Permalink to source instead of spec. revision
diff --git a/doc/plugins/contrib/livefyre.mdwn b/doc/plugins/contrib/livefyre.mdwn
index df447e5..d4a62c0 100644
--- a/doc/plugins/contrib/livefyre.mdwn
+++ b/doc/plugins/contrib/livefyre.mdwn
@@ -9,6 +9,6 @@ It's loud and messy and slow, but kind of neat too.
 
 Requires the [[!cpan JSON]], [[!cpan JSON::WebToken]], and [[!cpan Digest::MD5]] perl modules to be available. 
 
-You can grab the source [here](https://bitbucket.org/cmauch/ikiwiki/src/475a5b6833cb/IkiWiki/Plugin?at=master)
+You can grab the source [here](https://bitbucket.org/cmauch/ikiwiki/src/master/IkiWiki/Plugin/livefyre.pm)
 
 See the POD documention in the module for installation and configuration instructions.

diff --git a/doc/plugins/contrib/livefyre.mdwn b/doc/plugins/contrib/livefyre.mdwn
new file mode 100644
index 0000000..df447e5
--- /dev/null
+++ b/doc/plugins/contrib/livefyre.mdwn
@@ -0,0 +1,14 @@
+[[!template id=plugin name=livefyre core=0 author="[[cmauch]]"]]
+[[!tag  type/special-purpose]]
+
+[LiveFyre](http://www.livefyre.com) is a third party comment and discussion system similar in some ways to Disqus or IntenseDebate.  All three services use javascript to attach comments to your site without the need to use a native commenting system.  
+
+This plugin is designed to replace the commenting system in IkiWiki entirely.  It embeds LiveFyre comments on your ikiwiki blog or posts.  It is was originally based on the [Disqus Plugin](https://code.google.com/p/ikiwiki-plugin-disqus/).  After a few days of noticing odd page title names on the livefyre moderation interface, I updated the script to make use of JSON.  I made extensive use of the [integration guide](https://github.com/Livefyre/livefyre-docs/wiki/StreamHub-Integration-Guide) to get it all running.
+
+It's loud and messy and slow, but kind of neat too.
+
+Requires the [[!cpan JSON]], [[!cpan JSON::WebToken]], and [[!cpan Digest::MD5]] perl modules to be available. 
+
+You can grab the source [here](https://bitbucket.org/cmauch/ikiwiki/src/475a5b6833cb/IkiWiki/Plugin?at=master)
+
+See the POD documention in the module for installation and configuration instructions.

This reverts commit e5c874b118462de573468fcf4bdbe3334b6da960
diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 8272958..338bca7 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
+
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

This reverts commit 20124bda7470dbb1eac7f1736bb66cc7bf858655
diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 86eb28c..8272958 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo) | [Aksesoris Mobil](http://www.detikauto.com)
+[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

This reverts commit 82fb4c602b3ee0f9f384ab67b9a49ac05c97c0f8
diff --git a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
index ce7e639..0c871d6 100644
--- a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
+++ b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
@@ -23,7 +23,7 @@ that is stored in revision control and compiled with
 `make` and `gcc`, an ikiwiki-based wiki is stored as
 human-editable source in a revision control system,
 and built into HTML using ikiwiki.
-[Aksesoris mobil](http://www.detikauto.com/) | [Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit)|[rumah dijual](http://www.propertykita.com/rumah.html)
+
 Ikiwiki uses your revision control system to track
 changes and handle tasks such as rolling back changes and
 merging edits.  Because it takes advantage of revision

This reverts commit 21f0f5c22fb97d283db183e2970cc8f05fbfb475
diff --git a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
index fc1f128..ce7e639 100644
--- a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
+++ b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
@@ -23,7 +23,7 @@ that is stored in revision control and compiled with
 `make` and `gcc`, an ikiwiki-based wiki is stored as
 human-editable source in a revision control system,
 and built into HTML using ikiwiki.
-[Aksesoris mobil](http://www.detikauto.com/) | [Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [rumah dijual](http://www.propertykita.com/rumah.html)
+[Aksesoris mobil](http://www.detikauto.com/) | [Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit)|[rumah dijual](http://www.propertykita.com/rumah.html)
 Ikiwiki uses your revision control system to track
 changes and handle tasks such as rolling back changes and
 merging edits.  Because it takes advantage of revision

diff --git a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
index ce7e639..fc1f128 100644
--- a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
+++ b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
@@ -23,7 +23,7 @@ that is stored in revision control and compiled with
 `make` and `gcc`, an ikiwiki-based wiki is stored as
 human-editable source in a revision control system,
 and built into HTML using ikiwiki.
-[Aksesoris mobil](http://www.detikauto.com/) | [Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit)|[rumah dijual](http://www.propertykita.com/rumah.html)
+[Aksesoris mobil](http://www.detikauto.com/) | [Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [rumah dijual](http://www.propertykita.com/rumah.html)
 Ikiwiki uses your revision control system to track
 changes and handle tasks such as rolling back changes and
 merging edits.  Because it takes advantage of revision

diff --git a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
index 0c871d6..ce7e639 100644
--- a/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
+++ b/doc/tips/integrated_issue_tracking_with_ikiwiki.mdwn
@@ -23,7 +23,7 @@ that is stored in revision control and compiled with
 `make` and `gcc`, an ikiwiki-based wiki is stored as
 human-editable source in a revision control system,
 and built into HTML using ikiwiki.
-
+[Aksesoris mobil](http://www.detikauto.com/) | [Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit)|[rumah dijual](http://www.propertykita.com/rumah.html)
 Ikiwiki uses your revision control system to track
 changes and handle tasks such as rolling back changes and
 merging edits.  Because it takes advantage of revision

diff --git a/doc/bugs/capitalized_attachment_names.mdwn b/doc/bugs/capitalized_attachment_names.mdwn
index 1e55052..b10781b 100644
--- a/doc/bugs/capitalized_attachment_names.mdwn
+++ b/doc/bugs/capitalized_attachment_names.mdwn
@@ -10,3 +10,5 @@ I get the same error when image names are small letters.
 The error also occurs with png images.  
 
 How do I fix this?
+
+Later investigation ... I got around the problem by creating the mark-up in a new directory.  However, if I try to create a new directory with the same name as the directory containing the problem code, the problem re-emerges -- the old directory is apparently not overwritten.  Perhaps this is an issue with the git storage.    

diff --git a/doc/bugs/capitalized_attachment_names.mdwn b/doc/bugs/capitalized_attachment_names.mdwn
index 5f79253..1e55052 100644
--- a/doc/bugs/capitalized_attachment_names.mdwn
+++ b/doc/bugs/capitalized_attachment_names.mdwn
@@ -9,4 +9,4 @@ I get the same error when image names are small letters.
 
 The error also occurs with png images.  
 
-How do I to fix this?
+How do I fix this?

diff --git a/doc/bugs/capitalized_attachment_names.mdwn b/doc/bugs/capitalized_attachment_names.mdwn
index 0b37bb9..5f79253 100644
--- a/doc/bugs/capitalized_attachment_names.mdwn
+++ b/doc/bugs/capitalized_attachment_names.mdwn
@@ -4,7 +4,8 @@ Viewing the generated page shows the following error:
 
 "\[\[!img Error: failed to read name.svg: Exception 420: no decode delegate for this image format `/home/user/path/name.svg' @ error/svg.c/ReadSVGImage/2815\]\]"
 
-The caps in the image title were somehow converted to small letters, perhaps causing the above error -- no -- I get the same error even when image names are small letters.
+The caps in the image title were somehow converted to small letters and then the image is saved as a directory.  Very puzzling.  
+I get the same error when image names are small letters.
 
 The error also occurs with png images.  
 

diff --git a/doc/bugs/capitalized_attachment_names.mdwn b/doc/bugs/capitalized_attachment_names.mdwn
index 508e442..0b37bb9 100644
--- a/doc/bugs/capitalized_attachment_names.mdwn
+++ b/doc/bugs/capitalized_attachment_names.mdwn
@@ -4,6 +4,8 @@ Viewing the generated page shows the following error:
 
 "\[\[!img Error: failed to read name.svg: Exception 420: no decode delegate for this image format `/home/user/path/name.svg' @ error/svg.c/ReadSVGImage/2815\]\]"
 
-The caps in the image title were somehow converted to small letters, perhaps causing the above error -- no -- I get the same error even when image names are small letters.  
+The caps in the image title were somehow converted to small letters, perhaps causing the above error -- no -- I get the same error even when image names are small letters.
+
+The error also occurs with png images.  
 
 How do I to fix this?

diff --git a/doc/bugs/capitalized_attachment_names.mdwn b/doc/bugs/capitalized_attachment_names.mdwn
index f66b7a4..508e442 100644
--- a/doc/bugs/capitalized_attachment_names.mdwn
+++ b/doc/bugs/capitalized_attachment_names.mdwn
@@ -4,6 +4,6 @@ Viewing the generated page shows the following error:
 
 "\[\[!img Error: failed to read name.svg: Exception 420: no decode delegate for this image format `/home/user/path/name.svg' @ error/svg.c/ReadSVGImage/2815\]\]"
 
-The caps in the image title were somehow converted to small letters, perhaps causing the above error.  
+The caps in the image title were somehow converted to small letters, perhaps causing the above error -- no -- I get the same error even when image names are small letters.  
 
 How do I to fix this?

diff --git a/doc/bugs/capitalized_attachment_names.mdwn b/doc/bugs/capitalized_attachment_names.mdwn
new file mode 100644
index 0000000..f66b7a4
--- /dev/null
+++ b/doc/bugs/capitalized_attachment_names.mdwn
@@ -0,0 +1,9 @@
+Given an uploaded image via: \[\[!img NAME.svg alt="image"\]\]
+
+Viewing the generated page shows the following error:
+
+"\[\[!img Error: failed to read name.svg: Exception 420: no decode delegate for this image format `/home/user/path/name.svg' @ error/svg.c/ReadSVGImage/2815\]\]"
+
+The caps in the image title were somehow converted to small letters, perhaps causing the above error.  
+
+How do I to fix this?

diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 8272958..86eb28c 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
+[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo) | [Aksesoris Mobil](http://www.detikauto.com)
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 338bca7..8272958 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -1,6 +1,6 @@
 # Introduction
 I had some trouble installing ikiwiki on to a shared hosting service (DreamHost) and figured I'd post the results, since it was pretty rough to get installed.  These instructions should work for Perl generally (some of the docs are borrowed from Catalyst's docs), but are tailored for Ikiwiki.  There are a few items I'll file as bugs, as well, to aid future installation, but frankly the problems appear to be with installing perl as a non-root user, not anything specific to iki.
-
+[Baby Pink](http://www.grosir-kosmetik.com/6-baby-pink-cream-pemutih-kulit) | [Rumah Dijual](http://www.propertykita.com/rumah.html) | [Jasa SEO](http://www.optimaweb.co.id/jasa-seo)
 **Note: CPAN seems to die without warning, or die after successfully install modules.  It appears to just like dying.  If you encounter this, retry the last command after restarting CPAN.** Unfortunately, this doc can't cover how to fix any other problems with CPAN beyond what you find here.
 
 # Fixing CPAN

just so it easily findable on my homepage
diff --git a/doc/todo/translation_links.mdwn b/doc/todo/translation_links.mdwn
index 87e215b..63e8d10 100644
--- a/doc/todo/translation_links.mdwn
+++ b/doc/todo/translation_links.mdwn
@@ -40,3 +40,7 @@ There can be more constraints that we may want to impose or not, which will make
  4. a default language setting? - that's obviously the getsetup hook
  5. a set of language code settings? - same
  6. content-negotiation - the po module has good code for that
+
+## Authors
+
+ * [[anarcat]]

poll vote (Accept both)
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index a3a2368..8f04c5e 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 70 "Accept only OpenID for logins" 21 "Accept only password logins" 45 "Accept both"]]
+[[!poll 70 "Accept only OpenID for logins" 21 "Accept only password logins" 46 "Accept both"]]

poll vote (Accept both)
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index 8be6730..a3a2368 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 70 "Accept only OpenID for logins" 21 "Accept only password logins" 44 "Accept both"]]
+[[!poll 70 "Accept only OpenID for logins" 21 "Accept only password logins" 45 "Accept both"]]

poll vote (Accept only OpenID for logins)
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index b13e821..8be6730 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 69 "Accept only OpenID for logins" 21 "Accept only password logins" 44 "Accept both"]]
+[[!poll 70 "Accept only OpenID for logins" 21 "Accept only password logins" 44 "Accept both"]]

oh yes, good idea.
diff --git a/doc/todo/toc-with-human-readable-anchors.mdwn b/doc/todo/toc-with-human-readable-anchors.mdwn
index 7e404af..0f358f4 100644
--- a/doc/todo/toc-with-human-readable-anchors.mdwn
+++ b/doc/todo/toc-with-human-readable-anchors.mdwn
@@ -2,4 +2,6 @@ The [[/plugins/toc]] plugin is very useful but it creates anchors with names suc
 
 In #ikiwiki today, another user and I were in agreement that an option for human readable anchors would be preferable.
 
+> +1 - i would love to see that happen too. Here's a patch I wrote a while back for similar functionality in moinmoin: https://svn.koumbit.net/koumbit/trunk/patches/moinmoin/nice_headings.patch -- [[anarcat]]
+
 [[!tag wishlist]]

table of contents (toc) with human readable anchors
diff --git a/doc/todo/toc-with-human-readable-anchors.mdwn b/doc/todo/toc-with-human-readable-anchors.mdwn
new file mode 100644
index 0000000..7e404af
--- /dev/null
+++ b/doc/todo/toc-with-human-readable-anchors.mdwn
@@ -0,0 +1,5 @@
+The [[/plugins/toc]] plugin is very useful but it creates anchors with names such as #index1h3
+
+In #ikiwiki today, another user and I were in agreement that an option for human readable anchors would be preferable.
+
+[[!tag wishlist]]

diff --git a/doc/todo/translation_links.mdwn b/doc/todo/translation_links.mdwn
index 97f5ffc..87e215b 100644
--- a/doc/todo/translation_links.mdwn
+++ b/doc/todo/translation_links.mdwn
@@ -33,8 +33,10 @@ There can be more constraints that we may want to impose or not, which will make
 
 ## Basic spec
 
- 1. a hook that looks for foo.la.mdwn pages, where la is a language code (defined where..?), and that lists available translations
- 2. instructions on how to setup [[!wikipedia Content_negotiation]] so that the above works out of the box
- 3. a button to create such translations
- 4. a default language setting?
- 5. a set of language code settings?
+ 1. a hook that looks for foo.la.mdwn pages, where la is a language code (defined where..?), and that lists available translations - 
+    this is where most of the work needs to happen. we can probably reuse the builtin template stuff that got injected with the [[plugins/po]] plugin was imported, to start with
+ 2. instructions on how to setup [[!wikipedia Content_negotiation]] so that the above works out of the box - just documentation
+ 3. a button to create such translations - that would be through the [[pageactions hook|plugins/write/#index15h3]]
+ 4. a default language setting? - that's obviously the getsetup hook
+ 5. a set of language code settings? - same
+ 6. content-negotiation - the po module has good code for that

link to todo/translation_links
diff --git a/doc/translation/discussion.mdwn b/doc/translation/discussion.mdwn
index 61606e3..b274317 100644
--- a/doc/translation/discussion.mdwn
+++ b/doc/translation/discussion.mdwn
@@ -117,3 +117,5 @@ Obviously, this is a lot more work, diverging in a different direction than the
 Also, the thing with the above is that if functionalities 1 and 2 (mapping and page flipping) is stripped out of the po plugin and made reusable, functionalities 3 and 4 can be made optional and a wiki is still translatable, giving the user the responsability of tracking the translations...
 
 So basically, what I think should happen is to have ikiwiki be able to use the .po plugin without .po files - just allow for pages to be linked together. Detect foo.fr.mdwn when parsing foo.mdwn and create links to it would already be a huge start... -- [[anarcat]]
+
+> I have a hopefully clearer spec for a plugin called [[todo/translation_links]]. -- [[anarcat]]

here. a spec.
diff --git a/doc/todo/translation_links.mdwn b/doc/todo/translation_links.mdwn
new file mode 100644
index 0000000..97f5ffc
--- /dev/null
+++ b/doc/todo/translation_links.mdwn
@@ -0,0 +1,40 @@
+This is an offshoot of [[this rant|translation/discussion/#index3h1]].
+
+Basically, while I can appreciate the [[plugins/po]] plugin for more or less "static" site, or more organised wikis, for certain wikis, it's way too overhead.
+
+## Stories
+
+The following stories should be answered by that plugin:
+
+ 1. a user browses the wiki, finds that the page is translated in another language and clicks on the language to see that page translated
+ 2. a user browses the wiki and gets automatically the right language
+ 3. an editor creates a wiki page, and it gets assigned a language
+ 4. a translator sees that page and translates it to another language, and that page is linked with the first one, both ways (in that stories 1 and 2 can work)
+ 5. (optional) a translator can see the list of pages needing translation and translate pages
+ 6. (optional) an editor changes a wiki page, the translated page is marked as "dirty" (ie. needing translation)
+
+## Fundamental constraints
+
+This issue is about creating a "wikipedia-like" translation structure where:
+
+ 1. there's no "master language"
+ 2. there's a loose connexion between pages
+ 3. not all pages are necessarily translated, nor is it a goal
+
+Those are fundamental constraints that should be required by that plugin. It doesn't mean that the plugin cannot be used otherwise, but that's all it needs to respect to fulfill the requirements here.
+
+## Optional constraints
+
+There can be more constraints that we may want to impose or not, which will make things more or less complicated:
+
+ 4. the page URLs need to be translatable - it would make [[!wikipedia Content_negotiation]] fail, so it would require the CGI for story 2. it would also make it harder to create the connexion between pages, as metadata would be needed in each page
+ 5. the language must not be visible in the URL - same as #4
+ 6. translation system must also be usable from the commandline/git repository - #5 and #6 would be basically impossible to implement there
+
+## Basic spec
+
+ 1. a hook that looks for foo.la.mdwn pages, where la is a language code (defined where..?), and that lists available translations
+ 2. instructions on how to setup [[!wikipedia Content_negotiation]] so that the above works out of the box
+ 3. a button to create such translations
+ 4. a default language setting?
+ 5. a set of language code settings?

link to the standardization todo instead of a random pag
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 4ad1fb9..24552b2 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
@@ -23,7 +23,7 @@ main = forever $
 
 > --[[Joey]]
 
-> > It is not a standard feature (as much as Markdown is [standardized](http://www.codinghorror.com/blog/2012/10/the-future-of-markdown.html)...) But it does allow for [syntax hilightning](https://help.github.com/articles/github-flavored-markdown) too, just tag the language name after the backticks. It *seems* that Discount supports github-style backtick format (as well as Pandoc `~~~~` format) but doesn't allow the keyword argument.
+> > It is not a standard feature (as much as Markdown is [[standardized|Track_Markdown_Standardisation_Efforts]]...) But it does allow for [syntax hilightning](https://help.github.com/articles/github-flavored-markdown) too, just tag the language name after the backticks. It *seems* that Discount supports github-style backtick format (as well as Pandoc `~~~~` format) but doesn't allow the keyword argument.
 > > 
 > > I strongly support this feature. --[[anarcat]]
 > > 

fix url
diff --git a/doc/todo/BTS_integration.mdwn b/doc/todo/BTS_integration.mdwn
index b504698..6355867 100644
--- a/doc/todo/BTS_integration.mdwn
+++ b/doc/todo/BTS_integration.mdwn
@@ -4,7 +4,7 @@ This seems somewhat difficult, as ikiwiki would need to maintain a cache of the
 
 --[[JoshTriplett]]
 
-[scmbug](http://www.mkgnu.net/?q=scmbug) might help here. --[[JoshTriplett]]
+[scmbug](http://www.mkgnu.net/scmbug) might help here. --[[JoshTriplett]]
 
 [[!tag soc]]
 

a patch for the feature suggested
diff --git a/doc/todo/calendar_with___34__create__34___links/incomplete_patch.pl b/doc/todo/calendar_with___34__create__34___links/incomplete_patch.pl
new file mode 100644
index 0000000..dc67988
--- /dev/null
+++ b/doc/todo/calendar_with___34__create__34___links/incomplete_patch.pl
@@ -0,0 +1,36 @@
+diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
+index d443198..0436eda 100644
+--- a/IkiWiki/Plugin/calendar.pm
++++ b/IkiWiki/Plugin/calendar.pm
+@@ -238,7 +238,16 @@ EOF
+ 			else {
+ 				$tag='month-calendar-day-nolink';
+ 			}
+-			$calendar.=qq{\t\t<td class="$tag $downame{$wday}">$day</td>\n};
++			if ($params{newpageformat}) {
++				$calendar.=qq{\t\t<td class="$tag $downame{$wday}">};
++				$calendar.=htmllink($params{page}, $params{destpage},
++					strftime_utf8($params{newpageformat}, 0, 0, 0, $day, $params{month} - 1, $params{year} - 1900),
++					noimageinline => 1,
++					linktext => $day);
++				$calendar.=qq{</td>\n};
++			} else {
++				$calendar.=qq{\t\t<td class="$tag $downame{$wday}">$day</td>\n};
++			}
+ 		}
+ 	}
+ 
+diff --git a/doc/ikiwiki/directive/calendar.mdwn b/doc/ikiwiki/directive/calendar.mdwn
+index cb40f88..7b7fa85 100644
+--- a/doc/ikiwiki/directive/calendar.mdwn
++++ b/doc/ikiwiki/directive/calendar.mdwn
+@@ -56,5 +56,9 @@ An example crontab:
+   and so on. Defaults to 0, which is Sunday.
+ * `months_per_row` - In the year calendar, number of months to place in
+   each row. Defaults to 3.
++* `newpageformat` - In month mode, if no articles match the query, the value of
++  `newpageformat` will be used to strformat the date in question. A good value
++  is `newpageformat="meetings/%Y-%m-%d"`. It might be a good idea to have
++  `\[[!meta date="<TMPL_VAR name>"]]` in the edittemplate of `meetings/*`.
+ 
+ [[!meta robots="noindex, follow"]]

suggest `newpageformat` parameter for calendar directive
diff --git a/doc/todo/calendar_with___34__create__34___links.mdwn b/doc/todo/calendar_with___34__create__34___links.mdwn
new file mode 100644
index 0000000..9fe6c43
--- /dev/null
+++ b/doc/todo/calendar_with___34__create__34___links.mdwn
@@ -0,0 +1,10 @@
+the [[ikiwiki/directive/calendar]] directive is well usable without ikiwiki-calendar (eg for articles about meetings), but in such situations, it might be useful to have page creating links at the days.
+
+a [[!taglink patch]] to address this [[!taglink wishlist]] item is [[attached|incomplete_patch.pl]].
+
+from the new documentation (also in the patch):
+
+> * `newpageformat` - In month mode, if no articles match the query, the value of
+>   `newpageformat` will be used to strformat the date in question. A good value
+>   is `newpageformat="meetings/%Y-%m-%d"`. It might be a good idea to have
+>   `\[[!meta date="<TMPL_VAR name>"]]` in the edittemplate of `meetings/*`

show how to create a mailman subscription form in iki
diff --git a/doc/tips/mailman_subscription_form.mdwn b/doc/tips/mailman_subscription_form.mdwn
new file mode 100644
index 0000000..3e9ed07
--- /dev/null
+++ b/doc/tips/mailman_subscription_form.mdwn
@@ -0,0 +1,10 @@
+One can think about implementing "[[Mailman integration]]" or something, but I find that rather overdoing it. Mailman is simple enough that you can add a clean subscription form to your ikiwiki site in seconds, just add:
+
+~~~~
+<form action="https://listes.example.com/cgi-bin/mailman/subscribe/listname" method="POST">
+Email: <input name="email" />
+<input type="submit" value="Subscribe" />
+</form>
+~~~~
+
+To your site and voilà, you are done! No more scary mailman subscription form! (Thanks to [[bgm]] for that trick!) --[[anarcat]]

diff --git a/doc/wishlist/watched_pages.mdwn b/doc/wishlist/watched_pages.mdwn
new file mode 100644
index 0000000..d943571
--- /dev/null
+++ b/doc/wishlist/watched_pages.mdwn
@@ -0,0 +1 @@
+Is there a way to mark pages I edit as "watched"? A way of doing this through git would be acceptable too. Right now I link to my homepage on every page I comment on, but this doesn't tell me if the pages were updated... --[[anarcat]]

nicer formatting
diff --git a/doc/tips/importing_posts_from_wordpress/ikiwiki-wordpress-import.mdwn b/doc/tips/importing_posts_from_wordpress/ikiwiki-wordpress-import.mdwn
index ad8f24a..a59d4b5 100644
--- a/doc/tips/importing_posts_from_wordpress/ikiwiki-wordpress-import.mdwn
+++ b/doc/tips/importing_posts_from_wordpress/ikiwiki-wordpress-import.mdwn
@@ -3,7 +3,7 @@
 I converted the script to Perl.  The new version gets your name and email automatically from your git config, converts the body of your posts to markdown, and also imports comments.  More importantly it works with the latest wordpress, which the python version does not.  Note that it's still not 100% perfect and I intend to make a few modifications still, but they will require access to the mysql database and that may render the script useless to some users.
 
 -----
-<pre>
+[[!format perl '''
 #!/usr/bin/env perl
 
 use 5.16.1;
@@ -232,13 +232,13 @@ sub unique_comment_location {
    return $location
 }
 
-</pre>
+''']]
 -----
 
 I modified the script a bit so categories and tags would actually show up in the output file.
 
 -----
-<pre>
+[[!format '''
 #!/usr/bin/env python
 
 """
@@ -345,7 +345,7 @@ if __name__ == "__main__":
     else:
         main(*sys.argv[1:])
 
-</pre>
+''']]
 -----
 
 I have another version of the script, which uses the `timestamp` from the script, and inserts that as a \[[!meta date="foodate"]]. I'm posting it here just in case I happen to be doing something to the httpd.
@@ -353,7 +353,7 @@ I have another version of the script, which uses the `timestamp` from the script
 (Hopefully I've escaped everything properly; if I missed something, check the source.)
 
 -----
-<pre>
+[[!format '''
 #!/usr/bin/env python
 
 """
@@ -458,7 +458,7 @@ if __name__ == "__main__":
     else:
         main(*sys.argv[1:])
 
-</pre>
+''']]
 -----
 
 

meh - already supported, but buggy!
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 cc6ffa6..4ad1fb9 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
@@ -26,3 +26,19 @@ main = forever $
 > > It is not a standard feature (as much as Markdown is [standardized](http://www.codinghorror.com/blog/2012/10/the-future-of-markdown.html)...) But it does allow for [syntax hilightning](https://help.github.com/articles/github-flavored-markdown) too, just tag the language name after the backticks. It *seems* that Discount supports github-style backtick format (as well as Pandoc `~~~~` format) but doesn't allow the keyword argument.
 > > 
 > > I strongly support this feature. --[[anarcat]]
+> > 
+> > In fact, it turns out that it already works here!
+> >
+> > ~~~~
+> > this is a pandoc-style fenced in code block
+> > this is another line
+> > ~~~~
+> > 
+> > github-style backticks, however, do not add a wrapping `<pre>` block for some reason:
+> >
+> > ```
+> > this is a github-style fenced in code block
+> > this is another line
+> > ```
+> >
+> > ... maybe a bug in Discount... --[[anarcat]]

some answers
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 68a3553..cc6ffa6 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
@@ -22,3 +22,7 @@ main = forever $
 """]]
 
 > --[[Joey]]
+
+> > It is not a standard feature (as much as Markdown is [standardized](http://www.codinghorror.com/blog/2012/10/the-future-of-markdown.html)...) But it does allow for [syntax hilightning](https://help.github.com/articles/github-flavored-markdown) too, just tag the language name after the backticks. It *seems* that Discount supports github-style backtick format (as well as Pandoc `~~~~` format) but doesn't allow the keyword argument.
+> > 
+> > I strongly support this feature. --[[anarcat]]

Added `FabLab Deventer', when the website is up i'll add its URL
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 374b2a8..6b657c8 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -87,6 +87,7 @@ Projects & Organizations
 * [The Open TV White Space Project](http://opentvws.org)
 * [The RS-232 Club](http://rs232club.org)
 * [FusionInventory project](http://www.fusioninventory.org)
+* FabLab Deventer i.o.
 
 Personal sites and blogs
 ========================

Add more complete perl version
diff --git a/doc/tips/importing_posts_from_wordpress/ikiwiki-wordpress-import.mdwn b/doc/tips/importing_posts_from_wordpress/ikiwiki-wordpress-import.mdwn
index 0c0527f..ad8f24a 100644
--- a/doc/tips/importing_posts_from_wordpress/ikiwiki-wordpress-import.mdwn
+++ b/doc/tips/importing_posts_from_wordpress/ikiwiki-wordpress-import.mdwn
@@ -1,5 +1,240 @@
 [[!meta title="ikiwiki-wordpress-import"]]
 
+I converted the script to Perl.  The new version gets your name and email automatically from your git config, converts the body of your posts to markdown, and also imports comments.  More importantly it works with the latest wordpress, which the python version does not.  Note that it's still not 100% perfect and I intend to make a few modifications still, but they will require access to the mysql database and that may render the script useless to some users.
+
+-----
+<pre>
+#!/usr/bin/env perl
+
+use 5.16.1;
+use warnings;
+
+use XML::Simple;
+use DateTime::Format::Strptime;
+use HTML::WikiConverter;
+use LWP::UserAgent;
+use Try::Tiny;
+use Digest::MD5 'md5_hex';
+
+die "usage: $0 import_file subdir [branch] | git-fast-import"
+   unless @ARGV == 2 or @ARGV == 3;
+
+chomp(my $name = qx(git config --get user.name));
+chomp(my $email = qx(git config --get user.email));
+
+my ($file, $subdir, $branch) = @ARGV;
+
+my %events;
+
+POST:
+for my $x (grep $_->{'wp:status'} eq 'publish', @{XMLin($file)->{channel}{item}}) {
+   state $date_parser = DateTime::Format::Strptime->new(
+      pattern => '%F %T',
+      time_zone => 'UTC',
+   );
+
+   my $stub = $x =~ m<([^/]+)\/$>
+      ? $1
+      : lc($x->{title} =~ s/\W/-/gr =~ s/-$//r)
+   ;
+
+   my $guid = $x->{guid}{content} || $x->{link};
+   utf8::encode($x->{title});
+   my $msg = qq($x->{title}\n\nfrom WordPress [$guid]);
+   my $timestamp = $date_parser
+      ->parse_datetime($x->{'wp:post_date_gmt'})
+      ->epoch;
+
+   my $c = $x->{category};
+   $c = [$c] if ref $c && ref $c ne 'ARRAY';
+
+   my $content =
+      sprintf(qq([[!meta title="%s"]]\n), $x->{title} =~ s/"/\\"/gr) .
+      convert_content($x->{'content:encoded'}) . "\n\n" .
+      join("\n",
+         map '[[!tag ' . s/ /-/r . ']]',
+         keys %{
+            +{
+               map { $_ => 1 }
+               grep $_ ne 'uncategorized',
+               map $_->{nicename},
+               @$c
+            }
+         }
+      );
+
+   $events{$timestamp} = join "\n",
+      "commit refs/heads/$branch",
+      "committer $name <$email> $timestamp +0000",
+      'data <<8675309',
+      $msg,
+      '8675309',
+      "M 644 inline $subdir/$stub.mdwn",
+      'data <<8675309',
+      $content,
+      '8675309'
+   ;
+
+   get_comments($x->{link}, "$subdir/$stub")
+      if $x->{'wp:post_type'} eq 'post'
+}
+
+sub get_comments {
+   my ($url, $dir) = @_;
+
+   state $ua = LWP::UserAgent->new;
+
+   my $content = $ua->get("$url/feed")->decoded_content;
+   my $first;
+   my $bail;
+   my $decoded =
+      try { XMLin($content, ForceArray => ['item']) }
+      catch { $bail = 1 };
+
+   return if $bail;
+
+   COMMENT:
+   for my $x (@{$decoded->{channel}{item}}) {
+      my $date = $x->{pubDate};
+      $date =~ s/^\S+\s//;
+      $date =~ s/\s\S+$//;
+
+      #ghetto
+      $date =~ s/Jan/01/;
+      $date =~ s/Feb/02/;
+      $date =~ s/Mar/03/;
+      $date =~ s/Apr/04/;
+      $date =~ s/May/05/;
+      $date =~ s/Jun/06/;
+      $date =~ s/Jul/07/;
+      $date =~ s/Aug/08/;
+      $date =~ s/Sep/09/;
+      $date =~ s/Oct/10/;
+      $date =~ s/Nov/11/;
+      $date =~ s/Dec/12/;
+
+      state $date_parser = DateTime::Format::Strptime->new(
+         pattern => '%d %m %Y %T',
+         time_zone => 'UTC',
+      );
+
+      my $datetime = $date_parser
+         ->parse_datetime($date);
+
+      my $timestamp = $datetime->epoch;
+      my $formatted_date = "$timestamp";
+
+      my $msg = 'Added a comment';
+      my $content = convert_content($x->{'content:encoded'});
+      utf8::encode($x->{'dc:creator'});
+
+      $events{$timestamp} = join "\n",
+         "commit refs/heads/$branch",
+         # still need to get email address
+         "committer $x->{'dc:creator'} <$x->{'dc:creator'}> $timestamp +0000",
+         'data <<8675309',
+         $msg,
+         '8675309',
+         "M 644 inline " . unique_comment_location($dir, $content),
+         'data <<8675309',
+
+      <<"COMMENT",
+[[!comment format=mdwn
+ username="$x->{'dc:creator'}"
+ date="$formatted_date"
+ content="""
+$content
+"""]]
+COMMENT
+      '8675309'
+      ;
+   }
+}
+
+say $events{$_} for sort keys %events;
+
+sub convert_content {
+   my $body = shift;
+
+   utf8::encode($body);
+
+   state $converter = HTML::WikiConverter->new(
+      dialect              => 'Markdown',
+      link_style           => 'inline',
+      unordered_list_style => 'dash',
+      image_style          => 'inline',
+      image_tag_fallback   => 0,
+   );
+
+   # I know I know you can't parse XML with regular expressions.  Go find a real
+   # parser and send me a patch
+   my $in_code = 0;
+
+   my $start_code = qr(<pre[^>]*>);
+   # (?:) is a no op but keeps ikiwiki from breaking my script
+   my $end_code = qr(</p(?:)re>);
+
+   $body =~ s(&#(?:8217|039);)(')g;
+   $body =~ s(&(?:quot|#822[01]);)(")g;
+   $body =~ s(&lt;)(<)g;
+   $body =~ s(&gt;)(>)g;
+   $body =~ s(&amp;)(&)g;
+   $body =~ s(&#8230;)(...)g;
+   $body =~ s(&#821[12];)(-)g;
+   $body =~ s(&#8216;)(')g;
+   $body =~ s(&#8242;)(')g;
+   $body =~ s(&infin;)(∞)g;
+   $body =~ s(&nbsp;)()g;
+   $body =~ s(<code[^>]*>)(<p(?:)re>)g;
+   $body =~ s(</c(?:)ode>)(</p(?:)re>)g;
+
+   my @tokens =
+      map {; split qr[(?=<p(?:)re>)] }
+      map {; split qr[</p(?:)re>\K] }
+      split /\n\n/,
+      $body;

(Diff truncated)
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index ec91c87..3ecd588 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -15,6 +15,7 @@ hello world
 > Back to the first level.
 >
 > added a line in level 1
+> and another
 
 
 Numbered list 

diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 96fb698..ec91c87 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -72,6 +72,7 @@ test _this_ out.
 
 _italic_
 
+test ms
 
 opopopo
 ----

diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index c7c91e4..96fb698 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -13,6 +13,9 @@ hello world
 >>> to three levels
 >
 > Back to the first level.
+>
+> added a line in level 1
+
 
 Numbered list 
 

diff --git a/doc/plugins/contrib/mediawiki/discussion.mdwn b/doc/plugins/contrib/mediawiki/discussion.mdwn
index 9dfe7fd..c288d9b 100644
--- a/doc/plugins/contrib/mediawiki/discussion.mdwn
+++ b/doc/plugins/contrib/mediawiki/discussion.mdwn
@@ -6,4 +6,4 @@ Anyone know a safe place where this plugin can be found? -- mjr at phonecoop.coo
 
 ---
 
-Something that gives me better results is to edit the source of the [[wikitext]] plugin, and change all occurences of Text::WikiFormat to Text::MediawikiFormat. (This of course depends on ''libtext-mediawikiformat-perl'' instead of ''libtext-wikiformat-perl''.
+Something that gives me better results is to edit the source of the [[wikitext]] plugin, and change all occurences of Text::WikiFormat to Text::MediawikiFormat. (This of course depends on ''libtext-mediawikiformat-perl'' instead of ''libtext-wikiformat-perl'' -- [[gi1242]]

comment on getting this to work with mediawiki files.
diff --git a/doc/plugins/contrib/mediawiki/discussion.mdwn b/doc/plugins/contrib/mediawiki/discussion.mdwn
index 5066d9d..9dfe7fd 100644
--- a/doc/plugins/contrib/mediawiki/discussion.mdwn
+++ b/doc/plugins/contrib/mediawiki/discussion.mdwn
@@ -3,3 +3,7 @@ Anyone know a safe place where this plugin can be found? -- mjr at phonecoop.coo
 > I ended up doing a backassward way of doing it, as described at the [convert discussion page](http://ikiwiki.info/tips/convert_mediawiki_to_ikiwiki/discussion/). -[[simonraven]]
 
 >> I've mirrored it at <http://alcopop.org/~jon/mediawiki.pm>. -- [[Jon]]
+
+---
+
+Something that gives me better results is to edit the source of the [[wikitext]] plugin, and change all occurences of Text::WikiFormat to Text::MediawikiFormat. (This of course depends on ''libtext-mediawikiformat-perl'' instead of ''libtext-wikiformat-perl''.

remark that adding the GMail OpenID as an admin is unhandy
diff --git a/doc/forum/google_openid_broken__63__.mdwn b/doc/forum/google_openid_broken__63__.mdwn
index 96ba2d7..d25d8fe 100644
--- a/doc/forum/google_openid_broken__63__.mdwn
+++ b/doc/forum/google_openid_broken__63__.mdwn
@@ -4,6 +4,9 @@ directly to sign into ikiwiki. Just use, for example,
 
 > This seems to work fine if you use the profile directly as an OpenID.  It doesn't seem to work with delegation.  From that I can see, this is a deliberate decision by Google for security reasons.  See the response [here](http://groups.google.com/group/google-federated-login-api/browse_thread/thread/825067789537568c/23451a68c8b8b057?show_docid=23451a68c8b8b057). -- [[Will]]
 
+### adding the GMail OpenID as an admin is unhandy
+Adding the non-human-friendly OpenID from Gmail as an admin for ikiwiki (if you haven't set up a profile with a readabe URL) is unhandy; first, you need to discover the URL, for example, by making a web edit with it (like me [here](http://source.ikiwiki.branchable.com/?p=source.git;a=search;s=https://www.google.com/accounts/o8/id%3Fid%3DAItOawl3JW_Ow4xMqj98Ig1vwGx_AnjUSsgwE8E;st=author)), and then copy the URL to ikiwiki.setup. --Ivan Z.
+
 ## historical discussion
 
 when I login via to this wiki (or ours) via Google's OpenID, I get this error:

themes for mobile devices
diff --git a/doc/forum/Ikiwiki_themes_for_mobile_devices__63__.mdwn b/doc/forum/Ikiwiki_themes_for_mobile_devices__63__.mdwn
new file mode 100644
index 0000000..dc1b31c
--- /dev/null
+++ b/doc/forum/Ikiwiki_themes_for_mobile_devices__63__.mdwn
@@ -0,0 +1,7 @@
+Has anyone else created ikiwiki themes for mobile devices like phones and tablets?
+
+I've been using Blueview theme for a few years and finally tried to adapt the theme for my phone.
+My local.css is [here](http://mcfrisk.kapsi.fi/local.css), and my hobby web page full of images and videos [here](http://mcfrisk.kapsi.fi/skiing/).
+
+Previously I also had problems like wasted screen space, big minimum width and images not scaled down to the CSS element. Those got fixed as well.
+Would be nice if others could test that and maybe share their setups.

Added a comment: bug/feature in Makefile.PL
diff --git a/doc/forum/Refresh_or_recreate_style.css__63__/comment_1_3274be931d0b543c7f7cf641810817aa._comment b/doc/forum/Refresh_or_recreate_style.css__63__/comment_1_3274be931d0b543c7f7cf641810817aa._comment
new file mode 100644
index 0000000..608dca0
--- /dev/null
+++ b/doc/forum/Refresh_or_recreate_style.css__63__/comment_1_3274be931d0b543c7f7cf641810817aa._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://mcfrisk.myopenid.com/"
+ nickname="mikko.rapeli"
+ subject="bug/feature in Makefile.PL"
+ date="2013-03-30T11:53:41Z"
+ content="""
+Theme style.css files were appended when installing in Makefile.PL. IMO overwriting the destination files is more correct. Sent a patch to Joey.
+"""]]

question
diff --git a/doc/forum/Refresh_or_recreate_style.css__63__.mdwn b/doc/forum/Refresh_or_recreate_style.css__63__.mdwn
new file mode 100644
index 0000000..262b0e3
--- /dev/null
+++ b/doc/forum/Refresh_or_recreate_style.css__63__.mdwn
@@ -0,0 +1,40 @@
+I was trying to use plain blueview theme but that's not what I see in the installed style.css:
+
+    ~/src/ikiwiki/themes/blueview$ grep bzed style.css
+    /*    bzed theme for ikiwiki
+    ~/src/ikiwiki/themes/blueview$ wc -l style.css
+    281 style.css
+    $ grep bzed ~/www/style.css
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    $ wc -l ~/www/style.css
+    7913
+
+I have installed ikiwiki to my home directory on the shared server and it seems the big css file is there too:
+
+    $ grep bzed ~/bin/share/ikiwiki/themes/blueview/style.css 
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    /*    bzed theme for ikiwiki
+    $ wc -l ~/bin/share/ikiwiki/themes/blueview/style.css 
+    7913
+
+Is the style.css really supposed to be that big?
+If not, how to create it from scratch?
+
+Reason why I'm debugging the css is that I'd like to make it better on small handset screens, like drop all margins, inline or hide sidebar etc. Chromium shows that the processed css is quite a mess.

more complete
diff --git a/doc/forum/How_do_I_enable_OpenID__63__.mdwn b/doc/forum/How_do_I_enable_OpenID__63__.mdwn
index 198cef1..a4e1a45 100644
--- a/doc/forum/How_do_I_enable_OpenID__63__.mdwn
+++ b/doc/forum/How_do_I_enable_OpenID__63__.mdwn
@@ -1 +1 @@
-I'm trying to set up a new ikiwiki based blog and I want commentors to be able to log in with OpenID.  To enable OpenID I installed Net::OpenID::Consumer, and enabled the openid plugin in my blog.setup file.  Despite doing that I still only see the username and password in the login screen.  What am I missing?
+I'm trying to set up a new ikiwiki based blog and I want commentors to be able to log in with OpenID.  To enable OpenID I installed Net::OpenID::Consumer, and enabled the openid plugin in my blog.setup file and ran the ikiwiki --setup command.  Despite doing that I still only see the username and password in the login screen.  What am I missing?

diff --git a/doc/forum/How_do_I_enable_OpenID__63__.mdwn b/doc/forum/How_do_I_enable_OpenID__63__.mdwn
new file mode 100644
index 0000000..198cef1
--- /dev/null
+++ b/doc/forum/How_do_I_enable_OpenID__63__.mdwn
@@ -0,0 +1 @@
+I'm trying to set up a new ikiwiki based blog and I want commentors to be able to log in with OpenID.  To enable OpenID I installed Net::OpenID::Consumer, and enabled the openid plugin in my blog.setup file.  Despite doing that I still only see the username and password in the login screen.  What am I missing?

add missing but required env var
diff --git a/doc/tips/DreamHost.mdwn b/doc/tips/DreamHost.mdwn
index 070638e..338bca7 100644
--- a/doc/tips/DreamHost.mdwn
+++ b/doc/tips/DreamHost.mdwn
@@ -176,6 +176,7 @@ Then you'll have to add a few variables to your path [referenced by your compile
 
     export C_INCLUDE_PATH=YOUR_INSTALL_PATH_HERE/include/
     export LIBRARY_PATH=YOUR_INSTALL_PATH_HERE/lib/
+    export LD_LIBRARY_PATH=YOUR_INSTALL_PATH_HERE/lib/
 
 Then you should be able to install the module, and it'll be faster.
 

add my repo to the list of repos
diff --git a/doc/git.mdwn b/doc/git.mdwn
index 25a360e..b743f61 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -76,6 +76,7 @@ think about merging them. This is recommended. :-)
 * [[ttw]] `git://github.com/ttw/ikiwiki.git`
 * [[anarcat]] `git://src.anarcat.ath.cx/ikiwiki`
 * anderbubble `git://civilfritz.net/ikiwiki.git`
+* frioux `git://github.com/frioux/ikiwiki`
 
 ## branches
 

comment on fix for using system perl
diff --git a/doc/todo/assumes_system_perl.mdwn b/doc/todo/assumes_system_perl.mdwn
index a040547..63ffccf 100644
--- a/doc/todo/assumes_system_perl.mdwn
+++ b/doc/todo/assumes_system_perl.mdwn
@@ -13,4 +13,8 @@ The installed bin/ikiwiki file also refers to /usr/bin/perl rather than the perl
 > yours, but do not plan to work on it myself, since I do not use systems
 > where /usr/bin/perl is not a sane default. --[[Joey]]
 
+> > I've implemented a change that should fix this.  For what it's worth this is a
+> > life saver on shared hosting where building your own perl is super effective.
+> > --frioux ([code here](https://github.com/frioux/ikiwiki/tree/use-env-perl))
+
 [[wishlist]]

This ain't a format plugin.
diff --git a/doc/plugins/contrib/proxies.mdwn b/doc/plugins/contrib/proxies.mdwn
index dc53adf..7f8f5fa 100644
--- a/doc/plugins/contrib/proxies.mdwn
+++ b/doc/plugins/contrib/proxies.mdwn
@@ -1,6 +1,6 @@
 [[!template id=plugin name=proxies author="[[schmonz]]"]]
 [[!template id=gitbranch branch=schmonz/proxies author="[[schmonz]]"]]
-[[!tag type/format]]
+[[!tag type/web]]
 
 This plugin enables ikiwiki to open outbound connections (such as
 found in [[plugins/aggregate]], [[plugins/openid]], and [[plugins/pinger]])

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 4839957..68a3553 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
@@ -20,3 +20,5 @@ main :: IO ()
 main = forever $
   putStrLn "hello, world!"
 """]]
+
+> --[[Joey]]

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 a132188..4839957 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
@@ -6,3 +6,17 @@ GitHub's flavor of markdown adds fenced code blocks, delimited by triple-backquo
     ```
 
 That syntax proves quite a bit more convenient in many cases, because it doesn't require modifying every line of the code block to add indentation.  Please consider adding optional support for this in ikiwiki.  Please also consider turning it on by default for new wikis, though not for existing wikis since it could *potentially* break backward compatibility with existing content.
+
+> I don't think that's an official markdown feature, although it might be available
+> as an extension in some markdown library or other -- possibly one of the ones
+> supported by ikiwiki.
+> 
+> However, aside from compatability, ikiwiki already provides a way to do it that does not
+> require indenting the code: The [[ikiwiki/directive/format]] directive. Which has the benefit of
+> also telling it what kind of code it is, so it can syntax highlight it. Example:
+
+[[!format haskell """
+main :: IO ()
+main = forever $
+  putStrLn "hello, world!"
+"""]]