From 86fb1a0cb13de00a5ba49e29efa35573c01c9821 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kim=20=22BKC=22=20Carlb=C3=A4cker?=
 <kim.carlbacker@gmail.com>
Date: Fri, 4 Nov 2016 20:28:07 +0100
Subject: [PATCH] Add Pagination to Releases-page

---
 models/release.go                | 7 +++++--
 routers/repo/release.go          | 9 ++++++++-
 templates/repo/release/list.tmpl | 1 +
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/models/release.go b/models/release.go
index 0e1edd121b..4841ae7ba3 100644
--- a/models/release.go
+++ b/models/release.go
@@ -138,8 +138,11 @@ func GetReleaseByID(id int64) (*Release, error) {
 }
 
 // GetReleasesByRepoID returns a list of releases of repository.
-func GetReleasesByRepoID(repoID int64) (rels []*Release, err error) {
-	err = x.Desc("created_unix").Find(&rels, Release{RepoID: repoID})
+func GetReleasesByRepoID(repoID int64, page, pageSize int) (rels []*Release, err error) {
+	if page <= 0 {
+		page = 1
+	}
+	err = x.Desc("created_unix").Limit(pageSize, (page-1)*pageSize).Find(&rels, Release{RepoID: repoID})
 	return rels, err
 }
 
diff --git a/routers/repo/release.go b/routers/repo/release.go
index 9d87f0967e..afdc61a22a 100644
--- a/routers/repo/release.go
+++ b/routers/repo/release.go
@@ -7,6 +7,7 @@ package repo
 import (
 	"fmt"
 
+	"github.com/Unknwon/paginater"
 	"github.com/go-gitea/gitea/models"
 	"github.com/go-gitea/gitea/modules/auth"
 	"github.com/go-gitea/gitea/modules/base"
@@ -58,7 +59,11 @@ func Releases(ctx *context.Context) {
 		return
 	}
 
-	releases, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID)
+	page := ctx.QueryInt("page")
+	if page <= 1 {
+		page = 1
+	}
+	releases, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID, page, 10)
 	if err != nil {
 		ctx.Handle(500, "GetReleasesByRepoID", err)
 		return
@@ -141,6 +146,8 @@ func Releases(ctx *context.Context) {
 		r.Note = markdown.RenderString(r.Note, ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas())
 		tags = append(tags, r)
 	}
+	pager := paginater.New(ctx.Repo.Repository.NumTags, 10, page, 5)
+	ctx.Data["Page"] = pager
 	models.SortReleases(tags)
 	ctx.Data["Releases"] = tags
 	ctx.HTML(200, RELEASES)
diff --git a/templates/repo/release/list.tmpl b/templates/repo/release/list.tmpl
index b9b1b7c2f4..c22897c51e 100644
--- a/templates/repo/release/list.tmpl
+++ b/templates/repo/release/list.tmpl
@@ -75,6 +75,7 @@
 				</li>
 			{{end}}
 		</ul>
+		{{template "admin/base/page" .}}
 	</div>
 </div>
 {{template "base/footer" .}}