Add Pagination to Tags Collection
Mostly copied the logic for pagination from non tag collection
This commit is contained in:
parent
e6417d911c
commit
530439772d
|
@ -901,6 +901,15 @@ func handleViewCollectionTag(app *App, w http.ResponseWriter, r *http.Request) e
|
||||||
|
|
||||||
coll := newDisplayCollection(c, cr, page)
|
coll := newDisplayCollection(c, cr, page)
|
||||||
|
|
||||||
|
coll.TotalPages = int(math.Ceil(float64(coll.TotalPosts) / float64(coll.Format.PostsPerPage())))
|
||||||
|
if coll.TotalPages > 0 && page > coll.TotalPages {
|
||||||
|
redirURL := fmt.Sprintf("/page/%d", coll.TotalPages)
|
||||||
|
if !app.cfg.App.SingleUser {
|
||||||
|
redirURL = fmt.Sprintf("/%s%s%s", cr.prefix, coll.Alias, redirURL)
|
||||||
|
}
|
||||||
|
return impart.HTTPError{http.StatusFound, redirURL}
|
||||||
|
}
|
||||||
|
|
||||||
coll.Posts, _ = app.db.GetPostsTagged(app.cfg, c, tag, page, cr.isCollOwner)
|
coll.Posts, _ = app.db.GetPostsTagged(app.cfg, c, tag, page, cr.isCollOwner)
|
||||||
if coll.Posts != nil && len(*coll.Posts) == 0 {
|
if coll.Posts != nil && len(*coll.Posts) == 0 {
|
||||||
return ErrCollectionPageNotFound
|
return ErrCollectionPageNotFound
|
||||||
|
|
|
@ -206,6 +206,7 @@ func InitRoutes(apper Apper, r *mux.Router) *mux.Router {
|
||||||
func RouteCollections(handler *Handler, r *mux.Router) {
|
func RouteCollections(handler *Handler, r *mux.Router) {
|
||||||
r.HandleFunc("/page/{page:[0-9]+}", handler.Web(handleViewCollection, UserLevelReader))
|
r.HandleFunc("/page/{page:[0-9]+}", handler.Web(handleViewCollection, UserLevelReader))
|
||||||
r.HandleFunc("/tag:{tag}", handler.Web(handleViewCollectionTag, UserLevelReader))
|
r.HandleFunc("/tag:{tag}", handler.Web(handleViewCollectionTag, UserLevelReader))
|
||||||
|
r.HandleFunc("/tag:{tag}/page/{page:[0-9]+}", handler.Web(handleViewCollectionTag, UserLevelReader))
|
||||||
r.HandleFunc("/tag:{tag}/feed/", handler.Web(ViewFeed, UserLevelReader))
|
r.HandleFunc("/tag:{tag}/feed/", handler.Web(ViewFeed, UserLevelReader))
|
||||||
r.HandleFunc("/sitemap.xml", handler.AllReader(handleViewSitemap))
|
r.HandleFunc("/sitemap.xml", handler.AllReader(handleViewSitemap))
|
||||||
r.HandleFunc("/feed/", handler.AllReader(ViewFeed))
|
r.HandleFunc("/feed/", handler.AllReader(ViewFeed))
|
||||||
|
|
|
@ -60,6 +60,17 @@
|
||||||
{{if .Posts}}<section id="wrapper" itemscope itemtype="http://schema.org/Blog">{{else}}<div id="wrapper">{{end}}
|
{{if .Posts}}<section id="wrapper" itemscope itemtype="http://schema.org/Blog">{{else}}<div id="wrapper">{{end}}
|
||||||
<h1>{{.Tag}}</h1>
|
<h1>{{.Tag}}</h1>
|
||||||
{{template "posts" .}}
|
{{template "posts" .}}
|
||||||
|
|
||||||
|
{{if gt .TotalPages 1}}<nav id="paging" class="content-container clearfix">
|
||||||
|
{{if or (and .Format.Ascending (le .CurrentPage .TotalPages)) (isRTL .Direction)}}
|
||||||
|
{{if gt .CurrentPage 1}}<a href="{{.PrevPageURL .Prefix .CurrentPage .IsTopLevel}}">⇠ {{if and .Format.Ascending (le .CurrentPage .TotalPages)}}Previous{{else}}Newer{{end}}</a>{{end}}
|
||||||
|
{{if lt .CurrentPage .TotalPages}}<a style="float:right;" href="{{.NextPageURL .Prefix .CurrentPage .IsTopLevel}}">{{if and .Format.Ascending (lt .CurrentPage .TotalPages)}}Next{{else}}Older{{end}} ⇢</a>{{end}}
|
||||||
|
{{else}}
|
||||||
|
{{if lt .CurrentPage .TotalPages}}<a href="{{.NextPageURL .Prefix .CurrentPage .IsTopLevel}}">⇠ Older</a>{{end}}
|
||||||
|
{{if gt .CurrentPage 1}}<a style="float:right;" href="{{.PrevPageURL .Prefix .CurrentPage .IsTopLevel}}">Newer ⇢</a>{{end}}
|
||||||
|
{{end}}
|
||||||
|
</nav>{{end}}
|
||||||
|
|
||||||
{{if .Posts}}</section>{{else}}</div>{{end}}
|
{{if .Posts}}</section>{{else}}</div>{{end}}
|
||||||
|
|
||||||
{{ if .Collection.ShowFooterBranding }}
|
{{ if .Collection.ShowFooterBranding }}
|
||||||
|
|
Loading…
Reference in New Issue