mirror of
https://github.com/go-gitea/gitea
synced 2025-07-23 18:58:38 +00:00
Add the ability to use multiple labels as filters(#5786)
This commit is contained in:
committed by
techknowlogick
parent
6a949af8ca
commit
075649572d
@@ -112,8 +112,15 @@ func issues(ctx *context.Context, milestoneID int64, isPullOption util.OptionalB
|
||||
}
|
||||
|
||||
repo := ctx.Repo.Repository
|
||||
var labelIDs []int64
|
||||
selectLabels := ctx.Query("labels")
|
||||
|
||||
if len(selectLabels) > 0 && selectLabels != "0" {
|
||||
labelIDs, err = base.StringsToInt64s(strings.Split(selectLabels, ","))
|
||||
if err != nil {
|
||||
ctx.ServerError("StringsToInt64s", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
isShowClosed := ctx.Query("state") == "closed"
|
||||
|
||||
keyword := strings.Trim(ctx.Query("q"), " ")
|
||||
@@ -176,7 +183,7 @@ func issues(ctx *context.Context, milestoneID int64, isPullOption util.OptionalB
|
||||
PageSize: setting.UI.IssuePagingNum,
|
||||
IsClosed: util.OptionalBoolOf(isShowClosed),
|
||||
IsPull: isPullOption,
|
||||
Labels: selectLabels,
|
||||
LabelIDs: labelIDs,
|
||||
SortType: sortType,
|
||||
IssueIDs: issueIDs,
|
||||
})
|
||||
@@ -210,7 +217,11 @@ func issues(ctx *context.Context, milestoneID int64, isPullOption util.OptionalB
|
||||
ctx.ServerError("GetLabelsByRepoID", err)
|
||||
return
|
||||
}
|
||||
for _, l := range labels {
|
||||
l.LoadSelectedLabelsAfterClick(labelIDs)
|
||||
}
|
||||
ctx.Data["Labels"] = labels
|
||||
ctx.Data["NumLabels"] = len(labels)
|
||||
|
||||
if ctx.QueryInt64("assignee") == 0 {
|
||||
assigneeID = 0 // Reset ID to prevent unexpected selection of assignee.
|
||||
|
@@ -656,7 +656,7 @@ func RegisterRoutes(m *macaron.Macaron) {
|
||||
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Group("", func() {
|
||||
m.Get("/^:type(issues|pulls)$", repo.RetrieveLabels, repo.Issues)
|
||||
m.Get("/^:type(issues|pulls)$", repo.Issues)
|
||||
m.Get("/^:type(issues|pulls)$/:index", repo.ViewIssue)
|
||||
m.Get("/labels/", reqRepoIssuesOrPullsReader, repo.RetrieveLabels, repo.Labels)
|
||||
m.Get("/milestones", reqRepoIssuesOrPullsReader, repo.Milestones)
|
||||
|
@@ -8,6 +8,7 @@ import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
"code.gitea.io/gitea/modules/base"
|
||||
@@ -256,7 +257,16 @@ func Issues(ctx *context.Context) {
|
||||
|
||||
opts.Page = page
|
||||
opts.PageSize = setting.UI.IssuePagingNum
|
||||
opts.Labels = ctx.Query("labels")
|
||||
var labelIDs []int64
|
||||
selectLabels := ctx.Query("labels")
|
||||
if len(selectLabels) > 0 && selectLabels != "0" {
|
||||
labelIDs, err = base.StringsToInt64s(strings.Split(selectLabels, ","))
|
||||
if err != nil {
|
||||
ctx.ServerError("StringsToInt64s", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
opts.LabelIDs = labelIDs
|
||||
|
||||
issues, err := models.Issues(opts)
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user