use constant CANCEL => "Cancel";
my $postcomment;
+my %commentstate;
sub import {
hook(type => "checkconfig", id => 'comments', call => \&checkconfig);
my $commentauthor;
my $commentauthorurl;
my $commentopenid;
-
if (defined $params{username}) {
$commentuser = $params{username};
$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;
}
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});
}
}
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]]
>>> 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.