aboutsummaryrefslogtreecommitdiff
path: root/routers
diff options
context:
space:
mode:
Diffstat (limited to 'routers')
-rw-r--r--routers/repo/repo.go54
-rw-r--r--routers/repo/single.go77
-rw-r--r--routers/user/user.go2
3 files changed, 94 insertions, 39 deletions
diff --git a/routers/repo/repo.go b/routers/repo/repo.go
index 116c199b..edd88627 100644
--- a/routers/repo/repo.go
+++ b/routers/repo/repo.go
@@ -20,49 +20,35 @@ func Create(ctx *middleware.Context, form auth.CreateRepoForm) {
return
}
- if ctx.HasError() {
- ctx.Render.HTML(200, "repo/create", ctx.Data)
+ if _, err := models.CreateRepository(ctx.User,
+ form.RepoName, form.Description, form.Language, form.License,
+ form.Visibility == "private", form.InitReadme == "on"); err == nil {
+ ctx.Render.Redirect("/"+ctx.User.Name+"/"+form.RepoName, 302)
return
- }
-
- // TODO: access check
-
- user, err := models.GetUserById(form.UserId)
- if err != nil {
- if err.Error() == models.ErrUserNotExist.Error() {
- ctx.RenderWithErr("User does not exist", "repo/create", &form)
- return
- }
- }
-
- if err == nil {
- if _, err = models.CreateRepository(user,
- form.RepoName, form.Description, form.Language, form.License,
- form.Visibility == "private", form.InitReadme == "on"); err == nil {
- ctx.Render.Redirect("/"+user.Name+"/"+form.RepoName, 302)
- return
- }
- }
-
- if err.Error() == models.ErrRepoAlreadyExist.Error() {
+ } else if err == models.ErrRepoAlreadyExist {
ctx.RenderWithErr("Repository name has already been used", "repo/create", &form)
return
}
-
- ctx.Handle(200, "repo.Create", err)
}
-func Delete(ctx *middleware.Context, form auth.DeleteRepoForm) {
- ctx.Data["Title"] = "Delete repository"
-
- if ctx.Req.Method == "GET" {
- ctx.Render.HTML(200, "repo/delete", ctx.Data)
+func SettingPost(ctx *middleware.Context) {
+ if !ctx.Repo.IsOwner {
+ ctx.Render.Error(404)
return
}
- if err := models.DeleteRepository(form.UserId, form.RepoId, form.UserName); err != nil {
- ctx.Handle(200, "repo.Delete", err)
- return
+ switch ctx.Query("action") {
+ case "delete":
+ if len(ctx.Repo.Repository.Name) == 0 || ctx.Repo.Repository.Name != ctx.Query("repository") {
+ ctx.Data["ErrorMsg"] = "Please make sure you entered repository name is correct."
+ ctx.Render.HTML(200, "repo/setting", ctx.Data)
+ return
+ }
+
+ if err := models.DeleteRepository(ctx.User.Id, ctx.Repo.Repository.Id, ctx.User.LowerName); err != nil {
+ ctx.Handle(200, "repo.Delete", err)
+ return
+ }
}
ctx.Render.Redirect("/", 302)
diff --git a/routers/repo/single.go b/routers/repo/single.go
index 6bf03ca2..f47a2f7b 100644
--- a/routers/repo/single.go
+++ b/routers/repo/single.go
@@ -9,10 +9,33 @@ import (
"github.com/codegangsta/martini"
+ "github.com/gogits/git"
+
"github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/middleware"
)
+func Branches(ctx *middleware.Context, params martini.Params) {
+ if !ctx.Repo.IsValid {
+ return
+ }
+
+ ctx.Data["Username"] = params["username"]
+ ctx.Data["Reponame"] = params["reponame"]
+
+ brs, err := models.GetBranches(params["username"], params["reponame"])
+ if err != nil {
+ ctx.Handle(200, "repo.Branches", err)
+ return
+ }
+
+ ctx.Data["Branches"] = brs
+ ctx.Data["IsRepoToolbarBranches"] = true
+
+ ctx.Render.HTML(200, "repo/branches", ctx.Data)
+}
+
func Single(ctx *middleware.Context, params martini.Params) {
if !ctx.Repo.IsValid {
return
@@ -22,17 +45,28 @@ func Single(ctx *middleware.Context, params martini.Params) {
params["branchname"] = "master"
}
+ // 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"]
ctx.Data["Reponame"] = params["reponame"]
ctx.Data["Branchname"] = params["branchname"]
+ // Branches.
+ brs, err := models.GetBranches(params["username"], params["reponame"])
+ if err != nil {
+ ctx.Render.Error(404)
+ return
+ }
+ ctx.Data["Branches"] = brs
+
var treenames []string
Paths := make([]string, 0)
@@ -43,16 +77,52 @@ func Single(ctx *middleware.Context, params martini.Params) {
}
}
+ // Get latest commit according username and repo name
+ commit, err := models.GetLastestCommit(params["username"], params["reponame"])
+ if err != nil {
+ ctx.Render.Error(404)
+ return
+ }
+ ctx.Data["LatestCommit"] = commit
+
+ 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
ctx.Data["IsRepoToolbarSource"] = true
- ctx.Data["IsRepositoryOwner"] = strings.ToLower(params["username"]) == ctx.User.LowerName
ctx.Data["Files"] = files
ctx.Render.HTML(200, "repo/single", ctx.Data)
}
func Setting(ctx *middleware.Context, params martini.Params) {
- if !ctx.Repo.IsValid {
+ if !ctx.Repo.IsOwner {
+ ctx.Render.Error(404)
return
}
@@ -63,7 +133,6 @@ func Setting(ctx *middleware.Context, params martini.Params) {
ctx.Data["Title"] = title + " - settings"
ctx.Data["IsRepoToolbarSetting"] = true
- ctx.Data["IsRepositoryOwner"] = strings.ToLower(params["username"]) == ctx.User.LowerName
ctx.Render.HTML(200, "repo/setting", ctx.Data)
}
diff --git a/routers/user/user.go b/routers/user/user.go
index 0ff5058d..c43cf84a 100644
--- a/routers/user/user.go
+++ b/routers/user/user.go
@@ -195,7 +195,7 @@ func Feeds(ctx *middleware.Context, form auth.FeedsForm) {
feeds := make([]string, len(actions))
for i := range actions {
feeds[i] = fmt.Sprintf(feedTpl, base.ActionIcon(actions[i].OpType),
- base.TimeSince(actions[i].Created), base.ActionDesc(actions[i]))
+ base.TimeSince(actions[i].Created), base.ActionDesc(actions[i], ctx.User.AvatarLink()))
}
ctx.Render.JSON(200, &feeds)
}