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 <[email protected] <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
>>>>
>>>>
>>>>
>>>>
--