39c744f9fc1fcc44b7dc82b142c04b9e960f1244
[ikiwiki.git] / doc / bugs / Comments_are_not_sorted_by_their_date_attribute.mdwn
1 (brief, sorry, via Phone. More details to follow)
2
3 I  gradually splitting discussion pages into separate comment pages, containing a comment directive.
4
5 The "date" attribute is being set to the date output by gig for a commit. (I'd hope this was parseable)
6
7 The presentation of the resulting comments is not sorted by this date, which I would hope/expect, but instead by the ctime or mtime of the file at the other end, as best I can tell.
8
9 -- [[Jon]]
10
11 > Yes, comments are displayed via an inline, and usual [[pagespec/sorting]]
12 > (eg, default of when the file was first seen) is used. The comment
13 > date only affects the date displayed.
14 >
15 > > That's not what I intended - it's meant to be more or less just
16 > > syntactic sugar for `\[[!meta date=foo]]`, setting the `%pagectime`.
17 > > The code looks as though it ought to work, but perhaps it's buggy?
18 > > --[[smcv]]
19
20 > The only time I've seen this be much problem personally is when moving
21 > a page, which means moving its comments directory, which tends to
22 > jumble the order. (And --gettime does not help, as ikiwiki does not
23 > tell git to follow renames for speed reasons.)
24
25 > I wonder if it wouldn't be best to just get rid of the extra date
26 > inside the comment, and rely on the file date as is done for other pages.
27 > Thoughts [[smcv]]?
28 >
29 > Altenatively, since comments tend to be named "comment_N_.....", 
30 > adding a new [[pagespec/sorting]] method that sorts by filename, 
31 > rather than by title, and using it by default for comments might be 
32 > better than the current situation. --[[Joey]] 
33
34 >> Since git does not track file time, I tend to prefer to encode date
35 >> stuff inside files where possible.  For other pages, I put an explicit
36 >> [[plugins/meta]] date into the source when I create the page.  I've
37 >> had to reconstruct ordering after moving to a different git checkout
38 >> after a server move before, it was painful ☺
39 >>
40 >> In my current situation, I could live with by-filename ordering. By-title
41 >> ordering would also be workable. — [[Jon]]
42
43 >>> I agree with Jon's reasons for embedding an explicit date in the file.
44 >>> As I said, this is *meant* to work, but it might not.
45 >>>
46 >>> Sorting by filename would only be useful with
47 >>> [[!cpan Sort::Naturally]], since normal `cmp` ordering would break pages
48 >>> with more than 9 comments. --s
49
50 >>> OK, I've found the bug. As internal pages, comments are not preprocessed
51 >>> (and so their date attributes do not have a chance to take effect) until
52 >>> they are already being inlined, by which time they have already been
53 >>> sorted by the files' ctimes. Possible fixes include:
54 >>>
55 >>> * scan any modified/created internal pages (including preprocessing them
56 >>>   in scan mode) before rendering any page, fixing all possible bugs of this
57 >>>   form but causing a slower scan phase
58 >>>
59 >>> * list and scan the comments below a given page in its `pagetemplate`
60 >>>   hook before inlining them, causing a slower build phase for pages with
61 >>>   many comments
62 >>>
63 >>> I think the former is a more general fix, and I'll try to implement
64 >>> it. --[[smcv]]