Skip to content

Commit

Permalink
[IMP] display sibling documents in affixed menu
Browse files Browse the repository at this point in the history
  • Loading branch information
xmo-odoo committed Sep 3, 2014
1 parent 6b8764c commit c037331
Show file tree
Hide file tree
Showing 5 changed files with 209 additions and 116 deletions.
4 changes: 2 additions & 2 deletions doc/_themes/odoodoc/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
{%- block document -%}
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
{# bootstrapify nav #}
{{ toc|replace("<ul>", '<ul class="nav">') }}
{{ toctree(maxdepth=4, collapse=False, includehidden=True,
main_navbar=False, titles_only=False) }}
</div>
</div>
{{ super() }}
Expand Down
52 changes: 31 additions & 21 deletions doc/_themes/odoodoc/sphinx_monkeypatch.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,18 @@ def resolve_toctree(old_resolve, self, *args, **kwargs):
if toc is None:
return None

if main_navbar:
navbarify(toc[0])
navbarify(toc[0], main_navbar=main_navbar)
return toc

@monkey(StandaloneHTMLBuilder)
def _get_local_toctree(old_local, self, *args, **kwargs):
""" _get_local_toctree generates a documentation toctree for the local
document (?), called from handle_page
"""
return old_local(self, *args, main_navbar=True, **kwargs)
# so can call toctree(main_navbar=False)
d = {'main_navbar': True}
d.update(kwargs)
return old_local(self, *args, **d)

# monkeypatch visit_table to remove border and add .table
HTMLTranslator.visit_table = visit_table
Expand All @@ -35,25 +37,33 @@ def _get_local_toctree(old_local, self, *args, **kwargs):
# copy data- attributes straight from source to dest
HTMLTranslator.starttag = starttag_data

def navbarify(node):
def navbarify(node, main_navbar=False):
# add classes to toplevel
node['classes'].extend(['nav', 'navbar-nav', 'navbar-right'])
for list_item in node.children:
# bullet_list
# list_item
# compact_paragraph
# reference
# bullet_list
# list_item
# compact_paragraph
# reference
list_item['classes'].append('dropdown')
# list_item.compact_paragraph.reference
link = list_item.children[0].children[0]
link['classes'].append('dropdown-toggle')
link.attributes['data-toggle'] = 'dropdown'
# list_item.bullet_list
list_item.children[1]['classes'].append('dropdown-menu')
if not main_navbar:
navify([node])
else:
node['classes'].extend(['nav', 'navbar-nav', 'navbar-right'])
for list_item in node.children:
# bullet_list
# list_item
# compact_paragraph
# reference
# bullet_list
# list_item
# compact_paragraph
# reference
list_item['classes'].append('dropdown')
# list_item.compact_paragraph.reference
link = list_item.children[0].children[0]
link['classes'].append('dropdown-toggle')
link.attributes['data-toggle'] = 'dropdown'
# list_item.bullet_list
list_item.children[1]['classes'].append('dropdown-menu')
def navify(nodes):
for node in nodes:
if node.tagname == 'bullet_list':
node['classes'].append('nav')
navify(node.children)

def visit_table(self, node):
"""
Expand Down
106 changes: 71 additions & 35 deletions doc/_themes/odoodoc/static/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -6238,30 +6238,6 @@ body {
width: 25%;
}
}
.sphinxsidebarwrapper {
width: 100%;
}
@media (max-width: 767px) {
.sphinxsidebarwrapper {
display: none !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.sphinxsidebarwrapper {
display: none !important;
}
}
@media print {
.sphinxsidebarwrapper {
display: none !important;
}
}
.sphinxsidebarwrapper > .nav > li > a {
display: none !important;
}
.sphinxsidebarwrapper > .nav .nav .nav .nav {
display: none !important;
}
.btn-outline {
color: #a24689;
background-color: transparent;
Expand Down Expand Up @@ -6362,17 +6338,59 @@ body {
padding-left: 20px;
}
}
/* First level of nav */
/* Side navigation visibility changes */
.sphinxsidebarwrapper > .nav .nav {
display: none;
}
.sphinxsidebarwrapper > .nav li.active > .nav,
.sphinxsidebarwrapper > .nav li.current > .nav {
display: block;
}
/* Side navigation graphical styling */
.sphinxsidebarwrapper {
width: 100%;
/* First level of nav */
/* All levels of nav */
}
@media (max-width: 767px) {
.sphinxsidebarwrapper {
display: none !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.sphinxsidebarwrapper {
display: none !important;
}
}
@media print {
.sphinxsidebarwrapper {
display: none !important;
}
}
.sphinxsidebarwrapper > .nav {
margin-top: 20px;
margin-bottom: 20px;
}
/* All levels of nav */
.sphinxsidebarwrapper .nav > li > a {
font-size: 13px;
font-weight: bold;
padding-left: 20px;
}
.sphinxsidebarwrapper .nav .nav > li > a {
font-size: 12px;
padding-left: 25px;
}
.sphinxsidebarwrapper .nav .nav .nav > li > a {
font-weight: normal;
padding-left: 30px;
}
.sphinxsidebarwrapper .nav .nav .nav .nav > li > a {
font-size: 11px;
padding-left: 35px;
}
.sphinxsidebarwrapper .nav > li > a {
display: block;
padding: 4px 20px;
font-size: 13px;
font-weight: 500;
color: #999;
}
.sphinxsidebarwrapper .nav > li > a:hover,
Expand All @@ -6383,6 +6401,9 @@ body {
background-color: transparent;
border-left: 1px solid #a24689;
}
.sphinxsidebarwrapper .nav > .current > a,
.sphinxsidebarwrapper .nav > .current:hover > a,
.sphinxsidebarwrapper .nav > .current:focus > a,
.sphinxsidebarwrapper .nav > .active > a,
.sphinxsidebarwrapper .nav > .active:hover > a,
.sphinxsidebarwrapper .nav > .active:focus > a {
Expand All @@ -6392,18 +6413,24 @@ body {
background-color: transparent;
border-left: 2px solid #a24689;
}
/* Nav: second level (shown on .active) */
.sphinxsidebarwrapper .nav .nav > li > a:hover,
.sphinxsidebarwrapper .nav .nav > li > a:focus {
padding-left: 24px;
}
.sphinxsidebarwrapper .nav .nav > .current > a,
.sphinxsidebarwrapper .nav .nav > .current:hover > a,
.sphinxsidebarwrapper .nav .nav > .current:focus > a,
.sphinxsidebarwrapper .nav .nav > .active > a,
.sphinxsidebarwrapper .nav .nav > .active:hover > a,
.sphinxsidebarwrapper .nav .nav > .active:focus > a {
padding-left: 23px;
}
.sphinxsidebarwrapper .nav .nav .nav {
display: none;
/* Hide by default, but at >768px, show it */
padding-bottom: 10px;
}
.sphinxsidebarwrapper .nav .nav .nav > li > a {
padding-top: 1px;
padding-bottom: 1px;
padding-left: 30px;
font-size: 12px;
font-weight: normal;
}
.sphinxsidebarwrapper .nav .nav .nav > li > a:hover,
.sphinxsidebarwrapper .nav .nav .nav > li > a:focus {
Expand All @@ -6413,7 +6440,16 @@ body {
.sphinxsidebarwrapper .nav .nav .nav > .active:hover > a,
.sphinxsidebarwrapper .nav .nav .nav > .active:focus > a {
padding-left: 28px;
font-weight: 500;
font-weight: bold;
}
.sphinxsidebarwrapper .nav .nav .nav .nav > li > a:hover,
.sphinxsidebarwrapper .nav .nav .nav .nav > li > a:focus {
padding-left: 34px;
}
.sphinxsidebarwrapper .nav .nav .nav .nav > .active > a,
.sphinxsidebarwrapper .nav .nav .nav .nav > .active:hover > a,
.sphinxsidebarwrapper .nav .nav .nav .nav > .active:focus > a {
padding-left: 33px;
}
/* Show and affix the side nav when space allows it */
@media (min-width: 992px) {
Expand Down
Loading

0 comments on commit c037331

Please sign in to comment.