diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-04-10 10:11:51 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-04-12 09:18:59 +0200 |
commit | f7375c497239115cd30ae42af6b4d298e4e7ad7d (patch) | |
tree | cb21a9da3a26a0e151b11d5117454c74b3a95136 /hugolib/page.go | |
parent | 7966c0b5b7b2297527f8be9040b793de5e4e3f48 (diff) |
Fix paginator refresh on server change
Fixes #5838
Diffstat (limited to 'hugolib/page.go')
-rw-r--r-- | hugolib/page.go | 14 |
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") } } |