it gets worse
[ikiwiki] / doc / bugs / bug_when_toggling_in_a_preview_page.mdwn
1 When toggling an item while being in a web-editing session in the *Preview* frame,
2 you'll lose the context of the editing session and will be directed to the wiki's
3 main page instead.  --[[tschwinge]]
4
5 Making toggles actually work in preview is hard: The toggle plugin uses
6 a format hook to add javascript to the page, after htmlscrubber runs. Page
7 preview does not currently run the format hook.
8
9 I think that is not done because the format hook is supposed to get the
10 entire html file contents, including the html head and body elements, and
11 in the case of page preview, such a full page is not being generated,
12 instead it's just inlining the previewed page into the edit form.
13
14 If the format hook were called on this partial data, hooks that looked for
15 body tags etc would break. OTOH, if in preview mode it were run on the
16 whole edit form page, ones like toc that parse the page would have
17 unexpected results, since they would also parse the edit form.
18
19 (Also, if format were run in preview mode then plugins like linkmap, which
20 generate object files in their format hook, would need to be changed to not
21 do this during preview (to avoid preview mode writing files to the wiki).
22 So the format hook would need to be passed a flag indicating preview mode.)
23
24 So I don't see a good way to call the format hook in preview mode.
25 Failing that, the best I can do is make the toggle plugin detect preview
26 mode, and generate nonfunctional toggles that warn they're not toggleable
27 in preview mode. I've [[done]] that, which also fixes the incidental issue of
28 the toggle link pointing to the wrong place, which was due to the use of the
29 <base> tag in the preview page template. --[[Joey]]