Jelajahi Sumber

serve video files using the HTML5 video tag (#3967)

Nico Mandery 8 tahun lalu
induk
melakukan
adcb1d7c65

+ 1 - 0
conf/locale/locale_en-US.ini

@@ -427,6 +427,7 @@ file_history = History
 file_view_raw = View Raw
 file_permalink = Permalink
 file_too_large = This file is too large to be shown
+video_not_supported_in_browser = Your browser doesn't support HTML5 video tag.
 
 editor.new_file = New file
 editor.upload_file = Upload file

+ 4 - 0
modules/base/tool.go

@@ -533,3 +533,7 @@ func IsImageFile(data []byte) bool {
 func IsPDFFile(data []byte) bool {
 	return strings.Index(http.DetectContentType(data), "application/pdf") != -1
 }
+
+func IsVideoFile(data []byte) bool {
+	return strings.Index(http.DetectContentType(data), "video/") != -1
+}

+ 2 - 0
routers/repo/view.go

@@ -198,6 +198,8 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
 
 	case base.IsPDFFile(buf):
 		ctx.Data["IsPDFFile"] = true
+	case base.IsVideoFile(buf):
+		ctx.Data["IsVideoFile"] = true
 	case base.IsImageFile(buf):
 		ctx.Data["IsImageFile"] = true
 	}

+ 4 - 0
templates/repo/view_file.tmpl

@@ -43,6 +43,10 @@
 				<div class="view-raw ui center">
 					{{if .IsImageFile}}
 						<img src="{{EscapePound $.RawFileLink}}">
+					{{else if .IsVideoFile}}
+						<video controls src="{{EscapePound $.RawFileLink}}">
+							<strong>{{.i18n.Tr "repo.video_not_supported_in_browser"}}</strong>
+						</video>
 					{{else if .IsPDFFile}}
 						<iframe width="100%" height="600px" src="{{AppSubUrl}}/plugins/pdfjs-1.4.20/web/viewer.html?file={{EscapePound $.RawFileLink}}"></iframe>
 					{{else}}