mirror of
https://github.com/go-gitea/gitea.git
synced 2026-02-04 15:10:22 +02:00
@@ -15,6 +15,7 @@ import (
|
|||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
"code.gitea.io/gitea/models/unit"
|
"code.gitea.io/gitea/models/unit"
|
||||||
"code.gitea.io/gitea/modules/base"
|
"code.gitea.io/gitea/modules/base"
|
||||||
|
"code.gitea.io/gitea/modules/container"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/optional"
|
"code.gitea.io/gitea/modules/optional"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
@@ -128,7 +129,9 @@ func prepareUserNotificationsData(ctx *context.Context) {
|
|||||||
ctx.Data["Notifications"] = notifications
|
ctx.Data["Notifications"] = notifications
|
||||||
ctx.Data["Link"] = setting.AppSubURL + "/notifications"
|
ctx.Data["Link"] = setting.AppSubURL + "/notifications"
|
||||||
ctx.Data["SequenceNumber"] = ctx.FormString("sequence-number")
|
ctx.Data["SequenceNumber"] = ctx.FormString("sequence-number")
|
||||||
|
|
||||||
pager.AddParamFromRequest(ctx.Req)
|
pager.AddParamFromRequest(ctx.Req)
|
||||||
|
pager.RemoveParam(container.SetOf("div-only", "sequence-number"))
|
||||||
ctx.Data["Page"] = pager
|
ctx.Data["Page"] = pager
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,10 @@ import (
|
|||||||
"html/template"
|
"html/template"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/container"
|
||||||
"code.gitea.io/gitea/modules/paginator"
|
"code.gitea.io/gitea/modules/paginator"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -49,6 +51,14 @@ func (p *Pagination) AddParamFromRequest(req *http.Request) {
|
|||||||
p.AddParamFromQuery(req.URL.Query())
|
p.AddParamFromQuery(req.URL.Query())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Pagination) RemoveParam(keys container.Set[string]) {
|
||||||
|
p.urlParams = slices.DeleteFunc(p.urlParams, func(s string) bool {
|
||||||
|
k, _, _ := strings.Cut(s, "=")
|
||||||
|
k, _ = url.QueryUnescape(k)
|
||||||
|
return keys.Contains(k)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// GetParams returns the configured URL params
|
// GetParams returns the configured URL params
|
||||||
func (p *Pagination) GetParams() template.URL {
|
func (p *Pagination) GetParams() template.URL {
|
||||||
return template.URL(strings.Join(p.urlParams, "&"))
|
return template.URL(strings.Join(p.urlParams, "&"))
|
||||||
|
|||||||
35
services/context/pagination_test.go
Normal file
35
services/context/pagination_test.go
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package context
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/url"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/container"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPagination(t *testing.T) {
|
||||||
|
p := NewPagination(1, 1, 1, 1)
|
||||||
|
params := url.Values{}
|
||||||
|
params.Add("k1", "11")
|
||||||
|
params.Add("k1", "12")
|
||||||
|
params.Add("k", "a")
|
||||||
|
params.Add("k", "b")
|
||||||
|
params.Add("k2", "21")
|
||||||
|
params.Add("k2", "22")
|
||||||
|
params.Add("foo", "bar")
|
||||||
|
|
||||||
|
p.AddParamFromQuery(params)
|
||||||
|
v, _ := url.ParseQuery(string(p.GetParams()))
|
||||||
|
assert.Equal(t, params, v)
|
||||||
|
|
||||||
|
p.RemoveParam(container.SetOf("k", "foo"))
|
||||||
|
params.Del("k")
|
||||||
|
params.Del("foo")
|
||||||
|
v, _ = url.ParseQuery(string(p.GetParams()))
|
||||||
|
assert.Equal(t, params, v)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user