summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-03-29 15:10:35 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-03-29 15:10:35 +0000
commit6407b5a4c13e34323d50ac3a39fda74e54d09306 (patch)
tree1461aebeda6e0b5359283a41381f780ab639f821 /lib
parent1a8b381312dc666a93c1bc3879ad15b1350de300 (diff)
downloadgitlab-ce-6407b5a4c13e34323d50ac3a39fda74e54d09306.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r--lib/sidebars/concerns/super_sidebar_panel.rb2
-rw-r--r--lib/sidebars/menu.rb9
-rw-r--r--lib/sidebars/projects/menus/analytics_menu.rb15
-rw-r--r--lib/sidebars/projects/menus/repository_menu.rb17
-rw-r--r--lib/sidebars/projects/menus/security_compliance_menu.rb7
-rw-r--r--lib/sidebars/projects/menus/snippets_menu.rb3
-rw-r--r--lib/sidebars/projects/super_sidebar_menus/analyze_menu.rb34
-rw-r--r--lib/sidebars/projects/super_sidebar_menus/build_menu.rb19
-rw-r--r--lib/sidebars/projects/super_sidebar_menus/code_menu.rb33
-rw-r--r--lib/sidebars/projects/super_sidebar_menus/manage_menu.rb19
-rw-r--r--lib/sidebars/projects/super_sidebar_menus/monitor_menu.rb19
-rw-r--r--lib/sidebars/projects/super_sidebar_menus/operations_menu.rb2
-rw-r--r--lib/sidebars/projects/super_sidebar_menus/plan_menu.rb2
-rw-r--r--lib/sidebars/projects/super_sidebar_menus/secure_menu.rb34
-rw-r--r--lib/sidebars/projects/super_sidebar_panel.rb16
15 files changed, 206 insertions, 25 deletions
diff --git a/lib/sidebars/concerns/super_sidebar_panel.rb b/lib/sidebars/concerns/super_sidebar_panel.rb
index 5f3607debbc..1764aad034c 100644
--- a/lib/sidebars/concerns/super_sidebar_panel.rb
+++ b/lib/sidebars/concerns/super_sidebar_panel.rb
@@ -50,7 +50,7 @@ module Sidebars
if menu_item.super_sidebar_before
menus[idx].insert_item_before(menu_item.super_sidebar_before, menu_item)
else
- menus[idx].add_item(menu_item)
+ menus[idx].replace_placeholder(menu_item)
end
end
end
diff --git a/lib/sidebars/menu.rb b/lib/sidebars/menu.rb
index 03995362ff0..432cc6ebc8b 100644
--- a/lib/sidebars/menu.rb
+++ b/lib/sidebars/menu.rb
@@ -117,6 +117,15 @@ module Sidebars
insert_element_after(@items, after_item, new_item)
end
+ def replace_placeholder(item)
+ idx = @items.index { |e| e.item_id == item.item_id && e.is_a?(::Sidebars::NilMenuItem) }
+ if idx.nil?
+ add_item(item)
+ else
+ replace_element(@items, item.item_id, item)
+ end
+ end
+
override :container_html_options
def container_html_options
super.tap do |html_options|
diff --git a/lib/sidebars/projects/menus/analytics_menu.rb b/lib/sidebars/projects/menus/analytics_menu.rb
index fae2efd91de..96b50cdfcd1 100644
--- a/lib/sidebars/projects/menus/analytics_menu.rb
+++ b/lib/sidebars/projects/menus/analytics_menu.rb
@@ -41,9 +41,9 @@ module Sidebars
'chart'
end
- override :pick_into_super_sidebar?
- def pick_into_super_sidebar?
- true
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
end
private
@@ -57,8 +57,9 @@ module Sidebars
end
::Sidebars::MenuItem.new(
- title: _('CI/CD'),
+ title: context.is_super_sidebar ? _('CI/CD analytics') : _('CI/CD'),
link: charts_project_pipelines_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu,
active_routes: { path: 'pipelines#charts' },
item_id: :ci_cd_analytics
)
@@ -70,8 +71,9 @@ module Sidebars
end
::Sidebars::MenuItem.new(
- title: _('Repository'),
+ title: context.is_super_sidebar ? _('Repository analytics') : _('Repository'),
link: charts_project_graph_path(context.project, context.current_ref),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu,
container_html_options: { class: 'shortcuts-repository-charts' },
active_routes: { path: 'graphs#charts' },
item_id: :repository_analytics
@@ -85,8 +87,9 @@ module Sidebars
end
::Sidebars::MenuItem.new(
- title: _('Value stream'),
+ title: context.is_super_sidebar ? _('Value stream analytics') : _('Value stream'),
link: project_cycle_analytics_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu,
container_html_options: { class: 'shortcuts-project-cycle-analytics' },
active_routes: { path: 'cycle_analytics#show' },
item_id: :cycle_analytics
diff --git a/lib/sidebars/projects/menus/repository_menu.rb b/lib/sidebars/projects/menus/repository_menu.rb
index 158a29f0b31..157dd379ed7 100644
--- a/lib/sidebars/projects/menus/repository_menu.rb
+++ b/lib/sidebars/projects/menus/repository_menu.rb
@@ -44,17 +44,18 @@ module Sidebars
'doc-text'
end
- override :pick_into_super_sidebar?
- def pick_into_super_sidebar?
- true
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
end
private
def files_menu_item
::Sidebars::MenuItem.new(
- title: _('Files'),
+ title: context.is_super_sidebar ? _('Repository') : _('Files'),
link: project_tree_path(context.project, context.current_ref),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
active_routes: { controller: %w[tree blob blame edit_tree new_tree find_file] },
item_id: :files
)
@@ -66,6 +67,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Commits'),
link: link,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
active_routes: { controller: %w(commit commits) },
item_id: :commits,
container_html_options: { id: 'js-onboarding-commits-link' }
@@ -76,6 +78,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Branches'),
link: project_branches_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
active_routes: { controller: :branches },
item_id: :branches,
container_html_options: { id: 'js-onboarding-branches-link' }
@@ -86,6 +89,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Tags'),
link: project_tags_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
item_id: :tags,
active_routes: { controller: :tags }
)
@@ -99,6 +103,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Contributor statistics'),
link: link,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu,
active_routes: { path: 'graphs#show' },
item_id: :contributors
)
@@ -108,8 +113,9 @@ module Sidebars
link = project_network_path(context.project, context.current_ref, ref_type: ref_type_from_context(context))
::Sidebars::MenuItem.new(
- title: _('Graph'),
+ title: context.is_super_sidebar ? _('Repository graph') : _('Graph'),
link: link,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
active_routes: { controller: :network },
item_id: :graphs
)
@@ -118,6 +124,7 @@ module Sidebars
def compare_menu_item
::Sidebars::MenuItem.new(
title: _('Compare revisions'),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
link: project_compare_index_path(context.project, from: context.project.repository.root_ref, to: context.current_ref),
active_routes: { controller: :compare },
item_id: :compare
diff --git a/lib/sidebars/projects/menus/security_compliance_menu.rb b/lib/sidebars/projects/menus/security_compliance_menu.rb
index eb713244a7c..0f009bff12a 100644
--- a/lib/sidebars/projects/menus/security_compliance_menu.rb
+++ b/lib/sidebars/projects/menus/security_compliance_menu.rb
@@ -25,9 +25,9 @@ module Sidebars
'shield'
end
- override :pick_into_super_sidebar?
- def pick_into_super_sidebar?
- true
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
end
private
@@ -40,6 +40,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Security configuration'),
link: project_security_configuration_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::SecureMenu,
active_routes: { path: configuration_menu_item_paths },
item_id: :configuration
)
diff --git a/lib/sidebars/projects/menus/snippets_menu.rb b/lib/sidebars/projects/menus/snippets_menu.rb
index 535f12963b1..ba458f9f5e9 100644
--- a/lib/sidebars/projects/menus/snippets_menu.rb
+++ b/lib/sidebars/projects/menus/snippets_menu.rb
@@ -39,8 +39,7 @@ module Sidebars
override :serialize_as_menu_item_args
def serialize_as_menu_item_args
super.deep_merge({
- super_sidebar_parent: ::Sidebars::Projects::Menus::RepositoryMenu,
- super_sidebar_before: :contributors,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
item_id: :project_snippets
})
end
diff --git a/lib/sidebars/projects/super_sidebar_menus/analyze_menu.rb b/lib/sidebars/projects/super_sidebar_menus/analyze_menu.rb
new file mode 100644
index 00000000000..2d1b4c0c495
--- /dev/null
+++ b/lib/sidebars/projects/super_sidebar_menus/analyze_menu.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+module Sidebars
+ module Projects
+ module SuperSidebarMenus
+ class AnalyzeMenu < ::Sidebars::Menu
+ override :title
+ def title
+ s_('Navigation|Analyze')
+ end
+
+ override :sprite_icon
+ def sprite_icon
+ 'chart'
+ end
+
+ override :configure_menu_items
+ def configure_menu_items
+ [
+ :dashboards_analytics,
+ :cycle_analytics,
+ :contributors,
+ :ci_cd_analytics,
+ :repository_analytics,
+ :code_review,
+ :merge_requests,
+ :issues,
+ :insights
+ ].each { |id| add_item(::Sidebars::NilMenuItem.new(item_id: id)) }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/sidebars/projects/super_sidebar_menus/build_menu.rb b/lib/sidebars/projects/super_sidebar_menus/build_menu.rb
new file mode 100644
index 00000000000..0a7879136ac
--- /dev/null
+++ b/lib/sidebars/projects/super_sidebar_menus/build_menu.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module Sidebars
+ module Projects
+ module SuperSidebarMenus
+ class BuildMenu < ::Sidebars::Menu
+ override :title
+ def title
+ s_('Navigation|Build')
+ end
+
+ override :sprite_icon
+ def sprite_icon
+ 'rocket'
+ end
+ end
+ end
+ end
+end
diff --git a/lib/sidebars/projects/super_sidebar_menus/code_menu.rb b/lib/sidebars/projects/super_sidebar_menus/code_menu.rb
new file mode 100644
index 00000000000..a201312f8ce
--- /dev/null
+++ b/lib/sidebars/projects/super_sidebar_menus/code_menu.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+module Sidebars
+ module Projects
+ module SuperSidebarMenus
+ class CodeMenu < ::Sidebars::Menu
+ override :title
+ def title
+ s_('Navigation|Code')
+ end
+
+ override :sprite_icon
+ def sprite_icon
+ 'code'
+ end
+
+ override :configure_menu_items
+ def configure_menu_items
+ [
+ :files,
+ :branches,
+ :commits,
+ :tags,
+ :graphs,
+ :compare,
+ :project_snippets,
+ :file_locks
+ ].each { |id| add_item(::Sidebars::NilMenuItem.new(item_id: id)) }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/sidebars/projects/super_sidebar_menus/manage_menu.rb b/lib/sidebars/projects/super_sidebar_menus/manage_menu.rb
new file mode 100644
index 00000000000..72743910411
--- /dev/null
+++ b/lib/sidebars/projects/super_sidebar_menus/manage_menu.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module Sidebars
+ module Projects
+ module SuperSidebarMenus
+ class ManageMenu < ::Sidebars::Menu
+ override :title
+ def title
+ s_('Navigation|Manage')
+ end
+
+ override :sprite_icon
+ def sprite_icon
+ 'users'
+ end
+ end
+ end
+ end
+end
diff --git a/lib/sidebars/projects/super_sidebar_menus/monitor_menu.rb b/lib/sidebars/projects/super_sidebar_menus/monitor_menu.rb
new file mode 100644
index 00000000000..40981813cb6
--- /dev/null
+++ b/lib/sidebars/projects/super_sidebar_menus/monitor_menu.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module Sidebars
+ module Projects
+ module SuperSidebarMenus
+ class MonitorMenu < ::Sidebars::Menu
+ override :title
+ def title
+ s_('Navigation|Monitor')
+ end
+
+ override :sprite_icon
+ def sprite_icon
+ 'monitor'
+ end
+ end
+ end
+ end
+end
diff --git a/lib/sidebars/projects/super_sidebar_menus/operations_menu.rb b/lib/sidebars/projects/super_sidebar_menus/operations_menu.rb
index 5490aac5a65..2688860017a 100644
--- a/lib/sidebars/projects/super_sidebar_menus/operations_menu.rb
+++ b/lib/sidebars/projects/super_sidebar_menus/operations_menu.rb
@@ -6,7 +6,7 @@ module Sidebars
class OperationsMenu < ::Sidebars::Menu
override :title
def title
- _('Operations')
+ s_('Navigation|Operate')
end
override :sprite_icon
diff --git a/lib/sidebars/projects/super_sidebar_menus/plan_menu.rb b/lib/sidebars/projects/super_sidebar_menus/plan_menu.rb
index ae9b2d826b7..787d096cabf 100644
--- a/lib/sidebars/projects/super_sidebar_menus/plan_menu.rb
+++ b/lib/sidebars/projects/super_sidebar_menus/plan_menu.rb
@@ -6,7 +6,7 @@ module Sidebars
class PlanMenu < ::Sidebars::Menu
override :title
def title
- _('Plan')
+ s_('Navigation|Plan')
end
override :sprite_icon
diff --git a/lib/sidebars/projects/super_sidebar_menus/secure_menu.rb b/lib/sidebars/projects/super_sidebar_menus/secure_menu.rb
new file mode 100644
index 00000000000..8639e3dbb1d
--- /dev/null
+++ b/lib/sidebars/projects/super_sidebar_menus/secure_menu.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+module Sidebars
+ module Projects
+ module SuperSidebarMenus
+ class SecureMenu < ::Sidebars::Menu
+ override :title
+ def title
+ s_('Navigation|Secure')
+ end
+
+ override :sprite_icon
+ def sprite_icon
+ 'shield'
+ end
+
+ override :configure_menu_items
+ def configure_menu_items
+ [
+ :discover_project_security,
+ :audit_events,
+ :dashboard,
+ :vulnerability_report,
+ :on_demand_scans,
+ :scan_policies,
+ :dependency_list,
+ :license_compliance,
+ :configuration
+ ].each { |id| add_item(::Sidebars::NilMenuItem.new(item_id: id)) }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/sidebars/projects/super_sidebar_panel.rb b/lib/sidebars/projects/super_sidebar_panel.rb
index f76f28eb642..640666fd968 100644
--- a/lib/sidebars/projects/super_sidebar_panel.rb
+++ b/lib/sidebars/projects/super_sidebar_panel.rb
@@ -13,16 +13,20 @@ module Sidebars
@menus = []
add_menu(Sidebars::StaticMenu.new(context))
+ add_menu(Sidebars::Projects::SuperSidebarMenus::ManageMenu.new(context))
add_menu(Sidebars::Projects::SuperSidebarMenus::PlanMenu.new(context))
-
+ add_menu(Sidebars::Projects::SuperSidebarMenus::CodeMenu.new(context))
+ add_menu(Sidebars::Projects::SuperSidebarMenus::BuildMenu.new(context))
+ add_menu(Sidebars::Projects::SuperSidebarMenus::SecureMenu.new(context))
+ add_menu(Sidebars::Projects::SuperSidebarMenus::OperationsMenu.new(context))
+ add_menu(Sidebars::Projects::SuperSidebarMenus::MonitorMenu.new(context))
+ add_menu(Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu.new(context))
+
+ # Pick old menus, will be obsolete once everything is in their own
+ # super sidebar menu
pick_from_old_menus(old_menus)
insert_menu_before(
- Sidebars::Projects::Menus::MonitorMenu,
- Sidebars::Projects::SuperSidebarMenus::OperationsMenu.new(context)
- )
-
- insert_menu_before(
Sidebars::Projects::Menus::SettingsMenu,
Sidebars::UncategorizedMenu.new(context)
)