diff options
author | 无闻 <joe2010xtmf@163.com> | 2014-04-04 10:40:14 -0400 |
---|---|---|
committer | 无闻 <joe2010xtmf@163.com> | 2014-04-04 10:40:14 -0400 |
commit | 3a23476dbef0bb90ce5e8bc4c7ab8929bc04bb1b (patch) | |
tree | 8cfb016c545a0b7583fcb7e7acc5a11fc11c20a2 /routers/repo/repo.go | |
parent | 48d3a1fef12242c6f5c1848ca58e02d946a709da (diff) | |
parent | 75db79b4b6bcb8f61dd957c9bd21b32d4746f866 (diff) |
Merge pull request #61 from gogits/dev
Dev
Diffstat (limited to 'routers/repo/repo.go')
-rw-r--r-- | routers/repo/repo.go | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/routers/repo/repo.go b/routers/repo/repo.go index f45d063b..bc41345a 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -5,6 +5,7 @@ package repo import ( + "fmt" "path" "path/filepath" "strings" @@ -278,19 +279,44 @@ func SettingPost(ctx *middleware.Context) { switch ctx.Query("action") { case "update": + isNameChanged := false + newRepoName := ctx.Query("name") + // Check if repository name has been changed. + if ctx.Repo.Repository.Name != newRepoName { + isExist, err := models.IsRepositoryExist(ctx.Repo.Owner, newRepoName) + if err != nil { + ctx.Handle(404, "repo.SettingPost(update: check existence)", err) + return + } else if isExist { + ctx.RenderWithErr("Repository name has been taken in your repositories.", "repo/setting", nil) + return + } else if err = models.ChangeRepositoryName(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name, newRepoName); err != nil { + ctx.Handle(404, "repo.SettingPost(change repository name)", err) + return + } + log.Trace("%s Repository name changed: %s/%s -> %s", ctx.Req.RequestURI, ctx.User.Name, ctx.Repo.Repository.Name, newRepoName) + + isNameChanged = true + ctx.Repo.Repository.Name = newRepoName + } + ctx.Repo.Repository.Description = ctx.Query("desc") ctx.Repo.Repository.Website = ctx.Query("site") if err := models.UpdateRepository(ctx.Repo.Repository); err != nil { ctx.Handle(404, "repo.SettingPost(update)", err) return } + ctx.Data["IsSuccess"] = true - ctx.HTML(200, "repo/setting") - log.Trace("%s Repository updated: %s/%s", ctx.Req.RequestURI, ctx.User.LowerName, ctx.Repo.Repository.LowerName) + if isNameChanged { + ctx.Redirect(fmt.Sprintf("/%s/%s/settings", ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)) + } else { + ctx.HTML(200, "repo/setting") + } + log.Trace("%s Repository updated: %s/%s", ctx.Req.RequestURI, ctx.Repo.Owner.Name, ctx.Repo.Repository.Name) 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.HTML(200, "repo/setting") + ctx.RenderWithErr("Please make sure you entered repository name is correct.", "repo/setting", nil) return } |