Add context tabs to dashboard/projects

This allows users to quickly switch between all projects they have
access to & there own namespace projects. These tabs also keep
the same filtering/search options selected so the user can quickly
switch between the two different contexts.

Closes #29045
This commit is contained in:
Phil Hughes 2017-09-19 13:43:04 +01:00
parent fa72d3461a
commit 9f32276454
No known key found for this signature in database
GPG key ID: 32245528C52E0F9F
5 changed files with 50 additions and 0 deletions

View file

@ -0,0 +1,8 @@
.top-area
%ul.nav-links
= nav_link(html_options: { class: ("active" unless params[:personal].present?) }) do
= link_to dashboard_projects_path do
#{ s_('DashboardProjects|All') }
= nav_link(html_options: { class: ("active" if params[:personal].present?) }) do
= link_to filter_projects_path(personal: true) do
#{ s_('DashboardProjects|Personal') }

View file

@ -12,6 +12,7 @@
%div{ class: container_class }
- if has_projects_or_name?(@projects, params)
= render 'dashboard/projects_head'
= render 'nav'
= render 'projects'
- else
= render "zero_authorized_projects"

View file

@ -0,0 +1,5 @@
---
title: Added tabs to dashboard/projects to easily switch to personal projects
merge_request:
author:
type: added

View file

@ -50,6 +50,25 @@ feature 'Dashboard Projects' do
end
end
context 'when on Your projects tab' do
it 'shows all projects by default' do
visit dashboard_projects_path
expect(page).to have_content(project.name)
end
it 'shows personal projects on personal projects tab', :js do
project3 = create(:project, namespace: user.namespace)
visit dashboard_projects_path
click_link 'Personal'
expect(page).not_to have_content(project.name)
expect(page).to have_content(project3.name)
end
end
context 'when on Starred projects tab' do
it 'shows only starred projects' do
user.toggle_star(project2)

View file

@ -0,0 +1,17 @@
require 'spec_helper'
describe 'dashboard/projects/_nav.html.haml' do
it 'highlights All tab by default' do
render
expect(rendered).to have_css('li.active a', text: 'All')
end
it 'highlights Personal tab personal param is present' do
controller.params[:personal] = true
render
expect(rendered).to have_css('li.active a', text: 'Personal')
end
end