summaryrefslogtreecommitdiffstats
path: root/hugolib/page.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-04-10 10:11:51 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-04-12 09:18:59 +0200
commitf7375c497239115cd30ae42af6b4d298e4e7ad7d (patch)
treecb21a9da3a26a0e151b11d5117454c74b3a95136 /hugolib/page.go
parent7966c0b5b7b2297527f8be9040b793de5e4e3f48 (diff)
Fix paginator refresh on server change
Fixes #5838
Diffstat (limited to 'hugolib/page.go')
-rw-r--r--hugolib/page.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/hugolib/page.go b/hugolib/page.go
index 99b771eee..2ed828df6 100644
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -332,8 +332,8 @@ func (p *pageState) getLayouts(layouts ...string) ([]string, error) {
}
// This is serialized
-func (p *pageState) initOutputFormat(idx int) error {
- if err := p.shiftToOutputFormat(idx); err != nil {
+func (p *pageState) initOutputFormat(isRenderingSite bool, idx int) error {
+ if err := p.shiftToOutputFormat(isRenderingSite, idx); err != nil {
return err
}
@@ -700,7 +700,7 @@ func (p *pageState) posOffset(offset int) text.Position {
// shiftToOutputFormat is serialized. The output format idx refers to the
// full set of output formats for all sites.
-func (p *pageState) shiftToOutputFormat(idx int) error {
+func (p *pageState) shiftToOutputFormat(isRenderingSite bool, idx int) error {
if err := p.initPage(); err != nil {
return err
}
@@ -715,6 +715,12 @@ func (p *pageState) shiftToOutputFormat(idx int) error {
panic(fmt.Sprintf("pageOutput is nil for output idx %d", idx))
}
+ // Reset any built paginator. This will trigger when re-rendering pages in
+ // server mode.
+ if isRenderingSite && p.pageOutput.paginator != nil && p.pageOutput.paginator.current != nil {
+ p.pageOutput.paginator.reset()
+ }
+
if idx > 0 {
// Check if we can reuse content from one of the previous formats.
for i := idx - 1; i >= 0; i-- {
@@ -728,7 +734,7 @@ func (p *pageState) shiftToOutputFormat(idx int) error {
for _, r := range p.Resources().ByType(pageResourceType) {
rp := r.(*pageState)
- if err := rp.shiftToOutputFormat(idx); err != nil {
+ if err := rp.shiftToOutputFormat(isRenderingSite, idx); err != nil {
return errors.Wrap(err, "failed to shift outputformat in Page resource")
}
}