diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-04-12 06:47:21 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-04-12 06:47:21 +0000 |
commit | c20ce49bdab650656be01968381f6ee1a5f96e7c (patch) | |
tree | 808be3d86edf4e29a5f148aae6bb9817ea3ee9be /app | |
parent | 2dd1c1ab9db62a17d8f7ccaa29cec5a5f437d8de (diff) | |
download | gitlab-ce-c20ce49bdab650656be01968381f6ee1a5f96e7c.tar.gz |
Add latest changes from gitlab-org/gitlab@15-10-stable-ee
Diffstat (limited to 'app')
7 files changed, 59 insertions, 30 deletions
diff --git a/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue b/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue index 65aa4cba074..4482198675d 100644 --- a/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue +++ b/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue @@ -17,13 +17,7 @@ import { redirectTo } from '~/lib/utils/url_utility'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants'; import SafeHtml from '~/vue_shared/directives/safe_html'; -import { - BROADCAST_MESSAGES_PATH, - MESSAGES_PREVIEW_PATH, - THEMES, - TYPES, - TYPE_BANNER, -} from '../constants'; +import { THEMES, TYPES, TYPE_BANNER } from '../constants'; import MessageFormGroup from './message_form_group.vue'; import DatetimePicker from './datetime_picker.vue'; @@ -49,7 +43,17 @@ export default { SafeHtml, }, mixins: [glFeatureFlagsMixin()], - inject: ['targetAccessLevelOptions'], + inject: { + targetAccessLevelOptions: { + default: [[]], + }, + messagesPath: { + default: '', + }, + previewPath: { + default: '', + }, + }, i18n: { message: s__('BroadcastMessages|Message'), messagePlaceholder: s__('BroadcastMessages|Your message here'), @@ -111,8 +115,8 @@ export default { }, formPath() { return this.isAddForm - ? BROADCAST_MESSAGES_PATH - : `${BROADCAST_MESSAGES_PATH}/${this.broadcastMessage.id}`; + ? this.messagesPath + : `${this.messagesPath}/${this.broadcastMessage.id}`; }, formPayload() { return JSON.stringify({ @@ -138,7 +142,7 @@ export default { const success = await this.submitForm(); if (success) { - redirectTo(BROADCAST_MESSAGES_PATH); + redirectTo(this.messagesPath); } else { this.loading = false; } @@ -161,7 +165,7 @@ export default { async renderPreview() { try { - const res = await axios.post(MESSAGES_PREVIEW_PATH, this.formPayload, FORM_HEADERS); + const res = await axios.post(this.previewPath, this.formPayload, FORM_HEADERS); this.renderedMessage = res.data; } catch (e) { this.renderedMessage = ''; @@ -175,7 +179,13 @@ export default { </script> <template> <gl-form @submit.prevent="onSubmit"> - <gl-broadcast-message class="gl-my-6" :type="type" :theme="theme" :dismissible="dismissable"> + <gl-broadcast-message + class="gl-my-6" + :type="type" + :theme="theme" + :dismissible="dismissable" + data-testid="preview-broadcast-message" + > <div v-safe-html:[$options.safeHtmlConfig]="messagePreview"></div> </gl-broadcast-message> @@ -186,6 +196,7 @@ export default { size="sm" :debounce="$options.DEFAULT_DEBOUNCE_AND_THROTTLE_MS" :placeholder="$options.i18n.messagePlaceholder" + data-testid="message-input" /> </message-form-group> @@ -241,7 +252,7 @@ export default { <datetime-picker v-model="endsAt" /> </message-form-group> - <div class="form-actions gl-mb-3"> + <div class="form-actions gl-my-3"> <gl-button type="submit" variant="confirm" diff --git a/app/assets/javascripts/admin/broadcast_messages/constants.js b/app/assets/javascripts/admin/broadcast_messages/constants.js index 323ac6857f6..9f64b2dcaa0 100644 --- a/app/assets/javascripts/admin/broadcast_messages/constants.js +++ b/app/assets/javascripts/admin/broadcast_messages/constants.js @@ -1,8 +1,5 @@ import { s__ } from '~/locale'; -export const BROADCAST_MESSAGES_PATH = '/admin/broadcast_messages'; -export const MESSAGES_PREVIEW_PATH = '/admin/broadcast_messages/preview'; - export const TYPE_BANNER = 'banner'; export const TYPE_NOTIFICATION = 'notification'; diff --git a/app/assets/javascripts/admin/broadcast_messages/edit.js b/app/assets/javascripts/admin/broadcast_messages/edit.js index 70a270f7a56..91dae949d45 100644 --- a/app/assets/javascripts/admin/broadcast_messages/edit.js +++ b/app/assets/javascripts/admin/broadcast_messages/edit.js @@ -11,6 +11,8 @@ export default () => { dismissable, targetAccessLevels, targetAccessLevelOptions, + messagesPath, + previewPath, targetPath, startsAt, endsAt, @@ -21,6 +23,8 @@ export default () => { name: 'EditBroadcastMessage', provide: { targetAccessLevelOptions: JSON.parse(targetAccessLevelOptions), + messagesPath, + previewPath, }, render(createElement) { return createElement(MessageForm, { diff --git a/app/assets/javascripts/admin/broadcast_messages/index.js b/app/assets/javascripts/admin/broadcast_messages/index.js index fd8b2aad4ec..29021043b1a 100644 --- a/app/assets/javascripts/admin/broadcast_messages/index.js +++ b/app/assets/javascripts/admin/broadcast_messages/index.js @@ -3,13 +3,22 @@ import BroadcastMessagesBase from './components/base.vue'; export default () => { const el = document.querySelector('#js-broadcast-messages'); - const { page, targetAccessLevelOptions, messagesCount, messages } = el.dataset; + const { + page, + targetAccessLevelOptions, + messagesPath, + previewPath, + messagesCount, + messages, + } = el.dataset; return new Vue({ el, name: 'BroadcastMessages', provide: { targetAccessLevelOptions: JSON.parse(targetAccessLevelOptions), + messagesPath, + previewPath, }, render(createElement) { return createElement(BroadcastMessagesBase, { diff --git a/app/helpers/broadcast_messages_helper.rb b/app/helpers/broadcast_messages_helper.rb index 1c5a601de25..bc3527565a6 100644 --- a/app/helpers/broadcast_messages_helper.rb +++ b/app/helpers/broadcast_messages_helper.rb @@ -79,6 +79,23 @@ module BroadcastMessagesHelper end.to_json end + def broadcast_message_data(broadcast_message) + { + id: broadcast_message.id, + message: broadcast_message.message, + broadcast_type: broadcast_message.broadcast_type, + theme: broadcast_message.theme, + dismissable: broadcast_message.dismissable.to_s, + target_access_levels: broadcast_message.target_access_levels, + messages_path: admin_broadcast_messages_path, + preview_path: preview_admin_broadcast_messages_path, + target_path: broadcast_message.target_path, + starts_at: broadcast_message.starts_at.iso8601, + ends_at: broadcast_message.ends_at.iso8601, + target_access_level_options: target_access_level_options.to_json + } + end + private def current_user_access_level_for_project_or_group diff --git a/app/views/admin/broadcast_messages/edit.html.haml b/app/views/admin/broadcast_messages/edit.html.haml index 212cc437d3d..63ce08eef85 100644 --- a/app/views/admin/broadcast_messages/edit.html.haml +++ b/app/views/admin/broadcast_messages/edit.html.haml @@ -2,15 +2,4 @@ - breadcrumb_title @broadcast_message.id - page_title _("Broadcast Messages") -#js-broadcast-message{ data: { - id: @broadcast_message.id, - message: @broadcast_message.message, - broadcast_type: @broadcast_message.broadcast_type, - theme: @broadcast_message.theme, - dismissable: @broadcast_message.dismissable.to_s, - target_access_levels: @broadcast_message.target_access_levels, - target_path: @broadcast_message.target_path, - starts_at: @broadcast_message.starts_at, - ends_at: @broadcast_message.ends_at, - target_access_level_options: target_access_level_options.to_json, -} } +#js-broadcast-message{ data: broadcast_message_data(@broadcast_message) } diff --git a/app/views/admin/broadcast_messages/index.html.haml b/app/views/admin/broadcast_messages/index.html.haml index 010cc493ddf..fb63e761f69 100644 --- a/app/views/admin/broadcast_messages/index.html.haml +++ b/app/views/admin/broadcast_messages/index.html.haml @@ -9,5 +9,7 @@ #js-broadcast-messages{ data: { page: params[:page] || 1, target_access_level_options: target_access_level_options.to_json, + messages_path: admin_broadcast_messages_path, + preview_path: preview_admin_broadcast_messages_path, messages_count: @broadcast_messages.total_count, messages: admin_broadcast_messages_data(@broadcast_messages) } } |