Commit 8e255550 authored by Mike Greiling's avatar Mike Greiling

Merge branch 'winh-discussion-header-commented-ee' into 'master'

Display "commented" only for commit discussions on merge requests (EE-port)

Closes gitlab-ce#53950 and gitlab-ce#53681

See merge request gitlab-org/gitlab-ee!8790
parents 52b6aab7 7dfae8e8
...@@ -221,6 +221,16 @@ export default { ...@@ -221,6 +221,16 @@ export default {
return this.line; return this.line;
}, },
commit() {
if (!this.discussion.for_commit) {
return null;
}
return {
id: this.discussion.commit_id,
url: this.discussion.discussion_path,
};
},
}, },
watch: { watch: {
isReplying() { isReplying() {
...@@ -386,6 +396,7 @@ Please check your network connection and try again.`; ...@@ -386,6 +396,7 @@ Please check your network connection and try again.`;
:note="componentData(initialDiscussion)" :note="componentData(initialDiscussion)"
:line="line" :line="line"
:help-page-path="helpPagePath" :help-page-path="helpPagePath"
:commit="commit"
@handleDeleteNote="deleteNoteHandler" @handleDeleteNote="deleteNoteHandler"
> >
<note-edited-text <note-edited-text
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
import $ from 'jquery'; import $ from 'jquery';
import { mapGetters, mapActions } from 'vuex'; import { mapGetters, mapActions } from 'vuex';
import { escape } from 'underscore'; import { escape } from 'underscore';
import { truncateSha } from '~/lib/utils/text_utility';
import { s__, sprintf } from '~/locale';
import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue'; import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';
import Flash from '../../flash'; import Flash from '../../flash';
import userAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue'; import userAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue';
...@@ -37,6 +39,11 @@ export default { ...@@ -37,6 +39,11 @@ export default {
required: false, required: false,
default: '', default: '',
}, },
commit: {
type: Object,
required: false,
default: () => null,
},
}, },
data() { data() {
return { return {
...@@ -73,6 +80,24 @@ export default { ...@@ -73,6 +80,24 @@ export default {
isTarget() { isTarget() {
return this.targetNoteHash === this.noteAnchorId; return this.targetNoteHash === this.noteAnchorId;
}, },
actionText() {
if (this.commit) {
const { id, url } = this.commit;
const linkStart = `<a class="commit-sha monospace" href="${escape(url)}">`;
const linkEnd = '</a>';
return sprintf(
s__('MergeRequests|commented on commit %{linkStart}%{commitId}%{linkEnd}'),
{
commitId: truncateSha(id),
linkStart,
linkEnd,
},
false,
);
}
return '<span class="d-none d-sm-inline">&middot;</span>';
},
}, },
created() { created() {
...@@ -204,14 +229,9 @@ export default { ...@@ -204,14 +229,9 @@ export default {
</div> </div>
<div class="timeline-content"> <div class="timeline-content">
<div class="note-header"> <div class="note-header">
<note-header <note-header v-once :author="author" :created-at="note.created_at" :note-id="note.id">
v-once <slot slot="note-header-info" name="note-header-info"></slot>
:author="author" <span v-html="actionText"></span>
:created-at="note.created_at"
:note-id="note.id"
action-text="commented"
>
<slot slot="note-header-info" name="note-header-info"> </slot>
</note-header> </note-header>
<note-actions <note-actions
:author-id="author.id" :author-id="author.id"
......
...@@ -85,7 +85,7 @@ module NotesHelper ...@@ -85,7 +85,7 @@ module NotesHelper
diffs_project_merge_request_path(discussion.project, discussion.noteable, path_params) diffs_project_merge_request_path(discussion.project, discussion.noteable, path_params)
elsif discussion.for_commit? elsif discussion.for_commit?
anchor = discussion.line_code if discussion.diff_discussion? anchor = discussion.diff_discussion? ? discussion.line_code : "note_#{discussion.first_note.id}"
project_commit_path(discussion.project, discussion.noteable, anchor: anchor) project_commit_path(discussion.project, discussion.noteable, anchor: anchor)
end end
......
---
title: Display "commented" only for commit discussions on merge requests
merge_request: 23622
author:
type: fixed
...@@ -137,7 +137,7 @@ describe 'Referencing Epics', :js do ...@@ -137,7 +137,7 @@ describe 'Referencing Epics', :js do
find('div#notes li.note div.note-text a').click find('div#notes li.note div.note-text a').click
page.within('div#notes li.note .system-note-message') do page.within('div#notes li.note.system-note .system-note-message') do
expect(page).to have_content('mentioned in epic') expect(page).to have_content('mentioned in epic')
expect(page.find('a')).to have_content(epic.to_reference(full: true)) expect(page.find('a')).to have_content(epic.to_reference(full: true))
end end
......
...@@ -5426,6 +5426,9 @@ msgstr "" ...@@ -5426,6 +5426,9 @@ msgstr ""
msgid "MergeRequests|View replaced file @ %{commitId}" msgid "MergeRequests|View replaced file @ %{commitId}"
msgstr "" msgstr ""
msgid "MergeRequests|commented on commit %{linkStart}%{commitId}%{linkEnd}"
msgstr ""
msgid "MergeRequests|started a discussion" msgid "MergeRequests|started a discussion"
msgstr "" msgstr ""
......
...@@ -88,5 +88,13 @@ describe 'Merge request > User sees discussions', :js do ...@@ -88,5 +88,13 @@ describe 'Merge request > User sees discussions', :js do
expect(page).to have_content "started a discussion on commit #{note.commit_id[0...7]}" expect(page).to have_content "started a discussion on commit #{note.commit_id[0...7]}"
end end
end end
context 'a commit non-diff discussion' do
let(:note) { create(:discussion_note_on_commit, project: project) }
it 'displays correct header' do
expect(page).to have_content "commented on commit #{note.commit_id[0...7]}"
end
end
end end
end end
...@@ -185,8 +185,8 @@ describe NotesHelper do ...@@ -185,8 +185,8 @@ describe NotesHelper do
context 'for a non-diff discussion' do context 'for a non-diff discussion' do
let(:discussion) { create(:discussion_note_on_commit, project: project).to_discussion } let(:discussion) { create(:discussion_note_on_commit, project: project).to_discussion }
it 'returns the commit path' do it 'returns the commit path with the note anchor' do
expect(helper.discussion_path(discussion)).to eq(project_commit_path(project, commit)) expect(helper.discussion_path(discussion)).to eq(project_commit_path(project, commit, anchor: "note_#{discussion.first_note.id}"))
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment