Skip to content

Commit 8137303

Browse files
author
GitLab Bot
committed
Add latest changes from gitlab-org/gitlab@master
1 parent 5b1258e commit 8137303

File tree

72 files changed

+758
-683
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+758
-683
lines changed

.gitlab/ci/docs.gitlab-ci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ review-docs-cleanup:
4242
docs-lint links:
4343
extends:
4444
- .docs:rules:docs-lint
45-
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-html:alpine-3.16-ruby-2.7.6-0bc327a4
45+
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-html:alpine-3.16-ruby-2.7.7-8ae1f7da
4646
stage: lint
4747
needs: []
4848
script:
@@ -58,7 +58,7 @@ docs-lint links:
5858

5959
.docs-markdown-lint-image:
6060
# When updating the image version here, update it in /scripts/lint-doc.sh too.
61-
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.16-vale-2.20.1-markdownlint-0.32.2
61+
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.16-vale-2.22.0-markdownlint-0.32.2-markdownlint2-0.6.0
6262

6363
docs-lint markdown:
6464
extends:

.ruby-version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.7.7
1+
3.0.5

app/assets/javascripts/abuse_reports/components/abuse_category_selector.vue

+9-6
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@ export default {
1818
reportAbusePath: {
1919
default: '',
2020
},
21+
},
22+
props: {
2123
reportedUserId: {
22-
default: '',
24+
type: Number,
25+
required: true,
2326
},
2427
reportedFromUrl: {
28+
type: String,
29+
required: false,
2530
default: '',
2631
},
27-
},
28-
props: {
2932
showDrawer: {
3033
type: Boolean,
3134
required: true,
@@ -39,8 +42,8 @@ export default {
3942
},
4043
categoryOptions: [
4144
{ value: 'spam', text: s__("ReportAbuse|They're posting spam.") },
42-
{ value: 'offensive', text: s__("ReportAbuse|They're being offsensive or abusive.") },
43-
{ value: 'phishing', text: s__("ReportAbuse|They're phising.") },
45+
{ value: 'offensive', text: s__("ReportAbuse|They're being offensive or abusive.") },
46+
{ value: 'phishing', text: s__("ReportAbuse|They're phishing.") },
4447
{ value: 'crypto', text: s__("ReportAbuse|They're crypto mining.") },
4548
{
4649
value: 'credentials',
@@ -94,7 +97,7 @@ export default {
9497
data-testid="input-referer"
9598
/>
9699

97-
<gl-form-group :label="$options.i18n.label">
100+
<gl-form-group :label="$options.i18n.label" label-class="gl-text-black-normal">
98101
<gl-form-radio-group
99102
v-model="selected"
100103
:options="$options.categoryOptions"

app/assets/javascripts/boards/components/sidebar/board_sidebar_title.vue

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script>
2-
import { GlAlert, GlButton, GlForm, GlFormGroup, GlFormInput } from '@gitlab/ui';
2+
import { GlAlert, GlButton, GlForm, GlFormGroup, GlFormInput, GlLink } from '@gitlab/ui';
33
import { mapGetters, mapActions } from 'vuex';
44
import BoardEditableItem from '~/boards/components/sidebar/board_editable_item.vue';
55
import { joinPaths } from '~/lib/utils/url_utility';
@@ -13,6 +13,7 @@ export default {
1313
GlButton,
1414
GlFormGroup,
1515
GlFormInput,
16+
GlLink,
1617
BoardEditableItem,
1718
},
1819
directives: {
@@ -130,7 +131,11 @@ export default {
130131
@off-click="handleOffClick"
131132
>
132133
<template #title>
133-
<span data-testid="item-title">{{ item.title }}</span>
134+
<span data-testid="item-title">
135+
<gl-link class="gl-reset-color gl-hover-text-blue-800" :href="item.webUrl">
136+
{{ item.title }}
137+
</gl-link>
138+
</span>
134139
</template>
135140
<template #collapsed>
136141
<span class="gl-text-gray-800">{{ item.referencePath }}</span>

app/assets/javascripts/issues/show/components/header_actions.vue

+8
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,12 @@ export default {
9898
submitAsSpamPath: {
9999
default: '',
100100
},
101+
reportedUserId: {
102+
default: '',
103+
},
104+
reportedFromUrl: {
105+
default: '',
106+
},
101107
},
102108
data() {
103109
return {
@@ -369,6 +375,8 @@ export default {
369375
/>
370376
371377
<abuse-category-selector
378+
:reported-user-id="reportedUserId"
379+
:reported-from-url="reportedFromUrl"
372380
:show-drawer="isReportAbuseDrawerOpen"
373381
@close-drawer="toggleReportAbuseDrawer(false)"
374382
/>

app/assets/javascripts/issues/show/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ export function initHeaderActions(store, type = '') {
152152
projectPath: el.dataset.projectPath,
153153
projectId: el.dataset.projectId,
154154
reportAbusePath: el.dataset.reportAbusePath,
155-
reportedUserId: el.dataset.reportedUserId,
155+
reportedUserId: parseInt(el.dataset.reportedUserId, 10),
156156
reportedFromUrl: el.dataset.reportedFromUrl,
157157
submitAsSpamPath: el.dataset.submitAsSpamPath,
158158
},

app/assets/javascripts/mr_notes/init_notes.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default () => {
2323
}
2424

2525
const notesFilterProps = getNotesFilterData(el);
26+
const notesDataset = el.dataset;
2627

2728
// eslint-disable-next-line no-new
2829
new Vue({
@@ -32,8 +33,10 @@ export default () => {
3233
NotesApp,
3334
},
3435
store,
36+
provide: {
37+
reportAbusePath: notesDataset.reportAbusePath,
38+
},
3539
data() {
36-
const notesDataset = el.dataset;
3740
const noteableData = JSON.parse(notesDataset.noteableData);
3841
noteableData.noteableType = notesDataset.noteableType;
3942
noteableData.targetType = notesDataset.targetType;

app/assets/javascripts/notes/components/note_actions.vue

+22-6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import eventHub from '~/sidebar/event_hub';
1010
import UserAccessRoleBadge from '~/vue_shared/components/user_access_role_badge.vue';
1111
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
1212
import { splitCamelCase } from '~/lib/utils/text_utility';
13+
import AbuseCategorySelector from '~/abuse_reports/components/abuse_category_selector.vue';
1314
import ReplyButton from './note_actions/reply_button.vue';
1415
import TimelineEventButton from './note_actions/timeline_event_button.vue';
1516
@@ -30,6 +31,7 @@ export default {
3031
GlDropdownItem,
3132
UserAccessRoleBadge,
3233
EmojiPicker: () => import('~/emoji/components/picker.vue'),
34+
AbuseCategorySelector,
3335
},
3436
directives: {
3537
GlTooltip: GlTooltipDirective,
@@ -58,11 +60,6 @@ export default {
5860
required: false,
5961
default: '',
6062
},
61-
reportAbusePath: {
62-
type: String,
63-
required: false,
64-
default: null,
65-
},
6663
isAuthor: {
6764
type: Boolean,
6865
required: false,
@@ -135,6 +132,11 @@ export default {
135132
default: '',
136133
},
137134
},
135+
data() {
136+
return {
137+
isReportAbuseDrawerOpen: false,
138+
};
139+
},
138140
computed: {
139141
...mapState(['isPromoteCommentToTimelineEventInProgress']),
140142
...mapGetters(['getUserDataByProp', 'getNoteableData', 'canUserAddIncidentTimelineEvents']),
@@ -252,6 +254,9 @@ export default {
252254
awardName,
253255
});
254256
},
257+
toggleReportAbuseDrawer(isOpen) {
258+
this.isReportAbuseDrawerOpen = isOpen;
259+
},
255260
},
256261
};
257262
</script>
@@ -362,7 +367,11 @@ export default {
362367
/>
363368
<!-- eslint-enable @gitlab/vue-no-data-toggle -->
364369
<ul class="dropdown-menu more-actions-dropdown dropdown-open-left">
365-
<gl-dropdown-item v-if="canReportAsAbuse" :href="reportAbusePath">
370+
<gl-dropdown-item
371+
v-if="canReportAsAbuse"
372+
data-testid="report-abuse-button"
373+
@click="toggleReportAbuseDrawer(true)"
374+
>
366375
{{ $options.i18n.reportAbuse }}
367376
</gl-dropdown-item>
368377
<gl-dropdown-item
@@ -380,5 +389,12 @@ export default {
380389
</gl-dropdown-item>
381390
</ul>
382391
</div>
392+
<abuse-category-selector
393+
v-if="canReportAsAbuse"
394+
:reported-user-id="authorId"
395+
:reported-from-url="noteUrl"
396+
:show-drawer="isReportAbuseDrawerOpen"
397+
@close-drawer="toggleReportAbuseDrawer(false)"
398+
/>
383399
</div>
384400
</template>

app/assets/javascripts/notes/components/noteable_note.vue

+6-2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ export default {
4343
SafeHtml,
4444
},
4545
mixins: [noteable, resolvable],
46+
inject: {
47+
reportAbusePath: {
48+
default: '',
49+
},
50+
},
4651
props: {
4752
note: {
4853
type: Object,
@@ -129,7 +134,7 @@ export default {
129134
};
130135
},
131136
canReportAsAbuse() {
132-
return Boolean(this.note.report_abuse_path) && this.author.id !== this.getUserData.id;
137+
return Boolean(this.reportAbusePath) && this.author.id !== this.getUserData.id;
133138
},
134139
noteAnchorId() {
135140
return `note_${this.note.id}`;
@@ -488,7 +493,6 @@ export default {
488493
:can-delete="note.current_user.can_edit"
489494
:can-report-as-abuse="canReportAsAbuse"
490495
:can-resolve="canResolve"
491-
:report-abuse-path="note.report_abuse_path"
492496
:resolvable="note.resolvable || note.isDraft"
493497
:is-resolved="note.resolved || note.resolve_discussion"
494498
:is-resolving="isResolving"

app/assets/javascripts/notes/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export default () => {
5252
store,
5353
provide: {
5454
showTimelineViewToggle,
55+
reportAbusePath: notesDataset.reportAbusePath,
5556
},
5657
data() {
5758
return {

app/assets/javascripts/packages_and_registries/package_registry/components/functional/delete_package.vue

-62
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<script>
2+
import destroyPackagesMutation from '~/packages_and_registries/package_registry/graphql/mutations/destroy_packages.mutation.graphql';
3+
import { createAlert, VARIANT_SUCCESS, VARIANT_WARNING } from '~/flash';
4+
5+
import {
6+
DELETE_PACKAGE_ERROR_MESSAGE,
7+
DELETE_PACKAGE_SUCCESS_MESSAGE,
8+
DELETE_PACKAGES_ERROR_MESSAGE,
9+
DELETE_PACKAGES_SUCCESS_MESSAGE,
10+
} from '~/packages_and_registries/package_registry/constants';
11+
12+
export default {
13+
name: 'DeletePackages',
14+
props: {
15+
refetchQueries: {
16+
type: Array,
17+
required: false,
18+
default: null,
19+
},
20+
showSuccessAlert: {
21+
type: Boolean,
22+
required: false,
23+
default: false,
24+
},
25+
},
26+
i18n: {
27+
errorMessage: DELETE_PACKAGE_ERROR_MESSAGE,
28+
errorMessageMultiple: DELETE_PACKAGES_ERROR_MESSAGE,
29+
successMessage: DELETE_PACKAGE_SUCCESS_MESSAGE,
30+
successMessageMultiple: DELETE_PACKAGES_SUCCESS_MESSAGE,
31+
},
32+
methods: {
33+
async deletePackages(packageEntities) {
34+
const isSinglePackage = packageEntities.length === 1;
35+
try {
36+
this.$emit('start');
37+
const ids = packageEntities.map((packageEntity) => packageEntity.id);
38+
const { data } = await this.$apollo.mutate({
39+
mutation: destroyPackagesMutation,
40+
variables: {
41+
ids,
42+
},
43+
awaitRefetchQueries: Boolean(this.refetchQueries),
44+
refetchQueries: this.refetchQueries,
45+
});
46+
47+
if (data?.destroyPackages?.errors[0]) {
48+
throw data.destroyPackages.errors[0];
49+
}
50+
51+
if (this.showSuccessAlert) {
52+
createAlert({
53+
message: isSinglePackage
54+
? this.$options.i18n.successMessage
55+
: this.$options.i18n.successMessageMultiple,
56+
variant: VARIANT_SUCCESS,
57+
});
58+
}
59+
} catch (error) {
60+
createAlert({
61+
message: isSinglePackage
62+
? this.$options.i18n.errorMessage
63+
: this.$options.i18n.errorMessageMultiple,
64+
variant: VARIANT_WARNING,
65+
captureError: true,
66+
error,
67+
});
68+
}
69+
this.$emit('end');
70+
},
71+
},
72+
render() {
73+
return this.$scopedSlots.default({ deletePackages: this.deletePackages });
74+
},
75+
};
76+
</script>

0 commit comments

Comments
 (0)