diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9fb6a56c2..ef57d7139 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -253,7 +253,17 @@ module ApplicationHelper when 'Issue' object.visible? && html ? link_to_issue(object) : "##{object.id}" when 'Attachment' - html ? link_to_attachment(object) : object.filename + if html + content_tag(:span, + link_to_attachment(object) + + link_to_attachment( + object, + :class => ['icon-only', 'icon-download'], :title => l(:button_download), :download => true + ) + ) + else + object.filename + end when 'CustomValue', 'CustomFieldValue' if object.custom_field f = object.custom_field.format.formatted_custom_value(self, object, html) diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index ffda203ef..5b943f862 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -241,7 +241,9 @@ table.list td {text-align:center; vertical-align:middle; padding-right:10px;} table.list td.id { width: 2%; text-align: center;} table.list td.name, table.list td.description, table.list td.subject, table.list td.comments, table.list td.roles, table.list td.attachments, table.list td.text, table.list td.short_description {text-align: left;} -table.list td.attachments a {display:block;} +table.list td.attachments span {display:block; height:16px;} +table.list td.attachments span a.icon-download {display:none;} +table.list td.attachments span:hover a.icon-download {display:inline-block;} table.list td.tick {width:15%} table.list td.checkbox { width: 15px; padding: 2px 0 0 0; } table.list .checkbox input {padding:0px; height: initial;} diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 11d93cf21..fbf7e66b3 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -1784,8 +1784,14 @@ class IssuesControllerTest < Redmine::ControllerTest assert_select 'td.attachments' assert_select 'tr#issue-2' do assert_select 'td.attachments' do - assert_select 'a', :text => 'source.rb' - assert_select 'a', :text => 'picture.jpg' + assert_select 'span:nth-of-type(1)' do + assert_select 'a[href=?]', '/attachments/4', :text => 'source.rb' + assert_select 'a[href=?].icon-download', '/attachments/download/4/source.rb' + end + assert_select 'span:nth-of-type(2)' do + assert_select 'a[href=?]', '/attachments/10', :text => 'picture.jpg' + assert_select 'a[href=?].icon-download', '/attachments/download/10/picture.jpg' + end end end end diff --git a/test/integration/lib/redmine/field_format/attachment_format_test.rb b/test/integration/lib/redmine/field_format/attachment_format_test.rb index 61f439894..ccb33a9b6 100644 --- a/test/integration/lib/redmine/field_format/attachment_format_test.rb +++ b/test/integration/lib/redmine/field_format/attachment_format_test.rb @@ -81,7 +81,7 @@ class AttachmentFieldFormatTest < Redmine::IntegrationTest assert_response :success # link to the attachment - link = css_select(".cf_#{@field.id} .value a") + link = css_select(".cf_#{@field.id} .value a:not(.icon-download)") assert_equal 1, link.size assert_equal "testfile.txt", link.text