diff options
author | Riyad Preukschas <riyad@informatik.uni-bremen.de> | 2012-10-29 15:56:17 +0100 |
---|---|---|
committer | Riyad Preukschas <riyad@informatik.uni-bremen.de> | 2012-12-03 22:51:55 +0100 |
commit | a58385247d06b238296e35c17c9e3f58b3234094 (patch) | |
tree | ded455ddc9fdb3c85c84a4a0eb39c84f8f5401d9 | |
parent | 9b919939a35f9e5606f86a09eafa2a392d40d1a7 (diff) | |
download | gitlab-ce-a58385247d06b238296e35c17c9e3f58b3234094.tar.gz |
Add discussions for merge requests to notes controller
-rw-r--r-- | app/controllers/notes_controller.rb | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/app/controllers/notes_controller.rb b/app/controllers/notes_controller.rb index d794f368f57..79e8bcc7866 100644 --- a/app/controllers/notes_controller.rb +++ b/app/controllers/notes_controller.rb @@ -6,10 +6,15 @@ class NotesController < ProjectResourceController respond_to :js def index - notes + @notes = Notes::LoadContext.new(project, current_user, params).execute + if params[:target_type] == "merge_request" - @mixed_targets = true + @mixed_targets = true @main_target_type = params[:target_type].camelize + @discussions = discussions_from_notes + @has_diff = true + elsif params[:target_type] == "commit" + @has_diff = true end respond_with(@notes) @@ -40,7 +45,33 @@ class NotesController < ProjectResourceController protected - def notes - @notes = Notes::LoadContext.new(project, current_user, params).execute + def discussion_notes_for(note) + @notes.select do |other_note| + note.discussion_id == other_note.discussion_id + end + end + + def discussions_from_notes + discussion_ids = [] + discussions = [] + + @notes.each do |note| + next if discussion_ids.include?(note.discussion_id) + + # don't group notes for the main target + if for_main_target?(note) + discussions << [note] + else + discussions << discussion_notes_for(note) + discussion_ids << note.discussion_id + end + end + + discussions + end + + # Helps to distinguish e.g. commit notes in mr notes list + def for_main_target?(note) + !@mixed_targets || (@main_target_type == note.noteable_type && !note.for_diff_line?) end end |