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
>>>>
>>>>
>>>>
>>>>

-- 



Reply via email to