add group-scoped dashboard pages for issues, pull requests and milestones

pull/35295/head
☙◦ The Tablet ❀ GamerGirlandCo ◦❧ 2025-08-16 16:44:32 +07:00
parent c1324ba5aa
commit a0086914ab
No known key found for this signature in database
GPG Key ID: 924A5F6AF051E87C
2 changed files with 12 additions and 1 deletions

@ -110,7 +110,7 @@ func Dashboard(ctx *context.Context) {
}
if setting.Service.EnableUserHeatmap {
data, err := activities_model.GetUserHeatmapDataByUserTeam(ctx, ctxUser, ctx.Org.Team, ctx.Doer)
data, err := activities_model.GetUserHeatmapDataByUserTeam(ctx, ctxUser, ctx.Org.Team, ctx.RepoGroup.Group, ctx.Doer)
if err != nil {
ctx.ServerError("GetUserHeatmapDataByUserTeam", err)
return
@ -122,6 +122,7 @@ func Dashboard(ctx *context.Context) {
feeds, count, err := feed_service.GetFeedsForDashboard(ctx, activities_model.GetFeedsOptions{
RequestedUser: ctxUser,
RequestedTeam: ctx.Org.Team,
RequestedGroup: ctx.RepoGroup.Group,
Actor: ctx.Doer,
IncludePrivate: true,
OnlyPerformedBy: false,
@ -170,6 +171,9 @@ func Milestones(ctx *context.Context) {
Archived: optional.Some(false),
HasMilestones: optional.Some(true), // Just needs display repos has milestones
}
if ctx.RepoGroup.Group != nil {
repoOpts.GroupID = ctx.RepoGroup.Group.ID
}
if ctxUser.IsOrganization() && ctx.Org.Team != nil {
repoOpts.TeamID = ctx.Org.Team.ID
@ -474,6 +478,9 @@ func buildIssueOverview(ctx *context.Context, unitType unit.Type) {
if opts.Team != nil {
repoOpts.TeamID = opts.Team.ID
}
if ctx.RepoGroup.Group != nil {
repoOpts.GroupID = ctx.RepoGroup.Group.ID
}
accessibleRepos := container.Set[int64]{}
{
ids, _, err := repo_model.SearchRepositoryIDs(ctx, repoOpts)

@ -893,12 +893,16 @@ func registerWebRoutes(m *web.Router) {
m.Group("/{org}", func() {
m.Get("/dashboard", user.Dashboard)
m.Get("/dashboard/{team}", user.Dashboard)
m.Get("/dashboard/group/{group_id}", ctxDataSet("PageIsGroupDashboard", true), context.GroupAssignment(context.GroupAssignmentOptions{RequireMember: true}), user.Dashboard)
m.Get("/issues", user.Issues)
m.Get("/issues/{team}", user.Issues)
m.Get("/issues/group/{group_id}", context.GroupAssignment(context.GroupAssignmentOptions{RequireMember: true}), user.Issues)
m.Get("/pulls", user.Pulls)
m.Get("/pulls/{team}", user.Pulls)
m.Get("/pulls/group/{group_id}", context.GroupAssignment(context.GroupAssignmentOptions{RequireMember: true}), user.Pulls)
m.Get("/milestones", reqMilestonesDashboardPageEnabled, user.Milestones)
m.Get("/milestones/{team}", reqMilestonesDashboardPageEnabled, user.Milestones)
m.Get("/milestones/group/{group_id}", reqMilestonesDashboardPageEnabled, user.Milestones)
m.Post("/members/action/{action}", org.MembersAction)
m.Get("/teams", org.Teams)