X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/2c5fbe844b3137b2e3f84d5f1d1ea9ef37564852..3d671ea8c1df4534d8ffa59b235dd6ded99bb13f:/IkiWiki/Plugin/editdiff.pm?ds=sidebyside diff --git a/IkiWiki/Plugin/editdiff.pm b/IkiWiki/Plugin/editdiff.pm index 46eb1168e..d8f53a42e 100644 --- a/IkiWiki/Plugin/editdiff.pm +++ b/IkiWiki/Plugin/editdiff.pm @@ -4,16 +4,26 @@ package IkiWiki::Plugin::editdiff; use warnings; use strict; -use IkiWiki 2.00; +use IkiWiki 3.00; use HTML::Entities; use IPC::Open2; -sub import { #{{{ +sub import { + hook(type => "getsetup", id => "editdiff", call => \&getsetup); hook(type => "formbuilder_setup", id => "editdiff", call => \&formbuilder_setup); -} #}}} +} -sub diff ($$) { #{{{ +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 0, + section => "web", + }, +} + +sub diff ($$) { my $orig=shift; my $content=shift; @@ -25,7 +35,7 @@ sub diff ($$) { #{{{ print DIFFIN $content; close DIFFIN; - my $ret; + my $ret=''; while () { if (defined $ret) { $ret.=$_; @@ -41,17 +51,16 @@ sub diff ($$) { #{{{ return "couldn't run diff\n" if $sigpipe; return "
".encode_entities($ret)."
"; -} #}}} +} -sub formbuilder_setup { #{{{ +sub formbuilder_setup { my %params=@_; my $form=$params{form}; - my $page=$form->field("page"); - return if $form->title ne "editpage" - || $form->field("do") ne "edit"; + return if ! defined $form->field("do") || $form->field("do") ne "edit"; - $page = IkiWiki::titlepage(IkiWiki::possibly_foolish_untaint($page)); + my $page=$form->field("page"); + $page = IkiWiki::possibly_foolish_untaint($page); return unless exists $pagesources{$page}; push @{$params{buttons}}, "Diff"; @@ -64,6 +73,6 @@ sub formbuilder_setup { #{{{ my $diff = diff(srcfile($pagesources{$page}), $content); $form->tmpl_param("page_preview", $diff); } -} #}}} +} 1