# Returns a link to edit user's avatar if avatars are enabled
def avatar_edit_link(user, options={})
if Setting.gravatar_enabled?
- url = "https://gravatar.com"
+ url = Redmine::Configuration['avatar_server_url']
link_to avatar(user, {:title => l(:button_edit)}.merge(options)), url, :target => '_blank'
end
end
<p><%= setting_select :user_format, @options[:user_format] %></p>
-<p><%= setting_check_box :gravatar_enabled, :data => {:enables => '#settings_gravatar_default'} %></p>
+<p><%= setting_check_box :gravatar_enabled, :data => {:enables => '#settings_gravatar_default'} %>
+<em class="info"><%= t(:text_avatar_server_config_html, :url => Redmine::Configuration['avatar_server_url']) %></em></p>
<p><%= setting_select :gravatar_default, gravatar_default_setting_options, :blank => :label_none %></p>
# allowed values: :memory, :file, :memcache
#openid_authentication_store: :memory
+ # URL of the avatar server
+ #
+ # By default, Redmine uses Gravatar as the avatar server for displaying
+ # user icons. You can switch to another Gravatar-compatible server such
+ # as Libravatar and opensource servers listed on
+ # https://wiki.libravatar.org/running_your_own/
+ #
+ # URL of each avatar is: #{avatar_server_url}/avatar/#{hash}
+ #
+ # Examples:
+ # avatar_server_url: https://www.gravatar.com # default
+ # avatar_server_url: https://seccdn.libravatar.org
+ #
+ avatar_server_url:
+
# specific configuration options for production environment
# that overrides the default ones
production:
text_project_closed: This project is closed and read-only.
text_turning_multiple_off: "If you disable multiple values, multiple values will be removed in order to preserve only one value per item."
text_select_apply_tracker: "Select tracker"
+ text_avatar_server_config_html: The current avatar server is <a href="%{url}">%{url}</a>. You can configure it in config/configuration.yml.
+
default_role_manager: Manager
default_role_developer: Developer
# Returns the base Gravatar URL for the given email hash
def gravatar_api_url(hash)
- 'https://www.gravatar.com/avatar/' + hash.to_s
+ +"#{Redmine::Configuration['avatar_server_url']}/avatar/#{hash}"
end
# Return the gravatar URL for the given email address.
# Configuration default values
@defaults = {
+ 'avatar_server_url' => 'https://www.gravatar.com',
'email_delivery' => nil,
'max_concurrent_ajax_uploads' => 2
}
def test_my_account_with_avatar_enabled_should_link_to_edit_avatar
with_settings :gravatar_enabled => '1' do
- get :account
- assert_response :success
- assert_select 'a[href=?] img.gravatar', 'https://gravatar.com'
+ Redmine::Configuration.with 'avatar_server_url' => 'https://gravatar.com' do
+ get :account
+ assert_response :success
+ assert_select 'a[href=?] img.gravatar', 'https://gravatar.com'
+ end
end
end
end
end
+ def test_avatar_server_url
+ to_test = {
+ 'https://www.gravatar.com' => %r|https://www.gravatar.com/avatar/\h{32}|,
+ 'https://seccdn.libravatar.org' => %r|https://seccdn.libravatar.org/avatar/\h{32}|,
+ 'http://localhost:8080' => %r|http://localhost:8080/avatar/\h{32}|,
+ }
+ with_settings :gravatar_enabled => '1' do
+ to_test.each do |url, expected|
+ Redmine::Configuration.with 'avatar_server_url' => url do
+ assert_match expected, avatar('<jsmith@somenet.foo>')
+ end
+ end
+ end
+ end
+
def test_link_to_user
user = User.find(2)
result = link_to("John Smith", "/users/2", :class => "user active")