loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: set explore pages to configurable default sort (#6708)

- Currently, the explore/organizations page always defaults to using "newest" as its sort. Instead, use the pre-existing config option (`setting.UI.ExploreDefaultSort`) so server administrators can change the default sort order.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6708
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: John Moon <john.moon@vts-i.com>
Co-committed-by: John Moon <john.moon@vts-i.com>

authored by

John Moon
John Moon
and committed by
Gusted
4ef00fe6 226994a6

+65 -3
+5 -1
routers/web/explore/org.go
··· 39 39 ) 40 40 sortOrder := ctx.FormString("sort") 41 41 if sortOrder == "" { 42 - sortOrder = "newest" 42 + if supportedSortOrders.Contains(setting.UI.ExploreDefaultSort) { 43 + sortOrder = setting.UI.ExploreDefaultSort 44 + } else { 45 + sortOrder = "newest" 46 + } 43 47 ctx.SetFormString("sort", sortOrder) 44 48 } 45 49
+5 -1
routers/web/explore/user.go
··· 151 151 ) 152 152 sortOrder := ctx.FormString("sort") 153 153 if sortOrder == "" { 154 - sortOrder = "newest" 154 + if supportedSortOrders.Contains(setting.UI.ExploreDefaultSort) { 155 + sortOrder = setting.UI.ExploreDefaultSort 156 + } else { 157 + sortOrder = "newest" 158 + } 155 159 ctx.SetFormString("sort", sortOrder) 156 160 } 157 161
+49
tests/integration/explore_org_test.go
··· 1 + // Copyright 2024 The Gitea Authors. All rights reserved. 2 + // SPDX-License-Identifier: MIT 3 + 4 + package integration 5 + 6 + import ( 7 + "net/http" 8 + "testing" 9 + 10 + "code.gitea.io/gitea/modules/setting" 11 + "code.gitea.io/gitea/modules/test" 12 + "code.gitea.io/gitea/tests" 13 + 14 + "github.com/stretchr/testify/assert" 15 + ) 16 + 17 + func TestExploreOrg(t *testing.T) { 18 + defer tests.PrepareTestEnv(t)() 19 + 20 + // Set the default sort order 21 + defer test.MockVariableValue(&setting.UI.ExploreDefaultSort, "alphabetically")() 22 + 23 + cases := []struct{ sortOrder, expected string }{ 24 + {"", "?sort=" + setting.UI.ExploreDefaultSort + "&q="}, 25 + {"newest", "?sort=newest&q="}, 26 + {"oldest", "?sort=oldest&q="}, 27 + {"alphabetically", "?sort=alphabetically&q="}, 28 + {"reversealphabetically", "?sort=reversealphabetically&q="}, 29 + } 30 + for _, c := range cases { 31 + req := NewRequest(t, "GET", "/explore/organizations?sort="+c.sortOrder) 32 + resp := MakeRequest(t, req, http.StatusOK) 33 + h := NewHTMLParser(t, resp.Body) 34 + href, _ := h.Find(`.ui.dropdown .menu a.active.item[href^="?sort="]`).Attr("href") 35 + assert.Equal(t, c.expected, href) 36 + } 37 + 38 + // these sort orders shouldn't be supported, to avoid leaking user activity 39 + cases404 := []string{ 40 + "/explore/organizations?sort=mostMembers", 41 + "/explore/organizations?sort=leastGroups", 42 + "/explore/organizations?sort=leastupdate", 43 + "/explore/organizations?sort=reverseleastupdate", 44 + } 45 + for _, c := range cases404 { 46 + req := NewRequest(t, "GET", c).SetHeader("Accept", "text/html") 47 + MakeRequest(t, req, http.StatusNotFound) 48 + } 49 + }
+6 -1
tests/integration/explore_user_test.go
··· 7 7 "net/http" 8 8 "testing" 9 9 10 + "code.gitea.io/gitea/modules/setting" 11 + "code.gitea.io/gitea/modules/test" 10 12 "code.gitea.io/gitea/tests" 11 13 12 14 "github.com/stretchr/testify/assert" ··· 15 17 func TestExploreUser(t *testing.T) { 16 18 defer tests.PrepareTestEnv(t)() 17 19 20 + // Set the default sort order 21 + defer test.MockVariableValue(&setting.UI.ExploreDefaultSort, "reversealphabetically")() 22 + 18 23 cases := []struct{ sortOrder, expected string }{ 19 - {"", "?sort=newest&q="}, 24 + {"", "?sort=" + setting.UI.ExploreDefaultSort + "&q="}, 20 25 {"newest", "?sort=newest&q="}, 21 26 {"oldest", "?sort=oldest&q="}, 22 27 {"alphabetically", "?sort=alphabetically&q="},