Skip to content
Snippets Groups Projects
Commit 96b84e4c authored by Kamil Trzcinski's avatar Kamil Trzcinski
Browse files

Use avatars from GitLab

Rewrite Gravatar URLs if needed in order to have images in different size
parent 9cf47eb6
No related branches found
No related tags found
No related merge requests found
.avatar {
float: left;
margin-right: 12px;
width: 40px;
height: 40px;
padding: 0;
@include border-radius($avatar_radius);
&.avatar-inline {
float: none;
margin-left: 4px;
margin-bottom: 2px;
&.s16 { margin-right: 4px; }
&.s24 { margin-right: 4px; }
}
&.avatar-tile {
@include border-radius(0px);
}
&.s16 { width: 16px; height: 16px; margin-right: 6px; }
&.s24 { width: 24px; height: 24px; margin-right: 8px; }
&.s26 { width: 26px; height: 26px; margin-right: 8px; }
&.s32 { width: 32px; height: 32px; margin-right: 10px; }
&.s60 { width: 60px; height: 60px; margin-right: 12px; }
&.s90 { width: 90px; height: 90px; margin-right: 15px; }
&.s160 { width: 160px; height: 160px; margin-right: 20px; }
}
Loading
Loading
@@ -37,3 +37,8 @@ $border_warning: #EB9532;
$font-size-base: 13px !default;
$nav-pills-active-link-hover-bg: $bg_style_color;
$pagination-active-bg: $bg_style_color;
/**
* Avatar variables
*/
$avatar_radius: 50%;
Loading
Loading
@@ -3,18 +3,6 @@ module ApplicationHelper
image_tag 'loader.gif', alt: 'Loading'
end
 
def gravatar_icon(user_email = '', size = nil)
size = 40 if size.nil? || size <= 0
if !GitlabCi.config.gravatar.enabled || user_email.blank?
'no_avatar.png'
else
gravatar_url = request.ssl? || GitlabCi.config.gitlab_ci.https ? GitlabCi.config.gravatar.ssl_url : GitlabCi.config.gravatar.plain_url
user_email.strip!
sprintf gravatar_url, hash: Digest::MD5.hexdigest(user_email.downcase), size: size
end
end
# Navigation link helper
#
# Returns an `li` element with an 'active' class if the supplied
Loading
Loading
module UserHelper
def user_avatar_url(user = nil, size = nil, default = 'identicon')
size = 40 if size.nil? || size <= 0
if user.blank? || user.avatar_url.blank?
'no_avatar.png'
elsif /^(http(s?):\/\/(www|secure)\.gravatar\.com\/avatar\/(\w*))/ =~ user.avatar_url
Regexp.last_match[0] + "?s=#{size}&d=#{default}"
else
user.avatar_url
end
end
end
Loading
Loading
@@ -21,7 +21,7 @@
%li
= link_to user_sessions_path do
.profile-holder
= image_tag gravatar_icon(current_user.email, 64), alt: ''
= image_tag user_avatar_url(current_user, 64), class: 'avatar s32', alt: ''
%span= current_user.name
%li
= link_to user_sessions_path, class: "logout", method: :delete do
Loading
Loading
= image_tag gravatar_icon(current_user.email, 120), class: 'img-polaroid', alt: ''
= image_tag user_avatar_url(current_user, 90), class: 'avatar avatar-inline avatar-tile s90', alt: ''
%h3
Hi, #{@user.name}
 
Loading
Loading
Loading
Loading
@@ -32,11 +32,6 @@ defaults: &defaults
# The location where build traces are stored (default: builds/). Relative paths are relative to Rails.root
# builds_path: builds/
 
gravatar:
enabled: true
plain_url: "http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=mm"
ssl_url: "https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm"
## Backup settings
backup:
path: "tmp/backups" # Relative paths are relative to Rails.root (default: tmp/backups/)
Loading
Loading
Loading
Loading
@@ -45,14 +45,6 @@ Settings.gitlab_ci['builds_path'] = File.expand_path(Settings.gitlab_ci[
# Compatibility with old config
Settings['gitlab_server_urls'] ||= Settings['allowed_gitlab_urls']
 
#
# Gravatar
#
Settings['gravatar'] ||= Settingslogic.new({})
Settings.gravatar['enabled'] = true if Settings.gravatar['enabled'].nil?
Settings.gravatar['plain_url'] ||= 'http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=mm'
Settings.gravatar['ssl_url'] ||= 'https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm'
#
# Backup
#
Loading
Loading
require 'spec_helper'
 
describe ApplicationHelper do
describe "gravatar_icon" do
let(:user_email) { 'user@email.com' }
it "should return a generic avatar path when Gravatar is disabled" do
GitlabCi.config.gravatar.stub(:enabled).and_return(false)
gravatar_icon(user_email).should == 'no_avatar.png'
end
it "should return a generic avatar path when email is blank" do
gravatar_icon('').should == 'no_avatar.png'
end
context "with no ssl" do
let!(:request) {
request_double = double("Request")
request_double.stub(:ssl?).and_return(false)
request_double
}
it "should return default gravatar url" do
gravatar_icon(user_email).should match('http://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118')
end
it "should return custom gravatar path when gravatar_url is set" do
GitlabCi.config.gravatar.stub(:plain_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
gravatar_icon(user_email, 64).should match(/\?s=64/)
end
it "should use default size when size is wrong" do
gravatar_icon(user_email, nil).should match(/\?s=40/)
end
it "should be case insensitive" do
gravatar_icon(user_email).should == gravatar_icon(user_email.upcase + " ")
end
end
context "with ssl" do
let!(:request) {
request_double = double("Request")
request_double.stub(:ssl?).and_return(true)
request_double
}
it "should use SSL when appropriate" do
gravatar_icon(user_email).should match('https://secure.gravatar.com')
end
end
end
describe "#duration_in_words" do
it "returns minutes and seconds" do
intervals_in_words = {
Loading
Loading
require 'spec_helper'
describe UserHelper do
describe :user_avatar_url do
let (:user) { User.new({'avatar_url' => avatar_url}) }
context 'no avatar' do
let (:avatar_url) { nil }
it 'should return a generic avatar' do
user_avatar_url(user).should == 'no_avatar.png'
end
end
context 'plain gravatar' do
let (:base_url) { 'http://www.gravatar.com/avatar/abcdefgh' }
let (:avatar_url) { "#{base_url}?s=40&d=mm" }
it 'should return gravatar with default size' do
user_avatar_url(user).should == "#{base_url}?s=40&d=identicon"
end
it 'should return gravatar with custom size' do
user_avatar_url(user, 120).should == "#{base_url}?s=120&d=identicon"
end
end
context 'secure gravatar' do
let (:base_url) { 'https://secure.gravatar.com/avatar/abcdefgh' }
let (:avatar_url) { "#{base_url}?s=40&d=mm" }
it 'should return gravatar with default size' do
user_avatar_url(user).should == "#{base_url}?s=40&d=identicon"
end
it 'should return gravatar with custom size' do
user_avatar_url(user, 120).should == "#{base_url}?s=120&d=identicon"
end
end
context 'custom avatar' do
let (:avatar_url) { 'http://example.local/avatar.png' }
it 'should return custom avatar' do
user_avatar_url(user).should == avatar_url
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment