Follow #29834 Remove AddParamIfExist, use "AddParamString" instead, it should clearly know what is being added into the parameters.tags/v1.22.0-rc0
@@ -4,6 +4,7 @@ | |||
package admin | |||
import ( | |||
"fmt" | |||
"net/http" | |||
"net/url" | |||
"strings" | |||
@@ -84,7 +85,7 @@ func UnadoptedRepos(ctx *context.Context) { | |||
if !doSearch { | |||
pager := context.NewPagination(0, opts.PageSize, opts.Page, 5) | |||
pager.SetDefaultParams(ctx) | |||
pager.AddParamIfExist("search", ctx.Data["search"]) | |||
pager.AddParamString("search", fmt.Sprint(doSearch)) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplUnadoptedRepos) | |||
return | |||
@@ -98,7 +99,7 @@ func UnadoptedRepos(ctx *context.Context) { | |||
ctx.Data["Dirs"] = repoNames | |||
pager := context.NewPagination(count, opts.PageSize, opts.Page, 5) | |||
pager.SetDefaultParams(ctx) | |||
pager.AddParamIfExist("search", ctx.Data["search"]) | |||
pager.AddParamString("search", fmt.Sprint(doSearch)) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplUnadoptedRepos) | |||
} |
@@ -137,7 +137,7 @@ func Code(ctx *context.Context) { | |||
pager := context.NewPagination(total, setting.UI.RepoSearchPagingNum, page, 5) | |||
pager.SetDefaultParams(ctx) | |||
pager.AddParamIfExist("l", ctx.Data["Language"]) | |||
pager.AddParamString("l", language) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplExploreCode) |
@@ -169,8 +169,8 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { | |||
pager := context.NewPagination(int(count), opts.PageSize, page, 5) | |||
pager.SetDefaultParams(ctx) | |||
pager.AddParamIfExist("topic", ctx.Data["TopicOnly"]) | |||
pager.AddParamIfExist("language", ctx.Data["Language"]) | |||
pager.AddParamString("topic", fmt.Sprint(topicOnly)) | |||
pager.AddParamString("language", language) | |||
pager.AddParamString(relevantReposOnlyParam, fmt.Sprint(opts.OnlyShowRelevant)) | |||
ctx.Data["Page"] = pager | |||
@@ -154,7 +154,7 @@ func Home(ctx *context.Context) { | |||
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5) | |||
pager.SetDefaultParams(ctx) | |||
pager.AddParamIfExist("language", ctx.Data["Language"]) | |||
pager.AddParamString("language", language) | |||
ctx.Data["Page"] = pager | |||
ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0 |
@@ -120,7 +120,7 @@ func Projects(ctx *context.Context) { | |||
} | |||
pager := context.NewPagination(int(total), setting.UI.IssuePagingNum, page, numPages) | |||
pager.AddParamIfExist("state", ctx.Data["State"]) | |||
pager.AddParamString("state", fmt.Sprint(ctx.Data["State"])) | |||
ctx.Data["Page"] = pager | |||
ctx.Data["CanWriteProjects"] = canWriteProjects(ctx) |
@@ -163,8 +163,8 @@ func Graph(ctx *context.Context) { | |||
ctx.Data["CommitCount"] = commitsCount | |||
paginator := context.NewPagination(int(graphCommitsCount), setting.UI.GraphMaxCommitNum, page, 5) | |||
paginator.AddParamIfExist("mode", ctx.Data["Mode"]) | |||
paginator.AddParamIfExist("hide-pr-refs", ctx.Data["HidePRRefs"]) | |||
paginator.AddParamString("mode", mode) | |||
paginator.AddParamString("hide-pr-refs", fmt.Sprint(hidePRRefs)) | |||
for _, branch := range branches { | |||
paginator.AddParamString("branch", branch) | |||
} |
@@ -472,16 +472,16 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt | |||
} | |||
ctx.Data["ShowArchivedLabels"] = archived | |||
pager.AddParamIfExist("q", ctx.Data["Keyword"]) | |||
pager.AddParamIfExist("type", ctx.Data["ViewType"]) | |||
pager.AddParamIfExist("sort", ctx.Data["SortType"]) | |||
pager.AddParamIfExist("state", ctx.Data["State"]) | |||
pager.AddParamIfExist("labels", ctx.Data["SelectLabels"]) | |||
pager.AddParamIfExist("milestone", ctx.Data["MilestoneID"]) | |||
pager.AddParamIfExist("project", ctx.Data["ProjectID"]) | |||
pager.AddParamIfExist("assignee", ctx.Data["AssigneeID"]) | |||
pager.AddParamIfExist("poster", ctx.Data["PosterID"]) | |||
pager.AddParamIfExist("archived", ctx.Data["ShowArchivedLabels"]) | |||
pager.AddParamString("q", keyword) | |||
pager.AddParamString("type", viewType) | |||
pager.AddParamString("sort", sortType) | |||
pager.AddParamString("state", fmt.Sprint(ctx.Data["State"])) | |||
pager.AddParamString("labels", fmt.Sprint(selectLabels)) | |||
pager.AddParamString("milestone", fmt.Sprint(milestoneID)) | |||
pager.AddParamString("project", fmt.Sprint(projectID)) | |||
pager.AddParamString("assignee", fmt.Sprint(assigneeID)) | |||
pager.AddParamString("poster", fmt.Sprint(posterID)) | |||
pager.AddParamString("archived", fmt.Sprint(archived)) | |||
ctx.Data["Page"] = pager | |||
} |
@@ -106,8 +106,8 @@ func Milestones(ctx *context.Context) { | |||
ctx.Data["IsShowClosed"] = isShowClosed | |||
pager := context.NewPagination(int(total), setting.UI.IssuePagingNum, page, 5) | |||
pager.AddParamIfExist("state", ctx.Data["State"]) | |||
pager.AddParamIfExist("q", ctx.Data["Keyword"]) | |||
pager.AddParamString("state", fmt.Sprint(ctx.Data["State"])) | |||
pager.AddParamString("q", keyword) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplMilestone) |
@@ -70,8 +70,8 @@ func Packages(ctx *context.Context) { | |||
ctx.Data["RepositoryAccessMap"] = map[int64]bool{ctx.Repo.Repository.ID: true} // There is only the current repository | |||
pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5) | |||
pager.AddParamIfExist("q", ctx.Data["Query"]) | |||
pager.AddParamIfExist("type", ctx.Data["PackageType"]) | |||
pager.AddParamString("q", query) | |||
pager.AddParamString("type", packageType) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplPackagesList) |
@@ -118,7 +118,7 @@ func Projects(ctx *context.Context) { | |||
} | |||
pager := context.NewPagination(total, setting.UI.IssuePagingNum, page, numPages) | |||
pager.AddParamIfExist("state", ctx.Data["State"]) | |||
pager.AddParamString("state", fmt.Sprint(ctx.Data["State"])) | |||
ctx.Data["Page"] = pager | |||
ctx.Data["CanWriteProjects"] = ctx.Repo.Permission.CanWrite(unit.TypeProjects) |
@@ -68,7 +68,7 @@ func Search(ctx *context.Context) { | |||
pager := context.NewPagination(total, setting.UI.RepoSearchPagingNum, page, 5) | |||
pager.SetDefaultParams(ctx) | |||
pager.AddParamIfExist("l", ctx.Data["Language"]) | |||
pager.AddParamString("l", language) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplSearch) |
@@ -122,7 +122,7 @@ func CodeSearch(ctx *context.Context) { | |||
pager := context.NewPagination(total, setting.UI.RepoSearchPagingNum, page, 5) | |||
pager.SetDefaultParams(ctx) | |||
pager.AddParamIfExist("l", ctx.Data["Language"]) | |||
pager.AddParamString("l", language) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplUserCode) |
@@ -133,7 +133,7 @@ func Dashboard(ctx *context.Context) { | |||
ctx.Data["Feeds"] = feeds | |||
pager := context.NewPagination(int(count), setting.UI.FeedPagingNum, page, 5) | |||
pager.AddParamIfExist("date", ctx.Data["Date"]) | |||
pager.AddParamString("date", date) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplDashboard) | |||
@@ -329,10 +329,10 @@ func Milestones(ctx *context.Context) { | |||
ctx.Data["IsShowClosed"] = isShowClosed | |||
pager := context.NewPagination(pagerCount, setting.UI.IssuePagingNum, page, 5) | |||
pager.AddParamIfExist("q", ctx.Data["Keyword"]) | |||
pager.AddParamIfExist("repos", ctx.Data["RepoIDs"]) | |||
pager.AddParamIfExist("sort", ctx.Data["SortType"]) | |||
pager.AddParamIfExist("state", ctx.Data["State"]) | |||
pager.AddParamString("q", keyword) | |||
pager.AddParamString("repos", reposQuery) | |||
pager.AddParamString("sort", sortType) | |||
pager.AddParamString("state", fmt.Sprint(ctx.Data["State"])) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplMilestones) | |||
@@ -632,13 +632,11 @@ func buildIssueOverview(ctx *context.Context, unitType unit.Type) { | |||
} | |||
pager := context.NewPagination(shownIssues, setting.UI.IssuePagingNum, page, 5) | |||
pager.AddParamIfExist("q", ctx.Data["Keyword"]) | |||
pager.AddParamIfExist("type", ctx.Data["ViewType"]) | |||
pager.AddParamIfExist("sort", ctx.Data["SortType"]) | |||
pager.AddParamIfExist("state", ctx.Data["State"]) | |||
pager.AddParamIfExist("labels", ctx.Data["SelectLabels"]) | |||
pager.AddParamIfExist("milestone", ctx.Data["MilestoneID"]) | |||
pager.AddParamIfExist("assignee", ctx.Data["AssigneeID"]) | |||
pager.AddParamString("q", keyword) | |||
pager.AddParamString("type", viewType) | |||
pager.AddParamString("sort", sortType) | |||
pager.AddParamString("state", fmt.Sprint(ctx.Data["State"])) | |||
pager.AddParamString("labels", selectedLabels) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplIssues) |
@@ -344,8 +344,8 @@ func NotificationSubscriptions(ctx *context.Context) { | |||
ctx.Redirect(fmt.Sprintf("/notifications/subscriptions?page=%d", pager.Paginater.Current())) | |||
return | |||
} | |||
pager.AddParamIfExist("sort", ctx.Data["SortType"]) | |||
pager.AddParamIfExist("state", ctx.Data["State"]) | |||
pager.AddParamString("sort", sortType) | |||
pager.AddParamString("state", state) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplNotificationSubscriptions) |
@@ -125,8 +125,8 @@ func ListPackages(ctx *context.Context) { | |||
} | |||
pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5) | |||
pager.AddParamIfExist("q", ctx.Data["Query"]) | |||
pager.AddParamIfExist("type", ctx.Data["PackageType"]) | |||
pager.AddParamString("q", query) | |||
pager.AddParamString("type", packageType) | |||
ctx.Data["Page"] = pager | |||
ctx.HTML(http.StatusOK, tplPackagesList) |
@@ -324,12 +324,14 @@ func prepareUserProfileTabData(ctx *context.Context, showPrivate bool, profileDb | |||
pager := context.NewPagination(total, pagingNum, page, 5) | |||
pager.SetDefaultParams(ctx) | |||
pager.AddParamIfExist("tab", ctx.Data["TabName"]) | |||
pager.AddParamString("tab", tab) | |||
if tab != "followers" && tab != "following" && tab != "activity" && tab != "projects" { | |||
pager.AddParamIfExist("language", ctx.Data["Language"]) | |||
pager.AddParamString("language", language) | |||
} | |||
if tab == "activity" { | |||
pager.AddParamIfExist("date", ctx.Data["Date"]) | |||
if ctx.Data["Date"] != nil { | |||
pager.AddParamString("date", fmt.Sprint(ctx.Data["Date"])) | |||
} | |||
} | |||
ctx.Data["Page"] = pager | |||
} |
@@ -26,16 +26,6 @@ func NewPagination(total, pagingNum, current, numPages int) *Pagination { | |||
return p | |||
} | |||
// AddParamIfExist adds a value to the query parameters if the value is not nil | |||
func (p *Pagination) AddParamIfExist(key string, val any) { | |||
if val == nil { | |||
return | |||
} | |||
paramData := fmt.Sprint(val) | |||
urlParam := fmt.Sprintf("%s=%v", url.QueryEscape(key), url.QueryEscape(paramData)) | |||
p.urlParams = append(p.urlParams, urlParam) | |||
} | |||
// AddParamString adds a string parameter directly | |||
func (p *Pagination) AddParamString(key, value string) { | |||
urlParam := fmt.Sprintf("%s=%v", url.QueryEscape(key), url.QueryEscape(value)) | |||
@@ -49,8 +39,14 @@ func (p *Pagination) GetParams() template.URL { | |||
// SetDefaultParams sets common pagination params that are often used | |||
func (p *Pagination) SetDefaultParams(ctx *Context) { | |||
p.AddParamIfExist("sort", ctx.Data["SortType"]) | |||
p.AddParamIfExist("q", ctx.Data["Keyword"]) | |||
if v, ok := ctx.Data["SortType"].(string); ok { | |||
p.AddParamString("sort", v) | |||
} | |||
if v, ok := ctx.Data["Keyword"].(string); ok { | |||
p.AddParamString("q", v) | |||
} | |||
if v, ok := ctx.Data["IsFuzzy"].(bool); ok { | |||
p.AddParamString("fuzzy", fmt.Sprint(v)) | |||
} | |||
// do not add any more uncommon params here! | |||
p.AddParamIfExist("fuzzy", ctx.Data["IsFuzzy"]) | |||
} |