diff piecrust/admin/views/menu.py @ 778:5e91bc0e3b4d

internal: Move admin panel code into the piecrust package.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 16 Jul 2016 15:02:24 +0200
parents foodtruck/views/menu.py@3885421c29a3
children c7393ce2dde7
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/piecrust/admin/views/menu.py	Sat Jul 16 15:02:24 2016 +0200
@@ -0,0 +1,68 @@
+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.site.piecrust_app
+    for s in site.sources:
+        if s.is_theme_source:
+            continue
+
+        source_icon = s.config.get('admin_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('.publish'),
+        'title': "Publish",
+        'icon': 'upload'})
+
+    # 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
+
+