BigW Consortium Gitlab

Commit 4a535e17 by Dmitriy Zaporozhets

Merge pull request #1630 from riyad/show-commit-notes-with-mr-notes

Mix commit notes with merge request notes on MR show page
parents 2d2ffc6f 81ee6938
...@@ -230,7 +230,7 @@ var NoteList = { ...@@ -230,7 +230,7 @@ var NoteList = {
updateVotes: updateVotes:
function() { function() {
var votes = $("#votes .votes"); var votes = $("#votes .votes");
var notes = $("#notes-list, #new-notes-list").find(".note.vote"); var notes = $("#notes-list, #new-notes-list").find(".note .vote");
// only update if there is a vote display // only update if there is a vote display
if (votes.size()) { if (votes.size()) {
......
...@@ -13,7 +13,7 @@ module Notes ...@@ -13,7 +13,7 @@ module Notes
when "issue" when "issue"
project.issues.find(target_id).notes.inc_author.fresh.limit(20) project.issues.find(target_id).notes.inc_author.fresh.limit(20)
when "merge_request" when "merge_request"
project.merge_requests.find(target_id).notes.inc_author.fresh.limit(20) project.merge_requests.find(target_id).mr_and_commit_notes.inc_author.fresh.limit(20)
when "snippet" when "snippet"
project.snippets.find(target_id).notes.fresh project.snippets.find(target_id).notes.fresh
when "wall" when "wall"
......
...@@ -7,6 +7,11 @@ class NotesController < ProjectResourceController ...@@ -7,6 +7,11 @@ class NotesController < ProjectResourceController
def index def index
notes notes
if params[:target_type] == "merge_request"
@mixed_targets = true
@main_target_type = params[:target_type].camelize
end
respond_with(@notes) respond_with(@notes)
end end
......
...@@ -7,11 +7,20 @@ module NotesHelper ...@@ -7,11 +7,20 @@ module NotesHelper
params[:loading_new].present? params[:loading_new].present?
end end
def note_vote_class(note) # Helps to distinguish e.g. commit notes in mr notes list
if note.upvote? def note_for_main_target?(note)
"vote upvote" !@mixed_targets || @main_target_type == note.noteable_type
elsif note.downvote?
"vote downvote"
end end
def link_to_commit_diff_line_note(note)
return unless note.line_note?
commit = note.target
diff_index, diff_old_line, diff_new_line = note.line_code.split('_')
link_file = commit.diffs[diff_index.to_i].new_path
link_line = diff_new_line
link_to "#{link_file}:L#{link_line}", project_commit_path(@project, commit, anchor: note.line_code)
end end
end end
...@@ -49,7 +49,7 @@ class Note < ActiveRecord::Base ...@@ -49,7 +49,7 @@ class Note < ActiveRecord::Base
end end
def target def target
if noteable_type == "Commit" if commit?
project.commit(noteable_id) project.commit(noteable_id)
else else
noteable noteable
...@@ -82,6 +82,10 @@ class Note < ActiveRecord::Base ...@@ -82,6 +82,10 @@ class Note < ActiveRecord::Base
noteable_type == "Commit" noteable_type == "Commit"
end end
def line_note?
line_code.present?
end
def commit_author def commit_author
@commit_author ||= @commit_author ||=
project.users.find_by_email(target.author_email) || project.users.find_by_email(target.author_email) ||
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
%table{class: "#{'hide' if too_big}"} %table{class: "#{'hide' if too_big}"}
- each_diff_line(diff.diff.lines.to_a, index) do |line, type, line_code, line_new, line_old| - each_diff_line(diff.diff.lines.to_a, index) do |line, type, line_code, line_new, line_old|
%tr.line_holder %tr.line_holder{ id: line_code }
- if type == "match" - if type == "match"
%td.old_line= "..." %td.old_line= "..."
%td.new_line= "..." %td.new_line= "..."
......
%li{id: dom_id(note), class: "note #{note_vote_class(note)}"} %li{id: dom_id(note), class: "note"}
= image_tag gravatar_icon(note.author.email), class: "avatar s32" = image_tag gravatar_icon(note.author.email), class: "avatar s32"
%div.note-author %div.note-author
%strong= note.author_name %strong= note.author_name
...@@ -6,14 +6,25 @@ ...@@ -6,14 +6,25 @@
%cite.cgray %cite.cgray
= time_ago_in_words(note.updated_at) = time_ago_in_words(note.updated_at)
ago ago
- unless note_for_main_target?(note)
- if note.commit?
%span.cgray
on #{link_to note.target.short_id, project_commit_path(@project, note.target)}
= link_to_commit_diff_line_note(note) if note.line_note?
-# only show vote if it's a note for the main target
- if note_for_main_target?(note)
- if note.upvote? - if note.upvote?
%span.label.label-success %span.vote.upvote.label.label-success
%i.icon-thumbs-up %i.icon-thumbs-up
\+1 \+1
- if note.downvote? - if note.downvote?
%span.label.label-error %span.vote.downvote.label.label-error
%i.icon-thumbs-down %i.icon-thumbs-down
\-1 \-1
-# remove button
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project) - if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
= link_to [@project, note], confirm: 'Are you sure?', method: :delete, remote: true, class: "cred delete-note btn very_small" do = link_to [@project, note], confirm: 'Are you sure?', method: :delete, remote: true, class: "cred delete-note btn very_small" do
%i.icon-trash %i.icon-trash
......
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