allow customize gravatar url

This commit is contained in:
Sergey Linnik 2012-12-07 00:44:22 +04:00
parent 2c37fa381e
commit 0aa7f79ca4
4 changed files with 36 additions and 2 deletions

View file

@ -1,4 +1,5 @@
require 'digest/md5' require 'digest/md5'
require 'uri'
module ApplicationHelper module ApplicationHelper
@ -36,9 +37,9 @@ module ApplicationHelper
if Gitlab.config.disable_gravatar? || user_email.blank? if Gitlab.config.disable_gravatar? || user_email.blank?
'no_avatar.png' 'no_avatar.png'
else else
gravatar_prefix = request.ssl? ? "https://secure" : "http://www" gravatar_url = request.ssl? ? Gitlab.config.gravatar_ssl_url : Gitlab.config.gravatar_url
user_email.strip! user_email.strip!
"#{gravatar_prefix}.gravatar.com/avatar/#{Digest::MD5.hexdigest(user_email.downcase)}?s=#{size}&d=mm" sprintf(gravatar_url, {:hash => Digest::MD5.hexdigest(user_email.downcase), :email => URI.escape(user_email), :size => size})
end end
end end

View file

@ -24,6 +24,8 @@ app:
# backup_path: "/vol/backups" # default: Rails.root + backups/ # backup_path: "/vol/backups" # default: Rails.root + backups/
# backup_keep_time: 604800 # default: 0 (forever) (in seconds) # backup_keep_time: 604800 # default: 0 (forever) (in seconds)
# disable_gravatar: true # default: false - Disable user avatars from Gravatar.com # disable_gravatar: true # default: false - Disable user avatars from Gravatar.com
# gravatar_url: "http://" # default: http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=mm
# gravatar_ssl_url: "https://" # default: https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm
# #

View file

@ -145,5 +145,14 @@ class Settings < Settingslogic
def disable_gravatar? def disable_gravatar?
app['disable_gravatar'] || false app['disable_gravatar'] || false
end end
def gravatar_url
app['gravatar_url'] || 'http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=mm'
end
def gravatar_ssl_url
app['gravatar_ssl_url'] || 'https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm'
end
end end
end end

View file

@ -51,14 +51,36 @@ describe ApplicationHelper do
gravatar_icon('').should == 'no_avatar.png' gravatar_icon('').should == 'no_avatar.png'
end end
it "should return default gravatar url" do
stub!(:request).and_return(double(:ssl? => false))
gravatar_icon(user_email).should match('http://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118')
end
it "should use SSL when appropriate" do it "should use SSL when appropriate" do
stub!(:request).and_return(double(:ssl? => true)) stub!(:request).and_return(double(:ssl? => true))
gravatar_icon(user_email).should match('https://secure.gravatar.com') gravatar_icon(user_email).should match('https://secure.gravatar.com')
end end
it "should return custom gravatar path when gravatar_url is set" do
stub!(:request).and_return(double(:ssl? => false))
Gitlab.config.stub(:gravatar_url).and_return('http://example.local/?s=%{size}&hash=%{hash}')
gravatar_icon(user_email, 20).should == 'http://example.local/?s=20&hash=b58c6f14d292556214bd64909bcdb118'
end
it "should accept a custom size" do it "should accept a custom size" do
stub!(:request).and_return(double(:ssl? => false)) stub!(:request).and_return(double(:ssl? => false))
gravatar_icon(user_email, 64).should match(/\?s=64/) gravatar_icon(user_email, 64).should match(/\?s=64/)
end end
it "should use default size when size is wrong" do
stub!(:request).and_return(double(:ssl? => false))
gravatar_icon(user_email, nil).should match(/\?s=40/)
end
it "should be case insensitive" do
stub!(:request).and_return(double(:ssl? => false))
gravatar_icon(user_email).should == gravatar_icon(user_email.upcase + " ")
end
end end
end end