%aside.nav-sidebar{ class: ("sidebar-collapsed-desktop" if collapsed_sidebar?), 'aria-label': _('Admin navigation'), data: { qa_selector: 'admin_sidebar_content' } } .nav-sidebar-inner-scroll .context-header = link_to admin_root_path, title: _('Admin Overview'), class: 'has-tooltip', data: { container: 'body', placement: 'right' } do %span{ class: ['avatar-container', 'settings-avatar', 'rect-avatar', 's32'] } = sprite_icon('admin', size: 18) %span.sidebar-context-title = _('Admin Area') %ul.sidebar-top-level-items{ data: { qa_selector: 'admin_overview_submenu_content' } } = nav_link(controller: %w[dashboard admin admin/projects users groups admin/topics gitaly_servers cohorts], html_options: {class: 'home'}) do = link_to admin_root_path, class: 'has-sub-items' do .nav-icon-container = sprite_icon('overview') %span.nav-item-name = _('Overview') %ul.sidebar-sub-level-items = nav_link(controller: %w[dashboard admin admin/projects users groups gitaly_servers cohorts], html_options: { class: "fly-out-top-item" }) do = link_to admin_root_path do %strong.fly-out-top-item-name = _('Overview') %li.divider.fly-out-top-item = nav_link(controller: :dashboard, html_options: {class: 'home'}) do = link_to admin_root_path, title: _('Overview') do %span = _('Dashboard') = nav_link(controller: [:admin, 'admin/projects']) do = link_to admin_projects_path, title: _('Projects') do %span = _('Projects') = nav_link(controller: %w[users cohorts]) do = link_to admin_users_path, title: _('Users'), data: { qa_selector: 'admin_overview_users_link' } do %span = _('Users') = nav_link(controller: :groups) do = link_to admin_groups_path, title: _('Groups'), data: { qa_selector: 'admin_overview_groups_link' } do %span = _('Groups') = nav_link(controller: [:admin, 'admin/topics']) do = link_to admin_topics_path, title: _('Topics') do %span = _('Topics') = nav_link(controller: :gitaly_servers) do = link_to admin_gitaly_servers_path, title: 'Gitaly Servers' do %span = _('Gitaly Servers') = nav_link(controller: %w[runners jobs]) do = link_to admin_runners_path, class: 'has-sub-items' do .nav-icon-container = sprite_icon('rocket') %span.nav-item-name = _('CI/CD') %ul.sidebar-sub-level-items = nav_link(controller: %w[runners jobs], html_options: { class: "fly-out-top-item" }) do = link_to admin_runners_path do %strong.fly-out-top-item-name = _('CI/CD') %li.divider.fly-out-top-item = nav_link(controller: :runners) do = link_to admin_runners_path, title: _('Runners') do %span = _('Runners') = nav_link(controller: :jobs) do = link_to admin_jobs_path, title: _('Jobs') do %span = _('Jobs') = nav_link(controller: admin_analytics_nav_links) do = link_to admin_dev_ops_reports_path, data: { qa_selector: 'admin_analytics_link' }, class: 'has-sub-items' do .nav-icon-container = sprite_icon('chart') %span.nav-item-name = _('Analytics') %ul.sidebar-sub-level-items{ data: { qa_selector: 'admin_sidebar_analytics_submenu_content' } } = nav_link(controller: admin_analytics_nav_links, html_options: { class: "fly-out-top-item" }) do = link_to admin_dev_ops_reports_path do %strong.fly-out-top-item-name = _('Analytics') %li.divider.fly-out-top-item = nav_link(controller: :dev_ops_report) do = link_to admin_dev_ops_reports_path, title: _('DevOps Reports') do %span = _('DevOps Reports') = nav_link(controller: :usage_trends) do = link_to admin_usage_trends_path, title: _('Usage Trends') do %span = _('Usage Trends') = nav_link(controller: admin_monitoring_nav_links) do = link_to admin_system_info_path, data: { qa_selector: 'admin_monitoring_menu_link' }, class: 'has-sub-items' do .nav-icon-container = sprite_icon('monitor') %span.nav-item-name = _('Monitoring') %ul.sidebar-sub-level-items{ data: { qa_selector: 'admin_monitoring_submenu_content' } } = nav_link(controller: admin_monitoring_nav_links, html_options: { class: "fly-out-top-item" }) do = link_to admin_system_info_path do %strong.fly-out-top-item-name = _('Monitoring') %li.divider.fly-out-top-item = nav_link(controller: :system_info) do = link_to admin_system_info_path, title: _('System Info') do %span = _('System Info') = nav_link(controller: :background_migrations) do = link_to admin_background_migrations_path, title: _('Background Migrations') do %span = _('Background Migrations') = nav_link(controller: :background_jobs) do = link_to admin_background_jobs_path, title: _('Background Jobs') do %span = _('Background Jobs') = nav_link(controller: :health_check) do = link_to admin_health_check_path, title: _('Health Check') do %span = _('Health Check') - if Gitlab::CurrentSettings.current_application_settings.grafana_enabled? = nav_link do = link_to Gitlab::CurrentSettings.current_application_settings.grafana_url, target: '_blank', title: _('Metrics Dashboard'), rel: 'noopener noreferrer' do %span = _('Metrics Dashboard') = render_if_exists 'layouts/nav/ee/admin/new_monitoring_sidebar' = nav_link(controller: :broadcast_messages) do = link_to admin_broadcast_messages_path do .nav-icon-container = sprite_icon('messages') %span.nav-item-name = _('Messages') %ul.sidebar-sub-level-items.is-fly-out-only = nav_link(controller: :broadcast_messages, html_options: { class: "fly-out-top-item" }) do = link_to admin_broadcast_messages_path do %strong.fly-out-top-item-name = _('Messages') = nav_link(controller: [:hooks, :hook_logs]) do = link_to admin_hooks_path do .nav-icon-container = sprite_icon('hook') %span.nav-item-name = _('System Hooks') %ul.sidebar-sub-level-items.is-fly-out-only = nav_link(controller: [:hooks, :hook_logs], html_options: { class: "fly-out-top-item" }) do = link_to admin_hooks_path do %strong.fly-out-top-item-name = _('System Hooks') = nav_link(controller: :applications) do = link_to admin_applications_path do .nav-icon-container = sprite_icon('applications') %span.nav-item-name = _('Applications') %ul.sidebar-sub-level-items.is-fly-out-only = nav_link(controller: :applications, html_options: { class: "fly-out-top-item" }) do = link_to admin_applications_path do %strong.fly-out-top-item-name = _('Applications') = nav_link(controller: :abuse_reports) do = link_to admin_abuse_reports_path do .nav-icon-container = sprite_icon('slight-frown') %span.nav-item-name = _('Abuse Reports') = gl_badge_tag number_with_delimiter(AbuseReport.count(:all)), variant: :info, size: :sm %ul.sidebar-sub-level-items.is-fly-out-only = nav_link(controller: :abuse_reports, html_options: { class: "fly-out-top-item" }) do = link_to admin_abuse_reports_path do %strong.fly-out-top-item-name = _('Abuse Reports') = gl_badge_tag number_with_delimiter(AbuseReport.count(:all)), variant: :info, size: :sm = render_if_exists 'layouts/nav/sidebar/licenses_link' - if instance_clusters_enabled? = nav_link(controller: :clusters) do = link_to admin_clusters_path do .nav-icon-container = sprite_icon('cloud-gear') %span.nav-item-name = _('Kubernetes') %ul.sidebar-sub-level-items.is-fly-out-only = nav_link(controller: :clusters, html_options: { class: "fly-out-top-item" }) do = link_to admin_clusters_path do %strong.fly-out-top-item-name = _('Kubernetes') - if anti_spam_service_enabled? = nav_link(controller: :spam_logs) do = link_to admin_spam_logs_path do .nav-icon-container = sprite_icon('spam') %span.nav-item-name = _('Spam Logs') %ul.sidebar-sub-level-items.is-fly-out-only = nav_link(controller: :spam_logs, html_options: { class: "fly-out-top-item" }) do = link_to admin_spam_logs_path do %strong.fly-out-top-item-name = _('Spam Logs') = render_if_exists 'layouts/nav/sidebar/push_rules_link' = render_if_exists 'layouts/nav/ee/admin/geo_sidebar' = nav_link(controller: :deploy_keys) do = link_to admin_deploy_keys_path do .nav-icon-container = sprite_icon('key') %span.nav-item-name = _('Deploy Keys') %ul.sidebar-sub-level-items.is-fly-out-only = nav_link(controller: :deploy_keys, html_options: { class: "fly-out-top-item" }) do = link_to admin_deploy_keys_path do %strong.fly-out-top-item-name = _('Deploy Keys') = render_if_exists 'layouts/nav/sidebar/credentials_link' = nav_link(controller: :labels) do = link_to admin_labels_path do .nav-icon-container = sprite_icon('labels') %span.nav-item-name = _('Labels') %ul.sidebar-sub-level-items.is-fly-out-only = nav_link(controller: :labels, html_options: { class: "fly-out-top-item" }) do = link_to admin_labels_path do %strong.fly-out-top-item-name = _('Labels') = nav_link(controller: [:application_settings, :integrations, :appearances]) do = link_to general_admin_application_settings_path, class: 'has-sub-items' do .nav-icon-container = sprite_icon('settings') %span.nav-item-name{ data: { qa_selector: 'admin_settings_menu_link' } } = _('Settings') %ul.sidebar-sub-level-items{ data: { qa_selector: 'admin_settings_submenu_content' } } -# This active_nav_link check is also used in `app/views/layouts/admin.html.haml` = nav_link(controller: [:application_settings, :integrations, :appearances], html_options: { class: "fly-out-top-item" }) do = link_to general_admin_application_settings_path do %strong.fly-out-top-item-name = _('Settings') %li.divider.fly-out-top-item = nav_link(path: 'application_settings#general') do = link_to general_admin_application_settings_path, title: _('General'), data: { qa_selector: 'admin_settings_general_link' } do %span = _('General') = render_if_exists 'layouts/nav/sidebar/advanced_search', data: { qa_selector: 'admin_settings_advanced_search_link' } - if instance_level_integrations? = nav_link(path: ['application_settings#integrations', 'integrations#edit']) do = link_to integrations_admin_application_settings_path, title: _('Integrations'), data: { qa_selector: 'admin_settings_integrations_link' } do %span = _('Integrations') = nav_link(path: 'application_settings#repository') do = link_to repository_admin_application_settings_path, title: _('Repository'), data: { qa_selector: 'admin_settings_repository_link' } do %span = _('Repository') - if Gitlab.ee? && License.feature_available?(:custom_file_templates) = nav_link(path: 'application_settings#templates') do = link_to templates_admin_application_settings_path, title: _('Templates'), data: { qa_selector: 'admin_settings_templates_link' } do %span = _('Templates') = nav_link(path: 'application_settings#ci_cd') do = link_to ci_cd_admin_application_settings_path, title: _('CI/CD') do %span = _('CI/CD') = nav_link(path: 'application_settings#reporting') do = link_to reporting_admin_application_settings_path, title: _('Reporting') do %span = _('Reporting') = nav_link(path: 'application_settings#metrics_and_profiling') do = link_to metrics_and_profiling_admin_application_settings_path, title: _('Metrics and profiling'), data: { qa_selector: 'admin_settings_metrics_and_profiling_link' } do %span = _('Metrics and profiling') = nav_link(path: ['application_settings#service_usage_data']) do = link_to service_usage_data_admin_application_settings_path, title: _('Service usage data') do %span = _('Service usage data') = nav_link(path: 'application_settings#network') do = link_to network_admin_application_settings_path, title: _('Network'), data: { qa_selector: 'admin_settings_network_link' } do %span = _('Network') = nav_link(controller: :appearances) do = link_to admin_application_settings_appearances_path do %span = _('Appearance') = nav_link(path: 'application_settings#preferences') do = link_to preferences_admin_application_settings_path, title: _('Preferences'), data: { qa_selector: 'admin_settings_preferences_link' } do %span = _('Preferences') = render 'shared/sidebar_toggle_button'