call format hooks when generating page previews
authorJoey Hess <joey@kodama.kitenet.net>
Sun, 29 Jun 2008 03:08:24 +0000 (23:08 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Sun, 29 Jun 2008 03:08:24 +0000 (23:08 -0400)
* 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.

IkiWiki/CGI.pm
IkiWiki/Plugin/toc.pm
IkiWiki/Plugin/toggle.pm
debian/changelog
doc/bugs/toc_in_sidebar.mdwn
doc/plugins/plaintext/.discussion.mdwn.swp [deleted file]
doc/plugins/write.mdwn
po/ikiwiki.pot

index 8a294e887554bbf0f145cfedc239dd062ba4bfc9..015c9ae01fbde4f3be3a85bf28f4a429fba54881 100644 (file)
@@ -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};
index 5380dd9658d5ecbfa71b335edd7830628c83a88b..639cae4a90e88d437824f51689824fa1b30e95ca 100644 (file)
@@ -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};
        
index df5a2a7373290026a11910b97b94a291f24eed5c..8089443e02b9296d37d393b83ba6456a7c0a4e45 100644 (file)
@@ -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};
 } # }}}
index 0492ff87c64f768bbd0d95f5dbfb5600259a7b93..a89cb56e08c6b9feb53571b5683a6e4c424d9751 100644 (file)
@@ -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
 
index 9286790b87eccddbe9e684bc12d12e00bee87984..d2c3ab975555d41ce62ed2f49067cec81d75da6b 100644 (file)
@@ -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 (file)
index df2347f..0000000
Binary files a/doc/plugins/plaintext/.discussion.mdwn.swp and /dev/null differ
index 35f391f7f2f07d965117125ada195dcfa480c3b5..5def4c67967165f927ae696954c254e72f49221d 100644 (file)
@@ -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.
index 6989e9579cfe5cd6dd1d692268e56a83f1884758..fec552220df5ba8a1d142e17f73ddf0ac92eddcd 100644 (file)
@@ -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 ""