Commit 37519345 authored by Douwe Maan's avatar Douwe Maan

Style diff and blob file headers the same way

parent 4c1bf77c
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
} }
a:not(.btn) { a:not(.btn) {
color: $gl-dark-link-color; color: $gl-text-color;
} }
.left-options { .left-options {
......
...@@ -306,4 +306,15 @@ module ApplicationHelper ...@@ -306,4 +306,15 @@ module ApplicationHelper
def truncate_first_line(message, length = 50) def truncate_first_line(message, length = 50)
truncate(message.each_line.first.chomp, length: length) if message truncate(message.each_line.first.chomp, length: length) if message
end end
# While similarly named to Rails's `link_to_if`, this method behaves quite differently.
# If `condition` is truthy, a link will be returned with the result of the block
# as its body. If `condition` is falsy, only the result of the block will be returned.
def conditional_link_to(condition, options, html_options = {}, &block)
if condition
link_to options, html_options, &block
else
capture(&block)
end
end
end end
...@@ -79,4 +79,14 @@ module NotesHelper ...@@ -79,4 +79,14 @@ module NotesHelper
full_key = { project: note.project, user_id: note.author_id } full_key = { project: note.project, user_id: note.author_id }
@max_access_by_user_id[full_key] @max_access_by_user_id[full_key]
end end
def diff_note_path(note)
return unless note.diff_note?
if note.for_merge_request? && note.active?
diffs_namespace_project_merge_request_path(note.project.namespace, note.project, note.noteable, anchor: note.line_code)
elsif note.for_commit?
namespace_project_commit_path(note.project.namespace, note.project, note.noteable, anchor: note.line_code)
end
end
end end
- if @note.legacy_diff_note? - if @note.diff_note?
%p.details %p.details
New comment on diff for New comment on diff for
= link_to @note.diff_file_path, @target_url = link_to @note.diff_file.file_path, @target_url
\: \:
= render 'note_message' = render 'note_message'
.diff-file.file-holder{id: "diff-#{i}", data: diff_file_html_data(project, diff_file)} .diff-file.file-holder{id: "diff-#{i}", data: diff_file_html_data(project, diff_file)}
.file-title{id: "file-path-#{hexdigest(diff_file.file_path)}"} .file-title{id: "file-path-#{hexdigest(diff_file.file_path)}"}
- if diff_file.diff.submodule? = render "projects/diffs/file_header", diff_file: diff_file, blob: blob, diff_commit: diff_commit, project: project, url: "#diff-#{i}"
%span
= icon('archive fw')
%span
= submodule_link(blob, @commit.id, project.repository)
- else
= blob_icon blob.mode, blob.name
= link_to "#diff-#{i}" do
- if diff_file.renamed_file
- old_path, new_path = mark_inline_diffs(diff_file.old_path, diff_file.new_path)
= old_path
→
= new_path
- else
%span
= diff_file.new_path
- if diff_file.deleted_file
deleted
- if diff_file.mode_changed?
%small
= "#{diff_file.diff.a_mode}#{diff_file.diff.b_mode}"
- unless diff_file.submodule?
.file-actions.hidden-xs .file-actions.hidden-xs
- if blob_text_viewable?(blob) - if blob_text_viewable?(blob)
= link_to '#', class: 'js-toggle-diff-comments btn active has-tooltip btn-file-option', title: "Toggle comments for this file" do = link_to '#', class: 'js-toggle-diff-comments btn active has-tooltip btn-file-option', title: "Toggle comments for this file" do
...@@ -42,15 +21,21 @@ ...@@ -42,15 +21,21 @@
- return unless blob.respond_to?(:text?) - return unless blob.respond_to?(:text?)
- if diff_file.too_large? - if diff_file.too_large?
.nothing-here-block This diff could not be displayed because it is too large. .nothing-here-block This diff could not be displayed because it is too large.
- elsif blob_text_viewable?(blob) && !project.repository.diffable?(blob)
.nothing-here-block This diff was suppressed by a .gitattributes entry.
- elsif blob_text_viewable?(blob)
- if diff_view == 'parallel'
= render "projects/diffs/parallel_view", diff_file: diff_file, project: project, blob: blob, index: i
- else
= render "projects/diffs/text_file", diff_file: diff_file, index: i
- elsif blob.only_display_raw? - elsif blob.only_display_raw?
.nothing-here-block This file is too large to display. .nothing-here-block This file is too large to display.
- elsif blob_text_viewable?(blob)
- if !project.repository.diffable?(blob)
.nothing-here-block This diff was suppressed by a .gitattributes entry.
- elsif diff_file.diff_lines.length > 0
- if diff_view == 'parallel'
= render "projects/diffs/parallel_view", diff_file: diff_file, project: project, blob: blob, index: i
- else
= render "projects/diffs/text_file", diff_file: diff_file, index: i
- else
- if diff_file.mode_changed?
.nothing-here-block File mode changed
- elsif diff_file.renamed_file
.nothing-here-block File moved
- elsif blob.image? - elsif blob.image?
- old_blob = diff_file.old_blob(diff_commit) - old_blob = diff_file.old_blob(diff_commit)
= render "projects/diffs/image", diff_file: diff_file, old_file: old_blob, file: blob, index: i = render "projects/diffs/image", diff_file: diff_file, old_file: old_blob, file: blob, index: i
......
- if defined?(blob) && blob && diff_file.submodule?
%span
= icon('archive fw')
%span
= submodule_link(blob, diff_commit.id, project.repository)
- else
= conditional_link_to url.present?, url do
= blob_icon diff_file.b_mode, diff_file.file_path
- if diff_file.renamed_file
- old_path, new_path = mark_inline_diffs(diff_file.old_path, diff_file.new_path)
%strong
= old_path
→
%strong
= new_path
- else
%strong
= diff_file.new_path
- if diff_file.deleted_file
deleted
- if diff_file.mode_changed?
%small
= "#{diff_file.a_mode}#{diff_file.b_mode}"
- note = discussion_notes.first - note = discussion_notes.first
- diff = note.diff - diff_file = note.diff_file
- return unless diff - return unless diff_file
- blob = note.blob
.diff-file.file-holder
.file-title
= render "projects/diffs/file_header", diff_file: diff_file, blob: blob, diff_commit: diff_file.content_commit, project: note.project, url: diff_note_path(note)
.diff-file
.diff-header
%span
- if diff.deleted_file
= diff.old_path
- else
= diff.new_path
- if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode
%span.file-mode= "#{diff.a_mode}#{diff.b_mode}"
.diff-content.code.js-syntax-highlight .diff-content.code.js-syntax-highlight
%table %table
- note.truncated_diff_lines.each do |line| - note.truncated_diff_lines.each do |line|
......
...@@ -4,7 +4,8 @@ module Gitlab ...@@ -4,7 +4,8 @@ module Gitlab
attr_reader :diff, :repository, :diff_refs attr_reader :diff, :repository, :diff_refs
delegate :new_file, :deleted_file, :renamed_file, delegate :new_file, :deleted_file, :renamed_file,
:old_path, :new_path, to: :diff, prefix: false :old_path, :new_path, :a_mode, :b_mode,
:submodule?, :too_large?, to: :diff, prefix: false
def initialize(diff, repository:, diff_refs: nil) def initialize(diff, repository:, diff_refs: nil)
@diff = diff @diff = diff
...@@ -40,11 +41,7 @@ module Gitlab ...@@ -40,11 +41,7 @@ module Gitlab
end end
def mode_changed? def mode_changed?
!!(diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode) a_mode && b_mode && a_mode != b_mode
end
def parser
Gitlab::Diff::Parser.new
end end
def raw_diff def raw_diff
...@@ -56,13 +53,11 @@ module Gitlab ...@@ -56,13 +53,11 @@ module Gitlab
end end
def prev_line(index) def prev_line(index)
if index > 0 diff_lines[index - 1] if index > 0
diff_lines[index - 1]
end
end end
def file_path def file_path
new_path.presence || old_path.presence new_path.presence || old_path
end end
def added_lines def added_lines
......
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