Commit 00057a75 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch '44998-split-admin-settings-into-multiple-sub-pages' into 'master'

Resolve "Split admin settings into multiple sub pages"

Closes #44998

See merge request gitlab-org/gitlab-ce!21467
parents ac3157a0 26225e77
import initSettingsPanels from '~/settings_panels';
import projectSelect from '~/project_select';
import UsagePingPayload from './usage_ping_payload';
document.addEventListener('DOMContentLoaded', () => {
// Initialize expandable settings panels
initSettingsPanels();
projectSelect();
new UsagePingPayload(
document.querySelector('.js-usage-ping-payload-trigger'),
document.querySelector('.js-usage-ping-payload'),
).init();
});
import UsagePingPayload from './../usage_ping_payload';
document.addEventListener('DOMContentLoaded', () => {
new UsagePingPayload(
document.querySelector('.js-usage-ping-payload-trigger'),
document.querySelector('.js-usage-ping-payload'),
).init();
});
class Admin::ApplicationSettingsController < Admin::ApplicationController
include InternalRedirect
before_action :set_application_setting
def show
end
def integrations
end
def repository
end
def templates
end
def ci_cd
end
def reporting
end
def metrics_and_profiling
end
def network
end
def geo
end
def preferences
end
def update
successful = ApplicationSettings::UpdateService
.new(@application_setting, current_user, application_setting_params)
......@@ -13,10 +41,12 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
session[:ask_for_usage_stats_consent] = current_user.requires_usage_stats_consent?
end
redirect_path = referer_path(request) || admin_application_settings_path
respond_to do |format|
if successful
format.json { head :ok }
format.html { redirect_to admin_application_settings_path, notice: 'Application settings saved successfully' }
format.html { redirect_to redirect_path, notice: 'Application settings saved successfully' }
else
format.json { head :bad_request }
format.html { render :show }
......
......@@ -36,4 +36,10 @@ module InternalRedirect
path_with_query = [uri.path, uri.query].compact.join('?')
[path_with_query, uri.fragment].compact.join("#")
end
def referer_path(request)
return unless request.referer.presence
URI(request.referer).path
end
end
......@@ -7,7 +7,15 @@ module ApplicationHelper
# See https://docs.gitlab.com/ee/development/ee_features.html#code-in-app-views
# rubocop: disable CodeReuse/ActiveRecord
def render_if_exists(partial, locals = {})
render(partial, locals) if lookup_context.exists?(partial, [], true)
render(partial, locals) if partial_exists?(partial)
end
def partial_exists?(partial)
lookup_context.exists?(partial, [], true)
end
def template_exists?(template)
lookup_context.exists?(template, [], false)
end
# rubocop: enable CodeReuse/ActiveRecord
......
......@@ -264,4 +264,8 @@ module ApplicationSettingsHelper
:web_ide_clientside_preview_enabled
]
end
def expanded_by_default?
Rails.env.test?
end
end
- breadcrumb_title _("CI/CD")
- page_title _("CI/CD")
- @content_class = "limit-container-width" unless fluid_layout
%section.settings.as-ci-cd.no-animate#js-ci-cd-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Continuous Integration and Deployment')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Auto DevOps, runners and job artifacts')
.settings-content
= render 'ci_cd'
- if Gitlab.config.registry.enabled
%section.settings.as-registry.no-animate#js-registry-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Container Registry')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Various container registry settings.')
.settings-content
= render 'registry'
- breadcrumb_title _("Integrations")
- page_title _("Integrations")
- @content_class = "limit-container-width" unless fluid_layout
= render_if_exists 'admin/application_settings/elasticsearch_form', expanded: expanded_by_default?
%section.settings.as-plantuml.no-animate#js-plantuml-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('PlantUML')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Allow rendering of PlantUML diagrams in Asciidoc documents.')
.settings-content
= render 'plantuml'
= render_if_exists 'admin/application_settings/slack', expanded: expanded_by_default?
%section.settings.as-third-party-offers.no-animate#js-third-party-offers-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Third party offers')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Control the display of third party offers.')
.settings-content
= render 'third_party_offers', application_setting: @application_setting
= render_if_exists 'admin/application_settings/snowplow', expanded: expanded_by_default?
- breadcrumb_title _("Metrics and profiling")
- page_title _("Metrics and profiling")
- @content_class = "limit-container-width" unless fluid_layout
%section.settings.as-influx.no-animate#js-influx-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Metrics - Influx')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Enable and configure InfluxDB metrics.')
.settings-content
= render 'influx'
%section.settings.as-prometheus.no-animate#js-prometheus-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Metrics - Prometheus')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Enable and configure Prometheus metrics.')
.settings-content
= render 'prometheus'
%section.settings.as-performance-bar.no-animate#js-performance-bar-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Profiling - Performance bar')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Enable the Performance Bar for a given group.')
= link_to icon('question-circle'), help_page_path('administration/monitoring/performance/performance_bar')
.settings-content
= render 'performance_bar'
%section.settings.as-usage.no-animate#js-usage-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header#usage-statistics
%h4
= _('Usage statistics')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Enable or disable version check and usage ping.')
.settings-content
= render 'usage'
= render_if_exists 'admin/application_settings/pseudonymizer_settings', expanded: expanded_by_default?
- breadcrumb_title _("Network")
- page_title _("Network")
- @content_class = "limit-container-width" unless fluid_layout
%section.settings.as-performance.no-animate#js-performance-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Performance optimization')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Various settings that affect GitLab performance.')
.settings-content
= render 'performance'
%section.settings.as-ip-limits.no-animate#js-ip-limits-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('User and IP Rate Limits')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Configure limits for web and API requests.')
.settings-content
= render 'ip_limits'
%section.settings.as-outbound.no-animate#js-outbound-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Outbound requests')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Allow requests to the local network from hooks and services.')
.settings-content
= render 'outbound'
- breadcrumb_title _("Preferences")
- page_title _("Preferences")
- @content_class = "limit-container-width" unless fluid_layout
%section.settings.as-email.no-animate#js-email-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Email')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Various email settings.')
.settings-content
= render 'email'
%section.settings.as-help-page.no-animate#js-help-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Help page')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Help page text and support page url.')
.settings-content
= render 'help_page'
%section.settings.as-pages.no-animate#js-pages-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Pages')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Size and domain settings for static websites')
.settings-content
= render 'pages'
%section.settings.as-realtime.no-animate#js-realtime-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Real-time features')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Change this value to influence how frequently the GitLab UI polls for updates.')
.settings-content
= render 'realtime'
%section.settings.as-background.no-animate#js-background-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Background jobs')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Configure Sidekiq job throttling.')
.settings-content
= render 'background_jobs'
%section.settings.as-gitaly.no-animate#js-gitaly-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Gitaly')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Configure Gitaly timeouts.')
.settings-content
= render 'gitaly'
- breadcrumb_title _("Reporting")
- page_title _("Reporting")
- @content_class = "limit-container-width" unless fluid_layout
%section.settings.as-spam.no-animate#js-spam-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Spam and Anti-bot Protection')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Enable reCAPTCHA or Akismet and set IP limits.')
.settings-content
= render 'spam'
%section.settings.as-abuse.no-animate#js-abuse-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Abuse reports')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Set notification email for abuse reports.')
.settings-content
= render 'abuse'
%section.settings.as-logging.no-animate#js-logging-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Error Reporting and Logging')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Enable Sentry for error reporting and logging.')
.settings-content
= render 'logging'
- breadcrumb_title _("Repository")
- page_title _("Repository")
- @content_class = "limit-container-width" unless fluid_layout
%section.settings.as-mirror.no-animate#js-mirror-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Repository mirror')
%button.btn.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? 'Collapse' : 'Expand'
%p
= _('Configure push mirrors.')
.settings-content
= render partial: 'repository_mirrors_form'
%section.settings.as-repository-storage.no-animate#js-repository-storage-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Repository storage')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Configure storage path and circuit breaker settings.')
.settings-content
= render 'repository_storage'
%section.settings.as-repository-check.no-animate#js-repository-check-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Repository maintenance')
%button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand')
%p
= _('Configure automatic git checks and housekeeping on repositories.')
.settings-content
= render 'repository_check'
......@@ -199,10 +199,54 @@
= sprite_icon('settings')
%span.nav-item-name
= _('Settings')
%ul.sidebar-sub-level-items.is-fly-out-only
%ul.sidebar-sub-level-items
= nav_link(controller: :application_settings, html_options: { class: "fly-out-top-item" } ) do
= link_to admin_application_settings_path do
%strong.fly-out-top-item-name
= _('Settings')
%li.divider.fly-out-top-item
= nav_link(path: 'application_settings#show') do
= link_to admin_application_settings_path, title: _('General') do
%span
= _('General')
= nav_link(path: 'application_settings#integrations') do
= link_to integrations_admin_application_settings_path, title: _('Integrations') do
%span
= _('Integrations')
= nav_link(path: 'application_settings#repository') do
= link_to repository_admin_application_settings_path, title: _('Repository') do
%span
= _('Repository')
- if template_exists?('admin/application_settings/templates')
= nav_link(path: 'application_settings#templates') do
= link_to templates_admin_application_settings_path, title: _('Templates') 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') do
%span
= _('Metrics and profiling')
= nav_link(path: 'application_settings#network') do
= link_to network_admin_application_settings_path, title: _('Network') do
%span
= _('Network')
- if template_exists?('admin/application_settings/geo')
= nav_link(path: 'application_settings#geo') do
= link_to geo_admin_application_settings_path, title: _('Geo') do
%span
= _('Geo')
= nav_link(path: 'application_settings#preferences') do
= link_to preferences_admin_application_settings_path, title: _('Preferences') do
%span
= _('Preferences')
= render 'shared/sidebar_toggle_button'
---
title: Split admin settings into multiple sub pages
merge_request: 21467
author:
type: other
......@@ -110,6 +110,7 @@ namespace :admin do
put :reset_runners_token
put :reset_health_check_token
put :clear_repository_check_states
get :integrations, :repository, :templates, :ci_cd, :reporting, :metrics_and_profiling, :network, :geo, :preferences
end
resources :labels
......
......@@ -1050,6 +1050,9 @@ msgstr ""
msgid "CI / CD Settings"
msgstr ""
msgid "CI/CD"
msgstr ""
msgid "CI/CD configuration"
msgstr ""
......@@ -2841,6 +2844,9 @@ msgstr ""
msgid "Generate a default set of labels"
msgstr ""
msgid "Geo"
msgstr ""
msgid "Git"
msgstr ""
......@@ -3708,6 +3714,9 @@ msgstr ""
msgid "Metrics - Prometheus"
msgstr ""
msgid "Metrics and profiling"
msgstr ""
msgid "Metrics|Check out the CI/CD documentation on deploying to an environment"
msgstr ""
......@@ -4995,6 +5004,9 @@ msgstr ""
msgid "Reply to this email directly or %{view_it_on_gitlab}."
msgstr ""
msgid "Reporting"
msgstr ""
msgid "Reports|%{failedString} and %{resolvedString}"
msgstr ""
......@@ -5796,6 +5808,9 @@ msgstr ""
msgid "Template"
msgstr ""
msgid "Templates"
msgstr ""
msgid "Terms of Service Agreement and Privacy Policy"
msgstr ""
......
......@@ -6,11 +6,11 @@ module QA
include QA::Page::Settings::Common
view 'app/views/admin/application_settings/show.html.haml' do
element :repository_storage_settings
element :terms_settings
end
def expand_repository_storage(&block)
expand_section(:repository_storage_settings) do
expand_section(:terms_settings) do
RepositoryStorage.perform(&block)
end
end
......
This diff is collapsed.
......@@ -33,7 +33,7 @@ describe 'Admin uses repository checks' do
end
it 'to clear all repository checks', :js do
visit admin_application_settings_path
visit repository_admin_application_settings_path
expect(RepositoryCheck::ClearWorker).to receive(:perform_async)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment