77 "bytes"
88 "fmt"
99 "net/http"
10- "net/url"
1110 "strconv"
1211 "strings"
1312
@@ -23,6 +22,7 @@ import (
2322 "code.gitea.io/gitea/modules/log"
2423 "code.gitea.io/gitea/modules/optional"
2524 "code.gitea.io/gitea/modules/setting"
25+ "code.gitea.io/gitea/modules/templates"
2626 "code.gitea.io/gitea/modules/util"
2727 shared_user "code.gitea.io/gitea/routers/web/shared/user"
2828 "code.gitea.io/gitea/services/context"
@@ -531,12 +531,7 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
531531 // 0 means issues with no label
532532 // blank means labels will not be filtered for issues
533533 selectLabels := ctx .FormString ("labels" )
534- if selectLabels == "" {
535- ctx .Data ["AllLabels" ] = true
536- } else if selectLabels == "0" {
537- ctx .Data ["NoLabel" ] = true
538- }
539- if len (selectLabels ) > 0 {
534+ if selectLabels != "" {
540535 labelIDs , err = base .StringsToInt64s (strings .Split (selectLabels , "," ))
541536 if err != nil {
542537 ctx .Flash .Error (ctx .Tr ("invalid_data" , selectLabels ), true )
@@ -616,8 +611,6 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
616611 ctx .Data ["TotalTrackedTime" ] = totalTrackedTime
617612 }
618613
619- archived := ctx .FormBool ("archived" )
620-
621614 page := ctx .FormInt ("page" )
622615 if page <= 1 {
623616 page = 1
@@ -792,21 +785,28 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
792785 return
793786 }
794787
788+ showArchivedLabels := ctx .FormBool ("archived_labels" )
789+ ctx .Data ["ShowArchivedLabels" ] = showArchivedLabels
795790 ctx .Data ["PinnedIssues" ] = pinned
796791 ctx .Data ["IsRepoAdmin" ] = ctx .IsSigned && (ctx .Repo .IsAdmin () || ctx .Doer .IsAdmin )
797792 ctx .Data ["IssueStats" ] = issueStats
798793 ctx .Data ["OpenCount" ] = issueStats .OpenCount
799794 ctx .Data ["ClosedCount" ] = issueStats .ClosedCount
800- linkStr := "%s?q=%s&type=%s&sort=%s&state=%s&labels=%s&milestone=%d&project=%d&assignee=%d&poster=%v&archived=%t"
801- ctx .Data ["AllStatesLink" ] = fmt .Sprintf (linkStr , ctx .Link ,
802- url .QueryEscape (keyword ), url .QueryEscape (viewType ), url .QueryEscape (sortType ), "all" , url .QueryEscape (selectLabels ),
803- milestoneID , projectID , assigneeID , url .QueryEscape (posterUsername ), archived )
804- ctx .Data ["OpenLink" ] = fmt .Sprintf (linkStr , ctx .Link ,
805- url .QueryEscape (keyword ), url .QueryEscape (viewType ), url .QueryEscape (sortType ), "open" , url .QueryEscape (selectLabels ),
806- milestoneID , projectID , assigneeID , url .QueryEscape (posterUsername ), archived )
807- ctx .Data ["ClosedLink" ] = fmt .Sprintf (linkStr , ctx .Link ,
808- url .QueryEscape (keyword ), url .QueryEscape (viewType ), url .QueryEscape (sortType ), "closed" , url .QueryEscape (selectLabels ),
809- milestoneID , projectID , assigneeID , url .QueryEscape (posterUsername ), archived )
795+ linkStrQuery := templates .QueryBuild ("?" ,
796+ "q" , keyword ,
797+ "type" , viewType ,
798+ "sort" , sortType ,
799+ "state" , ctx .FormString ("state" ),
800+ "labels" , selectLabels ,
801+ "milestone" , milestoneID ,
802+ "project" , projectID ,
803+ "assignee" , assigneeID ,
804+ "poster" , posterUsername ,
805+ "archived_labels" , util .Iif (showArchivedLabels , "true" , "" ),
806+ )
807+ ctx .Data ["AllStatesLink" ] = ctx .Link + string (templates .QueryBuild (linkStrQuery , "state" , "all" ))
808+ ctx .Data ["OpenLink" ] = ctx .Link + string (templates .QueryBuild (linkStrQuery , "state" , "open" ))
809+ ctx .Data ["ClosedLink" ] = ctx .Link + string (templates .QueryBuild (linkStrQuery , "state" , "closed" ))
810810 ctx .Data ["SelLabelIDs" ] = labelIDs
811811 ctx .Data ["SelectLabels" ] = selectLabels
812812 ctx .Data ["ViewType" ] = viewType
@@ -825,7 +825,6 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
825825 default :
826826 ctx .Data ["State" ] = "open"
827827 }
828- ctx .Data ["ShowArchivedLabels" ] = archived
829828
830829 pager .AddParamString ("q" , keyword )
831830 pager .AddParamString ("type" , viewType )
@@ -836,8 +835,9 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
836835 pager .AddParamString ("project" , fmt .Sprint (projectID ))
837836 pager .AddParamString ("assignee" , fmt .Sprint (assigneeID ))
838837 pager .AddParamString ("poster" , posterUsername )
839- pager .AddParamString ("archived" , fmt .Sprint (archived ))
840-
838+ if showArchivedLabels {
839+ pager .AddParamString ("archived_labels" , "true" )
840+ }
841841 ctx .Data ["Page" ] = pager
842842}
843843
0 commit comments