tree/page title support
authorTero Marttila <terom@paivola.fi>
Sun, 14 Sep 2014 03:31:47 +0300
changeset 209 e55deb0be237
parent 208 1407c79961ef
child 210 13848af48cb5
tree/page title support
qmsk_www_pages/pages.py
qmsk_www_pages/templates/pages/page.html
--- a/qmsk_www_pages/pages.py	Sun Sep 14 03:22:57 2014 +0300
+++ b/qmsk_www_pages/pages.py	Sun Sep 14 03:31:47 2014 +0300
@@ -120,17 +120,33 @@
             
             yield path, file_name, file_type
 
+    def item_title (self, name):
+        """
+            Lookup item title if exists.
+        """
+
+        title_path = os.path.join(self.path, name + '.title')
+
+        log.info("%s: %s title_path=%s", self, name, title_path)
+
+        if os.path.exists(title_path):
+            return open(title_path).read().strip()
+        else:
+            return None
+
     def list (self):
         """
             Lists all Trees and Pages for this Tree
         """
         
-        for path, file_name, file_type in self.scan():
+        for path, name, file_type in self.scan():
+            title = self.item_title(name) or name
+
             # trees
             if os.path.isdir(path):
-                yield self.url(tree=file_name), file_name, None
+                yield self.url(tree=name), name, None, title
 
-            if file_name == self.INDEX:
+            if name == self.INDEX:
                 continue
             
             # pages
@@ -139,8 +155,8 @@
 
             if file_type not in TYPES:
                 continue
-            
-            yield self.url(page=file_name), file_name, file_type
+
+            yield self.url(page=name), name, file_type, title
 
     def page (self, name):
         """
@@ -167,11 +183,15 @@
                 continue
             
             # out
+            title = self.item_title(file_name)
+
             return page_type(
                 path    = path,
                 name    = name,
                 tree    = self,
                 parents = self.parents + (self, ),
+
+                title   = title,
             )
 
 class Page (object):
--- a/qmsk_www_pages/templates/pages/page.html	Sun Sep 14 03:22:57 2014 +0300
+++ b/qmsk_www_pages/templates/pages/page.html	Sun Sep 14 03:31:47 2014 +0300
@@ -23,13 +23,13 @@
                 <hr />
                 {% endif %}
                 <ul class="nav">
-                    {% for page, name, type in tree.list %}
+                    {% for page, name, type, title in tree.list %}
                     <li class="page-tree-item{% if type %} page-tree-{{type}}{% else %} page-tree-tree{% endif %}{% if name == tree_name %} page-tree-active{% endif %}">
                         <a href="{% url 'page' page %}">
                             {% if not type %}
                             <i class="glyphicon glyphicon-chevron-right"></i>
                             {% endif %}
-                            {{ name }}
+                            {{ title }}
                         </a>
                     </li>
                     {% endfor %}