summaryrefslogtreecommitdiffstats
path: root/routers/repo/single.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/repo/single.go')
-rw-r--r--routers/repo/single.go51
1 files changed, 37 insertions, 14 deletions
diff --git a/routers/repo/single.go b/routers/repo/single.go
index c144106cb8..f47a2f7bfc 100644
--- a/routers/repo/single.go
+++ b/routers/repo/single.go
@@ -8,9 +8,11 @@ import (
"strings"
"github.com/codegangsta/martini"
- // "github.com/slene/blackfriday"
+
+ "github.com/gogits/git"
"github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/middleware"
)
@@ -43,12 +45,14 @@ func Single(ctx *middleware.Context, params martini.Params) {
params["branchname"] = "master"
}
- // Directory and file list.
+ // Get tree path
treename := params["_1"]
+
+ // Directory and file list.
files, err := models.GetReposFiles(params["username"], params["reponame"],
params["branchname"], treename)
if err != nil {
- ctx.Handle(200, "repo.Single", err)
+ ctx.Render.Error(404)
return
}
ctx.Data["Username"] = params["username"]
@@ -58,7 +62,7 @@ func Single(ctx *middleware.Context, params martini.Params) {
// Branches.
brs, err := models.GetBranches(params["username"], params["reponame"])
if err != nil {
- ctx.Handle(200, "repo.Single", err)
+ ctx.Render.Error(404)
return
}
ctx.Data["Branches"] = brs
@@ -73,22 +77,41 @@ func Single(ctx *middleware.Context, params martini.Params) {
}
}
- // Latest commit.
+ // Get latest commit according username and repo name
commit, err := models.GetLastestCommit(params["username"], params["reponame"])
if err != nil {
- ctx.Handle(200, "repo.Single", err)
+ ctx.Render.Error(404)
return
}
ctx.Data["LatestCommit"] = commit
- // README.
- // for _, f := range files {
- // if f.Name == "README.md" {
- // ctx.Data["ReadmeName"] = "README.md"
- // ctx.Data["ReadmeContent"] =
- // break
- // }
- // }
+ var readmeFile *models.RepoFile
+
+ for _, f := range files {
+ if !f.IsFile() {
+ continue
+ }
+
+ if len(f.Name) < 6 {
+ continue
+ }
+
+ if strings.ToLower(f.Name[:6]) == "readme" {
+ readmeFile = f
+ break
+ }
+ }
+
+ if readmeFile != nil {
+ // if file large than 1M not show it
+ if readmeFile.Size > 1024*1024 || readmeFile.Filemode != git.FileModeBlob {
+ ctx.Data["FileIsLarge"] = true
+ } else if blob, err := readmeFile.LookupBlob(); err != nil {
+ ctx.Data["FileIsLarge"] = true
+ } else {
+ ctx.Data["ReadmeContent"] = string(base.RenderMarkdown(blob.Contents()))
+ }
+ }
ctx.Data["Paths"] = Paths
ctx.Data["Treenames"] = treenames