Part of my application is nodeID driven, therefore I need to be able to 
force the menu to be generated when ids don't match, I thought I'd solve 
the problem by having a function that generates the menu in session:

def index():
    if request.args(0)!=session.id or not len(request.args):
        redirect(URL('addressbook','router',args=request.args(0)))
    else:
        if not session.site or session.site.nodeID!=session.id:
            ....
        if not session.cal or session.cal.nodeID!=session.id:
            
session.cal=db((db.Calendar.nodeID==session.id)&(db.Calendar.hubID==LEONEXUSID)).select(db.Calendar.ALL).first()
            adjustmenu=True
        if not session.about or session.about.nodeID!=session.id:
            
session.about=db((db.About.nodeID==session.id)&(db.About.hubID==LEONEXUSID)).select(db.About.ALL).first()
            adjustmenu=True
        if adjustmenu:
            menu()
        ....
    return dict(row=row)


def menu():
    session.plural=False ## in order to determine whether function names 
should be plural or singular
    session.site_menu=[
    ['Home',request.controller=='site' and 
request.function=='index',URL('site','index',args=session.id)]]
    if session.about:
        
session.site_menu.append([T('About'),request.controller=='about',URL('about','index',args=session.id)])
        session.AboutDropdown=[]
        if session.about.wie_we_zijn:
            session.AboutDropdown.append(['Wie we 
zijn',request.function=='whoWeAre',\
            URL('about','whoWeAre',args=session.id)])
            session.plural=True
       ...
    if session.cal:
        
session.site_menu.append([T('Calendar'),request.controller=='calendar',URL('calendar','index',args=session.id)])
        session.CalendarDropdown=[]
        if session.cal.openingstijden:
            
session.CalendarDropdown.append(['Openingstijden',request.function=='openingHours',\
            URL('calendar','openingHours',args=session.id)])
       ...
    return None


The problem is that Home always has class="active"


<div class="nav-collapse">
   <ul class="nav">
     {{for _name,_active,_link in session.site_menu:}}
       {{if session['%sDropdown' % _name]:}}
         <li class="dropdown" {{if _active:}} class="active" {{pass}}>
           <a href="" class="dropdown-toggle" 
data-toggle="dropdown">{{=_name}}
           <b class="caret"></b></a>
           <ul class="dropdown-menu">
           {{for _name,_active,_link in session['%sDropdown' % _name]:}}
             <li {{if _active:}} class="active" {{pass}}>
               <a href="{{=_link}}">{{=_name}}</a>
             </li>
           {{pass}}
           </ul>
         </li>
       {{else:}}
         <li {{if _active:}} class="active" {{pass}}>
           <a href="{{=_link}}">{{=_name}}</a>
         </li>
       {{pass}}
     {{pass}}
   </ul>
 </div><!--/.nav-collapse -->


I think what I am looking for is a way to replace this line of code:


<li {{if _active:}} class="active" {{pass}}>


Kind regards,

Annet

Reply via email to