Patch #27336 » 0001-adds-previews-for-audio-video-attachments.patch
app/models/attachment.rb | ||
---|---|---|
250 | 250 |
Redmine::MimeType.of(filename) == "application/pdf" |
251 | 251 |
end |
252 | 252 | |
253 |
def is_video? |
|
254 |
Redmine::MimeType.is_type?('video', filename) |
|
255 |
end |
|
256 | ||
257 |
def is_audio? |
|
258 |
Redmine::MimeType.is_type?('audio', filename) |
|
259 |
end |
|
260 | ||
253 | 261 |
def previewable? |
254 |
is_text? || is_image? |
|
262 |
is_text? || is_image? || is_video? || is_audio?
|
|
255 | 263 |
end |
256 | 264 | |
257 | 265 |
# Returns true if the file is readable |
app/views/attachments/other.html.erb | ||
---|---|---|
1 | 1 |
<%= render :layout => 'layouts/file' do %> |
2 |
<%= render :partial => 'common/other', |
|
2 | ||
3 |
<% kind = if @attachment.is_video? |
|
4 |
'video' |
|
5 |
elsif @attachment.is_audio? |
|
6 |
'audio' |
|
7 |
end %> |
|
8 | ||
9 |
<%= render :partial => "common/other", |
|
3 | 10 |
:locals => { |
11 |
:kind => kind, |
|
12 |
:path => download_named_attachment_url(@attachment, |
|
13 |
@attachment.filename), |
|
4 | 14 |
:download_link => link_to_attachment( |
5 | 15 |
@attachment, |
6 | 16 |
:text => l(:label_no_preview_download), |
app/views/common/_no_preview.html.erb | ||
---|---|---|
1 |
<p class="nodata"> |
|
2 |
<% if download_link %> |
|
3 |
<%= t(:label_no_preview_alternative_html, link: download_link) %> |
|
4 |
<% else %> |
|
5 |
<%= l(:label_no_preview) %> |
|
6 |
<% end %> |
|
7 |
</p> |
|
8 |
app/views/common/_other.html.erb | ||
---|---|---|
1 |
<p class="nodata"> |
|
2 |
<% if defined? download_link %> |
|
3 |
<%= t(:label_no_preview_alternative_html, link: download_link) %> |
|
1 |
<% download_link = nil unless defined? download_link %> |
|
2 |
<% kind = nil unless defined? kind %> |
|
3 |
<% path = nil unless defined? path %> |
|
4 | ||
5 |
<% if path.present? %> |
|
6 | ||
7 |
<% if kind == 'video' %> |
|
8 |
<%= content_tag :video, class: 'filecontent', src: path, controls: true do %> |
|
9 |
<%= render partial: 'common/no_preview', locals: { download_link: download_link } %> |
|
10 |
<% end %> |
|
11 |
<% elsif kind == 'audio' %> |
|
12 |
<%= content_tag :audio, class: 'filecontent', src: path, controls: true do %> |
|
13 |
<%= render partial: 'common/no_preview', locals: { download_link: download_link } %> |
|
14 |
<% end %> |
|
4 | 15 |
<% else %> |
5 |
<%= l(:label_no_preview) %> |
|
6 |
<% end %> |
|
7 |
</p> |
|
16 |
<%= render partial: 'common/no_preview', locals: { download_link: download_link } %> |
|
17 |
<% end %> |
|
18 | ||
19 |
<% else %> |
|
20 | ||
21 |
<%= render partial: 'common/no_preview', locals: { download_link: download_link } %> |
|
22 | ||
23 |
<% end %> |
app/views/repositories/entry.html.erb | ||
---|---|---|
17 | 17 |
<% elsif @content %> |
18 | 18 |
<%= render :partial => 'common/file', :locals => {:filename => @path, :content => @content} %> |
19 | 19 |
<% else %> |
20 |
<% kind = if Redmine::MimeType.is_type?('video', @path) |
|
21 |
'video' |
|
22 |
elsif Redmine::MimeType.is_type?('audio', @path) |
|
23 |
'audio' |
|
24 |
end %> |
|
20 | 25 |
<%= render :partial => 'common/other', |
21 | 26 |
:locals => { |
27 |
:path => (url_for(params.merge(:action => 'raw')) if @allow_download), |
|
28 |
:kind => kind, |
|
22 | 29 |
:download_link => @repository.supports_cat? ? link_to( |
23 | 30 |
l(:label_no_preview_download), |
24 | 31 |
{ :action => 'raw', :id => @project, |
lib/redmine/mime_type.rb | ||
---|---|---|
46 | 46 |
'image/x-ms-bmp' => 'bmp', |
47 | 47 |
'application/javascript' => 'js', |
48 | 48 |
'application/pdf' => 'pdf', |
49 |
'video/mp4' => 'mp4', |
|
49 | 50 |
}.freeze |
50 | 51 | |
51 | 52 |
EXTENSIONS = MIME_TYPES.inject({}) do |map, (type, exts)| |
public/stylesheets/scm.css | ||
---|---|---|
71 | 71 |
table.filecontent tr:target th.line-num { background-color:#E0E0E0; color: #777; } |
72 | 72 |
table.filecontent tr:target td.line-code { background-color:#DDEEFF; } |
73 | 73 | |
74 |
img.filecontent { max-width: 100%; } |
|
74 |
img.filecontent, video.filecontent { max-width: 100%; }
|
|
75 | 75 | |
76 | 76 |
/* 12 different colors for the annonate view */ |
77 | 77 |
table.annotate tr.bloc-0 td.author {border-right-color: #FFFFBF;} |