diff options
author | Go MAEDA <maeda@farend.jp> | 2019-05-04 15:59:50 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2019-05-04 15:59:50 +0000 |
commit | bf0246ce83b3fe1dcc986bc4fc6acbc513330edd (patch) | |
tree | c31ffd9c10b608d8b48c4900bf1afa4c958a3678 | |
parent | 400e1ca2ffffa9f2d4383e30c8c2c0e0b02c964b (diff) | |
download | redmine-bf0246ce83b3fe1dcc986bc4fc6acbc513330edd.tar.gz redmine-bf0246ce83b3fe1dcc986bc4fc6acbc513330edd.zip |
Add avatar_server_url configuration option in order to support Libravatar (#9112).
Patch by Go MAEDA.
git-svn-id: http://svn.redmine.org/redmine/trunk@18124 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/helpers/application_helper.rb | 2 | ||||
-rw-r--r-- | app/views/settings/_display.html.erb | 3 | ||||
-rw-r--r-- | config/configuration.yml.example | 15 | ||||
-rw-r--r-- | config/locales/en.yml | 2 | ||||
-rw-r--r-- | lib/plugins/gravatar/lib/gravatar.rb | 2 | ||||
-rw-r--r-- | lib/redmine/configuration.rb | 1 | ||||
-rw-r--r-- | test/functional/my_controller_test.rb | 8 | ||||
-rw-r--r-- | test/helpers/application_helper_test.rb | 15 |
8 files changed, 42 insertions, 6 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3712b8a05..832c22b13 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1507,7 +1507,7 @@ module ApplicationHelper # 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 diff --git a/app/views/settings/_display.html.erb b/app/views/settings/_display.html.erb index 3b62eabd8..30e6525f7 100644 --- a/app/views/settings/_display.html.erb +++ b/app/views/settings/_display.html.erb @@ -19,7 +19,8 @@ <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> diff --git a/config/configuration.yml.example b/config/configuration.yml.example index bff4c9740..d11bc6146 100644 --- a/config/configuration.yml.example +++ b/config/configuration.yml.example @@ -209,6 +209,21 @@ default: # 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: diff --git a/config/locales/en.yml b/config/locales/en.yml index 087e74939..79f47cb6c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1202,6 +1202,8 @@ en: 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 diff --git a/lib/plugins/gravatar/lib/gravatar.rb b/lib/plugins/gravatar/lib/gravatar.rb index 7c2fca6d3..aa8500ba9 100644 --- a/lib/plugins/gravatar/lib/gravatar.rb +++ b/lib/plugins/gravatar/lib/gravatar.rb @@ -63,7 +63,7 @@ module GravatarHelper # 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. diff --git a/lib/redmine/configuration.rb b/lib/redmine/configuration.rb index 4ecd4766b..88501e40b 100644 --- a/lib/redmine/configuration.rb +++ b/lib/redmine/configuration.rb @@ -22,6 +22,7 @@ module Redmine # Configuration default values @defaults = { + 'avatar_server_url' => 'https://www.gravatar.com', 'email_delivery' => nil, 'max_concurrent_ajax_uploads' => 2 } diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb index d761d5b8e..c625f73fa 100644 --- a/test/functional/my_controller_test.rb +++ b/test/functional/my_controller_test.rb @@ -365,9 +365,11 @@ class MyControllerTest < Redmine::ControllerTest 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 diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb index 74acae4b0..b91012b58 100644 --- a/test/helpers/application_helper_test.rb +++ b/test/helpers/application_helper_test.rb @@ -1529,6 +1529,21 @@ RAW 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") |