The [[ikiwiki/directive/listdirectives]]` directive doesn't register a link between the page and the subpages. This is a problem because then the [[ikiwiki/directive/orphans]] directive then marks the directives as orphans... Maybe it is a but with the orphans directive however... A simple workaround is to exclude those files from the orphans call... --[[anarcat]]
>>> add $pagespec to @{$pagestate{location}{orphans}{reachable}}
>>>
>>> # in preprocess function in orphans.pm (pseudocode)
>>> # executed at build time, not at scan time, so pagespecs work
>>>
>>> for each maybe_orphan with no links to it
>>> for each location with a list of reachable pagespecs
>>> make the page with the orphans directive depend on \
>>> the page that is the location
>>> for each of those pagespecs
>>> if pagespec matches orphan
>>> take orphan off the list
>>> go to next orphan
>>> output list of orphans
>>>
>>> (Maybe parentlinks should also annotate the parent/ancestors of
>>> each page as reachable from that page.)
>>>
>>> Do other people (mainly Joey) think that'd be acceptable, or
>>> too intrusive?
>>>
>>> Taking this off the list of resolved bugs again while we think about it.
>>>
>>> I suspect that in the presence of autoindex, what you really want might
>>> be less "there's a link to it" and more "there's a path to it from
>>> the root of the wiki", which is why I called the proposed function
>>> "add_reachable". On the other hand, maybe that's too computationally
>>> intensive to actually do; I haven't tried it.
>>> --[[smcv]]
2014-03-08 14:53:06 +01:00
>>>>
>>>> (I'll interpet Joeys silence as a good sign ;-). Is there a difference between "link to it" and "path to it"? If we assume autoindex produces bonafide "first class" links there shouldn't be one!?
2014-03-08 15:31:17 +01:00
>>>>
2014-03-08 14:53:50 +01:00
>>>> So far your idea sounds great, says me without any knowledge of the source. I'll try to grok it. Is there a medium for silly questions, a wiki seems not the right fit for that? -- [[holger]]
>>>>> Yes, there *has* to be a difference between a first class wikilink
>>>>> and the thing to which `map` and `inline` can contribute.
>>>>> `map` and `inline` use a pagespec to decide what they include,
>>>>> and pagespecs can't be evaluated and get a correct answer until the
>>>>> set of links has been collected, because their results often depend
>>>>> on the set of links. Otherwise, suppose you had a page `foo` whose only
>>>>> contents were this:
>>>>>
>>>>> \[[!inline pages="!backlink(foo)"]]
>>>>>
>>>>> If `inline` generated links, it would inline exactly those pages that
>>>>> it doesn't inline. That's never going to end well :-) --[[smcv]]
2014-03-08 15:31:17 +01:00
>>>>>> We have to differentiate between what users of ikiwiki consider first class links and what internally is happening. For the user any link contributing to the structured access tree is first class. The code on the other hand has to differentiate between the static links, then generated links, then orphan links. Three "passes", even your proposed solution could be seen as adding another pass since the orphan plugin has to run after all the plugins generating (first class user) links. -- [[holger]]