Add Pagination to Releases-page (and de-duplicate pagination templates)tags/v1.2.0-rc1
| @@ -138,8 +138,11 @@ func GetReleaseByID(id int64) (*Release, error) { | |||||
| } | } | ||||
| // GetReleasesByRepoID returns a list of releases of repository. | // 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 | return rels, err | ||||
| } | } | ||||
| @@ -7,6 +7,7 @@ package repo | |||||
| import ( | import ( | ||||
| "fmt" | "fmt" | ||||
| "github.com/Unknwon/paginater" | |||||
| "github.com/go-gitea/gitea/models" | "github.com/go-gitea/gitea/models" | ||||
| "github.com/go-gitea/gitea/modules/auth" | "github.com/go-gitea/gitea/modules/auth" | ||||
| "github.com/go-gitea/gitea/modules/base" | "github.com/go-gitea/gitea/modules/base" | ||||
| @@ -58,7 +59,11 @@ func Releases(ctx *context.Context) { | |||||
| return | 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 { | if err != nil { | ||||
| ctx.Handle(500, "GetReleasesByRepoID", err) | ctx.Handle(500, "GetReleasesByRepoID", err) | ||||
| return | return | ||||
| @@ -141,6 +146,8 @@ func Releases(ctx *context.Context) { | |||||
| r.Note = markdown.RenderString(r.Note, ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas()) | r.Note = markdown.RenderString(r.Note, ctx.Repo.RepoLink, ctx.Repo.Repository.ComposeMetas()) | ||||
| tags = append(tags, r) | tags = append(tags, r) | ||||
| } | } | ||||
| pager := paginater.New(ctx.Repo.Repository.NumTags, 10, page, 5) | |||||
| ctx.Data["Page"] = pager | |||||
| models.SortReleases(tags) | models.SortReleases(tags) | ||||
| ctx.Data["Releases"] = tags | ctx.Data["Releases"] = tags | ||||
| ctx.HTML(200, RELEASES) | ctx.HTML(200, RELEASES) | ||||
| @@ -1,23 +0,0 @@ | |||||
| {{with .Page}} | |||||
| {{if gt .TotalPages 1}} | |||||
| <div class="center page buttons"> | |||||
| <div class="ui borderless pagination menu"> | |||||
| <a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}?q={{$.Keyword}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a> | |||||
| <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}&q={{$.Keyword}}"{{end}}> | |||||
| <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} | |||||
| </a> | |||||
| {{range .Pages}} | |||||
| {{if eq .Num -1}} | |||||
| <a class="disabled item">...</a> | |||||
| {{else}} | |||||
| <a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}&q={{$.Keyword}}"{{end}}>{{.Num}}</a> | |||||
| {{end}} | |||||
| {{end}} | |||||
| <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}&q={{$.Keyword}}"{{end}}> | |||||
| {{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i> | |||||
| </a> | |||||
| <a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}&q={{$.Keyword}}">{{$.i18n.Tr "admin.last_page"}} <i class="angle double right icon"></i></a> | |||||
| </div> | |||||
| </div> | |||||
| {{end}} | |||||
| {{end}} | |||||
| @@ -40,7 +40,7 @@ | |||||
| </table> | </table> | ||||
| </div> | </div> | ||||
| {{template "admin/base/page" .}} | |||||
| {{template "base/paginate" .}} | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -44,7 +44,7 @@ | |||||
| </table> | </table> | ||||
| </div> | </div> | ||||
| {{template "admin/base/page" .}} | |||||
| {{template "base/paginage" .}} | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -45,7 +45,7 @@ | |||||
| </table> | </table> | ||||
| </div> | </div> | ||||
| {{template "admin/base/page" .}} | |||||
| {{template "base/paginate" .}} | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -2,6 +2,7 @@ | |||||
| {{if gt .TotalPages 1}} | {{if gt .TotalPages 1}} | ||||
| <div class="center page buttons"> | <div class="center page buttons"> | ||||
| <div class="ui borderless pagination menu"> | <div class="ui borderless pagination menu"> | ||||
| <a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}?q={{$.Keyword}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a> | |||||
| <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}&q={{$.Keyword}}"{{end}}> | <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}&q={{$.Keyword}}"{{end}}> | ||||
| <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} | <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} | ||||
| </a> | </a> | ||||
| @@ -13,8 +14,9 @@ | |||||
| {{end}} | {{end}} | ||||
| {{end}} | {{end}} | ||||
| <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}&q={{$.Keyword}}"{{end}}> | <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}&q={{$.Keyword}}"{{end}}> | ||||
| {{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i> | |||||
| {{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i> | |||||
| </a> | </a> | ||||
| <a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}&q={{$.Keyword}}">{{$.i18n.Tr "admin.last_page"}} <i class="angle double right icon"></i></a> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| {{end}} | {{end}} | ||||
| @@ -27,7 +27,7 @@ | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| {{template "explore/page" .}} | |||||
| {{template "base/paginate" .}} | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -6,7 +6,7 @@ | |||||
| <div class="twelve wide column content"> | <div class="twelve wide column content"> | ||||
| {{template "explore/search" .}} | {{template "explore/search" .}} | ||||
| {{template "explore/repo_list" .}} | {{template "explore/repo_list" .}} | ||||
| {{template "explore/page" .}} | |||||
| {{template "base/paginate" .}} | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -27,7 +27,7 @@ | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| {{template "explore/page" .}} | |||||
| {{template "base/paginate" .}} | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -32,7 +32,7 @@ | |||||
| <div class="ui divider"></div> | <div class="ui divider"></div> | ||||
| {{end}} | {{end}} | ||||
| {{template "explore/repo_list" .}} | {{template "explore/repo_list" .}} | ||||
| {{template "explore/page" .}} | |||||
| {{template "base/paginate" .}} | |||||
| </div> | </div> | ||||
| <div class="ui five wide column"> | <div class="ui five wide column"> | ||||
| @@ -75,6 +75,7 @@ | |||||
| </li> | </li> | ||||
| {{end}} | {{end}} | ||||
| </ul> | </ul> | ||||
| {{template "base/paginage" .}} | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| {{template "base/footer" .}} | {{template "base/footer" .}} | ||||
| @@ -86,7 +86,7 @@ | |||||
| </div> | </div> | ||||
| {{if ne .TabName "activity"}} | {{if ne .TabName "activity"}} | ||||
| {{template "explore/repo_list" .}} | {{template "explore/repo_list" .}} | ||||
| {{template "explore/page" .}} | |||||
| {{template "base/paginate" .}} | |||||
| {{else}} | {{else}} | ||||
| <br> | <br> | ||||
| <div class="feeds"> | <div class="feeds"> | ||||