diff --git a/routers/repo/view.go b/routers/repo/view.go index 4f1deeae40cd8..ea1f18838d73a 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -100,13 +100,24 @@ func renderDirectory(ctx *context.Context, treeLink string) { } else { d, _ := ioutil.ReadAll(dataRc) buf = append(buf, d...) + + var fileContent string + if content, err := templates.ToUTF8WithErr(buf); err != nil { + if err != nil { + log.Error(4, "ToUTF8WithErr: %v", err) + } + fileContent = string(buf) + } else { + fileContent = content + } + if markup.Type(readmeFile.Name()) != "" { ctx.Data["IsMarkup"] = true - ctx.Data["FileContent"] = string(markup.Render(readmeFile.Name(), buf, treeLink, ctx.Repo.Repository.ComposeMetas())) + ctx.Data["FileContent"] = string(markup.Render(readmeFile.Name(), []byte(fileContent), treeLink, ctx.Repo.Repository.ComposeMetas())) } else { ctx.Data["IsRenderedHTML"] = true ctx.Data["FileContent"] = strings.Replace( - gotemplate.HTMLEscapeString(string(buf)), "\n", `
`, -1, + gotemplate.HTMLEscapeString(fileContent), "\n", `
`, -1, ) } } @@ -203,28 +214,28 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st d, _ := ioutil.ReadAll(dataRc) buf = append(buf, d...) + // Building code view blocks with line number on server side. + var fileContent string + if content, err := templates.ToUTF8WithErr(buf); err != nil { + if err != nil { + log.Error(4, "ToUTF8WithErr: %v", err) + } + fileContent = string(buf) + } else { + fileContent = content + } + readmeExist := markup.IsReadmeFile(blob.Name()) ctx.Data["ReadmeExist"] = readmeExist if markup.Type(blob.Name()) != "" { ctx.Data["IsMarkup"] = true - ctx.Data["FileContent"] = string(markup.Render(blob.Name(), buf, path.Dir(treeLink), ctx.Repo.Repository.ComposeMetas())) + ctx.Data["FileContent"] = string(markup.Render(blob.Name(), []byte(fileContent), path.Dir(treeLink), ctx.Repo.Repository.ComposeMetas())) } else if readmeExist { ctx.Data["IsRenderedHTML"] = true ctx.Data["FileContent"] = strings.Replace( - gotemplate.HTMLEscapeString(string(buf)), "\n", `
`, -1, + gotemplate.HTMLEscapeString(fileContent), "\n", `
`, -1, ) } else { - // Building code view blocks with line number on server side. - var fileContent string - if content, err := templates.ToUTF8WithErr(buf); err != nil { - if err != nil { - log.Error(4, "ToUTF8WithErr: %v", err) - } - fileContent = string(buf) - } else { - fileContent = content - } - var output bytes.Buffer lines := strings.Split(fileContent, "\n") //Remove blank line at the end of file