summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/comments.pm22
-rw-r--r--doc/bugs/inline_sort_order_and_meta_date_value.mdwn42
-rw-r--r--doc/todo/comments.mdwn7
3 files changed, 60 insertions, 11 deletions
diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index 4f3b76db3..644ef1be8 100644
--- a/IkiWiki/Plugin/comments.pm
+++ b/IkiWiki/Plugin/comments.pm
@@ -16,6 +16,7 @@ use constant POST_COMMENT => "Post comment";
use constant CANCEL => "Cancel";
my $postcomment;
+my %commentstate;
sub import {
hook(type => "checkconfig", id => 'comments', call => \&checkconfig);
@@ -152,7 +153,6 @@ sub preprocess {
my $commentauthor;
my $commentauthorurl;
my $commentopenid;
-
if (defined $params{username}) {
$commentuser = $params{username};
@@ -181,11 +181,11 @@ sub preprocess {
$commentauthor = gettext("Anonymous");
}
- $pagestate{$page}{comments}{commentuser} = $commentuser;
- $pagestate{$page}{comments}{commentopenid} = $commentopenid;
- $pagestate{$page}{comments}{commentip} = $commentip;
- $pagestate{$page}{comments}{commentauthor} = $commentauthor;
- $pagestate{$page}{comments}{commentauthorurl} = $commentauthorurl;
+ $commentstate{$page}{commentuser} = $commentuser;
+ $commentstate{$page}{commentopenid} = $commentopenid;
+ $commentstate{$page}{commentip} = $commentip;
+ $commentstate{$page}{commentauthor} = $commentauthor;
+ $commentstate{$page}{commentauthorurl} = $commentauthorurl;
if (! defined $pagestate{$page}{meta}{author}) {
$pagestate{$page}{meta}{author} = $commentauthor;
}
@@ -570,27 +570,27 @@ sub pagetemplate (@) {
if ($template->query(name => 'commentuser')) {
$template->param(commentuser =>
- $pagestate{$page}{comments}{commentuser});
+ $commentstate{$page}{commentuser});
}
if ($template->query(name => 'commentopenid')) {
$template->param(commentopenid =>
- $pagestate{$page}{comments}{commentopenid});
+ $commentstate{$page}{commentopenid});
}
if ($template->query(name => 'commentip')) {
$template->param(commentip =>
- $pagestate{$page}{comments}{commentip});
+ $commentstate{$page}{commentip});
}
if ($template->query(name => 'commentauthor')) {
$template->param(commentauthor =>
- $pagestate{$page}{comments}{commentauthor});
+ $commentstate{$page}{commentauthor});
}
if ($template->query(name => 'commentauthorurl')) {
$template->param(commentauthorurl =>
- $pagestate{$page}{comments}{commentauthorurl});
+ $commentstate{$page}{commentauthorurl});
}
}
diff --git a/doc/bugs/inline_sort_order_and_meta_date_value.mdwn b/doc/bugs/inline_sort_order_and_meta_date_value.mdwn
index 79d17ada2..d851ef397 100644
--- a/doc/bugs/inline_sort_order_and_meta_date_value.mdwn
+++ b/doc/bugs/inline_sort_order_and_meta_date_value.mdwn
@@ -57,3 +57,45 @@ out the sort option. --[[Joey]]
return sprintf(gettext("unknown sort type %s"), $params{sort});
}
+> On further testing, I find that the bug is limited to the first time
+> creation time should be used and has nothing to do with setting the sort
+> parameter. Revised steps to reproduce: --[David A. Harding](http://dtrt.org), 2008-12-20
+>
+> 1. Create pages that sort different by mtime and ctime
+>
+> 2. inline pages="somepages/*"
+>
+> 3. ikiwiki --setup setup_file
+>
+> 4. Pages are output incorrectly in mtime order
+>
+> 5. ikiwiki --setup setup_file
+>
+> 6. Pages are output correctly in ctime order
+>
+> 7. Create new page in somepages/, set its ctime to earlier than another
+> page in sompages/
+>
+> 8. ikiwiki --setup setup_file
+>
+> 9. All previously sorted pages output correctly in ctime order but new
+> page is output incorrectly at the top as if its mtime was its ctime
+>
+> 10. ikiwiki --setup setup_file
+>
+> 11. All pages, including new page, are output correctly in ctime order
+
+You're confusing ctime and creation time. This is perhaps not suprising, as
+ikiwiki uses the term 'ctime' to refer to creation time. However, the unix
+ctime value is not the same thing. Unix ctime can change if a file changes
+owner, or in some cases, permissions. Unix ctime also always changes
+when the file is modified. Ikiwiki wants a first creation date of the file,
+and it accomplishes this by recording the initial ctime of a file the first
+time it processes it, and *preserving* that creation time forever, ignoring
+later ctime changes.
+
+I suspect that this, coupled with the fact that ikiwiki sorts newest pages
+first, explains everything you describe. If not, please send me a shell script
+test case I can run, as instructions like "Create pages that sort different by
+mtime and ctime" are not ones that I know how to follow (given that touch sets
+*both*). --[[Joey]]
diff --git a/doc/todo/comments.mdwn b/doc/todo/comments.mdwn
index 3a18d63b8..12aef0bb3 100644
--- a/doc/todo/comments.mdwn
+++ b/doc/todo/comments.mdwn
@@ -31,6 +31,13 @@ Known issues with the [[plugins/comments]] plugin:
>>> The new code produces links like /wikiisons/openid.png, which
>>> fail if ikiwiki is not at the root of the web server. --[[Joey]]
+ >>> I got to wondering if the icons are needed. On my comments branch
+ >>> (not master), I've dropped the icons and info can be seen by hovering
+ >>> over the author's name. Idea being that you probably don't care how
+ >>> they authenticated unless something is weird, and in that case you
+ >>> can hover to check. Does that make sense, should I merge it?
+ >>> --[[Joey]]
+
* Should the comments be visually set off more from the page above?
Rather than just a horizontal rule, I'm thinking put the comments
in a box like is used for inlined pages.