зеркало из https://github.com/microsoft/git.git
gitweb: picon avatar provider
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:
Родитель
5a371b7bbb
Коммит
679a1a1d42
|
@ -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) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче