diff --git a/assets/css/devportal.css b/assets/css/devportal.css
index 0558e0b11c..e1b962b12d 100644
--- a/assets/css/devportal.css
+++ b/assets/css/devportal.css
@@ -334,14 +334,39 @@ pre code {
.level-3 {
list-style-type: square;
margin-left: 45px;
- color: #888;
+ color: #555;
}
.level-3 a {
- color: #888;
+ color: #555;
}
.level-3 a:hover {
color: #333;
}
+.level-4 {
+ margin-left: 60px;
+ color: #888;
+}
+.level-4 a {
+ color: #888;
+}
+.level-4 a:hover {
+ color: #333;
+}
+.level-5 {
+ margin-left: 75px;
+ list-style-type: circle;
+ color: #aaa;
+}
+.level-5 a {
+ color: #aaa;
+}
+.level-5 a:hover {
+ color: #333;
+}
+.level-6 {
+ /* Probably not used */
+ margin-left: 90px;
+}
.foot-nav-col .children-display li {
list-style-type: none;
diff --git a/tool/template-footer.html b/tool/template-footer.html
index 7051836fa1..0077903cf4 100644
--- a/tool/template-footer.html
+++ b/tool/template-footer.html
@@ -8,7 +8,7 @@
diff --git a/tool/template-landing-docs.html b/tool/template-landing-docs.html
index a502980583..2e7aa49580 100644
--- a/tool/template-landing-docs.html
+++ b/tool/template-landing-docs.html
@@ -26,7 +26,7 @@
{{currentpage.doc_type_blurbs[page.doc_type]}}
{% endif %}
{% set parent_page = doc_type_top %}
- {% set depth = 1 %}
+ {% set depth = 1.5 %}
{% include 'template-page-children.html' %}
@@ -92,7 +92,7 @@
{% set parent_page = currentpage %}
- {% set depth = 3 %}
+ {% set depth = 5 %}
{% include 'template-page-children.html' %}
diff --git a/tool/template-page-children.html b/tool/template-page-children.html
index f08c5c7057..81ba4134c3 100644
--- a/tool/template-page-children.html
+++ b/tool/template-page-children.html
@@ -8,24 +8,22 @@
{% if parent_page.funnel is undefined %}
{% set parent_level = "home" %}
{% set level_2 = "funnel" %}
- {% set level_3 = "doc_type" %}
{% set childpages = pages %}{# special case for home #}
{% elif parent_page == pages|selectattr("funnel", "equalto", parent_page.funnel)|first %}
{% set parent_level = "funnel" %}
{% set level_2 = "doc_type" %}
- {% set level_3 = "category" %}
{% elif parent_page == pages|selectattr("doc_type", "equalto", parent_page.doc_type)|first %}
{% set parent_level = "doc_type" %}
+ {% set level_2 = "supercategory" %}
+{% elif parent_page == pages|selectattr("supercategory", "equalto", parent_page.supercategory)|first %}
+ {% set parent_level = "supercategory" %}
{% set level_2 = "category" %}
- {% set level_3 = "subcategory" %}
{% elif parent_page == pages|selectattr("category", "equalto", parent_page.category)|first %}
{% set parent_level = "category" %}
{% set level_2 = "subcategory" %}
- {% set level_3 = None %}
{% elif parent_page == pages|selectattr("subcategory", "equalto", parent_page.subcategory)|first %}
{% set parent_level = "subcategory" %}
{% set level_2 = None %}
- {% set level_3 = None %}
{% else %}
{% endif %}
@@ -34,45 +32,74 @@
{% set childpages = pages|selectattr(parent_level, "equalto", parent_page[parent_level])|list %}
{% endif %}
+{% macro print_children(parent, thosepages, indent_level, next_level_field, depth_limit) %}
+ {% set printed_next_levels = [] %}
+ {% for onepage in thosepages %}
+ {% if onepage == parent %}{# pass #}
+ {% elif next_level_field == None or (onepage[next_level_field] is undefined and next_level_field != "supercategory") %}
+ {# direct child, print it! #}
+ {{onepage.name}}
+
+ {% elif onepage[next_level_field] is undefined and next_level_field == "supercategory" %}
+ {# special case, might need to skip "supercategory" #}
+
+ {% if onepage.category is defined %}
+ {# possible direct child or grandchild due to skipped level #}
+
+ {% if onepage.category not in printed_next_levels %}
+ {% set next_level_children = thosepages|selectattr("category",
+ "equalto", onepage.category)|list %}
+ {% set next_level_parent = next_level_children|first %}
+ {{next_level_parent.name}}
+ {% if indent_level+1 <= depth_limit and next_level_field != None %}
+ {# Recurse! #}
+ {% set field_after = "subcategory" %}
+ {{ print_children(next_level_parent, next_level_children, indent_level+1, field_after, depth_limit) }}
+ {% endif %}
+ {% set _ = printed_next_levels.append(onepage.category) %}
+ {% endif %}
+
+ {% else %}
+
+ {{onepage.html}}
+ {% endif %}
+
+ {% elif onepage[next_level_field] is defined %}
+ {# might be a grandchild or lower #}
+ {% if onepage[next_level_field] not in printed_next_levels %}
+ {% set next_level_children = thosepages|selectattr(next_level_field,
+ "equalto", onepage[next_level_field])|list %}
+ {% set next_level_parent = next_level_children|first %}
+ {{next_level_parent.name}}
+ {% if (indent_level+1 <= depth_limit and next_level_field != None)
+ or (next_level_field == "supercategory" and depth_limit == 1.5) %}
+ {# Recurse! #}
+
+ {# figure out what level to use next #}
+ {% if next_level_field == "subcategory" %}
+ {% set field_after = None %}
+ {% elif next_level_field == "category" %}
+ {% set field_after = "subcategory" %}
+ {% elif next_level_field == "supercategory" %}
+ {% set field_after = "category" %}
+ {% elif next_level_field == "doc_type" %}
+ {% set field_after = "supercategory" %}
+ {% elif next_level_field == "funnel" %}
+ {% set field_after = "doc_type" %}
+ {% else %}
+
+ {% endif %}
+
+ {{ print_children(next_level_parent, next_level_children, indent_level+1, field_after, depth_limit) }}
+ {% endif %}
+ {% set _ = printed_next_levels.append(onepage[next_level_field]) %}
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+{% endmacro %}
+
- {% set printed_level2s = [] %}
- {% for page in childpages %}
- {% if page == parent_page %}{# skip parent #}
- {% elif level_2 == None or page[level_2] is undefined %}
- - {{page.name}}
- {% elif page[level_2] is defined %}
- {% if page[level_2] not in printed_level2s %}
- {% set printed_level3s = [] %}
- {% set subpages = childpages|selectattr(level_2, "equalto", page[level_2])|list %}
- {% for subpage in subpages %}
- {% if loop.index == 1 %}
- - {{subpage.name}}
- {% else %}
- {% if depth > 1 %}
- {% if level_3 == None or subpage[level_3] is undefined %}
- - {{subpage.name}}
- {% elif subpage[level_3] is defined %}
- {% if subpage[level_3] not in printed_level3s %}
- {% for subsubpage in subpages|selectattr(level_3, "equalto", subpage[level_3])|list %}
- {% if loop.index == 1 %}
- - {{subsubpage.name}}
- {% elif depth > 2 %}
- - {{subsubpage.name}}
- {% endif %}
- {% endfor %}
- {% set _ = printed_level3s.append(subpage[level_3]) %}
- {% endif %}
- {% endif %}
-
- {% endif %}
- {% endif %}
- {% endfor %}
- {% set _ = printed_level2s.append(page[level_2]) %}
- {% endif %}
- {% else %}
-
- {% endif %}
- {% endfor %}
+ {{ print_children(parent_page, childpages, 1, level_2, depth) }}