I really don't understand what are you missing.
Please post an example of what you want and an example on where you are
stuck.
PS: if "thesomething" you want to print comes as a result from a function,
why is difficult to do
def afunction(a, b):
return a + b
def yourcontroller():
thesomething = afunction(4,5)
response.menu.append(
(thesomething, False, URL('bla bla'))
)
return dict()
Il giorno mercoledì 29 maggio 2013 15:33:10 UTC+2, greaneym ha scritto:
>
> Niphlod,
> I am reposting with more questions on menus.
> Thank you, your response did clear up some questions.
>
> I want to have a menu item that shows the current total value of a
> calculation,
> as well as a sparkline chart showing the values of a time series.
>
> From the web2py-users, it seems that the menu tuple can be modified, the
> first and third elements of the tuple can be nested helper lists and the
> boolean in the middle can be used to turn on/off menu items, or just left
> alone. The boolean is what you call the "active" element, I think.
>
> but I need to see more examples of nested helpers. In meantime more
> experimenting.
> Here is something closer to what I need using your suggestion of putting
> test1 into myresult,
> which only works if I put it in the model file above the menu.
> It's not styled yet, but it has values appearing in the menu.
> <see jpg>
>
> Can you please help me figure out how to put the variable in the menu when
> it's coming from a controller function instead like test1? That is where
> most of my functions are.
>
> models/menusample.py contains
> def test1():
> a = 20
> b = 30
> myval = a+b
> return myval
>
> myresult = test1()
>
> response.menu = [
> (CAT(T('Power Production'),BR(),B(myresult),B('W'),BR(),A('Today''s
> Peak',_href=URL('default','index')), myresult, 'W'), False,[]), #nearly
> (CAT(T('Daily
> Production'),BR(),B(URL=('default','test2')),B('W'),BR(),'Today''s Peak',
> myresult, 'W'), False,[]), #get no value from test2, how to get value?
> (T('Item 2'), False, URL('default','index'), [])
> ]
>
>
> controllers/defaults.py contains function test2,
>
> def test2():
> a = 26
> b = 32
> myval = a+b
> #return dict(myval=myval) #use whichever return will work in menu
> return myval
>
> I want to display the output of test2 as a variable, label in the menu,
> and it comes from a controller, not a model.
>
> On Tuesday, May 28, 2013 5:47:39 PM UTC-5, Niphlod wrote:
>>
>> missed the "very detailed post".
>> what does it mean that you want help with menu comprehension using a
>> controller ?
>> The menu can be defined wherever you want. Having it defined in models is
>> just a shortcut to avoid having to redefine it over and over, because
>> usually the menu is "fixed".
>> That being said, response.menu is just a list of tuples, optionally
>> containing another list as the fourth argument.
>> The scaffolding app has a pretty extensive menu where you can see the
>> structure needed to generate the menu.
>> Basically each item is
>>
>> (text, active_or_not, html_helper, [childrens])
>>
>> now, let's forget for a second about:
>> - active_or_not (it just decorates with an "active" class the element)
>> - html_helper (you can put whatever you want, but then you'd override the
>> text part)
>> usually the menu item is
>> (text, False, URL('bla', 'bla') , [childrens])
>>
>> This creates an A() tag, that holds "text" as value, URL('bla', 'bla') as
>> link, and has submenus (one for each item listed in childrens)
>>
>> to sum up, to have a menu that basically is
>> - menu 1
>> - menu 1.1
>> - menu 1.2
>> - menu2
>> you'd have something like
>> response.menu = [
>> ('menu 1', False, URL('bla', 'bla'), [
>> ('menu 1.1', False, URL('bla', 'bla')),
>> ('menu 1.2', False, URL('bla', 'bla'))
>> ]),
>> ('menu 2', False, URL('bla', 'bla'))
>> ]
>>
>> From there on, it's basic list slicing and dicing with python.
>> let's say you'd like to "insert" a "menu 1.3" in your controller, so in
>> that particular page only, a menu 1.3 would be visible....
>> you'd have to append the new element to the fourth element (the
>> [children] list) of the first menu.
>> Remembering that python lists are 0-indexed :
>> response.menu[0][3].append(
>> ('menu 1.3', False, URL('bla', 'bla'))
>> )
>> And voilĂ .
>>
>> Clearer ?
>>
>> On Wednesday, May 29, 2013 12:04:27 AM UTC+2, greaneym wrote:
>>>
>>> I posted a very detailed explanation of my progress so far and what I
>>> needed further. I can see it in the web2py-group posting but maybe you
>>> cannot see it? I need further help with menu comprehension using a
>>> controller instead of a model file. I can post again if you can't see the
>>> request. thanks.
>>>
>>>
>>> On Tuesday, May 28, 2013 3:25:53 PM UTC-5, Niphlod wrote:
>>>>
>>>>
>>>>
>>>> On Tuesday, May 28, 2013 10:15:24 PM UTC+2, greaneym wrote:
>>>>>
>>>>> Thanks that was helpful and got me further but I need a bit more help.
>>>>>
>>>>>
>>>>>
>>>> on what ?
>>>>
>>>
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.