* Add MaxDisplayFileSize setting * Don't show files that are too large * Localized FileTooLarge * Change IsFileTooBig => IsFileTooLargetags/v1.21.12.1
| @@ -31,6 +31,8 @@ FEED_MAX_COMMIT_NUM = 5 | |||||
| ; An invalid color like "none" or "disable" will have the default style | ; An invalid color like "none" or "disable" will have the default style | ||||
| ; More info: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android | ; More info: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android | ||||
| THEME_COLOR_META_TAG = `#ff5343` | THEME_COLOR_META_TAG = `#ff5343` | ||||
| ; Max size of files to be displayed (defaults is 8MiB) | |||||
| MAX_DISPLAY_FILE_SIZE = 8388608 | |||||
| [ui.admin] | [ui.admin] | ||||
| ; Number of users that are showed in one page | ; Number of users that are showed in one page | ||||
| @@ -409,6 +409,7 @@ file_raw = Raw | |||||
| file_history = History | file_history = History | ||||
| file_view_raw = View Raw | file_view_raw = View Raw | ||||
| file_permalink = Permalink | file_permalink = Permalink | ||||
| file_too_large = This file is too large to be shown | |||||
| commits.commits = Commits | commits.commits = Commits | ||||
| commits.search = Search commits | commits.search = Search commits | ||||
| @@ -123,6 +123,7 @@ var ( | |||||
| AdminNoticePagingNum int | AdminNoticePagingNum int | ||||
| AdminOrgPagingNum int | AdminOrgPagingNum int | ||||
| ThemeColorMetaTag string | ThemeColorMetaTag string | ||||
| MaxDisplayFileSize int64 | |||||
| // Markdown sttings | // Markdown sttings | ||||
| Markdown struct { | Markdown struct { | ||||
| @@ -441,6 +442,7 @@ func NewContext() { | |||||
| ExplorePagingNum = sec.Key("EXPLORE_PAGING_NUM").MustInt(20) | ExplorePagingNum = sec.Key("EXPLORE_PAGING_NUM").MustInt(20) | ||||
| IssuePagingNum = sec.Key("ISSUE_PAGING_NUM").MustInt(10) | IssuePagingNum = sec.Key("ISSUE_PAGING_NUM").MustInt(10) | ||||
| FeedMaxCommitNum = sec.Key("FEED_MAX_COMMIT_NUM").MustInt(5) | FeedMaxCommitNum = sec.Key("FEED_MAX_COMMIT_NUM").MustInt(5) | ||||
| MaxDisplayFileSize = sec.Key("MAX_DISPLAY_FILE_SIZE").MustInt64(8388608) | |||||
| sec = Cfg.Section("ui.admin") | sec = Cfg.Section("ui.admin") | ||||
| AdminUserPagingNum = sec.Key("USER_PAGING_NUM").MustInt(50) | AdminUserPagingNum = sec.Key("USER_PAGING_NUM").MustInt(50) | ||||
| @@ -19,6 +19,7 @@ import ( | |||||
| "github.com/gogits/gogs/modules/context" | "github.com/gogits/gogs/modules/context" | ||||
| "github.com/gogits/gogs/modules/log" | "github.com/gogits/gogs/modules/log" | ||||
| "github.com/gogits/gogs/modules/markdown" | "github.com/gogits/gogs/modules/markdown" | ||||
| "github.com/gogits/gogs/modules/setting" | |||||
| "github.com/gogits/gogs/modules/template" | "github.com/gogits/gogs/modules/template" | ||||
| "github.com/gogits/gogs/modules/template/highlight" | "github.com/gogits/gogs/modules/template/highlight" | ||||
| ) | ) | ||||
| @@ -104,20 +105,25 @@ func Home(ctx *context.Context) { | |||||
| case isImageFile: | case isImageFile: | ||||
| ctx.Data["IsImageFile"] = true | ctx.Data["IsImageFile"] = true | ||||
| case isTextFile: | case isTextFile: | ||||
| d, _ := ioutil.ReadAll(dataRc) | |||||
| buf = append(buf, d...) | |||||
| readmeExist := markdown.IsMarkdownFile(blob.Name()) || markdown.IsReadmeFile(blob.Name()) | |||||
| ctx.Data["ReadmeExist"] = readmeExist | |||||
| if readmeExist { | |||||
| ctx.Data["FileContent"] = string(markdown.Render(buf, path.Dir(treeLink), ctx.Repo.Repository.ComposeMetas())) | |||||
| if blob.Size() >= setting.MaxDisplayFileSize { | |||||
| ctx.Data["IsFileTooLarge"] = true | |||||
| } else { | } else { | ||||
| if err, content := template.ToUtf8WithErr(buf); err != nil { | |||||
| if err != nil { | |||||
| log.Error(4, "Convert content encoding: %s", err) | |||||
| } | |||||
| ctx.Data["FileContent"] = string(buf) | |||||
| ctx.Data["IsFileTooLarge"] = false | |||||
| d, _ := ioutil.ReadAll(dataRc) | |||||
| buf = append(buf, d...) | |||||
| readmeExist := markdown.IsMarkdownFile(blob.Name()) || markdown.IsReadmeFile(blob.Name()) | |||||
| ctx.Data["ReadmeExist"] = readmeExist | |||||
| if readmeExist { | |||||
| ctx.Data["FileContent"] = string(markdown.Render(buf, path.Dir(treeLink), ctx.Repo.Repository.ComposeMetas())) | |||||
| } else { | } else { | ||||
| ctx.Data["FileContent"] = content | |||||
| if err, content := template.ToUtf8WithErr(buf); err != nil { | |||||
| if err != nil { | |||||
| log.Error(4, "Convert content encoding: %s", err) | |||||
| } | |||||
| ctx.Data["FileContent"] = string(buf) | |||||
| } else { | |||||
| ctx.Data["FileContent"] = content | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -41,8 +41,12 @@ | |||||
| <table> | <table> | ||||
| <tbody> | <tbody> | ||||
| <tr> | <tr> | ||||
| {{if .IsFileTooLarge}} | |||||
| <td><strong>{{.i18n.Tr "repo.file_too_large"}}</strong></td> | |||||
| {{else}} | |||||
| <td class="lines-num"></td> | <td class="lines-num"></td> | ||||
| <td class="lines-code"><pre><code class="{{.HighlightClass}}"><ol class="linenums">{{.FileContent}}</ol></code></pre></td> | <td class="lines-code"><pre><code class="{{.HighlightClass}}"><ol class="linenums">{{.FileContent}}</ol></code></pre></td> | ||||
| {{end}} | |||||
| </tr> | </tr> | ||||
| </tbody> | </tbody> | ||||
| </table> | </table> | ||||