Style diff and blob file headers the same way
This commit is contained in:
parent
4c1bf77c7f
commit
375193455a
|
|
@ -50,7 +50,7 @@
|
|||
}
|
||||
|
||||
a:not(.btn) {
|
||||
color: $gl-dark-link-color;
|
||||
color: $gl-text-color;
|
||||
}
|
||||
|
||||
.left-options {
|
||||
|
|
|
|||
|
|
@ -306,4 +306,15 @@ module ApplicationHelper
|
|||
def truncate_first_line(message, length = 50)
|
||||
truncate(message.each_line.first.chomp, length: length) if message
|
||||
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
|
||||
|
|
|
|||
|
|
@ -79,4 +79,14 @@ module NotesHelper
|
|||
full_key = { project: note.project, user_id: note.author_id }
|
||||
@max_access_by_user_id[full_key]
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
- if @note.legacy_diff_note?
|
||||
- if @note.diff_note?
|
||||
%p.details
|
||||
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'
|
||||
|
|
|
|||
|
|
@ -1,29 +1,8 @@
|
|||
.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)}"}
|
||||
- if diff_file.diff.submodule?
|
||||
%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}"
|
||||
= render "projects/diffs/file_header", diff_file: diff_file, blob: blob, diff_commit: diff_commit, project: project, url: "#diff-#{i}"
|
||||
|
||||
- unless diff_file.submodule?
|
||||
.file-actions.hidden-xs
|
||||
- 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
|
||||
|
|
@ -42,15 +21,21 @@
|
|||
- return unless blob.respond_to?(:text?)
|
||||
- if diff_file.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?
|
||||
.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?
|
||||
- old_blob = diff_file.old_blob(diff_commit)
|
||||
= render "projects/diffs/image", diff_file: diff_file, old_file: old_blob, file: blob, index: i
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
- 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}"
|
||||
|
|
@ -1,16 +1,13 @@
|
|||
- note = discussion_notes.first
|
||||
- diff = note.diff
|
||||
- return unless diff
|
||||
- diff_file = note.diff_file
|
||||
- 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
|
||||
%table
|
||||
- note.truncated_diff_lines.each do |line|
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ module Gitlab
|
|||
attr_reader :diff, :repository, :diff_refs
|
||||
|
||||
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)
|
||||
@diff = diff
|
||||
|
|
@ -40,11 +41,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def mode_changed?
|
||||
!!(diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode)
|
||||
end
|
||||
|
||||
def parser
|
||||
Gitlab::Diff::Parser.new
|
||||
a_mode && b_mode && a_mode != b_mode
|
||||
end
|
||||
|
||||
def raw_diff
|
||||
|
|
@ -56,13 +53,11 @@ module Gitlab
|
|||
end
|
||||
|
||||
def prev_line(index)
|
||||
if index > 0
|
||||
diff_lines[index - 1]
|
||||
end
|
||||
diff_lines[index - 1] if index > 0
|
||||
end
|
||||
|
||||
def file_path
|
||||
new_path.presence || old_path.presence
|
||||
new_path.presence || old_path
|
||||
end
|
||||
|
||||
def added_lines
|
||||
|
|
|
|||
Loading…
Reference in New Issue