Feature #29752 » 29752.patch
app/helpers/attachments_helper.rb | ||
---|---|---|
86 | 86 |
end |
87 | 87 |
api.created_on attachment.created_on |
88 | 88 |
end |
89 | ||
90 |
def render_file_content(attachment, content) |
|
91 |
if attachment.is_markdown? |
|
92 |
render :partial => 'common/markup', :locals => {:markup_text_formatting => 'markdown', :markup_text => content} |
|
93 |
elsif attachment.is_textile? |
|
94 |
render :partial => 'common/markup', :locals => {:markup_text_formatting => 'textile', :markup_text => content} |
|
95 |
else |
|
96 |
render :partial => 'common/file', :locals => {:content => content, :filename => attachment.filename} |
|
97 |
end |
|
98 |
end |
|
89 | 99 |
end |
app/models/attachment.rb | ||
---|---|---|
238 | 238 |
Redmine::MimeType.is_type?('text', filename) |
239 | 239 |
end |
240 | 240 | |
241 |
def is_markdown? |
|
242 |
Redmine::MimeType.of(filename) == "text/markdown" |
|
243 |
end |
|
244 | ||
245 |
def is_textile? |
|
246 |
self.filename =~ /\.(textile)$/i |
|
247 |
end |
|
248 | ||
241 | 249 |
def is_image? |
242 | 250 |
Redmine::MimeType.is_type?('image', filename) |
243 | 251 |
end |
app/views/attachments/file.html.erb | ||
---|---|---|
1 | 1 |
<%= render :layout => 'layouts/file' do %> |
2 | 2 |
|
3 |
<%= render :partial => 'common/file', :locals => {:content => @content, :filename => @attachment.filename} %>
|
|
3 |
<%= render_file_content(@attachment, @content) %>
|
|
4 | 4 |
<% end %> |
app/views/common/_markup.html.erb | ||
---|---|---|
1 |
<div class="wiki"> |
|
2 |
<%= Redmine::WikiFormatting.to_html(markup_text_formatting, Redmine::CodesetUtil.to_utf8_by_setting(markup_text)).html_safe %> |
|
3 |
</div> |
test/fixtures/files/testfile.md | ||
---|---|---|
1 |
# Header 1 |
|
2 |
## Header 2 |
|
3 |
### Header 3 |
test/fixtures/files/testfile.textile | ||
---|---|---|
1 |
h1. Header 1 |
|
2 | ||
3 |
h2. Header 2 |
|
4 | ||
5 |
h3. Header 3 |
test/functional/attachments_controller_test.rb | ||
---|---|---|
212 | 212 |
set_tmp_attachments_directory |
213 | 213 |
end |
214 | 214 | |
215 |
def test_show_text_file_formated_markdown |
|
216 |
set_tmp_attachments_directory |
|
217 |
a = Attachment.new(:container => Issue.find(1), |
|
218 |
:file => uploaded_test_file("testfile.md", "text/plain"), |
|
219 |
:author => User.find(1)) |
|
220 |
assert a.save |
|
221 |
assert_equal 'testfile.md', a.filename |
|
222 | ||
223 |
get :show, :params => { |
|
224 |
:id => a.id |
|
225 |
} |
|
226 |
assert_response :success |
|
227 |
assert_equal 'text/html', @response.content_type |
|
228 |
assert_select 'div.wiki', :html => "<h1>Header 1</h1>\n\n<h2>Header 2</h2>\n\n<h3>Header 3</h3>" |
|
229 |
end |
|
230 | ||
231 |
def test_show_text_file_fromated_textile |
|
232 |
set_tmp_attachments_directory |
|
233 |
a = Attachment.new(:container => Issue.find(1), |
|
234 |
:file => uploaded_test_file("testfile.textile", "text/plain"), |
|
235 |
:author => User.find(1)) |
|
236 |
assert a.save |
|
237 |
assert_equal 'testfile.textile', a.filename |
|
238 | ||
239 |
get :show, :params => { |
|
240 |
:id => a.id |
|
241 |
} |
|
242 |
assert_response :success |
|
243 |
assert_equal 'text/html', @response.content_type |
|
244 |
assert_select 'div.wiki', :html => "<h1>Header 1</h1>\n\n\n\t<h2>Header 2</h2>\n\n\n\t<h3>Header 3</h3>" |
|
245 |
end |
|
246 | ||
215 | 247 |
def test_show_image |
216 | 248 |
@request.session[:user_id] = 2 |
217 | 249 |
get :show, :params => { |