From c46bcb425af0948ac59581d6ba7b477826d83ae3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 23 Jun 2010 15:32:27 -0400 Subject: Add new optional field usershort to rcs_recentchanges. Now the git plugin supports commits with author fields that look like: Author: http://my.openid/ Then in recentchanges, the short username will be displayed, linking to the openid. Particularly useful for the horrible google openids, of course. --- IkiWiki/Plugin/git.pm | 15 +++++++++++---- IkiWiki/Plugin/recentchanges.pm | 3 +-- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'IkiWiki') diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm index 222692eda..a43b85920 100644 --- a/IkiWiki/Plugin/git.pm +++ b/IkiWiki/Plugin/git.pm @@ -342,8 +342,9 @@ sub parse_diff_tree ($) { $ci{ "${who}_epoch" } = $epoch; $ci{ "${who}_tz" } = $tz; - if ($name =~ m/^[^<]+\s+<([^@>]+)/) { - $ci{"${who}_username"} = $1; + if ($name =~ m/^([^<]+)\s+<([^@>]+)/) { + $ci{"${who}_name"} = $1; + $ci{"${who}_username"} = $2; } elsif ($name =~ m/^([^<]+)\s+<>$/) { $ci{"${who}_username"} = $1; @@ -588,9 +589,14 @@ sub rcs_recentchanges ($) { push @messages, { line => $line }; } - my $user=$ci->{'author_username'}; + my $user=$ci->{'author_name'}; + my $usershort=$ci->{'author_username'}; my $web_commit = ($ci->{'author'} =~ /\@web>/); - + + if ($usershort =~ /:\/\//) { + $usershort=undef; # url; not really short + } + # compatability code for old web commit messages if (! $web_commit && defined $messages[0] && @@ -603,6 +609,7 @@ sub rcs_recentchanges ($) { push @rets, { rev => $sha1, user => $user, + usershort => $usershort, committype => $web_commit ? "web" : "git", when => $when, message => [@messages], diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index e546e4702..9f188cbff 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -114,12 +114,11 @@ sub store ($$$) { ]; push @{$change->{pages}}, { link => '...' } if $is_excess; - # See if the committer is an openid. $change->{author}=$change->{user}; my $oiduser=eval { IkiWiki::openiduser($change->{user}) }; if (defined $oiduser) { $change->{authorurl}=$change->{user}; - $change->{user}=$oiduser; + $change->{user}=defined $change->{usershort} ? $change->{usershort} : $oiduser; } elsif (length $config{cgiurl}) { $change->{authorurl} = IkiWiki::cgiurl( -- cgit v1.2.3