summaryrefslogtreecommitdiffstats
path: root/routers/repo/lfs.go
diff options
context:
space:
mode:
authorJonathan Tran <jonnytran@gmail.com>2021-01-12 22:45:19 -0500
committerGitHub <noreply@github.com>2021-01-12 22:45:19 -0500
commit81467e6f35f343b911c09f746deca869a48da4c8 (patch)
tree1b759007789bc0dbeeb543d54739ccf8b8dfb434 /routers/repo/lfs.go
parent9465e60504284699078e620f7c892a9685d91458 (diff)
downloadgitea-81467e6f35f343b911c09f746deca869a48da4c8.tar.gz
gitea-81467e6f35f343b911c09f746deca869a48da4c8.zip
Display SVG files as images instead of text (#14101)
* Change to display SVG files as images * Remove unsafe styles from SVG CSP * Add integration test to test SVG headers * Add config setting to disable SVG rendering * Add test for img tag when loading SVG image * Remove the Raw view button for svg files since we don't fully support this * Fix copyright year * Rename and move config setting * Add setting to cheat sheet in docs * Fix so that comment matches cheat sheet * Add allowing styles in CSP based on pull request feedback * Re-enable raw button since we show SVG styles now * Change so that SVG files are editable * Add UI to toggle between source and rendered image for SVGs * Change to show blame button for SVG images * Fix to update ctx data * Add test for DetectContentType when file is longer than sniffLen Co-authored-by: Jonathan Tran <jon@allspice.io> Co-authored-by: Kyle D <kdumontnu@gmail.com>
Diffstat (limited to 'routers/repo/lfs.go')
-rw-r--r--routers/repo/lfs.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/routers/repo/lfs.go b/routers/repo/lfs.go
index 01bbd192bc..fb0e3b10ea 100644
--- a/routers/repo/lfs.go
+++ b/routers/repo/lfs.go
@@ -279,14 +279,19 @@ func LFSFileGet(ctx *context.Context) {
}
buf = buf[:n]
- isTextFile := base.IsTextFile(buf)
- ctx.Data["IsTextFile"] = isTextFile
+ ctx.Data["IsTextFile"] = base.IsTextFile(buf)
+ isRepresentableAsText := base.IsRepresentableAsText(buf)
fileSize := meta.Size
ctx.Data["FileSize"] = meta.Size
ctx.Data["RawFileLink"] = fmt.Sprintf("%s%s.git/info/lfs/objects/%s/%s", setting.AppURL, ctx.Repo.Repository.FullName(), meta.Oid, "direct")
switch {
- case isTextFile:
+ case isRepresentableAsText:
+ // This will be true for SVGs.
+ if base.IsImageFile(buf) {
+ ctx.Data["IsImageFile"] = true
+ }
+
if fileSize >= setting.UI.MaxDisplayFileSize {
ctx.Data["IsFileTooLarge"] = true
break