thank you Massimo, I wanted to generate valid html and I was not able
to embed, for subcategories, <ul> inside <li> directly using the
web2py html helpers.
It won me this round (time presion), but I build it just as html and
got it working as follow:


def catree():
    # Identificando a las categorías raíces o de primer nivel
    supercategorias =
db(db.t_categoria.supercategoria==None).select(db.t_categoria.id,db.t_categoria.nombre)

    htmlmenu = '<ul id="catree">'

    # Generando 1er nivel del árbol de categorías
    for supercat in supercategorias:
        htmlmenu+='<li class="catree_1">'+supercat.nombre

        # Identificando categorías de 2do nivel
        
cats=db(db.t_categoria.supercategoria==supercat.id).select(db.t_categoria.nombre,db.t_categoria.id)

        if cats:
            htmlmenu+='<ul>'
            # Generando 2do nivel del árbol de categorías
            for cat in cats:
                htmlmenu+=str(LI(A(cat.nombre,
_href=URL(f=articulo,args=cat.id),cid="caja"), _class="catree_2"))
            htmlmenu+='</ul>'
        htmlmenu+='</li>'
    htmlmenu+='</ul>'

    return dict(htmlmenu=XML(htmlmenu))

I love web2py as my only framework, thank you Massimo for build it and
all the community for keep improving it :)

2011/2/14 Massimo Di Pierro <massimo.dipie...@gmail.com>:
> This
>
> def catree2():
>    supercategorias =
> db(db.t_categoria.supercategoria==None).select(db.t_categoria.id,db.t_categ
> oria.nombre)
>    catree = []
>    for supercat in supercategorias:
>        catree.append([supercat.nombre,False,'link'])
>        cats =
> db(db.t_categoria.supercategoria==supercat.id).select(db.t_categoria.nombre 
> ,db.t_categoria.id)
>        for cat in cats:
>            catree[-1].append([cat.nombre,False,'link'])
>
> should be
>
> def catree2():
>    supercategorias =
> db(db.t_categoria.supercategoria==None).select(db.t_categoria.id,db.t_categ
> oria.nombre)
>    catree = []
>    for supercat in supercategorias:
>        catree.append([supercat.nombre,False,'link',[]])
>        cats =
> db(db.t_categoria.supercategoria==supercat.id).select(db.t_categoria.nombre 
> ,db.t_categoria.id)
>        for cat in cats:
>            catree[-1].append([cat.nombre,False,'link'])
>
> also URL('#') should just be '#'.
>
>
>
> On Feb 14, 7:19 am, danto <web2py.n...@gmail.com> wrote:
>> Hi, I attached the whole ticket.
>>
>> thanks in advance for any help.
>>
>> the controller remains as:
>>
>> CONTROLLER:
>> =======================
>> def catree2():
>>     supercategorias =
>> db(db.t_categoria.supercategoria==None).select(db.t_categoria.id,db.t_categ 
>> oria.nombre)
>>
>>     catree = []
>>
>>     for supercat in supercategorias:
>>         catree.append([supercat.nombre,False,'link'])
>>         cats = 
>> db(db.t_categoria.supercategoria==supercat.id).select(db.t_categoria.nombre 
>> ,db.t_categoria.id)
>>         for cat in cats:
>>             catree[-1].append([cat.nombre,False,'link'])
>>
>>     """
>>     for supercats in supercategorias:
>>         #me.append(LI(A(supercats.nombre, _href="#"),_class="catree_1"))
>>         response.menu+=[(supercats.nombre,False,URL('#'))]
>>
>>         # Identtificando categorías de 2do nivel
>>         
>> cats=db(db.t_categoria.supercategoria==supercats.id).select(db.t_categoria. 
>> nombre,db.t_categoria.id)
>>
>>         for cat in cats:
>>             response.menu.append([cat.nombre,False,URL('#')])
>>     """
>>
>>     return dict(catree=catree)
>>     #return locals()

Reply via email to