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
This commit is contained in:
parent
790eabcaf4
commit
b49e6b419a
6 changed files with 28 additions and 40 deletions
|
@ -1,12 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module AvatarsHelper
|
||||
def project_icon(project_id, options = {})
|
||||
source_icon(Project, project_id, options)
|
||||
def project_icon(project, options = {})
|
||||
source_icon(project, options)
|
||||
end
|
||||
|
||||
def group_icon(group_id, options = {})
|
||||
source_icon(Group, group_id, options)
|
||||
def group_icon(group, options = {})
|
||||
source_icon(group, options)
|
||||
end
|
||||
|
||||
# Takes both user and email and returns the avatar_icon by
|
||||
|
@ -110,16 +110,11 @@ module AvatarsHelper
|
|||
|
||||
private
|
||||
|
||||
def source_icon(klass, source_id, options = {})
|
||||
source =
|
||||
if source_id.respond_to?(:avatar_url)
|
||||
source_id
|
||||
else
|
||||
klass.find_by_full_path(source_id)
|
||||
end
|
||||
def source_icon(source, options = {})
|
||||
avatar_url = source.try(:avatar_url)
|
||||
|
||||
if source.avatar_url
|
||||
image_tag source.avatar_url, options
|
||||
if avatar_url
|
||||
image_tag avatar_url, options
|
||||
else
|
||||
source_identicon(source, options)
|
||||
end
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
.form-group
|
||||
- if @project.avatar?
|
||||
.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
|
||||
%p.light
|
||||
= _("Project avatar in repository: %{link}").html_safe % { link: @project.avatar_in_git }
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
.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
|
||||
- if /no_((\w*)_)*avatar/.match(avatar)
|
||||
= project_icon(namespace, class: "avatar s100 identicon")
|
||||
= group_icon(namespace, class: "avatar s100 identicon")
|
||||
- else
|
||||
.avatar-container.s100
|
||||
= image_tag(avatar, class: "avatar s100")
|
||||
|
@ -18,7 +18,7 @@
|
|||
class: ("disabled has-tooltip" unless can_create_project),
|
||||
title: (_('You have reached your project limit') unless can_create_project) do
|
||||
- if /no_((\w*)_)*avatar/.match(avatar)
|
||||
= project_icon(namespace, class: "avatar s100 identicon")
|
||||
= group_icon(namespace, class: "avatar s100 identicon")
|
||||
- else
|
||||
.avatar-container.s100
|
||||
= image_tag(avatar, class: "avatar s100")
|
||||
|
|
5
changelogs/unreleased/sh-fix-forks-with-no-gravatar.yml
Normal file
5
changelogs/unreleased/sh-fix-forks-with-no-gravatar.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix Error 500 when forking projects with Gravatar disabled
|
||||
merge_request:
|
||||
author:
|
||||
type: fixed
|
|
@ -53,6 +53,18 @@ describe 'Project fork' do
|
|||
expect(current_path).to have_content(/#{user.namespace.name}/i)
|
||||
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
|
||||
visit project_path(project)
|
||||
|
||||
|
|
|
@ -32,18 +32,6 @@ describe AvatarsHelper do
|
|||
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
|
||||
it_behaves_like 'resource with a default avatar', 'group' do
|
||||
let(:resource) { create(:group, name: 'foo') }
|
||||
|
@ -55,18 +43,6 @@ describe AvatarsHelper do
|
|||
let(:helper_args) { [resource] }
|
||||
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
|
||||
|
||||
describe '#avatar_icon_for' do
|
||||
|
|
Loading…
Reference in a new issue