diff foodtruck/views/menu.py @ 587:d4a01a023998

admin: Add "FoodTruck" admin panel from the side experiment project.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 16 Jan 2016 14:24:35 -0800
parents
children 8f9cf1bcbe76
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foodtruck/views/menu.py	Sat Jan 16 14:24:35 2016 -0800
@@ -0,0 +1,63 @@
+from flask import g, request, url_for
+from flask.ext.login import current_user
+
+
+def get_menu_context():
+    entries = []
+    entries.append({
+        'url': '/',
+        'title': "Dashboard",
+        'icon': 'speedometer'})
+
+    site = g.sites.get().piecrust_app
+    for s in site.sources:
+        if s.is_theme_source:
+            continue
+
+        source_icon = s.config.get('foodtruck_icon/document')
+        if s.name == 'pages':
+            source_icon = 'document-text'
+        elif 'blog' in s.name:
+            source_icon = 'filing'
+
+        url_write = url_for('write_page', source_name=s.name)
+        url_listall = url_for('list_source', source_name=s.name)
+
+        ctx = {
+                'url': url_listall,
+                'title': s.name,
+                'icon': source_icon,
+                'entries': [
+                    {'url': url_listall, 'title': "List All"},
+                    {'url': url_write, 'title': "Write New"}
+                    ]
+                }
+        entries.append(ctx)
+
+    entries.append({
+        'url': url_for('settings'),
+        'title': "Settings",
+        'icon': 'gear-b'})
+
+    for e in entries:
+        needs_more_break = False
+        if 'entries' in e:
+            for e2 in e['entries']:
+                if e2['url'] == request.path:
+                    e['open'] = True
+                    e2['active'] = True
+                    needs_more_break = True
+                    break
+        if needs_more_break:
+            break
+
+        if e['url'] == request.path:
+            e['active'] = True
+            break
+
+    data = {'entries': entries,
+            'user': current_user,
+            'url_logout': url_for('logout')}
+    return data
+
+