]> source.dussan.org Git - gitea.git/commitdiff
Issue and pull request filters on organization dashboard #14052 (#14072)
authorJimmy Praet <jimmy.praet@telenet.be>
Sun, 3 Jan 2021 17:29:12 +0000 (18:29 +0100)
committerGitHub <noreply@github.com>
Sun, 3 Jan 2021 17:29:12 +0000 (18:29 +0100)
routers/user/home.go
templates/user/dashboard/issues.tmpl

index 351af1c0d99cdd13f536c7073cef65cd66de4c46..952f5cdb3a34cef1c007b7b03bb9f68468a2962a 100644 (file)
@@ -364,21 +364,17 @@ func Issues(ctx *context.Context) {
                filterMode = models.FilterModeAll
        )
 
-       if ctxUser.IsOrganization() {
+       viewType = ctx.Query("type")
+       switch viewType {
+       case "assigned":
+               filterMode = models.FilterModeAssign
+       case "created_by":
+               filterMode = models.FilterModeCreate
+       case "mentioned":
+               filterMode = models.FilterModeMention
+       case "your_repositories": // filterMode already set to All
+       default:
                viewType = "your_repositories"
-       } else {
-               viewType = ctx.Query("type")
-               switch viewType {
-               case "assigned":
-                       filterMode = models.FilterModeAssign
-               case "created_by":
-                       filterMode = models.FilterModeCreate
-               case "mentioned":
-                       filterMode = models.FilterModeMention
-               case "your_repositories": // filterMode already set to All
-               default:
-                       viewType = "your_repositories"
-               }
        }
 
        page := ctx.QueryInt("page")
@@ -453,11 +449,15 @@ func Issues(ctx *context.Context) {
        case models.FilterModeAll:
                opts.RepoIDs = userRepoIDs
        case models.FilterModeAssign:
-               opts.AssigneeID = ctxUser.ID
+               opts.AssigneeID = ctx.User.ID
        case models.FilterModeCreate:
-               opts.PosterID = ctxUser.ID
+               opts.PosterID = ctx.User.ID
        case models.FilterModeMention:
-               opts.MentionedID = ctxUser.ID
+               opts.MentionedID = ctx.User.ID
+       }
+
+       if ctxUser.IsOrganization() {
+               opts.RepoIDs = userRepoIDs
        }
 
        var forceEmpty bool
@@ -575,7 +575,7 @@ func Issues(ctx *context.Context) {
        }
 
        userIssueStatsOpts := models.UserIssueStatsOptions{
-               UserID:      ctxUser.ID,
+               UserID:      ctx.User.ID,
                UserRepoIDs: userRepoIDs,
                FilterMode:  filterMode,
                IsPull:      isPullList,
@@ -585,6 +585,9 @@ func Issues(ctx *context.Context) {
        if len(repoIDs) > 0 {
                userIssueStatsOpts.UserRepoIDs = repoIDs
        }
+       if ctxUser.IsOrganization() {
+               userIssueStatsOpts.RepoIDs = userRepoIDs
+       }
        userIssueStats, err := models.GetUserIssueStats(userIssueStatsOpts)
        if err != nil {
                ctx.ServerError("GetUserIssueStats User", err)
@@ -594,7 +597,7 @@ func Issues(ctx *context.Context) {
        var shownIssueStats *models.IssueStats
        if !forceEmpty {
                statsOpts := models.UserIssueStatsOptions{
-                       UserID:      ctxUser.ID,
+                       UserID:      ctx.User.ID,
                        UserRepoIDs: userRepoIDs,
                        FilterMode:  filterMode,
                        IsPull:      isPullList,
@@ -604,6 +607,8 @@ func Issues(ctx *context.Context) {
                }
                if len(repoIDs) > 0 {
                        statsOpts.RepoIDs = repoIDs
+               } else if ctxUser.IsOrganization() {
+                       statsOpts.RepoIDs = userRepoIDs
                }
                shownIssueStats, err = models.GetUserIssueStats(statsOpts)
                if err != nil {
@@ -616,15 +621,19 @@ func Issues(ctx *context.Context) {
 
        var allIssueStats *models.IssueStats
        if !forceEmpty {
-               allIssueStats, err = models.GetUserIssueStats(models.UserIssueStatsOptions{
-                       UserID:      ctxUser.ID,
+               allIssueStatsOpts := models.UserIssueStatsOptions{
+                       UserID:      ctx.User.ID,
                        UserRepoIDs: userRepoIDs,
                        FilterMode:  filterMode,
                        IsPull:      isPullList,
                        IsClosed:    isShowClosed,
                        IssueIDs:    issueIDsFromSearch,
                        LabelIDs:    opts.LabelIDs,
-               })
+               }
+               if ctxUser.IsOrganization() {
+                       allIssueStatsOpts.RepoIDs = userRepoIDs
+               }
+               allIssueStats, err = models.GetUserIssueStats(allIssueStatsOpts)
                if err != nil {
                        ctx.ServerError("GetUserIssueStats All", err)
                        return
index b8625ec2c1543ccf0994e26db766d33d7f714899..62428dce423023efbcd83307357c851e995425ac 100644 (file)
@@ -9,20 +9,18 @@
                                                {{.i18n.Tr "home.issues.in_your_repos"}}
                                                <strong class="ui right">{{CountFmt .IssueStats.YourRepositoriesCount}}</strong>
                                        </a>
-                                       {{if not .ContextUser.IsOrganization}}
-                                               <a class="{{if eq .ViewType "assigned"}}ui basic blue button{{end}} item" href="{{.Link}}?type=assigned&repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state={{.State}}">
-                                                       {{.i18n.Tr "repo.issues.filter_type.assigned_to_you"}}
-                                                       <strong class="ui right">{{CountFmt .IssueStats.AssignCount}}</strong>
-                                               </a>
-                                               <a class="{{if eq .ViewType "created_by"}}ui basic blue button{{end}} item" href="{{.Link}}?type=created_by&repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state={{.State}}">
-                                                       {{.i18n.Tr "repo.issues.filter_type.created_by_you"}}
-                                                       <strong class="ui right">{{CountFmt .IssueStats.CreateCount}}</strong>
-                                               </a>
-                                               <a class="{{if eq .ViewType "mentioned"}}ui basic blue button{{end}} item" href="{{.Link}}?type=mentioned&repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state={{.State}}">
-                                                       {{.i18n.Tr "repo.issues.filter_type.mentioning_you"}}
-                                                       <strong class="ui right">{{CountFmt .IssueStats.MentionCount}}</strong>
-                                               </a>
-                                       {{end}}
+                                       <a class="{{if eq .ViewType "assigned"}}ui basic blue button{{end}} item" href="{{.Link}}?type=assigned&repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state={{.State}}">
+                                               {{.i18n.Tr "repo.issues.filter_type.assigned_to_you"}}
+                                               <strong class="ui right">{{CountFmt .IssueStats.AssignCount}}</strong>
+                                       </a>
+                                       <a class="{{if eq .ViewType "created_by"}}ui basic blue button{{end}} item" href="{{.Link}}?type=created_by&repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state={{.State}}">
+                                               {{.i18n.Tr "repo.issues.filter_type.created_by_you"}}
+                                               <strong class="ui right">{{CountFmt .IssueStats.CreateCount}}</strong>
+                                       </a>
+                                       <a class="{{if eq .ViewType "mentioned"}}ui basic blue button{{end}} item" href="{{.Link}}?type=mentioned&repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state={{.State}}">
+                                               {{.i18n.Tr "repo.issues.filter_type.mentioning_you"}}
+                                               <strong class="ui right">{{CountFmt .IssueStats.MentionCount}}</strong>
+                                       </a>
                                        <div class="ui divider"></div>
                                        <a class="{{if not $.RepoIDs}}ui basic blue button{{end}} repo name item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&q={{$.Keyword}}">
                                                <span class="text truncate">All</span>