Commit e007d810 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge pull request #7886 from cirosantilli/disable-blob-edit-mr

Disable / hide MR edit blob button if cannot edit.
parents 8c1be08d 81eacd1b
...@@ -53,13 +53,34 @@ module TreeHelper ...@@ -53,13 +53,34 @@ module TreeHelper
File.join(*args) File.join(*args)
end end
def allowed_tree_edit? def allowed_tree_edit?(project = nil, ref = nil)
return false unless @repository.branch_names.include?(@ref) project ||= @project
ref ||= @ref
return false unless project.repository.branch_names.include?(ref)
if @project.protected_branch? @ref if project.protected_branch? ref
can?(current_user, :push_code_to_protected_branches, @project) can?(current_user, :push_code_to_protected_branches, project)
else else
can?(current_user, :push_code, @project) can?(current_user, :push_code, project)
end
end
def edit_blob_link(project, ref, path, options = {})
if project.repository.blob_at(ref, path).text?
text = 'Edit'
after = options[:after] || ''
from_mr = options[:from_merge_request_id]
link_opts = {}
link_opts[:from_merge_request_id] = from_mr if from_mr
cls = 'btn btn-small'
if allowed_tree_edit?(project, ref)
link_to text, project_edit_tree_path(project, tree_join(ref, path),
link_opts), class: cls
else
content_tag :span, text, class: cls + ' disabled'
end + after.html_safe
else
''
end end
end end
......
.btn-group.tree-btn-group .btn-group.tree-btn-group
-# only show edit link for text files = edit_blob_link(@project, @ref, @path)
- if @blob.text?
- if allowed_tree_edit?
= link_to 'Edit', project_edit_tree_path(@project, @id),
class: 'btn btn-small'
- else
%span.btn.btn-small.disabled Edit
= link_to 'Raw', project_raw_path(@project, @id), = link_to 'Raw', project_raw_path(@project, @id),
class: 'btn btn-small', target: '_blank' class: 'btn btn-small', target: '_blank'
-# only show normal/blame view links for text files -# only show normal/blame view links for text files
......
...@@ -30,9 +30,9 @@ ...@@ -30,9 +30,9 @@
   
- if @merge_request && @merge_request.source_project - if @merge_request && @merge_request.source_project
= link_to project_edit_tree_path(@merge_request.source_project, tree_join(@merge_request.source_branch, diff_file.new_path), from_merge_request_id: @merge_request.id), { class: 'btn btn-small' } do = edit_blob_link(@merge_request.source_project,
Edit @merge_request.source_branch, diff_file.new_path,
  after: ' ', from_merge_request_id: @merge_request.id)
= view_file_btn(@commit.id, diff_file, project) = view_file_btn(@commit.id, diff_file, project)
......
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