* Serve audio files using HTML5 audio tag * Correct copy paste errortags/v1.7.0-dev
@@ -576,6 +576,11 @@ func IsVideoFile(data []byte) bool { | |||
return strings.Index(http.DetectContentType(data), "video/") != -1 | |||
} | |||
// IsAudioFile detects if data is an video format | |||
func IsAudioFile(data []byte) bool { | |||
return strings.Index(http.DetectContentType(data), "audio/") != -1 | |||
} | |||
// EntryIcon returns the octicon class for displaying files/directories | |||
func EntryIcon(entry *git.TreeEntry) string { | |||
switch { |
@@ -592,6 +592,7 @@ file_view_raw = View Raw | |||
file_permalink = Permalink | |||
file_too_large = The file is too large to be shown. | |||
video_not_supported_in_browser = Your browser does not support the HTML5 'video' tag. | |||
audio_not_supported_in_browser = Your browser does not support the HTML5 'audio' tag. | |||
stored_lfs = Stored with Git LFS | |||
commit_graph = Commit Graph | |||
@@ -264,6 +264,8 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st | |||
ctx.Data["IsPDFFile"] = true | |||
case base.IsVideoFile(buf): | |||
ctx.Data["IsVideoFile"] = true | |||
case base.IsAudioFile(buf): | |||
ctx.Data["IsAudioFile"] = true | |||
case base.IsImageFile(buf): | |||
ctx.Data["IsImageFile"] = true | |||
} |
@@ -55,6 +55,10 @@ | |||
<video controls src="{{EscapePound $.RawFileLink}}"> | |||
<strong>{{.i18n.Tr "repo.video_not_supported_in_browser"}}</strong> | |||
</video> | |||
{{else if .IsAudioFile}} | |||
<audio controls src="{{EscapePound $.RawFileLink}}"> | |||
<strong>{{.i18n.Tr "repo.audio_not_supported_in_browser"}}</strong> | |||
</audio> | |||
{{else if .IsPDFFile}} | |||
<iframe width="100%" height="600px" src="{{AppSubUrl}}/vendor/plugins/pdfjs/web/viewer.html?file={{EscapePound $.RawFileLink}}"></iframe> | |||
{{else}} |