Commit b49e6b41 authored by Stan Hu's avatar Stan Hu

Fix Error 500 when forking projects with Gravatar disabled

When Gravatar is disabled, the "no avatar" is used, which failed
to revert to the colorful identity icons for namespaces.

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/50254
parent 790eabca
# frozen_string_literal: true # frozen_string_literal: true
module AvatarsHelper module AvatarsHelper
def project_icon(project_id, options = {}) def project_icon(project, options = {})
source_icon(Project, project_id, options) source_icon(project, options)
end end
def group_icon(group_id, options = {}) def group_icon(group, options = {})
source_icon(Group, group_id, options) source_icon(group, options)
end end
# Takes both user and email and returns the avatar_icon by # Takes both user and email and returns the avatar_icon by
...@@ -110,16 +110,11 @@ module AvatarsHelper ...@@ -110,16 +110,11 @@ module AvatarsHelper
private private
def source_icon(klass, source_id, options = {}) def source_icon(source, options = {})
source = avatar_url = source.try(:avatar_url)
if source_id.respond_to?(:avatar_url)
source_id
else
klass.find_by_full_path(source_id)
end
if source.avatar_url if avatar_url
image_tag source.avatar_url, options image_tag avatar_url, options
else else
source_identicon(source, options) source_identicon(source, options)
end end
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
.form-group .form-group
- if @project.avatar? - if @project.avatar?
.avatar-container.s160.append-bottom-15 .avatar-container.s160.append-bottom-15
= project_icon(@project.full_path, alt: '', class: 'avatar project-avatar s160', width: 160, height: 160) = project_icon(@project, alt: '', class: 'avatar project-avatar s160', width: 160, height: 160)
- if @project.avatar_in_git - if @project.avatar_in_git
%p.light %p.light
= _("Project avatar in repository: %{link}").html_safe % { link: @project.avatar_in_git } = _("Project avatar in repository: %{link}").html_safe % { link: @project.avatar_in_git }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
.bordered-box.fork-thumbnail.text-center.prepend-left-default.append-right-default.prepend-top-default.append-bottom-default.forked .bordered-box.fork-thumbnail.text-center.prepend-left-default.append-right-default.prepend-top-default.append-bottom-default.forked
= link_to project_path(forked_project) do = link_to project_path(forked_project) do
- if /no_((\w*)_)*avatar/.match(avatar) - if /no_((\w*)_)*avatar/.match(avatar)
= project_icon(namespace, class: "avatar s100 identicon") = group_icon(namespace, class: "avatar s100 identicon")
- else - else
.avatar-container.s100 .avatar-container.s100
= image_tag(avatar, class: "avatar s100") = image_tag(avatar, class: "avatar s100")
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
class: ("disabled has-tooltip" unless can_create_project), class: ("disabled has-tooltip" unless can_create_project),
title: (_('You have reached your project limit') unless can_create_project) do title: (_('You have reached your project limit') unless can_create_project) do
- if /no_((\w*)_)*avatar/.match(avatar) - if /no_((\w*)_)*avatar/.match(avatar)
= project_icon(namespace, class: "avatar s100 identicon") = group_icon(namespace, class: "avatar s100 identicon")
- else - else
.avatar-container.s100 .avatar-container.s100
= image_tag(avatar, class: "avatar s100") = image_tag(avatar, class: "avatar s100")
......
---
title: Fix Error 500 when forking projects with Gravatar disabled
merge_request:
author:
type: fixed
...@@ -53,6 +53,18 @@ describe 'Project fork' do ...@@ -53,6 +53,18 @@ describe 'Project fork' do
expect(current_path).to have_content(/#{user.namespace.name}/i) expect(current_path).to have_content(/#{user.namespace.name}/i)
end end
it 'shows avatars when Gravatar is disabled' do
stub_application_setting(gravatar_enabled: false)
visit project_path(project)
click_link 'Fork'
page.within('.fork-thumbnail-container') do
expect(page).to have_css('div.identicon')
end
end
it 'shows the forked project on the list' do it 'shows the forked project on the list' do
visit project_path(project) visit project_path(project)
......
...@@ -32,18 +32,6 @@ describe AvatarsHelper do ...@@ -32,18 +32,6 @@ describe AvatarsHelper do
end end
end end
context 'when providing a project path' do
it_behaves_like 'resource with a default avatar', 'project' do
let(:resource) { create(:project, name: 'foo') }
let(:helper_args) { [resource.full_path] }
end
it_behaves_like 'resource with a custom avatar', 'project' do
let(:resource) { create(:project, :public, avatar: File.open(uploaded_image_temp_path)) }
let(:helper_args) { [resource.full_path] }
end
end
context 'when providing a group' do context 'when providing a group' do
it_behaves_like 'resource with a default avatar', 'group' do it_behaves_like 'resource with a default avatar', 'group' do
let(:resource) { create(:group, name: 'foo') } let(:resource) { create(:group, name: 'foo') }
...@@ -55,18 +43,6 @@ describe AvatarsHelper do ...@@ -55,18 +43,6 @@ describe AvatarsHelper do
let(:helper_args) { [resource] } let(:helper_args) { [resource] }
end end
end end
context 'when providing a group path' do
it_behaves_like 'resource with a default avatar', 'group' do
let(:resource) { create(:group, name: 'foo') }
let(:helper_args) { [resource.full_path] }
end
it_behaves_like 'resource with a custom avatar', 'group' do
let(:resource) { create(:group, avatar: File.open(uploaded_image_temp_path)) }
let(:helper_args) { [resource.full_path] }
end
end
end end
describe '#avatar_icon_for' do describe '#avatar_icon_for' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment