diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-19 08:27:35 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-19 08:27:35 +0000 |
commit | 7e9c479f7de77702622631cff2628a9c8dcbc627 (patch) | |
tree | c8f718a08e110ad7e1894510980d2155a6549197 /app/views/admin | |
parent | e852b0ae16db4052c1c567d9efa4facc81146e88 (diff) | |
download | gitlab-ce-7e9c479f7de77702622631cff2628a9c8dcbc627.tar.gz |
Add latest changes from gitlab-org/gitlab@13-6-stable-eev13.6.0-rc42
Diffstat (limited to 'app/views/admin')
29 files changed, 159 insertions, 136 deletions
diff --git a/app/views/admin/application_settings/_eks.html.haml b/app/views/admin/application_settings/_eks.html.haml index 68324425ef9..5c0e544eaad 100644 --- a/app/views/admin/application_settings/_eks.html.haml +++ b/app/views/admin/application_settings/_eks.html.haml @@ -3,7 +3,7 @@ .settings-header %h4 = _('Amazon EKS') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = expanded ? 'Collapse' : 'Expand' %p = _('Amazon EKS integration allows you to provision EKS clusters from GitLab.') diff --git a/app/views/admin/application_settings/_gitpod.html.haml b/app/views/admin/application_settings/_gitpod.html.haml index f0a1fd5e763..1baec07fa25 100644 --- a/app/views/admin/application_settings/_gitpod.html.haml +++ b/app/views/admin/application_settings/_gitpod.html.haml @@ -5,10 +5,10 @@ .settings-header %h4 = _('Gitpod') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded ? _('Collapse') : _('Expand') %p - = gitpod_enable_description + %integration-help-text{ "id" => "js-gitpod-settings-help-text", "message" => gitpod_enable_description, "message-url" => "https://gitpod.io/" } = link_to sprite_icon('question-o'), help_page_path('integration/gitpod.md'), target: '_blank', class: 'has-tooltip', title: _('More information') diff --git a/app/views/admin/application_settings/_outbound.html.haml b/app/views/admin/application_settings/_outbound.html.haml index 4f38ab3ab7a..db0a87c366e 100644 --- a/app/views/admin/application_settings/_outbound.html.haml +++ b/app/views/admin/application_settings/_outbound.html.haml @@ -13,9 +13,9 @@ = _('Allow requests to the local network from system hooks') .form-group - = f.label :outbound_local_requests_whitelist_raw, class: 'label-bold' do + = f.label :outbound_local_requests_allowlist_raw, class: 'label-bold' do = _('Local IP addresses and domain names that hooks and services may access.') - = f.text_area :outbound_local_requests_whitelist_raw, placeholder: "example.com, 192.168.1.1", class: 'form-control', rows: 8 + = f.text_area :outbound_local_requests_allowlist_raw, placeholder: "example.com, 192.168.1.1", class: 'form-control', rows: 8 %span.form-text.text-muted = _('Requests to these domain(s)/address(es) on the local network will be allowed when local requests from hooks and services are not allowed. IP ranges such as 1:0:0:0:0:0:0:0/124 or 127.0.0.0/28 are supported. Domain wildcards are not supported currently. Use comma, semicolon, or newline to separate multiple entries. The allowlist can hold a maximum of 1000 entries. Domains should use IDNA encoding. Ex: example.com, 192.168.1.1, 127.0.0.0/28, xn--itlab-j1a.com.') diff --git a/app/views/admin/application_settings/_package_registry.html.haml b/app/views/admin/application_settings/_package_registry.html.haml index 257a90252cc..8c956a43e22 100644 --- a/app/views/admin/application_settings/_package_registry.html.haml +++ b/app/views/admin/application_settings/_package_registry.html.haml @@ -3,7 +3,7 @@ .settings-header %h4 = _('Package Registry') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _("Settings related to the use and experience of using GitLab's Package Registry.") diff --git a/app/views/admin/application_settings/_plantuml.html.haml b/app/views/admin/application_settings/_plantuml.html.haml index 324f544a108..30acb773424 100644 --- a/app/views/admin/application_settings/_plantuml.html.haml +++ b/app/views/admin/application_settings/_plantuml.html.haml @@ -3,7 +3,7 @@ .settings-header %h4 = _('PlantUML') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded ? _('Collapse') : _('Expand') %p = _('Allow rendering of PlantUML diagrams in Asciidoc documents.') diff --git a/app/views/admin/application_settings/_signin.html.haml b/app/views/admin/application_settings/_signin.html.haml index 4a8616beff6..66fd0087c3e 100644 --- a/app/views/admin/application_settings/_signin.html.haml +++ b/app/views/admin/application_settings/_signin.html.haml @@ -50,11 +50,11 @@ = f.text_field :home_page_url, class: 'form-control', placeholder: 'http://company.example.com', :'aria-describedby' => 'home_help_block' %span.form-text.text-muted#home_help_block We will redirect non-logged in users to this page .form-group - = f.label :after_sign_out_path, class: 'label-bold' + = f.label :after_sign_out_path, _('After sign-out path'), class: 'label-bold' = f.text_field :after_sign_out_path, class: 'form-control', placeholder: 'http://company.example.com', :'aria-describedby' => 'after_sign_out_path_help_block' %span.form-text.text-muted#after_sign_out_path_help_block We will redirect users to this page after they sign out .form-group - = f.label :sign_in_text, class: 'label-bold' + = f.label :sign_in_text, _('Sign-in text'), class: 'label-bold' = f.text_area :sign_in_text, class: 'form-control', rows: 4 .form-text.text-muted Markdown enabled = f.submit 'Save changes', class: "gl-button btn btn-success" diff --git a/app/views/admin/application_settings/_signup.html.haml b/app/views/admin/application_settings/_signup.html.haml index 98b49a236a3..c3deb8af99e 100644 --- a/app/views/admin/application_settings/_signup.html.haml +++ b/app/views/admin/application_settings/_signup.html.haml @@ -9,19 +9,21 @@ Sign-up enabled .form-text.text-muted = _("When enabled, any user visiting %{host} will be able to create an account.") % { host: "#{new_user_session_url(host: Gitlab.config.gitlab.host)}" } - - if Feature.enabled?(:admin_approval_for_new_user_signups, default_enabled: true) - .form-group - .form-check - = f.check_box :require_admin_approval_after_user_signup, class: 'form-check-input' - = f.label :require_admin_approval_after_user_signup, class: 'form-check-label' do - = _('Require admin approval for new sign-ups') - .form-text.text-muted - = _("When enabled, any user visiting %{host} and creating an account will have to be explicitly approved by an admin before they can sign in. This setting is effective only if sign-ups are enabled.") % { host: "#{new_user_session_url(host: Gitlab.config.gitlab.host)}" } + .form-group + .form-check + = f.check_box :require_admin_approval_after_user_signup, class: 'form-check-input' + = f.label :require_admin_approval_after_user_signup, class: 'form-check-label' do + = _('Require admin approval for new sign-ups') + .form-text.text-muted + = _("When enabled, any user visiting %{host} and creating an account will have to be explicitly approved by an admin before they can sign in. This setting is effective only if sign-ups are enabled.") % { host: "#{new_user_session_url(host: Gitlab.config.gitlab.host)}" } .form-group .form-check = f.check_box :send_user_confirmation_email, class: 'form-check-input' = f.label :send_user_confirmation_email, class: 'form-check-label' do Send confirmation email on sign-up + + = render_if_exists 'admin/application_settings/new_user_signups_cap', form: f + .form-group = f.label :minimum_password_length, _('Minimum password length (number of characters)'), class: 'label-bold' = f.number_field :minimum_password_length, class: 'form-control', rows: 4, min: ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH, max: Devise.password_length.max @@ -29,33 +31,33 @@ .form-text.text-muted = _("See GitLab's %{password_policy_guidelines}").html_safe % { password_policy_guidelines: password_policy_guidelines_link } .form-group - = f.label :domain_whitelist, 'Whitelisted domains for sign-ups', class: 'label-bold' - = f.text_area :domain_whitelist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8 + = f.label :domain_allowlist, _('Allowed domains for sign-ups'), class: 'label-bold' + = f.text_area :domain_allowlist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8 .form-text.text-muted ONLY users with e-mail addresses that match these domain(s) will be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com .form-group - = f.label :domain_blacklist_enabled, 'Domain Blacklist', class: 'label-bold' + = f.label :domain_denylist_enabled, _('Domain denylist'), class: 'label-bold' .form-check - = f.check_box :domain_blacklist_enabled, class: 'form-check-input' - = f.label :domain_blacklist_enabled, class: 'form-check-label' do - Enable domain blacklist for sign ups + = f.check_box :domain_denylist_enabled, class: 'form-check-input' + = f.label :domain_denylist_enabled, class: 'form-check-label' do + Enable domain denylist for sign ups .form-group .form-check - = radio_button_tag :blacklist_type, :file, false, class: 'form-check-input' - = label_tag :blacklist_type_file, class: 'form-check-label' do + = radio_button_tag :denylist_type, :file, false, class: 'form-check-input' + = label_tag :denylist_type_file, class: 'form-check-label' do .option-title - Upload blacklist file + Upload denylist file .form-check - = radio_button_tag :blacklist_type, :raw, @application_setting.domain_blacklist.present? || @application_setting.domain_blacklist.blank?, class: 'form-check-input' - = label_tag :blacklist_type_raw, class: 'form-check-label' do + = radio_button_tag :denylist_type, :raw, @application_setting.domain_denylist.present? || @application_setting.domain_denylist.blank?, class: 'form-check-input' + = label_tag :denylist_type_raw, class: 'form-check-label' do .option-title - Enter blacklist manually - .form-group.blacklist-file - = f.label :domain_blacklist_file, 'Blacklist file', class: 'label-bold' - = f.file_field :domain_blacklist_file, class: 'form-control', accept: '.txt,.conf' + Enter denylist manually + .form-group.js-denylist-file + = f.label :domain_denylist_file, _('Denylist file'), class: 'label-bold' + = f.file_field :domain_denylist_file, class: 'form-control', accept: '.txt,.conf' .form-text.text-muted Users with e-mail addresses that match these domain(s) will NOT be able to sign-up. Wildcards allowed. Use separate lines or commas for multiple entries. - .form-group.blacklist-raw - = f.label :domain_blacklist, 'Blacklisted domains for sign-ups', class: 'label-bold' - = f.text_area :domain_blacklist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8 + .form-group.js-denylist-raw + = f.label :domain_denylist, _('Denied domains for sign-ups'), class: 'label-bold' + = f.text_area :domain_denylist_raw, placeholder: 'domain.com', class: 'form-control', rows: 8 .form-text.text-muted Users with e-mail addresses that match these domain(s) will NOT be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com .form-group = f.label :email_restrictions_enabled, _('Email restrictions'), class: 'label-bold' diff --git a/app/views/admin/application_settings/_snowplow.html.haml b/app/views/admin/application_settings/_snowplow.html.haml index 7c2c5e0b3dc..c1edaf9ff29 100644 --- a/app/views/admin/application_settings/_snowplow.html.haml +++ b/app/views/admin/application_settings/_snowplow.html.haml @@ -3,7 +3,7 @@ .settings-header %h4 = _('Snowplow') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded ? _('Collapse') : _('Expand') %p = _('Configure the %{link} integration.').html_safe % { link: link_to('Snowplow', 'https://snowplowanalytics.com/', target: '_blank') } diff --git a/app/views/admin/application_settings/_third_party_offers.html.haml b/app/views/admin/application_settings/_third_party_offers.html.haml index 7e3e063118e..32023b11993 100644 --- a/app/views/admin/application_settings/_third_party_offers.html.haml +++ b/app/views/admin/application_settings/_third_party_offers.html.haml @@ -3,7 +3,7 @@ .settings-header %h4 = _('Third party offers') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded ? _('Collapse') : _('Expand') %p = _('Control the display of third party offers.') diff --git a/app/views/admin/application_settings/ci/_header.html.haml b/app/views/admin/application_settings/ci/_header.html.haml index 6ff35a42efd..0a0f8aaf032 100644 --- a/app/views/admin/application_settings/ci/_header.html.haml +++ b/app/views/admin/application_settings/ci/_header.html.haml @@ -4,7 +4,7 @@ = _('Variables') = link_to sprite_icon('question-o', css_class: 'gl-vertical-align-baseline!'), help_page_path('ci/variables/README', anchor: 'custom-environment-variables'), target: '_blank', rel: 'noopener noreferrer' -%button.btn.btn-default.js-settings-toggle{ type: 'button' } +%button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded ? _('Collapse') : _('Expand') %p diff --git a/app/views/admin/application_settings/ci_cd.html.haml b/app/views/admin/application_settings/ci_cd.html.haml index cdb69d33b12..b05e8621d07 100644 --- a/app/views/admin/application_settings/ci_cd.html.haml +++ b/app/views/admin/application_settings/ci_cd.html.haml @@ -17,7 +17,7 @@ .settings-header %h4 = _('Continuous Integration and Deployment') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Auto DevOps, runners and job artifacts') @@ -33,7 +33,7 @@ .settings-header %h4 = _('Container Registry') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Various container registry settings.') diff --git a/app/views/admin/application_settings/general.html.haml b/app/views/admin/application_settings/general.html.haml index 2d336bebc8d..5c3f68843a2 100644 --- a/app/views/admin/application_settings/general.html.haml +++ b/app/views/admin/application_settings/general.html.haml @@ -6,7 +6,7 @@ .settings-header %h4 = _('Visibility and access controls') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Set default and restrict visibility levels. Configure import sources and git access protocol.') @@ -17,7 +17,7 @@ .settings-header %h4 = _('Account and limit') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Set projects and maximum size limits, session duration, user options, and check feature availability for namespace plan.') @@ -28,7 +28,7 @@ .settings-header %h4 = _('Diff limits') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Diff content limits') @@ -39,7 +39,7 @@ .settings-header %h4 = _('Sign-up restrictions') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Configure the way a user creates a new account.') @@ -50,7 +50,7 @@ .settings-header %h4 = _('Sign-in restrictions') - %button.btn.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Set requirements for a user to sign-in. Enable mandatory two-factor authentication.') @@ -61,7 +61,7 @@ .settings-header %h4 = _('Terms of Service and Privacy Policy') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Include a Terms of Service agreement and Privacy Policy that all users must accept.') @@ -74,7 +74,7 @@ .settings-header %h4 = _('Web terminal') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Set max session time for web terminal.') @@ -85,7 +85,7 @@ .settings-header %h4 = _('Web IDE') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Manage Web IDE features') @@ -108,7 +108,7 @@ .settings-header %h4 = _('Maintenance mode') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Prevent users from performing write operations on GitLab while performing maintenance.') diff --git a/app/views/admin/application_settings/network.html.haml b/app/views/admin/application_settings/network.html.haml index 40fa86d8ea3..f977a8c93fa 100644 --- a/app/views/admin/application_settings/network.html.haml +++ b/app/views/admin/application_settings/network.html.haml @@ -6,7 +6,7 @@ .settings-header %h4 = _('Performance optimization') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Various settings that affect GitLab performance.') @@ -17,7 +17,7 @@ .settings-header %h4 = _('User and IP Rate Limits') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Configure limits for web and API requests.') @@ -28,7 +28,7 @@ .settings-header %h4 = _('Outbound requests') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Allow requests to the local network from hooks and services.') @@ -39,10 +39,14 @@ .settings-header %h4 = _('Protected Paths') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Configure paths to be protected by Rack Attack.') + .help-block + = _('These paths are protected for POST requests.') + = link_to _('More information'), help_page_path('security/rack_attack', anchor: 'protected-paths-throttle'), target: '_blank' + .settings-content = render 'protected_paths' @@ -50,7 +54,7 @@ .settings-header %h4 = _('Issues Rate Limits') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Configure limit for issues created per minute by web and API requests.') @@ -61,7 +65,7 @@ .settings-header %h4 = _('Import/Export Rate Limits') - %button.btn.btn-default.js-settings-toggle{ type: 'button' } + %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' } = expanded_by_default? ? _('Collapse') : _('Expand') %p = _('Configure limits for Project/Group Import/Export.') diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml index b0d4a3fd8f5..220a211cca6 100644 --- a/app/views/admin/dashboard/index.html.haml +++ b/app/views/admin/dashboard/index.html.haml @@ -1,5 +1,7 @@ - breadcrumb_title _("Dashboard") - page_title _("Dashboard") +- billable_users_url = help_page_path('subscriptions/self_managed/index', anchor: 'billable-users') +- billable_users_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer nofollow">'.html_safe % { url: billable_users_url } - if @notices - @notices.each do |notice| @@ -8,7 +10,9 @@ = notice[:message].html_safe - if @license.present? && show_license_breakdown? - = render_if_exists 'admin/licenses/breakdown' + .license-panel.gl-mt-5 + = render_if_exists 'admin/licenses/summary' + = render_if_exists 'admin/licenses/breakdown' .admin-dashboard.gl-mt-3 .row @@ -22,10 +26,20 @@ = link_to(s_('AdminArea|New project'), new_project_path, class: "btn gl-button btn-success gl-w-full") .col-sm-4 .info-well.dark-well - .well-segment.well-centered + .well-segment.well-centered.gl-text-center = link_to admin_users_path do - %h3.text-center + %h3.gl-display-inline-block.gl-mb-0 = s_('AdminArea|Users: %{number_of_users}') % { number_of_users: approximate_count_with_delimiters(@counts, User) } + + %span.gl-outline-0.gl-ml-2{ href: "#", tabindex: "0", data: { container: "body", + toggle: "popover", + placement: "top", + html: "true", + trigger: "focus", + content: s_("AdminArea|All users created in the instance, including users who are not %{billable_users_link_start}billable users%{billable_users_link_end}.").html_safe % { billable_users_link_start: billable_users_link_start, billable_users_link_end: '</a>'.html_safe }, + } } + = sprite_icon('question', size: 16, css_class: 'gl-text-gray-700 gl-mb-1') + %hr .btn-group.d-flex{ role: 'group' } = link_to s_('AdminArea|New user'), new_admin_user_path, class: "btn gl-button btn-success gl-w-full" @@ -126,6 +140,10 @@ %span.float-right = Gitlab::Database.version %p + = _('Redis') + %span.float-right + = @redis_versions&.join(", ") + %p = link_to _("Gitaly Servers"), admin_gitaly_servers_path .row .col-md-4 diff --git a/app/views/admin/dev_ops_report/_report.html.haml b/app/views/admin/dev_ops_report/_report.html.haml new file mode 100644 index 00000000000..24c805d273a --- /dev/null +++ b/app/views/admin/dev_ops_report/_report.html.haml @@ -0,0 +1,30 @@ +- usage_ping_enabled = Gitlab::CurrentSettings.usage_ping_enabled + +- if usage_ping_enabled && show_callout?('dev_ops_report_intro_callout_dismissed') + = render 'callout' + +- if !usage_ping_enabled + #js-devops-empty-state{ data: { is_admin: current_user&.admin.to_s, empty_state_svg_path: image_path('illustrations/convdev/convdev_no_index.svg'), enable_usage_ping_link: metrics_and_profiling_admin_application_settings_path(anchor: 'js-usage-settings'), docs_link: help_page_path('development/product_analytics/usage_ping') } } +- elsif @metric.blank? + = render 'no_data' +- else + .devops + .devops-header + %h2.devops-header-title{ class: "devops-#{score_level(@metric.average_percentage_score)}-score" } + = number_to_percentage(@metric.average_percentage_score, precision: 1) + .devops-header-subtitle + = s_('DevopsReport|DevOps') + %br + = s_('DevopsReport|Score') + = link_to sprite_icon('question-o', css_class: 'devops-header-icon'), help_page_path('user/admin_area/analytics/dev_ops_report') + + .devops-cards.board-card-container + - @metric.cards.each do |card| + = render 'card', card: card + + .devops-steps.d-none.d-lg-block + - @metric.idea_to_production_steps.each_with_index do |step, index| + .devops-step{ class: "devops-#{score_level(step.percentage_score)}-score" } + = custom_icon("i2p_step_#{index + 1}") + %h4.devops-step-title + = step.title diff --git a/app/views/admin/dev_ops_report/show.html.haml b/app/views/admin/dev_ops_report/show.html.haml index 88105be70fb..dc3bda3a994 100644 --- a/app/views/admin/dev_ops_report/show.html.haml +++ b/app/views/admin/dev_ops_report/show.html.haml @@ -1,34 +1,10 @@ - page_title _('DevOps Report') -- usage_ping_enabled = Gitlab::CurrentSettings.usage_ping_enabled - add_page_specific_style 'page_bundles/dev_ops_report' .container - - if usage_ping_enabled && show_callout?('dev_ops_report_intro_callout_dismissed') - = render 'callout' - .gl-mt-3 - - if !usage_ping_enabled - #js-devops-empty-state{ data: { is_admin: current_user&.admin.to_s, empty_state_svg_path: image_path('illustrations/convdev/convdev_no_index.svg'), enable_usage_ping_link: metrics_and_profiling_admin_application_settings_path(anchor: 'js-usage-settings'), docs_link: help_page_path('development/product_analytics/usage_ping') } } - - elsif @metric.blank? - = render 'no_data' - - else - .devops - .devops-header - %h2.devops-header-title{ class: "devops-#{score_level(@metric.average_percentage_score)}-score" } - = number_to_percentage(@metric.average_percentage_score, precision: 1) - .devops-header-subtitle - = _('DevOps') - %br - = _('Score') - = link_to sprite_icon('question-o', css_class: 'devops-header-icon'), help_page_path('user/admin_area/analytics/dev_ops_report') - - .devops-cards.board-card-container - - @metric.cards.each do |card| - = render 'card', card: card + - if Gitlab.ee? && Feature.enabled?(:devops_adoption_feature) && License.feature_available?(:devops_adoption) + = render_if_exists 'admin/dev_ops_report/devops_tabs' + - else + = render 'report' - .devops-steps.d-none.d-lg-block - - @metric.idea_to_production_steps.each_with_index do |step, index| - .devops-step{ class: "devops-#{score_level(step.percentage_score)}-score" } - = custom_icon("i2p_step_#{index + 1}") - %h4.devops-step-title - = step.title diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml index 424251f543e..386df99717b 100644 --- a/app/views/admin/groups/show.html.haml +++ b/app/views/admin/groups/show.html.haml @@ -1,6 +1,7 @@ - add_to_breadcrumbs _("Groups"), admin_groups_path - breadcrumb_title @group.name - page_title @group.name, _("Groups") +- current_user_is_group_owner = @group && @group.has_owner?(current_user) .js-remove-member-modal %h3.page-title @@ -116,7 +117,7 @@ = select_tag :access_level, options_for_select(@group.access_level_roles), class: "project-access-select select2" %hr = button_tag _('Add users to group'), class: "gl-button btn btn-success" - = render 'shared/members/requests', membership_source: @group, requesters: @requesters, force_mobile_view: true + = render 'shared/members/requests', membership_source: @group, group: @group, requesters: @requesters, force_mobile_view: true .card .card-header @@ -127,6 +128,11 @@ = sprite_icon('pencil-square', css_class: 'gl-icon') = _('Manage access') %ul.content-list.group-users-list.content-list.members-list - = render partial: 'shared/members/member', collection: @members, as: :member, locals: { show_controls: false } + = render partial: 'shared/members/member', + collection: @members, as: :member, + locals: { membership_source: @group, + group: @group, + show_controls: false, + current_user_is_group_owner: current_user_is_group_owner } .card-footer = paginate @members, param_name: 'members_page', theme: 'gitlab' diff --git a/app/views/admin/health_check/show.html.haml b/app/views/admin/health_check/show.html.haml index 76e4fa971a3..78f0fd325fb 100644 --- a/app/views/admin/health_check/show.html.haml +++ b/app/views/admin/health_check/show.html.haml @@ -30,7 +30,7 @@ = sprite_icon('check', css_class: 'cgreen') #{ s_('HealthCheck|Healthy') } - else - = icon('warning', class: 'cred') + = sprite_icon('warning-solid', css_class: 'cred') #{ s_('HealthCheck|Unhealthy') } .card-body - if no_errors diff --git a/app/views/admin/identities/_identity.html.haml b/app/views/admin/identities/_identity.html.haml index d8facbb780a..d852e4a2463 100644 --- a/app/views/admin/identities/_identity.html.haml +++ b/app/views/admin/identities/_identity.html.haml @@ -1,6 +1,6 @@ %tr %td - #{Gitlab::Auth::OAuth::Provider.label_for(identity.provider)} (#{identity.provider}) + #{Gitlab::Auth::OAuth::Provider.label_for(identity.provider)} (#{identity.provider}) #{identity.saml_provider_id.present? ? "for #{link_to identity.saml_provider.group.path, identity.saml_provider.group} ID: #{identity.saml_provider_id}".html_safe : ""} %td = identity.extern_uid %td diff --git a/app/views/admin/jobs/index.html.haml b/app/views/admin/jobs/index.html.haml index d482ae04c08..8eaf84c8df9 100644 --- a/app/views/admin/jobs/index.html.haml +++ b/app/views/admin/jobs/index.html.haml @@ -6,11 +6,9 @@ = render "shared/builds/tabs", build_path_proc: build_path_proc, all_builds: @all_builds, scope: @scope - if @all_builds.running_or_pending.any? - #stop-jobs-modal + #js-stop-jobs-modal .nav-controls - %button#stop-jobs-button.btn.gl-button.btn-danger{ data: { toggle: 'modal', - target: '#stop-jobs-modal', - url: cancel_all_admin_jobs_path } } + %button#js-stop-jobs-button.btn.gl-button.btn-danger{ data: { url: cancel_all_admin_jobs_path } } = s_('AdminArea|Stop all jobs') .row-content-block.second-block diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml index 417fd1d60eb..aae1d5b6a4e 100644 --- a/app/views/admin/projects/show.html.haml +++ b/app/views/admin/projects/show.html.haml @@ -2,6 +2,7 @@ - breadcrumb_title @project.full_name - page_title @project.full_name, _("Projects") - @content_class = "admin-projects" +- current_user_is_group_owner = @group && @group.has_owner?(current_user) .js-remove-member-modal %h3.page-title @@ -13,7 +14,7 @@ - if @project.last_repository_check_failed? .row .col-md-12 - .gl-alert.gl-alert-danger.gl-mb-5 + .gl-alert.gl-alert-danger.gl-mb-5{ data: { testid: 'last-repository-check-failed-alert' } } = sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') .gl-alert-body - last_check_message = _("Last repository check (%{last_check_timestamp}) failed. See the 'repocheck.log' file for error messages.") @@ -183,11 +184,16 @@ = sprite_icon('pencil-square', css_class: 'gl-icon') = _('Manage access') %ul.content-list.members-list - = render partial: 'shared/members/member', collection: @group_members, as: :member, locals: { show_controls: false } + = render partial: 'shared/members/member', + collection: @group_members, as: :member, + locals: { membership_source: @project, + group: @group, + show_controls: false, + current_user_is_group_owner: current_user_is_group_owner } .card-footer = paginate @group_members, param_name: 'group_members_page', theme: 'gitlab' - = render 'shared/members/requests', membership_source: @project, requesters: @requesters, force_mobile_view: true + = render 'shared/members/requests', membership_source: @project, group: @group, requesters: @requesters, force_mobile_view: true .card .card-header @@ -199,6 +205,11 @@ = sprite_icon('pencil-square', css_class: 'gl-icon') = _('Manage access') %ul.content-list.project_members.members-list - = render partial: 'shared/members/member', collection: @project_members, as: :member, locals: { show_controls: false } + = render partial: 'shared/members/member', + collection: @project_members, as: :member, + locals: { membership_source: @project, + group: @group, + show_controls: false, + current_user_is_group_owner: current_user_is_group_owner } .card-footer = paginate @project_members, param_name: 'project_members_page', theme: 'gitlab' diff --git a/app/views/admin/runners/index.html.haml b/app/views/admin/runners/index.html.haml index 3d3b8c28a17..c2d7b63f1f9 100644 --- a/app/views/admin/runners/index.html.haml +++ b/app/views/admin/runners/index.html.haml @@ -39,7 +39,9 @@ = render partial: 'ci/runner/how_to_setup_runner', locals: { registration_token: Gitlab::CurrentSettings.runners_registration_token, type: 'shared', - reset_token_url: reset_registration_token_admin_application_settings_path } + reset_token_url: reset_registration_token_admin_application_settings_path, + project_path: '', + group_path: '' } .row .col-sm-9 diff --git a/app/views/admin/serverless/domains/_form.html.haml b/app/views/admin/serverless/domains/_form.html.haml index 8f0dd0cab8e..e4b054c7480 100644 --- a/app/views/admin/serverless/domains/_form.html.haml +++ b/app/views/admin/serverless/domains/_form.html.haml @@ -36,7 +36,7 @@ = clipboard_button(target: '#serverless_domain_verification', class: 'btn-default d-none d-sm-block') %p.form-text.text-muted - link_to_help = link_to(_('verify ownership'), help_page_path('user/project/pages/custom_domains_ssl_tls_certification/index.md', anchor: '4-verify-the-domains-ownership')) - = _("To %{link_to_help} of your domain, add the above key to a TXT record within to your DNS configuration.").html_safe % { link_to_help: link_to_help } + = _("To %{link_to_help} of your domain, add the above key to a TXT record within your DNS configuration.").html_safe % { link_to_help: link_to_help } - else .form-group diff --git a/app/views/admin/system_info/show.html.haml b/app/views/admin/system_info/show.html.haml index 312ca62cfdf..ca6efe9b095 100644 --- a/app/views/admin/system_info/show.html.haml +++ b/app/views/admin/system_info/show.html.haml @@ -9,7 +9,7 @@ - if @cpus %h2= _('%{cores} cores') % { cores: @cpus.length } - else - = icon('warning', class: 'text-warning') + = sprite_icon('warning-solid', css_class: 'text-warning') = _('Unable to collect CPU info') .bg-light.light-well.gl-mt-3 %h4= _('Memory Usage') @@ -17,7 +17,7 @@ - if @memory %h2 #{number_to_human_size(@memory.active_bytes)} / #{number_to_human_size(@memory.total_bytes)} - else - = icon('warning', class: 'text-warning') + = sprite_icon('warning-solid', css_class: 'text-warning') = _('Unable to collect memory info') .bg-light.light-well.gl-mt-3 %h4= _('Uptime') diff --git a/app/views/admin/users/_block_user.html.haml b/app/views/admin/users/_block_user.html.haml index b07a72c3e28..29029986345 100644 --- a/app/views/admin/users/_block_user.html.haml +++ b/app/views/admin/users/_block_user.html.haml @@ -2,10 +2,7 @@ .card-header.bg-warning.text-white = s_('AdminUsers|Block this user') .card-body - = render partial: 'admin/users/user_block_effects' + = user_block_effects %br - %button.btn.gl-button.btn-warning{ data: { 'gl-modal-action': 'block', - content: s_('AdminUsers|You can always unblock their account, their data will remain intact.'), - url: block_admin_user_path(user), - username: sanitize_name(user.name) } } + %button.btn.gl-button.btn-warning.js-confirm-modal-button{ data: user_block_data(user, s_('AdminUsers|You can always unblock their account, their data will remain intact.')) } = s_('AdminUsers|Block user') diff --git a/app/views/admin/users/_modals.html.haml b/app/views/admin/users/_modals.html.haml index a8e5d962e5b..e56bbd06575 100644 --- a/app/views/admin/users/_modals.html.haml +++ b/app/views/admin/users/_modals.html.haml @@ -5,11 +5,6 @@ action: s_("AdminUsers|Deactivate") } } = render partial: 'admin/users/user_deactivation_effects' - %div{ data: { modal: "block", - title: s_("AdminUsers|Block user %{username}?"), - action: s_("AdminUsers|Block") } } - = render partial: 'admin/users/user_block_effects' - %div{ data: { modal: "delete", title: s_("AdminUsers|Delete User %{username}?"), action: s_('AdminUsers|Delete user'), diff --git a/app/views/admin/users/_user.html.haml b/app/views/admin/users/_user.html.haml index 70ab95bfa61..679c4805280 100644 --- a/app/views/admin/users/_user.html.haml +++ b/app/views/admin/users/_user.html.haml @@ -24,10 +24,10 @@ .table-action-buttons = link_to _('Edit'), edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: 'btn gl-button btn-default' - unless user == current_user - %button.dropdown-new.btn.gl-button.btn-default{ type: 'button', data: { toggle: 'dropdown' } } + %button.dropdown-new.btn.gl-button.btn-default{ type: 'button', data: { testid: "user-action-button-#{user.id}", toggle: 'dropdown' } } = sprite_icon('settings') = sprite_icon('chevron-down') - %ul.dropdown-menu.dropdown-menu-right + %ul.dropdown-menu.dropdown-menu-right{ data: { testid: "user-action-dropdown-#{user.id}" } } %li.dropdown-header = _('Settings') %li @@ -37,16 +37,12 @@ - elsif user.blocked? - if user.blocked_pending_approval? = link_to s_('AdminUsers|Approve'), approve_admin_user_path(user), method: :put - %button.btn.btn-default-tertiary{ data: { 'gl-modal-action': 'block', - url: block_admin_user_path(user), - username: sanitize_name(user.name) } } + %button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) } = s_('AdminUsers|Block') - else = link_to _('Unblock'), unblock_admin_user_path(user), method: :put - else - %button.btn.btn-default-tertiary{ data: { 'gl-modal-action': 'block', - url: block_admin_user_path(user), - username: sanitize_name(user.name) } } + %button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) } = s_('AdminUsers|Block') - if user.can_be_deactivated? %li diff --git a/app/views/admin/users/_user_block_effects.html.haml b/app/views/admin/users/_user_block_effects.html.haml deleted file mode 100644 index 8ffbe145169..00000000000 --- a/app/views/admin/users/_user_block_effects.html.haml +++ /dev/null @@ -1,11 +0,0 @@ -%p - = s_('AdminUsers|Blocking user has the following effects:') -%ul - %li - = s_('AdminUsers|User will not be able to login') - %li - = s_('AdminUsers|User will not be able to access git repositories') - %li - = s_('AdminUsers|Personal projects will be left') - %li - = s_('AdminUsers|Owned groups will be left') diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml index 33faef92646..2e179d2d845 100644 --- a/app/views/admin/users/index.html.haml +++ b/app/views/admin/users/index.html.haml @@ -30,11 +30,10 @@ = link_to admin_users_path(filter: "blocked") do = s_('AdminUsers|Blocked') %small.badge.badge-pill= limited_counter_with_delimiter(User.blocked) - - if Feature.enabled?(:admin_approval_for_new_user_signups, default_enabled: true) - = nav_link(html_options: { class: "#{active_when(params[:filter] == 'blocked_pending_approval')} filter-blocked-pending-approval" }) do - = link_to admin_users_path(filter: "blocked_pending_approval") do - = s_('AdminUsers|Pending approval') - %small.badge.badge-pill= limited_counter_with_delimiter(User.blocked_pending_approval) + = nav_link(html_options: { class: "#{active_when(params[:filter] == 'blocked_pending_approval')} filter-blocked-pending-approval" }) do + = link_to admin_users_path(filter: "blocked_pending_approval") do + = s_('AdminUsers|Pending approval') + %small.badge.badge-pill= limited_counter_with_delimiter(User.blocked_pending_approval) = nav_link(html_options: { class: active_when(params[:filter] == 'deactivated') }) do = link_to admin_users_path(filter: "deactivated") do = s_('AdminUsers|Deactivated') |