Project

General

Profile

Feature #9112 » avatar_service_url_configuration-v4.patch

Go MAEDA, 2019-05-04 11:06

View differences:

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 = Redmine::Configuration['avatar_server_url']
1511 1511
      link_to avatar(user, {:title => l(:button_edit)}.merge(options)), url, :target => '_blank'
1512 1512
    end
1513 1513
  end
app/views/settings/_display.html.erb
19 19

  
20 20
<p><%= setting_select :user_format, @options[:user_format] %></p>
21 21

  
22
<p><%= setting_check_box :gravatar_enabled, :data => {:enables => '#settings_gravatar_default'} %></p>
22
<p><%= setting_check_box :gravatar_enabled, :data => {:enables => '#settings_gravatar_default'} %>
23
<em class="info"><%= t(:text_avatar_server_config_html, :url => Redmine::Configuration['avatar_server_url']) %></em></p>
23 24

  
24 25
<p><%= setting_select :gravatar_default, gravatar_default_setting_options, :blank => :label_none %></p>
25 26

  
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:
config/locales/en.yml
1202 1202
  text_project_closed: This project is closed and read-only.
1203 1203
  text_turning_multiple_off: "If you disable multiple values, multiple values will be removed in order to preserve only one value per item."
1204 1204
  text_select_apply_tracker: "Select tracker"
1205
  text_avatar_server_config_html: The current avatar server is <a href="%{url}">%{url}</a>. You can configure it in config/configuration.yml.
1206

  
1205 1207

  
1206 1208
  default_role_manager: Manager
1207 1209
  default_role_developer: Developer
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
      +"#{Redmine::Configuration['avatar_server_url']}/avatar/#{hash}"
67 67
    end
68 68

  
69 69
    # Return the gravatar URL for the given email address.
lib/redmine/configuration.rb
22 22

  
23 23
    # Configuration default values
24 24
    @defaults = {
25
      'avatar_server_url' => 'https://www.gravatar.com',
25 26
      'email_delivery' => nil,
26 27
      'max_concurrent_ajax_uploads' => 2
27 28
    }
test/functional/my_controller_test.rb
365 365

  
366 366
  def test_my_account_with_avatar_enabled_should_link_to_edit_avatar
367 367
    with_settings :gravatar_enabled => '1' do
368
      get :account
369
      assert_response :success
370
      assert_select 'a[href=?] img.gravatar', 'https://gravatar.com'
368
      Redmine::Configuration.with 'avatar_server_url' => 'https://gravatar.com' do
369
        get :account
370
        assert_response :success
371
        assert_select 'a[href=?] img.gravatar', 'https://gravatar.com'
372
      end
371 373
    end
372 374
  end
373 375

  
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://www.gravatar.com' => %r|https://www.gravatar.com/avatar/\h{32}|,
1535
      'https://seccdn.libravatar.org' => %r|https://seccdn.libravatar.org/avatar/\h{32}|,
1536
      'http://localhost:8080' => %r|http://localhost:8080/avatar/\h{32}|,
1537
    }
1538
    with_settings :gravatar_enabled => '1' do
1539
      to_test.each do |url, expected|
1540
        Redmine::Configuration.with 'avatar_server_url' => url do
1541
          assert_match expected, avatar('<jsmith@somenet.foo>')
1542
        end
1543
      end
1544
    end
1545
  end
1546

  
1532 1547
  def test_link_to_user
1533 1548
    user = User.find(2)
1534 1549
    result = link_to("John Smith", "/users/2", :class => "user active")
(5-5/5)