mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Show collaborative repositories in dashboard
This commit is contained in:
		@@ -721,7 +721,7 @@ func GetRepositoryById(id int64) (*Repository, error) {
 | 
				
			|||||||
	return repo, nil
 | 
						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) {
 | 
					func GetRepositories(user *User, private bool) ([]*Repository, error) {
 | 
				
			||||||
	repos := make([]*Repository, 0, 10)
 | 
						repos := make([]*Repository, 0, 10)
 | 
				
			||||||
	sess := orm.Desc("updated")
 | 
						sess := orm.Desc("updated")
 | 
				
			||||||
@@ -758,6 +758,36 @@ func GetCollaboratorNames(repoName string) ([]string, error) {
 | 
				
			|||||||
	return names, nil
 | 
						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.
 | 
					// GetCollaborators returns a list of users of repository's collaborators.
 | 
				
			||||||
func GetCollaborators(repoName string) (us []*User, err error) {
 | 
					func GetCollaborators(repoName string) (us []*User, err error) {
 | 
				
			||||||
	accesses := make([]*Access, 0, 10)
 | 
						accesses := make([]*Access, 0, 10)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,14 +22,21 @@ func Dashboard(ctx *middleware.Context) {
 | 
				
			|||||||
	ctx.Data["PageIsUserDashboard"] = true
 | 
						ctx.Data["PageIsUserDashboard"] = true
 | 
				
			||||||
	repos, err := models.GetRepositories(&models.User{Id: ctx.User.Id}, true)
 | 
						repos, err := models.GetRepositories(&models.User{Id: ctx.User.Id}, true)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.Handle(500, "user.Dashboard", err)
 | 
							ctx.Handle(500, "home.Dashboard(GetRepositories)", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ctx.Data["MyRepos"] = repos
 | 
						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)
 | 
						actions, err := models.GetFeeds(ctx.User.Id, 0, false)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		ctx.Handle(500, "user.Dashboard", err)
 | 
							ctx.Handle(500, "home.Dashboard", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,6 +40,7 @@
 | 
				
			|||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
            <div class="panel-body">
 | 
					            <div class="panel-body">
 | 
				
			||||||
                <ul class="list-group">{{range .MyRepos}}
 | 
					                <ul class="list-group">{{range .MyRepos}}
 | 
				
			||||||
                    <li class="list-group-item"><a href="/{{$.SignedUserName}}/{{.Name}}">
 | 
					                    <li class="list-group-item"><a href="/{{$.SignedUserName}}/{{.Name}}">
 | 
				
			||||||
@@ -49,6 +50,18 @@
 | 
				
			|||||||
                </ul>
 | 
					                </ul>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </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>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
{{template "base/footer" .}}
 | 
					{{template "base/footer" .}}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user