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