Commit e78a3669 authored by Clement Ho's avatar Clement Ho

Merge branch 'settings-tab' into 'master'

Removed the settings gear button inside the project view to a tab

Closes #26733

See merge request !9786
parents bd1d7781 69b4ec95
- if current_user
.controls
.dropdown.project-settings-dropdown
%a.dropdown-new.btn.btn-default#project-settings-button{ href: '#', 'data-toggle' => 'dropdown' }
= icon('cog')
= icon('caret-down')
%ul.dropdown-menu.dropdown-menu-align-right
- can_edit = can?(current_user, :admin_project, @project)
= render 'layouts/nav/project_settings', can_edit: can_edit
- if can_edit
%li.divider
%li
= link_to edit_project_path(@project) do
Edit Project
- can_edit = can?(current_user, :admin_project, @project)
.scrolling-tabs-container{ class: nav_control_class }
.fade-left
= icon('angle-left')
......@@ -71,6 +55,17 @@
%span
Snippets
- if project_nav_tab? :settings
= nav_link(path: %w[projects#edit members#show integrations#show repository#show ci_cd#show pages#show]) do
= link_to edit_project_path(@project), title: 'Settings', class: 'shortcuts-tree' do
%span
Settings
- else
= nav_link(path: %w[members#show]) do
= link_to namespace_project_settings_members_path(@project.namespace, @project), title: 'Settings', class: 'shortcuts-tree' do
%span
Settings
-# Shortcut to Project > Activity
%li.hidden
= link_to activity_project_path(@project), title: 'Activity', class: 'shortcuts-project-activity' do
......
- if project_nav_tab? :team
= nav_link(controller: [:members, :teams]) do
= link_to namespace_project_settings_members_path(@project.namespace, @project), title: 'Members', class: 'team-tab tab' do
%span
Members
- if can_edit
= nav_link(controller: :repository) do
= link_to namespace_project_settings_repository_path(@project.namespace, @project), title: 'Repository' do
%span
Repository
= nav_link(controller: :integrations) do
= link_to namespace_project_settings_integrations_path(@project.namespace, @project), title: 'Integrations' do
%span
Integrations
- if @project.feature_available?(:builds, current_user)
= nav_link(controller: :ci_cd) do
= link_to namespace_project_settings_ci_cd_path(@project.namespace, @project), title: 'CI/CD Pipelines' do
%span
CI/CD Pipelines
= nav_link(controller: :pages) do
= link_to namespace_project_pages_path(@project.namespace, @project), title: 'Pages', data: {placement: 'right'} do
%span
Pages
= render "projects/settings/head"
.project-edit-container
.row.prepend-top-default
.col-lg-3.profile-settings-sidebar
......
- page_title 'Pages'
= render "projects/settings/head"
%h3.page_title
Pages
......
= content_for :sub_nav do
.scrolling-tabs-container.sub-nav-scroll
= render 'shared/nav_scroll'
.nav-links.sub-nav.scrolling-tabs
%ul{ class: container_class }
- can_edit = can?(current_user, :admin_project, @project)
- if can_edit
= nav_link(controller: :projects) do
= link_to edit_project_path(@project), title: 'General' do
%span
General
= nav_link(controller: :members) do
= link_to project_settings_members_path(@project), title: 'Members' do
%span
Members
- if can_edit
= nav_link(controller: :integrations) do
= link_to project_settings_integrations_path(@project), title: 'Integrations' do
%span
Integrations
= nav_link(controller: :repository) do
= link_to namespace_project_settings_repository_path(@project.namespace, @project), title: 'Repository' do
%span
Repository
- if @project.feature_available?(:builds, current_user)
= nav_link(controller: :ci_cd) do
= link_to namespace_project_settings_ci_cd_path(@project.namespace, @project), title: 'CI/CD Pipelines' do
%span
CI/CD Pipelines
= nav_link(controller: :pages) do
= link_to namespace_project_pages_path(@project.namespace, @project), title: 'Pages' do
%span
Pages
- page_title "CI/CD Pipelines"
= render "projects/settings/head"
= render 'projects/runners/index'
= render 'projects/variables/index'
......
- page_title 'Integrations'
= render "projects/settings/head"
= render 'projects/hooks/index'
= render 'projects/services/index'
- page_title "Members"
= render "projects/settings/head"
= render "projects/project_members/index"
- if can?(current_user, :admin_project, @project)
......
- page_title "Repository"
= render "projects/settings/head"
= render @deploy_keys
= render "projects/protected_branches/index"
---
title: Moved project settings from the gear drop-down menu to a tab
merge_request: 9786
author:
......@@ -52,28 +52,28 @@ Feature: Project Active Tab
Scenario: On Project Settings/Integrations
Given I visit my project's settings page
And I click the "Integrations" tab
Then the active sub nav should be Integrations
And no other sub navs should be active
Then the active sub tab should be Integrations
And no other sub tabs should be active
And the active main tab should be Settings
Scenario: On Project Settings/Repository
Given I visit my project's settings page
And I click the "Repository" tab
Then the active sub nav should be Repository
And no other sub navs should be active
Then the active sub tab should be Repository
And no other sub tabs should be active
And the active main tab should be Settings
Scenario: On Project Settings/Pages
Given I visit my project's settings page
And I click the "Pages" tab
Then the active sub nav should be Pages
And no other sub navs should be active
Then the active sub tab should be Pages
And no other sub tabs should be active
And the active main tab should be Settings
Scenario: On Project Members
Given I visit my project's members page
Then the active sub nav should be Members
And no other sub navs should be active
Then the active sub tab should be Members
And no other sub tabs should be active
And the active main tab should be Settings
# Sub Tabs: Repository
......
......@@ -22,24 +22,28 @@ class Spinach::Features::ProjectActiveTab < Spinach::FeatureSteps
end
step 'I click the "Edit Project"' do
page.within '.layout-nav .controls' do
page.within '.sub-nav' do
click_link('Edit Project')
end
end
step 'I click the "Integrations" tab' do
page.within '.sub-nav' do
click_link('Integrations')
end
end
step 'I click the "Repository" tab' do
page.within '.layout-nav .controls' do
page.within '.sub-nav' do
click_link('Repository')
end
end
step 'I click the "Pages" tab' do
page.within '.sub-nav' do
click_link('Pages')
end
end
step 'I click the "Activity" tab' do
page.within '.sub-nav' do
......@@ -47,20 +51,20 @@ class Spinach::Features::ProjectActiveTab < Spinach::FeatureSteps
end
end
step 'the active sub nav should be Members' do
ensure_active_sub_nav('Members')
step 'the active sub tab should be Members' do
ensure_active_sub_tab('Members')
end
step 'the active sub nav should be Integrations' do
ensure_active_sub_nav('Integrations')
step 'the active sub tab should be Integrations' do
ensure_active_sub_tab('Integrations')
end
step 'the active sub nav should be Repository' do
ensure_active_sub_nav('Repository')
step 'the active sub tab should be Repository' do
ensure_active_sub_tab('Repository')
end
step 'the active sub nav should be Pages' do
ensure_active_sub_nav('Pages')
step 'the active sub tab should be Pages' do
ensure_active_sub_tab('Pages')
end
step 'the active sub tab should be Activity' do
......
......@@ -16,8 +16,8 @@ module SharedProjectTab
ensure_active_main_tab('Issues')
end
step 'the active main tab should be Members' do
ensure_active_main_tab('Members')
step 'the active sub tab should be Members' do
ensure_active_sub_tab('Members')
end
step 'the active main tab should be Merge Requests' do
......@@ -33,7 +33,7 @@ module SharedProjectTab
end
step 'the active main tab should be Settings' do
expect(page).to have_selector('.layout-nav .nav-links > li.active', count: 0)
ensure_active_main_tab('Settings')
end
step 'the active sub tab should be Graph' do
......
......@@ -57,6 +57,12 @@ feature 'Projects > Members > User requests access', feature: true do
end
def open_project_settings_menu
find('#project-settings-button').click
page.within('.layout-nav .nav-links') do
click_link('Settings')
end
page.within('.page-with-layout-nav .sub-nav') do
click_link('Members')
end
end
end
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