aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/blogspam.pm1
-rw-r--r--IkiWiki/Plugin/bzr.pm2
-rw-r--r--IkiWiki/Plugin/calendar.pm43
-rw-r--r--IkiWiki/Plugin/comments.pm21
-rw-r--r--IkiWiki/Plugin/notifyemail.pm1
-rw-r--r--IkiWiki/Plugin/osm.pm1
-rw-r--r--IkiWiki/Plugin/theme.pm9
-rw-r--r--debian/changelog25
-rw-r--r--doc/bugs/blogspam_marks_me_as_spam_on_ipv6.mdwn8
-rw-r--r--doc/bugs/encoding_issue_in_blogspam_plugin.mdwn34
-rw-r--r--doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn32
-rw-r--r--doc/bugs/osm_KML_maps_icon_path_have_a_trailing_slash.mdwn2
-rw-r--r--doc/bugs/trail_shows_on_cgi_pages.mdwn9
-rw-r--r--doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn2
-rw-r--r--doc/forum/Can_ikiwiki_be_configured_as_multi_user_blog__63__.mdwn7
-rw-r--r--doc/forum/Forward_slashes_being_escaped_as_252F/comment_1_7702cf6d354ab600d6643b075b9f09da._comment12
-rw-r--r--doc/forum/How_can_I_prevent_spam__63__.mdwn17
-rw-r--r--doc/forum/How_can_I_prevent_spam__63__/comment_1_fd26fb7f1569e8c44ba8262794f938db._comment19
-rw-r--r--doc/forum/How_can_I_prevent_spam__63__/comment_2_d098124f005976ee815d25c883bc9106._comment16
-rw-r--r--doc/forum/How_can_I_prevent_spam__63__/comment_3_deb434d01aaefa18d2791e48d6c824ae._comment8
-rw-r--r--doc/forum/Translating_ikiwiki_interface.mdwn2
-rw-r--r--doc/forum/web_service_API__44___fastcgi_support.mdwn5
-rw-r--r--doc/ikiwikiusers.mdwn7
-rw-r--r--doc/news/openid.mdwn2
-rw-r--r--doc/news/version_3.20121016.mdwn17
-rw-r--r--doc/news/version_3.20130518.mdwn9
-rw-r--r--doc/plugins/contrib/album/discussion.mdwn46
-rw-r--r--doc/plugins/contrib/mathjax.mdwn13
-rw-r--r--doc/style.css1
-rw-r--r--doc/templates/links.mdwn2
-rw-r--r--doc/theme_market.mdwn2
-rw-r--r--doc/themes.mdwn4
-rw-r--r--doc/themes/discussion.mdwn11
-rw-r--r--doc/tips/dot_cgi.mdwn7
-rw-r--r--doc/todo/Calendar:_listing_multiple_entries_per_day_.mdwn2
-rw-r--r--doc/todo/Restrict_formats_allowed_for_comments.mdwn2
-rw-r--r--doc/todo/fancypodcast.mdwn119
-rw-r--r--doc/users/schmonz.mdwn44
-rw-r--r--ikiwiki.spec2
-rw-r--r--po/ikiwiki.pot6
-rw-r--r--templates/page.tmpl10
41 files changed, 518 insertions, 64 deletions
diff --git a/IkiWiki/Plugin/blogspam.pm b/IkiWiki/Plugin/blogspam.pm
index d32c2f169..e48ed729f 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 $@;
}
diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
index 72552abcc..99a07d2c0 100644
--- a/IkiWiki/Plugin/bzr.pm
+++ b/IkiWiki/Plugin/bzr.pm
@@ -195,7 +195,7 @@ sub rcs_add ($) {
sub rcs_remove ($) {
my ($file) = @_;
- my @cmdline = ("bzr", "rm", "--force", "--quiet", "$config{srcdir}/$file");
+ my @cmdline = ("bzr", "rm", "--quiet", "$config{srcdir}/$file");
if (system(@cmdline) != 0) {
warn "'@cmdline' failed: $!";
}
diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
index d443198f6..8ca6dd826 100644
--- a/IkiWiki/Plugin/calendar.pm
+++ b/IkiWiki/Plugin/calendar.pm
@@ -86,8 +86,10 @@ sub format_month (@) {
my $year = $date[5] + 1900;
my $mtag = sprintf("%02d", $month);
- # Only one posting per day is being linked to.
- $linkcache{"$year/$mtag/$mday"} = $p;
+ if (! $linkcache{"$year/$mtag/$mday"}) {
+ $linkcache{"$year/$mtag/$mday"} = [];
+ }
+ push(@{$linkcache{"$year/$mtag/$mday"}}, $p);
}
my $pmonth = $params{month} - 1;
@@ -221,11 +223,38 @@ EOF
$tag='month-calendar-day-link';
}
$calendar.=qq{\t\t<td class="$tag $downame{$wday}">};
- $calendar.=htmllink($params{page}, $params{destpage},
- $linkcache{$key},
- noimageinline => 1,
- linktext => $day,
- title => pagetitle(IkiWiki::basename($linkcache{$key})));
+ if (scalar(@{$linkcache{$key}}) == 1) {
+ # Only one posting on this page
+ my $page = $linkcache{$key}[0];
+ $calendar.=htmllink($params{page}, $params{destpage},
+ $page,
+ noimageinline => 1,
+ linktext => $day,
+ title => pagetitle(IkiWiki::basename($page)));
+ }
+ else {
+ $calendar.=qq{<div class='popup'>$day<div class='balloon'>};
+ # Several postings on this page
+ $calendar.=qq{<ul>};
+ foreach my $page (@{$linkcache{$key}}) {
+ $calendar.= qq{\n\t\t\t<li>};
+ my $title;
+ if (exists $pagestate{$page}{meta}{title}) {
+ $title = "$pagestate{$page}{meta}{title}";
+ }
+ else {
+ $title = pagetitle(IkiWiki::basename($page));
+ }
+ $calendar.=htmllink($params{page}, $params{destpage},
+ $page,
+ noimageinline => 1,
+ linktext => $title,
+ title => $title);
+ $calendar.= '</li>';
+ }
+ $calendar.=qq{\n\t\t</ul>};
+ $calendar.=qq{</div></div>};
+ }
$calendar.=qq{</td>\n};
}
else {
diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index c00bf5275..1ef79a27a 100644
--- a/IkiWiki/Plugin/comments.pm
+++ b/IkiWiki/Plugin/comments.pm
@@ -90,6 +90,15 @@ sub getsetup () {
safe => 0,
rebuild => 0,
},
+ comments_allowformats => {
+ type => 'string',
+ default => '',
+ example => 'mdwn txt',
+ description => 'Restrict formats for comments to (no restriction if empty)',
+ safe => 1,
+ rebuild => 0,
+ },
+
}
sub checkconfig () {
@@ -101,6 +110,8 @@ sub checkconfig () {
unless defined $config{comments_closed_pagespec};
$config{comments_pagename} = 'comment_'
unless defined $config{comments_pagename};
+ $config{comments_allowformats} = ''
+ unless defined $config{comments_allowformats};
}
sub htmlize {
@@ -128,12 +139,18 @@ sub safeurl ($) {
}
}
+sub isallowed ($) {
+ my $format = shift;
+ return ! $config{comments_allowformats} || $config{comments_allowformats} =~ /\b$format\b/;
+}
+
sub preprocess {
my %params = @_;
my $page = $params{page};
my $format = $params{format};
- if (defined $format && ! exists $IkiWiki::hooks{htmlize}{$format}) {
+ if (defined $format && (! exists $IkiWiki::hooks{htmlize}{$format} ||
+ ! isallowed($format))) {
error(sprintf(gettext("unsupported page format %s"), $format));
}
@@ -332,7 +349,7 @@ sub editcomment ($$) {
my @page_types;
if (exists $IkiWiki::hooks{htmlize}) {
- foreach my $key (grep { !/^_/ } keys %{$IkiWiki::hooks{htmlize}}) {
+ foreach my $key (grep { !/^_/ && isallowed($_) } keys %{$IkiWiki::hooks{htmlize}}) {
push @page_types, [$key, $IkiWiki::hooks{htmlize}{$key}{longname} || $key];
}
}
diff --git a/IkiWiki/Plugin/notifyemail.pm b/IkiWiki/Plugin/notifyemail.pm
index 2c1775f2e..b50a22a00 100644
--- a/IkiWiki/Plugin/notifyemail.pm
+++ b/IkiWiki/Plugin/notifyemail.pm
@@ -78,6 +78,7 @@ sub anonsubscribe ($$) {
sub notify (@) {
my @files=@_;
return unless @files;
+ return if $config{rebuild};
eval q{use Mail::Sendmail};
error $@ if $@;
diff --git a/IkiWiki/Plugin/osm.pm b/IkiWiki/Plugin/osm.pm
index a7baa5f2b..c9650d014 100644
--- a/IkiWiki/Plugin/osm.pm
+++ b/IkiWiki/Plugin/osm.pm
@@ -192,6 +192,7 @@ sub process_waypoint {
}
}
$icon = urlto($icon, $dest, 1);
+ $icon =~ s!/*$!!; # hack - urlto shouldn't be appending a slash in the first place
$tag = '' unless $tag;
register_rendered_files($map, $page, $dest);
$pagestate{$page}{'osm'}{$map}{'waypoints'}{$name} = {
diff --git a/IkiWiki/Plugin/theme.pm b/IkiWiki/Plugin/theme.pm
index ee94547e9..9b84ea7f0 100644
--- a/IkiWiki/Plugin/theme.pm
+++ b/IkiWiki/Plugin/theme.pm
@@ -9,6 +9,7 @@ sub import {
hook(type => "getsetup", id => "theme", call => \&getsetup);
hook(type => "checkconfig", id => "theme", call => \&checkconfig);
hook(type => "needsbuild", id => "theme", call => \&needsbuild);
+ hook(type => "pagetemplate", id => "theme", call => \&pagetemplate);
}
sub getsetup () {
@@ -63,4 +64,12 @@ sub needsbuild ($) {
return $needsbuild;
}
+sub pagetemplate (@) {
+ my %params=@_;
+ my $template=$params{template};
+ if (exists $config{theme} && length $config{theme}) {
+ $template->param("theme_$config{theme}" => 1);
+ }
+}
+
1
diff --git a/debian/changelog b/debian/changelog
index e6d39fa27..d98af52cf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,30 @@
-ikiwiki (3.20130505) UNRELEASED; urgency=low
+ikiwiki (3.20130519) UNRELEASED; urgency=low
+
+ * blogspam: Fix encoding issue in RPC::XML call.
+ Thanks, Changaco
+ * comments: The formats allowed to be used in comments can be configured
+ using comments_allowformats.
+ Thanks, Michal Sojka
+ * calendar: When there are multiple pages for a given day, they're
+ displayed in a popup on mouseover.
+ Thanks, Louis
+ * osm: Remove trailing slash from KML maps icon.
+ * page.tmpl: omit searchform, trails, sidebar and most metadata in CGI
+ (smcv)
+
+ -- Joey Hess <joeyh@debian.org> Sun, 23 Jun 2013 14:02:01 -0400
+
+ikiwiki (3.20130518) unstable; urgency=low
* Fix test suite to not fail when XML::Twig is not installed.
Closes: #707436
+ * theme: Now <TMPL_IF THEME_$NAME> 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
- -- Joey Hess <joeyh@debian.org> Thu, 09 May 2013 10:47:18 -0400
+ -- Joey Hess <joeyh@debian.org> Sat, 18 May 2013 16:28:21 -0400
ikiwiki (3.20130504) unstable; urgency=low
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 000000000..9b415a84a
--- /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 [[blogspam_options whitelist vs. IPv6?]].
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 000000000..92318d165
--- /dev/null
+++ b/doc/bugs/encoding_issue_in_blogspam_plugin.mdwn
@@ -0,0 +1,34 @@
+[[!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>
+
+[[done]] --[[Joey]]
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 000000000..a004154df
--- /dev/null
+++ b/doc/bugs/feedpages_does_not_prevent_tags_from_being_aggregated.mdwn
@@ -0,0 +1,32 @@
+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
+
+> 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]]
+
+> > 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/osm_KML_maps_icon_path_have_a_trailing_slash.mdwn b/doc/bugs/osm_KML_maps_icon_path_have_a_trailing_slash.mdwn
index 0677d0e74..a3a88d138 100644
--- a/doc/bugs/osm_KML_maps_icon_path_have_a_trailing_slash.mdwn
+++ b/doc/bugs/osm_KML_maps_icon_path_have_a_trailing_slash.mdwn
@@ -30,3 +30,5 @@ index a7baa5f..c9650d0 100644
"""]]
I'm not writing this to a branch out of sheer shame of my misunderstanding. ;) There also may be a workaround that could be done in Nginx too. --[[anarcat]]
+
+> [[applied|done]], but I'm not happy with this either --[[Joey]]
diff --git a/doc/bugs/trail_shows_on_cgi_pages.mdwn b/doc/bugs/trail_shows_on_cgi_pages.mdwn
index 74f329fbc..af1de3028 100644
--- a/doc/bugs/trail_shows_on_cgi_pages.mdwn
+++ b/doc/bugs/trail_shows_on_cgi_pages.mdwn
@@ -1,3 +1,12 @@
When commenting on, or I think editing, a page that uses the trail
plugin, the trail is displayed across the top of the page. This should not
happen, probably. --[[Joey]]
+
+> [[!template id=gitbranch branch=smcv/ready/no-trails-if-dynamic author="[[smcv]]"]]
+> [[!tag patch]]
+> Fixed in my branch. --[[smcv]]
+
+>> [[merged|done]], although I am ambivilant about hiding the search box,
+>> and unsure about hiding the sidebar. At least the latter fixes an
+>> annoying layout problem with the comment page, where the textarea
+>> appears below the sidebar due to its width. --[[Joey]]
diff --git a/doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn b/doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn
index 251cd6d9f..c3ecf36be 100644
--- a/doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn
+++ b/doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn
@@ -17,3 +17,5 @@ and a suitable whilst loop looks to be all that's needed...
Any pointers appreciated.
A [[!taglink patch]] has been proposed in [comment](#comment-d6f94e2b779d1c038b6359aad79ed14b)
+
+> This has been applied. --[[Joey]]
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 000000000..118b534ed
--- /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
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 000000000..7c9ccbca1
--- /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]
+"""]]
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 000000000..44e31927e
--- /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?
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 000000000..a7293288c
--- /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.
+"""]]
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 000000000..53e743361
--- /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,
+"""]]
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 000000000..64783befc
--- /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.
+"""]]
diff --git a/doc/forum/Translating_ikiwiki_interface.mdwn b/doc/forum/Translating_ikiwiki_interface.mdwn
new file mode 100644
index 000000000..4003302e5
--- /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?
diff --git a/doc/forum/web_service_API__44___fastcgi_support.mdwn b/doc/forum/web_service_API__44___fastcgi_support.mdwn
index 4a78fb932..84b227eef 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]]
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 6b657c8ff..ecba46e03 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/)
@@ -88,6 +88,9 @@ 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.
+* [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
========================
@@ -191,3 +194,5 @@ 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
+* [Anarcat's homepage](http://anarcat.ath.cx/) - with a custom [[theme|theme_market]]
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index 8f04c5e90..0f4b8b5bf 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"]]
diff --git a/doc/news/version_3.20121016.mdwn b/doc/news/version_3.20121016.mdwn
deleted file mode 100644
index 62cb39758..000000000
--- 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 000000000..635b86935
--- /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
diff --git a/doc/plugins/contrib/album/discussion.mdwn b/doc/plugins/contrib/album/discussion.mdwn
index cdb8353e5..de1180d10 100644
--- a/doc/plugins/contrib/album/discussion.mdwn
+++ b/doc/plugins/contrib/album/discussion.mdwn
@@ -410,3 +410,49 @@ I've integrated the jquery masonry plugin into the albumitem template and it wor
But is there a way to create thumnails of different sizes? I've passed thumnailsize option
and value to album directive and while it does create the new thumbnail sizes it doesn't use them,
The 96x96 thumbnails still appear on the page no matter what I do. - jaime
+
+----
+
+Hi, the plugin looks great, but I am probably too dumb to use it ;( here is what I did:
+created page gal.mdwn with just \[\[!album\]\] directive (no arguments) and subdirectory gal/ with images in form img_1234.jpg
+
+when I run ikiwiki, I get something completely wrong though:
+
+generated gal/index.html page contains following code repeated for every image:
+
+ <div class="album-viewer">
+ <div id="album-img">
+ <div class="album-finish">
+ <a href="./"><span class="album-arrow">↑</span></a>
+ </div>
+ </div>
+ </div>
+
+So no links to any images, etc.
+
+The pages for individual images are generated though, but also not correct. Trails section is perfect, but the main part is wrong:
+
+ <div class="album-prev">
+ <a><span class="album-arrow">â†<90></span></a><br />
+ <div class="album-thumbnail">
+ <span class="selflink">
+ <img src="./96x96-img_2913.jpg" width="96" height="72" alt="img 2913" title="img 2913" class="img" /></span>
+ </div>
+ </div>
+
+This really seems like this should be in the album page and not individul page. It is only thumbnail and not full image. Also the full image is not in the generated html tree at all!
+
+I am using ikiwiki 3.20130518, and got the album sources from the links of [this page](http://ikiwiki.info/plugins/contrib/album/) (part manual installation)
+
+Any hint about what do I do wrong?
+
+Thanks Lukas
+
+> This plugin is not really finished. I probably need to update it for
+> current ikiwiki. I'll try to update it (and also update my demo
+> and installation instructions) at some point. --[[smcv]]
+
+>> I have to appologize, I accidentally copied the template wrongly and that caused all the issues ;(
+>> So now after two days debugging and tracing, I just fixed that and it works. Well, at least a learnt
+>> a lot about ikiwiki internal ;-)
+>> Thanks for all the work you did on the plugin! --Lukas
diff --git a/doc/plugins/contrib/mathjax.mdwn b/doc/plugins/contrib/mathjax.mdwn
new file mode 100644
index 000000000..a784b95d9
--- /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.
diff --git a/doc/style.css b/doc/style.css
index 81b6a0a28..067a3bf7a 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -324,6 +324,7 @@ div.progress-done {
.popup .paren,
.popup .expand {
display: none;
+ text-align: left;
}
.popup:hover .balloon,
.popup:focus .balloon {
diff --git a/doc/templates/links.mdwn b/doc/templates/links.mdwn
index 6c66a02ec..4bd1a85bf 100644
--- a/doc/templates/links.mdwn
+++ b/doc/templates/links.mdwn
@@ -11,6 +11,6 @@
<li>[[TipJar]]</li>
</ul>
<a href="http://flattr.com/thing/39811/ikiwiki">
-<img src="http://api.flattr.com/button/flattr-badge-large.png"
+<img src="https://api.flattr.com/button/flattr-badge-large.png"
alt="Flattr this" title="Flattr this" /></a>
</div>
diff --git a/doc/theme_market.mdwn b/doc/theme_market.mdwn
index 06526df1a..e9bdaa056 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/]]
diff --git a/doc/themes.mdwn b/doc/themes.mdwn
index 7df25e66b..e15248360 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
diff --git a/doc/themes/discussion.mdwn b/doc/themes/discussion.mdwn
index ce79d0f70..5c0766a06 100644
--- a/doc/themes/discussion.mdwn
+++ b/doc/themes/discussion.mdwn
@@ -7,3 +7,14 @@ 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]]
+
+> Step 1 is to not need two versions of page.tmpl to be maintained.
+> This is, unfortunately, the reason why I have not pulled in the bootstrap
+> theme yet. I recently made `<TMPL_IF THEME_$NAME>` be available,
+> so the page.tmpl could use that to do different things if the boostrap
+> theme was enabled. --[[Joey]]
diff --git a/doc/tips/dot_cgi.mdwn b/doc/tips/dot_cgi.mdwn
index dc88d9595..9067fbea5 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.
diff --git a/doc/todo/Calendar:_listing_multiple_entries_per_day_.mdwn b/doc/todo/Calendar:_listing_multiple_entries_per_day_.mdwn
index 94a4f1577..ba01790b3 100644
--- a/doc/todo/Calendar:_listing_multiple_entries_per_day_.mdwn
+++ b/doc/todo/Calendar:_listing_multiple_entries_per_day_.mdwn
@@ -90,3 +90,5 @@ Regards,
}
.popup:hover .balloon,
.popup:focus .balloon {
+
+> [[applied|done]] --[[Joey]]
diff --git a/doc/todo/Restrict_formats_allowed_for_comments.mdwn b/doc/todo/Restrict_formats_allowed_for_comments.mdwn
index cfae38465..9aee29037 100644
--- a/doc/todo/Restrict_formats_allowed_for_comments.mdwn
+++ b/doc/todo/Restrict_formats_allowed_for_comments.mdwn
@@ -95,3 +95,5 @@ index 285013e..151e839 100644
</pre>
[[!tag patch]]
+
+> [[done]] --[[Joey]]
diff --git a/doc/todo/fancypodcast.mdwn b/doc/todo/fancypodcast.mdwn
index ccf08eeaf..64af7e8a9 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 |(./) |(./) |(./) |(./)
"""]]
@@ -225,3 +225,106 @@ it with ikiwiki instead.
* Configurably generate additional subscription links (such as
iTunes) alongside the RSS/Atom ones in [[plugins/inline]].
* Support Apple's "enhanced podcasts" (if they're still relevant).
+
+### code review
+
+ + # XXX better way to compute relative to srcdir?
+ + my $file = $absurl;
+ + $file =~ s|^$config{url}/||;
+
+I don't think ikiwiki offers a better way to do that, because there is
+normally no reason to do that. Why does it need an url of this form here?
+--[[Joey]]
+
+> In all the popular, production-quality podcast feeds I've looked
+> at, enclosure URLs are always absolute (even when they could be
+> expressed concisely as relative). [Apple's
+> example](http://www.apple.com/itunes/podcasts/specs.html#example)
+> does too. So I told \[[!meta]] to call `urlto()` with the third
+> parameter true, which means the \[[!inline]] code here gets an
+> absolute URL in `$pagestate{$p}{meta}{enclosure}`. To compute the
+> enclosure's metadata, though, we of course need it as a local path.
+> I didn't see a less
+> [ongepotchket](http://www.jewish-languages.org/jewish-english-lexicon/words/1402)
+> way at the time. If you have a better idea, I'm happy to hear it;
+> if not, I'll add an explanatory comment. --[[schmonz]]
+
+>> I would be more comfortable with this if two two different forms of url
+>> you need were both generated by calling urlto. It'd be fine to call
+>> it more than once. --[[Joey]]
+
+>>> Heh, it was even easier than that! (Hooray for tests.) Done.
+>>> --[[schmonz]]
+
+ +<TMPL_IF HTML5><section id="inlineenclosure"><TMPL_ELSE><div id="inlineenclosure"></TMPL_IF>
+ +<TMPL_IF ENCLOSURE>
+
+Can't we avoid adding this div when there's no enclosure? --[[Joey]]
+
+> Sure, I've moved the `<TMPL_IF ENCLOSURE>` check to outside the
+> section-and-div block for `{,inline}page.tmpl`. --[[schmonz]]
+
+ +<a href="<TMPL_VAR ENCLOSURE>">Download this episode</a>
+
+"Download this episode" is pretty specific to particular use cases.
+Can this be made more generic, perhaps just "Download"? --[[Joey]]
+
+> Yep, I got a little carried away. Done. --[[schmonz]]
+
+ -<TMPL_IF AUTHOR>
+ - <title><TMPL_VAR AUTHOR ESCAPE=HTML>: <TMPL_VAR TITLE></title>
+ - <dcterms:creator><TMPL_VAR AUTHOR ESCAPE=HTML></dcterms:creator>
+
+This change removes the author name from the title of the rss feed, which
+does not seem necessary for fancy podcasts. And it is a change that
+could negatively impact eg, Planet style aggregators using ikiwiki. --[[Joey]]
+
+> While comparing how feeds render in podcatchers, I noticed that
+> RSS and Atom were inconsistent in a couple ways, of which this was
+> one. The way I noticed it: with RSS, valuable title space was being
+> spent to display the author. I figured Atom's display was the one
+> worth matching. You're right, of course, that planets using the
+> default template and somehow relying on the current author-in-the-title
+> rendering for RSS feeds (but not Atom feeds!) would be broken by
+> this change. I'm having trouble imagining exactly what would break,
+> though, since guids and timestamps are unaffected. Would it suffice
+> to provide a note in the changelog warning people to be careful
+> upgrading their planets, and to customize `rssitem.tmpl` if they
+> really prefer the old behavior (or don't want to take any chances)?
+> --[[schmonz]]
+
+>> A specific example I know of is updo.debian.net, when used with
+>> rss2email. Without the author name there, one cannot see who posted
+>> an item. It's worth noting that planet.debian.org does the same thing
+>> with its rss feed. (That's probably what I copied.) Atom feeds may
+>> not have this problem, don't know. --[[Joey]]
+
+>>> Okay, that's easy to reproduce. It looks like this _might_ be
+>>> a simple matter of getting \[[!aggregate]] to populate author in
+>>> `add_page()`. I'll see what I can figure out. --[[schmonz]]
+
+ +++ b/templates/rsspage.tmpl
+ + xmlns:atom="http://www.w3.org/2005/Atom"
+ +<atom:link href="<TMPL_VAR FEEDURL>" rel="self" type="application/rss+xml" />
+
+Why is it using atom namespace inside an rss feed? What are the chances
+every crummy rss reader on earth is going to understand this? I'd put it at
+about 0%; I doubt ikiwiki's own rss reader understands such a mashup.
+--[[Joey]]
+
+> The validator I used (<http://validator.w3.org/>, I think) told me to.
+> Pretty sure it doesn't make anything work better in the podcatchers
+> I tried. Hadn't considered that it might break some readers.
+> Removed. --[[schmonz]]
+
+ +<generator>ikiwiki</generator>
+
+Does this added tag provide any benefits? --[[Joey]]
+
+> Consistency with the Atom feed, and of course it trumpets ikiwiki
+> to software and/or curious humans who inspect their feeds. The tag
+> arrived only in RSS 2.0, but that's already the version we're
+> claiming to be, and it's over a decade old. Seems much less risky
+> than the atom namespace bits. --[[schmonz]]
+
+>> Sounds ok then. --[[Joey]]
diff --git a/doc/users/schmonz.mdwn b/doc/users/schmonz.mdwn
index 84dca1948..97fa1cbd6 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)
diff --git a/ikiwiki.spec b/ikiwiki.spec
index 7e9dbf0f6..9d799da3f 100644
--- a/ikiwiki.spec
+++ b/ikiwiki.spec
@@ -1,5 +1,5 @@
Name: ikiwiki
-Version: 3.20130504
+Version: 3.20130518
Release: 1%{?dist}
Summary: A wiki compiler
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index d7f2926a3..3f2fac90b 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-04 23:52-0400\n"
+"POT-Creation-Date: 2013-05-18 16:34-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -561,11 +561,11 @@ msgstr ""
msgid "Cannot subscribe your email address without logging in."
msgstr ""
-#: ../IkiWiki/Plugin/notifyemail.pm:135
+#: ../IkiWiki/Plugin/notifyemail.pm:136
msgid "change notification:"
msgstr ""
-#: ../IkiWiki/Plugin/notifyemail.pm:137
+#: ../IkiWiki/Plugin/notifyemail.pm:138
msgid "comment notification:"
msgstr ""
diff --git a/templates/page.tmpl b/templates/page.tmpl
index f47c637fa..c886b22d8 100644
--- a/templates/page.tmpl
+++ b/templates/page.tmpl
@@ -21,6 +21,8 @@
<TMPL_ELSE>
<link rel="stylesheet" href="<TMPL_VAR BASEURL>local.css" type="text/css" />
</TMPL_IF>
+
+<TMPL_UNLESS DYNAMIC>
<TMPL_IF EDITURL>
<link rel="alternate" type="application/x-wiki" title="Edit this page" href="<TMPL_VAR EDITURL>" />
</TMPL_IF>
@@ -36,6 +38,8 @@
<link rel="next" href="<TMPL_VAR NEXTURL>" title="<TMPL_VAR NEXTTITLE>" />
</TMPL_IF>
</TMPL_LOOP>
+</TMPL_UNLESS>
+
</head>
<body>
@@ -56,9 +60,11 @@
</TMPL_IF>
</span>
</span>
+<TMPL_UNLESS DYNAMIC>
<TMPL_IF SEARCHFORM>
<TMPL_VAR SEARCHFORM>
</TMPL_IF>
+</TMPL_UNLESS>
<TMPL_IF HTML5></header><TMPL_ELSE></div></TMPL_IF>
<TMPL_IF HAVE_ACTIONS>
@@ -112,15 +118,19 @@
<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
</TMPL_IF>
+<TMPL_UNLESS DYNAMIC>
<TMPL_VAR TRAILS>
+</TMPL_UNLESS>
<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+<TMPL_UNLESS DYNAMIC>
<TMPL_IF SIDEBAR>
<TMPL_IF HTML5><aside class="sidebar"><TMPL_ELSE><div class="sidebar"></TMPL_IF>
<TMPL_VAR SIDEBAR>
<TMPL_IF HTML5></aside><TMPL_ELSE></div></TMPL_IF>
</TMPL_IF>
+</TMPL_UNLESS>
<div id="pagebody">