mirror of
https://github.com/meineerde/redmine.git
synced 2026-01-07 08:01:31 +00:00
Adds previews for audio / video attachments (#27336).
Patch by Jens Kraemer. git-svn-id: http://svn.redmine.org/redmine/trunk@17340 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
ccfdee4a53
commit
37d1fcf8a4
@ -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),
|
||||
|
||||
8
app/views/common/_no_preview.html.erb
Normal file
8
app/views/common/_no_preview.html.erb
Normal file
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user