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