got this all working now:

response.ttt = 
db((db.page.showinmenu==1)&(db.page.active==1)).select(db.page.id, 
db.page.menutext, db.page.pageurl, db.page.parent, 
orderby=db.page.parent|db.page.sort|db.page.menutext)
response.tttmenu = [dict(),dict()]
for subpage in response.ttt:
    response.tttmenu[0][str(subpage.id)] = [subpage.menutext, 
subpage.pageurl, subpage.parent]
    if str(subpage.parent) in response.tttmenu[1]:
        response.tttmenu[1][str(subpage.parent)].append(subpage.id)
    else:
        response.tttmenu[1][str(subpage.parent)] = [subpage.id]

def buildmenu(parent, menu):
    html = []
    if menu[1][str(parent)]:
        for itemid in menu[1][str(parent)]:
            if str(itemid) in menu[1]:
                #children
                pageurlarg=str(menu[0][str(itemid)][1])
                html.append((str(menu[0][str(itemid)][0]), False, 
URL('aptcms', 'pages', 'index', args=pageurlarg.split("/")), 
buildmenu(itemid, menu)))
            else:
                #no children
                pageurlarg=str(menu[0][str(itemid)][1])
                html.append((str(menu[0][str(itemid)][0]), False, 
URL('aptcms', 'pages', 'index', args=pageurlarg.split("/"))))
    return html

response.menu = buildmenu(0, response.tttmenu)

Reply via email to