diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-10 03:09:33 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-10 03:09:33 +0300 |
commit | 5a120c32fda1c88e38bbce056d6f30f4a2f41bc6 (patch) | |
tree | 8f5ef3c06e5f2f8707da5d32803d73fe10824ea5 /app | |
parent | b5944525b015e4efb4cd2c1d09ec37566d7691a0 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/pages/admin/users/components/user_modal_manager.vue | 30 | ||||
-rw-r--r-- | app/assets/javascripts/pages/admin/users/index.js | 2 | ||||
-rw-r--r-- | app/assets/stylesheets/framework/dropdowns.scss | 2 | ||||
-rw-r--r-- | app/finders/packages/nuget/package_finder.rb | 2 | ||||
-rw-r--r-- | app/models/packages/package.rb | 5 | ||||
-rw-r--r-- | app/models/packages/rubygems/metadatum.rb | 24 | ||||
-rw-r--r-- | app/views/admin/users/_user.html.haml | 4 | ||||
-rw-r--r-- | app/views/admin/users/show.html.haml | 4 |
8 files changed, 54 insertions, 19 deletions
diff --git a/app/assets/javascripts/pages/admin/users/components/user_modal_manager.vue b/app/assets/javascripts/pages/admin/users/components/user_modal_manager.vue index 24c9fa4cb3f..1dfea3f1e7b 100644 --- a/app/assets/javascripts/pages/admin/users/components/user_modal_manager.vue +++ b/app/assets/javascripts/pages/admin/users/components/user_modal_manager.vue @@ -12,6 +12,10 @@ export default { required: true, type: String, }, + selector: { + required: true, + type: String, + }, }, data() { return { @@ -34,22 +38,24 @@ export default { }, mounted() { - document.addEventListener('click', this.handleClick); - }, + /* + * Here we're looking for every button that needs to launch a modal + * on click, and then attaching a click event handler to show the modal + * if it's correctly configured. + * + * TODO: Replace this with integrated modal components https://gitlab.com/gitlab-org/gitlab/-/issues/320922 + */ + document.querySelectorAll(this.selector).forEach((button) => { + button.addEventListener('click', (e) => { + if (!button.dataset.glModalAction) return; - beforeDestroy() { - document.removeEventListener('click', this.handleClick); + e.preventDefault(); + this.show(button.dataset); + }); + }); }, methods: { - handleClick(e) { - const { glModalAction: action } = e.target.dataset; - if (!action) return; - - this.show(e.target.dataset); - e.preventDefault(); - }, - show(modalData) { const { glModalAction: requestedAction } = modalData; diff --git a/app/assets/javascripts/pages/admin/users/index.js b/app/assets/javascripts/pages/admin/users/index.js index 1fd838e704c..ae5db5f5bdc 100644 --- a/app/assets/javascripts/pages/admin/users/index.js +++ b/app/assets/javascripts/pages/admin/users/index.js @@ -7,6 +7,7 @@ import { initAdminUsersApp, initCohortsEmptyState } from '~/admin/users'; import initTabs from '~/admin/users/tabs'; import ModalManager from './components/user_modal_manager.vue'; +const CONFIRM_DELETE_BUTTON_SELECTOR = '.js-delete-user-modal-button'; const MODAL_TEXTS_CONTAINER_SELECTOR = '#js-modal-texts'; const MODAL_MANAGER_SELECTOR = '#js-delete-user-modal'; @@ -50,6 +51,7 @@ document.addEventListener('DOMContentLoaded', () => { return h(ModalManager, { ref: 'manager', props: { + selector: CONFIRM_DELETE_BUTTON_SELECTOR, modalConfiguration, csrfToken: csrf.token, }, diff --git a/app/assets/stylesheets/framework/dropdowns.scss b/app/assets/stylesheets/framework/dropdowns.scss index 8a9a632003a..f6162f65e21 100644 --- a/app/assets/stylesheets/framework/dropdowns.scss +++ b/app/assets/stylesheets/framework/dropdowns.scss @@ -525,7 +525,7 @@ &.is-active { /* stylelint-disable-next-line function-url-quotes */ - background: url(asset_path('checkmark.png')) no-repeat 14px 8px; + background: url(asset_path('checkmark.png')) no-repeat 14px center; } } } diff --git a/app/finders/packages/nuget/package_finder.rb b/app/finders/packages/nuget/package_finder.rb index 8f585f045a1..2f66bd145ee 100644 --- a/app/finders/packages/nuget/package_finder.rb +++ b/app/finders/packages/nuget/package_finder.rb @@ -5,7 +5,7 @@ module Packages class PackageFinder include ::Packages::FinderHelper - MAX_PACKAGES_COUNT = 50 + MAX_PACKAGES_COUNT = 300 def initialize(current_user, project_or_group, package_name:, package_version: nil, limit: MAX_PACKAGES_COUNT) @current_user = current_user diff --git a/app/models/packages/package.rb b/app/models/packages/package.rb index 4200f68d8fd..7bc74e0db74 100644 --- a/app/models/packages/package.rb +++ b/app/models/packages/package.rb @@ -17,6 +17,7 @@ class Packages::Package < ApplicationRecord has_one :maven_metadatum, inverse_of: :package, class_name: 'Packages::Maven::Metadatum' has_one :nuget_metadatum, inverse_of: :package, class_name: 'Packages::Nuget::Metadatum' has_one :composer_metadatum, inverse_of: :package, class_name: 'Packages::Composer::Metadatum' + has_one :rubygems_metadatum, inverse_of: :package, class_name: 'Packages::Rubygems::Metadatum' has_many :build_infos, inverse_of: :package has_many :pipelines, through: :build_infos has_one :debian_publication, inverse_of: :package, class_name: 'Packages::Debian::Publication' @@ -64,7 +65,9 @@ class Packages::Package < ApplicationRecord if: :debian_package? validate :forbidden_debian_changes, if: :debian? - enum package_type: { maven: 1, npm: 2, conan: 3, nuget: 4, pypi: 5, composer: 6, generic: 7, golang: 8, debian: 9 } + enum package_type: { maven: 1, npm: 2, conan: 3, nuget: 4, pypi: 5, + composer: 6, generic: 7, golang: 8, debian: 9, + rubygems: 10 } scope :with_name, ->(name) { where(name: name) } scope :with_name_like, ->(name) { where(arel_table[:name].matches(name)) } diff --git a/app/models/packages/rubygems/metadatum.rb b/app/models/packages/rubygems/metadatum.rb new file mode 100644 index 00000000000..42db1f3defc --- /dev/null +++ b/app/models/packages/rubygems/metadatum.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module Packages + module Rubygems + class Metadatum < ApplicationRecord + self.table_name = 'packages_rubygems_metadata' + self.primary_key = :package_id + + belongs_to :package, -> { where(package_type: :rubygems) }, inverse_of: :rubygems_metadatum + + validates :package, presence: true + + validate :rubygems_package_type + + private + + def rubygems_package_type + unless package&.rubygems? + errors.add(:base, _('Package type must be RubyGems')) + end + end + end + end +end diff --git a/app/views/admin/users/_user.html.haml b/app/views/admin/users/_user.html.haml index 31fd3aea94d..224a3cea28d 100644 --- a/app/views/admin/users/_user.html.haml +++ b/app/views/admin/users/_user.html.haml @@ -59,13 +59,13 @@ %li.divider - if user.can_be_removed? %li - %button.delete-user-button.btn.btn-default-tertiary.text-danger{ data: { 'gl-modal-action': 'delete', + %button.js-delete-user-modal-button.btn.btn-default-tertiary.text-danger{ data: { 'gl-modal-action': 'delete', delete_user_url: admin_user_path(user), block_user_url: block_admin_user_path(user), username: sanitize_name(user.name) } } = s_('AdminUsers|Delete user') %li - %button.delete-user-button.btn.btn-default-tertiary.text-danger{ data: { 'gl-modal-action': 'delete-with-contributions', + %button.js-delete-user-modal-button.btn.btn-default-tertiary.text-danger{ data: { 'gl-modal-action': 'delete-with-contributions', delete_user_url: admin_user_path(user, hard_delete: true), block_user_url: block_admin_user_path(user), username: sanitize_name(user.name) } } diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml index 380348f9a98..c7ec3ab66d7 100644 --- a/app/views/admin/users/show.html.haml +++ b/app/views/admin/users/show.html.haml @@ -205,7 +205,7 @@ %p Deleting a user has the following effects: = render 'users/deletion_guidance', user: @user %br - %button.delete-user-button.btn.gl-button.btn-danger{ data: { 'gl-modal-action': 'delete', + %button.js-delete-user-modal-button.btn.gl-button.btn-danger{ data: { 'gl-modal-action': 'delete', delete_user_url: admin_user_path(@user), block_user_url: block_admin_user_path(@user), username: sanitize_name(@user.name) } } @@ -235,7 +235,7 @@ the user, and projects in them, will also be removed. Commits to other projects are unaffected. %br - %button.delete-user-button.btn.gl-button.btn-danger{ data: { 'gl-modal-action': 'delete-with-contributions', + %button.js-delete-user-modal-button.btn.gl-button.btn-danger{ data: { 'gl-modal-action': 'delete-with-contributions', delete_user_url: admin_user_path(@user, hard_delete: true), block_user_url: block_admin_user_path(@user), username: @user.name } } |