diff --git a/test_input/templates/base.html b/test_input/templates/base.html index 4c90851..c6fde94 100644 --- a/test_input/templates/base.html +++ b/test_input/templates/base.html @@ -3,6 +3,8 @@ {{page_title}} + {{menu}} +
{{content}}
Created: {{content_creation_time.strftime('%d.%m.%Y %H:%M:%S')}}
diff --git a/test_input/testblog.py b/test_input/testblog.py index acffdf1..3316839 100644 --- a/test_input/testblog.py +++ b/test_input/testblog.py @@ -8,13 +8,22 @@ from verdandi.modules.page import Page class TestPage1(Page): title = "A cool new Page" + menu_title = "New Page" + menu_label = "new_cool_page" + class TestPage2(Page): title = "An other cool Page" url = "page2.html" + menu_title = "Other new Page" + menu_label = "cool_page1" + class TestPage3(Page): title = "Yet an other cool Page" + menu_title = "Other new Page2" + menu_label = "cool_page2" + menu_parent = "cool_page1" url = "subdir/page3.html" diff --git a/verdandi/mixins/menuitemmixin.py b/verdandi/mixins/menuitemmixin.py index 8cba70f..50893f9 100644 --- a/verdandi/mixins/menuitemmixin.py +++ b/verdandi/mixins/menuitemmixin.py @@ -6,6 +6,8 @@ class MenuItemMixin(object): menu_label = None menu_parent = None url = "index.html" + + menu_items = None def process_message(self, message): if message == None: @@ -14,5 +16,72 @@ class MenuItemMixin(object): 'parent' : self.menu_parent, 'label' : self.menu_label, 'url' : self.url}] + elif message['type'] == 'menu_add_item': + + if self.menu_items == None: + self.menu_items = {} + + label = message['label'] + if label in self.menu_items.keys(): + print '[Warn] Depulicate menu item label: %s in %s' % (label, self.menu_label) + return [] + + self.menu_items[label] = {} + + for key in ['title', 'parent', 'label', 'url']: + self.menu_items[label][key] = message[key] return [] + + + def get_menu_path(self): + path = [self.menu_label] + while self.menu_items[path[0]]['parent'] != None: + path = [self.menu_items[path[0]]['parent']] + path + + return path + + + def get_menu_level(self, parent): + return filter(lambda x: x['parent'] == parent, self.menu_items.values()) + + + def generate_levels(self, path): + level = path[0] + next_level = None + if len(path) > 1: + next_level = path[1] + + res = '' + + return res + + def generate_menu(self): + + path = self.get_menu_path() + + return self.generate_levels([None] + path) + + + def get_context(self): + context = super(MenuItemMixin, self).get_context() + + context['menu'] = self.generate_menu() + + return context + diff --git a/verdandi/modules/page.py b/verdandi/modules/page.py index afd8775..df67ea8 100644 --- a/verdandi/modules/page.py +++ b/verdandi/modules/page.py @@ -8,7 +8,7 @@ from verdandi.mixins.templatemixin import TemplateMixin from verdandi.mixins.menuitemmixin import MenuItemMixin from verdandi.constants import CONTENT_DIRECTORY -class Page(TemplateMixin, MenuItemMixin): +class Page(MenuItemMixin, TemplateMixin): title = "Page Title" content_file = "content.md"