Merge branch 'settings-tab' into 'master'

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

Closes #26733

See merge request !9786
This commit is contained in:
Clement Ho 2017-03-08 09:00:22 +00:00
commit e78a366925
14 changed files with 90 additions and 65 deletions

View File

@ -1,20 +1,4 @@
- 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

View File

@ -1,24 +0,0 @@
- 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

View File

@ -1,3 +1,4 @@
= render "projects/settings/head"
.project-edit-container
.row.prepend-top-default
.col-lg-3.profile-settings-sidebar

View File

@ -1,4 +1,6 @@
- page_title 'Pages'
= render "projects/settings/head"
%h3.page_title
Pages

View File

@ -0,0 +1,33 @@
= 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

View File

@ -1,4 +1,5 @@
- page_title "CI/CD Pipelines"
= render "projects/settings/head"
= render 'projects/runners/index'
= render 'projects/variables/index'

View File

@ -1,3 +1,4 @@
- page_title 'Integrations'
= render "projects/settings/head"
= render 'projects/hooks/index'
= render 'projects/services/index'

View File

@ -1,4 +1,5 @@
- page_title "Members"
= render "projects/settings/head"
= render "projects/project_members/index"
- if can?(current_user, :admin_project, @project)

View File

@ -1,4 +1,5 @@
- page_title "Repository"
= render "projects/settings/head"
= render @deploy_keys
= render "projects/protected_branches/index"

View File

@ -0,0 +1,4 @@
---
title: Moved project settings from the gear drop-down menu to a tab
merge_request: 9786
author:

View File

@ -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

View File

@ -22,23 +22,27 @@ 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
click_link('Integrations')
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
click_link('Pages')
page.within '.sub-nav' do
click_link('Pages')
end
end
step 'I click the "Activity" tab' 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

View File

@ -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

View File

@ -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