1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
# frozen_string_literal: true
module NavHelper
extend self
def header_links
@header_links ||= get_header_links
end
def header_link?(link)
header_links.include?(link)
end
def page_has_sidebar?
defined?(@left_sidebar) && @left_sidebar
end
def page_has_collapsed_sidebar?
page_has_sidebar? && collapsed_sidebar?
end
def page_has_collapsed_super_sidebar?
page_has_sidebar? && collapsed_super_sidebar?
end
def page_with_sidebar_class
class_name = page_gutter_class
if show_super_sidebar?
class_name << 'page-with-super-sidebar' if page_has_sidebar?
class_name << 'page-with-super-sidebar-collapsed' if page_has_collapsed_super_sidebar?
else
class_name << 'page-with-contextual-sidebar' if page_has_sidebar?
class_name << 'page-with-icon-sidebar' if page_has_collapsed_sidebar?
end
class_name -= ['right-sidebar-expanded'] if defined?(@right_sidebar) && !@right_sidebar
class_name
end
def page_gutter_class
moved_sidebar_enabled = current_controller?('merge_requests') && moved_mr_sidebar_enabled?
if (page_has_markdown? || current_path?('projects/merge_requests#diffs')) && !current_controller?('conflicts')
if cookies[:collapsed_gutter] == 'true'
["page-gutter", ('right-sidebar-collapsed' unless moved_sidebar_enabled).to_s]
else
["page-gutter", ('right-sidebar-expanded' unless moved_sidebar_enabled).to_s]
end
elsif current_path?('jobs#show')
%w[page-gutter build-sidebar right-sidebar-expanded]
elsif current_controller?('wikis') && current_action?('show', 'create', 'edit', 'update', 'history', 'git_access', 'destroy', 'diff')
%w[page-gutter wiki-sidebar right-sidebar-expanded]
else
[]
end
end
def nav_control_class
"nav-control" if current_user
end
def user_dropdown_class
class_names = []
class_names << 'header-user-dropdown-toggle'
class_names << 'impersonated-user' if session[:impersonator_id]
class_names
end
def page_has_markdown?
current_path?('projects/merge_requests#show') ||
current_path?('projects/merge_requests/conflicts#show') ||
current_path?('issues#show') ||
current_path?('milestones#show') ||
current_path?('issues#designs') ||
current_path?('incidents#show')
end
def admin_monitoring_nav_links
%w(system_info background_migrations background_jobs health_check)
end
def admin_analytics_nav_links
%w(dev_ops_report usage_trends)
end
def show_super_sidebar?(user = current_user)
# The new sidebar is not enabled for anonymous use
# Once we enable the new sidebar by default, this
# should return true
return Feature.enabled?(:super_sidebar_logged_out) unless user
# Users who got the special `super_sidebar_nav_enrolled` enabled,
# see the new nav as long as they don't explicitly opt-out via the toggle
if user.use_new_navigation.nil? && Feature.enabled?(:super_sidebar_nav_enrolled, user)
true
else
!!user.use_new_navigation
end
end
private
def get_header_links
links = if current_user
[:user_dropdown]
else
[:sign_in]
end
if can?(current_user, :read_cross_project)
links += [:issues, :merge_requests, :todos] if current_user.present?
end
if @project&.persisted? || can?(current_user, :read_cross_project)
links << :search
end
if session[:impersonator_id]
links << :admin_impersonation
end
if Gitlab::CurrentSettings.admin_mode && current_user_mode.admin_mode?
links << :admin_mode
end
links
end
end
NavHelper.prepend_mod_with('NavHelper')
|