Commit 16a57d65 authored by maeda's avatar maeda

Adds previews for audio / video attachments (#27336).

Patch by Jens Kraemer.


git-svn-id: https://svn.redmine.org/redmine/trunk@17340 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent 372cbb9d
......@@ -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
......
<%= 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),
......
<p class="nodata">
<% if download_link %>
<%= t(:label_no_preview_alternative_html, link: download_link) %>
<% else %>
<%= l(:label_no_preview) %>
<% end %>
</p>
<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;
......
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