In a view site/menu.html I have the following code to generate a menu with drop down menus.
<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 --> Whether or not a menu item has a drop down menu depends on database queries stored in session: session.site_menu=[ ['Home',request.controller=='site' and request.function=='index',URL('site','index',args=session.id)]] if session.whq: session.site_menu.append(['Whq',request.controller=='whq',URL('whq','index',args=session.id)]) session.WhqDropdown=[] if session.whq.who_we_are: session.WhqDropdown.append(['Wie we zijn',request.function=='whoWeAre',\ URL('whq','whoWeAre',args=session.id)]) if session.whq.what_we_do: session.WhqDropdown.append(['Wat we doen',request.function=='whatWeDo',\ URL('whq','whatWeDo',args=session.id)]) if session.whq.how_we_work: session.WhqDropdown.append(['Hoe we werken',request.function=='howWeWork',\ URL('whq','howWeWork',args=session.id)]) if session.whq.where_we_are: session.WhqDropdown.append(['Waar we zitten',request.function=='whereWeAre',\ URL('whq','whereWeAre',args=session.id)]) if session.cal: session.site_menu.append(['Agenda',request.controller=='calendar',URL('calendar','index',args=session.id)]) session.AgendaDropdown=[] if session.cal.opening_hours: session.AgendaDropdown.append(['Openingstijden',request.function=='openingHours',\ URL('calendar','openingHours',args=session.id)]) if session.cal.event_list: session.AgendaDropdown.append(['Event list',request.function=='eventList',\ URL('calendar','eventList',args=session.id)]) if session.cal.timetable: session.AgendaDropdown.append(['Lesrooster',request.function=='timetable',\ URL('calendar','timetable',args=session.id)]) if session.cal.course_table: session.AgendaDropdown.append(['Cursusrooster',request.function=='courseTable',\ URL('calendar','courseTable',args=session.id)]) return None What the code in the view should generate is: <ul class="nav"> <li class="active"> <a>Home</a> </li> <li class="dropdown"> <a>Whq</a> <ul class="dropdown-menu"></ul> </li> <li class=""dropdown"> <a>Agenda</a> <ul class="dropdown-menu"></ul> </li> <ul> What it does generate is: <ul class="nav"> <li class="active"> <a>Home</a> </li> <li class="dropdown"> <a>Whq</a> <ul class="dropdown-menu"></ul> <li></li> <li></li> <li></li> <li></li> <ul> ## ul with no class name <li class="dropdown"> <a>Agenda</a> <ul class="dropdown-menu></ul> <li></li> <li></li> <li></li> <li></li> <ul></ul> ## empty ul </li> </ul> </li> </ul> There's obviously something wrong with the logic in the view but I don't see what's wrong. Annet.