Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sidebars/projects/menus')
-rw-r--r--lib/sidebars/projects/menus/analytics_menu.rb14
-rw-r--r--lib/sidebars/projects/menus/ci_cd_menu.rb18
-rw-r--r--lib/sidebars/projects/menus/confluence_menu.rb8
-rw-r--r--lib/sidebars/projects/menus/deployments_menu.rb11
-rw-r--r--lib/sidebars/projects/menus/external_issue_tracker_menu.rb8
-rw-r--r--lib/sidebars/projects/menus/external_wiki_menu.rb8
-rw-r--r--lib/sidebars/projects/menus/infrastructure_menu.rb50
-rw-r--r--lib/sidebars/projects/menus/invite_team_members_menu.rb47
-rw-r--r--lib/sidebars/projects/menus/issues_menu.rb28
-rw-r--r--lib/sidebars/projects/menus/merge_requests_menu.rb17
-rw-r--r--lib/sidebars/projects/menus/monitor_menu.rb26
-rw-r--r--lib/sidebars/projects/menus/packages_registries_menu.rb28
-rw-r--r--lib/sidebars/projects/menus/project_information_menu.rb8
-rw-r--r--lib/sidebars/projects/menus/repository_menu.rb24
-rw-r--r--lib/sidebars/projects/menus/scope_menu.rb10
-rw-r--r--lib/sidebars/projects/menus/security_compliance_menu.rb10
-rw-r--r--lib/sidebars/projects/menus/settings_menu.rb12
-rw-r--r--lib/sidebars/projects/menus/snippets_menu.rb8
-rw-r--r--lib/sidebars/projects/menus/wiki_menu.rb8
19 files changed, 249 insertions, 94 deletions
diff --git a/lib/sidebars/projects/menus/analytics_menu.rb b/lib/sidebars/projects/menus/analytics_menu.rb
index 643b7ebcd5a..96b50cdfcd1 100644
--- a/lib/sidebars/projects/menus/analytics_menu.rb
+++ b/lib/sidebars/projects/menus/analytics_menu.rb
@@ -41,6 +41,11 @@ module Sidebars
'chart'
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
+ end
+
private
def ci_cd_analytics_menu_item
@@ -52,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
)
@@ -65,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
@@ -80,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/ci_cd_menu.rb b/lib/sidebars/projects/menus/ci_cd_menu.rb
index 5df99bb9d84..02596b16cfa 100644
--- a/lib/sidebars/projects/menus/ci_cd_menu.rb
+++ b/lib/sidebars/projects/menus/ci_cd_menu.rb
@@ -39,12 +39,18 @@ module Sidebars
'rocket'
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
+ end
+
private
def pipelines_menu_item
::Sidebars::MenuItem.new(
title: _('Pipelines'),
link: project_pipelines_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::BuildMenu,
container_html_options: { class: 'shortcuts-pipelines' },
active_routes: { path: pipelines_routes },
item_id: :pipelines
@@ -73,8 +79,9 @@ module Sidebars
}
::Sidebars::MenuItem.new(
- title: s_('Pipelines|Editor'),
+ title: context.is_super_sidebar ? _('Pipeline editor') : s_('Pipelines|Editor'),
link: project_ci_pipeline_editor_path(context.project, params),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::BuildMenu,
active_routes: { path: 'projects/ci/pipeline_editor#show' },
item_id: :pipelines_editor
)
@@ -84,6 +91,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Jobs'),
link: project_jobs_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::BuildMenu,
container_html_options: { class: 'shortcuts-builds' },
active_routes: { controller: :jobs },
item_id: :jobs
@@ -91,13 +99,10 @@ module Sidebars
end
def artifacts_menu_item
- unless Feature.enabled?(:artifacts_management_page, context.project)
- return ::Sidebars::NilMenuItem.new(item_id: :artifacts)
- end
-
::Sidebars::MenuItem.new(
title: _('Artifacts'),
link: project_artifacts_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::BuildMenu,
container_html_options: { class: 'shortcuts-builds' },
active_routes: { path: 'artifacts#index' },
item_id: :artifacts
@@ -106,8 +111,9 @@ module Sidebars
def pipeline_schedules_menu_item
::Sidebars::MenuItem.new(
- title: _('Schedules'),
+ title: context.is_super_sidebar ? _('Pipeline schedules') : _('Schedules'),
link: pipeline_schedules_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::BuildMenu,
container_html_options: { class: 'shortcuts-builds' },
active_routes: { controller: :pipeline_schedules },
item_id: :pipeline_schedules
diff --git a/lib/sidebars/projects/menus/confluence_menu.rb b/lib/sidebars/projects/menus/confluence_menu.rb
index 0fd42a57da3..43ef7ac73c4 100644
--- a/lib/sidebars/projects/menus/confluence_menu.rb
+++ b/lib/sidebars/projects/menus/confluence_menu.rb
@@ -42,6 +42,14 @@ module Sidebars
def active_routes
{ controller: :confluences }
end
+
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ super.merge({
+ item_id: :confluence,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::PlanMenu
+ })
+ end
end
end
end
diff --git a/lib/sidebars/projects/menus/deployments_menu.rb b/lib/sidebars/projects/menus/deployments_menu.rb
index 4d4e65e9795..19612fcee85 100644
--- a/lib/sidebars/projects/menus/deployments_menu.rb
+++ b/lib/sidebars/projects/menus/deployments_menu.rb
@@ -34,6 +34,11 @@ module Sidebars
'deployments'
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
+ end
+
private
def feature_flags_menu_item
@@ -42,8 +47,9 @@ module Sidebars
end
::Sidebars::MenuItem.new(
- title: _('Feature Flags'),
+ title: s_('FeatureFlags|Feature flags'),
link: project_feature_flags_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::BuildMenu,
active_routes: { controller: :feature_flags },
container_html_options: { class: 'shortcuts-feature-flags' },
item_id: :feature_flags
@@ -58,6 +64,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Environments'),
link: project_environments_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::BuildMenu,
active_routes: { controller: :environments },
container_html_options: { class: 'shortcuts-environments' },
item_id: :environments
@@ -73,6 +80,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Releases'),
link: project_releases_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::BuildMenu,
item_id: :releases,
active_routes: { controller: :releases },
container_html_options: { class: 'shortcuts-deployments-releases' }
@@ -87,6 +95,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Pages'),
link: project_pages_path(context.project),
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
active_routes: { path: 'pages#show' },
item_id: :pages
)
diff --git a/lib/sidebars/projects/menus/external_issue_tracker_menu.rb b/lib/sidebars/projects/menus/external_issue_tracker_menu.rb
index 136d30f38c3..f088ccce9f5 100644
--- a/lib/sidebars/projects/menus/external_issue_tracker_menu.rb
+++ b/lib/sidebars/projects/menus/external_issue_tracker_menu.rb
@@ -48,6 +48,14 @@ module Sidebars
external_issue_tracker.present?
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ super.merge({
+ item_id: :external_issue_tracker,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::PlanMenu
+ })
+ end
+
private
def external_issue_tracker
diff --git a/lib/sidebars/projects/menus/external_wiki_menu.rb b/lib/sidebars/projects/menus/external_wiki_menu.rb
index 825f0ca5e8b..1af9abc33ff 100644
--- a/lib/sidebars/projects/menus/external_wiki_menu.rb
+++ b/lib/sidebars/projects/menus/external_wiki_menu.rb
@@ -41,6 +41,14 @@ module Sidebars
external_wiki.present?
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ super.merge({
+ item_id: :external_wiki,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::PlanMenu
+ })
+ end
+
private
def external_wiki
diff --git a/lib/sidebars/projects/menus/infrastructure_menu.rb b/lib/sidebars/projects/menus/infrastructure_menu.rb
index 04c9ab77729..b08845a37e6 100644
--- a/lib/sidebars/projects/menus/infrastructure_menu.rb
+++ b/lib/sidebars/projects/menus/infrastructure_menu.rb
@@ -9,8 +9,9 @@ module Sidebars
return false unless feature_enabled?
add_item(kubernetes_menu_item)
- add_item(terraform_menu_item)
+ add_item(terraform_states_menu_item)
add_item(google_cloud_menu_item)
+ add_item(aws_menu_item)
true
end
@@ -32,6 +33,11 @@ module Sidebars
'cloud-gear'
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
+ end
+
private
def feature_enabled?
@@ -39,13 +45,14 @@ module Sidebars
end
def kubernetes_menu_item
- unless can?(context.current_user, :read_cluster, context.project)
+ unless can?(context.current_user, :read_cluster_agent, context.project)
return ::Sidebars::NilMenuItem.new(item_id: :kubernetes)
end
::Sidebars::MenuItem.new(
title: _('Kubernetes clusters'),
link: project_clusters_path(context.project),
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
active_routes: { controller: [:cluster_agents, :clusters] },
container_html_options: { class: 'shortcuts-kubernetes' },
hint_html_options: kubernetes_hint_html_options,
@@ -66,16 +73,37 @@ module Sidebars
auto_devops_help_path: help_page_path('topics/autodevops/index.md') } }
end
- def terraform_menu_item
+ def terraform_states_menu_item
unless can?(context.current_user, :read_terraform_state, context.project)
- return ::Sidebars::NilMenuItem.new(item_id: :terraform)
+ return ::Sidebars::NilMenuItem.new(item_id: :terraform_states)
end
::Sidebars::MenuItem.new(
- title: _('Terraform'),
+ title: s_('Terraform|Terraform states'),
link: project_terraform_index_path(context.project),
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
active_routes: { controller: :terraform },
- item_id: :terraform
+ item_id: :terraform_states
+ )
+ end
+
+ def aws_menu_item
+ enabled_for_user = Feature.enabled?(:cloudseed_aws, context.current_user)
+ enabled_for_group = Feature.enabled?(:cloudseed_aws, context.project.group)
+ enabled_for_project = Feature.enabled?(:cloudseed_aws, context.project)
+ feature_is_enabled = enabled_for_user || enabled_for_group || enabled_for_project
+ user_has_permissions = can?(context.current_user, :admin_project_aws, context.project)
+
+ return ::Sidebars::NilMenuItem.new(item_id: :cloudseed_aws) unless feature_is_enabled && user_has_permissions
+
+ ::Sidebars::MenuItem.new(
+ title: _('AWS'),
+ link: project_aws_path(context.project),
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
+ item_id: :aws,
+ active_routes: { controller: %w[
+ projects/aws/configuration
+ ] }
)
end
@@ -86,13 +114,16 @@ module Sidebars
feature_is_enabled = enabled_for_user || enabled_for_group || enabled_for_project
user_has_permissions = can?(context.current_user, :admin_project_google_cloud, context.project)
- unless feature_is_enabled && user_has_permissions
+ google_oauth2_configured = google_oauth2_configured?
+
+ unless feature_is_enabled && user_has_permissions && google_oauth2_configured
return ::Sidebars::NilMenuItem.new(item_id: :incubation_5mp_google_cloud)
end
::Sidebars::MenuItem.new(
title: _('Google Cloud'),
link: project_google_cloud_configuration_path(context.project),
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
active_routes: { controller: %w[
projects/google_cloud/configuration
projects/google_cloud/service_accounts
@@ -103,6 +134,11 @@ module Sidebars
item_id: :google_cloud
)
end
+
+ def google_oauth2_configured?
+ config = Gitlab::Auth::OAuth::Provider.config_for('google_oauth2')
+ config&.present? && config.app_id.present? && config.app_secret.present?
+ end
end
end
end
diff --git a/lib/sidebars/projects/menus/invite_team_members_menu.rb b/lib/sidebars/projects/menus/invite_team_members_menu.rb
deleted file mode 100644
index 0db49f1e12a..00000000000
--- a/lib/sidebars/projects/menus/invite_team_members_menu.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-# frozen_string_literal: true
-
-module Sidebars
- module Projects
- module Menus
- class InviteTeamMembersMenu < ::Sidebars::Menu
- override :title
- def title
- s_('InviteMember|Invite members')
- end
-
- override :render?
- def render?
- can?(context.current_user, :admin_project_member, context.project) && all_valid_members.size <= 1
- end
-
- override :menu_partial
- def menu_partial
- 'projects/invite_members_side_nav_link'
- end
-
- override :menu_partial_options
- def menu_partial_options
- {
- project: context.project,
- title: title,
- sidebar_menu: self
- }
- end
-
- override :extra_nav_link_html_options
- def extra_nav_link_html_options
- {
- 'data-test-id': 'side-nav-invite-members'
- }
- end
-
- private
-
- def all_valid_members
- MembersFinder.new(context.project, context.current_user)
- .execute(include_relations: [:inherited, :direct, :invited_groups])
- end
- end
- end
- end
-end
diff --git a/lib/sidebars/projects/menus/issues_menu.rb b/lib/sidebars/projects/menus/issues_menu.rb
index 51eea3d850d..dc40b84529f 100644
--- a/lib/sidebars/projects/menus/issues_menu.rb
+++ b/lib/sidebars/projects/menus/issues_menu.rb
@@ -57,7 +57,8 @@ module Sidebars
override :pill_count
def pill_count
strong_memoize(:pill_count) do
- context.project.open_issues_count(context.current_user)
+ count = context.project.open_issues_count(context.current_user)
+ format_cached_count(1000, count)
end
end
@@ -68,16 +69,31 @@ module Sidebars
}
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ super.merge({
+ pill_count: pill_count,
+ has_pill: has_pill?,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::PlanMenu,
+ item_id: :project_issue_list
+ })
+ end
+
private
def show_issues_menu_items?
can?(context.current_user, :read_issue, context.project)
end
+ def multi_issue_boards?
+ context.project.multiple_issue_boards_available?
+ end
+
def list_menu_item
::Sidebars::MenuItem.new(
title: _('List'),
link: project_issues_path(context.project),
+ super_sidebar_parent: ::Sidebars::NilMenuItem,
active_routes: { path: 'projects/issues#index' },
container_html_options: { aria: { label: _('Issues') } },
item_id: :issue_list
@@ -85,12 +101,18 @@ module Sidebars
end
def boards_menu_item
- title = context.project.multiple_issue_boards_available? ? s_('IssueBoards|Boards') : s_('IssueBoards|Board')
+ title = if context.is_super_sidebar
+ multi_issue_boards? ? s_('Issue boards') : s_('Issue board')
+ else
+ multi_issue_boards? ? s_('IssueBoards|Boards') : s_('IssueBoards|Board')
+ end
::Sidebars::MenuItem.new(
title: title,
link: project_boards_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::PlanMenu,
active_routes: { controller: :boards },
+ container_html_options: { class: 'shortcuts-issue-boards' },
item_id: :boards
)
end
@@ -99,6 +121,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Service Desk'),
link: service_desk_project_issues_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::MonitorMenu,
active_routes: { path: 'issues#service_desk' },
item_id: :service_desk
)
@@ -108,6 +131,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Milestones'),
link: project_milestones_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::PlanMenu,
active_routes: { controller: :milestones },
item_id: :milestones
)
diff --git a/lib/sidebars/projects/menus/merge_requests_menu.rb b/lib/sidebars/projects/menus/merge_requests_menu.rb
index 3e543872d36..ae4fd6b02e7 100644
--- a/lib/sidebars/projects/menus/merge_requests_menu.rb
+++ b/lib/sidebars/projects/menus/merge_requests_menu.rb
@@ -46,7 +46,8 @@ module Sidebars
override :pill_count
def pill_count
- @pill_count ||= context.project.open_merge_requests_count
+ count = @pill_count ||= context.project.open_merge_requests_count
+ format_cached_count(1000, count)
end
override :pill_html_options
@@ -59,11 +60,21 @@ module Sidebars
override :active_routes
def active_routes
if context.project.issues_enabled?
- { controller: 'projects/merge_requests' }
+ { controller: ['projects/merge_requests', :conflicts] }
else
- { controller: ['projects/merge_requests', :milestones] }
+ { controller: ['projects/merge_requests', :milestones, :conflicts] }
end
end
+
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ super.merge({
+ pill_count: pill_count,
+ has_pill: has_pill?,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
+ item_id: :project_merge_request_list
+ })
+ end
end
end
end
diff --git a/lib/sidebars/projects/menus/monitor_menu.rb b/lib/sidebars/projects/menus/monitor_menu.rb
index 7d1fa8b8fa7..f1fc9f70ef8 100644
--- a/lib/sidebars/projects/menus/monitor_menu.rb
+++ b/lib/sidebars/projects/menus/monitor_menu.rb
@@ -12,7 +12,6 @@ module Sidebars
add_item(error_tracking_menu_item)
add_item(alert_management_menu_item)
add_item(incidents_menu_item)
- add_item(airflow_dashboard_menu_item)
true
end
@@ -39,6 +38,11 @@ module Sidebars
{ controller: [:user, :gcp] }
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
+ end
+
private
def feature_enabled?
@@ -46,6 +50,8 @@ module Sidebars
end
def metrics_dashboard_menu_item
+ return ::Sidebars::NilMenuItem.new(item_id: :metrics) if Feature.enabled?(:remove_monitor_metrics)
+
unless can?(context.current_user, :metrics_dashboard, context.project)
return ::Sidebars::NilMenuItem.new(item_id: :metrics)
end
@@ -53,6 +59,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Metrics'),
link: project_metrics_dashboard_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::MonitorMenu,
active_routes: { path: 'metrics_dashboard#show' },
container_html_options: { class: 'shortcuts-metrics' },
item_id: :metrics
@@ -67,6 +74,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Error Tracking'),
link: project_error_tracking_index_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::MonitorMenu,
active_routes: { controller: :error_tracking },
item_id: :error_tracking
)
@@ -80,6 +88,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Alerts'),
link: project_alert_management_index_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::MonitorMenu,
active_routes: { controller: :alert_management },
item_id: :alert_management
)
@@ -93,24 +102,11 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Incidents'),
link: project_incidents_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::MonitorMenu,
active_routes: { controller: [:incidents, :incident_management] },
item_id: :incidents
)
end
-
- def airflow_dashboard_menu_item
- unless can?(context.current_user, :read_airflow_dags, context.project) &&
- Feature.enabled?(:airflow_dags, context.project)
- return ::Sidebars::NilMenuItem.new(item_id: :airflow)
- end
-
- ::Sidebars::MenuItem.new(
- title: _('Airflow'),
- link: project_airflow_dags_path(context.project),
- active_routes: { path: 'airflow/dags#show' },
- item_id: :airflow_dags
- )
- end
end
end
end
diff --git a/lib/sidebars/projects/menus/packages_registries_menu.rb b/lib/sidebars/projects/menus/packages_registries_menu.rb
index fc7c564574a..31a1aa56ab5 100644
--- a/lib/sidebars/projects/menus/packages_registries_menu.rb
+++ b/lib/sidebars/projects/menus/packages_registries_menu.rb
@@ -10,6 +10,7 @@ module Sidebars
add_item(container_registry_menu_item)
add_item(infrastructure_registry_menu_item)
add_item(harbor_registry_menu_item)
+ add_item(model_experiments_menu_item)
true
end
@@ -23,6 +24,11 @@ module Sidebars
'package'
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
+ end
+
private
def packages_registry_menu_item
@@ -33,6 +39,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Package Registry'),
link: project_packages_path(context.project),
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
active_routes: { controller: :packages },
item_id: :packages_registry,
container_html_options: { class: 'shortcuts-container-registry' }
@@ -47,6 +54,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Container Registry'),
link: project_container_registry_index_path(context.project),
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
active_routes: { controller: 'projects/registry/repositories' },
item_id: :container_registry
)
@@ -58,8 +66,9 @@ module Sidebars
end
::Sidebars::MenuItem.new(
- title: _('Infrastructure Registry'),
+ title: _('Terraform modules'),
link: project_infrastructure_registry_index_path(context.project),
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
active_routes: { controller: :infrastructure_registry },
item_id: :infrastructure_registry
)
@@ -75,11 +84,26 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Harbor Registry'),
link: project_harbor_repositories_path(context.project),
- active_routes: { controller: :harbor_registry },
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::OperationsMenu,
+ active_routes: { controller: 'projects/harbor/repositories' },
item_id: :harbor_registry
)
end
+ def model_experiments_menu_item
+ if Feature.disabled?(:ml_experiment_tracking, context.project)
+ return ::Sidebars::NilMenuItem.new(item_id: :model_experiments)
+ end
+
+ ::Sidebars::MenuItem.new(
+ title: _('Model experiments'),
+ link: project_ml_experiments_path(context.project),
+ super_sidebar_parent: Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu,
+ active_routes: { controller: %w[projects/ml/experiments projects/ml/candidates] },
+ item_id: :model_experiments
+ )
+ end
+
def packages_registry_disabled?
!::Gitlab.config.packages.enabled ||
!can?(context.current_user, :read_package, context.project&.packages_policy_subject)
diff --git a/lib/sidebars/projects/menus/project_information_menu.rb b/lib/sidebars/projects/menus/project_information_menu.rb
index 44b94ee3522..6ab7e00dad3 100644
--- a/lib/sidebars/projects/menus/project_information_menu.rb
+++ b/lib/sidebars/projects/menus/project_information_menu.rb
@@ -33,12 +33,18 @@ module Sidebars
'project'
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
+ end
+
private
def activity_menu_item
::Sidebars::MenuItem.new(
title: _('Activity'),
link: activity_project_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::ManageMenu,
active_routes: { path: 'projects#activity' },
item_id: :activity,
container_html_options: { class: 'shortcuts-project-activity' }
@@ -53,6 +59,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Labels'),
link: project_labels_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::ManageMenu,
active_routes: { controller: :labels },
item_id: :labels
)
@@ -66,6 +73,7 @@ module Sidebars
::Sidebars::MenuItem.new(
title: _('Members'),
link: project_project_members_path(context.project),
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::ManageMenu,
active_routes: { controller: :project_members },
item_id: :members,
container_html_options: {
diff --git a/lib/sidebars/projects/menus/repository_menu.rb b/lib/sidebars/projects/menus/repository_menu.rb
index ec91ae741fe..22f7b553884 100644
--- a/lib/sidebars/projects/menus/repository_menu.rb
+++ b/lib/sidebars/projects/menus/repository_menu.rb
@@ -44,13 +44,20 @@ module Sidebars
'doc-text'
end
+ 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] },
+ container_html_options: { class: 'shortcuts-tree' },
item_id: :files
)
end
@@ -61,9 +68,10 @@ 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' }
+ container_html_options: { id: 'js-onboarding-commits-link', class: 'shortcuts-commits' }
)
end
@@ -71,6 +79,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' }
@@ -81,6 +90,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 }
)
@@ -92,8 +102,9 @@ module Sidebars
link = project_graph_path(context.project, context.current_ref, ref_type: ref_type_from_context(context))
::Sidebars::MenuItem.new(
- title: _('Contributors'),
+ title: _('Contributor statistics'),
link: link,
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu,
active_routes: { path: 'graphs#show' },
item_id: :contributors
)
@@ -103,16 +114,19 @@ 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 },
+ container_html_options: { class: 'shortcuts-network' },
item_id: :graphs
)
end
def compare_menu_item
::Sidebars::MenuItem.new(
- title: _('Compare'),
+ 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/scope_menu.rb b/lib/sidebars/projects/menus/scope_menu.rb
index 35502c7ea09..7e2286633e5 100644
--- a/lib/sidebars/projects/menus/scope_menu.rb
+++ b/lib/sidebars/projects/menus/scope_menu.rb
@@ -39,6 +39,16 @@ module Sidebars
def render?
true
end
+
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ super.merge({
+ title: _('Project overview'),
+ sprite_icon: 'project',
+ super_sidebar_parent: ::Sidebars::StaticMenu,
+ item_id: :project_overview
+ })
+ end
end
end
end
diff --git a/lib/sidebars/projects/menus/security_compliance_menu.rb b/lib/sidebars/projects/menus/security_compliance_menu.rb
index 9367514cdca..0f009bff12a 100644
--- a/lib/sidebars/projects/menus/security_compliance_menu.rb
+++ b/lib/sidebars/projects/menus/security_compliance_menu.rb
@@ -17,7 +17,7 @@ module Sidebars
override :title
def title
- _('Security & Compliance')
+ _('Security and Compliance')
end
override :sprite_icon
@@ -25,6 +25,11 @@ module Sidebars
'shield'
end
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ nil
+ end
+
private
def configuration_menu_item
@@ -33,8 +38,9 @@ module Sidebars
end
::Sidebars::MenuItem.new(
- title: _('Configuration'),
+ 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/settings_menu.rb b/lib/sidebars/projects/menus/settings_menu.rb
index eea32d8b626..9ed142f7f60 100644
--- a/lib/sidebars/projects/menus/settings_menu.rb
+++ b/lib/sidebars/projects/menus/settings_menu.rb
@@ -44,6 +44,16 @@ module Sidebars
'settings'
end
+ override :pick_into_super_sidebar?
+ def pick_into_super_sidebar?
+ true
+ end
+
+ override :separated?
+ def separated?
+ true
+ end
+
private
def general_menu_item
@@ -163,7 +173,7 @@ module Sidebars
title: _('Merge requests'),
link: project_settings_merge_requests_path(context.project),
active_routes: { path: 'projects/settings/merge_requests#show' },
- item_id: :merge_requests
+ item_id: context.is_super_sidebar ? :merge_request_settings : :merge_requests
)
end
end
diff --git a/lib/sidebars/projects/menus/snippets_menu.rb b/lib/sidebars/projects/menus/snippets_menu.rb
index 060341b3c51..ba458f9f5e9 100644
--- a/lib/sidebars/projects/menus/snippets_menu.rb
+++ b/lib/sidebars/projects/menus/snippets_menu.rb
@@ -35,6 +35,14 @@ module Sidebars
def active_routes
{ controller: :snippets }
end
+
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ super.deep_merge({
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::CodeMenu,
+ item_id: :project_snippets
+ })
+ end
end
end
end
diff --git a/lib/sidebars/projects/menus/wiki_menu.rb b/lib/sidebars/projects/menus/wiki_menu.rb
index 3980b193fd1..d800dae8be3 100644
--- a/lib/sidebars/projects/menus/wiki_menu.rb
+++ b/lib/sidebars/projects/menus/wiki_menu.rb
@@ -35,6 +35,14 @@ module Sidebars
def active_routes
{ controller: :wikis }
end
+
+ override :serialize_as_menu_item_args
+ def serialize_as_menu_item_args
+ super.merge({
+ super_sidebar_parent: ::Sidebars::Projects::SuperSidebarMenus::PlanMenu,
+ item_id: :project_wiki
+ })
+ end
end
end
end