diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/content_editor/components/top_toolbar.vue | 9 | ||||
-rw-r--r-- | app/assets/javascripts/content_editor/extensions/horizontal_rule.js | 9 | ||||
-rw-r--r-- | app/assets/javascripts/search/topbar/components/searchable_dropdown_item.vue | 8 | ||||
-rw-r--r-- | app/models/audit_event.rb | 7 | ||||
-rw-r--r-- | app/models/wiki.rb | 2 | ||||
-rw-r--r-- | app/services/ci/queue/pending_builds_strategy.rb | 10 | ||||
-rw-r--r-- | app/services/post_receive_service.rb | 10 |
7 files changed, 43 insertions, 12 deletions
diff --git a/app/assets/javascripts/content_editor/components/top_toolbar.vue b/app/assets/javascripts/content_editor/components/top_toolbar.vue index d3363ce092b..398a9610fb5 100644 --- a/app/assets/javascripts/content_editor/components/top_toolbar.vue +++ b/app/assets/javascripts/content_editor/components/top_toolbar.vue @@ -123,5 +123,14 @@ export default { :tiptap-editor="contentEditor.tiptapEditor" @execute="trackToolbarControlExecution" /> + <toolbar-button + data-testid="horizontal-rule" + content-type="horizontalRule" + icon-name="dash" + editor-command="setHorizontalRule" + :label="__('Add a horizontal rule')" + :tiptap-editor="contentEditor.tiptapEditor" + @execute="trackToolbarControlExecution" + /> </div> </template> diff --git a/app/assets/javascripts/content_editor/extensions/horizontal_rule.js b/app/assets/javascripts/content_editor/extensions/horizontal_rule.js index dcc59476518..c287938af5c 100644 --- a/app/assets/javascripts/content_editor/extensions/horizontal_rule.js +++ b/app/assets/javascripts/content_editor/extensions/horizontal_rule.js @@ -1,5 +1,12 @@ +import { nodeInputRule } from '@tiptap/core'; import { HorizontalRule } from '@tiptap/extension-horizontal-rule'; import { defaultMarkdownSerializer } from 'prosemirror-markdown/src/to_markdown'; -export const tiptapExtension = HorizontalRule; +export const hrInputRuleRegExp = /^---$/; + +export const tiptapExtension = HorizontalRule.extend({ + addInputRules() { + return [nodeInputRule(hrInputRuleRegExp, this.type)]; + }, +}); export const serializer = defaultMarkdownSerializer.nodes.horizontal_rule; diff --git a/app/assets/javascripts/search/topbar/components/searchable_dropdown_item.vue b/app/assets/javascripts/search/topbar/components/searchable_dropdown_item.vue index 498d4af59b4..42d6444e690 100644 --- a/app/assets/javascripts/search/topbar/components/searchable_dropdown_item.vue +++ b/app/assets/javascripts/search/topbar/components/searchable_dropdown_item.vue @@ -1,5 +1,5 @@ <script> -import { GlDropdownItem, GlAvatar } from '@gitlab/ui'; +import { GlDropdownItem, GlAvatar, GlSafeHtmlDirective as SafeHtml } from '@gitlab/ui'; import highlight from '~/lib/utils/highlight'; import { truncateNamespace } from '~/lib/utils/text_utility'; @@ -9,6 +9,9 @@ export default { GlDropdownItem, GlAvatar, }, + directives: { + SafeHtml, + }, props: { item: { type: Object, @@ -62,8 +65,7 @@ export default { :size="32" /> <div class="gl-display-flex gl-flex-direction-column"> - <!-- eslint-disable-next-line vue/no-v-html --> - <span data-testid="item-title" v-html="highlightedItemName">{{ item[name] }}</span> + <span v-safe-html="highlightedItemName" data-testid="item-title"></span> <span class="gl-font-sm gl-text-gray-700" data-testid="item-namespace">{{ truncatedNamespace }}</span> diff --git a/app/models/audit_event.rb b/app/models/audit_event.rb index aff7eef4622..78823b9604e 100644 --- a/app/models/audit_event.rb +++ b/app/models/audit_event.rb @@ -88,7 +88,12 @@ class AuditEvent < ApplicationRecord end def parallel_persist - PARALLEL_PERSISTENCE_COLUMNS.each { |col| self[col] = details[col] } + PARALLEL_PERSISTENCE_COLUMNS.each do |name| + original = self[name] || self.details[name] + next unless original + + self[name] = self.details[name] = original + end end end diff --git a/app/models/wiki.rb b/app/models/wiki.rb index 7fc01f373c8..0152a714fb8 100644 --- a/app/models/wiki.rb +++ b/app/models/wiki.rb @@ -7,6 +7,8 @@ class Wiki include Gitlab::Utils::StrongMemoize include GlobalID::Identification + extend ActiveModel::Naming + MARKUPS = { # rubocop:disable Style/MultilineIfModifier 'Markdown' => :markdown, 'RDoc' => :rdoc, diff --git a/app/services/ci/queue/pending_builds_strategy.rb b/app/services/ci/queue/pending_builds_strategy.rb index 1c6007f0be8..b49c6871d00 100644 --- a/app/services/ci/queue/pending_builds_strategy.rb +++ b/app/services/ci/queue/pending_builds_strategy.rb @@ -26,7 +26,8 @@ module Ci # this returns builds that are ordered by number of running builds # we prefer projects that don't use shared runners at all relation - .joins("LEFT JOIN (#{running_builds_for_shared_runners.to_sql}) AS project_builds ON ci_pending_builds.project_id=project_builds.project_id") + .with(running_builds_for_shared_runners_cte.to_arel) + .joins("LEFT JOIN project_builds ON ci_pending_builds.project_id = project_builds.project_id") .order(Arel.sql('COALESCE(project_builds.running_builds, 0) ASC'), 'ci_pending_builds.build_id ASC') end end @@ -53,11 +54,14 @@ module Ci private - def running_builds_for_shared_runners - ::Ci::RunningBuild + def running_builds_for_shared_runners_cte + running_builds = ::Ci::RunningBuild .instance_type .group(:project_id) .select(:project_id, 'COUNT(*) AS running_builds') + + ::Gitlab::SQL::CTE + .new(:project_builds, running_builds, materialized: true) end # rubocop:enable CodeReuse/ActiveRecord end diff --git a/app/services/post_receive_service.rb b/app/services/post_receive_service.rb index faacabbb16c..a6d49f03c0b 100644 --- a/app/services/post_receive_service.rb +++ b/app/services/post_receive_service.rb @@ -32,11 +32,11 @@ class PostReceiveService response.add_alert_message(broadcast_message) response.add_merge_request_urls(merge_request_urls) - # Neither User nor Project are guaranteed to be returned; an orphaned write deploy + # Neither User nor Repository are guaranteed to be returned; an orphaned write deploy # key could be used - if user && project - redirect_message = Gitlab::Checks::ProjectMoved.fetch_message(user.id, project.id) - project_created_message = Gitlab::Checks::ProjectCreated.fetch_message(user.id, project.id) + if user && repository + redirect_message = Gitlab::Checks::ContainerMoved.fetch_message(user, repository) + project_created_message = Gitlab::Checks::ProjectCreated.fetch_message(user, repository) response.add_basic_message(redirect_message) response.add_basic_message(project_created_message) @@ -94,6 +94,8 @@ class PostReceiveService end def record_onboarding_progress + return unless project + OnboardingProgressService.new(project.namespace).execute(action: :git_write) end end |