Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nav menu change with drop-downs #5750

Merged
merged 5 commits into from May 3, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
42 changes: 28 additions & 14 deletions pants-plugins/src/python/internal_backend/sitegen/tasks/sitegen.py
Expand Up @@ -251,22 +251,36 @@ def generate_site_toc(config, precomputed, here):

def recurse(tree, depth_so_far):
for node in tree:
if 'collapsible_heading' in node and 'pages' in node:
heading = node['collapsible_heading']
pages = node['pages']
links = []
collapse_open = False
for cur_page in pages:
html_filename = '{}.html'.format(cur_page)
page_is_here = cur_page == here
if page_is_here:
link = html_filename
collapse_open = True
else:
link = os.path.relpath(html_filename, os.path.dirname(here))
links.append(dict(link=link, text=precomputed.page[cur_page].title, here=page_is_here))
site_toc.append(dict(depth=depth_so_far, links=links, dropdown=True, heading=heading, id=heading.replace(' ', '-'), open=collapse_open))
if 'heading' in node:
heading = node['heading']
site_toc.append(dict(depth=depth_so_far,
link=None,
text=heading,
here=False))
if 'page' in node and node['page'] != 'index':
dst = node['page']
if dst == here:
link = here + '.html'
else:
link = os.path.relpath(dst + '.html', os.path.dirname(here))
site_toc.append(dict(depth=depth_so_far,
link=link,
text=precomputed.page[dst].title,
here=(dst == here)))
site_toc.append(dict(depth=depth_so_far, links=None, dropdown=False, heading=heading, id=heading.replace(' ', '-')))
if 'pages' in node and not 'collapsible_heading' in node:
pages = node['pages']
links = []
for cur_page in pages:
html_filename = '{}.html'.format(cur_page)
page_is_here = cur_page == here
if page_is_here:
link = html_filename
else:
link = os.path.relpath(html_filename, os.path.dirname(here))
links.append(dict(link=link, text=precomputed.page[cur_page].title, here=page_is_here))
site_toc.append(dict(depth=depth_so_far, links=links, dropdown=False, heading=None, id=heading.replace(' ', '-')))
if 'children' in node:
recurse(node['children'], depth_so_far + 1)
if 'tree' in config:
Expand Down
Expand Up @@ -29,8 +29,13 @@
"tree": [
{ "page": "index",
"children": [
{ "page": "subdir/page1" },
{ "page": "subdir/page2" }
{"heading": "non_collapse"},
{ "pages": ["subdir/page1"] },
{"collapsible_heading" : "collapse",
"pages": ["subdir/page2",
"index"
]
}
]
}
],
Expand Down Expand Up @@ -196,11 +201,11 @@ def test_site_toc(self):
self.precomputed,
"""
{{#site_toc}}
DEPTH={{depth}} LINK={{link}} TEXT={{text}}
DEPTH={{depth}} LINK={{links}} HEADING={{heading}}
{{/site_toc}}
""")
self.assertIn(u'DEPTH=1 LINK=subdir/page1.html TEXT=東京 is Tokyo', rendered)
self.assertIn('DEPTH=1 LINK=subdir/page2.html TEXT=Page 2: Electric Boogaloo', rendered)
self.assertIn("DEPTH=1 LINK=None HEADING=non_collapse", rendered)
self.assertIn(u"DEPTH=1 LINK=[{'text': u'Page 2: Electric Boogaloo', 'link': u'subdir/page2.html', 'here': False}, {'text': u'Pants Build System', 'link': u'index.html', 'here': True}] HEADING=collapse", rendered)

def test_transform_fixes_up_internal_links(self):
sitegen.transform_soups(self.config, self.soups, self.precomputed)
Expand Down
32 changes: 23 additions & 9 deletions src/docs/docsite.html.mustache
Expand Up @@ -69,16 +69,30 @@
<div class="site-toc">
<ul>
{{#site_toc}}
{{#link}}
<li class="toc-h{{depth}} toc-link {{#here}}toc-here{{/here}}">
{{^here}}<a href="{{link}}">{{/here}}{{text}}{{^here}}</a>{{/here}}
{{#dropdown}}
<li class="toc-h{{depth}}">
<a class="sidebar-nav-heading" class="toc-drop" data-toggle="collapse" href="#{{id}}" aria-expanded="false" aria-controls="{{id}}">{{heading}}<span class="caret"></span></a>
<ul class="{{^open}}collapse sidebar-nav sidebar-submenu{{/open}}" id="{{id}}">
{{#links}}
<li class="toc-h{{depth}} toc-link {{#here}}toc-here{{/here}}">
{{^here}}<a href="{{link}}">{{/here}}{{text}}{{^here}}</a>{{/here}}
</li>
{{/links}}
</ul>
</li>
{{/link}}
{{^link}}
<li class="toc-h{{depth}} toc-heading">
{{text}}
</li>
{{/link}}
{{/dropdown}}
{{^dropdown}}
{{#links}}
<li class="toc-h{{depth}} toc-link {{#here}}toc-here{{/here}}">
{{^here}}<a href="{{link}}">{{/here}}{{text}}{{^here}}</a>{{/here}}
</li>
{{/links}}
{{^links}}
<li class="toc-h{{depth}} toc-heading">
{{heading}}
</li>
{{/links}}
{{/dropdown}}
{{/site_toc}}
</ul>
</div> <!-- site-toc -->
Expand Down
130 changes: 74 additions & 56 deletions src/docs/docsite.json
Expand Up @@ -115,64 +115,82 @@
"tree": [
{ "page": "index",
"children": [
{ "heading": "Getting Started" },
{ "page": "install" },
{ "page": "setup_repo" },
{ "page": "first_tutorial" },
{ "page": "common_tasks" },

{ "heading": "Pants Basics"},
{ "page": "why_use_pants" },
{ "page": "first_concepts" },
{ "page": "build_files" },
{ "page": "target_addresses" },
{ "page": "3rdparty" },
{ "page": "options"},
{ "page": "invoking" },
{ "page": "reporting_server" },
{ "page": "ide_support" },
{"heading": "Getting Started"},
{"pages": [
"install",
"setup_repo",
"first_tutorial",
"common_tasks"
]

},
{"heading": "Pants Basics"},
{"pages" : [
"why_use_pants",
"first_concepts",
"build_files",
"target_addresses",
"3rdparty",
"options",
"invoking",
"reporting_server",
"ide_support"
]
},
{"collapsible_heading": "JVM Support",
"pages" : [
"jvm_projects",
"3rdparty_jvm",
"scala",
"publish",
"from_maven"
]
},
{"collapsible_heading": "Python Support",
"pages" : [
"python_readme",
"3rdparty_py"
]
},
{"pages" : ["go_readme"]},
{"heading": "Code & Doc Generation"},
{"pages" : [
"thrift_deps",
"page"
]
},
{"heading": "Getting Help"},
{"pages" : [
"tshoot",
"community"
]
},
{"heading": "Reference"},
{"pages" : [
"build_dictionary",
"options_reference"
]
},
{"collapsible_heading": "Release Notes",
"pages" : [
"notes-1.6.x",
"notes-1.5.x",
"notes-1.4.x",
"notes-1.3.x",
"notes-1.2.x",
"notes-1.1.x",
"notes-1.0.x",
"notes-master"
]
},
{"heading": "Developer"},
{"pages" : [
"dev",
"export"
]
}

{ "heading": "JVM" },
{ "page": "jvm_projects" },
{ "page": "3rdparty_jvm" },
{ "page": "scala" },
{ "page": "publish" },
{ "page": "from_maven" },

{ "heading": "Python" },
{ "page": "python_readme" },
{ "page": "3rdparty_py" },

{ "heading": "Go" },
{ "page": "go_readme" },

{"heading": "Codegen"},
{ "page": "thrift_deps" },

{"heading": "Docgen"},
{ "page": "page" },

{"heading": "Getting Help"},
{ "page": "tshoot" },
{ "page": "community" },

{ "heading": "Reference"},
{ "page": "build_dictionary" },
{ "page": "options_reference" },

{ "heading": "Release Notes"},
{ "page": "notes-1.6.x" },
{ "page": "notes-1.5.x" },
{ "page": "notes-1.4.x" },
{ "page": "notes-1.3.x" },
{ "page": "notes-1.2.x" },
{ "page": "notes-1.1.x" },
{ "page": "notes-1.0.x" },
{ "page": "notes-master" },

{ "heading": "Developer"},
{ "page": "dev" },
{ "page": "export"}
]
}
],
Expand Down