@@ -74,6 +74,7 @@ type ( | |||
DisplayCollection struct { | |||
*CollectionObj | |||
Prefix string | |||
NavSuffix string | |||
IsTopLevel bool | |||
CurrentPage int | |||
TotalPages int | |||
@@ -260,16 +261,16 @@ func (c *Collection) RedirectingCanonicalURL(isRedir bool) string { | |||
// PrevPageURL provides a full URL for the previous page of collection posts, | |||
// returning a /page/N result for pages >1 | |||
func (c *Collection) PrevPageURL(prefix string, n int, tl bool) string { | |||
func (c *Collection) PrevPageURL(prefix, navSuffix string, n int, tl bool) string { | |||
u := "" | |||
if n == 2 { | |||
// Previous page is 1; no need for /page/ prefix | |||
if prefix == "" { | |||
u = "/" | |||
u = navSuffix + "/" | |||
} | |||
// Else leave off trailing slash | |||
} else { | |||
u = fmt.Sprintf("/page/%d", n-1) | |||
u = fmt.Sprintf("%s/page/%d", navSuffix, n-1) | |||
} | |||
if tl { | |||
@@ -279,11 +280,12 @@ func (c *Collection) PrevPageURL(prefix string, n int, tl bool) string { | |||
} | |||
// NextPageURL provides a full URL for the next page of collection posts | |||
func (c *Collection) NextPageURL(prefix string, n int, tl bool) string { | |||
func (c *Collection) NextPageURL(prefix, navSuffix string, n int, tl bool) string { | |||
if tl { | |||
return fmt.Sprintf("/page/%d", n+1) | |||
return fmt.Sprintf("%s/page/%d", navSuffix, n+1) | |||
} | |||
return fmt.Sprintf("/%s%s/page/%d", prefix, c.Alias, n+1) | |||
return fmt.Sprintf("/%s%s%s/page/%d", prefix, c.Alias, navSuffix, n+1) | |||
} | |||
func (c *Collection) DisplayTitle() string { | |||
@@ -1084,6 +1086,7 @@ func handleViewCollectionLang(app *App, w http.ResponseWriter, r *http.Request) | |||
coll := newDisplayCollection(c, cr, page) | |||
coll.Language = lang | |||
coll.NavSuffix = fmt.Sprintf("/lang:%s", lang) | |||
ttlPosts, err := app.db.GetCollLangTotalPosts(coll.ID, lang) | |||
if err != nil { | |||
@@ -9,8 +9,8 @@ | |||
{{if .CustomCSS}}<link rel="stylesheet" type="text/css" href="/local/custom.css" />{{end}} | |||
<link rel="shortcut icon" href="/favicon.ico" /> | |||
<link rel="canonical" href="{{.CanonicalURL}}"> | |||
{{if gt .CurrentPage 1}}<link rel="prev" href="{{.PrevPageURL .Prefix .CurrentPage .IsTopLevel}}">{{end}} | |||
{{if lt .CurrentPage .TotalPages}}<link rel="next" href="{{.NextPageURL .Prefix .CurrentPage .IsTopLevel}}">{{end}} | |||
{{if gt .CurrentPage 1}}<link rel="prev" href="{{.PrevPageURL .Prefix .NavSuffix .CurrentPage .IsTopLevel}}">{{end}} | |||
{{if lt .CurrentPage .TotalPages}}<link rel="next" href="{{.NextPageURL .Prefix .NavSuffix .CurrentPage .IsTopLevel}}">{{end}} | |||
{{if not .IsPrivate}}<link rel="alternate" type="application/rss+xml" title="{{.DisplayTitle}} » Feed" href="{{.CanonicalURL}}feed/" />{{end}} | |||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||
@@ -92,11 +92,11 @@ body#collection header nav.tabs a:first-child { | |||
{{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}} | |||
{{if gt .CurrentPage 1}}<a href="{{.PrevPageURL .Prefix .NavSuffix .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 .NavSuffix .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}} | |||
{{if lt .CurrentPage .TotalPages}}<a href="{{.NextPageURL .Prefix .NavSuffix .CurrentPage .IsTopLevel}}">⇠ Older</a>{{end}} | |||
{{if gt .CurrentPage 1}}<a style="float:right;" href="{{.PrevPageURL .Prefix .NavSuffix .CurrentPage .IsTopLevel}}">Newer ⇢</a>{{end}} | |||
{{end}} | |||
</nav>{{end}} | |||
@@ -9,8 +9,8 @@ | |||
{{if .CustomCSS}}<link rel="stylesheet" type="text/css" href="/local/custom.css" />{{end}} | |||
<link rel="shortcut icon" href="/favicon.ico" /> | |||
<link rel="canonical" href="{{.CanonicalURL}}"> | |||
{{if gt .CurrentPage 1}}<link rel="prev" href="{{.PrevPageURL .Prefix .CurrentPage .IsTopLevel}}">{{end}} | |||
{{if lt .CurrentPage .TotalPages}}<link rel="next" href="{{.NextPageURL .Prefix .CurrentPage .IsTopLevel}}">{{end}} | |||
{{if gt .CurrentPage 1}}<link rel="prev" href="{{.PrevPageURL .Prefix .NavSuffix .CurrentPage .IsTopLevel}}">{{end}} | |||
{{if lt .CurrentPage .TotalPages}}<link rel="next" href="{{.NextPageURL .Prefix .NavSuffix .CurrentPage .IsTopLevel}}">{{end}} | |||
{{if not .IsPrivate}}<link rel="alternate" type="application/rss+xml" title="{{.DisplayTitle}} » Feed" href="{{.CanonicalURL}}feed/" />{{end}} | |||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||
@@ -107,11 +107,11 @@ | |||
{{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}} | |||
{{if gt .CurrentPage 1}}<a href="{{.PrevPageURL .Prefix .NavSuffix .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 .NavSuffix .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}} | |||
{{if lt .CurrentPage .TotalPages}}<a href="{{.NextPageURL .Prefix .NavSuffix .CurrentPage .IsTopLevel}}">⇠ Older</a>{{end}} | |||
{{if gt .CurrentPage 1}}<a style="float:right;" href="{{.PrevPageURL .Prefix .NavSuffix .CurrentPage .IsTopLevel}}">Newer ⇢</a>{{end}} | |||
{{end}} | |||
</nav>{{end}} | |||