From defeeba1a8d6fa8784db1c50ca4ff9e8b56f539c Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 7 Mar 2023 00:07:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../components/value_stream_filters.vue | 2 - .../shared/components/projects_dropdown_filter.vue | 5 - .../behaviors/markdown/render_json_table.js | 2 +- .../behaviors/markdown/render_sandboxed_mermaid.js | 2 +- .../javascripts/behaviors/preview_markdown.js | 2 +- .../deploy_tokens/components/new_deploy_token.vue | 2 +- app/assets/javascripts/deprecated_notes.js | 2 +- .../design_management/pages/design/index.vue | 4 +- app/assets/javascripts/diffs/components/app.vue | 2 +- .../diffs/components/diff_expansion_cell.vue | 2 +- .../javascripts/diffs/components/diff_file.vue | 2 +- app/assets/javascripts/diffs/store/actions.js | 2 +- .../import_groups/components/import_table.vue | 2 +- .../import_groups/services/status_poller.js | 2 +- .../import_projects/store/actions.js | 10 +- .../notes/components/note_edited_text.vue | 19 +++- app/assets/javascripts/notes/i18n.js | 2 +- app/assets/javascripts/service_ping_consent.js | 2 +- app/assets/javascripts/task_list.js | 2 +- .../components/inbound_token_access.vue | 2 +- .../token_access/components/opt_in_jwt.vue | 2 +- .../components/outbound_token_access.vue | 2 +- .../work_item_links/work_item_link_child.vue | 2 +- .../work_item_links/work_item_tree_children.vue | 2 +- app/assets/stylesheets/page_bundles/issuable.scss | 5 +- app/controllers/admin/projects_controller.rb | 27 ++++- .../profiles/personal_access_tokens_controller.rb | 5 +- app/finders/abuse_reports_finder.rb | 10 ++ app/helpers/application_helper.rb | 2 +- app/helpers/routing/projects_helper.rb | 5 + app/models/alert_management/alert.rb | 2 +- app/models/commit.rb | 3 +- app/models/commit_range.rb | 2 +- app/models/concerns/noteable.rb | 1 + app/models/concerns/referable.rb | 6 +- app/models/design_management/design.rb | 4 +- app/models/group.rb | 13 --- app/models/issue.rb | 10 +- app/models/merge_request.rb | 2 +- app/models/milestone.rb | 2 +- app/models/namespace.rb | 45 ++++++++ app/models/operations/feature_flag.rb | 2 +- app/models/project.rb | 13 ++- app/models/snippet.rb | 2 +- app/services/groups/autocomplete_service.rb | 2 +- .../personal_access_tokens/create_service.rb | 8 +- app/views/admin/projects/_form.html.haml | 23 ++++ app/views/admin/projects/_projects.html.haml | 2 +- app/views/admin/projects/edit.html.haml | 4 + app/views/admin/projects/show.html.haml | 4 +- .../notify/merge_request_status_email.text.haml | 2 +- config/routes/admin.rb | 4 + doc/development/code_review.md | 2 +- doc/user/admin_area/index.md | 10 ++ .../scheduled_scan_execution_policies_diagram.png | Bin 0 -> 35066 bytes .../policies/scan-execution-policies.md | 16 ++- doc/user/compliance/compliance_report/index.md | 2 +- .../filter/references/design_reference_filter.rb | 2 +- .../filter/references/issue_reference_filter.rb | 2 +- lib/banzai/reference_parser/issue_parser.rb | 1 + .../importer/events/cross_referenced.rb | 1 + locale/gitlab.pot | 21 +++- spec/factories/work_items.rb | 7 ++ spec/features/admin/admin_projects_spec.rb | 25 +++++ spec/finders/abuse_reports_finder_spec.rb | 30 ++++- spec/helpers/issuables_helper_spec.rb | 18 +-- .../issuable_reference_expansion_filter_spec.rb | 2 +- .../filter/references/reference_cache_spec.rb | 3 +- spec/lib/gitlab/issuable_sorter_spec.rb | 42 +++++-- spec/models/abuse_report_spec.rb | 5 +- spec/models/design_management/design_spec.rb | 4 +- spec/models/issue_spec.rb | 125 ++++++++++++++++++--- spec/models/namespace_spec.rb | 111 ++++++++++++++++++ spec/models/project_spec.rb | 54 +++++++++ spec/requests/admin/projects_controller_spec.rb | 58 ++++++++++ .../group_issuable_autocomplete_entity_spec.rb | 3 +- .../personal_access_tokens/create_service_spec.rb | 20 +++- 77 files changed, 714 insertions(+), 138 deletions(-) create mode 100644 app/views/admin/projects/_form.html.haml create mode 100644 app/views/admin/projects/edit.html.haml create mode 100644 doc/user/application_security/policies/img/scheduled_scan_execution_policies_diagram.png create mode 100644 spec/requests/admin/projects_controller_spec.rb diff --git a/app/assets/javascripts/analytics/cycle_analytics/components/value_stream_filters.vue b/app/assets/javascripts/analytics/cycle_analytics/components/value_stream_filters.vue index 17decb6b448..82bb1f77cbb 100644 --- a/app/assets/javascripts/analytics/cycle_analytics/components/value_stream_filters.vue +++ b/app/assets/javascripts/analytics/cycle_analytics/components/value_stream_filters.vue @@ -82,9 +82,7 @@ export default {
diff --git a/app/assets/javascripts/behaviors/markdown/render_sandboxed_mermaid.js b/app/assets/javascripts/behaviors/markdown/render_sandboxed_mermaid.js index 66007aa9e3d..bd9e41ac0ba 100644 --- a/app/assets/javascripts/behaviors/markdown/render_sandboxed_mermaid.js +++ b/app/assets/javascripts/behaviors/markdown/render_sandboxed_mermaid.js @@ -8,7 +8,7 @@ import { } from '~/lib/utils/url_utility'; import { darkModeEnabled } from '~/lib/utils/color_utils'; import { setAttributes, isElementVisible } from '~/lib/utils/dom_utils'; -import { createAlert, VARIANT_WARNING } from '~/flash'; +import { createAlert, VARIANT_WARNING } from '~/alert'; import { unrestrictedPages } from './constants'; // Renders diagrams and flowcharts from text using Mermaid in any element with the diff --git a/app/assets/javascripts/behaviors/preview_markdown.js b/app/assets/javascripts/behaviors/preview_markdown.js index 32e395e4f3c..dc408f5a950 100644 --- a/app/assets/javascripts/behaviors/preview_markdown.js +++ b/app/assets/javascripts/behaviors/preview_markdown.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import { renderGFM } from '~/behaviors/markdown/render_gfm'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; import { __ } from '~/locale'; diff --git a/app/assets/javascripts/deploy_tokens/components/new_deploy_token.vue b/app/assets/javascripts/deploy_tokens/components/new_deploy_token.vue index 57fae608efa..486baccfad0 100644 --- a/app/assets/javascripts/deploy_tokens/components/new_deploy_token.vue +++ b/app/assets/javascripts/deploy_tokens/components/new_deploy_token.vue @@ -9,7 +9,7 @@ import { GlSprintf, GlLink, } from '@gitlab/ui'; -import { createAlert, VARIANT_INFO } from '~/flash'; +import { createAlert, VARIANT_INFO } from '~/alert'; import axios from '~/lib/utils/axios_utils'; import { formatDate } from '~/lib/utils/datetime_utility'; import ClipboardButton from '~/vue_shared/components/clipboard_button.vue'; diff --git a/app/assets/javascripts/deprecated_notes.js b/app/assets/javascripts/deprecated_notes.js index 7503df9194b..5b398623164 100644 --- a/app/assets/javascripts/deprecated_notes.js +++ b/app/assets/javascripts/deprecated_notes.js @@ -16,7 +16,7 @@ import $ from 'jquery'; import { escape, uniqueId } from 'lodash'; import Vue from 'vue'; import { renderGFM } from '~/behaviors/markdown/render_gfm'; -import { createAlert, VARIANT_INFO } from '~/flash'; +import { createAlert, VARIANT_INFO } from '~/alert'; import { sanitize } from '~/lib/dompurify'; import '~/lib/utils/jquery_at_who'; import AjaxCache from '~/lib/utils/ajax_cache'; diff --git a/app/assets/javascripts/design_management/pages/design/index.vue b/app/assets/javascripts/design_management/pages/design/index.vue index 2780ae70cc7..c099c06df47 100644 --- a/app/assets/javascripts/design_management/pages/design/index.vue +++ b/app/assets/javascripts/design_management/pages/design/index.vue @@ -3,7 +3,7 @@ import { GlAlert } from '@gitlab/ui'; import { isNull } from 'lodash'; import Mousetrap from 'mousetrap'; import { keysFor, ISSUE_CLOSE_DESIGN } from '~/behaviors/shortcuts/keybindings'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { fetchPolicies } from '~/lib/graphql'; import { updateGlobalTodoCount } from '~/sidebar/utils'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; @@ -253,7 +253,7 @@ export default { }, onQueryError(message) { // because we redirect user to /designs (the issue page), - // we want to create these flashes on the issue page + // we want to create these alerts on the issue page createAlert({ message }); this.$router.push({ name: this.$options.DESIGNS_ROUTE_NAME }); }, diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue index 9a6b36ad2e8..9ccba88f7e6 100644 --- a/app/assets/javascripts/diffs/components/app.vue +++ b/app/assets/javascripts/diffs/components/app.vue @@ -11,7 +11,7 @@ import { MR_COMMITS_NEXT_COMMIT, MR_COMMITS_PREVIOUS_COMMIT, } from '~/behaviors/shortcuts/keybindings'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { isSingleViewStyle } from '~/helpers/diffs_helper'; import { helpPagePath } from '~/helpers/help_page_helper'; import { parseBoolean } from '~/lib/utils/common_utils'; diff --git a/app/assets/javascripts/diffs/components/diff_expansion_cell.vue b/app/assets/javascripts/diffs/components/diff_expansion_cell.vue index 8fcbc4b5cce..53a55aac1ec 100644 --- a/app/assets/javascripts/diffs/components/diff_expansion_cell.vue +++ b/app/assets/javascripts/diffs/components/diff_expansion_cell.vue @@ -2,7 +2,7 @@ import { GlTooltipDirective, GlIcon, GlLoadingIcon } from '@gitlab/ui'; import { mapActions } from 'vuex'; import SafeHtml from '~/vue_shared/directives/safe_html'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { s__, sprintf } from '~/locale'; import { UNFOLD_COUNT, INLINE_DIFF_LINES_KEY } from '../constants'; import * as utils from '../store/utils'; diff --git a/app/assets/javascripts/diffs/components/diff_file.vue b/app/assets/javascripts/diffs/components/diff_file.vue index 564f776edd2..c19174dda8a 100644 --- a/app/assets/javascripts/diffs/components/diff_file.vue +++ b/app/assets/javascripts/diffs/components/diff_file.vue @@ -5,7 +5,7 @@ import { mapActions, mapGetters, mapState } from 'vuex'; import SafeHtml from '~/vue_shared/directives/safe_html'; import { IdState } from 'vendor/vue-virtual-scroller'; import DiffContent from 'jh_else_ce/diffs/components/diff_content.vue'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { hasDiff } from '~/helpers/diffs_helper'; import { diffViewerErrors } from '~/ide/constants'; import { scrollToElement } from '~/lib/utils/common_utils'; diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index 561e2a4f134..9236e14beb1 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -5,7 +5,7 @@ import { historyPushState, scrollToElement, } from '~/lib/utils/common_utils'; -import { createAlert, VARIANT_WARNING } from '~/flash'; +import { createAlert, VARIANT_WARNING } from '~/alert'; import { diffViewerModes } from '~/ide/constants'; import axios from '~/lib/utils/axios_utils'; diff --git a/app/assets/javascripts/import_entities/import_groups/components/import_table.vue b/app/assets/javascripts/import_entities/import_groups/components/import_table.vue index 5ef6c974920..1c196e05ff0 100644 --- a/app/assets/javascripts/import_entities/import_groups/components/import_table.vue +++ b/app/assets/javascripts/import_entities/import_groups/components/import_table.vue @@ -15,7 +15,7 @@ import { GlTooltipDirective, } from '@gitlab/ui'; import { debounce } from 'lodash'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { s__, __, n__, sprintf } from '~/locale'; import { HTTP_STATUS_TOO_MANY_REQUESTS } from '~/lib/utils/http_status'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; diff --git a/app/assets/javascripts/import_entities/import_groups/services/status_poller.js b/app/assets/javascripts/import_entities/import_groups/services/status_poller.js index 6ad5e448a40..10496fce11b 100644 --- a/app/assets/javascripts/import_entities/import_groups/services/status_poller.js +++ b/app/assets/javascripts/import_entities/import_groups/services/status_poller.js @@ -1,5 +1,5 @@ import Visibility from 'visibilityjs'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; import Poll from '~/lib/utils/poll'; import { s__ } from '~/locale'; diff --git a/app/assets/javascripts/import_entities/import_projects/store/actions.js b/app/assets/javascripts/import_entities/import_projects/store/actions.js index e0db585eb3e..e3c32028b13 100644 --- a/app/assets/javascripts/import_entities/import_projects/store/actions.js +++ b/app/assets/javascripts/import_entities/import_projects/store/actions.js @@ -1,6 +1,6 @@ import Visibility from 'visibilityjs'; import _ from 'lodash'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { HTTP_STATUS_TOO_MANY_REQUESTS } from '~/lib/utils/http_status'; @@ -141,7 +141,7 @@ const fetchImportFactory = (importPath = isRequired()) => ( }) .catch((e) => { const serverErrorMessage = e?.response?.data?.errors; - const flashMessage = serverErrorMessage + const alertMessage = serverErrorMessage ? sprintf( s__('ImportProjects|Importing the project failed: %{reason}'), { @@ -152,7 +152,7 @@ const fetchImportFactory = (importPath = isRequired()) => ( : s__('ImportProjects|Importing the project failed'); createAlert({ - message: flashMessage, + message: alertMessage, }); commit(types.RECEIVE_IMPORT_ERROR, repoId); @@ -179,7 +179,7 @@ export const cancelImportFactory = (cancelImportPath) => ({ state, commit }, { r }) .catch((e) => { const serverErrorMessage = e?.response?.data?.errors; - const flashMessage = serverErrorMessage + const alertMessage = serverErrorMessage ? sprintf( s__('ImportProjects|Cancelling project import failed: %{reason}'), { @@ -190,7 +190,7 @@ export const cancelImportFactory = (cancelImportPath) => ({ state, commit }, { r : s__('ImportProjects|Cancelling project import failed'); createAlert({ - message: flashMessage, + message: alertMessage, }); }); }; diff --git a/app/assets/javascripts/notes/components/note_edited_text.vue b/app/assets/javascripts/notes/components/note_edited_text.vue index bdff2e6317c..25c82c29a29 100644 --- a/app/assets/javascripts/notes/components/note_edited_text.vue +++ b/app/assets/javascripts/notes/components/note_edited_text.vue @@ -46,14 +46,21 @@ export default { + + - diff --git a/app/assets/javascripts/notes/i18n.js b/app/assets/javascripts/notes/i18n.js index 8aad3ec07cb..4bf2a8d70a7 100644 --- a/app/assets/javascripts/notes/i18n.js +++ b/app/assets/javascripts/notes/i18n.js @@ -51,6 +51,6 @@ export const COMMENT_FORM = { }; export const EDITED_TEXT = { - actionWithAuthor: __('%{actionText} by %{author} %{actionDetail}'), + actionWithAuthor: __('%{actionText} %{actionDetail} %{timeago} by %{author}'), actionWithoutAuthor: __('%{actionText} %{actionDetail}'), }; diff --git a/app/assets/javascripts/service_ping_consent.js b/app/assets/javascripts/service_ping_consent.js index 1cb4e188e54..7d6e7e81f3b 100644 --- a/app/assets/javascripts/service_ping_consent.js +++ b/app/assets/javascripts/service_ping_consent.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from './lib/utils/axios_utils'; import { parseBoolean } from './lib/utils/common_utils'; import { __ } from './locale'; diff --git a/app/assets/javascripts/task_list.js b/app/assets/javascripts/task_list.js index a7760ad5d0b..bb344ade344 100644 --- a/app/assets/javascripts/task_list.js +++ b/app/assets/javascripts/task_list.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import 'deckar01-task_list'; import { __ } from '~/locale'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from './lib/utils/axios_utils'; export default class TaskList { diff --git a/app/assets/javascripts/token_access/components/inbound_token_access.vue b/app/assets/javascripts/token_access/components/inbound_token_access.vue index feaf9072ee2..1904846fcbc 100644 --- a/app/assets/javascripts/token_access/components/inbound_token_access.vue +++ b/app/assets/javascripts/token_access/components/inbound_token_access.vue @@ -9,7 +9,7 @@ import { GlSprintf, GlToggle, } from '@gitlab/ui'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { __, s__ } from '~/locale'; import { helpPagePath } from '~/helpers/help_page_helper'; import inboundAddProjectCIJobTokenScopeMutation from '../graphql/mutations/inbound_add_project_ci_job_token_scope.mutation.graphql'; diff --git a/app/assets/javascripts/token_access/components/opt_in_jwt.vue b/app/assets/javascripts/token_access/components/opt_in_jwt.vue index c774f37b1e4..9485e0c3667 100644 --- a/app/assets/javascripts/token_access/components/opt_in_jwt.vue +++ b/app/assets/javascripts/token_access/components/opt_in_jwt.vue @@ -1,7 +1,7 @@