Commit 4c045f21 authored by Luke Bennett's avatar Luke Bennett Committed by Clement Ho

Add top navigation analytics link

Includes 'More' dropdown link.
parent 0f6d6679
......@@ -32,6 +32,8 @@
= link_to dashboard_snippets_path, class: 'dashboard-shortcuts-snippets qa-snippets-link' do
= _('Snippets')
= render_if_exists 'layouts/nav/sidebar/analytics_link'
- if any_dashboard_nav_link?([:groups, :milestones, :activity, :snippets])
%li.header-more.dropdown.d-xl-none{ class: ('d-lg-none' unless has_extra_nav_icons?) }
%a{ href: "#", data: { toggle: "dropdown" } }
......@@ -53,6 +55,9 @@
= nav_link(controller: 'dashboard/snippets') do
= link_to dashboard_snippets_path, class: 'dashboard-shortcuts-snippets' do
= _('Snippets')
= render_if_exists 'layouts/nav/sidebar/analytics_more_link'
%li.dropdown.d-lg-none
= render_if_exists 'dashboard/operations/nav_link_list'
- if can?(current_user, :read_instance_statistics)
......
......@@ -2,6 +2,8 @@
module EE
module DashboardHelper
extend ::Gitlab::Utils::Override
def controller_action_to_child_dashboards(controller = controller_name, action = action_name)
case "#{controller}##{action}"
when 'projects#index', 'root#index', 'projects#starred', 'projects#trending'
......@@ -28,5 +30,14 @@ module EE
def has_start_trial?
!current_license && current_user.admin?
end
private
override :get_dashboard_nav_links
def get_dashboard_nav_links
super.tap do |links|
links << :analytics if ::Feature.enabled?(:analytics)
end
end
end
end
......@@ -12,5 +12,9 @@ module EE
super
end
end
def analytics_controllers
['analytics/productivity_analytics', 'analytics/cycle_analytics']
end
end
end
- if dashboard_nav_link?(:analytics)
= nav_link(controller: analytics_controllers, html_options: { class: "d-none d-xl-block" }) do
= link_to analytics_root_path do
= _('Analytics')
- if dashboard_nav_link?(:analytics)
= nav_link(controller: analytics_controllers) do
= link_to analytics_root_path do
= _('Analytics')
---
title: Add analytics top navigation link
merge_request: 14377
author:
type: added
......@@ -3,6 +3,35 @@
require 'spec_helper'
describe DashboardHelper, type: :helper do
let(:user) { build(:user) }
before do
allow(helper).to receive(:current_user).and_return(user)
allow(helper).to receive(:can?) { true }
end
describe '#dashboard_nav_links' do
context 'when analytics is enabled' do
before do
stub_feature_flags(analytics: true)
end
it 'includes analytics' do
expect(helper.dashboard_nav_links).to include(:analytics)
end
end
context 'when analytics is disabled' do
before do
stub_feature_flags(analytics: false)
end
it 'does not include analytics' do
expect(helper.dashboard_nav_links).not_to include(:analytics)
end
end
end
describe '.has_start_trial?' do
using RSpec::Parameterized::TableSyntax
......
......@@ -12,7 +12,7 @@ describe DashboardHelper do
it 'has all the expected links by default' do
menu_items = [:projects, :groups, :activity, :milestones, :snippets]
expect(helper.dashboard_nav_links).to contain_exactly(*menu_items)
expect(helper.dashboard_nav_links).to include(*menu_items)
end
it 'does not contain cross project elements when the user cannot read cross project' do
......
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