Browse Source

#1821 add actions for close and reopen issues

Unknwon 9 years ago
parent
commit
912f7b51e9

+ 1 - 1
README.md

@@ -3,7 +3,7 @@ Gogs - Go Git Service [![Build Status](https://travis-ci.org/gogits/gogs.svg?bra
 
 ![](https://github.com/gogits/gogs/blob/master/public/img/gogs-large-resize.png?raw=true)
 
-##### Current version: 0.8.41
+##### Current version: 0.8.42
 
 | Web | UI  | Preview  |
 |:-------------:|:-------:|:-------:|

+ 1 - 1
cmd/web.go

@@ -88,7 +88,7 @@ func checkVersion() {
 		{"github.com/go-macaron/toolbox", toolbox.Version, "0.1.0"},
 		{"gopkg.in/ini.v1", ini.Version, "1.8.4"},
 		{"gopkg.in/macaron.v1", macaron.Version, "0.8.0"},
-		{"github.com/gogits/git-module", git.Version, "0.2.5"},
+		{"github.com/gogits/git-module", git.Version, "0.2.6"},
 		{"github.com/gogits/go-gogs-client", gogs.Version, "0.7.3"},
 	}
 	for _, c := range checkers {

+ 2 - 0
conf/locale/locale_en-US.ini

@@ -1040,6 +1040,8 @@ create_repo = created repository <a href="%s">%s</a>
 rename_repo = renamed repository from <code>%[1]s</code> to <a href="%[2]s">%[3]s</a>
 commit_repo = pushed to <a href="%[1]s/src/%[2]s">%[3]s</a> at <a href="%[1]s">%[4]s</a>
 create_issue = `opened issue <a href="%s/issues/%s">%s#%[2]s</a>`
+close_issue = `closed issue <a href="%s/issues/%s">%s#%[2]s</a>`
+reopen_issue = `reopened issue <a href="%s/issues/%s">%s#%[2]s</a>`
 create_pull_request = `created pull request <a href="%s/pulls/%s">%s#%[2]s</a>`
 comment_issue = `commented on issue <a href="%s/issues/%s">%s#%[2]s</a>`
 merge_pull_request = `merged pull request <a href="%s/pulls/%s">%s#%[2]s</a>`

+ 1 - 1
gogs.go

@@ -17,7 +17,7 @@ import (
 	"github.com/gogits/gogs/modules/setting"
 )
 
-const APP_VER = "0.8.41.0221"
+const APP_VER = "0.8.42.0222"
 
 func init() {
 	runtime.GOMAXPROCS(runtime.NumCPU())

+ 21 - 19
models/action.go

@@ -28,17 +28,19 @@ import (
 type ActionType int
 
 const (
-	CREATE_REPO         ActionType = iota + 1 // 1
-	RENAME_REPO                               // 2
-	STAR_REPO                                 // 3
-	FOLLOW_REPO                               // 4
-	COMMIT_REPO                               // 5
-	CREATE_ISSUE                              // 6
-	CREATE_PULL_REQUEST                       // 7
-	TRANSFER_REPO                             // 8
-	PUSH_TAG                                  // 9
-	COMMENT_ISSUE                             // 10
-	MERGE_PULL_REQUEST                        // 11
+	ACTION_CREATE_REPO         ActionType = iota + 1 // 1
+	ACTION_RENAME_REPO                               // 2
+	ACTION_STAR_REPO                                 // 3
+	ACTION_WATCH_REPO                                // 4
+	ACTION_COMMIT_REPO                               // 5
+	ACTION_CREATE_ISSUE                              // 6
+	ACTION_CREATE_PULL_REQUEST                       // 7
+	ACTION_TRANSFER_REPO                             // 8
+	ACTION_PUSH_TAG                                  // 9
+	ACTION_COMMENT_ISSUE                             // 10
+	ACTION_MERGE_PULL_REQUEST                        // 11
+	ACTION_CLOSE_ISSUE                               // 12
+	ACTION_REOPEN_ISSUE                              // 13
 )
 
 var (
@@ -178,7 +180,7 @@ func newRepoAction(e Engine, u *User, repo *Repository) (err error) {
 		ActUserID:    u.Id,
 		ActUserName:  u.Name,
 		ActEmail:     u.Email,
-		OpType:       CREATE_REPO,
+		OpType:       ACTION_CREATE_REPO,
 		RepoID:       repo.ID,
 		RepoUserName: repo.Owner.Name,
 		RepoName:     repo.Name,
@@ -201,7 +203,7 @@ func renameRepoAction(e Engine, actUser *User, oldRepoName string, repo *Reposit
 		ActUserID:    actUser.Id,
 		ActUserName:  actUser.Name,
 		ActEmail:     actUser.Email,
-		OpType:       RENAME_REPO,
+		OpType:       ACTION_RENAME_REPO,
 		RepoID:       repo.ID,
 		RepoUserName: repo.Owner.Name,
 		RepoName:     repo.Name,
@@ -443,10 +445,10 @@ func CommitRepoAction(
 	}
 
 	isNewBranch := false
-	opType := COMMIT_REPO
+	opType := ACTION_COMMIT_REPO
 	// Check it's tag push or branch.
 	if strings.HasPrefix(refFullName, "refs/tags/") {
-		opType = PUSH_TAG
+		opType = ACTION_PUSH_TAG
 		commit = &PushCommits{}
 	} else {
 		// if not the first commit, set the compareUrl
@@ -502,7 +504,7 @@ func CommitRepoAction(
 	}
 
 	switch opType {
-	case COMMIT_REPO: // Push
+	case ACTION_COMMIT_REPO: // Push
 		p := &api.PushPayload{
 			Ref:        refFullName,
 			Before:     oldCommitID,
@@ -530,7 +532,7 @@ func CommitRepoAction(
 			})
 		}
 
-	case PUSH_TAG: // Create
+	case ACTION_PUSH_TAG: // Create
 		return PrepareWebhooks(repo, HOOK_EVENT_CREATE, &api.CreatePayload{
 			Ref:     refName,
 			RefType: "tag",
@@ -547,7 +549,7 @@ func transferRepoAction(e Engine, actUser, oldOwner, newOwner *User, repo *Repos
 		ActUserID:    actUser.Id,
 		ActUserName:  actUser.Name,
 		ActEmail:     actUser.Email,
-		OpType:       TRANSFER_REPO,
+		OpType:       ACTION_TRANSFER_REPO,
 		RepoID:       repo.ID,
 		RepoUserName: newOwner.Name,
 		RepoName:     repo.Name,
@@ -578,7 +580,7 @@ func mergePullRequestAction(e Engine, actUser *User, repo *Repository, pull *Iss
 		ActUserID:    actUser.Id,
 		ActUserName:  actUser.Name,
 		ActEmail:     actUser.Email,
-		OpType:       MERGE_PULL_REQUEST,
+		OpType:       ACTION_MERGE_PULL_REQUEST,
 		Content:      fmt.Sprintf("%d|%s", pull.Index, pull.Name),
 		RepoID:       repo.ID,
 		RepoUserName: repo.Owner.Name,

+ 25 - 17
models/issue.go

@@ -364,7 +364,7 @@ func NewIssue(repo *Repository, issue *Issue, labelIDs []int64, uuids []string)
 		ActUserID:    issue.Poster.Id,
 		ActUserName:  issue.Poster.Name,
 		ActEmail:     issue.Poster.Email,
-		OpType:       CREATE_ISSUE,
+		OpType:       ACTION_CREATE_ISSUE,
 		Content:      fmt.Sprintf("%d|%s", issue.Index, issue.Name),
 		RepoID:       repo.ID,
 		RepoUserName: repo.Owner.Name,
@@ -1564,9 +1564,24 @@ func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, com
 		return nil, err
 	}
 
+	// Compose comment action, could be plain comment, close or reopen issue.
+	// This object will be used to notify watchers in the end of function.
+	act := &Action{
+		ActUserID:    u.Id,
+		ActUserName:  u.Name,
+		ActEmail:     u.Email,
+		Content:      fmt.Sprintf("%d|%s", issue.Index, strings.Split(content, "\n")[0]),
+		RepoID:       repo.ID,
+		RepoUserName: repo.Owner.Name,
+		RepoName:     repo.Name,
+		IsPrivate:    repo.IsPrivate,
+	}
+
 	// Check comment type.
 	switch cmtType {
 	case COMMENT_TYPE_COMMENT:
+		act.OpType = ACTION_COMMENT_ISSUE
+
 		if _, err = e.Exec("UPDATE `issue` SET num_comments=num_comments+1 WHERE id=?", issue.ID); err != nil {
 			return nil, err
 		}
@@ -1593,23 +1608,9 @@ func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, com
 			}
 		}
 
-		// Notify watchers.
-		act := &Action{
-			ActUserID:    u.Id,
-			ActUserName:  u.Name,
-			ActEmail:     u.Email,
-			OpType:       COMMENT_ISSUE,
-			Content:      fmt.Sprintf("%d|%s", issue.Index, strings.Split(content, "\n")[0]),
-			RepoID:       repo.ID,
-			RepoUserName: repo.Owner.Name,
-			RepoName:     repo.Name,
-			IsPrivate:    repo.IsPrivate,
-		}
-		if err = notifyWatchers(e, act); err != nil {
-			return nil, err
-		}
-
 	case COMMENT_TYPE_REOPEN:
+		act.OpType = ACTION_REOPEN_ISSUE
+
 		if issue.IsPull {
 			_, err = e.Exec("UPDATE `repository` SET num_closed_pulls=num_closed_pulls-1 WHERE id=?", repo.ID)
 		} else {
@@ -1619,6 +1620,8 @@ func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, com
 			return nil, err
 		}
 	case COMMENT_TYPE_CLOSE:
+		act.OpType = ACTION_CLOSE_ISSUE
+
 		if issue.IsPull {
 			_, err = e.Exec("UPDATE `repository` SET num_closed_pulls=num_closed_pulls+1 WHERE id=?", repo.ID)
 		} else {
@@ -1629,6 +1632,11 @@ func createComment(e *xorm.Session, u *User, repo *Repository, issue *Issue, com
 		}
 	}
 
+	// Notify watchers for whatever action comes in.
+	if err = notifyWatchers(e, act); err != nil {
+		return nil, fmt.Errorf("notifyWatchers: %v", err)
+	}
+
 	return comment, nil
 }
 

+ 1 - 1
models/pull.go

@@ -330,7 +330,7 @@ func NewPullRequest(repo *Repository, pull *Issue, labelIDs []int64, uuids []str
 		ActUserID:    pull.Poster.Id,
 		ActUserName:  pull.Poster.Name,
 		ActEmail:     pull.Poster.Email,
-		OpType:       CREATE_PULL_REQUEST,
+		OpType:       ACTION_CREATE_PULL_REQUEST,
 		Content:      fmt.Sprintf("%d|%s", pull.Index, pull.Name),
 		RepoID:       repo.ID,
 		RepoUserName: repo.Owner.Name,

File diff suppressed because it is too large
+ 0 - 0
modules/bindata/bindata.go


+ 4 - 2
modules/template/template.go

@@ -229,11 +229,11 @@ type Actioner interface {
 // and returns a icon class name.
 func ActionIcon(opType int) string {
 	switch opType {
-	case 1, 8: // Create, transfer repository
+	case 1, 8: // Create and transfer repository
 		return "repo"
 	case 5, 9: // Commit repository
 		return "git-commit"
-	case 6: // Create issue
+	case 6, 13: // Create and reopen issue
 		return "issue-opened"
 	case 7: // New pull request
 		return "git-pull-request"
@@ -241,6 +241,8 @@ func ActionIcon(opType int) string {
 		return "comment"
 	case 11: // Merge pull request
 		return "git-merge"
+	case 12: // Close issue
+		return "issue-closed"
 	default:
 		return "invalid type"
 	}

+ 1 - 1
routers/repo/issue.go

@@ -918,7 +918,7 @@ func NewComment(ctx *middleware.Context, form auth.CreateCommentForm) {
 				if err = issue.ChangeStatus(ctx.User, form.Status == "close"); err != nil {
 					log.Error(4, "ChangeStatus: %v", err)
 				} else {
-					log.Trace("Issue[%d] status changed to closed: %v", issue.ID, issue.IsClosed)
+					log.Trace("Issue [%d] status changed to closed: %v", issue.ID, issue.IsClosed)
 				}
 			}
 		}

+ 1 - 1
templates/.VERSION

@@ -1 +1 @@
-0.8.41.0221
+0.8.42.0222

+ 8 - 0
templates/user/dashboard/feeds.tmpl

@@ -31,6 +31,12 @@
 						{{else if eq .GetOpType 11}}
 							{{ $index := index .GetIssueInfos 0}}
 							{{$.i18n.Tr "action.merge_pull_request" .GetRepoLink $index .ShortRepoPath | Str2html}}
+						{{else if eq .GetOpType 12}}
+							{{ $index := index .GetIssueInfos 0}}
+							{{$.i18n.Tr "action.close_issue" .GetRepoLink $index .ShortRepoPath | Str2html}}
+						{{else if eq .GetOpType 13}}
+							{{ $index := index .GetIssueInfos 0}}
+							{{$.i18n.Tr "action.reopen_issue" .GetRepoLink $index .ShortRepoPath | Str2html}}
 						{{end}}
 					</p>
 					{{if eq .GetOpType 5}}
@@ -55,6 +61,8 @@
 						<p class="text light grey">{{index .GetIssueInfos 1}}</p>
 					{{else if eq .GetOpType 11}}
 						<p class="text light grey">{{index .GetIssueInfos 1}}</p>
+					{{else if (or (eq .GetOpType 12) (eq .GetOpType 13))}}
+						<span class="text truncate issue title">{{.GetIssueTitle}}</span>
 					{{end}}
 					<p class="text italic light grey">{{TimeSince .GetCreate $.i18n.Lang}}</p>
 				</div>

Some files were not shown because too many files changed in this diff