aboutsummaryrefslogtreecommitdiff
path: root/doc/plugins/contrib/report/discussion.mdwn
blob: a6cb6f8bda68e971e992197338c7328277a6c85f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Wow, this plugin does a lot... it seems to be `inline` (but without the feeds
or the ability to not have `archive="yes"`), plus part of
[[plugins/contrib/trail]], plus some sorting, plus an ingenious workaround
for template evaluation being relatively stateless.

A large part of this plugin would just fall off if one of the versions of
"[[todo/allow_plugins_to_add_sorting_methods]]" was merged, which was a
large part of the idea of that feature request :-) To make use of that
you'd have to use `pagespec_match_list` in the trail case too, but that's
easy enough - just add `list => [@the_trail_pages]` to the arguments.

Another large part would fall off if this plugin required, and internally
invoked, `inline` (like my `comments` plugin does) - `inline` runs
`pagetemplate` hooks, and in particular, it'll run the `field` hook.
Alternatively, this plugin could invoke `pagetemplate` hooks itself,
removing the special case for `field`.

Perhaps the `headers` thing could migrate into inline somehow? That might
lead to making inline too big, though.

> I think inline is *already* too big, honestly. --[[KathrynAndersen]]

>> A fair point; perhaps my complaint should be that *inline* does
>> too many orthogonal things. I suppose the headers feature wouldn't
>> really make sense in an inline that didn't have `archive="yes"`,
>> so it'd make sense to recommend this plugin as a replacement
>> for inlining with archive=yes (for which I now realise "inline"
>> is the wrong verb anyway :-) ) --s

Is the intention that the `trail` part is a performance hack, or a way
to select pages? How does it relate to [[todo/wikitrails]] or
[[plugins/contrib/trail]]? --[[smcv]]

> The `trail` part is *both* a performance hack, and a way to select pages.  I have over 5000 pages on my site, I need all the performance hacks I can get.
> For the performance hack, it is a way of reducing the need to iterate through every single page in the wiki in order to find matching pages.
> For the way-to-select-pages, yes, it is intended to be similar to [[todo/wikitrails]] and [[plugins/contrib/trail]] (and will be more similar with the new release which will be happening soon; it will add prev_* and next_* variables).
> The idea is that, rather than having to add special "trail" links on PageA to indicate that a page is part of the trail,
> it takes advantage of the `%links` hash, which already contains, for each page, an array of the links from that page to other pages.  No need for special markup, just use what's there; a trail is defined as "all the pages linked to from page X", and since it's an array, it has an order already.
> But to avoid that being too limiting, one can use a `pages=...` pagespec to filter that list to a subset; only the pages one is interested in.
> And one can also sort it, if one so desires.
> --[[KathrynAndersen]] 

>> That's an interesting approach to trails; I'd missed the fact that
>> links are already ordered.
>>
>> This does have the same problems as tags, though: see
>> [[bugs/tagged()_matching_wikilinks]] and
>> [[todo/matching_different_kinds_of_links]]. I suppose the question
>> now is whether new code should be consistent with `tag` (and
>> potentially be fixed at the same time as tag itself), or try to
>> avoid those problems?
>>
>> The combination of `trail` with another pagespec in this plugin
>> does provide a neat way for it to work around having unwanted
>> pages in the report, by limiting by a suitable tag or subdirectory
>> or something. --s