X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/af9566ff1ae55d273ff96c7ca39e34265623a55d..5466a1daf99e8e4c67a19f871aaf558312569652:/IkiWiki/Render.pm diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index a4efa0b74..b59a721c0 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -19,40 +19,6 @@ sub linkify ($$) { #{{{ return $content; } #}}} -my $_scrubber; -sub scrubber { #{{{ - return $_scrubber if defined $_scrubber; - - eval q{use HTML::Scrubber}; - # Lists based on http://feedparser.org/docs/html-sanitization.html - $_scrubber = HTML::Scrubber->new( - allow => [qw{ - a abbr acronym address area b big blockquote br - button caption center cite code col colgroup dd del - dfn dir div dl dt em fieldset font form h1 h2 h3 h4 - h5 h6 hr i img input ins kbd label legend li map - menu ol optgroup option p pre q s samp select small - span strike strong sub sup table tbody td textarea - tfoot th thead tr tt u ul var - }], - default => [undef, { map { $_ => 1 } qw{ - abbr accept accept-charset accesskey action - align alt axis border cellpadding cellspacing - char charoff charset checked cite class - clear cols colspan color compact coords - datetime dir disabled enctype for frame - headers height href hreflang hspace id ismap - label lang longdesc maxlength media method - multiple name nohref noshade nowrap prompt - readonly rel rev rows rowspan rules scope - selected shape size span src start summary - tabindex target title type usemap valign - value vspace width - }}], - ); - return $_scrubber; -} # }}} - sub htmlize ($$) { #{{{ my $type=shift; my $content=shift; @@ -71,8 +37,10 @@ sub htmlize ($$) { #{{{ error("htmlization of $type not supported"); } - if ($config{sanitize}) { - $content=scrubber()->scrub($content); + if (exists $hooks{sanitize}) { + foreach my $id (keys %{$hooks{sanitize}}) { + $content=$hooks{sanitize}{$id}{call}->($content); + } } return $content; @@ -206,7 +174,15 @@ sub genpage ($$$) { #{{{ $u=~s/\[\[file\]\]/$pagesources{$page}/g; $template->param(historyurl => $u); } - $template->param(headercontent => $config{headercontent}); + if ($config{discussion}) { + $template->param(discussionlink => htmllink($page, "Discussion", 1, 1)); + } + + if (exists $hooks{pagetemplate}) { + foreach my $id (keys %{$hooks{pagetemplate}}) { + $hooks{pagetemplate}{$id}{call}->($page, $template); + } + } $template->param( title => $title, @@ -214,7 +190,6 @@ sub genpage ($$$) { #{{{ parentlinks => [parentlinks($page)], content => $content, backlinks => [backlinks($page)], - discussionlink => htmllink($page, "Discussion", 1, 1), mtime => scalar(gmtime($mtime)), styleurl => styleurl($page), ); @@ -250,9 +225,14 @@ sub findlinks ($$) { #{{{ while ($content =~ /(?( + page => $page, + content => $content + ); + } + } $links{$page}=[findlinks($content, $page)]; - delete $depends{$page}; $content=linkify($content, $page); $content=preprocess($page, $content); @@ -468,9 +457,9 @@ FILE: foreach my $file (@files) { $hooks{delete}{$id}{call}->(@del); } } - if (%rendered && exists $hooks{render}) { - foreach my $id (keys %{$hooks{render}}) { - $hooks{render}{$id}{call}->(keys %rendered); + if (%rendered && exists $hooks{change}) { + foreach my $id (keys %{$hooks{change}}) { + $hooks{change}{$id}{call}->(keys %rendered); } } } #}}}