Add CurrentURL template variable back (#37444) (#37449)

Backport #37444
This commit is contained in:
wxiaoguang
2026-04-27 21:05:24 +08:00
committed by GitHub
parent cff6eb5661
commit fb3c1b031d
2 changed files with 17 additions and 0 deletions

View File

@@ -165,6 +165,7 @@ func Contexter() func(next http.Handler) http.Handler {
base := NewBaseContext(resp, req)
ctx := NewWebContext(base, rnd, session.GetContextSession(req))
ctx.Data.MergeFrom(middleware.CommonTemplateContextData())
ctx.Data["CurrentURL"] = setting.AppSubURL + req.URL.RequestURI()
ctx.Data["Link"] = ctx.Link
// PageData is passed by reference, and it will be rendered to `window.config.pageData` in `head.tmpl` for JavaScript modules

View File

@@ -7,6 +7,10 @@ import (
"net/http"
"testing"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/test"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/tests"
"github.com/stretchr/testify/assert"
@@ -65,3 +69,15 @@ func TestCommitListActions(t *testing.T) {
AssertHTMLElement(t, htmlDoc, `.commit-list .view-commit-path`, true)
})
}
func TestViewPageCurrentURL(t *testing.T) {
defer test.MockVariableValue(&setting.AppSubURL, "/subpath")()
var currentURL string
web.RouteMock(web.MockAfterMiddlewares, func(ctx *context.Context) {
// Some custom template users need this template variable to construct links in their templates
currentURL, _ = ctx.Data["CurrentURL"].(string)
})
defer web.RouteMockReset()
MakeRequest(t, NewRequest(t, "GET", "/any-page?k=v"), http.StatusNotFound)
assert.Equal(t, "/subpath/any-page?k=v", currentURL)
}