diff --git a/app/views/projects/forks/_fork_button.html.haml b/app/views/projects/forks/_fork_button.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..8a549d431ee22cb086e28d90cc8a19530fe60220 --- /dev/null +++ b/app/views/projects/forks/_fork_button.html.haml @@ -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 diff --git a/app/views/projects/forks/new.html.haml b/app/views/projects/forks/new.html.haml index e9613534ddef9919605931abd0a5b3996af2e296..475c6ba4d3db4265f12d180ad8d8edb19a61535d 100644 --- a/app/views/projects/forks/new.html.haml +++ b/app/views/projects/forks/new.html.haml @@ -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. diff --git a/changelogs/unreleased/bvl-double-fork.yml b/changelogs/unreleased/bvl-double-fork.yml new file mode 100644 index 0000000000000000000000000000000000000000..50bc1adde269d340df2335fdc35133815736c377 --- /dev/null +++ b/changelogs/unreleased/bvl-double-fork.yml @@ -0,0 +1,5 @@ +--- +title: Correctly link to a forked project from the new fork page. +merge_request: 15653 +author: +type: fixed diff --git a/spec/features/projects/fork_spec.rb b/spec/features/projects/fork_spec.rb index e10d29e5eea8970cbf3c68a12039725fe6183644..842840cc04ca8d99bf8d8ffd4e4959a5a7b9d985 100644 --- a/spec/features/projects/fork_spec.rb +++ b/spec/features/projects/fork_spec.rb @@ -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