In db.py I defined the following table:
db.define_table('cardfunction',
Field('company_id',db.company,default='',notnull=True,unique=True),
Field('home',type='boolean',default=True),
Field('logo',type='boolean',default=False),
Field('tagline',type='boolean',default=False),
Field('image',type='boolean',default=False),
Field('css',type='boolean',default=False),
Field('customcss',type='boolean',default=False),
Field('keywords',type='boolean',default=False),
migrate=False)
Based on this table I would like to generate a menu. In a controller I
got the following code:
if not session.id or session.id!=auth.user.bedrijf_id:
session.id=auth.user.bedrijf_id
session.row=db(db.cardfunction.bedrijf_id==session.id).select(db.cardfunction.ALL)
session.card_menu=[
['Home',...],
['Logo',...],
...
['Keywords',...]]
In a view I got the following code to generate the menu:
{{if session.card_menu:}}
<div class="sidebox" style="margin-top: 24px;">
<ul>
{{for _name,_active,_link in session.card_menu:}}
{{if session.row.home:}}
<li>
<a {{if _active:}} class="active" {{pass}}
href="{{=_link}}">{{=_name}}</a>
</li>
{{else:}}
<li>
{{=_name}}
</li>
{{pass}}
{{if session.row.logo:}}
<li>
<a {{if _active:}} class="active" {{pass}}
href="{{=_link}}">{{=_name}}</a>
</li>
{{else:}}
<li>
{{=_name}}
</li>
{{pass}}
.....
{{pass}}
</ul>
</div> <!-- sidebox -->
{{pass}}
I wonder whether there is a more efficient way to generate the menu,
e.g. using an index instead of the field names: session.row.field_i
where i ranges from 0 to 7.
Kind regards,
Annet.