Commit 54040ce0 authored by Douwe Maan's avatar Douwe Maan

Show Raw button as Download for binary files

parent 60ebd101
...@@ -217,11 +217,21 @@ module BlobHelper ...@@ -217,11 +217,21 @@ module BlobHelper
end end
def copy_blob_source_button(blob) def copy_blob_source_button(blob)
return unless blob.rendered_as_text?(ignore_errors: false)
clipboard_button(target: ".blob-content[data-blob-id='#{blob.id}']", class: "btn btn-sm js-copy-blob-source-btn", title: "Copy source to clipboard") clipboard_button(target: ".blob-content[data-blob-id='#{blob.id}']", class: "btn btn-sm js-copy-blob-source-btn", title: "Copy source to clipboard")
end end
def open_raw_blob_button def open_raw_blob_button(blob)
link_to icon('file-code-o'), blob_raw_url, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: 'Open raw', data: { container: 'body' } if blob.raw_binary?
icon = icon('download')
title = 'Download'
else
icon = icon('file-code-o')
title = 'Open raw'
end
link_to icon, blob_raw_url, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
end end
def blob_render_error_reason(viewer) def blob_render_error_reason(viewer)
......
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
= render 'projects/blob/viewer_switcher', blob: blob unless blame = render 'projects/blob/viewer_switcher', blob: blob unless blame
.btn-group{ role: "group" }< .btn-group{ role: "group" }<
= copy_blob_source_button(blob) if !blame && blob.rendered_as_text?(ignore_errors: false) = copy_blob_source_button(blob) unless blame
= open_raw_blob_button = open_raw_blob_button(blob)
= 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" }<
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
.btn-group{ role: "group" }< .btn-group{ role: "group" }<
= copy_blob_source_button(blob) = copy_blob_source_button(blob)
= open_raw_blob_button = open_raw_blob_button(blob)
- if defined?(download_path) && download_path - if defined?(download_path) && download_path
= link_to icon('download'), download_path, class: "btn btn-sm has-tooltip", title: 'Download', data: { container: 'body' } = link_to icon('download'), download_path, class: "btn btn-sm has-tooltip", title: 'Download', data: { container: 'body' }
......
...@@ -367,7 +367,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps ...@@ -367,7 +367,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
step 'I should see buttons for allowed commands' do step 'I should see buttons for allowed commands' do
page.within '.content' do page.within '.content' do
expect(page).to have_link 'Open raw' expect(page).to have_link 'Download'
expect(page).to have_content 'History' expect(page).to have_content 'History'
expect(page).to have_content 'Permalink' expect(page).to have_content 'Permalink'
expect(page).not_to have_content 'Edit' expect(page).not_to have_content 'Edit'
......
...@@ -24,6 +24,9 @@ feature 'File blob', :js, feature: true do ...@@ -24,6 +24,9 @@ feature 'File blob', :js, feature: true do
# shows an enabled copy button # shows an enabled copy button
expect(page).to have_selector('.js-copy-blob-source-btn:not(.disabled)') expect(page).to have_selector('.js-copy-blob-source-btn:not(.disabled)')
# shows a raw button
expect(page).to have_link('Open raw')
end end
end end
end end
...@@ -50,6 +53,9 @@ feature 'File blob', :js, feature: true do ...@@ -50,6 +53,9 @@ feature 'File blob', :js, feature: true do
# shows a disabled copy button # shows a disabled copy button
expect(page).to have_selector('.js-copy-blob-source-btn.disabled') expect(page).to have_selector('.js-copy-blob-source-btn.disabled')
# shows a raw button
expect(page).to have_link('Open raw')
end end
end end
...@@ -160,6 +166,9 @@ feature 'File blob', :js, feature: true do ...@@ -160,6 +166,9 @@ feature 'File blob', :js, feature: true do
# does not show a copy button # does not show a copy button
expect(page).not_to have_selector('.js-copy-blob-source-btn') expect(page).not_to have_selector('.js-copy-blob-source-btn')
# shows a raw button
expect(page).to have_link('Open raw')
end end
end end
...@@ -203,6 +212,9 @@ feature 'File blob', :js, feature: true do ...@@ -203,6 +212,9 @@ feature 'File blob', :js, feature: true do
# shows an enabled copy button # shows an enabled copy button
expect(page).to have_selector('.js-copy-blob-source-btn:not(.disabled)') expect(page).to have_selector('.js-copy-blob-source-btn:not(.disabled)')
# shows a raw button
expect(page).to have_link('Open raw')
end end
end end
end end
...@@ -237,6 +249,9 @@ feature 'File blob', :js, feature: true do ...@@ -237,6 +249,9 @@ feature 'File blob', :js, feature: true do
# does not show a copy button # does not show a copy button
expect(page).not_to have_selector('.js-copy-blob-source-btn') expect(page).not_to have_selector('.js-copy-blob-source-btn')
# shows a download button
expect(page).to have_link('Download')
end end
end end
end end
...@@ -262,6 +277,9 @@ feature 'File blob', :js, feature: true do ...@@ -262,6 +277,9 @@ feature 'File blob', :js, feature: true do
# does not show a copy button # does not show a copy button
expect(page).not_to have_selector('.js-copy-blob-source-btn') expect(page).not_to have_selector('.js-copy-blob-source-btn')
# shows a download button
expect(page).to have_link('Download')
end end
end end
end end
...@@ -283,6 +301,9 @@ feature 'File blob', :js, feature: true do ...@@ -283,6 +301,9 @@ feature 'File blob', :js, feature: true do
# shows an enabled copy button # shows an enabled copy button
expect(page).to have_selector('.js-copy-blob-source-btn:not(.disabled)') expect(page).to have_selector('.js-copy-blob-source-btn:not(.disabled)')
# shows a raw button
expect(page).to have_link('Open raw')
end end
end end
end end
...@@ -305,6 +326,9 @@ feature 'File blob', :js, feature: true do ...@@ -305,6 +326,9 @@ feature 'File blob', :js, feature: true do
# does not show a copy button # does not show a copy button
expect(page).not_to have_selector('.js-copy-blob-source-btn') expect(page).not_to have_selector('.js-copy-blob-source-btn')
# shows a download button
expect(page).to have_link('Download')
end end
end end
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