summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@gnu.kitenet.net>2009-03-27 15:09:41 -0400
committerJoey Hess <joey@gnu.kitenet.net>2009-03-27 15:09:41 -0400
commit825e2b1378b1def4980e36642ed84999599eb017 (patch)
tree8c5225715c9cf7a3405dbc679f124f74ca9983e7
parentf4a1732b0e65ea4459098e4e852dff10a5af9320 (diff)
parentc8237b4351f6023b3d3a661df2568c6d7488b8cf (diff)
Merge branch 'master' into po
Conflicts: debian/control
-rw-r--r--Bundle/IkiWiki/Extras.pm1
-rw-r--r--IkiWiki.pm8
-rw-r--r--IkiWiki/Plugin/404.pm3
-rw-r--r--IkiWiki/Plugin/comments.pm23
-rw-r--r--IkiWiki/Plugin/git.pm18
-rw-r--r--IkiWiki/Plugin/inline.pm11
-rw-r--r--IkiWiki/Plugin/mercurial.pm4
-rw-r--r--debian/changelog24
-rw-r--r--debian/control2
-rw-r--r--doc/bugs/Git:_web_commit_message_not_utf-8.mdwn17
-rw-r--r--doc/bugs/feedfile_does_the_wrong_thing_from_index.mdwn2.mdwn7
-rw-r--r--doc/css_market.mdwn2
-rw-r--r--doc/css_market/discussion.mdwn9
-rw-r--r--doc/css_market/zack.css224
-rw-r--r--doc/forum/ikiwiki__39__s_notion_of_time.mdwn35
-rw-r--r--doc/forum/managing_todo_lists.mdwn41
-rw-r--r--doc/forum/usedirs___38___indexpages_using_problem.mdwn5
-rw-r--r--doc/freesoftware/discussion.mdwn3
-rw-r--r--doc/ikiwiki/directive/inline.mdwn5
-rw-r--r--doc/ikiwiki/directive/linkmap.mdwn2
-rw-r--r--doc/ikiwikiusers.mdwn3
-rw-r--r--doc/index/openid/discussion.mdwn12
-rw-r--r--doc/news/openid.mdwn2
-rw-r--r--doc/news/version_3.07.mdwn10
-rw-r--r--doc/news/version_3.08.mdwn6
-rw-r--r--doc/plugins/passwordauth/discussion.mdwn12
-rw-r--r--doc/sandbox.mdwn7
-rw-r--r--doc/style.css3
-rw-r--r--doc/todo/inline:_numerical_ordering_by_title.mdwn2
-rw-r--r--doc/todo/inline_autotitles.mdwn51
-rw-r--r--doc/todo/mdwn_preview.mdwn216
-rw-r--r--doc/todo/natural_sorting.mdwn21
-rw-r--r--doc/usage.mdwn6
-rw-r--r--doc/users/simonraven.mdwn3
-rw-r--r--po/fr.po6
-rw-r--r--po/ikiwiki.pot14
-rw-r--r--templates/comment.tmpl2
37 files changed, 690 insertions, 130 deletions
diff --git a/Bundle/IkiWiki/Extras.pm b/Bundle/IkiWiki/Extras.pm
index 582d4a966..40b36e7c8 100644
--- a/Bundle/IkiWiki/Extras.pm
+++ b/Bundle/IkiWiki/Extras.pm
@@ -35,6 +35,7 @@ Text::WikiCreole
Term::ReadLine::Gnu
HTML::Tree
Authen::Passphrase
+Sort::Naturally
=head1 AUTHOR
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 2640f85a2..63da5d0dd 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -533,7 +533,7 @@ sub loadplugins () {
run_hooks(getopt => sub { shift->() });
if (grep /^-/, @ARGV) {
- print STDERR "Unknown option: $_\n"
+ print STDERR "Unknown option (or missing parameter): $_\n"
foreach grep /^-/, @ARGV;
usage();
}
@@ -639,8 +639,10 @@ sub pagetype ($) {
if ($file =~ /\.([^.]+)$/) {
return $1 if exists $hooks{htmlize}{$1};
}
- elsif ($hooks{htmlize}{basename($file)}{noextension}) {
- return basename($file);
+ my $base=basename($file);
+ if (exists $hooks{htmlize}{$base} &&
+ $hooks{htmlize}{$base}{noextension}) {
+ return $base;
}
return;
}
diff --git a/IkiWiki/Plugin/404.pm b/IkiWiki/Plugin/404.pm
index 5550ea7d1..bae9e15d1 100644
--- a/IkiWiki/Plugin/404.pm
+++ b/IkiWiki/Plugin/404.pm
@@ -67,7 +67,8 @@ sub cgi_page_from_404 ($$$) {
sub cgi ($) {
my $cgi=shift;
- if ($ENV{REDIRECT_STATUS} eq '404') {
+ if (exists $ENV{REDIRECT_STATUS} &&
+ $ENV{REDIRECT_STATUS} eq '404') {
my $page = cgi_page_from_404($ENV{REDIRECT_URL},
$config{url}, $config{usedirs});
IkiWiki::Plugin::goto::cgi_goto($cgi, $page);
diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index ee53dbc91..98f9f8b3d 100644
--- a/IkiWiki/Plugin/comments.pm
+++ b/IkiWiki/Plugin/comments.pm
@@ -224,7 +224,7 @@ sub preprocess {
if ($params{page} =~ m/\/(\Q$config{comments_pagename}\E\d+)$/) {
$pagestate{$page}{meta}{permalink} = urlto(IkiWiki::dirname($params{page}), undef, 1).
- "#".$params{page};
+ "#".page_to_id($params{page});
}
eval q{use Date::Parse};
@@ -490,7 +490,8 @@ sub editcomment ($$) {
# Jump to the new comment on the page.
# The trailing question mark tries to avoid broken
# caches and get the most recent version of the page.
- IkiWiki::redirect($cgi, urlto($page, undef, 1)."?updated#$location");
+ IkiWiki::redirect($cgi, urlto($page, undef, 1).
+ "?updated#".page_to_id($location));
}
else {
@@ -672,7 +673,7 @@ sub previewcomment ($$$) {
sub commentsshown ($) {
my $page=shift;
- return ! pagespec_match($page, "*/$config{comments_pagename}*",
+ return ! pagespec_match($page, "internal(*/$config{comments_pagename}*)",
location => $page) &&
pagespec_match($page, $config{comments_pagespec},
location => $page);
@@ -759,6 +760,10 @@ sub pagetemplate (@) {
if (!exists $commentstate{$page}) {
return;
}
+
+ if ($template->query(name => 'commentid')) {
+ $template->param(commentid => page_to_id($page));
+ }
if ($template->query(name => 'commentuser')) {
$template->param(commentuser =>
@@ -808,6 +813,18 @@ sub unique_comment_location ($) {
return $location;
}
+sub page_to_id ($) {
+ # Converts a comment page name into a unique, legal html id
+ # addtibute value, that can be used as an anchor to link to the
+ # comment.
+ my $page=shift;
+
+ eval q{use Digest::MD5 'md5_hex'};
+ error($@) if $@;
+
+ return "comment-".md5_hex($page);
+}
+
package IkiWiki::PageSpec;
sub match_postcomment ($$;@) {
diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm
index 042c69f5a..68b114a73 100644
--- a/IkiWiki/Plugin/git.pm
+++ b/IkiWiki/Plugin/git.pm
@@ -136,14 +136,16 @@ sub safe_git (&@) {
}
# In parent.
+ # git output is probably utf-8 encoded, but may contain
+ # other encodings or invalidly encoded stuff. So do not rely
+ # on the normal utf-8 IO layer, decode it by hand.
+ binmode($OUT);
+
my @lines;
while (<$OUT>) {
+ $_=decode_utf8($_, 0);
+
chomp;
-
- # check for invalid utf-8, and toss it back to avoid crashes
- if (! utf8::valid($_)) {
- $_=encode_utf8($_);
- }
push @lines, $_;
}
@@ -447,7 +449,7 @@ sub rcs_commit_staged ($$$) {
# Set the commit author and email to the web committer.
my %env=%ENV;
if (defined $user || defined $ipaddr) {
- my $u=defined $user ? $user : $ipaddr;
+ my $u=encode_utf8(defined $user ? $user : $ipaddr);
$ENV{GIT_AUTHOR_NAME}=$u;
$ENV{GIT_AUTHOR_EMAIL}="$u\@web";
}
@@ -592,8 +594,8 @@ sub rcs_getctime ($) {
# Remove srcdir prefix
$file =~ s/^\Q$config{srcdir}\E\/?//;
- my $sha1 = git_sha1($file);
- my $ci = git_commit_info($sha1, 1);
+ my @sha1s = run_or_non('git', 'rev-list', 'HEAD', '--', $file);
+ my $ci = git_commit_info($sha1s[$#sha1s], 1);
my $ctime = $ci->{'author_epoch'};
debug("ctime for '$file': ". localtime($ctime));
diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
index 2205ebffc..9d7d4b0fd 100644
--- a/IkiWiki/Plugin/inline.pm
+++ b/IkiWiki/Plugin/inline.pm
@@ -194,6 +194,13 @@ sub preprocess_inline (@) {
if (exists $params{sort} && $params{sort} eq 'title') {
@list=sort { pagetitle(basename($a)) cmp pagetitle(basename($b)) } @list;
}
+ elsif (exists $params{sort} && $params{sort} eq 'title_natural') {
+ eval q{use Sort::Naturally};
+ if ($@) {
+ error(gettext("Sort::Naturally needed for title_natural sort"));
+ }
+ @list=sort { Sort::Naturally::ncmp(pagetitle(basename($a)), pagetitle(basename($b))) } @list;
+ }
elsif (exists $params{sort} && $params{sort} eq 'mtime') {
@list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
}
@@ -274,8 +281,8 @@ sub preprocess_inline (@) {
}
}
- my $rssurl=basename($feedbase."rss".$feednum) if $feeds && $rss;
- my $atomurl=basename($feedbase."atom".$feednum) if $feeds && $atom;
+ my $rssurl=abs2rel($feedbase."rss".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $rss;
+ my $atomurl=abs2rel($feedbase."atom".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $atom;
my $ret="";
diff --git a/IkiWiki/Plugin/mercurial.pm b/IkiWiki/Plugin/mercurial.pm
index 6c4855e57..11fdec529 100644
--- a/IkiWiki/Plugin/mercurial.pm
+++ b/IkiWiki/Plugin/mercurial.pm
@@ -236,7 +236,7 @@ sub rcs_getctime ($) {
# XXX filename passes through the shell here, should try to avoid
# that just in case
- my @cmdline = ("hg", "-R", $config{srcdir}, "log", "-v", "-l", '1',
+ my @cmdline = ("hg", "-R", $config{srcdir}, "log", "-v",
"--style", "default", "$config{srcdir}/$file");
open (my $out, "@cmdline |");
@@ -249,7 +249,7 @@ sub rcs_getctime ($) {
eval q{use Date::Parse};
error($@) if $@;
- my $ctime = str2time($log[0]->{"date"});
+ my $ctime = str2time($log[$#log]->{"date"});
return $ctime;
}
diff --git a/debian/changelog b/debian/changelog
index c66db85a2..158db9a4d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,27 @@
+ikiwiki (3.09) UNRELEASED; urgency=low
+
+ * inline: Add title_natural sort order, using Sort::Naturally
+ (chrysn)
+ * inline: Fix urls to feed when feedfile is used on an index page.
+ * git, mercurial: Fix --getctime to return file creation time,
+ not last commit time.
+ * Updated French translation (Jean-Luc Coulon). Closes: #521072
+ * css: Add clear: both to inlinefooter.
+ * comments: Fix too loose test for comments pages that matched
+ normal pages with "comment_" in their name. Closes: #521322
+ * comments: Fix anchor ids to be legal xhtml. Closes: #521339
+
+ -- Joey Hess <joeyh@debian.org> Thu, 19 Mar 2009 15:32:49 -0400
+
+ikiwiki (3.08) unstable; urgency=low
+
+ * git: Fix utf-8 encoding of author names.
+ * git: Manually decode git output from utf-8, avoids
+ warning messages on invalidly encoded output.
+ * Fix bug that caused weird things to appear as page types.
+
+ -- Joey Hess <joeyh@debian.org> Sun, 15 Mar 2009 17:54:47 -0400
+
ikiwiki (3.07) unstable; urgency=low
* Updated German translation (Kai Wasserbäch). Closes: #518377
diff --git a/debian/control b/debian/control
index c6170c441..bcfea7489 100644
--- a/debian/control
+++ b/debian/control
@@ -14,7 +14,7 @@ Package: ikiwiki
Architecture: all
Depends: ${misc:Depends}, ${perl:Depends}, libtext-markdown-perl | markdown, libhtml-scrubber-perl, libhtml-template-perl, libhtml-parser-perl, liburi-perl
Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core (>= 1:1.5.0) | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38), libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libcgi-formbuilder-perl (>= 3.05), libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl, libauthen-passphrase-perl, libterm-readline-gnu-perl
-Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl, xapian-omega (>= 1.0.5), librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libhtml-tree-perl, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz, libnet-amazon-s3-perl, sparkline-php, texlive, dvipng, libtext-wikicreole-perl, po4a (>= 0.35-1), gettext
+Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl, xapian-omega (>= 1.0.5), librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libhtml-tree-perl, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz, libnet-amazon-s3-perl, sparkline-php, texlive, dvipng, libtext-wikicreole-perl, libsort-naturally-perl, po4a (>= 0.35-1), gettext
Conflicts: ikiwiki-plugin-table
Replaces: ikiwiki-plugin-table
Provides: ikiwiki-plugin-table
diff --git a/doc/bugs/Git:_web_commit_message_not_utf-8.mdwn b/doc/bugs/Git:_web_commit_message_not_utf-8.mdwn
new file mode 100644
index 000000000..08247dded
--- /dev/null
+++ b/doc/bugs/Git:_web_commit_message_not_utf-8.mdwn
@@ -0,0 +1,17 @@
+The message generated for web commits:
+
+> web commit by mädduck
+
+is not utf-8 encoded before passed to Git (which uses utf-8 as default encoding for commit messages). This causes a wrongly-encoded log entry, and makes ikiwiki spew warnings as it creates `recentchanges`:
+
+ utf8 "\xF6" does not map to Unicode at /usr/share/perl5/IkiWiki/Rcs/git.pm line 36, <$OUT> line 57.
+ Malformed UTF-8 character (unexpected non-continuation byte 0x6e, immediately after start byte 0xf6) in pattern match (m//) at /usr/share/perl5/IkiWiki/Rcs/git.pm line 393.
+ utf8 "\xF6" does not map to Unicode at /usr/share/perl5/IkiWiki/Rcs/git.pm line 36, <$OUT> line 5.
+
+(This is version 2.53.3~bpo40+1 for lack of a newer backport for sarge)
+
+Please make sure that commit messages for Git are always utf-8.
+
+This is a change by user `mädduck` to trigger the error.
+
+> [[Fixed|done]] both on the commit and log sides. --[[Joey]]
diff --git a/doc/bugs/feedfile_does_the_wrong_thing_from_index.mdwn2.mdwn b/doc/bugs/feedfile_does_the_wrong_thing_from_index.mdwn2.mdwn
new file mode 100644
index 000000000..6b8781a8c
--- /dev/null
+++ b/doc/bugs/feedfile_does_the_wrong_thing_from_index.mdwn2.mdwn
@@ -0,0 +1,7 @@
+[[!meta title="feedfile does the wrong thing from index"]]
+
+When I put the following !inline in my index.mdwn, it generate a file called index/graphics.rss. However, the link in the RSS button is to graphics.rss (i.e., not in the index/ directory).
+
+`\[[!inline pages="link(tags/graphics) and ./posts/* and !*/Discussion" show="10" feedfile=graphics feedonly=yes]]`
+
+[[done]] --[[Joey]]
diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn
index 8b7e17585..15e147513 100644
--- a/doc/css_market.mdwn
+++ b/doc/css_market.mdwn
@@ -9,7 +9,7 @@ gnomes will convert them to css files..)
* **[[css_market/zack.css]]**, contributed by [[StefanoZacchiroli]],
customized mostly for *blogging purposes*, can be seen in action on
- [zack's blog](http://www.bononia.it/~zack/blog/)
+ [zack's blog](http://upsilon.cc/~zack/blog/)
[[!meta stylesheet="zack"]]
* **[[css_market/kirkambar.css]]**, contributed by [[Roktas]]. This far from perfect
diff --git a/doc/css_market/discussion.mdwn b/doc/css_market/discussion.mdwn
index cba13132e..f80053e38 100644
--- a/doc/css_market/discussion.mdwn
+++ b/doc/css_market/discussion.mdwn
@@ -5,3 +5,12 @@ What is the correct way to install the .tmpl files? -- [[JosephTurian]]
> ikiwiki's standard templates (in, eg `/usr/share/ikiwiki/templates`)
> --[[Joey]]
+----
+
+How can I update a .css file uploaded to the CSS market?
+My CSS has been updated to address comments (for the comments plugin), but I cannot find a way to update zack.css.
+The most recent version is always available at: <http://git.upsilon.cc/cgi-bin/gitweb.cgi?p=zack-homepage.git;a=blob_plain;f=local.css;hb=HEAD>
+
+-- [[StefanoZacchiroli]]
+
+> Just letting me know about the change works -- updated. --[[Joey]]
diff --git a/doc/css_market/zack.css b/doc/css_market/zack.css
index dbc2e5c44..5a0521d54 100644
--- a/doc/css_market/zack.css
+++ b/doc/css_market/zack.css
@@ -14,122 +14,180 @@
*/
body {
- font-family: sans;
- width: 760px;
- margin-left: 20px;
+ font-family: sans-serif;
+ font-size: medium;
}
+h1, h2, h3, h4 {
+ font-weight: normal;
+}
+h1 { font-size: 140%; }
+h2 { font-size: 120%; }
+h3 { font-size: 110%; }
+h4 { font-size: 105% }
-div#content {
- font-size: 11pt;
+a { text-decoration: none; }
+a:hover { text-decoration: underline; }
+
+.flow {
+ float: right;
+ margin-left: 10px;
+ margin-bottom: 10px;
+ text-align: center;
}
-.header span {
- font-size: 14pt;
- font-weight: normal;
+.attrib-caption {
+ font-size: xx-small;
+ font-style: italic;
}
-div.actions ul {
- font-size: 10pt;
+input {
+ border: solid 1px;
+ border-color: #aaa;
}
-h1 {
- font-weight: normal;
- font-size: 17pt;
+.header { font-weight: normal; }
+
+.selflink { text-decoration: underline; }
+
+.pageheader .actions ul,
+#sitemeta {
+ border-top: solid 1px;
+ border-bottom: solid 1px;
+ font-size: small;
+ border-color: #aaa;
+ background: #eee;
}
-h2 {
- font-weight: normal;
- font-size: 16pt;
+.actions ul {
+ padding: 1px;
+ margin-top: 5px;
}
-h3 {
- font-weight: normal;
- font-size: 15pt;
+#sitemeta {
+ padding: 0;
+ margin-bottom: 5px;
}
-h4 {
- font-weight: normal;
- font-size: 14pt;
+#backlinks,
+.tags {
+ margin-top: 0;
+ margin-bottom: 0;
}
-h5 {
- font-weight: normal;
- font-size: 13pt;
+
+#pageinfo {
+ border: none;
}
-h6 {
- font-weight: normal;
- font-size: 12pt;
+
+#searchform div:before {
+ font-size: small;
+ content: "search:";
+}
+#searchform input {
+ border-top: none;
+ border-bottom: none;
+ vertical-align: bottom;
+ margin-right: 7px;
}
-div.inlinepage > span.header > a {
- float: right;
- display: block;
- font-size: 11pt;
- font-weight: normal;
- margin: 0;
+#sidebar {
+ border: solid;
+ border-width: 1px;
padding: 0;
+ margin-top: 15px;
+ border: 1px solid;
+ border-color: #aaa;
+ background: #eee;
+ width: 16ex;
}
-div.inlinepage > span.header > a:before {
- content: "permalink: ";
- font-size: smaller;
- text-decoration: none;
- font-style: italic;
+#sidebar ul {
+ margin: 0;
+ padding-left: 1em;
+ list-style-type: none;
}
-
-div.inlinepage {
- margin-bottom: 10px;
+#sidebar ul ul {
+ padding-left: 1.5em;
+ font-size: 90%;
}
-div.inlinepage h1 {
- font-weight: normal;
- font-size: 14pt;
+#pageinfo,
+#footer {
margin: 0;
}
-div.inlinepage h2 {
- font-weight: normal;
- font-size: 13pt;
- margin: 0;
+#pageinfo {
+ font-size: small;
}
-div.inlinepage h3 {
- font-weight: normal;
- font-size: 12pt;
+.pagecopyright,
+.pagelicense,
+.pagedate {
margin: 0;
+ display: inline;
}
-div.inlinepage h4 {
- font-weight: normal;
- font-size: 11pt;
- margin: 0;
+#backlinks {
+ margin-top: 5px;
+ margin-bottom: 10px;
+ font-size: larger;
}
-div.inlinepage h5 {
- font-weight: normal;
- font-size: 11pt;
- margin: 0;
+.validation {
+ display: inline;
+ float: right;
}
-div.inlinepage h6 {
- font-weight: normal;
- font-size: 11pt;
- margin: 0;
+
+.pagecloud {
+ margin-left: 5px;
}
-div#blogform {
- padding: 0px 5px;
- margin-bottom: 10px;
+table.identikit tr th {
+ text-align: right;
+ vertical-align: top;
+}
+table.identikit tr th:after {
+ content: ":";
+}
+table.identikit tr td {
+ text-align: left;
+ vertical-align: top;
}
-pre {
- width: 90%;
- font-size: 10pt;
- font-family: monospace;
- background: #e1e1e1;
- margin-left: 4%;
- padding-top: 5px;
- padding-bottom: 5px;
+.doi_logo , .doi_logo a {
+ background: #3965bd;
+ color: white !important;
+ font-size: 80%;
+ text-decoration: none;
+ font-family: times;
+ font-weight: bold;
+ padding: 0px 1px 0px 2px;
}
-.pagecloud {
- width: 25%;
- border-top: 1px solid #aaa;
- border-bottom: 1px solid #aaa;
- background: #eee;
- color: black !important;
+#comments {
+ margin-top: 5ex;
+ border-top: solid 1px;
+ border-color: #aaa;
+ font-size: small;
+}
+
+#comments #feedlink {
+ text-align: right;
+}
+#comments #feedlink:before {
+ content: "comment feeds: ";
+}
+
+.addcomment {
+ padding: 5px;
+ font-style: italic;
+}
+
+.comment {
+ border: none;
+ background-color: #eee;
+ margin: 5px;
+ margin-top: 10px;
+}
+
+.comment-subject {
+ font-style: normal;
}
-.pagecloud a {
- text-decoration: none;
+.comment-header {
+ border-top: solid 1px;
+ border-color: #aaa;
+ text-align: right;
+ font-style: normal;
}
diff --git a/doc/forum/ikiwiki__39__s_notion_of_time.mdwn b/doc/forum/ikiwiki__39__s_notion_of_time.mdwn
new file mode 100644
index 000000000..ee564fcc9
--- /dev/null
+++ b/doc/forum/ikiwiki__39__s_notion_of_time.mdwn
@@ -0,0 +1,35 @@
+I'm having some difficulties with ikiwiki's notion of time.
+
+For (regular) pages, the *last edited* date is the one where the file
+was indeed last modified according to the file system information.
+The *created* date (commented out in the HTML) is, at least for
+`--getctime` operation, the date, where the file was last registered
+as changed with the VCS.
+
+Now, at least with git, the thing is that when you're checking out files,
+they'll get the checkout-time's current time stamp.
+
+What I strive for is the following: *created* be the date when the file
+(under its current name) was *first* registered with the VCS (which is
+more logical in my opinion), and *last edited* be the date the file was
+last registered as changed with the VCS, which is the current
+`--getctime` *created* date.
+
+This means that I can build the HTML files from different checkouts of the
+VCS and they won't differ in the time stamps they contain in the HTML.
+
+What is the rationale for ikiwiki's current behavior with respect to these
+time stamps?
+
+--[[tschwinge]]
+
+> Presumably it's the authors of the git and mercurial backends
+> not understanding the documentation for `rcs_getctime`,
+> which states:
+>
+>>This is used to get the page creation time for a file from the RCS, by
+>>looking it up in the history.
+>
+> I've fixed both broken implementations to correctly look
+> up the first, not the last, commit. Other VCS do not seem
+> to have the problem. --[[Joey]]
diff --git a/doc/forum/managing_todo_lists.mdwn b/doc/forum/managing_todo_lists.mdwn
new file mode 100644
index 000000000..b4bbac255
--- /dev/null
+++ b/doc/forum/managing_todo_lists.mdwn
@@ -0,0 +1,41 @@
+I keep some TODO lists on ikiwiki pages. I'm half-tempted to write a plugin
+to make ticking items off and adding items easier via the web interface. I'm
+aware though that this is not really what ikiwiki is designed for. Would
+anyone else find this useful? -- [[users/jon]]
+
+----
+
+My subsequent thoughts about how to approach this are two-fold.
+
+Firstly, a filetype for todo lists, probably OPML, but I haven't looked to see
+if there is something more suitable. A plugin that converts this source into a
+traditional page output, i.e. a DOM tree of ul or ol and li elements.
+
+Secondly, some magic javascript to make editing the list via the web page
+more interactive: add items, strike items out, reorder items etc., without
+round-tripping to the cgi for each operation.
+
+Finally, a mechanism whereby the changes made to the page live can be
+committed back to the repository:
+
+ * ...perhaps the input → output conversion is reversible, and the HTML DOM
+ representing the list can be transformed back into the source and submitted
+ to the cgi like a regular edit: issues include the result of other
+ postprocessing: templates, wikilinks, etc.
+ * perhaps an embedded copy of the source is included in the output and the
+ javascript operates on that in tandem with the static copy
+ * perhaps the "output" is generated live by the JS at view time (with maybe
+ a plugin-generated rendered output for non JS environments)
+
+I envisage a button called "commit changes" appearing once some changes are
+made that submits the changes to the CGI, perhaps via a back channel. I'm not
+sure how to handle embeds or challenges from the CGI such as a login challenge
+(maybe the back channel would not be necessary in the first cut).
+
+> You might look at the [[plugins/hnb]] plugin. HNB supports checklists.
+> There's not a fancy web interface, but the hnb command-line program can
+> be used to edit them. --[[Joey]]
+
+>> thanks - I'll give it a look. I spent a few hours writing some javascript to manipulate a ul/li DOM tree in an outliner-fashion the other day. I might be able to join the puzzle pieces together sometime. [[Jon]]
+
+a solution for this could be similar to a solution for [[todo/structured page data]], as todo lists are definitely a form of structured data. (in both cases, the page's current content is rendered into a html form, whose result is then saved as the page's new contents) --[[chrysn]]
diff --git a/doc/forum/usedirs___38___indexpages_using_problem.mdwn b/doc/forum/usedirs___38___indexpages_using_problem.mdwn
index 1ca95cc88..05c85e281 100644
--- a/doc/forum/usedirs___38___indexpages_using_problem.mdwn
+++ b/doc/forum/usedirs___38___indexpages_using_problem.mdwn
@@ -10,3 +10,8 @@ But in the page [OSS.html](http://atoz.org.cn/Whatis/OSS.html) , the auto genera
to “Whatis” is /Whatis.html file , not to /Whatis/index.html. So the link to “Whatis” is fail .
Is it a bug , and how can I do for that ?
+
+> I suggest that you name your page `Whatis.mdwn`, and not
+> `Whatis/index.mdwn`. That will make ikiwiki's links work,
+> and allows you to link to the `Whatis` page by that name.
+> --[[Joey]]
diff --git a/doc/freesoftware/discussion.mdwn b/doc/freesoftware/discussion.mdwn
new file mode 100644
index 000000000..e71fd295d
--- /dev/null
+++ b/doc/freesoftware/discussion.mdwn
@@ -0,0 +1,3 @@
+And where is the code, please ?
+
+> [[download]] --[[Joey]]
diff --git a/doc/ikiwiki/directive/inline.mdwn b/doc/ikiwiki/directive/inline.mdwn
index 40670e1e7..f69d55de3 100644
--- a/doc/ikiwiki/directive/inline.mdwn
+++ b/doc/ikiwiki/directive/inline.mdwn
@@ -87,7 +87,10 @@ Here are some less often needed parameters:
inlining page.
* `sort` - Controls how inlined pages are sorted. The default, "age" is to
sort newest created pages first. Setting it to "title" will sort pages by
- title, and "mtime" sorts most recently modified pages first.
+ title, and "mtime" sorts most recently modified pages first. If
+ [[!cpan Sort::Naturally]] is installed, `sort` can be set to "title_natural"
+ to sort by title with numbers treated as such ("1 2 9 10 20" instead of
+ "1 10 2 20 9").
* `reverse` - If set to "yes", causes the sort order to be reversed.
* `feedshow` - Specify the maximum number of matching pages to include in
the rss/atom feeds. The default is the same as the `show` value above.
diff --git a/doc/ikiwiki/directive/linkmap.mdwn b/doc/ikiwiki/directive/linkmap.mdwn
index 8fdf40c9f..db79a1491 100644
--- a/doc/ikiwiki/directive/linkmap.mdwn
+++ b/doc/ikiwiki/directive/linkmap.mdwn
@@ -9,7 +9,7 @@ Only links between mapped pages will be shown; links pointing to or from
unmapped pages will be omitted. If the pages to include are not specified,
the links between all pages (and other files) in the wiki are mapped. For
best results, only a small set of pages should be mapped, since otherwise
-the map can become very large, unweildy, and complicated. Also, the map is
+the map can become very large, unwieldy, and complicated. Also, the map is
rebuilt whenever one of the mapped pages is changed, which can make the
wiki a bit slow.
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 8dea61f6a..1a24ff322 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -44,6 +44,7 @@ Projects & Organizations
* [St Hugh of Lincoln Primary School in Surrey](http://hugh.vm.bytemark.co.uk/)
* [Pigro Network](http://www.pigro.net) is running a hg based ikiwiki. (And provides ikiwiki hosting for $10/m.)
* [Cosin Homepage](http://cosin.ch) uses an Ikiwiki with a subversion repository.
+* [Bosco Free Orienteering Software](http://bosco.durcheinandertal.ch)
Personal sites and blogs
========================
@@ -116,6 +117,8 @@ Personal sites and blogs
* [muammar's site](http://muammar.me)
* [Per Bothner's blog](http://per.bothner.com/blog/)
* [Bernd Zeimetz (bzed)](http://bzed.de/)
+* [Gaudenz Steinlin](http://gaudenz.durcheinandertal.ch)
+* [Simon Kjika'qawej C.](http://simonraven.kisikew.org/ikiwiki/) Please note it might change location at any time (likely wiki.k.o or under /wiki/ at simonraven.k.o).
Please feel free to add your own ikiwiki site!
diff --git a/doc/index/openid/discussion.mdwn b/doc/index/openid/discussion.mdwn
new file mode 100644
index 000000000..43575d4be
--- /dev/null
+++ b/doc/index/openid/discussion.mdwn
@@ -0,0 +1,12 @@
+# OpenID discussion
+
+## No return_to in OpenID server
+
+Hi, there's no return_to from a designated OpenID server page, specs requires (I think a "should" or "must", can't recall exact wording) that it redirects back to the RP, in order to complete the registration and authentication. Unless I'm missing something, and the doc is incomplete, I'd consider this a bug. I don't expect to be of much use WRT coming up with a patch, but I'm willing to test ;-) .
+
+> If this is a bug, could you please explain:
+>
+> * What happens when the bug occurs?
+> * How can one reproduce the bug?
+>
+> PS, please file bugs under [[bugs]] in future. --[[Joey]]
diff --git a/doc/news/openid.mdwn b/doc/news/openid.mdwn
index 45414142c..c2a871f0a 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 60 "Accept only OpenID for logins" 18 "Accept only password logins" 35 "Accept both"]]
+[[!poll 61 "Accept only OpenID for logins" 18 "Accept only password logins" 36 "Accept both"]]
diff --git a/doc/news/version_3.07.mdwn b/doc/news/version_3.07.mdwn
deleted file mode 100644
index fbd448ddc..000000000
--- a/doc/news/version_3.07.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-ikiwiki 3.07 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
- * Updated German translation (Kai Wasserbäch). Closes: #[518377](http://bugs.debian.org/518377)
- * Updated French translation (Jean-Luc Coulon). Closes: #[518510](http://bugs.debian.org/518510)
- * wmd: New plugin contributed by William Uther to support the WMD
- Wysiwym markdown editor.
- * smiley: Avoid infinite loop in smiley expansion triggered
- by the template scan mode change in version 3.05. Closes: #[518805](http://bugs.debian.org/518805)
- * template: When loading a template in scan mode, let preprocess
- know it only needs to scan."""]] \ No newline at end of file
diff --git a/doc/news/version_3.08.mdwn b/doc/news/version_3.08.mdwn
new file mode 100644
index 000000000..06d795c23
--- /dev/null
+++ b/doc/news/version_3.08.mdwn
@@ -0,0 +1,6 @@
+ikiwiki 3.08 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+ * git: Fix utf-8 encoding of author names.
+ * git: Manually decode git output from utf-8, avoids
+ warning messages on invalidly encoded output.
+ * Fix bug that caused weird things to appear as page types."""]] \ No newline at end of file
diff --git a/doc/plugins/passwordauth/discussion.mdwn b/doc/plugins/passwordauth/discussion.mdwn
index 3362ae7d2..672970c21 100644
--- a/doc/plugins/passwordauth/discussion.mdwn
+++ b/doc/plugins/passwordauth/discussion.mdwn
@@ -65,3 +65,15 @@ actually be the way to go. IMHO, the Perl sections idea is the
easiest to setup, but on the long run, I'd prefer ikiwiki to optionnally
use a userdb storage backend supported at least by Apache and lighttpd.
--[[intrigeri]]
+
+Tons of CPAN modules may help, but most of them are specific to `mod_perl`,
+and AFAIK, ikiwiki is generally not run with `mod_perl`. It's not clear to me
+wether these modules depend on the webapp to be run with `mod_perl` set
+as the script handler, or only on `mod_perl` to be installed and loaded.
+
+* CPAN's `Apache::AuthenHook` allows to plug arbitrary Perl handlers as
+ Apache authentication providers.
+* CPAN's `Apache::Authen::Program` (`mod_perl`)
+* [http://www.openfusion.com.au/labs/mod_auth_tkt/](mod_auth_tkt) along with CPAN's
+ `Apache::AuthTkt`
+--[[intrigeri]]
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 14f72f4ad..1e5fba304 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -90,3 +90,10 @@ But, of course, rsync is better.
----
Let's see what happens... ~~
+
+測試的啦
+
+----
+
+
+testing
diff --git a/doc/style.css b/doc/style.css
index a6e6734e3..98a28f347 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -44,6 +44,9 @@ div.inlinecontent {
.pagefooter {
clear: both;
}
+.inlinefooter {
+ clear: both;
+}
.tags {
}
diff --git a/doc/todo/inline:_numerical_ordering_by_title.mdwn b/doc/todo/inline:_numerical_ordering_by_title.mdwn
index 3f6c8b598..3d7424b3f 100644
--- a/doc/todo/inline:_numerical_ordering_by_title.mdwn
+++ b/doc/todo/inline:_numerical_ordering_by_title.mdwn
@@ -1,6 +1,8 @@
Could you please add numerical ordering by title to [[inline|plugins/inline]]
plugin? Now I can do only alphabetical order by title, but sometime it's not enough.
+> Implemented, see [[natural_sorting]] [[!tag done]] --[[Joey]]
+
BTW, it seems that ordering by title is rather ordering by filename of page.
For me "title" means title of page I can set using `title` parameter
of [[meta|plugins/meta]] plugin :)
diff --git a/doc/todo/inline_autotitles.mdwn b/doc/todo/inline_autotitles.mdwn
new file mode 100644
index 000000000..8bf71deae
--- /dev/null
+++ b/doc/todo/inline_autotitles.mdwn
@@ -0,0 +1,51 @@
+[[!tag wishlist]]
+[[!tag patch]]
+
+for inlines of pages which follow a certain scheme, it might not be required to
+set the title for each individual post, but to automatically set the title.
+this can either be based on timestamp formatting, or use the already existing
+munging mechanism, which appends numbers to page titles in case that page
+already exists.
+
+two patches ([1], [2]) set inline up for that, adding an additional `autotitle`
+parameter. if that is given, the regular input of the inline postform will be
+replaced with a hidden input of that text. in addition, the empty title is
+permitted (both for autotitle and regular titles, as they go in the same GET
+parameter, `title`). as the empty page title is illegal, munging is used,
+resulting in ascending numeric page titles to be created.
+
+the second patch is actually a one-liner, filtering the title through strftime.
+
+### potential user interaction issues
+
+this has two side effects which have to be considered: first, the empty page
+title is accepted also in normal postforms (previously, this resulted in a "bad
+page name" error); second, entering a percent sign in that field might result
+in unexpexted strftime substitution (strftime might not even substitute for
+common uses of percent as in "reach 10% market share", but might in others as
+in "the 10%-rule").
+
+both can be circumvented by using another GET parameter for autotexts, as
+implemented in [3].
+> this patch still does not work perfectly; especially, it should make a
+> distinction between "autotitle is set but equal ''" (in which case it
+> should create a page named `1.mdwn`, and "autotitle is not set, and title is
+> equal ''" (in which case it should display the old error message) --[[chrysn]]
+
+### potential security issues
+
+* the autotitle's value is directly output through the template (but that's
+ done in other places as well, so i assume it's safe)
+* i don't know if anything bad can happen if unfiltered content is passed to
+ POSIX::strftime.
+
+### further extension
+
+having a pre-filled input field instead of an unchangable hidden input might be
+cool (eg for creating an entry with yesterday's date), but would be a bit of a
+problem with static pages. javascript could help with the date part, but name
+munging would be yet another thing.
+
+[1]: http://github.com/github076986099/ikiwiki/commit/b568eb257a3ef5ff49a84ac00a3a7465b643c1e1
+[2]: http://github.com/github076986099/ikiwiki/commit/34bc82f232be141edf036d35e8ef5aa289415072
+[3]: http://github.com/github076986099/ikiwiki/commit/40dc10a4ec7809e401b4497c2abccfba30f7a2af
diff --git a/doc/todo/mdwn_preview.mdwn b/doc/todo/mdwn_preview.mdwn
index 3008eb529..c20314c28 100644
--- a/doc/todo/mdwn_preview.mdwn
+++ b/doc/todo/mdwn_preview.mdwn
@@ -87,3 +87,219 @@ remains. Some CSS to clean up the display of the live WMD preview would be good
> I assume that is designed for websites that do not use markdown
> internally. Doesn't it have a setting to leave it as markdown?
>> Found setting, fixed. --[[Joey]]
+
+>>> As I noted above, I've been working on the non-markdown page issue.
+>>> Below is my a new javascript file that I'm using, and below that a patch
+>>> to enable it. This patch makes the normal usage prettier - you get
+>>> a side panel with the live preview in it. It also adds a new config
+>>> option, `wmd_use101api`, which turns on code that tries to use the
+>>> wmd api. At the moment this code doesn't seem to work - moreover the
+>>> code that uses the new API dies early, so any code after that point is
+>>> completely untested. I will not
+>>> get a chance to look at this again soon though, so I thought I'd post
+>>> my progress so far. -- [[Will]]
+
+
+Place the following file in `underlays/wmd/wmd-ikiwiki.js`.
+
+----
+
+ // This is some code to interface the WMD interface 1.0.1 with IkiWiki
+ // The WMD interface is planned to change, so this file will likely need
+ // updating in future.
+
+ if (useWMDinterface) {
+ wmd_options = { autostart: false, output: "Markdown" };
+ var instance = null;
+
+ hook("onload", initwmd);
+ } else {
+ var typeSelector = document.getElementById("type");
+
+ var currentType = getType(typeSelector);
+
+ if (currentType == "mdwn") {
+ wmd_options = { output: "Markdown" };
+ document.getElementById("wmd-preview-container").style.display = 'none';
+ } else {
+ wmd_options = { autostart: false };
+ document.getElementById("wmd-preview-container").style.display = 'block';
+ }
+ }
+
+ function initwmd() {
+ if (!Attacklab || !Attacklab.wmd) {
+ alert("WMD hasn't finished loading!");
+ return;
+ }
+
+ var typeSelector = document.getElementById("type");
+
+ var currentType = getType(typeSelector);
+
+ if (currentType == "mdwn") {
+ window.setTimeout(enableWMD,10);
+ }
+
+ typeSelector.onchange=function() {
+ var docType=getType(this);
+
+ if (docType=="mdwn") {
+ enableWMD();
+ } else {
+ disableWMD();
+ }
+ }
+ }
+
+ function getType(typeSelector)
+ {
+ if (typeSelector.nodeName.toLowerCase() == 'input') {
+ return typeSelector.getAttribute('value');
+ } else if (typeSelector.nodeName.toLowerCase() == 'select') {
+ return typeSelector.value;
+ // return typeSelector.options[typeSelector.selectedIndex].innerText;
+ }
+ return "";
+ }
+
+ function enableWMD()
+ {
+ var editContent = document.getElementById("editcontent");
+ var previewDiv = document.getElementById("wmd-preview");
+ var previewDivContainer = document.getElementById("wmd-preview-container");
+
+ previewDivContainer.style.display = 'block';
+ // editContent.style.width = previewDivContainer.style.width;
+
+ /***** build the preview manager *****/
+ var panes = {input:editContent, preview:previewDiv, output:null};
+ var previewManager = new Attacklab.wmd.previewManager(panes);
+
+ /***** build the editor and tell it to refresh the preview after commands *****/
+ var editor = new Attacklab.wmd.editor(editContent,previewManager.refresh);
+
+ // save everything so we can destroy it all later
+ instance = {ta:editContent, div:previewDiv, ed:editor, pm:previewManager};
+ }
+
+ function disableWMD()
+ {
+ document.getElementById("wmd-preview-container").style.display = 'none';
+
+ if (instance != null) {
+ instance.pm.destroy();
+ instance.ed.destroy();
+ // inst.ta.style.width='100%'
+ }
+ instance = null;
+ }
+
+
+----
+
+ diff --git a/IkiWiki/Plugin/wmd.pm b/IkiWiki/Plugin/wmd.pm
+ index 9ddd237..743a0b8 100644
+ --- a/IkiWiki/Plugin/wmd.pm
+ +++ b/IkiWiki/Plugin/wmd.pm
+ @@ -17,6 +17,13 @@ sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ + rebuild => 1,
+ + },
+ + wmd_use101api => {
+ + type => "boolean",
+ + description => "Use the advanced, but unstable, WMD api for markdown preview.",
+ + safe => 0,
+ + rebuild => 0,
+ },
+ }
+
+ @@ -24,29 +31,25 @@ sub formbuilder_setup (@) {
+ my %params=@_;
+ my $form=$params{form};
+
+ - return if ! defined $form->field("do");
+ + return unless defined $form->field("do");
+
+ return unless $form->field("do") eq "edit" ||
+ - $form->field("do") eq "create" ||
+ - $form->field("do") eq "comment";
+ -
+ - $form->tmpl_param("wmd_preview", "<div class=\"wmd-preview\"></div>\n".
+ - include_javascript(undef, 1));
+ -}
+ -
+ -sub include_javascript ($;$) {
+ - my $page=shift;
+ - my $absolute=shift;
+ -
+ - my $wmdjs=urlto("wmd/wmd.js", $page, $absolute);
+ - return <<"EOF"
+ -<script type="text/javascript">
+ -wmd_options = {
+ - output: "Markdown"
+ -};
+ -</script>
+ -<script src="$wmdjs" type="text/javascript"></script>
+ -EOF
+ + $form->field("do") eq "create" ||
+ + $form->field("do") eq "comment";
+ +
+ + my $useAPI = $config{wmd_use101api}?'true':'false';
+ + my $ikiwikijs = urlto("ikiwiki.js", undef, 1);
+ + my $wmdIkiwikijs = urlto("wmd-ikiwiki.js", undef, 1);
+ + my $wmdjs = urlto("wmd.js", undef, 1);
+ +
+ + my $previewScripts = <<"EOS";
+ + <script type="text/javascript">useWMDinterface=$useAPI;</script>
+ + <script src="$ikiwikijs" type="text/javascript"></script>
+ + <script src="$wmdIkiwikijs" type="text/javascript"></script>
+ + <script src="$wmdjs" type="text/javascript"></script>
+ +EOS
+ +
+ + $form->tmpl_param("wmd_preview", $previewScripts);
+ }
+
+ 1
+ diff --git a/doc/style.css b/doc/style.css
+ index a6e6734..36c2b13
+ --- a/doc/style.css
+ +++ b/doc/style.css
+ @@ -76,9 +76,16 @@ div.tags {
+ float: right;
+ }
+
+ +/*
+ #editcontent {
+ width: 100%;
+ }
+ +*/
+ +
+ +#wmd-preview-container {
+ + width: 49%;
+ + float: right;
+ +}
+
+ img {
+ border-style: none;
+ diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl
+ index b1cf015..1d2f080 100644
+ --- a/templates/editpage.tmpl
+ +++ b/templates/editpage.tmpl
+ @@ -15,6 +15,14 @@ Page type: <TMPL_VAR FIELD-TYPE>
+ <TMPL_VAR FIELD-PAGE>
+ <TMPL_VAR FIELD-TYPE>
+ </TMPL_IF>
+ +<TMPL_IF NAME="WMD_PREVIEW">
+ +<div id="wmd-preview-container">
+ +<div class="header">
+ +<span>Live preview:</span>
+ +</div>
+ +<div class="wmd-preview" id="wmd-preview"></div>
+ +</div>
+ +</TMPL_IF>
+ <TMPL_VAR FIELD-EDITCONTENT><br />
+ <TMPL_IF NAME="CAN_COMMIT">
+ Optional comment about this change:<br />
diff --git a/doc/todo/natural_sorting.mdwn b/doc/todo/natural_sorting.mdwn
new file mode 100644
index 000000000..5df17e95b
--- /dev/null
+++ b/doc/todo/natural_sorting.mdwn
@@ -0,0 +1,21 @@
+[[!tag wishlist]]
+[[!tag patch]]
+
+the inline plugin's sorting is plain lexical, thich may not be appropriate for
+page titles if they have numeric components. the
+[Sort::Naturally](http://search.cpan.org/dist/Sort-Naturally/) perl module
+provides an algorithm for that.
+
+there is a
+[patch](http://git.ikiwiki.info/?p=ikiwiki;a=commit;h=55b83cb7bd1cd7c60bb45dc22c3745dd80a63fed)
+attached that makes the [[plugins/inline]] plugin use Sort::Naturally if sort
+is set to "title_natural".
+
+the current patch uses `require Sort::Naturally`, so
+[libsort-naturally-perl](http://packages.debian.org/libsort-naturally-perl)
+does not become a dependency; it might be worth suggesting, though.
+
+> See also: [[inline:_numerical_ordering_by_title]] (I probably prefer your
+> approach..) --[[Joey]]
+
+> [[applied|done]]
diff --git a/doc/usage.mdwn b/doc/usage.mdwn
index 55ff17e94..e2fe85ff6 100644
--- a/doc/usage.mdwn
+++ b/doc/usage.mdwn
@@ -106,11 +106,11 @@ These options configure the wiki. Note that [[plugins]] can add additional
configuration options of their own. All of these options and more besides can
also be configured using a setup file.
-* --wikiname
+* --wikiname name
The name of the wiki, default is "wiki".
-* --templatedir
+* --templatedir dir
Specify the directory that the page [[templates|wikitemplates]] are stored in.
Default is `/usr/share/ikiwiki/templates`, or another location as configured at
@@ -122,7 +122,7 @@ also be configured using a setup file.
ikiwiki. Old versions of templates do not always work with new ikiwiki
versions.
-* --underlaydir
+* --underlaydir dir
Specify the directory that is used to underlay the source directory.
Source files will be taken from here unless overridden by a file in the
diff --git a/doc/users/simonraven.mdwn b/doc/users/simonraven.mdwn
new file mode 100644
index 000000000..0706859aa
--- /dev/null
+++ b/doc/users/simonraven.mdwn
@@ -0,0 +1,3 @@
+New ikiwiki site at my personal site under /ikiwiki/ . This might move to /wiki/ or be on wiki.k.o depending on if I can import my MediaWiki stuff to it.
+
+Thought I'd try it out again and it grew on me.
diff --git a/po/fr.po b/po/fr.po
index eb2623fab..51cb5c7de 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.04\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-08 19:02-0400\n"
-"PO-Revision-Date: 2009-02-26 21:28+0100\n"
+"POT-Creation-Date: 2009-03-01 15:03-0500\n"
+"PO-Revision-Date: 2009-03-15 16:10+0100\n"
"Last-Translator: Philippe Batailler <philippe.batailler@free.fr>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
"MIME-Version: 1.0\n"
@@ -26,6 +26,8 @@ msgid ""
"probable misconfiguration: sslcookie is set, but you are attepting to login "
"via http, not https"
msgstr ""
+"Erreur de configuration probable : sslcookie est positionné mais vous tentez "
+"de vous connecter avec http et non https"
#: ../IkiWiki/CGI.pm:149
msgid "login failed, perhaps you need to turn on cookies?"
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index ffe2d09e3..94ea19f66 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: 2009-03-08 19:02-0400\n"
+"POT-Creation-Date: 2009-03-15 17:56-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"
@@ -54,7 +54,7 @@ msgstr ""
msgid "You are banned."
msgstr ""
-#: ../IkiWiki/CGI.pm:390 ../IkiWiki/CGI.pm:391 ../IkiWiki.pm:1209
+#: ../IkiWiki/CGI.pm:390 ../IkiWiki/CGI.pm:391 ../IkiWiki.pm:1211
msgid "Error"
msgstr ""
@@ -327,18 +327,18 @@ msgstr ""
msgid "fortune failed"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:624 ../IkiWiki/Plugin/git.pm:642
+#: ../IkiWiki/Plugin/git.pm:626 ../IkiWiki/Plugin/git.pm:644
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:664
+#: ../IkiWiki/Plugin/git.pm:666
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:668
+#: ../IkiWiki/Plugin/git.pm:670
msgid "you are not allowed to change file modes"
msgstr ""
@@ -1018,12 +1018,12 @@ msgstr ""
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
-#: ../IkiWiki.pm:1192
+#: ../IkiWiki.pm:1194
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr ""
-#: ../IkiWiki.pm:1730
+#: ../IkiWiki.pm:1732
msgid "yes"
msgstr ""
diff --git a/templates/comment.tmpl b/templates/comment.tmpl
index 1b9064ea0..fb76ea004 100644
--- a/templates/comment.tmpl
+++ b/templates/comment.tmpl
@@ -1,4 +1,4 @@
-<div class="comment" id="<TMPL_VAR NAME=INLINEPAGE>">
+<div class="comment" id="<TMPL_VAR NAME=COMMENTID>">
<div class="comment-subject">
<TMPL_IF PERMALINK>