clear sandbox/test commit
[ikiwiki.git] / IkiWiki / Plugin / recentchangesdiff.pm
blob71297572d7b74a5042e18fd93128a4dca773e170
1 #!/usr/bin/perl
2 package IkiWiki::Plugin::recentchangesdiff;
4 use warnings;
5 use strict;
6 use IkiWiki 3.00;
7 use HTML::Entities;
9 my $maxlines=200;
11 sub import {
12 hook(type => "getsetup", id => "recentchangesdiff",
13 call => \&getsetup);
14 hook(type => "pagetemplate", id => "recentchangesdiff",
15 call => \&pagetemplate);
18 sub getsetup () {
19 return
20 plugin => {
21 safe => 1,
22 rebuild => 1,
26 sub pagetemplate (@) {
27 my %params=@_;
28 my $template=$params{template};
29 if ($config{rcs} && exists $params{rev} && length $params{rev} &&
30 $template->query(name => "diff")) {
31 my @lines=IkiWiki::rcs_diff($params{rev}, $maxlines+1);
32 if (@lines) {
33 my $diff;
34 if (@lines > $maxlines) {
35 $diff=join("", @lines[0..($maxlines-1)])."\n".
36 gettext("(Diff truncated)");
38 else {
39 $diff=join("", @lines);
41 # escape html
42 $diff = encode_entities($diff);
43 # escape links and preprocessor stuff
44 $diff = encode_entities($diff, '\[\]');
45 $template->param(diff => $diff);