summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-07-02 16:02:01 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-07-02 16:02:01 -0400
commit895faed6428f3523871d29ed82b0ab3326453b75 (patch)
treebeca73381f8d9289efff5c311e20656d79894bdf
parentd593533af58d5133ef6ecfc4323e3e1d55d71c48 (diff)
toggle: Add support for toggles that are open by default.
Also fix to work in preview mode.
-rw-r--r--IkiWiki/Plugin/toggle.pm15
-rw-r--r--debian/changelog2
-rw-r--r--doc/plugins/toggle.mdwn3
-rw-r--r--doc/todo/toggle_initial_state.mdwn2
4 files changed, 12 insertions, 10 deletions
diff --git a/IkiWiki/Plugin/toggle.pm b/IkiWiki/Plugin/toggle.pm
index 54c9a0d9a..f969d7686 100644
--- a/IkiWiki/Plugin/toggle.pm
+++ b/IkiWiki/Plugin/toggle.pm
@@ -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
diff --git a/debian/changelog b/debian/changelog
index 152689948..314415788 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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
diff --git a/doc/plugins/toggle.mdwn b/doc/plugins/toggle.mdwn
index cb76d0b7b..b33575824 100644
--- a/doc/plugins/toggle.mdwn
+++ b/doc/plugins/toggle.mdwn
@@ -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.
diff --git a/doc/todo/toggle_initial_state.mdwn b/doc/todo/toggle_initial_state.mdwn
index f54d33c04..cbbf7e6fd 100644
--- a/doc/todo/toggle_initial_state.mdwn
+++ b/doc/todo/toggle_initial_state.mdwn
@@ -2,3 +2,5 @@ It would be nice if one could set the initial state of the toggleable area.
--[[[rdennis]]
[[tag plugins/toggle]]
+
+[[done]]