diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-01-29 01:48:55 -0500 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-01-29 01:48:55 -0500 |
commit | 21f44880cdd8f23264b2416bf39793aadcb87df6 (patch) | |
tree | 90507c97f7de0772b2da7418a8db0eafeba7bd1f /IkiWiki | |
parent | d72753e100b018dfa82feb06e06fc2ad2c61f4ed (diff) | |
download | ikiwiki-21f44880cdd8f23264b2416bf39793aadcb87df6.tar ikiwiki-21f44880cdd8f23264b2416bf39793aadcb87df6.tar.gz |
non-tabular recentchanges display
Doesn't look as good as the old table, but works as a rss feed.
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/CGI.pm | 53 | ||||
-rw-r--r-- | IkiWiki/Plugin/recentchanges.pm | 23 |
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); |