pages: tree breadcrumb
authorTero Marttila <terom@paivola.fi>
Sun, 14 Sep 2014 01:45:17 +0300
changeset 201 edcbbc94f90d
parent 200 1757261f2b95
child 202 da5de3a97efb
pages: tree breadcrumb
qmsk_www_pages/pages.py
qmsk_www_pages/templates/pages/page.html
qmsk_www_pages/views.py
--- a/qmsk_www_pages/pages.py	Sun Sep 14 01:37:10 2014 +0300
+++ b/qmsk_www_pages/pages.py	Sun Sep 14 01:45:17 2014 +0300
@@ -48,6 +48,16 @@
 
         return path
 
+    def breadcrumb (self):
+        path = []
+
+        yield '', 'Home'
+
+        for part in self.parts:
+            path.append(part)
+
+            yield '/'.join(path) + '/', part
+
     def scan (self):
         """
             Scan for files in tree.
@@ -168,23 +178,18 @@
         self.tree = tree
         self.encoding = encoding
 
+    def url (self):
+        return self.tree.url(page=self.name)
+
     def open (self):
         return codecs.open(self.path, encoding=self.encoding)
 
     def breadcrumb (self):
-        path = []
-
-        yield '', 'Home'
-
-        for part in self.tree.parts:
-            path.append(part)
-
-            yield '/'.join(path) + '/', part
+        for path, name in self.tree.breadcrumb():
+            yield path, name
         
         if self.name != self.tree.INDEX:
-            path.append(self.name)
-
-            yield '/'.join(path), self.name
+            yield self.url(), self.name
 
     def render (self, request):
         raise NotImplementedError()
--- a/qmsk_www_pages/templates/pages/page.html	Sun Sep 14 01:37:10 2014 +0300
+++ b/qmsk_www_pages/templates/pages/page.html	Sun Sep 14 01:45:17 2014 +0300
@@ -19,9 +19,17 @@
         </div>
         <div class="row">
             <div class="col-sm-2 pages-tree">
+                {% for page, name in tree_breadcrumb %}
+                <ul class="nav">
+                    <li><a href="{% url 'page' page %}">{{ name }}</a></li>
+                </ul>
+                <hr />
+                {% endfor %}
                 <ul class="nav">
                     {% for page, name in page_list %}
-                    <li><a href="{% url 'page' page %}">{{ name }}</a></li>
+                    <li class="page-tree-item {% if name == page_name %}page-tree-active{% endif %}">
+                        <a href="{% url 'page' page %}">{{ name }}</a>
+                    </li>
                     {% endfor %}
                 </ul>
             </div>
--- a/qmsk_www_pages/views.py	Sun Sep 14 01:37:10 2014 +0300
+++ b/qmsk_www_pages/views.py	Sun Sep 14 01:45:17 2014 +0300
@@ -11,6 +11,7 @@
         raise Http404
 
     return render(request, 'pages/page.html', dict(
+            tree_breadcrumb = page.tree.breadcrumb(),
             page_name       = page.name,
             page_breadcrumb = page.breadcrumb(),
             page_list       = page.tree.list(),