mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-30 06:38:37 -04: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