Merge pull request #2007 from Partugal/patch-custom-gravatar
Allow using a custom Gravatar URL. Default is still set to the Gravatar.com service, but allows override for a custom gravatar-ish service.
This commit is contained in:
commit
945fe846a1
|
@ -76,7 +76,7 @@ class CommitDecorator < ApplicationDecorator
|
||||||
source_name = send "#{options[:source]}_name".to_sym
|
source_name = send "#{options[:source]}_name".to_sym
|
||||||
source_email = send "#{options[:source]}_email".to_sym
|
source_email = send "#{options[:source]}_email".to_sym
|
||||||
text = if options[:avatar]
|
text = if options[:avatar]
|
||||||
avatar = h.image_tag h.gravatar_icon(source_email, options[:size]), class: "avatar #{"s#{options[:size]}" if options[:size]}", width: options[:size]
|
avatar = h.image_tag h.gravatar_icon(source_email, options[:size]), class: "avatar #{"s#{options[:size]}" if options[:size]}", width: options[:size], alt: ""
|
||||||
%Q{#{avatar} <span class="commit-#{options[:source]}-name">#{source_name}</span>}
|
%Q{#{avatar} <span class="commit-#{options[:source]}-name">#{source_name}</span>}
|
||||||
else
|
else
|
||||||
source_name
|
source_name
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
require 'digest/md5'
|
require 'digest/md5'
|
||||||
|
require 'uri'
|
||||||
|
|
||||||
module ApplicationHelper
|
module ApplicationHelper
|
||||||
|
|
||||||
|
@ -30,13 +31,15 @@ module ApplicationHelper
|
||||||
args.any? { |v| v.to_s.downcase == action_name }
|
args.any? { |v| v.to_s.downcase == action_name }
|
||||||
end
|
end
|
||||||
|
|
||||||
def gravatar_icon(user_email = '', size = 40)
|
def gravatar_icon(user_email = '', size = nil)
|
||||||
|
size = 40 if size.nil? || size <= 0
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue