[FIX] odoo_theme: unclickable :show-content: pages in global toctree
When navigating the themes tutorial (developer/howto/themes), the rdtraining page wasn't clickable in the global toc, even though it was specified as :show-content: (note that the rdtraining is only in 14.0+). The heuristic extracting the pagename from a toctree node wasn't considering the current depth if the page referenced by the toctree node was in the same folder than the current page. Explanation: We are computing the toctree for the page developer/howtos/themes. One of the toctree nodes references the rdtraining page, with a relative link, i.e. `rdtraining.html`. We were wrongfully looking for `show_content` in the metadata of the `rdtraining` page, instead of `developer/howtos/rdtraining`, since we didn't consider the current document depth when the reference didn't contain any `/`. This commit ensures that if the current document has a depth > 1, this depth is currently considered, even for links referencing documents in the same folder. task-2538297
This commit is contained in:
parent
8a160c3437
commit
10612f0ba7
@ -59,16 +59,23 @@ def resolve(old_resolve, tree, docname, *args, **kwargs):
|
|||||||
_update_toctree_nodes(_subnode)
|
_update_toctree_nodes(_subnode)
|
||||||
|
|
||||||
def _get_docname(_node):
|
def _get_docname(_node):
|
||||||
"""
|
""" Return the docname of the targeted document.
|
||||||
docname = a/b/c/the_page_being_rendered
|
|
||||||
|
docname = some_common_root/foo/bar/the_page_being_rendered
|
||||||
_ref = ../../contributing/documentation
|
_ref = ../../contributing/documentation
|
||||||
_path_parts = ['..', '..', 'contributing', 'documentation']
|
_path_parts = ['..', '..', 'contributing', 'documentation']
|
||||||
_res = ['a', 'contributing', 'documentation']
|
_res = ['some_common_root', 'contributing', 'documentation']
|
||||||
_docname = a/contributing/documentation
|
_docname = some_common_root/contributing/documentation
|
||||||
|
|
||||||
|
:return: The docname of the document targeted by `_node`, i.e. the relative path from the
|
||||||
|
documentation source directory (the `content/` directory)
|
||||||
|
:rtype: str
|
||||||
"""
|
"""
|
||||||
_ref = _node['refuri'].replace('.html', '')
|
_ref = _node['refuri'].replace('.html', '')
|
||||||
_parent_directory_occurrences = _ref.count('..')
|
_parent_directory_occurrences = _ref.count('..')
|
||||||
if not _parent_directory_occurrences: # The ref is already the docname
|
if not _parent_directory_occurrences and '/' not in docname:
|
||||||
|
# The current document is at the root of the documentation source directory
|
||||||
|
# (e.g. docname == 'index'|'applications'|...). i.e., the ref is already the docname.
|
||||||
_docname = _ref
|
_docname = _ref
|
||||||
else:
|
else:
|
||||||
_path_parts = _ref.split('/')
|
_path_parts = _ref.split('/')
|
||||||
|
Loading…
Reference in New Issue
Block a user