Browse Source

Push feed

Unknown 11 years ago
parent
commit
48b2425c1d
2 changed files with 22 additions and 2 deletions
  1. 4 0
      models/action.go
  2. 18 2
      modules/base/tool.go

+ 4 - 0
models/action.go

@@ -44,6 +44,10 @@ func (a Action) GetRepoName() string {
 	return a.RepoName
 }
 
+func (a Action) GetContent() string {
+	return a.Content
+}
+
 // CommitRepoAction records action for commit repository.
 func CommitRepoAction(userId int64, userName string,
 	repoId int64, repoName string, commits [][]string) error {

+ 18 - 2
modules/base/tool.go

@@ -7,6 +7,7 @@ package base
 import (
 	"crypto/md5"
 	"encoding/hex"
+	"encoding/json"
 	"fmt"
 	"math"
 	"strings"
@@ -235,6 +236,7 @@ type Actioner interface {
 	GetOpType() int
 	GetActUserName() string
 	GetRepoName() string
+	GetContent() string
 }
 
 // ActionIcon accepts a int that represents action operation type
@@ -243,13 +245,19 @@ func ActionIcon(opType int) string {
 	switch opType {
 	case 1: // Create repository.
 		return "plus-circle"
+	case 5: // Commit repository.
+		return "arrow-circle-o-right"
 	default:
 		return "invalid type"
 	}
 }
 
 const (
-	CreateRepoTpl = `<a href="/user/%s">%s</a> created repository <a href="/%s/%s">%s</a>`
+	TPL_CREATE_REPO = `<a href="/user/%s">%s</a> created repository <a href="/%s/%s">%s</a>`
+	TPL_COMMIT_REPO = `<a href="/user/%s">%s</a> pushed to <a href="/%s/%s/tree/%s">%s</a> at <a href="/%s/%s">%s/%s</a>
+<ul>
+	<li><a href="/%s/%s/commit/%s">%s</a> %s</li>	
+</ul>`
 )
 
 // ActionDesc accepts int that represents action operation type
@@ -257,9 +265,17 @@ const (
 func ActionDesc(act Actioner) string {
 	actUserName := act.GetActUserName()
 	repoName := act.GetRepoName()
+	content := act.GetContent()
 	switch act.GetOpType() {
 	case 1: // Create repository.
-		return fmt.Sprintf(CreateRepoTpl, actUserName, actUserName, actUserName, repoName, repoName)
+		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 {
+			return err.Error()
+		}
+		return fmt.Sprintf(TPL_COMMIT_REPO, actUserName, actUserName, actUserName, repoName, "master", "master", actUserName, repoName, actUserName, repoName,
+			actUserName, repoName, commits[0][0], commits[0][0][:7], commits[0][1])
 	default:
 		return "invalid type"
 	}