Simple implementation of picon that only relies on the indiana.edu
database.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Giuseppe Bilotta 2009-06-30 00:00:53 +02:00 коммит произвёл Junio C Hamano
Родитель 5a371b7bbb
Коммит 679a1a1d42
1 изменённых файлов: 27 добавлений и 7 удалений

Просмотреть файл

@ -378,15 +378,18 @@ our %feature = (
# shortlog or commit will display an avatar associated with # shortlog or commit will display an avatar associated with
# the email of the committer(s) and/or author(s). # the email of the committer(s) and/or author(s).
# Currently only the gravatar provider is available, and it # Currently available providers are gravatar and picon.
# depends on Digest::MD5. If an unknown provider is specified, # If an unknown provider is specified, the feature is disabled.
# the feature is disabled.
# Gravatar depends on Digest::MD5.
# Picon currently relies on the indiana.edu database.
# To enable system wide have in $GITWEB_CONFIG # To enable system wide have in $GITWEB_CONFIG
# $feature{'avatar'}{'default'} = ['gravatar']; # $feature{'avatar'}{'default'} = ['<provider>'];
# where <provider> is either gravatar or picon.
# To have project specific config enable override in $GITWEB_CONFIG # To have project specific config enable override in $GITWEB_CONFIG
# $feature{'avatar'}{'override'} = 1; # $feature{'avatar'}{'override'} = 1;
# and in project config gitweb.avatar = gravatar; # and in project config gitweb.avatar = <provider>;
'avatar' => { 'avatar' => {
'sub' => \&feature_avatar, 'sub' => \&feature_avatar,
'override' => 0, 'override' => 0,
@ -853,6 +856,8 @@ our @snapshot_fmts = gitweb_get_feature('snapshot');
our ($git_avatar) = gitweb_get_feature('avatar'); our ($git_avatar) = gitweb_get_feature('avatar');
if ($git_avatar eq 'gravatar') { if ($git_avatar eq 'gravatar') {
$git_avatar = '' unless (eval { require Digest::MD5; 1; }); $git_avatar = '' unless (eval { require Digest::MD5; 1; });
} elsif ($git_avatar eq 'picon') {
# no dependencies
} else { } else {
$git_avatar = ''; $git_avatar = '';
} }
@ -1520,6 +1525,20 @@ sub format_subject_html {
# given page, there's no risk for cache conflicts. # given page, there's no risk for cache conflicts.
our %avatar_cache = (); our %avatar_cache = ();
# Compute the picon url for a given email, by using the picon search service over at
# http://www.cs.indiana.edu/picons/search.html
sub picon_url {
my $email = lc shift;
if (!$avatar_cache{$email}) {
my ($user, $domain) = split('@', $email);
$avatar_cache{$email} =
"http://www.cs.indiana.edu/cgi-pub/kinzler/piconsearch.cgi/" .
"$domain/$user/" .
"users+domains+unknown/up/single";
}
return $avatar_cache{$email};
}
# Compute the gravatar url for a given email, if it's not in the cache already. # Compute the gravatar url for a given email, if it's not in the cache already.
# Gravatar stores only the part of the URL before the size, since that's the # Gravatar stores only the part of the URL before the size, since that's the
# one computationally more expensive. This also allows reuse of the cache for # one computationally more expensive. This also allows reuse of the cache for
@ -1544,9 +1563,10 @@ sub git_get_avatar {
my $url = ""; my $url = "";
if ($git_avatar eq 'gravatar') { if ($git_avatar eq 'gravatar') {
$url = gravatar_url($email, $size); $url = gravatar_url($email, $size);
} elsif ($git_avatar eq 'picon') {
$url = picon_url($email);
} }
# Currently only gravatars are supported, but other forms such as # Other providers can be added by extending the if chain, defining $url
# picons can be added by putting an else up here and defining $url
# as needed. If no variant puts something in $url, we assume avatars # as needed. If no variant puts something in $url, we assume avatars
# are completely disabled/unavailable. # are completely disabled/unavailable.
if ($url) { if ($url) {