Can you email me the patch? On Tuesday, 21 August 2012 10:59:21 UTC-5, mweissen wrote: > > Proposal: > > In gluon/html.py, line 2200 I have changed from > > def serialize_mobile(self, data, select=None, prefix=''): > if not select: > select = SELECT(**self.attributes) > for item in data: > if len(item) <= 4 or item[4] == True: > * if item[2]: # remove this line* > select.append(OPTION(CAT(prefix, item[0]), > _value=item[2], _selected=item[1])) > if len(item)>3 and len(item[3]): > self.serialize_mobile(item[3], select, prefix = > CAT(prefix, item[0], '/')) > select['_onchange'] = 'window.location=this.value' > return select > > to: > > def serialize_mobile(self, data, select=None, prefix=''): > if not select: > select = SELECT(**self.attributes) > for item in data: > if len(item) <= 4 or item[4] == True: > select.append(OPTION(CAT(prefix, item[0]), > _value=item[2], _selected=item[1])) > if len(item)>3 and len(item[3]): > self.serialize_mobile(item[3], select, prefix = > CAT(prefix, item[0], '/')) > select['_onchange'] = 'window.location=this.value' > return select > > > Now there is no difference between the desktop and the mobile version of > the menu. > A menu item without a link and with subitems will be displayed on all > devices. > > ----------------------------------------------- > > Addendum 1: > > If somebody wants the original behavior, he has to change (e.g.) > > from > > response.menu = [ > (T('Home'), False, URL('default','index'), [ > (T('Dummy1'), False, URL('default','index'), [],), > (T('Dummy2'), False, None, [], ), > (T('Desktop'), False, URL('default','index'), [], > not (request.user_agent().is_**mobile or > request.user_agent().is_**tablet)), > (T('Mobile'), False, URL('default','index'), [], > request.user_agent().is_**mobile), > (T('Tablet'), False, URL('default','index'), [], > request.user_agent().is_**tablet), > ]) > ] > > > to > > response.menu = [ > (T('Home'), False, URL('default','index'), [ > (T('Dummy1'), False, URL('default','index'), [],), > (T('Dummy2'), False, None, [], *not request.user_agent().is_mobile > * > ), > (T('Desktop'), False, URL('default','index'), [], > not (request.user_agent().is_**mobile or > request.user_agent().is_**tablet)), > (T('Mobile'), False, URL('default','index'), [], > request.user_agent().is_**mobile), > (T('Tablet'), False, URL('default','index'), [], > request.user_agent().is_**tablet), > ]) > ] > > > > -------------------------------------------------------------------- > > Addendum 2: > There is an error in my examples, this is the corrected code: > > response.menu = [ > (T('Home'), False, URL('default','index'), [ > (T('Dummy1'), False, URL('default','index'), [],), > (T('Dummy2'), False, None, [],), > (T('Desktop'), False, URL('default','index'), [], > not (request.user_agent().is_**mobile or request.user_agent().* > is_tablet*)), > (T('Mobile'), False, URL('default','index'), [], > request.user_agent().is_**mobile), > (T('Tablet'), False, URL('default','index'), [], > request.user_agent().is_**tablet), > ]) > ] > > and: > > > > response.menu = [ > (T('Home'), False, URL('default','index'), [ > (T('Dummy1'), False, URL('default','index'), [],), > (T('Dummy2'), False, None, [],), > (T('Desktop'), False, URL('default','index'), [], > not (request.user_agent().is_**mobile or request.user_agent().* > is_tablet*)), > (T('Mobile'), False, URL('default','index'), [], > request.user_agent().is_**mobile), > (T('Tablet'), False, URL('default','index'), [], > request.user_agent().is_**tablet), > ]) > ] > > > > > > 2012/8/21 Massimo Di Pierro <massimo....@gmail.com <javascript:>> > >> Can you elaborate? Is there a problem that need to be solved? >> >> >> On Tuesday, 21 August 2012 09:46:35 UTC-5, szimszon wrote: >>> >>> +1 >>> >>> https://groups.google.com/d/**msg/web2py-developers/** >>> FMCF0HTs64A/CJ-PNCaIsuwJ<https://groups.google.com/d/msg/web2py-developers/FMCF0HTs64A/CJ-PNCaIsuwJ> >>> >>> 2012. augusztus 21., kedd 15:58:27 UTC+2 időpontban mweissen a >>> következőt írta: >>>> >>>> I have played with some menu details and these are my results >>>> >>>> First try: >>>> >>>> response.menu = [ >>>> (T('Home'), False, URL('default','index'), [ >>>> (T('Dummy1'), False, URL('default','index'), [],), >>>> (T('Dummy2'), False, None, [],), >>>> (T('Desktop'), False, URL('default','index'), [], >>>> not (request.user_agent().is_**mobile or >>>> request.user_agent().is_**mobile)), >>>> (T('Mobile'), False, URL('default','index'), [], >>>> request.user_agent().is_**mobile), >>>> (T('Tablet'), False, URL('default','index'), [], >>>> request.user_agent().is_**tablet), >>>> ]) >>>> ] >>>> >>>> >>>> *Desktop:* >>>> I have expected and I got: Home | Dummy1 | Dummy2 | Desktop (#1) >>>> >>>> *Mobile phone:* >>>> I have expected: >>>> Home | Dummy1 | Dummy2 | Mobile >>>> >>>> I got: >>>> Home | Dummy1 | Mobile (#2) >>>> >>>> *Tablet:* >>>> I have expected: >>>> Home | Dummy1 | Dummy2 | Tablet >>>> >>>> I got: >>>> Home | Dummy1 | Mobile | Tablet (#2, #3) >>>> >>>> Now a second try: >>>> >>>> response.menu = [ >>>> (T('Home'), False, None, [ >>>> (T('Dummy1'), False, URL('default','index'), [],), >>>> (T('Dummy2'), False, None, [],), >>>> (T('Desktop'), False, URL('default','index'), [], >>>> not (request.user_agent().is_**mobile or >>>> request.user_agent().is_**mobile)), >>>> (T('Mobile'), False, URL('default','index'), [], >>>> request.user_agent().is_**mobile), >>>> (T('Tablet'), False, URL('default','index'), [], >>>> request.user_agent().is_**tablet), >>>> ]) >>>> ] >>>> >>>> >>>> *Desktop:* >>>> I have expected and I got: Home | Dummy1 | Dummy2 | Desktop (#1) >>>> >>>> *Mobile phone:* >>>> I have expected: >>>> Home | Dummy1 | Dummy2 | Mobile >>>> >>>> I got: >>>> <empty menu> (#2, #4) >>>> >>>> *Tablet:* >>>> I have expected: >>>> Home | Dummy1 | Dummy2 | Tablet >>>> >>>> I got: >>>> <empty menu> (#2, #4) >>>> >>>> Comments: >>>> >>>> #1: Everything works as expected, but only on a desktop pc >>>> #2: Menu items without a link are not displayed on a mobile device >>>> #3: Interesting: a tablet is a "tablet" *and *a "mobile phone" >>>> #4: The empty menu is very confusing. It took some hours to find it >>>> out, because my "real" menu is more complicated. >>>> >>>> Maybe #2, #3 and #4 are *features *and not *bugs*, but I think, these >>>> things should be documented or changed. >>>> My proposal: menu items should not become invisible depending on the >>>> device. If somebody wants this behavior he could use the fifth component. >>>> >>>> Maybe is_tablet should be True only for tablets and not for mobile >>>> phones too. But in this case there should be not only a mobile.htmlview >>>> but also a >>>> tablet.html. And this would make things more complicated. >>>> >>>> Regards, Martin >>>> >>>> >>>> >>>>
--