Feature #9112 » avatar_service_url_configuration-v3.patch
| app/helpers/application_helper.rb | ||
|---|---|---|
| 1507 | 1507 |
# Returns a link to edit user's avatar if avatars are enabled |
| 1508 | 1508 |
def avatar_edit_link(user, options={})
|
| 1509 | 1509 |
if Setting.gravatar_enabled? |
| 1510 |
url = "https://gravatar.com"
|
|
| 1510 |
url = avatar_server_url
|
|
| 1511 | 1511 |
link_to avatar(user, {:title => l(:button_edit)}.merge(options)), url, :target => '_blank'
|
| 1512 | 1512 |
end |
| 1513 | 1513 |
end |
| config/configuration.yml.example | ||
|---|---|---|
| 209 | 209 |
# allowed values: :memory, :file, :memcache |
| 210 | 210 |
#openid_authentication_store: :memory |
| 211 | 211 | |
| 212 |
# URL of the avatar service |
|
| 213 |
# |
|
| 214 |
# By default, Redmine uses Gravatar as the avatar service for displaying |
|
| 215 |
# the user's icon. You can swich to another Gravatar-compatible service |
|
| 216 |
# such as Libravatar. |
|
| 217 |
# |
|
| 218 |
# URL of each avatar is: #{avatar_server_url}/avatar/#{hash}
|
|
| 219 |
# |
|
| 220 |
# Examples: |
|
| 221 |
# avatar_server_url: https://www.gravatar.com # default |
|
| 222 |
# avatar_server_url: https://seccdn.libravatar.org |
|
| 223 |
avatar_server_url: |
|
| 224 | ||
| 212 | 225 |
# specific configuration options for production environment |
| 213 | 226 |
# that overrides the default ones |
| 214 | 227 |
production: |
| lib/plugins/gravatar/lib/gravatar.rb | ||
|---|---|---|
| 63 | 63 | |
| 64 | 64 |
# Returns the base Gravatar URL for the given email hash |
| 65 | 65 |
def gravatar_api_url(hash) |
| 66 |
'https://www.gravatar.com/avatar/' + hash.to_s
|
|
| 66 |
+"#{avatar_server_url}/avatar/#{hash}"
|
|
| 67 | 67 |
end |
| 68 | 68 | |
| 69 | 69 |
# Return the gravatar URL for the given email address. |
| ... | ... | |
| 83 | 83 |
end |
| 84 | 84 |
end |
| 85 | 85 | |
| 86 |
def avatar_server_url |
|
| 87 |
@avatar_server_url ||= Redmine::Configuration['avatar_server_url'] || 'https://www.gravatar.com' |
|
| 88 |
end |
|
| 89 | ||
| 86 | 90 |
end |
| 87 | 91 | |
| 88 | 92 |
end |
| test/functional/my_controller_test.rb | ||
|---|---|---|
| 367 | 367 |
with_settings :gravatar_enabled => '1' do |
| 368 | 368 |
get :account |
| 369 | 369 |
assert_response :success |
| 370 |
assert_select 'a[href=?] img.gravatar', 'https://gravatar.com' |
|
| 370 |
assert_select 'a[href=?] img.gravatar', |
|
| 371 |
Redmine::Configuration['avatar_server_url'] || 'https://www.gravatar.com' |
|
| 371 | 372 |
end |
| 372 | 373 |
end |
| 373 | 374 | |
| test/helpers/application_helper_test.rb | ||
|---|---|---|
| 1529 | 1529 |
end |
| 1530 | 1530 |
end |
| 1531 | 1531 | |
| 1532 |
def test_avatar_server_url |
|
| 1533 |
to_test = {
|
|
| 1534 |
'https://seccdn.libravatar.org' => %r|https://seccdn.libravatar.org/avatar/\h{32}|,
|
|
| 1535 |
'http://localhost:8080' => %r|http://localhost:8080/avatar/\h{32}|,
|
|
| 1536 |
# gravatar.com is used by default |
|
| 1537 |
nil => %r|https://www.gravatar.com/avatar/\h{32}|
|
|
| 1538 |
} |
|
| 1539 |
with_settings :gravatar_enabled => '1' do |
|
| 1540 |
to_test.each do |url, expected| |
|
| 1541 |
@avatar_server_url = nil |
|
| 1542 |
Redmine::Configuration.with 'avatar_server_url' => url do |
|
| 1543 |
assert_match expected, avatar('<jsmith@somenet.foo>')
|
|
| 1544 |
end |
|
| 1545 |
end |
|
| 1546 |
end |
|
| 1547 |
ensure |
|
| 1548 |
@avatar_server_url = nil |
|
| 1549 |
end |
|
| 1550 | ||
| 1532 | 1551 |
def test_link_to_user |
| 1533 | 1552 |
user = User.find(2) |
| 1534 | 1553 |
result = link_to("John Smith", "/users/2", :class => "user active")
|