summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-06-28 23:08:24 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-06-28 23:08:24 -0400
commitb66f9a1981094bc2159a228dfaefc5c2e01ee68a (patch)
tree47264880d8667dc2411b7392b6c6da3f4ac1a0f1
parentf8fe1247bdc13533673f217e6c77361a1188d7eb (diff)
call format hooks when generating page previews
* toc: Revert change in 2.45 that made it run at sanitize time. This breaks use of toc in a sidebar. * Call format hooks when generating page previews, thus fixing toc display there, as well as fixing inlins to again display in page previews, since it's started using format hooks. This also allows several other things, like embed, that use format hooks, to work during page preview time. * Format hooks should not rely on getting an entire html document, as they will only get the body during page preview. * toggle: Deal with preview mode when adding javascript.
-rw-r--r--IkiWiki/CGI.pm12
-rw-r--r--IkiWiki/Plugin/toc.pm4
-rw-r--r--IkiWiki/Plugin/toggle.pm5
-rw-r--r--debian/changelog9
-rw-r--r--doc/bugs/toc_in_sidebar.mdwn5
-rw-r--r--doc/plugins/plaintext/.discussion.mdwn.swpbin12288 -> 0 bytes
-rw-r--r--doc/plugins/write.mdwn4
-rw-r--r--po/ikiwiki.pot46
8 files changed, 55 insertions, 30 deletions
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index 8a294e887..015c9ae01 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -396,11 +396,17 @@ sub cgi_editpage ($$) { #{{{
session => $session,
);
});
- $form->tmpl_param("page_preview",
- htmlize($page, $page, $type,
+ my $preview=htmlize($page, $page, $type,
linkify($page, $page,
preprocess($page, $page,
- filter($page, $page, $content), 0, 1))));
+ filter($page, $page, $content), 0, 1)));
+ run_hooks(format => sub {
+ $preview=shift->(
+ page => $page,
+ content => $preview,
+ );
+ });
+ $form->tmpl_param("page_preview", $preview);
if ($new) {
delete $pagesources{$page};
diff --git a/IkiWiki/Plugin/toc.pm b/IkiWiki/Plugin/toc.pm
index 5380dd965..639cae4a9 100644
--- a/IkiWiki/Plugin/toc.pm
+++ b/IkiWiki/Plugin/toc.pm
@@ -9,7 +9,7 @@ use HTML::Parser;
sub import { #{{{
hook(type => "preprocess", id => "toc", call => \&preprocess);
- hook(type => "sanitize", id => "toc", call => \&sanitize);
+ hook(type => "format", id => "toc", call => \&format);
} # }}}
my %tocpages;
@@ -33,7 +33,7 @@ sub preprocess (@) { #{{{
}
} # }}}
-sub sanitize (@) { #{{{
+sub format (@) { #{{{
my %params=@_;
my $content=$params{content};
diff --git a/IkiWiki/Plugin/toggle.pm b/IkiWiki/Plugin/toggle.pm
index df5a2a737..8089443e0 100644
--- a/IkiWiki/Plugin/toggle.pm
+++ b/IkiWiki/Plugin/toggle.pm
@@ -112,7 +112,10 @@ sub format (@) { #{{{
if ($params{content}=~s!(<div class="toggleable" id="[^"]+">)</div>!$1!g) {
$params{content}=~s/<div class="toggleableend">//g;
- $params{content}=~s!^<\/body>!$javascript</body>!m;
+ if (! ($params{content}=~s!^<\/body>!$javascript</body>!m)) {
+ # no </body> tag, probably in preview mode
+ $params{content}.=$javascript;
+ }
}
return $params{content};
} # }}}
diff --git a/debian/changelog b/debian/changelog
index 0492ff87c..a89cb56e0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -22,6 +22,15 @@ ikiwiki (2.51) UNRELEASED; urgency=low
* txt: New plugin, contributed by Gabriel McManus.
* smiley: Generate links relative to the destpage. (Fixes a reversion from
2.41.)
+ * toc: Revert change in 2.45 that made it run at sanitize time. This breaks
+ use of toc in a sidebar.
+ * Call format hooks when generating page previews, thus fixing toc display
+ there, as well as fixing inlins to again display in page previews, since
+ it's started using format hooks. This also allows several other things,
+ like embed, that use format hooks, to work during page preview time.
+ * Format hooks should not rely on getting an entire html document, as they
+ will only get the body during page preview.
+ * toggle: Deal with preview mode when adding javascript.
-- Joey Hess <joeyh@debian.org> Sun, 15 Jun 2008 15:03:33 -0400
diff --git a/doc/bugs/toc_in_sidebar.mdwn b/doc/bugs/toc_in_sidebar.mdwn
index 9286790b8..d2c3ab975 100644
--- a/doc/bugs/toc_in_sidebar.mdwn
+++ b/doc/bugs/toc_in_sidebar.mdwn
@@ -13,4 +13,9 @@ I can't think of a way between these that works in all cases. Maybe call
the format hooks when generating a page preview? Maybe add an option to toc
to make it embeddable in the sidebar?
+Hmm, I think I need to call format during preview. Another case is that
+inline uses a format hook to insert the inlined content..
+
--[[Joey]]
+
+[[done]]
diff --git a/doc/plugins/plaintext/.discussion.mdwn.swp b/doc/plugins/plaintext/.discussion.mdwn.swp
deleted file mode 100644
index df2347f9e..000000000
--- a/doc/plugins/plaintext/.discussion.mdwn.swp
+++ /dev/null
Binary files differ
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 35f391f7f..5def4c679 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -220,7 +220,9 @@ and should return the sanitized content.
The difference between format and sanitize is that sanitize only acts on
the page body, while format can modify the entire html page including the
-header and footer inserted by ikiwiki, the html document type, etc.
+header and footer inserted by ikiwiki, the html document type, etc. (It
+should not rely on always being passed the entire page, as it won't be
+when the page is being previewed.)
The function is passed named parameters: "page" and "content", and
should return the formatted content.
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index 6989e9579..fec552220 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-13 15:17-0400\n"
+"POT-Creation-Date: 2008-06-28 23:05-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,7 +24,7 @@ msgstr ""
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
-#: ../IkiWiki/CGI.pm:190 ../IkiWiki/CGI.pm:521
+#: ../IkiWiki/CGI.pm:190 ../IkiWiki/CGI.pm:527
msgid "Your login session has expired."
msgstr ""
@@ -49,25 +49,25 @@ msgstr ""
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:432 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:438 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:266 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:95
#: ../IkiWiki/Render.pm:162
msgid "discussion"
msgstr ""
-#: ../IkiWiki/CGI.pm:488
+#: ../IkiWiki/CGI.pm:494
#, perl-format
msgid "creating %s"
msgstr ""
-#: ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:534 ../IkiWiki/CGI.pm:544
-#: ../IkiWiki/CGI.pm:578 ../IkiWiki/CGI.pm:623
+#: ../IkiWiki/CGI.pm:512 ../IkiWiki/CGI.pm:540 ../IkiWiki/CGI.pm:550
+#: ../IkiWiki/CGI.pm:584 ../IkiWiki/CGI.pm:629
#, perl-format
msgid "editing %s"
msgstr ""
-#: ../IkiWiki/CGI.pm:716
+#: ../IkiWiki/CGI.pm:722
msgid "You are banned."
msgstr ""
@@ -84,62 +84,62 @@ msgstr ""
msgid "missing %s parameter"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:161
+#: ../IkiWiki/Plugin/aggregate.pm:168
msgid "new feed"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:175
+#: ../IkiWiki/Plugin/aggregate.pm:182
msgid "posts"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:177
+#: ../IkiWiki/Plugin/aggregate.pm:184
msgid "new"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:340
+#: ../IkiWiki/Plugin/aggregate.pm:347
#, perl-format
msgid "expiring %s (%s days old)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:347
+#: ../IkiWiki/Plugin/aggregate.pm:354
#, perl-format
msgid "expiring %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:374
+#: ../IkiWiki/Plugin/aggregate.pm:381
#, perl-format
msgid "processed ok at %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:378
+#: ../IkiWiki/Plugin/aggregate.pm:385
#, perl-format
msgid "checking feed %s ..."
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:383
+#: ../IkiWiki/Plugin/aggregate.pm:390
#, perl-format
msgid "could not find feed at %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:398
+#: ../IkiWiki/Plugin/aggregate.pm:405
msgid "feed not found"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:409
+#: ../IkiWiki/Plugin/aggregate.pm:416
#, perl-format
msgid "(invalid UTF-8 stripped from feed)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:415
+#: ../IkiWiki/Plugin/aggregate.pm:422
#, perl-format
msgid "(feed entities escaped)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:421
+#: ../IkiWiki/Plugin/aggregate.pm:428
msgid "feed crashed XML::Feed!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:495
+#: ../IkiWiki/Plugin/aggregate.pm:502
#, perl-format
msgid "creating new page %s"
msgstr ""
@@ -285,15 +285,15 @@ msgstr ""
msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
msgstr ""
-#: ../IkiWiki/Plugin/meta.pm:132
+#: ../IkiWiki/Plugin/meta.pm:137
msgid "stylesheet not found"
msgstr ""
-#: ../IkiWiki/Plugin/meta.pm:166
+#: ../IkiWiki/Plugin/meta.pm:171
msgid "redir page not found"
msgstr ""
-#: ../IkiWiki/Plugin/meta.pm:179
+#: ../IkiWiki/Plugin/meta.pm:184
msgid "redir cycle is not allowed"
msgstr ""