Add label/author/assignee filters to the user/org home issue list (#32779)
Some checks failed
release-nightly / nightly-binary (push) Waiting to run
release-nightly / nightly-docker-rootful (push) Failing after 5m28s
release-nightly / nightly-docker-rootless (push) Failing after 5m29s
cron-translations / crowdin-pull (push) Has been skipped

Replace #26661, fix #25979

Not perfect, but usable and much better than before. Since it is quite
complex, I am not quite sure whether there would be any regression, if
any, I will fix in first time.

I have tested the related pages many times: issue list, milestone issue
list, project view, user issue list, org issue list.
This commit is contained in:
wxiaoguang
2024-12-11 14:33:24 +08:00
committed by GitHub
parent 734ddf7118
commit e619384098
27 changed files with 338 additions and 319 deletions

View File

@ -6,6 +6,7 @@ package context
import (
"fmt"
"html/template"
"net/http"
"net/url"
"strings"
@ -32,6 +33,18 @@ func (p *Pagination) AddParamString(key, value string) {
p.urlParams = append(p.urlParams, urlParam)
}
func (p *Pagination) AddParamFromRequest(req *http.Request) {
for key, values := range req.URL.Query() {
if key == "page" || len(values) == 0 {
continue
}
for _, value := range values {
urlParam := fmt.Sprintf("%s=%v", key, url.QueryEscape(value))
p.urlParams = append(p.urlParams, urlParam)
}
}
}
// GetParams returns the configured URL params
func (p *Pagination) GetParams() template.URL {
return template.URL(strings.Join(p.urlParams, "&"))