Commit bee837d7 authored by James Lopez's avatar James Lopez

some initial refactoring

parent f1360966
...@@ -16,7 +16,7 @@ module BlobHelper ...@@ -16,7 +16,7 @@ module BlobHelper
options[:link_opts]) options[:link_opts])
end end
def edit_blob_link(project = @project, ref = @ref, path = @path, options = {}) def edit_blob_element(project = @project, ref = @ref, path = @path, options = {})
return unless blob = readable_blob(options, path, project, ref) return unless blob = readable_blob(options, path, project, ref)
common_classes = "btn js-edit-blob #{options[:extra_class]}" common_classes = "btn js-edit-blob #{options[:extra_class]}"
...@@ -24,13 +24,17 @@ module BlobHelper ...@@ -24,13 +24,17 @@ module BlobHelper
if !on_top_of_branch?(project, ref) if !on_top_of_branch?(project, ref)
edit_button_tag(edit_text, common_classes) edit_button_tag(edit_text, common_classes)
# This condition applies to anonymous or users who can edit directly # This condition applies to anonymous or users who can edit directly
elsif !current_user || (current_user && can_modify_blob?(blob, project, ref)) elsif !current_user || user_can_modify_blob(blob, project, ref)
edit_link_tag(edit_text, edit_blob_path(project, ref, path, options), common_classes) edit_link_tag(edit_text, edit_blob_path(project, ref, path, options), common_classes)
elsif current_user && can?(current_user, :fork_project, project) elsif user_can_fork_project(project)
edit_blob_fork(common_classes, edit_blob_path(project, ref, path, options), project) edit_blob_fork(common_classes, edit_blob_path(project, ref, path, options), project)
end end
end end
def user_can_fork_project(project)
current_user && can?(current_user, :fork_project, project)
end
def ide_edit_path(project = @project, ref = @ref, path = @path, options = {}) def ide_edit_path(project = @project, ref = @ref, path = @path, options = {})
"#{ide_path}/project#{edit_blob_path(project, ref, path, options)}" "#{ide_path}/project#{edit_blob_path(project, ref, path, options)}"
end end
...@@ -43,7 +47,7 @@ module BlobHelper ...@@ -43,7 +47,7 @@ module BlobHelper
_('Web IDE') _('Web IDE')
end end
def ide_blob_link(project = @project, ref = @ref, path = @path, options = {}) def ide_edit_element(project = @project, ref = @ref, path = @path, options = {})
return unless show_new_ide? return unless show_new_ide?
return unless blob = readable_blob(options, path, project, ref) return unless blob = readable_blob(options, path, project, ref)
...@@ -53,14 +57,18 @@ module BlobHelper ...@@ -53,14 +57,18 @@ module BlobHelper
edit_button_tag(ide_edit_text, common_classes) edit_button_tag(ide_edit_text, common_classes)
# This condition only applies to users who are logged in # This condition only applies to users who are logged in
# Web IDE (Beta) requires the user to have this feature enabled # Web IDE (Beta) requires the user to have this feature enabled
elsif current_user && can_modify_blob?(blob, project, ref) elsif user_can_modify_blob(blob, project, ref)
edit_link_tag(ide_edit_text, ide_edit_path(project, ref, path, options), common_classes) edit_link_tag(ide_edit_text, ide_edit_path(project, ref, path, options), common_classes)
elsif current_user && can?(current_user, :fork_project, project) elsif user_can_fork_project(project)
edit_blob_fork(common_classes, edit_blob_path(project, ref, path, options), project) edit_blob_fork(common_classes, edit_blob_path(project, ref, path, options), project)
end end
end end
def modify_file_link(project = @project, ref = @ref, path = @path, label:, action:, btn_class:, modal_type:) def user_can_modify_blob(blob, project, ref)
current_user && can_modify_blob?(blob, project, ref)
end
def modify_file_element(project = @project, ref = @ref, path = @path, label:, action:, btn_class:, modal_type:)
return unless current_user return unless current_user
blob = project.repository.blob_at(ref, path) rescue nil blob = project.repository.blob_at(ref, path) rescue nil
...@@ -81,7 +89,7 @@ module BlobHelper ...@@ -81,7 +89,7 @@ module BlobHelper
end end
def replace_blob_link(project = @project, ref = @ref, path = @path) def replace_blob_link(project = @project, ref = @ref, path = @path)
modify_file_link( modify_file_element(
project, project,
ref, ref,
path, path,
...@@ -93,7 +101,7 @@ module BlobHelper ...@@ -93,7 +101,7 @@ module BlobHelper
end end
def delete_blob_link(project = @project, ref = @ref, path = @path) def delete_blob_link(project = @project, ref = @ref, path = @path)
modify_file_link( modify_file_element(
project, project,
ref, ref,
path, path,
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
= view_on_environment_button(@commit.sha, @path, @environment) if @environment = view_on_environment_button(@commit.sha, @path, @environment) if @environment
.btn-group{ role: "group" }< .btn-group{ role: "group" }<
= edit_blob_link = edit_blob_element
= ide_blob_link = ide_edit_element
- if current_user - if current_user
= replace_blob_link = replace_blob_link
= delete_blob_link = delete_blob_link
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
\ \
- if editable_diff?(diff_file) - if editable_diff?(diff_file)
- link_opts = @merge_request.persisted? ? { from_merge_request_iid: @merge_request.iid } : {} - link_opts = @merge_request.persisted? ? { from_merge_request_iid: @merge_request.iid } : {}
= edit_blob_link(@merge_request.source_project, @merge_request.source_branch, diff_file.new_path, = edit_blob_element(@merge_request.source_project, @merge_request.source_branch, diff_file.new_path,
blob: blob, link_opts: link_opts) blob: blob, link_opts: link_opts)
- if image_diff && image_replaced - if image_diff && image_replaced
......
...@@ -74,7 +74,7 @@ describe BlobHelper do ...@@ -74,7 +74,7 @@ describe BlobHelper do
end end
end end
describe "#edit_blob_link" do describe "#edit_blob_element" do
let(:namespace) { create(:namespace, name: 'gitlab' )} let(:namespace) { create(:namespace, name: 'gitlab' )}
let(:project) { create(:project, :repository, namespace: namespace) } let(:project) { create(:project, :repository, namespace: namespace) }
...@@ -86,7 +86,7 @@ describe BlobHelper do ...@@ -86,7 +86,7 @@ describe BlobHelper do
it 'verifies blob is text' do it 'verifies blob is text' do
expect(helper).not_to receive(:blob_text_viewable?) expect(helper).not_to receive(:blob_text_viewable?)
button = edit_blob_link(project, 'refs/heads/master', 'README.md') button = edit_blob_element(project, 'refs/heads/master', 'README.md')
expect(button).to start_with('<button') expect(button).to start_with('<button')
end end
...@@ -96,17 +96,17 @@ describe BlobHelper do ...@@ -96,17 +96,17 @@ describe BlobHelper do
expect(project.repository).not_to receive(:blob_at) expect(project.repository).not_to receive(:blob_at)
edit_blob_link(project, 'refs/heads/master', 'README.md', blob: blob) edit_blob_element(project, 'refs/heads/master', 'README.md', blob: blob)
end end
it 'returns a link with the proper route' do it 'returns a link with the proper route' do
link = edit_blob_link(project, 'master', 'README.md') link = edit_blob_element(project, 'master', 'README.md')
expect(Capybara.string(link).find_link('Edit')[:href]).to eq("/#{project.full_path}/edit/master/README.md") expect(Capybara.string(link).find_link('Edit')[:href]).to eq("/#{project.full_path}/edit/master/README.md")
end end
it 'returns a link with the passed link_opts on the expected route' do it 'returns a link with the passed link_opts on the expected route' do
link = edit_blob_link(project, 'master', 'README.md', link_opts: { mr_id: 10 }) link = edit_blob_element(project, 'master', 'README.md', link_opts: { mr_id: 10 })
expect(Capybara.string(link).find_link('Edit')[:href]).to eq("/#{project.full_path}/edit/master/README.md?mr_id=10") expect(Capybara.string(link).find_link('Edit')[:href]).to eq("/#{project.full_path}/edit/master/README.md?mr_id=10")
end end
......
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