* Fix some issues with toggles in preview mode.

master
Joey Hess 2007-10-29 17:16:10 -04:00
parent 67acb0463b
commit 683c1ebb4c
3 changed files with 39 additions and 1 deletions

View File

@ -80,7 +80,13 @@ sub preprocess_toggle (@) { #{{{
my %params=(id => "default", text => "more", @_); my %params=(id => "default", text => "more", @_);
my $id=genid($params{page}, $params{id}); my $id=genid($params{page}, $params{id});
if (! $params{preview}) {
return "<a class=\"toggle\" href=\"#$id\">$params{text}</a>"; return "<a class=\"toggle\" href=\"#$id\">$params{text}</a>";
}
else {
return "$params{text} ".
gettext("(not toggleable in preview mode)");
}
} # }}} } # }}}
sub preprocess_toggleable (@) { #{{{ sub preprocess_toggleable (@) { #{{{

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
ikiwiki (2.12) UNRELEASED; urgency=low
* Fix some issues with toggles in preview mode.
-- Joey Hess <joeyh@debian.org> Mon, 29 Oct 2007 17:15:04 -0400
ikiwiki (2.11) unstable; urgency=low ikiwiki (2.11) unstable; urgency=low
* Correct a pair of logic errors that triggered if svnpath was empty. * Correct a pair of logic errors that triggered if svnpath was empty.

View File

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