From 63f56b3c23e4879a2f36652573cf0857647778ef Mon Sep 17 00:00:00 2001 From: Jose Ivan Vargas Date: Tue, 7 Mar 2017 15:59:06 -0600 Subject: [PATCH 1/5] Removed the settings gear button inside the Project to a tab --- app/views/layouts/nav/_project.html.haml | 35 ++++++++++--------- .../layouts/nav/_project_settings.html.haml | 28 --------------- app/views/projects/edit.html.haml | 1 + app/views/projects/pages/show.html.haml | 2 ++ app/views/projects/settings/_head.html.haml | 33 +++++++++++++++++ .../projects/settings/ci_cd/show.html.haml | 1 + .../settings/integrations/show.html.haml | 1 + .../projects/settings/members/show.html.haml | 1 + .../settings/repository/show.html.haml | 1 + changelogs/unreleased/settings-tab.yml | 4 +++ features/project/active_tab.feature | 16 ++++----- features/steps/project/active_tab.rb | 28 ++++++++------- features/steps/shared/project_tab.rb | 6 ++-- 13 files changed, 89 insertions(+), 68 deletions(-) delete mode 100644 app/views/layouts/nav/_project_settings.html.haml create mode 100644 app/views/projects/settings/_head.html.haml create mode 100644 changelogs/unreleased/settings-tab.yml diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml index ba4c63b680de34..ecfd3920dfc622 100644 --- a/app/views/layouts/nav/_project.html.haml +++ b/app/views/layouts/nav/_project.html.haml @@ -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,23 @@ %span Snippets + - if project_nav_tab? :settings + = nav_link(path: ['projects#edit', 'members#show', 'integrations#show', 'repository#show', 'ci_cd#show', 'pages#show']) do + - if can_edit + = link_to edit_project_path(@project), title: 'Settings', class: 'shortcuts-tree' do + %span + Settings + - else + = link_to edit_project_path(@path), 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 + %span + Activity + -# Global shortcut to network page for compatibility - if project_nav_tab? :network %li.hidden diff --git a/app/views/layouts/nav/_project_settings.html.haml b/app/views/layouts/nav/_project_settings.html.haml deleted file mode 100644 index e921fb9c6be3de..00000000000000 --- a/app/views/layouts/nav/_project_settings.html.haml +++ /dev/null @@ -1,28 +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 - = nav_link(controller: :audit_events) do - = link_to namespace_project_audit_events_path(@project.namespace, @project), title: "Audit Events" do - %span - Audit Events diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index 2223ef1b570e5e..0ae64cb01eea79 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -1,3 +1,4 @@ += render "projects/settings/head" .project-edit-container .row.prepend-top-default .col-lg-3.profile-settings-sidebar diff --git a/app/views/projects/pages/show.html.haml b/app/views/projects/pages/show.html.haml index b6595269b06cbc..259d5bd63d61a3 100644 --- a/app/views/projects/pages/show.html.haml +++ b/app/views/projects/pages/show.html.haml @@ -1,4 +1,6 @@ - page_title 'Pages' += render "projects/settings/head" + %h3.page_title Pages diff --git a/app/views/projects/settings/_head.html.haml b/app/views/projects/settings/_head.html.haml new file mode 100644 index 00000000000000..30eaa44905fc87 --- /dev/null +++ b/app/views/projects/settings/_head.html.haml @@ -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 diff --git a/app/views/projects/settings/ci_cd/show.html.haml b/app/views/projects/settings/ci_cd/show.html.haml index 52f5f7b81e2afb..e26030960145c3 100644 --- a/app/views/projects/settings/ci_cd/show.html.haml +++ b/app/views/projects/settings/ci_cd/show.html.haml @@ -1,4 +1,5 @@ - page_title "CI/CD Pipelines" += render "projects/settings/head" = render 'projects/runners/index' = render 'projects/variables/index' diff --git a/app/views/projects/settings/integrations/show.html.haml b/app/views/projects/settings/integrations/show.html.haml index aa38a889cdd70c..f69992566b5eda 100644 --- a/app/views/projects/settings/integrations/show.html.haml +++ b/app/views/projects/settings/integrations/show.html.haml @@ -1,3 +1,4 @@ - page_title 'Integrations' += render "projects/settings/head" = render 'projects/hooks/index' = render 'projects/services/index' diff --git a/app/views/projects/settings/members/show.html.haml b/app/views/projects/settings/members/show.html.haml index d81ed7bb6097af..20e1ad682443ac 100644 --- a/app/views/projects/settings/members/show.html.haml +++ b/app/views/projects/settings/members/show.html.haml @@ -1,4 +1,5 @@ - page_title "Members" += render "projects/settings/head" = render "projects/project_members/index" - if can?(current_user, :admin_project, @project) diff --git a/app/views/projects/settings/repository/show.html.haml b/app/views/projects/settings/repository/show.html.haml index eac53773905211..9c6b6442ab7674 100644 --- a/app/views/projects/settings/repository/show.html.haml +++ b/app/views/projects/settings/repository/show.html.haml @@ -1,4 +1,5 @@ - page_title "Repository" += render "projects/settings/head" = render @deploy_keys = render "projects/push_rules/index" diff --git a/changelogs/unreleased/settings-tab.yml b/changelogs/unreleased/settings-tab.yml new file mode 100644 index 00000000000000..f9722af9fe3ff7 --- /dev/null +++ b/changelogs/unreleased/settings-tab.yml @@ -0,0 +1,4 @@ +--- +title: Removed the settings gear button inside the Project to a tab +merge_request: +author: diff --git a/features/project/active_tab.feature b/features/project/active_tab.feature index 4bdaa6266c3d28..4a0adaf624a3e8 100644 --- a/features/project/active_tab.feature +++ b/features/project/active_tab.feature @@ -42,28 +42,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 diff --git a/features/steps/project/active_tab.rb b/features/steps/project/active_tab.rb index 218d5c6164b0a5..706e6e890e2bbd 100644 --- a/features/steps/project/active_tab.rb +++ b/features/steps/project/active_tab.rb @@ -22,39 +22,43 @@ 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 '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 # Sub Tabs: Commits diff --git a/features/steps/shared/project_tab.rb b/features/steps/shared/project_tab.rb index 83446afe424fd7..56e9d24740435e 100644 --- a/features/steps/shared/project_tab.rb +++ b/features/steps/shared/project_tab.rb @@ -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 -- GitLab From d7ff920ab4d972f59fdf39d71ad2a3539ae4195b Mon Sep 17 00:00:00 2001 From: Jose Ivan Vargas Date: Tue, 7 Mar 2017 16:21:28 -0600 Subject: [PATCH 2/5] Added the Audit Events option to the settings tab --- app/views/layouts/nav/_project.html.haml | 2 +- app/views/projects/audit_events/index.html.haml | 2 ++ app/views/projects/settings/_head.html.haml | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml index ecfd3920dfc622..7c1ac7cd2b06bb 100644 --- a/app/views/layouts/nav/_project.html.haml +++ b/app/views/layouts/nav/_project.html.haml @@ -56,7 +56,7 @@ Snippets - if project_nav_tab? :settings - = nav_link(path: ['projects#edit', 'members#show', 'integrations#show', 'repository#show', 'ci_cd#show', 'pages#show']) do + = nav_link(path: ['projects#edit', 'members#show', 'integrations#show', 'repository#show', 'ci_cd#show', 'pages#show', 'audit_events#index']) do - if can_edit = link_to edit_project_path(@project), title: 'Settings', class: 'shortcuts-tree' do %span diff --git a/app/views/projects/audit_events/index.html.haml b/app/views/projects/audit_events/index.html.haml index 2a015fc8f10234..1084c54a86af1d 100644 --- a/app/views/projects/audit_events/index.html.haml +++ b/app/views/projects/audit_events/index.html.haml @@ -1,4 +1,6 @@ - page_title "Audit Events" += render "projects/settings/head" + %h3.page-title Project Audit Events %p.light Events in #{@project.path_with_namespace} diff --git a/app/views/projects/settings/_head.html.haml b/app/views/projects/settings/_head.html.haml index 30eaa44905fc87..7e558290543579 100644 --- a/app/views/projects/settings/_head.html.haml +++ b/app/views/projects/settings/_head.html.haml @@ -22,6 +22,10 @@ = link_to namespace_project_settings_repository_path(@project.namespace, @project), title: 'Repository' do %span Repository + = nav_link(controller: :audit_events) do + = link_to namespace_project_audit_events_path(@project.namespace, @project), title: 'Audit Events' do + %span + Audit Events - 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 -- GitLab From ac1424342d6caacffaf2d0359cf5b955b5864f6a Mon Sep 17 00:00:00 2001 From: Jose Ivan Vargas Date: Tue, 7 Mar 2017 17:50:44 -0600 Subject: [PATCH 3/5] Fixed some typos inside the _project.html.haml partial --- app/views/layouts/nav/_project.html.haml | 4 ++-- app/views/projects/settings/_head.html.haml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml index 7c1ac7cd2b06bb..072716d5d536f1 100644 --- a/app/views/layouts/nav/_project.html.haml +++ b/app/views/layouts/nav/_project.html.haml @@ -56,13 +56,13 @@ Snippets - if project_nav_tab? :settings - = nav_link(path: ['projects#edit', 'members#show', 'integrations#show', 'repository#show', 'ci_cd#show', 'pages#show', 'audit_events#index']) do + = nav_link(path: %w[projects#edit members#show integrations#show repository#show ci_cd#show pages#show audit_events#index]) do - if can_edit = link_to edit_project_path(@project), title: 'Settings', class: 'shortcuts-tree' do %span Settings - else - = link_to edit_project_path(@path), title: 'Settings', class: 'shortcuts-tree' do + = link_to edit_project_path(@project), title: 'Settings', class: 'shortcuts-tree' do %span Settings diff --git a/app/views/projects/settings/_head.html.haml b/app/views/projects/settings/_head.html.haml index 7e558290543579..a3037f12704440 100644 --- a/app/views/projects/settings/_head.html.haml +++ b/app/views/projects/settings/_head.html.haml @@ -2,7 +2,7 @@ .scrolling-tabs-container.sub-nav-scroll = render 'shared/nav_scroll' .nav-links.sub-nav.scrolling-tabs - %ul{ class: (container_class) } + %ul{ class: container_class } - can_edit = can?(current_user, :admin_project, @project) - if can_edit = nav_link(controller: :projects) do -- GitLab From 7e6a6ea0cf1b1749a768a3cb733798464c9075bd Mon Sep 17 00:00:00 2001 From: Jose Ivan Vargas Date: Tue, 7 Mar 2017 18:41:42 -0600 Subject: [PATCH 4/5] Fixed changelog and a haml condition project.html.haml --- app/views/layouts/nav/_project.html.haml | 16 ++++++++-------- changelogs/unreleased/settings-tab.yml | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml index 072716d5d536f1..3cd6fc922156ae 100644 --- a/app/views/layouts/nav/_project.html.haml +++ b/app/views/layouts/nav/_project.html.haml @@ -57,14 +57,14 @@ - if project_nav_tab? :settings = nav_link(path: %w[projects#edit members#show integrations#show repository#show ci_cd#show pages#show audit_events#index]) do - - if can_edit - = link_to edit_project_path(@project), title: 'Settings', class: 'shortcuts-tree' do - %span - Settings - - else - = link_to edit_project_path(@project), title: 'Settings', class: 'shortcuts-tree' do - %span - Settings + = 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 diff --git a/changelogs/unreleased/settings-tab.yml b/changelogs/unreleased/settings-tab.yml index f9722af9fe3ff7..dbfca3ba4004d4 100644 --- a/changelogs/unreleased/settings-tab.yml +++ b/changelogs/unreleased/settings-tab.yml @@ -1,4 +1,4 @@ --- -title: Removed the settings gear button inside the Project to a tab +title: Moved project settings from the gear drop-down menu to a tab merge_request: author: -- GitLab From 0dd103c4cd64e300b5b66ff9c6d0af36c3bbc5e8 Mon Sep 17 00:00:00 2001 From: Jose Ivan Vargas Date: Tue, 7 Mar 2017 20:45:04 -0600 Subject: [PATCH 5/5] fixed user_access_request_spec --- .../projects/members/user_requests_access_spec.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spec/features/projects/members/user_requests_access_spec.rb b/spec/features/projects/members/user_requests_access_spec.rb index 0b4dcaa39c693a..b64c15e0adc848 100644 --- a/spec/features/projects/members/user_requests_access_spec.rb +++ b/spec/features/projects/members/user_requests_access_spec.rb @@ -57,6 +57,12 @@ 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 -- GitLab