Browse Source

langmenu plugin

boyska 9 years ago
parent
commit
102fde3931
2 changed files with 44 additions and 0 deletions
  1. 2 0
      pelicanconf.py
  2. 42 0
      plugins/langmenu.py

+ 2 - 0
pelicanconf.py

@@ -48,3 +48,5 @@ THEME = 'themes/bs3'
 BOOTSTRAP_THEME = 'cyborg'
 
 HIDE_SIDEBAR = True
+PLUGIN_PATHS = ['plugins']
+PLUGINS = ['langmenu']

+ 42 - 0
plugins/langmenu.py

@@ -0,0 +1,42 @@
+'''
+This plugin attemps to create something similar to menuitems,
+but more meaningful with respect to l10n
+'''
+from __future__ import print_function
+
+from pelican import signals
+
+
+def add_localmenuitems(generator):
+    menu = {}  # lang: list of pages
+    for page in generator.context['pages']:
+        menu.setdefault(page.lang, [])
+        for tr in page.translations:
+            menu.setdefault(tr.lang, [])
+    print('we have langs ' + ','.join(menu.keys()))
+    for page in sorted(generator.context['pages'],
+                       key=lambda x: x.navbar_sort):
+        defined_langs = []
+        menu[page.lang].append(page)
+        defined_langs.append(page.lang)
+        for tr in page.translations:
+            menu[tr.lang].append(tr)
+            defined_langs.append(tr.lang)
+        for lang in menu.keys():
+            if lang not in defined_langs:
+                menu[lang].append(page)
+
+    menuitems = {}
+    for lang in menu:
+        menuitems[lang] = []
+        for page in menu[lang]:
+            menuitems[lang].append((page.title, page.url))
+
+    print(menuitems['en'])
+    print(menuitems['it'])
+    generator.context['LOCALMENUITEMS'] = menuitems
+
+
+def register():
+    signals.page_generator_finalized.connect(add_localmenuitems)
+    pass