From c3e020ca3404cc07e78e13e975eb7e712670e137 Mon Sep 17 00:00:00 2001
From: Gusted <williamzijl7@hotmail.com>
Date: Thu, 18 Nov 2021 14:45:56 +0000
Subject: [PATCH] Add pagination to fork list (#17639)

- Resolves #14574
- Adds the necessary code to have pagination working in the forks list of
a repo. The code is mostly in par with the stars/watcher implementation.
---
 routers/web/repo/view.go  | 15 +++++++++++++--
 templates/repo/forks.tmpl |  2 ++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go
index d455dc103..72726f054 100644
--- a/routers/web/repo/view.go
+++ b/routers/web/repo/view.go
@@ -935,8 +935,18 @@ func Stars(ctx *context.Context) {
 func Forks(ctx *context.Context) {
 	ctx.Data["Title"] = ctx.Tr("repos.forks")
 
-	// TODO: need pagination
-	forks, err := ctx.Repo.Repository.GetForks(db.ListOptions{})
+	page := ctx.FormInt("page")
+	if page <= 0 {
+		page = 1
+	}
+
+	pager := context.NewPagination(ctx.Repo.Repository.NumForks, models.ItemsPerPage, page, 5)
+	ctx.Data["Page"] = pager
+
+	forks, err := ctx.Repo.Repository.GetForks(db.ListOptions{
+		Page:     pager.Paginater.Current(),
+		PageSize: models.ItemsPerPage,
+	})
 	if err != nil {
 		ctx.ServerError("GetForks", err)
 		return
@@ -948,6 +958,7 @@ func Forks(ctx *context.Context) {
 			return
 		}
 	}
+
 	ctx.Data["Forks"] = forks
 
 	ctx.HTML(http.StatusOK, tplForks)
diff --git a/templates/repo/forks.tmpl b/templates/repo/forks.tmpl
index ff6e9949d..d28dc0aff 100644
--- a/templates/repo/forks.tmpl
+++ b/templates/repo/forks.tmpl
@@ -18,5 +18,7 @@
 			{{end}}
 		</div>
 	</div>
+
+	{{ template "base/paginate" . }}
 </div>
 {{template "base/footer" .}}