diff options
Diffstat (limited to 'lib/sidebars/projects/menus')
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 |