summaryrefslogtreecommitdiff
path: root/IkiWiki
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki')
-rw-r--r--IkiWiki/CGI.pm53
-rw-r--r--IkiWiki/Plugin/recentchanges.pm23
2 files changed, 17 insertions, 59 deletions
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index 55ee5d86a..c8c1b63dd 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -84,53 +84,6 @@ sub decode_cgi_utf8 ($) { #{{{
}
} #}}}
-sub cgi_recentchanges ($) { #{{{
- my $q=shift;
-
- # Optimisation: building recentchanges means calculating lots of
- # links. Memoizing htmllink speeds it up a lot (can't be memoized
- # during page builds as the return values may change, but they
- # won't here.)
- eval q{use Memoize};
- error($@) if $@;
- memoize("htmllink");
-
- eval q{use Time::Duration};
- error($@) if $@;
-
- my $changelog=[rcs_recentchanges(100)];
- foreach my $change (@$changelog) {
- $change->{when} = concise(ago(time - $change->{when}));
-
- $change->{user} = userlink($change->{user});
-
- my $is_excess = exists $change->{pages}[10]; # limit pages to first 10
- delete @{$change->{pages}}[10 .. @{$change->{pages}}] if $is_excess;
- $change->{pages} = [
- map {
- $_->{link} = htmllink("", "", $_->{page},
- noimageinline => 1,
- linktext => pagetitle($_->{page}));
- $_;
- } @{$change->{pages}}
- ];
- push @{$change->{pages}}, { link => '...' } if $is_excess;
- }
-
- my $template=template("recentchanges.tmpl");
- $template->param(
- title => "RecentChanges",
- indexlink => indexlink(),
- wikiname => $config{wikiname},
- changelog => $changelog,
- baseurl => baseurl(),
- );
- run_hooks(pagetemplate => sub {
- shift->(page => "", destpage => "", template => $template);
- });
- print $q->header(-charset => 'utf-8'), $template->output;
-} #}}}
-
# Check if the user is signed in. If not, redirect to the signin form and
# save their place to return to later.
sub needsignin ($$) { #{{{
@@ -661,12 +614,6 @@ sub cgi (;$$) { #{{{
}
}
- # Things that do not need a session.
- if ($do eq 'recentchanges') {
- cgi_recentchanges($q);
- return;
- }
-
# Need to lock the wiki before getting a session.
lockwiki();
diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm
index 6b36ea4c8..fb9841ffd 100644
--- a/IkiWiki/Plugin/recentchanges.pm
+++ b/IkiWiki/Plugin/recentchanges.pm
@@ -67,14 +67,25 @@ sub store ($$) { #{{{
];
push @{$change->{pages}}, { link => '...' } if $is_excess;
+ # Take the first line of the commit message as a summary.
+ my $m=shift @{$change->{message}};
+ $change->{summary}=$m->{line};
+
+ # See if the committer is an openid.
+ my $oiduser=IkiWiki::openiduser($change->{user});
+ if (defined $oiduser) {
+ $change->{authorurl}=$change->{user};
+ $change->{user}=$oiduser;
+ }
+ elsif (length $config{url}) {
+ $change->{authorurl}="$config{url}/".
+ (length $config{userdir} ? "$config{userdir}/" : "").
+ $change->{user};
+ }
+
# Fill out a template with the change info.
my $template=template("change.tmpl", blind_cache => 1);
- $template->param(
- user => IkiWiki::userlink($change->{user}),
- when => IkiWiki::displaytime($change->{when}, "%X %x"),
- pages => $change->{pages},
- message => $change->{message},
- );
+ $template->param(%$change);
$template->param(baseurl => "$config{url}/") if length $config{url};
IkiWiki::run_hooks(pagetemplate => sub {
shift->(page => $page, destpage => $page, template => $template);