toggle: Add support for toggles that are open by default.

Also fix to work in preview mode.
master
Joey Hess 2008-07-02 16:02:01 -04:00
parent d593533af5
commit 895faed642
4 changed files with 12 additions and 10 deletions

View File

@ -81,17 +81,11 @@ sub preprocess_toggle (@) { #{{{
my %params=(id => "default", text => "more", @_);
my $id=genid($params{page}, $params{id});
if (! $params{preview}) {
return "<a class=\"toggle\" href=\"#$id\">$params{text}</a>";
}
else {
return "$params{text} ".
gettext("(not toggleable in preview mode)");
}
return "<a class=\"toggle\" href=\"#$id\">$params{text}</a>";
} # }}}
sub preprocess_toggleable (@) { #{{{
my %params=(id => "default", text => "", @_);
my %params=(id => "default", text => "", open => "no", @_);
# Preprocess the text to expand any preprocessor directives
# embedded inside it.
@ -99,19 +93,20 @@ sub preprocess_toggleable (@) { #{{{
IkiWiki::filter($params{page}, $params{destpage}, $params{text}));
my $id=genid($params{page}, $params{id});
my $class=(lc($params{open}) ne "yes") ? "toggleable" : "toggleable-open";
# Should really be a postprocessor directive, oh well. Work around
# markdown's dislike of markdown inside a <div> with various funky
# whitespace.
my ($indent)=$params{text}=~/( +)$/;
$indent="" unless defined $indent;
return "<div class=\"toggleable\" id=\"$id\"></div>\n\n$params{text}\n$indent<div class=\"toggleableend\"></div>";
return "<div class=\"$class\" id=\"$id\"></div>\n\n$params{text}\n$indent<div class=\"toggleableend\"></div>";
} # }}}
sub format (@) { #{{{
my %params=@_;
if ($params{content}=~s!(<div class="toggleable" id="[^"]+">)</div>!$1!g) {
if ($params{content}=~s!(<div class="toggleable(?:-open)?" id="[^"]+">)</div>!$1!g) {
$params{content}=~s/<div class="toggleableend">//g;
if (! ($params{content}=~s!^<\/body>!$javascript</body>!m)) {
# no </body> tag, probably in preview mode

2
debian/changelog vendored
View File

@ -4,6 +4,8 @@ ikiwiki (2.52) UNRELEASED; urgency=low
(Sponsored by The TOVA Company.)
* If attachments are not enabled, configure CGI.pm to disable file
uploads by default. (An anti-DOS measure.)
* toggle: Add support for toggles that are open by default.
* toggle: Fix to work in preview mode.
-- Joey Hess <joeyh@debian.org> Mon, 30 Jun 2008 19:56:28 -0400

View File

@ -28,3 +28,6 @@ each other, but can be located anywhere on the page. There can also be
mutiple toggles that all toggle a single togglable.
The id has a default value of "default", so can be omitted in simple cases.
If you'd like a toggleable to be displayed by default, and toggle to
hidden, then pass a parameter "open=true" when setting up the toggleable.

View File

@ -2,3 +2,5 @@ It would be nice if one could set the initial state of the toggleable area.
--[[[rdennis]]
[[tag plugins/toggle]]
[[done]]