Browse Source

Fix action

Unknown 11 years ago
parent
commit
1eb078d0a8
10 changed files with 85 additions and 65 deletions
  1. 4 2
      README.md
  2. 1 1
      README_ZH.md
  3. 6 6
      models/action.go
  4. 13 13
      models/issue.go
  5. 19 4
      modules/base/tool.go
  6. 34 25
      routers/repo/repo.go
  7. 1 1
      serve.go
  8. 1 1
      templates/repo/nav.tmpl
  9. 5 11
      templates/repo/setting.tmpl
  10. 1 1
      web.go

+ 4 - 2
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
 

+ 1 - 1
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 托管服务。

+ 6 - 6
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

+ 13 - 13
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

+ 19 - 4
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 = `<div><img id="gogs-user-avatar-commit" src="%s?s=16" alt="user-avatar" title="username"/> <a href="/%s/%s/commit/%s">%s</a> %s</div>`
 )
 
+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(`<div><a href="/%s/%s/commits">%d other commits >></a></div>`, 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"

+ 34 - 25
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 {

+ 1 - 1
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)

+ 1 - 1
templates/repo/nav.tmpl

@@ -3,7 +3,7 @@
         <div class="row">
             <div class="col-md-7">
                 <h3 class="name"><i class="fa fa-book fa-lg"></i><a href="{{.Owner.HomeLink}}">{{.Owner.Name}}</a> / {{.Repository.Name}}</h3>
-                <p class="desc">{{.Repository.Description}}{{if .Repository.Website}}<a href="{{.Repository.Website}}">{{.Repository.Website}}</a>{{end}}</p>
+                <p class="desc">{{.Repository.Description}}{{if .Repository.Website}} <a href="{{.Repository.Website}}">{{.Repository.Website}}</a>{{end}}</p>
             </div>
             <div class="col-md-5 actions text-right clone-group-btn">
                 {{if not .IsBareRepo}}

+ 5 - 11
templates/repo/setting.tmpl

@@ -12,7 +12,7 @@
     </div>
 
     <div id="gogs-repo-setting-container" class="col-md-9">
-        {{if .ErrorMsg}}<p class="alert alert-danger">{{.ErrorMsg}}</p>{{end}}
+        {{if .IsSuccess}}<p class="alert alert-success">Repository option has been successfully updated.</p>{{else if .HasError}}<p class="alert alert-danger form-error">{{.ErrorMsg}}</p>{{end}}
         <div class="panel panel-default">
             <div class="panel-heading">
                 Repository Options
@@ -22,32 +22,26 @@
                 <form action="/{{.Owner.Name}}/{{.Repository.Name}}/settings" method="post" class="form-horizontal">
                     {{.CsrfTokenHtml}}
                     <input type="hidden" name="action" value="update">
-                    <div class="form-group">
-                        <label class="col-md-3 text-right">Repository Name <strong class="text-danger">*</strong></label>
-                        <div class="col-md-9">
-                            <input type="text" class="form-control" name="repo-name" required="required" value="{{.Repository.Name}}"/>
-                        </div>
-                    </div>
                     <div class="form-group">
                         <label class="col-md-3 text-right">Description</label>
                         <div class="col-md-9">
-                            <textarea class="form-control" name="desc" id="repo-desc" rows="6"></textarea>
+                            <textarea class="form-control" name="desc" id="repo-desc" rows="3">{{.Repository.Description}}</textarea>
                         </div>
                     </div>
                     <div class="form-group">
                         <label class="col-md-3 text-right">Official Site</label>
                         <div class="col-md-9">
-                            <input type="url" class="form-control" name="repo-site"/>
+                            <input type="url" class="form-control" name="site" value="{{.Repository.Website}}" />
                         </div>
                     </div>
-                    <div class="form-group">
+                    <!-- <div class="form-group">
                         <label class="col-md-3 text-right">Default Branch</label>
                         <div class="col-md-9">
                             <select name="branch" id="repo-default-branch" class="form-control">
                                 <option value="">Branch</option>
                             </select>
                         </div>
-                    </div>
+                    </div> -->
                     <div class="form-group">
                         <div class="col-md-9 col-md-offset-3">
                             <button class="btn btn-primary" type="submit">Save Options</button>

+ 1 - 1
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",