diff options
author | Unknown <joe2010xtmf@163.com> | 2014-05-12 15:14:22 -0400 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-05-12 15:14:22 -0400 |
commit | a913aff1d06d638ed2b54d2beaba00e88056e25f (patch) | |
tree | b25fbff864fcaa863c5d54b54e52cd8b592d8da9 | |
parent | 54e95fa367d8f9394522ce1fa6905a38974cbd23 (diff) | |
download | gitea-a913aff1d06d638ed2b54d2beaba00e88056e25f.tar.gz gitea-a913aff1d06d638ed2b54d2beaba00e88056e25f.zip |
Show collaborative repositories in dashboard
-rw-r--r-- | models/repo.go | 32 | ||||
-rw-r--r-- | routers/user/home.go | 11 | ||||
-rw-r--r-- | templates/user/dashboard.tmpl | 13 |
3 files changed, 53 insertions, 3 deletions
diff --git a/models/repo.go b/models/repo.go index 569c9571b7..6e27a0cc12 100644 --- a/models/repo.go +++ b/models/repo.go @@ -721,7 +721,7 @@ func GetRepositoryById(id int64) (*Repository, error) { return repo, nil } -// GetRepositories returns the list of repositories of given user. +// GetRepositories returns a list of repositories of given user. func GetRepositories(user *User, private bool) ([]*Repository, error) { repos := make([]*Repository, 0, 10) sess := orm.Desc("updated") @@ -758,6 +758,36 @@ func GetCollaboratorNames(repoName string) ([]string, error) { return names, nil } +// GetCollaborativeRepos returns a list of repositories that user is collaborator. +func GetCollaborativeRepos(uname string) ([]*Repository, error) { + uname = strings.ToLower(uname) + accesses := make([]*Access, 0, 10) + if err := orm.Find(&accesses, &Access{UserName: uname}); err != nil { + return nil, err + } + + repos := make([]*Repository, 0, 10) + for _, access := range accesses { + if strings.HasPrefix(access.RepoName, uname) { + continue + } + + infos := strings.Split(access.RepoName, "/") + u, err := GetUserByName(infos[0]) + if err != nil { + return nil, err + } + + repo, err := GetRepositoryByName(u.Id, infos[1]) + if err != nil { + return nil, err + } + repo.Owner = u + repos = append(repos, repo) + } + return repos, nil +} + // GetCollaborators returns a list of users of repository's collaborators. func GetCollaborators(repoName string) (us []*User, err error) { accesses := make([]*Access, 0, 10) diff --git a/routers/user/home.go b/routers/user/home.go index f5130f47a8..0a805903ec 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -22,14 +22,21 @@ func Dashboard(ctx *middleware.Context) { ctx.Data["PageIsUserDashboard"] = true repos, err := models.GetRepositories(&models.User{Id: ctx.User.Id}, true) if err != nil { - ctx.Handle(500, "user.Dashboard", err) + ctx.Handle(500, "home.Dashboard(GetRepositories)", err) return } ctx.Data["MyRepos"] = repos + collaRepos, err := models.GetCollaborativeRepos(ctx.User.Name) + if err != nil { + ctx.Handle(500, "home.Dashboard(GetCollaborativeRepos)", err) + return + } + ctx.Data["CollaborativeRepos"] = collaRepos + actions, err := models.GetFeeds(ctx.User.Id, 0, false) if err != nil { - ctx.Handle(500, "user.Dashboard", err) + ctx.Handle(500, "home.Dashboard", err) return } diff --git a/templates/user/dashboard.tmpl b/templates/user/dashboard.tmpl index 9781b8db1e..5cda6722f0 100644 --- a/templates/user/dashboard.tmpl +++ b/templates/user/dashboard.tmpl @@ -40,6 +40,7 @@ </div> </div> </div> + <div class="panel-body"> <ul class="list-group">{{range .MyRepos}} <li class="list-group-item"><a href="/{{$.SignedUserName}}/{{.Name}}"> @@ -49,6 +50,18 @@ </ul> </div> </div> + + <div class="panel panel-default repo-panel"> + <div class="panel-heading">Collaborative Repositories</div> + <div class="panel-body"> + <ul class="list-group">{{range .CollaborativeRepos}} + <li class="list-group-item"><a href="/{{.Owner.Name}}/{{.Name}}"> + <!-- <span class="stars pull-right"><i class="fa fa-star"></i>{{.NumStars}}</span> --> + <i class="fa fa-book"></i>{{.Name}}{{if .IsPrivate}} <span class="label label-default">Private</span>{{end}}</a> + </li>{{end}} + </ul> + </div> + </div> </div> </div> {{template "base/footer" .}} |