Patch by Jens Kraemer. git-svn-id: http://svn.redmine.org/redmine/trunk@17340 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/4.0.0
@@ -250,8 +250,16 @@ class Attachment < ActiveRecord::Base | |||
Redmine::MimeType.of(filename) == "application/pdf" | |||
end | |||
def is_video? | |||
Redmine::MimeType.is_type?('video', filename) | |||
end | |||
def is_audio? | |||
Redmine::MimeType.is_type?('audio', filename) | |||
end | |||
def previewable? | |||
is_text? || is_image? | |||
is_text? || is_image? || is_video? || is_audio? | |||
end | |||
# Returns true if the file is readable |
@@ -1,6 +1,16 @@ | |||
<%= render :layout => 'layouts/file' do %> | |||
<%= render :partial => 'common/other', | |||
<% kind = if @attachment.is_video? | |||
'video' | |||
elsif @attachment.is_audio? | |||
'audio' | |||
end %> | |||
<%= render :partial => "common/other", | |||
:locals => { | |||
:kind => kind, | |||
:path => download_named_attachment_url(@attachment, | |||
@attachment.filename), | |||
:download_link => link_to_attachment( | |||
@attachment, | |||
:text => l(:label_no_preview_download), |
@@ -0,0 +1,8 @@ | |||
<p class="nodata"> | |||
<% if download_link %> | |||
<%= t(:label_no_preview_alternative_html, link: download_link) %> | |||
<% else %> | |||
<%= l(:label_no_preview) %> | |||
<% end %> | |||
</p> | |||
@@ -1,7 +1,23 @@ | |||
<p class="nodata"> | |||
<% if defined? download_link %> | |||
<%= t(:label_no_preview_alternative_html, link: download_link) %> | |||
<% download_link = nil unless defined? download_link %> | |||
<% kind = nil unless defined? kind %> | |||
<% path = nil unless defined? path %> | |||
<% if path.present? %> | |||
<% if kind == 'video' %> | |||
<%= content_tag :video, class: 'filecontent', src: path, controls: true do %> | |||
<%= render partial: 'common/no_preview', locals: { download_link: download_link } %> | |||
<% end %> | |||
<% elsif kind == 'audio' %> | |||
<%= content_tag :audio, class: 'filecontent', src: path, controls: true do %> | |||
<%= render partial: 'common/no_preview', locals: { download_link: download_link } %> | |||
<% end %> | |||
<% else %> | |||
<%= l(:label_no_preview) %> | |||
<% end %> | |||
</p> | |||
<%= render partial: 'common/no_preview', locals: { download_link: download_link } %> | |||
<% end %> | |||
<% else %> | |||
<%= render partial: 'common/no_preview', locals: { download_link: download_link } %> | |||
<% end %> |
@@ -17,8 +17,15 @@ | |||
<% elsif @content %> | |||
<%= render :partial => 'common/file', :locals => {:filename => @path, :content => @content} %> | |||
<% else %> | |||
<% kind = if Redmine::MimeType.is_type?('video', @path) | |||
'video' | |||
elsif Redmine::MimeType.is_type?('audio', @path) | |||
'audio' | |||
end %> | |||
<%= render :partial => 'common/other', | |||
:locals => { | |||
:path => (url_for(params.merge(:action => 'raw')) if @allow_download), | |||
:kind => kind, | |||
:download_link => @repository.supports_cat? ? link_to( | |||
l(:label_no_preview_download), | |||
{ :action => 'raw', :id => @project, |
@@ -46,6 +46,7 @@ module Redmine | |||
'image/x-ms-bmp' => 'bmp', | |||
'application/javascript' => 'js', | |||
'application/pdf' => 'pdf', | |||
'video/mp4' => 'mp4', | |||
}.freeze | |||
EXTENSIONS = MIME_TYPES.inject({}) do |map, (type, exts)| |
@@ -71,7 +71,7 @@ table.filecontent td.line-code pre { | |||
table.filecontent tr:target th.line-num { background-color:#E0E0E0; color: #777; } | |||
table.filecontent tr:target td.line-code { background-color:#DDEEFF; } | |||
img.filecontent { max-width: 100%; } | |||
img.filecontent, video.filecontent { max-width: 100%; } | |||
.previous-filename { | |||
font-weight: normal; |