File tree Expand file tree Collapse file tree 4 files changed +59
-10
lines changed
Expand file tree Collapse file tree 4 files changed +59
-10
lines changed Original file line number Diff line number Diff line change 11<!DOCTYPE html>
2- {% load i18n feincms3_pages %}
2+ {% load i18n menus %}
33< html lang ="{{ request.LANGUAGE_CODE }} ">
44< head >
55 < title > {% block title %}feincms3{% endblock %}</ title >
@@ -90,11 +90,10 @@ <h1><a href="/{{ request.LANGUAGE_CODE }}/">feincms3</a></h1>
9090 </ nav >
9191 </ header >
9292
93- {% menu "main" level=1 language_code=page.language_code as nav %}
93+ {% menus as menus %}
9494 < nav class ="nav main-nav ">
95- {% for p in nav %}
96- {% is_descendant_of page p include_self=True as active %}
97- < a {% if active %}class ="active "{% endif %}
95+ {% for p in menus.main %}
96+ < a {% if p.id in page.cte_path %}class ="active "{% endif %}
9897 href ="{{ p.get_absolute_url }} "> {{ p }}</ a >
9998 {% endfor %}
10099 </ nav >
@@ -103,11 +102,9 @@ <h1><a href="/{{ request.LANGUAGE_CODE }}/">feincms3</a></h1>
103102 {% block content %}{% endblock %}
104103 </ div >
105104
106- {% menu "footer" level=1 language_code=page.language_code as nav %}
107105 < nav class ="nav footer-nav ">
108- {% for p in nav %}
109- {% is_descendant_of page p include_self=True as active %}
110- < a {% if active %}class ="active "{% endif %}
106+ {% for p in menus.footer %}
107+ < a {% if p.id in page.cte_path %}class ="active "{% endif %}
111108 href ="{{ p.get_absolute_url }} "> {{ p }}</ a >
112109 {% endfor %}
113110 </ nav >
Original file line number Diff line number Diff line change 1+ from collections import defaultdict
2+
3+ from django import template
4+ from django .db .models import Q
5+ from django .utils .translation import get_language
6+
7+ from app .pages .models import Page
8+
9+
10+ register = template .Library ()
11+
12+
13+ @register .simple_tag
14+ def menus ():
15+ menus = defaultdict (list )
16+ pages = Page .objects .filter (
17+ Q (is_active = True ),
18+ Q (language_code = get_language ()),
19+ ~ Q (menu = '' ),
20+ ).extra (
21+ where = ['depth BETWEEN 2 AND 3' ],
22+ )
23+ for page in pages :
24+ menus [page .menu ].append (page )
25+ return menus
26+
27+
28+ @register .filter
29+ def group_by_tree (iterable ):
30+ """
31+ Given a list of pages in tree order, generate pairs consisting of the
32+ parents and their descendants in a list.
33+ """
34+
35+ parent = None
36+ children = []
37+ depth = - 1
38+
39+ for element in iterable :
40+ if parent is None or element .depth == depth :
41+ if parent :
42+ yield parent , children
43+ parent = None
44+ children = []
45+
46+ parent = element
47+ depth = element .depth
48+ else :
49+ children .append (element )
50+
51+ if parent :
52+ yield parent , children
Original file line number Diff line number Diff line change 1- Django
1+ Django < 1.11 # django-versatileimagefield is not there yet.
22feincms3 [all ]
33psycopg2
44pytz
You can’t perform that action at this time.
0 commit comments