Add first version of cms_menus.py
This commit is contained in:
parent
878a823e20
commit
c147b48af7
1 changed files with 59 additions and 0 deletions
59
ungleich_page/cms_menus.py
Normal file
59
ungleich_page/cms_menus.py
Normal file
|
@ -0,0 +1,59 @@
|
|||
from menus.base import NavigationNode
|
||||
from menus.menu_pool import menu_pool
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from cms.menu_bases import CMSAttachMenu
|
||||
from cms.templatetags.cms_tags import _get_placeholder
|
||||
from cms.utils.plugins import get_plugins
|
||||
|
||||
|
||||
class TestMenu(CMSAttachMenu):
|
||||
|
||||
name = _("Glasfaser menu")
|
||||
|
||||
def get_nodes(self, request):
|
||||
nodes = []
|
||||
if request and request.current_page:
|
||||
template_context = {
|
||||
"request": request,
|
||||
}
|
||||
placeholder_name_list = [
|
||||
'Top Section', 'Middle Section', 'Glasfaser Services',
|
||||
'Glasfaser About', 'Contact Section'
|
||||
]
|
||||
plugins_list = [
|
||||
'SectionWithImage', 'UngelichContactUsSection',
|
||||
'UngelichTextSection', 'Service', 'About'
|
||||
]
|
||||
for placeholder_name in placeholder_name_list:
|
||||
placeholder = _get_placeholder(
|
||||
request.current_page, request.current_page,
|
||||
template_context, placeholder_name
|
||||
)
|
||||
plugins = get_plugins(
|
||||
request, placeholder, request.current_page.get_template()
|
||||
)
|
||||
for plugin in plugins:
|
||||
if type(plugin).__name__ in plugins_list:
|
||||
section_hash = request.build_absolute_uri()
|
||||
if hasattr(plugin, 'menu_text'):
|
||||
menu_text = plugin.menu_text
|
||||
menu_words = menu_text.split()
|
||||
if len(menu_words) > 0:
|
||||
section_hash = '{}#{}'.format(
|
||||
section_hash,
|
||||
menu_words[0]
|
||||
)
|
||||
else:
|
||||
continue
|
||||
newnode = NavigationNode(
|
||||
menu_text,
|
||||
url=section_hash,
|
||||
id="{}-{}".format(
|
||||
request.current_page.id, plugin.id
|
||||
)
|
||||
)
|
||||
nodes.append(newnode)
|
||||
return nodes
|
||||
|
||||
|
||||
menu_pool.register_menu(TestMenu)
|
Loading…
Reference in a new issue