From 1eb078d0a8c5424de9512d810ab2fbf21f59ff78 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 23 Mar 2014 06:27:01 -0400 Subject: [PATCH] Fix action --- README.md | 6 ++-- README_ZH.md | 2 +- models/action.go | 12 ++++---- models/issue.go | 26 ++++++++-------- modules/base/tool.go | 23 ++++++++++++--- routers/repo/repo.go | 59 +++++++++++++++++++++---------------- serve.go | 2 +- templates/repo/nav.tmpl | 2 +- templates/repo/setting.tmpl | 16 ++++------ web.go | 2 +- 10 files changed, 85 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index 504c21975..e947d7739 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Gogs - Go Git Service [![wercker status](https://app.wercker.com/status/ad0bdb0bc450ac6f09bc56b9640a50aa/s/ "wercker status")](https://app.wercker.com/project/bykey/ad0bdb0bc450ac6f09bc56b9640a50aa) [![Build Status](https://drone.io/github.com/gogits/gogs/status.png)](https://drone.io/github.com/gogits/gogs/latest) +Gogs - Go Git Service [![wercker status](https://app.wercker.com/status/ad0bdb0bc450ac6f09bc56b9640a50aa/s/ "wercker status")](https://app.wercker.com/project/bykey/ad0bdb0bc450ac6f09bc56b9640a50aa) [![Build Status](https://drone.io/github.com/gogits/gogs/status.png)](https://drone.io/github.com/gogits/gogs/latest) [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/gogits/gogs/trend.png)](https://bitdeli.com/free "Bitdeli Badge") ===================== Gogs(Go Git Service) is a Self Hosted Git Service in the Go Programming Language. @@ -7,7 +7,9 @@ Gogs(Go Git Service) is a Self Hosted Git Service in the Go Programming Language ##### Current version: 0.1.6 Alpha -[简体中文](README_ZH.md) +#### Other language version + +- [简体中文](README_ZH.md) ## Purpose diff --git a/README_ZH.md b/README_ZH.md index 0ab8dfdd0..78e26fada 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -1,4 +1,4 @@ -Gogs - Go Git Service [![wercker status](https://app.wercker.com/status/ad0bdb0bc450ac6f09bc56b9640a50aa/s/ "wercker status")](https://app.wercker.com/project/bykey/ad0bdb0bc450ac6f09bc56b9640a50aa) [![Build Status](https://drone.io/github.com/gogits/gogs/status.png)](https://drone.io/github.com/gogits/gogs/latest) +Gogs - Go Git Service [![wercker status](https://app.wercker.com/status/ad0bdb0bc450ac6f09bc56b9640a50aa/s/ "wercker status")](https://app.wercker.com/project/bykey/ad0bdb0bc450ac6f09bc56b9640a50aa) [![Build Status](https://drone.io/github.com/gogits/gogs/status.png)](https://drone.io/github.com/gogits/gogs/latest) [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/gogits/gogs/trend.png)](https://bitdeli.com/free "Bitdeli Badge") ===================== Gogs(Go Git Service) 是一个由 Go 语言编写的自助 Git 托管服务。 diff --git a/models/action.go b/models/action.go index ca2ff3cbf..117492935 100644 --- a/models/action.go +++ b/models/action.go @@ -8,6 +8,7 @@ import ( "encoding/json" "time" + "github.com/gogits/gogs/modules/base" "github.com/gogits/gogs/modules/log" ) @@ -47,18 +48,17 @@ func (a Action) GetRepoName() string { return a.RepoName } -func (a Action) GetContent() string { - return a.Content +func (a Action) GetBranch() string { + return a.RefName } -type PushCommits struct { - Len int - Commits [][]string +func (a Action) GetContent() string { + return a.Content } // CommitRepoAction records action for commit repository. func CommitRepoAction(userId int64, userName string, - repoId int64, repoName string, refName string, commits *PushCommits) error { + repoId int64, repoName string, refName string, commits *base.PushCommits) error { bs, err := json.Marshal(commits) if err != nil { return err diff --git a/models/issue.go b/models/issue.go index f78c240cb..929567b1b 100644 --- a/models/issue.go +++ b/models/issue.go @@ -83,42 +83,42 @@ func GetIssues(userId, repoId, posterId, milestoneId int64, page int, isClosed, sess := orm.Limit(20, (page-1)*20) if repoId > 0 { - sess = sess.Where("repo_id=?", repoId).And("is_closed=?", isClosed) + sess.Where("repo_id=?", repoId).And("is_closed=?", isClosed) } else { - sess = sess.Where("is_closed=?", isClosed) + sess.Where("is_closed=?", isClosed) } if userId > 0 { - sess = sess.And("assignee_id=?", userId) + sess.And("assignee_id=?", userId) } else if posterId > 0 { - sess = sess.And("poster_id=?", posterId) + sess.And("poster_id=?", posterId) } else if isMention { - sess = sess.And("mentions like '%$" + base.ToStr(userId) + "|%'") + sess.And("mentions like '%$" + base.ToStr(userId) + "|%'") } if milestoneId > 0 { - sess = sess.And("milestone_id=?", milestoneId) + sess.And("milestone_id=?", milestoneId) } if len(labels) > 0 { for _, label := range strings.Split(labels, ",") { - sess = sess.And("mentions like '%$" + label + "|%'") + sess.And("mentions like '%$" + label + "|%'") } } switch sortType { case "oldest": - sess = sess.Asc("created") + sess.Asc("created") case "recentupdate": - sess = sess.Desc("updated") + sess.Desc("updated") case "leastupdate": - sess = sess.Asc("updated") + sess.Asc("updated") case "mostcomment": - sess = sess.Desc("num_comments") + sess.Desc("num_comments") case "leastcomment": - sess = sess.Asc("num_comments") + sess.Asc("num_comments") default: - sess = sess.Desc("created") + sess.Desc("created") } var issues []Issue diff --git a/modules/base/tool.go b/modules/base/tool.go index c7ee2ee85..edf7a953c 100644 --- a/modules/base/tool.go +++ b/modules/base/tool.go @@ -471,6 +471,7 @@ type Actioner interface { GetOpType() int GetActUserName() string GetRepoName() string + GetBranch() string GetContent() string } @@ -493,25 +494,39 @@ const ( TPL_COMMIT_REPO_LI = `
user-avatar %s %s
` ) +type PushCommits struct { + Len int + Commits [][]string +} + // ActionDesc accepts int that represents action operation type // and returns the description. func ActionDesc(act Actioner, avatarLink string) string { actUserName := act.GetActUserName() repoName := act.GetRepoName() + branch := act.GetBranch() content := act.GetContent() switch act.GetOpType() { case 1: // Create repository. return fmt.Sprintf(TPL_CREATE_REPO, actUserName, actUserName, actUserName, repoName, repoName) case 5: // Commit repository. - var commits [][]string - if err := json.Unmarshal([]byte(content), &commits); err != nil { + var push *PushCommits + if err := json.Unmarshal([]byte(content), &push); err != nil { return err.Error() } buf := bytes.NewBuffer([]byte("\n")) - for _, commit := range commits { + max := 3 + count := len(push.Commits) + if count < max { + max = count + } + for _, commit := range push.Commits[:max] { buf.WriteString(fmt.Sprintf(TPL_COMMIT_REPO_LI, avatarLink, actUserName, repoName, commit[0], commit[0][:7], commit[1]) + "\n") } - return fmt.Sprintf(TPL_COMMIT_REPO, actUserName, actUserName, actUserName, repoName, "master", "master", actUserName, repoName, actUserName, repoName, + if count > max { + buf.WriteString(fmt.Sprintf(`
%d other commits >>
`, actUserName, repoName, count-max)) + } + return fmt.Sprintf(TPL_COMMIT_REPO, actUserName, actUserName, actUserName, repoName, branch, branch, actUserName, repoName, actUserName, repoName, buf.String()) default: return "invalid type" diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 0f1ea3123..82956098b 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -52,30 +52,6 @@ func Create(ctx *middleware.Context, form auth.CreateRepoForm) { ctx.Handle(200, "repo.Create", err) } -func SettingPost(ctx *middleware.Context) { - if !ctx.Repo.IsOwner { - ctx.Error(404) - 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.HTML(200, "repo/setting") - return - } - - if err := models.DeleteRepository(ctx.User.Id, ctx.Repo.Repository.Id, ctx.User.LowerName); err != nil { - ctx.Handle(200, "repo.Delete", err) - return - } - } - - log.Trace("%s Repository deleted: %s/%s", ctx.Req.RequestURI, ctx.User.LowerName, ctx.Repo.Repository.LowerName) - ctx.Redirect("/") -} - func Branches(ctx *middleware.Context, params martini.Params) { if !ctx.Repo.IsValid { return @@ -203,7 +179,6 @@ func Single(ctx *middleware.Context, params martini.Params) { if readmeFile.Size > 1024*1024 || readmeFile.Filemode != git.FileModeBlob { ctx.Data["FileIsLarge"] = true } else if blob, err := readmeFile.LookupBlob(); err != nil { - //log.Error("repo.Single(readmeFile.LookupBlob): %v", err) ctx.Handle(404, "repo.Single(readmeFile.LookupBlob)", err) return } else { @@ -301,6 +276,40 @@ func Setting(ctx *middleware.Context, params martini.Params) { ctx.HTML(200, "repo/setting") } +func SettingPost(ctx *middleware.Context, params martini.Params) { + if !ctx.Repo.IsOwner { + ctx.Error(404) + return + } + + switch ctx.Query("action") { + case "update": + 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) + 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") + return + } + + if err := models.DeleteRepository(ctx.User.Id, ctx.Repo.Repository.Id, ctx.User.LowerName); err != nil { + ctx.Handle(200, "repo.Delete", err) + return + } + + log.Trace("%s Repository deleted: %s/%s", ctx.Req.RequestURI, ctx.User.LowerName, ctx.Repo.Repository.LowerName) + ctx.Redirect("/") + } +} + func Commits(ctx *middleware.Context, params martini.Params) { brs, err := models.GetBranches(params["username"], params["reponame"]) if err != nil { diff --git a/serve.go b/serve.go index 71abf5fdd..f9291366a 100644 --- a/serve.go +++ b/serve.go @@ -272,7 +272,7 @@ func runServ(k *cli.Context) { } if err = models.CommitRepoAction(user.Id, user.Name, - repo.Id, repoName, refname, &models.PushCommits{l.Len(), commits}); err != nil { + repo.Id, repoName, refname, &base.PushCommits{l.Len(), commits}); err != nil { log.Error("runUpdate.models.CommitRepoAction: %v", err, commits) } else { //log.Info("refname", refname) diff --git a/templates/repo/nav.tmpl b/templates/repo/nav.tmpl index 4d939e250..b2d3500f9 100644 --- a/templates/repo/nav.tmpl +++ b/templates/repo/nav.tmpl @@ -3,7 +3,7 @@

{{.Owner.Name}} / {{.Repository.Name}}

-

{{.Repository.Description}}{{if .Repository.Website}}{{.Repository.Website}}{{end}}

+

{{.Repository.Description}}{{if .Repository.Website}} {{.Repository.Website}}{{end}}

{{if not .IsBareRepo}} diff --git a/templates/repo/setting.tmpl b/templates/repo/setting.tmpl index 719547b1a..c826e55a7 100644 --- a/templates/repo/setting.tmpl +++ b/templates/repo/setting.tmpl @@ -12,7 +12,7 @@
- {{if .ErrorMsg}}

{{.ErrorMsg}}

{{end}} + {{if .IsSuccess}}

Repository option has been successfully updated.

{{else if .HasError}}

{{.ErrorMsg}}

{{end}}
Repository Options @@ -22,32 +22,26 @@
{{.CsrfTokenHtml}} -
- -
- -
-
- +
- +
-
+
diff --git a/web.go b/web.go index 7b36ccd9d..9d90851c9 100644 --- a/web.go +++ b/web.go @@ -163,7 +163,7 @@ func runWeb(*cli.Context) { m.Get("/template/**", dev.TemplatePreview) } - // not found handler + // Not found handler. m.NotFound(routers.NotFound) listenAddr := fmt.Sprintf("%s:%s",