summaryrefslogtreecommitdiffstats
path: root/routers/web/home.go
diff options
context:
space:
mode:
authorDaniil Gentili <daniil@daniil.it>2022-06-25 19:06:01 +0200
committerGitHub <noreply@github.com>2022-06-25 19:06:01 +0200
commit95383b7a16205d749e9d696d69d0ae665e91501e (patch)
tree9bf9edfd5bd7ed1c6da7eefa73ea8843b609f8ca /routers/web/home.go
parent97bfabc745cdcce11ce50a62e29bb7a4e7e66e6c (diff)
downloadgitea-95383b7a16205d749e9d696d69d0ae665e91501e.tar.gz
gitea-95383b7a16205d749e9d696d69d0ae665e91501e.zip
Add sitemap support (#18407)
Diffstat (limited to 'routers/web/home.go')
-rw-r--r--routers/web/home.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/routers/web/home.go b/routers/web/home.go
index 9036814ddf..0c74987ba7 100644
--- a/routers/web/home.go
+++ b/routers/web/home.go
@@ -7,11 +7,18 @@ package web
import (
"net/http"
+ "strconv"
+ "code.gitea.io/gitea/models/db"
+ repo_model "code.gitea.io/gitea/models/repo"
+ user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/sitemap"
+ "code.gitea.io/gitea/modules/structs"
+ "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web/middleware"
"code.gitea.io/gitea/routers/web/auth"
"code.gitea.io/gitea/routers/web/user"
@@ -59,6 +66,52 @@ func Home(ctx *context.Context) {
ctx.HTML(http.StatusOK, tplHome)
}
+// HomeSitemap renders the main sitemap
+func HomeSitemap(ctx *context.Context) {
+ m := sitemap.NewSitemapIndex()
+ if !setting.Service.Explore.DisableUsersPage {
+ _, cnt, err := user_model.SearchUsers(&user_model.SearchUserOptions{
+ Type: user_model.UserTypeIndividual,
+ ListOptions: db.ListOptions{PageSize: 1},
+ IsActive: util.OptionalBoolTrue,
+ Visible: []structs.VisibleType{structs.VisibleTypePublic},
+ })
+ if err != nil {
+ ctx.ServerError("SearchUsers", err)
+ return
+ }
+ count := int(cnt)
+ idx := 1
+ for i := 0; i < count; i += setting.UI.SitemapPagingNum {
+ m.Add(sitemap.URL{URL: setting.AppURL + "explore/users/sitemap-" + strconv.Itoa(idx) + ".xml"})
+ idx++
+ }
+ }
+
+ _, cnt, err := repo_model.SearchRepository(&repo_model.SearchRepoOptions{
+ ListOptions: db.ListOptions{
+ PageSize: 1,
+ },
+ Actor: ctx.Doer,
+ AllPublic: true,
+ })
+ if err != nil {
+ ctx.ServerError("SearchRepository", err)
+ return
+ }
+ count := int(cnt)
+ idx := 1
+ for i := 0; i < count; i += setting.UI.SitemapPagingNum {
+ m.Add(sitemap.URL{URL: setting.AppURL + "explore/repos/sitemap-" + strconv.Itoa(idx) + ".xml"})
+ idx++
+ }
+
+ ctx.Resp.Header().Set("Content-Type", "text/xml")
+ if _, err := m.WriteTo(ctx.Resp); err != nil {
+ log.Error("Failed writing sitemap: %v", err)
+ }
+}
+
// NotFound render 404 page
func NotFound(ctx *context.Context) {
ctx.Data["Title"] = "Page Not Found"