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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/ci_variable_list/components/ci_variable_table.vue23
-rw-r--r--app/assets/javascripts/pages/projects/settings/packages_and_registries/index/index.js5
-rw-r--r--app/assets/stylesheets/pages/settings_ci_cd.scss4
-rw-r--r--app/controllers/confirmations_controller.rb2
-rw-r--r--app/controllers/projects/settings/packages_and_registries_controller.rb23
-rw-r--r--app/controllers/whats_new_controller.rb5
-rw-r--r--app/helpers/application_settings_helper.rb3
-rw-r--r--app/helpers/projects_helper.rb11
-rw-r--r--app/helpers/whats_new_helper.rb29
-rw-r--r--app/models/application_setting.rb5
-rw-r--r--app/models/application_setting_implementation.rb3
-rw-r--r--app/models/project_services/bamboo_service.rb4
-rw-r--r--app/models/project_services/jenkins_service.rb4
-rw-r--r--app/models/release_highlight.rb34
-rw-r--r--app/views/admin/application_settings/_whats_new.html.haml13
-rw-r--r--app/views/admin/application_settings/preferences.html.haml11
-rw-r--r--app/views/layouts/nav/sidebar/_project_menus.html.haml5
-rw-r--r--app/views/projects/milestones/_form.html.haml2
-rw-r--r--app/views/projects/pipelines/_with_tabs.html.haml6
-rw-r--r--app/views/projects/project_members/index.html.haml6
-rw-r--r--app/views/projects/runners/_group_runners.html.haml2
-rw-r--r--app/views/projects/runners/_shared_runners.html.haml4
-rw-r--r--app/views/projects/settings/packages_and_registries/index.html.haml16
-rw-r--r--app/views/projects/triggers/_trigger.html.haml4
-rw-r--r--app/views/shared/milestones/_form_dates.html.haml4
-rw-r--r--app/views/shared/milestones/_search_form.html.haml2
26 files changed, 191 insertions, 39 deletions
diff --git a/app/assets/javascripts/ci_variable_list/components/ci_variable_table.vue b/app/assets/javascripts/ci_variable_list/components/ci_variable_table.vue
index e5923124653..b959d97daea 100644
--- a/app/assets/javascripts/ci_variable_list/components/ci_variable_table.vue
+++ b/app/assets/javascripts/ci_variable_list/components/ci_variable_table.vue
@@ -162,23 +162,26 @@ export default {
</p>
</template>
</gl-table>
- <div class="ci-variable-actions" :class="{ 'justify-content-center': !tableIsNotEmpty }">
+ <div
+ class="ci-variable-actions gl-display-flex"
+ :class="{ 'justify-content-center': !tableIsNotEmpty }"
+ >
+ <gl-button
+ ref="add-ci-variable"
+ v-gl-modal-directive="$options.modalId"
+ class="gl-mr-3"
+ data-qa-selector="add_ci_variable_button"
+ variant="confirm"
+ category="primary"
+ >{{ __('Add variable') }}</gl-button
+ >
<gl-button
v-if="tableIsNotEmpty"
ref="secret-value-reveal-button"
data-qa-selector="reveal_ci_variable_value_button"
- class="gl-mr-3"
@click="toggleValues(!valuesHidden)"
>{{ valuesButtonText }}</gl-button
>
- <gl-button
- ref="add-ci-variable"
- v-gl-modal-directive="$options.modalId"
- data-qa-selector="add_ci_variable_button"
- variant="success"
- category="primary"
- >{{ __('Add Variable') }}</gl-button
- >
</div>
</div>
</template>
diff --git a/app/assets/javascripts/pages/projects/settings/packages_and_registries/index/index.js b/app/assets/javascripts/pages/projects/settings/packages_and_registries/index/index.js
new file mode 100644
index 00000000000..93c6a2c63a3
--- /dev/null
+++ b/app/assets/javascripts/pages/projects/settings/packages_and_registries/index/index.js
@@ -0,0 +1,5 @@
+import registrySettingsApp from '~/packages_and_registries/settings/project/registry_settings_bundle';
+import initSettingsPanels from '~/settings_panels';
+
+registrySettingsApp();
+initSettingsPanels();
diff --git a/app/assets/stylesheets/pages/settings_ci_cd.scss b/app/assets/stylesheets/pages/settings_ci_cd.scss
index 346b3f61caa..7d74070b4f2 100644
--- a/app/assets/stylesheets/pages/settings_ci_cd.scss
+++ b/app/assets/stylesheets/pages/settings_ci_cd.scss
@@ -11,10 +11,6 @@
.trigger-actions {
white-space: nowrap;
-
- .btn {
- margin-left: 10px;
- }
}
.auto-devops-card {
diff --git a/app/controllers/confirmations_controller.rb b/app/controllers/confirmations_controller.rb
index c42c9827eaf..163c5fbca67 100644
--- a/app/controllers/confirmations_controller.rb
+++ b/app/controllers/confirmations_controller.rb
@@ -27,7 +27,7 @@ class ConfirmationsController < Devise::ConfirmationsController
else
Gitlab::AppLogger.info("Email Confirmed: username=#{resource.username} email=#{resource.email} ip=#{request.remote_ip}")
flash[:notice] = flash[:notice] + _(" Please sign in.")
- new_session_path(:user, anchor: 'login-pane')
+ new_session_path(:user, anchor: 'login-pane', invite_email: resource.email)
end
end
diff --git a/app/controllers/projects/settings/packages_and_registries_controller.rb b/app/controllers/projects/settings/packages_and_registries_controller.rb
new file mode 100644
index 00000000000..3756f5bb2d6
--- /dev/null
+++ b/app/controllers/projects/settings/packages_and_registries_controller.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module Projects
+ module Settings
+ class PackagesAndRegistriesController < Projects::ApplicationController
+ layout 'project_settings'
+
+ before_action :authorize_admin_project!
+ before_action :packages_and_registries_settings_enabled!
+
+ feature_category :package_registry
+
+ def index
+ end
+
+ private
+
+ def packages_and_registries_settings_enabled!
+ render_404 unless settings_packages_and_registries_enabled?(project)
+ end
+ end
+ end
+end
diff --git a/app/controllers/whats_new_controller.rb b/app/controllers/whats_new_controller.rb
index e24b0bbc7bb..6f389aa4924 100644
--- a/app/controllers/whats_new_controller.rb
+++ b/app/controllers/whats_new_controller.rb
@@ -5,6 +5,7 @@ class WhatsNewController < ApplicationController
skip_before_action :authenticate_user!
+ before_action :check_whats_new_enabled
before_action :check_valid_page_param, :set_pagination_headers
feature_category :navigation
@@ -19,6 +20,10 @@ class WhatsNewController < ApplicationController
private
+ def check_whats_new_enabled
+ render_404 if Gitlab::CurrentSettings.current_application_settings.whats_new_variant_disabled?
+ end
+
def check_valid_page_param
render_404 if current_page < 1
end
diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb
index 4373f47877f..d643223255f 100644
--- a/app/helpers/application_settings_helper.rb
+++ b/app/helpers/application_settings_helper.rb
@@ -364,7 +364,8 @@ module ApplicationSettingsHelper
:rate_limiting_response_text,
:container_registry_expiration_policies_worker_capacity,
:container_registry_cleanup_tags_service_max_list_size,
- :keep_latest_artifact
+ :keep_latest_artifact,
+ :whats_new_variant
]
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 4be6cd4276b..cfafb0443b9 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -743,6 +743,7 @@ module ProjectsHelper
operations#show
badges#index
pages#show
+ packages_and_registries#index
]
end
@@ -782,6 +783,16 @@ module ProjectsHelper
end
def settings_container_registry_expiration_policy_available?(project)
+ Feature.disabled?(:sidebar_refactor) &&
+ can_destroy_container_registry_image?(current_user, project)
+ end
+
+ def settings_packages_and_registries_enabled?(project)
+ Feature.enabled?(:sidebar_refactor) &&
+ can_destroy_container_registry_image?(current_user, project)
+ end
+
+ def can_destroy_container_registry_image?(current_user, project)
Gitlab.config.registry.enabled &&
can?(current_user, :destroy_container_image, project)
end
diff --git a/app/helpers/whats_new_helper.rb b/app/helpers/whats_new_helper.rb
index 9362ae1491f..5fca00c5dce 100644
--- a/app/helpers/whats_new_helper.rb
+++ b/app/helpers/whats_new_helper.rb
@@ -10,6 +10,33 @@ module WhatsNewHelper
end
def display_whats_new?
- Gitlab.dev_env_org_or_com? || user_signed_in?
+ (Gitlab.dev_env_org_or_com? || user_signed_in?) &&
+ !Gitlab::CurrentSettings.current_application_settings.whats_new_variant_disabled?
+ end
+
+ def whats_new_variants
+ ApplicationSetting.whats_new_variants
+ end
+
+ def whats_new_variants_label(variant)
+ case variant
+ when 'all_tiers'
+ _("Enable What's new: All tiers")
+ when 'current_tier'
+ _("Enable What's new: Current tier only")
+ when 'disabled'
+ _("Disable What's new")
+ end
+ end
+
+ def whats_new_variants_description(variant)
+ case variant
+ when 'all_tiers'
+ _("What's new presents new features from all tiers to help you keep track of all new features.")
+ when 'current_tier'
+ _("What's new presents new features for your current subscription tier, while hiding new features not available to your subscription tier.")
+ when 'disabled'
+ _("What's new is disabled and can no longer be viewed.")
+ end
end
end
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index 9ed0ebe49cc..0be511e5f6e 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -13,6 +13,8 @@ class ApplicationSetting < ApplicationRecord
KROKI_URL_ERROR_MESSAGE = 'Please check your Kroki URL setting in ' \
'Admin Area > Settings > General > Kroki'
+ enum whats_new_variant: { all_tiers: 0, current_tier: 1, disabled: 2 }, _prefix: true
+
add_authentication_token_field :runners_registration_token, encrypted: -> { Feature.enabled?(:application_settings_tokens_optional_encryption) ? :optional : :required }
add_authentication_token_field :health_check_access_token
add_authentication_token_field :static_objects_external_storage_auth_token
@@ -491,6 +493,9 @@ class ApplicationSetting < ApplicationRecord
allow_nil: true,
numericality: { only_integer: true, greater_than: 0 }
+ validates :whats_new_variant,
+ inclusion: { in: ApplicationSetting.whats_new_variants.keys }
+
attr_encrypted :asset_proxy_secret_key,
mode: :per_attribute_iv,
key: Settings.attr_encrypted_db_key_base_truncated,
diff --git a/app/models/application_setting_implementation.rb b/app/models/application_setting_implementation.rb
index 88fd17133f2..140669c0695 100644
--- a/app/models/application_setting_implementation.rb
+++ b/app/models/application_setting_implementation.rb
@@ -187,7 +187,8 @@ module ApplicationSettingImplementation
kroki_enabled: false,
kroki_url: nil,
kroki_formats: { blockdiag: false, bpmn: false, excalidraw: false },
- rate_limiting_response_text: nil
+ rate_limiting_response_text: nil,
+ whats_new_variant: 0
}
end
diff --git a/app/models/project_services/bamboo_service.rb b/app/models/project_services/bamboo_service.rb
index a892d1a4314..60f53bd4a7d 100644
--- a/app/models/project_services/bamboo_service.rb
+++ b/app/models/project_services/bamboo_service.rb
@@ -36,12 +36,12 @@ class BambooService < CiService
end
def description
- s_('BambooService|Use the Atlassian Bamboo CI/CD server with GitLab.')
+ s_('BambooService|Run CI/CD pipelines with Atlassian Bamboo.')
end
def help
docs_link = link_to _('Learn more.'), Rails.application.routes.url_helpers.help_page_url('user/project/integrations/bamboo'), target: '_blank', rel: 'noopener noreferrer'
- s_('BambooService|Use Atlassian Bamboo to run CI/CD pipelines. You must set up automatic revision labeling and a repository trigger in Bamboo. %{docs_link}').html_safe % { docs_link: docs_link.html_safe }
+ s_('BambooService|Run CI/CD pipelines with Atlassian Bamboo. You must set up automatic revision labeling and a repository trigger in Bamboo. %{docs_link}').html_safe % { docs_link: docs_link.html_safe }
end
def self.to_param
diff --git a/app/models/project_services/jenkins_service.rb b/app/models/project_services/jenkins_service.rb
index 6a123517b84..990a35cd617 100644
--- a/app/models/project_services/jenkins_service.rb
+++ b/app/models/project_services/jenkins_service.rb
@@ -64,12 +64,12 @@ class JenkinsService < CiService
end
def description
- s_('An extendable open source CI/CD server.')
+ s_('Run CI/CD pipelines with Jenkins.')
end
def help
docs_link = link_to _('Learn more.'), Rails.application.routes.url_helpers.help_page_url('integration/jenkins'), target: '_blank', rel: 'noopener noreferrer'
- s_('Trigger Jenkins builds when you push to a repository, or when a merge request is created, updated, or merged. %{docs_link}').html_safe % { docs_link: docs_link.html_safe }
+ s_('Run CI/CD pipelines with Jenkins when you push to a repository, or when a merge request is created, updated, or merged. %{docs_link}').html_safe % { docs_link: docs_link.html_safe }
end
def self.to_param
diff --git a/app/models/release_highlight.rb b/app/models/release_highlight.rb
index 4b0ae251a9f..9c30d0611e6 100644
--- a/app/models/release_highlight.rb
+++ b/app/models/release_highlight.rb
@@ -4,6 +4,10 @@ class ReleaseHighlight
CACHE_DURATION = 1.hour
FILES_PATH = Rails.root.join('data', 'whats_new', '*.yml')
+ FREE_PACKAGE = 'Free'
+ PREMIUM_PACKAGE = 'Premium'
+ ULTIMATE_PACKAGE = 'Ultimate'
+
def self.paginated(page: 1)
key = self.cache_key("items:page-#{page}")
@@ -25,10 +29,8 @@ class ReleaseHighlight
file = File.read(file_path)
items = YAML.safe_load(file, permitted_classes: [Date])
- platform = Gitlab.com? ? 'gitlab-com' : 'self-managed'
-
items&.map! do |item|
- next unless item[platform]
+ next unless include_item?(item)
begin
item.tap {|i| i['body'] = Kramdown::Document.new(i['body']).to_html }
@@ -53,7 +55,8 @@ class ReleaseHighlight
end
def self.cache_key(key)
- ['release_highlight', key, Gitlab.revision].join(':')
+ variant = Gitlab::CurrentSettings.current_application_settings.whats_new_variant
+ ['release_highlight', variant, key, Gitlab.revision].join(':')
end
def self.next_page(current_page: 1)
@@ -88,4 +91,27 @@ class ReleaseHighlight
delegate :each, to: :items
end
+
+ def self.current_package
+ return FREE_PACKAGE unless defined?(License)
+
+ case License.current&.plan&.downcase
+ when License::PREMIUM_PLAN
+ PREMIUM_PACKAGE
+ when License::ULTIMATE_PLAN
+ ULTIMATE_PACKAGE
+ else
+ FREE_PACKAGE
+ end
+ end
+
+ def self.include_item?(item)
+ platform = Gitlab.com? ? 'gitlab-com' : 'self-managed'
+
+ return false unless item[platform]
+
+ return true unless Gitlab::CurrentSettings.current_application_settings.whats_new_variant_current_tier?
+
+ item['packages']&.include?(current_package)
+ end
end
diff --git a/app/views/admin/application_settings/_whats_new.html.haml b/app/views/admin/application_settings/_whats_new.html.haml
new file mode 100644
index 00000000000..70ba994d21e
--- /dev/null
+++ b/app/views/admin/application_settings/_whats_new.html.haml
@@ -0,0 +1,13 @@
+= form_for @application_setting, url: preferences_admin_application_settings_path(anchor: 'js-whats-new-settings'), html: { class: 'fieldset-form whats-new-settings' } do |f|
+ = form_errors(@application_setting)
+
+ - whats_new_variants.keys.each do |variant|
+ .form-check.gl-mb-4
+ = f.radio_button :whats_new_variant, variant, class: 'form-check-input'
+ = f.label :whats_new_variant, value: variant, class: 'form-check-label' do
+ .font-weight-bold
+ = whats_new_variants_label(variant)
+ .option-description
+ = whats_new_variants_description(variant)
+
+ = f.submit _('Save changes'), class: "gl-button btn btn-confirm"
diff --git a/app/views/admin/application_settings/preferences.html.haml b/app/views/admin/application_settings/preferences.html.haml
index fd5ce890648..17bf9ba84a2 100644
--- a/app/views/admin/application_settings/preferences.html.haml
+++ b/app/views/admin/application_settings/preferences.html.haml
@@ -13,6 +13,17 @@
.settings-content
= render 'email'
+%section.settings.as-whats-new-page.no-animate#js-whats-new-settings{ class: ('expanded' if expanded_by_default?) }
+ .settings-header
+ %h4
+ = _("What's new")
+ %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' }
+ = expanded_by_default? ? _('Collapse') : _('Expand')
+ %p
+ = _("Configure What's new drawer and content.")
+ .settings-content
+ = render 'whats_new'
+
%section.settings.as-help-page.no-animate#js-help-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
diff --git a/app/views/layouts/nav/sidebar/_project_menus.html.haml b/app/views/layouts/nav/sidebar/_project_menus.html.haml
index d26a138cfc7..0507f6d4b16 100644
--- a/app/views/layouts/nav/sidebar/_project_menus.html.haml
+++ b/app/views/layouts/nav/sidebar/_project_menus.html.haml
@@ -274,6 +274,11 @@
= link_to project_pages_path(@project), title: _('Pages') do
%span
= _('Pages')
+ - if settings_packages_and_registries_enabled?(@project)
+ = nav_link(controller: :packages_and_registries) do
+ = link_to project_settings_packages_and_registries_path(@project), title: _('Packages & Registries'), data: { qa_selector: 'project_package_settings_link' } do
+ %span
+ = _('Packages & Registries')
-# Shortcut to Project > Activity
%li.hidden
diff --git a/app/views/projects/milestones/_form.html.haml b/app/views/projects/milestones/_form.html.haml
index 56906eb6e66..a6adfd31834 100644
--- a/app/views/projects/milestones/_form.html.haml
+++ b/app/views/projects/milestones/_form.html.haml
@@ -7,7 +7,7 @@
.col-form-label.col-sm-2
= f.label :title, _('Title')
.col-sm-10
- = f.text_field :title, maxlength: 255, class: 'form-control', data: { qa_selector: 'milestone_title_field' }, required: true, autofocus: true
+ = f.text_field :title, maxlength: 255, class: 'form-control gl-form-input', data: { qa_selector: 'milestone_title_field' }, required: true, autofocus: true
.form-group.row.milestone-description
.col-form-label.col-sm-2
= f.label :description, _('Description')
diff --git a/app/views/projects/pipelines/_with_tabs.html.haml b/app/views/projects/pipelines/_with_tabs.html.haml
index 8af3764650c..e56a240c487 100644
--- a/app/views/projects/pipelines/_with_tabs.html.haml
+++ b/app/views/projects/pipelines/_with_tabs.html.haml
@@ -11,16 +11,16 @@
%li.js-builds-tab-link
= link_to builds_project_pipeline_path(@project, @pipeline), data: { target: '#js-tab-builds', action: 'builds', toggle: 'tab' }, class: 'builds-tab' do
= _('Jobs')
- %span.badge.badge-pill.js-builds-counter= pipeline.total_size
+ %span.badge.badge-pill.gl-badge.badge-muted.sm.js-builds-counter= pipeline.total_size
- if @pipeline.failed_builds.present?
%li.js-failures-tab-link
= link_to failures_project_pipeline_path(@project, @pipeline), data: { target: '#js-tab-failures', action: 'failures', toggle: 'tab' }, class: 'failures-tab' do
= _('Failed Jobs')
- %span.badge.badge-pill.js-failures-counter= @pipeline.failed_builds.count
+ %span.badge.badge-pill.gl-badge.badge-muted.sm.js-failures-counter= @pipeline.failed_builds.count
%li.js-tests-tab-link
= link_to test_report_project_pipeline_path(@project, @pipeline), data: { target: '#js-tab-tests', action: 'test_report', toggle: 'tab' }, class: 'test-tab' do
= s_('TestReports|Tests')
- %span.badge.badge-pill.js-test-report-badge-counter= @pipeline.test_report_summary.total[:count]
+ %span.badge.badge-pill.gl-badge.badge-muted.sm.js-test-report-badge-counter= @pipeline.test_report_summary.total[:count]
= render_if_exists "projects/pipelines/tabs_holder", pipeline: @pipeline, project: @project
.tab-content
diff --git a/app/views/projects/project_members/index.html.haml b/app/views/projects/project_members/index.html.haml
index 0e4100208d9..01114b8b4f7 100644
--- a/app/views/projects/project_members/index.html.haml
+++ b/app/views/projects/project_members/index.html.haml
@@ -18,7 +18,11 @@
= html_escape(_("Members can be added by project %{i_open}Maintainers%{i_close} or %{i_open}Owners%{i_close}")) % { i_open: '<i>'.html_safe, i_close: '</i>'.html_safe }
.col-md-12.col-lg-6
.gl-display-flex.gl-flex-wrap.gl-justify-content-end
- .js-invite-group-trigger{ data: { classes: 'gl-mt-3 gl-sm-w-auto gl-w-full', display_text: _('Invite a group') } }
+ = link_to _("Import a project"),
+ import_project_project_members_path(@project),
+ class: "btn btn-default btn-md gl-button gl-mt-3 gl-sm-w-auto gl-w-full",
+ title: _("Import members from another project")
+ .js-invite-group-trigger{ data: { classes: 'gl-mt-3 gl-sm-w-auto gl-w-full gl-sm-ml-3', display_text: _('Invite a group') } }
.js-invite-members-trigger{ data: { variant: 'success', classes: 'gl-mt-3 gl-sm-w-auto gl-w-full gl-sm-ml-3', display_text: _('Invite members') } }
= render 'projects/invite_members_modal', project: @project
diff --git a/app/views/projects/runners/_group_runners.html.haml b/app/views/projects/runners/_group_runners.html.haml
index b37b530c33f..5d737bb3901 100644
--- a/app/views/projects/runners/_group_runners.html.haml
+++ b/app/views/projects/runners/_group_runners.html.haml
@@ -13,7 +13,7 @@
%br
%br
- if @project.group_runners_enabled?
- = link_to toggle_group_runners_project_runners_path(@project), class: 'btn gl-button btn-warning-secondary', method: :post do
+ = link_to toggle_group_runners_project_runners_path(@project), class: 'btn gl-button btn-default', method: :post do
= _('Disable group runners')
- else
= link_to toggle_group_runners_project_runners_path(@project), class: 'btn gl-button btn-confirm-secondary', method: :post do
diff --git a/app/views/projects/runners/_shared_runners.html.haml b/app/views/projects/runners/_shared_runners.html.haml
index fccfca38013..f7248baeb27 100644
--- a/app/views/projects/runners/_shared_runners.html.haml
+++ b/app/views/projects/runners/_shared_runners.html.haml
@@ -9,10 +9,10 @@
= _('Shared runners disabled on group level')
- else
- if @project.shared_runners_enabled?
- = link_to toggle_shared_runners_project_runners_path(@project), class: 'btn gl-button btn-warning-secondary', method: :post do
+ = link_to toggle_shared_runners_project_runners_path(@project), class: 'btn gl-button btn-default', method: :post do
= _('Disable shared runners')
- else
- = link_to toggle_shared_runners_project_runners_path(@project), class: 'btn gl-button btn-confirm', method: :post do
+ = link_to toggle_shared_runners_project_runners_path(@project), class: 'btn gl-button btn-confirm-secondary', method: :post do
= _('Enable shared runners')
&nbsp; for this project
diff --git a/app/views/projects/settings/packages_and_registries/index.html.haml b/app/views/projects/settings/packages_and_registries/index.html.haml
new file mode 100644
index 00000000000..561ac7b347d
--- /dev/null
+++ b/app/views/projects/settings/packages_and_registries/index.html.haml
@@ -0,0 +1,16 @@
+- breadcrumb_title _('Packages & Registries')
+- page_title _('Packages & Registries')
+- @content_class = 'limit-container-width' unless fluid_layout
+- expanded = true
+
+%section.settings.no-animate#js-registry-policies{ class: ('expanded' if expanded) }
+ .settings-header
+ %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
+ = _("Clean up image tags")
+ %button.btn.gl-button.btn-default.js-settings-toggle{ type: 'button' }
+ = expanded ? _('Collapse') : _('Expand')
+ %p
+ = _("Save space and find images in the Container Registry. Remove unneeded tags and keep only the ones you want.")
+ = link_to _('How does cleanup work?'), help_page_path('user/packages/container_registry/index', anchor: 'cleanup-policy'), target: '_blank', rel: 'noopener noreferrer'
+ .settings-content
+ = render 'projects/registry/settings/index'
diff --git a/app/views/projects/triggers/_trigger.html.haml b/app/views/projects/triggers/_trigger.html.haml
index 2def6c06458..081afacdaa6 100644
--- a/app/views/projects/triggers/_trigger.html.haml
+++ b/app/views/projects/triggers/_trigger.html.haml
@@ -30,8 +30,8 @@
%td.text-right.trigger-actions
- revoke_trigger_confirmation = "By revoking a trigger you will break any processes making use of it. Are you sure?"
- if can?(current_user, :admin_trigger, trigger)
- = link_to edit_project_trigger_path(@project, trigger), method: :get, title: "Edit", class: "gl-button btn btn-default btn-sm" do
+ = link_to edit_project_trigger_path(@project, trigger), method: :get, title: "Edit", class: "gl-button btn btn-default btn-icon" do
= sprite_icon('pencil')
- if can?(current_user, :manage_trigger, trigger)
- = link_to project_trigger_path(@project, trigger), data: { confirm: revoke_trigger_confirmation, testid: 'trigger_revoke_button' }, method: :delete, title: "Revoke", class: "gl-button btn btn-default btn-sm btn-trigger-revoke" do
+ = link_to project_trigger_path(@project, trigger), data: { confirm: revoke_trigger_confirmation, testid: 'trigger_revoke_button' }, method: :delete, title: "Revoke", class: "gl-button btn btn-default btn-icon btn-trigger-revoke gl-ml-3" do
= sprite_icon('remove')
diff --git a/app/views/shared/milestones/_form_dates.html.haml b/app/views/shared/milestones/_form_dates.html.haml
index e995584309a..e0664c1feba 100644
--- a/app/views/shared/milestones/_form_dates.html.haml
+++ b/app/views/shared/milestones/_form_dates.html.haml
@@ -3,11 +3,11 @@
.col-form-label.col-sm-2
= f.label :start_date, _('Start Date')
.col-sm-10
- = f.text_field :start_date, class: "datepicker form-control", data: { qa_selector: "start_date_field" }, placeholder: _('Select start date'), autocomplete: 'off'
+ = f.text_field :start_date, class: "datepicker form-control gl-form-input", data: { qa_selector: "start_date_field" }, placeholder: _('Select start date'), autocomplete: 'off'
%a.inline.float-right.gl-mt-2.js-clear-start-date{ href: "#" }= _('Clear start date')
.form-group.row
.col-form-label.col-sm-2
= f.label :due_date, _('Due Date')
.col-sm-10
- = f.text_field :due_date, class: "datepicker form-control", data: { qa_selector: "due_date_field" }, placeholder: _('Select due date'), autocomplete: 'off'
+ = f.text_field :due_date, class: "datepicker form-control gl-form-input", data: { qa_selector: "due_date_field" }, placeholder: _('Select due date'), autocomplete: 'off'
%a.inline.float-right.gl-mt-2.js-clear-due-date{ href: "#" }= _('Clear due date')
diff --git a/app/views/shared/milestones/_search_form.html.haml b/app/views/shared/milestones/_search_form.html.haml
index 403a0224a85..1c51f1ad09d 100644
--- a/app/views/shared/milestones/_search_form.html.haml
+++ b/app/views/shared/milestones/_search_form.html.haml
@@ -1,7 +1,7 @@
= form_tag request.path, method: :get do |f|
= search_field_tag :search_title, params[:search_title],
placeholder: _('Filter by milestone name'),
- class: 'form-control input-short',
+ class: 'form-control gl-form-input input-short',
spellcheck: false
= hidden_field_tag :state, params[:state]
= hidden_field_tag :sort, params[:sort]