Skip to content

Commit

Permalink
Fixed footer links for blog sibling pages
Browse files Browse the repository at this point in the history
  • Loading branch information
squidfunk committed Sep 2, 2023
1 parent 502c9ca commit 6e1c658
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
18 changes: 16 additions & 2 deletions material/plugins/blog/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ def on_page_markdown(self, markdown, *, page, config, files):
# We set the contents of the view to its title if pagination should
# not keep the content of the original view on paginaged views
if not self.config.pagination_keep_content:
view = page.pages[0] if isinstance(page, View) else page
view = self._resolve_canonical(page)
if view in self._resolve_views(self.blog):
assert isinstance(page, View)
if page.pages.index(page):
Expand Down Expand Up @@ -324,7 +324,7 @@ def on_page_context(self, context, *, page, config, nav):

# Skip if page is not a view managed by this instance - this plugin has
# support for multiple instances, which is why this check is necessary
view = page.pages[0] if isinstance(page, View) else page
view = self._resolve_canonical(page)
if view not in self._resolve_views(self.blog):
return

Expand Down Expand Up @@ -514,6 +514,13 @@ def _resolve_views(self, view: View):
assert isinstance(next, View)
yield next

# Resolve canonical page of a page, which might be a view
def _resolve_canonical(self, page: Page):
if isinstance(page, View):
return page.pages[0]
else:
return page

# Resolve siblings of a navigation item
def _resolve_siblings(self, item: StructureItem, nav: Navigation):
if isinstance(item.parent, Section):
Expand Down Expand Up @@ -631,6 +638,13 @@ def _attach(self, parent: StructureItem, pages: list[Page]):
page.previous_page = tail
page.next_page = head

# If the page is a view, we know that we generated it and need to
# link its siblings back to the view
if isinstance(page, View):
view = self._resolve_canonical(page)
if tail: tail.next_page = view
if head: head.previous_page = view

# Attach a page to the given parent and link it to the previous and next
# page of the given host - this is exclusively used for paginated views
def _attach_at(self, parent: StructureItem, host: Page, page: Page):
Expand Down
18 changes: 16 additions & 2 deletions src/plugins/blog/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ def on_page_markdown(self, markdown, *, page, config, files):
# We set the contents of the view to its title if pagination should
# not keep the content of the original view on paginaged views
if not self.config.pagination_keep_content:
view = page.pages[0] if isinstance(page, View) else page
view = self._resolve_canonical(page)
if view in self._resolve_views(self.blog):
assert isinstance(page, View)
if page.pages.index(page):
Expand Down Expand Up @@ -324,7 +324,7 @@ def on_page_context(self, context, *, page, config, nav):

# Skip if page is not a view managed by this instance - this plugin has
# support for multiple instances, which is why this check is necessary
view = page.pages[0] if isinstance(page, View) else page
view = self._resolve_canonical(page)
if view not in self._resolve_views(self.blog):
return

Expand Down Expand Up @@ -514,6 +514,13 @@ def _resolve_views(self, view: View):
assert isinstance(next, View)
yield next

# Resolve canonical page of a page, which might be a view
def _resolve_canonical(self, page: Page):
if isinstance(page, View):
return page.pages[0]
else:
return page

# Resolve siblings of a navigation item
def _resolve_siblings(self, item: StructureItem, nav: Navigation):
if isinstance(item.parent, Section):
Expand Down Expand Up @@ -631,6 +638,13 @@ def _attach(self, parent: StructureItem, pages: list[Page]):
page.previous_page = tail
page.next_page = head

# If the page is a view, we know that we generated it and need to
# link its siblings back to the view
if isinstance(page, View):
view = self._resolve_canonical(page)
if tail: tail.next_page = view
if head: head.previous_page = view

# Attach a page to the given parent and link it to the previous and next
# page of the given host - this is exclusively used for paginated views
def _attach_at(self, parent: StructureItem, host: Page, page: Page):
Expand Down

0 comments on commit 6e1c658

Please sign in to comment.