Redirect to an already forked project if it exists
Before the we would try to `POST` to the project path, which would result in a 404, because that `POST` is not supported. By changing this back to a normal link, not not handled in JS, we can immeadiatly redirect.
This commit is contained in:
parent
a2fea9288e
commit
299c543973
|
@ -0,0 +1,26 @@
|
|||
- avatar = namespace_icon(namespace, 100)
|
||||
- can_create_project = current_user.can?(:create_projects, namespace)
|
||||
|
||||
- if forked_project = namespace.find_fork_of(@project)
|
||||
.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_identicon(namespace, class: "avatar s100 identicon")
|
||||
- else
|
||||
.avatar-container.s100
|
||||
= image_tag(avatar, class: "avatar s100")
|
||||
%h5.prepend-top-default
|
||||
= namespace.human_name
|
||||
- else
|
||||
.bordered-box.fork-thumbnail.text-center.prepend-left-default.append-right-default.prepend-top-default.append-bottom-default{ class: ("disabled" unless can_create_project) }
|
||||
= link_to project_forks_path(@project, namespace_key: namespace.id),
|
||||
method: "POST",
|
||||
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_identicon(namespace, class: "avatar s100 identicon")
|
||||
- else
|
||||
.avatar-container.s100
|
||||
= image_tag(avatar, class: "avatar s100")
|
||||
%h5.prepend-top-default
|
||||
= namespace.human_name
|
|
@ -14,22 +14,7 @@
|
|||
%h5.prepend-top-0.append-bottom-0.prepend-left-default.append-right-default
|
||||
Click to fork the project
|
||||
- @namespaces.each do |namespace|
|
||||
- avatar = namespace_icon(namespace, 100)
|
||||
- can_create_project = current_user.can?(:create_projects, namespace)
|
||||
- forked_project = namespace.find_fork_of(@project)
|
||||
- fork_path = forked_project ? project_path(forked_project) : project_forks_path(@project, namespace_key: namespace.id)
|
||||
.bordered-box.fork-thumbnail.text-center.prepend-left-default.append-right-default.prepend-top-default.append-bottom-default{ class: [("disabled" unless can_create_project), ("forked" if forked_project)] }
|
||||
= link_to fork_path,
|
||||
method: "POST",
|
||||
class: [("js-fork-thumbnail" unless forked_project), ("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_identicon(namespace, class: "avatar s100 identicon")
|
||||
- else
|
||||
.avatar-container.s100
|
||||
= image_tag(avatar, class: "avatar s100")
|
||||
%h5.prepend-top-default
|
||||
= namespace.human_name
|
||||
= render 'fork_button', namespace: namespace
|
||||
- else
|
||||
%strong
|
||||
No available namespaces to fork the project.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Correctly link to a forked project from the new fork page.
|
||||
merge_request: 15653
|
||||
author:
|
||||
type: fixed
|
|
@ -1,6 +1,8 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'Project fork' do
|
||||
include ProjectForksHelper
|
||||
|
||||
let(:user) { create(:user) }
|
||||
let(:project) { create(:project, :public, :repository) }
|
||||
|
||||
|
@ -24,8 +26,9 @@ describe 'Project fork' do
|
|||
end
|
||||
|
||||
context 'master in group' do
|
||||
let(:group) { create(:group) }
|
||||
|
||||
before do
|
||||
group = create(:group)
|
||||
group.add_master(user)
|
||||
end
|
||||
|
||||
|
@ -53,5 +56,17 @@ describe 'Project fork' do
|
|||
expect(page).to have_css('.fork-thumbnail', count: 2)
|
||||
expect(page).to have_css('.fork-thumbnail.disabled')
|
||||
end
|
||||
|
||||
it 'links to the fork if the project was already forked within that namespace' do
|
||||
forked_project = fork_project(project, user, namespace: group, repository: true)
|
||||
|
||||
visit new_project_fork_path(project)
|
||||
|
||||
expect(page).to have_css('div.forked', text: group.full_name)
|
||||
|
||||
click_link group.full_name
|
||||
|
||||
expect(current_path).to eq(project_path(forked_project))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue