diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-21 15:09:05 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-21 15:09:05 +0000 |
commit | cf6a3e7ed4cb10a3e9fcbda810601387afc8b8d6 (patch) | |
tree | bda3707e95a53cb225793fded61d5073950b0b68 /app | |
parent | 2a040e2655fe0a99df61ad0a7bd0c27e68af0c38 (diff) | |
download | gitlab-ce-cf6a3e7ed4cb10a3e9fcbda810601387afc8b8d6.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/error_tracking/components/error_details.vue | 134 | ||||
-rw-r--r-- | app/assets/javascripts/notifications_dropdown.js | 2 | ||||
-rw-r--r-- | app/assets/stylesheets/pages/error_details.scss | 20 | ||||
-rw-r--r-- | app/controllers/sessions_controller.rb | 2 | ||||
-rw-r--r-- | app/models/commit.rb | 1 | ||||
-rw-r--r-- | app/models/project_services/chat_message/base_message.rb | 2 | ||||
-rw-r--r-- | app/models/project_services/chat_message/push_message.rb | 11 | ||||
-rw-r--r-- | app/models/project_services/microsoft_teams_service.rb | 2 |
8 files changed, 117 insertions, 57 deletions
diff --git a/app/assets/javascripts/error_tracking/components/error_details.vue b/app/assets/javascripts/error_tracking/components/error_details.vue index 7abe3be3e99..89d32efec6d 100644 --- a/app/assets/javascripts/error_tracking/components/error_details.vue +++ b/app/assets/javascripts/error_tracking/components/error_details.vue @@ -10,6 +10,9 @@ import { GlBadge, GlAlert, GlSprintf, + GlDropdown, + GlDropdownItem, + GlDropdownDivider, } from '@gitlab/ui'; import { __, sprintf, n__ } from '~/locale'; import LoadingButton from '~/vue_shared/components/loading_button.vue'; @@ -36,6 +39,9 @@ export default { GlBadge, GlAlert, GlSprintf, + GlDropdown, + GlDropdownItem, + GlDropdownDivider, }, directives: { TrackEvent: TrackEventDirective, @@ -108,7 +114,7 @@ export default { return sprintf( __('Reported %{timeAgo} by %{reportedBy}'), { - reportedBy: `<strong>${this.error.culprit}</strong>`, + reportedBy: `<strong class="error-details-meta-culprit">${this.error.culprit}</strong>`, timeAgo: this.timeFormatted(this.stacktraceData.date_received), }, false, @@ -144,6 +150,11 @@ export default { false, ); }, + issueUpdateInProgress() { + return ( + this.updatingIgnoreStatus || this.updatingResolveStatus || this.issueCreationInProgress + ); + }, errorLevel() { return sprintf(__('level: %{level}'), { level: this.error.tags.level }); }, @@ -217,54 +228,90 @@ export default { </gl-sprintf> </gl-alert> - <div class="top-area align-items-center justify-content-between py-3"> - <span v-if="!loadingStacktrace && stacktrace" v-html="reported"></span> - <div class="d-inline-flex ml-lg-auto"> - <loading-button - :label="ignoreBtnLabel" - :loading="updatingIgnoreStatus" - data-qa-selector="update_ignore_status_button" - @click="onIgnoreStatusUpdate" - /> - <loading-button - class="btn-outline-info ml-2" - :label="resolveBtnLabel" - :loading="updatingResolveStatus" - data-qa-selector="update_resolve_status_button" - @click="onResolveStatusUpdate" - /> - <gl-button - v-if="error.gitlabIssuePath" - class="ml-2" - data-qa-selector="view_issue_button" - :href="error.gitlabIssuePath" - variant="success" - > - {{ __('View issue') }} - </gl-button> - <form - ref="sentryIssueForm" - :action="projectIssuesPath" - method="POST" - class="d-inline-block ml-2" - > - <gl-form-input class="hidden" name="issue[title]" :value="issueTitle" /> - <input name="issue[description]" :value="issueDescription" type="hidden" /> - <gl-form-input - :value="error.sentryId" - class="hidden" - name="issue[sentry_issue_attributes][sentry_issue_identifier]" + <div class="error-details-header d-flex py-2 justify-content-between"> + <div class="error-details-meta my-auto"> + <span v-if="!loadingStacktrace && stacktrace" v-html="reported"></span> + </div> + <div class="error-details-actions"> + <div class="d-inline-flex bv-d-sm-down-none"> + <loading-button + :label="ignoreBtnLabel" + :loading="updatingIgnoreStatus" + data-qa-selector="update_ignore_status_button" + @click="onIgnoreStatusUpdate" /> - <gl-form-input :value="csrfToken" class="hidden" name="authenticity_token" /> <loading-button + class="btn-outline-info ml-2" + :label="resolveBtnLabel" + :loading="updatingResolveStatus" + data-qa-selector="update_resolve_status_button" + @click="onResolveStatusUpdate" + /> + <gl-button + v-if="error.gitlabIssuePath" + class="ml-2" + data-qa-selector="view_issue_button" + :href="error.gitlabIssuePath" + variant="success" + > + {{ __('View issue') }} + </gl-button> + <form + ref="sentryIssueForm" + :action="projectIssuesPath" + method="POST" + class="d-inline-block ml-2" + > + <gl-form-input class="hidden" name="issue[title]" :value="issueTitle" /> + <input name="issue[description]" :value="issueDescription" type="hidden" /> + <gl-form-input + :value="error.sentryId" + class="hidden" + name="issue[sentry_issue_attributes][sentry_issue_identifier]" + /> + <gl-form-input :value="csrfToken" class="hidden" name="authenticity_token" /> + <loading-button + v-if="!error.gitlabIssuePath" + class="btn-success" + :label="__('Create issue')" + :loading="issueCreationInProgress" + data-qa-selector="create_issue_button" + @click="createIssue" + /> + </form> + </div> + <gl-dropdown + text="Options" + class="error-details-options d-md-none" + right + :disabled="issueUpdateInProgress" + > + <gl-dropdown-item + data-qa-selector="update_ignore_status_button" + @click="onIgnoreStatusUpdate" + >{{ ignoreBtnLabel }}</gl-dropdown-item + > + <gl-dropdown-item + data-qa-selector="update_resolve_status_button" + @click="onResolveStatusUpdate" + >{{ resolveBtnLabel }}</gl-dropdown-item + > + <gl-dropdown-divider /> + <gl-dropdown-item + v-if="error.gitlabIssuePath" + data-qa-selector="view_issue_button" + :href="error.gitlabIssuePath" + variant="success" + >{{ __('View issue') }}</gl-dropdown-item + > + <gl-dropdown-item v-if="!error.gitlabIssuePath" - class="btn-success" - :label="__('Create issue')" :loading="issueCreationInProgress" data-qa-selector="create_issue_button" @click="createIssue" - /> - </form> + >{{ __('Create issue') }}</gl-dropdown-item + > + </gl-dropdown> </div> </div> <div> @@ -300,7 +347,6 @@ export default { <strong class="bold">{{ __('Sentry event') }}:</strong> <gl-link v-track-event="trackClickErrorLinkToSentryOptions(error.externalUrl)" - class="d-inline-flex align-items-center" :href="error.externalUrl" target="_blank" > diff --git a/app/assets/javascripts/notifications_dropdown.js b/app/assets/javascripts/notifications_dropdown.js index ab87b0d973c..07e69fa297a 100644 --- a/app/assets/javascripts/notifications_dropdown.js +++ b/app/assets/javascripts/notifications_dropdown.js @@ -15,7 +15,7 @@ export default function notificationsDropdown() { .parents('.notification-form') .first(); - form.find('.js-notification-loading').toggleClass('fa-bell fa-spin fa-spinner'); + form.find('.js-notification-loading').toggleClass('spinner'); if (form.hasClass('no-label')) { form.find('.js-notification-loading').toggleClass('hidden'); form.find('.js-notifications-icon').toggleClass('hidden'); diff --git a/app/assets/stylesheets/pages/error_details.scss b/app/assets/stylesheets/pages/error_details.scss index 61e2df7ea26..78cac12d6be 100644 --- a/app/assets/stylesheets/pages/error_details.scss +++ b/app/assets/stylesheets/pages/error_details.scss @@ -7,6 +7,26 @@ color: $blue-500; border-color: $blue-500; } + + .error-details-header { + border-bottom: 1px solid $border-color; + + @include media-breakpoint-down(xs) { + flex-flow: column; + + .error-details-meta-culprit { + display: flex; + } + + .error-details-options { + width: 100%; + + .dropdown-toggle { + text-align: center; + } + } + } + } } .stacktrace { diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index c29e9d3843b..e2dd2d77a30 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -39,7 +39,7 @@ class SessionsController < Devise::SessionsController # would cause the CSRF token to be cleared and then # RequestForgeryProtection#verify_authenticity_token would fail because of # token mismatch. - protect_from_forgery with: :exception, prepend: true + protect_from_forgery with: :exception, prepend: true, except: :destroy CAPTCHA_HEADER = 'X-GitLab-Show-Login-Captcha' MAX_FAILED_LOGIN_ATTEMPTS = 5 diff --git a/app/models/commit.rb b/app/models/commit.rb index d8a3bbfeeb2..8068c4a07a2 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -226,6 +226,7 @@ class Commit data = { id: id, message: safe_message, + title: title, timestamp: committed_date.xmlschema, url: Gitlab::UrlBuilder.build(self), author: { diff --git a/app/models/project_services/chat_message/base_message.rb b/app/models/project_services/chat_message/base_message.rb index 5c39a80b32d..49151ad24cb 100644 --- a/app/models/project_services/chat_message/base_message.rb +++ b/app/models/project_services/chat_message/base_message.rb @@ -12,7 +12,6 @@ module ChatMessage attr_reader :user_avatar attr_reader :project_name attr_reader :project_url - attr_reader :commit_message_html def initialize(params) @markdown = params[:markdown] || false @@ -21,7 +20,6 @@ module ChatMessage @user_full_name = params.dig(:user, :name) || params[:user_full_name] @user_name = params.dig(:user, :username) || params[:user_name] @user_avatar = params.dig(:user, :avatar_url) || params[:user_avatar] - @commit_message_html = params[:commit_message_html] || false end def user_combined_name diff --git a/app/models/project_services/chat_message/push_message.rb b/app/models/project_services/chat_message/push_message.rb index 07622f570c2..41b0cbb2c4d 100644 --- a/app/models/project_services/chat_message/push_message.rb +++ b/app/models/project_services/chat_message/push_message.rb @@ -52,8 +52,7 @@ module ChatMessage end def commit_messages - linebreak_chars = commit_message_html ? "<br/>\n<br/>\n" : "\n\n" - commits.map { |commit| compose_commit_message(commit) }.join(linebreak_chars) + commits.map { |commit| compose_commit_message(commit) }.join("\n\n") end def commit_message_attachments @@ -63,15 +62,11 @@ module ChatMessage def compose_commit_message(commit) author = commit[:author][:name] id = Commit.truncate_sha(commit[:id]) - message = commit[:message] - - if commit_message_html - message = message.gsub(Gitlab::Regex.breakline_regex, "<br/>\n") - end + title = commit[:title] url = commit[:url] - "[#{id}](#{url}): #{message} - #{author}" + "[#{id}](#{url}): #{title} - #{author}" end def new_branch? diff --git a/app/models/project_services/microsoft_teams_service.rb b/app/models/project_services/microsoft_teams_service.rb index 5cabce1376b..111d010d672 100644 --- a/app/models/project_services/microsoft_teams_service.rb +++ b/app/models/project_services/microsoft_teams_service.rb @@ -58,6 +58,6 @@ class MicrosoftTeamsService < ChatNotificationService end def custom_data(data) - super(data).merge(markdown: true, commit_message_html: true) + super(data).merge(markdown: true) end end |