Changeset 502


Ignore:
Timestamp:
09/29/08 14:32:07 (5 years ago)
Author:
cbalan
Message:

Menus: - Added ctxtnav support(+path_info re).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/menusplugin/tracmenus/web_ui.py

    r486 r502  
    33# Copyright 2008 Optaros, Inc. 
    44# 
     5import re 
    56 
    67from trac.core import * 
     
    1213class MenuManagerModule(Component): 
    1314    implements(IRequestFilter, ITemplateProvider) 
    14     managed_menus = ListOption('menu-custom', 'managed_menus', 'mainnav,metanav', sep=',',doc=""" """) 
     15    managed_menus = ListOption('menu-custom', 'managed_menus', 'mainnav,metanav', sep=',', doc=""" """) 
    1516    serve_ui_files = BoolOption('menu-custom', 'serve_ui_files', 'true') 
    1617 
     
    2728    def post_process_request(self, req, template, data, content_type): 
    2829        req.chrome['nav_orig'] = req.chrome['nav'].copy() 
     30        if 'ctxtnav' in self.managed_menus and 'ctxtnav' in req.chrome: 
     31            req.chrome['nav_orig']['ctxtnav']=[dict(name='ctxtnav_'+str(idx), label=ctx_label)  
     32                                               for idx, ctx_label in enumerate(req.chrome['ctxtnav'])] 
    2933        for menu_name in self.managed_menus: 
    3034            req.chrome['nav'][menu_name] = list(self._get_menu(req, menu_name,  
    3135                                                               req.chrome['nav_orig'])) 
     36            if menu_name=='ctxtnav': 
     37                req.chrome['ctxtnav'] = [ ctxt_item.get('label') for ctxt_item in req.chrome['nav'][menu_name] ] 
     38                 
    3239        if self.serve_ui_files: 
    3340            add_script(req, 'tracmenus/js/superfish.js') 
     
    4754        for option in sorted(menu_orig+[{'name':key} for key in config_menu.keys()],  
    4855                             key=lambda x:config_menu.get(x['name'],{}).get('order','0')): 
    49             if 'visited' in tree_menu.get(option['name'],[]) or config_menu.get(option['name'],{}).get('enabled', True)==False: 
     56            if 'visited' in tree_menu.get(option['name'],[]) \ 
     57                    or config_menu.get(option['name'],{}).get('enabled', True)==False \ 
     58                    or config_menu.get(option['name'],{}).get('if_path_info', True)==False: 
    5059                continue 
    5160            name=option['name'] 
     
    98107                menu[name].setdefault('label', html.a())(value) 
    99108                continue 
     109            elif prop_name=='path_info': 
     110                menu[name]['if_path_info'] = re.match(value, req.path_info) and True or False 
    100111            menu[name][prop_name]=value 
    101112        return menu, options 
Note: See TracChangeset for help on using the changeset viewer.