From ebe4963871e4e2aa38b5b359af34d4f7062b7dfb Mon Sep 17 00:00:00 2001
From: Nicolas <nicolas@gitlab.com>
Date: Tue, 9 Jun 2015 01:12:38 +0200
Subject: [PATCH] Move Project Members link from Settings to main menu.

Addresses #2278.
---
 .../projects/project_members_controller.rb           |  2 --
 app/helpers/tab_helper.rb                            |  2 +-
 app/views/layouts/nav/_project.html.haml             |  7 +++++++
 app/views/layouts/nav/_project_settings.html.haml    |  5 -----
 features/project/active_tab.feature                  | 12 +++++-------
 features/steps/shared/paths.rb                       |  4 ++++
 features/steps/shared/project_tab.rb                 |  4 ++++
 7 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/app/controllers/projects/project_members_controller.rb b/app/controllers/projects/project_members_controller.rb
index b110de11013..b82b6f45d59 100644
--- a/app/controllers/projects/project_members_controller.rb
+++ b/app/controllers/projects/project_members_controller.rb
@@ -2,8 +2,6 @@ class Projects::ProjectMembersController < Projects::ApplicationController
   # Authorize
   before_action :authorize_admin_project!, except: :leave
 
-  layout "project_settings"
-
   def index
     @project_members = @project.project_members
     @project_members = @project_members.non_invite unless can?(current_user, :admin_project, @project)
diff --git a/app/helpers/tab_helper.rb b/app/helpers/tab_helper.rb
index a1d263d9d3a..77727337f07 100644
--- a/app/helpers/tab_helper.rb
+++ b/app/helpers/tab_helper.rb
@@ -89,7 +89,7 @@ module TabHelper
   def project_tab_class
     return "active" if current_page?(controller: "/projects", action: :edit, id: @project)
 
-    if ['services', 'hooks', 'deploy_keys', 'project_members', 'protected_branches'].include? controller.controller_name
+    if ['services', 'hooks', 'deploy_keys', 'protected_branches'].include? controller.controller_name
       "active"
     end
   end
diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml
index 172f5197b24..cbcf560d0af 100644
--- a/app/views/layouts/nav/_project.html.haml
+++ b/app/views/layouts/nav/_project.html.haml
@@ -56,6 +56,13 @@
           Merge Requests
           %span.count.merge_counter= @project.merge_requests.opened.count
 
+  - if project_nav_tab? :settings
+    = nav_link(controller: [:project_members, :teams]) do
+      = link_to namespace_project_project_members_path(@project.namespace, @project), title: 'Members', class: 'team-tab tab', data: {placement: 'right'} do
+        = icon('users fw')
+        %span
+          Members
+
   - if project_nav_tab? :labels
     = nav_link(controller: :labels) do
       = link_to namespace_project_labels_path(@project.namespace, @project), title: 'Labels', data: {placement: 'right'} do
diff --git a/app/views/layouts/nav/_project_settings.html.haml b/app/views/layouts/nav/_project_settings.html.haml
index 7dd14449def..1794712e1c3 100644
--- a/app/views/layouts/nav/_project_settings.html.haml
+++ b/app/views/layouts/nav/_project_settings.html.haml
@@ -13,11 +13,6 @@
         = icon('pencil-square-o')
         %span
           Project Settings
-    = nav_link(controller: [:project_members, :teams]) do
-      = link_to namespace_project_project_members_path(@project.namespace, @project), title: 'Members', class: 'team-tab tab', data: {placement: 'right'} do
-        = icon('users')
-        %span
-          Members
     = nav_link(controller: :deploy_keys) do
       = link_to namespace_project_deploy_keys_path(@project.namespace, @project), title: 'Deploy Keys', data: {placement: 'right'} do
         = icon('key')
diff --git a/features/project/active_tab.feature b/features/project/active_tab.feature
index 05faad4e645..8661ea98c20 100644
--- a/features/project/active_tab.feature
+++ b/features/project/active_tab.feature
@@ -35,6 +35,11 @@ Feature: Project Active Tab
     Then the active main tab should be Merge Requests
     And no other main tabs should be active
 
+  Scenario: On Project Members
+    Given I visit my project's members page
+    Then the active main tab should be Members
+    And no other main tabs should be active
+
   Scenario: On Project Wiki
     Given I visit my project's wiki page
     Then the active main tab should be Wiki
@@ -49,13 +54,6 @@ Feature: Project Active Tab
 
   # Sub Tabs: Settings
 
-  Scenario: On Project Settings/Team
-    Given I visit my project's settings page
-    And I click the "Team" tab
-    Then the active sub nav should be Team
-    And no other sub navs should be active
-    And the active main tab should be Settings
-
   Scenario: On Project Settings/Edit
     Given I visit my project's settings page
     And I click the "Edit" tab
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index d9401bd540c..46493876805 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -227,6 +227,10 @@ module SharedPaths
     visit namespace_project_merge_requests_path(@project.namespace, @project)
   end
 
+  step "I visit my project's members page" do
+    visit namespace_project_project_members_path(@project.namespace, @project)
+  end
+
   step "I visit my project's wiki page" do
     visit namespace_project_wiki_path(@project.namespace, @project, :home)
   end
diff --git a/features/steps/shared/project_tab.rb b/features/steps/shared/project_tab.rb
index c5aed19331c..71fe89f634f 100644
--- a/features/steps/shared/project_tab.rb
+++ b/features/steps/shared/project_tab.rb
@@ -28,6 +28,10 @@ module SharedProjectTab
     ensure_active_main_tab('Issues')
   end
 
+  step 'the active main tab should be Members' do
+    ensure_active_main_tab('Members')
+  end
+
   step 'the active main tab should be Merge Requests' do
     ensure_active_main_tab('Merge Requests')
   end
-- 
GitLab