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…
	
	Add table
		Add a link
		
	
		Reference in a new issue