63 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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 GlasfaserMenu(CMSAttachMenu):
 | |
| 
 | |
|     name = _("Glasfaser menu")
 | |
| 
 | |
|     def get_nodes(self, request):
 | |
|         nodes = []
 | |
|         glasfaser_cms = 'ungleich_page/glasfaser_cms_page.html'
 | |
|         if (request and request.current_page and
 | |
|                 request.current_page.get_template() == glasfaser_cms):
 | |
|             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
 | |
|                             if menu_text.strip() == '':
 | |
|                                 continue
 | |
|                             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(GlasfaserMenu)
 |