Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-01-15 13:12:17 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-01-15 13:12:17 +0400
commitf598cc789789bcde01e3c703d9149204247c0a46 (patch)
treea95d42cbd39649c71065c1660f7e955a41759d79 /app
parentbda7fe38d0b0e39a408c4eb44374a330c24c3a49 (diff)
change logic on line_code
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/notes.js4
-rw-r--r--app/assets/stylesheets/sections/notes.scss11
-rw-r--r--app/helpers/commits_helper.rb10
-rw-r--r--app/helpers/notes_helper.rb2
-rw-r--r--app/models/note.rb14
-rw-r--r--app/views/commits/_text_diff.html.haml2
-rw-r--r--app/views/notes/_discussion.html.haml24
-rw-r--r--app/views/notes/_discussion_diff.html.haml2
-rw-r--r--app/views/notes/_note.html.haml6
9 files changed, 54 insertions, 21 deletions
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index 1eac462172b..8a7e08dd0e8 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -71,6 +71,10 @@ var NoteList = {
$(document).on("click",
".js-choose-note-attachment-button",
NoteList.chooseNoteAttachment);
+
+ $(document).on("click",
+ ".js-show-outdated-discussion",
+ function(e) { $(this).next('.outdated-discussion').show(); e.preventDefault() });
},
diff --git a/app/assets/stylesheets/sections/notes.scss b/app/assets/stylesheets/sections/notes.scss
index 93ad0d45037..3a1b650664f 100644
--- a/app/assets/stylesheets/sections/notes.scss
+++ b/app/assets/stylesheets/sections/notes.scss
@@ -79,7 +79,7 @@ ul.notes {
margin-top: 3px;
}
.attachment {
- font-size: 16px;
+ font-size: 14px;
margin-top: -20px;
.icon-attachment {
@@ -92,7 +92,6 @@ ul.notes {
}
.note-body {
margin-left: 45px;
- padding-top: 5px;
}
.note-header {
padding-bottom: 5px;
@@ -284,7 +283,7 @@ ul.notes {
font-size: 24px;
padding: 4px;
position: absolute;
- right: 0;
+ right: 10px;
}
.note_preview {
background: #f5f5f5;
@@ -307,3 +306,9 @@ ul.notes {
.notes-busy {
margin: 18px;
}
+
+.note-image-attach {
+ @extend .span4;
+ @extend .thumbnail;
+ margin-left: 45px;
+}
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 8fc637a2bf6..4b5d8bd96a6 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -9,11 +9,13 @@ module CommitsHelper
end
end
- def build_line_anchor(index, line_new, line_old)
- "#{index}_#{line_old}_#{line_new}"
+ def build_line_anchor(diff, line_new, line_old)
+ "#{hexdigest(diff.new_path)}_#{line_old}_#{line_new}"
end
- def each_diff_line(diff_arr, index)
+ def each_diff_line(diff, index)
+ diff_arr = diff.diff.lines.to_a
+
line_old = 1
line_new = 1
type = nil
@@ -39,7 +41,7 @@ module CommitsHelper
next
else
type = identification_type(line)
- line_code = build_line_anchor(index, line_new, line_old)
+ line_code = build_line_anchor(diff, line_new, line_old)
yield(full_line, type, line_code, line_new, line_old)
end
diff --git a/app/helpers/notes_helper.rb b/app/helpers/notes_helper.rb
index fd920e23c19..7a0ed251aa8 100644
--- a/app/helpers/notes_helper.rb
+++ b/app/helpers/notes_helper.rb
@@ -17,7 +17,7 @@ module NotesHelper
end
def link_to_merge_request_diff_line_note(note)
- if note.for_merge_request_diff_line?
+ if note.for_merge_request_diff_line? and note.diff
link_to "#{note.diff_file_name}:L#{note.diff_new_line}", diffs_project_merge_request_path(note.project, note.noteable_id, anchor: note.line_code)
end
end
diff --git a/app/models/note.rb b/app/models/note.rb
index 3ad03cc601b..ded126b4bf1 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -33,7 +33,7 @@ class Note < ActiveRecord::Base
delegate :name, :email, to: :author, prefix: true
validates :note, :project, presence: true
- validates :line_code, format: { with: /\A\d+_\d+_\d+\Z/ }, allow_blank: true
+ validates :line_code, format: { with: /\A[a-z0-9]+_\d+_\d+\Z/ }, allow_blank: true
validates :attachment, file_size: { maximum: 10.megabytes.to_i }
validates :noteable_id, presence: true, if: ->(n) { n.noteable_type.present? && n.noteable_type != 'Commit' }
@@ -69,11 +69,17 @@ class Note < ActiveRecord::Base
end
def diff
- noteable.diffs[diff_file_index]
+ if noteable.diffs.present?
+ noteable.diffs.select do |d|
+ if d.b_path
+ Digest::SHA1.hexdigest(d.b_path) == diff_file_index
+ end
+ end.first
+ end
end
def diff_file_index
- line_code.split('_')[0].to_i
+ line_code.split('_')[0]
end
def diff_file_name
@@ -85,7 +91,7 @@ class Note < ActiveRecord::Base
end
def discussion_id
- @discussion_id ||= [:discussion, noteable_type.underscore, noteable_id, line_code].join("-").to_sym
+ @discussion_id ||= [:discussion, noteable_type.try(:underscore), noteable_id, line_code].join("-").to_sym
end
# Returns true if this is a downvote note,
diff --git a/app/views/commits/_text_diff.html.haml b/app/views/commits/_text_diff.html.haml
index ce07b87d548..8afad96bde2 100644
--- a/app/views/commits/_text_diff.html.haml
+++ b/app/views/commits/_text_diff.html.haml
@@ -3,7 +3,7 @@
%a.supp_diff_link Diff suppressed. Click to show
%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, index) do |line, type, line_code, line_new, line_old|
%tr.line_holder{ id: line_code }
- if type == "match"
%td.old_line= "..."
diff --git a/app/views/notes/_discussion.html.haml b/app/views/notes/_discussion.html.haml
index 031f4477ce3..093775f0d88 100644
--- a/app/views/notes/_discussion.html.haml
+++ b/app/views/notes/_discussion.html.haml
@@ -12,8 +12,15 @@
%div
= link_to note.author_name, project_team_member_path(@project, @project.team_member_by_id(note.author)), class: "note-author"
- if note.for_merge_request?
- started a discussion on this merge request diff
- = link_to_merge_request_diff_line_note(note)
+ - if note.diff
+ started a discussion on this merge request diff
+ = link_to_merge_request_diff_line_note(note)
+ - else
+ started
+ %strong
+ %i.icon-remove
+ outdated
+ discussion on this merge request diff
- elsif note.for_commit?
started a discussion on commit
#{link_to note.noteable.short_id, project_commit_path(@project, note.noteable)}
@@ -29,8 +36,17 @@
ago
.discussion-body
- if note.for_diff_line?
- .content
- .diff_file= render "notes/discussion_diff", discussion_notes: discussion_notes, note: note
+ - if note.diff
+ .content
+ .diff_file= render "notes/discussion_diff", discussion_notes: discussion_notes, note: note
+ - else
+ = link_to 'show outdated discussion', '#', class: 'js-show-outdated-discussion'
+ %div.hide.outdated-discussion
+ .content
+ .notes{ rel: discussion_notes.first.discussion_id }
+ = render discussion_notes
+
+
- else
.content
.notes{ rel: discussion_notes.first.discussion_id }
diff --git a/app/views/notes/_discussion_diff.html.haml b/app/views/notes/_discussion_diff.html.haml
index 78f06f78f69..93ab59c72c5 100644
--- a/app/views/notes/_discussion_diff.html.haml
+++ b/app/views/notes/_discussion_diff.html.haml
@@ -9,7 +9,7 @@
%br/
.diff_file_content
%table
- - each_diff_line(diff.diff.lines.to_a, note.diff_file_index) do |line, type, line_code, line_new, line_old|
+ - each_diff_line(diff, note.diff_file_index) do |line, type, line_code, line_new, line_old|
%tr.line_holder{ id: line_code }
- if type == "match"
%td.old_line= "..."
diff --git a/app/views/notes/_note.html.haml b/app/views/notes/_note.html.haml
index 6f7eea9827f..dd5d7c1ba8c 100644
--- a/app/views/notes/_note.html.haml
+++ b/app/views/notes/_note.html.haml
@@ -6,8 +6,8 @@
Link here
&nbsp;
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
- = link_to project_note_path(@project, note), title: "Remove comment", method: :delete, confirm: 'Are you sure?', remote: true, class: "danger js-note-delete" do
- %i.icon-remove-circle
+ = link_to project_note_path(@project, note), title: "Remove comment", method: :delete, confirm: 'Are you sure you want to remove comment?', remote: true, class: "danger js-note-delete" do
+ %i.icon-trash.cred
= image_tag gravatar_icon(note.author.email), class: "avatar s32"
= link_to note.author_name, project_team_member_path(@project, @project.team_member_by_id(note.author)), class: "note-author"
%span.note-last-update
@@ -29,7 +29,7 @@
= markdown(note.note)
- if note.attachment.url
- if note.attachment.image?
- = image_tag note.attachment.url, class: 'thumbnail span4'
+ = image_tag note.attachment.url, class: 'note-image-attach'
.attachment.right
= link_to note.attachment.url, target: "_blank" do
%i.icon-attachment