getting screen.width in ftl

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

getting screen.width in ftl

SkipDever
I am trying to make some ftl code look better on cell phones without
sacrificing the look on desktops.

I can remove some non-critical content in the ftl if I knew the screen width
was less than a certain value.  Can I get screen.width in a bash (groovy)
script or in the ftl?

Its obviously easy in javascript, but I need to get it in the ftl code.


Thanks in advance

Skip

Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Jacques Le Roux
Administrator
Look at files ending with js.ftl and how they are used

Jacques

From: "Skip" <[hidden email]>

>I am trying to make some ftl code look better on cell phones without
> sacrificing the look on desktops.
>
> I can remove some non-critical content in the ftl if I knew the screen width
> was less than a certain value.  Can I get screen.width in a bash (groovy)
> script or in the ftl?
>
> Its obviously easy in javascript, but I need to get it in the ftl code.
>
>
> Thanks in advance
>
> Skip
>
Reply | Threaded
Open this post in threaded view
|

RE: getting screen.width in ftl

SkipDever
Nothing much in these about getting screen width for use in the ftl.  Was
expecting that to be in the session of something.  Saw some jquery setting
of form widths, but I wanted to do this in FTL before the screen html code
is rendered.

However, got it done with CSS media query like this:

@media handheld, only screen and (max-width: 800px){
        .notRequired {display: none !important;}
}

by adding a notRequired class to all the elements I did not want to show on
handheld devices.  Probably a better solution anyway.

Skip

-----Original Message-----
From: Jacques Le Roux [mailto:[hidden email]]
Sent: Tuesday, January 15, 2013 1:59 PM
To: [hidden email]
Subject: Re: getting screen.width in ftl


Look at files ending with js.ftl and how they are used

Jacques

From: "Skip" <[hidden email]>
>I am trying to make some ftl code look better on cell phones without
> sacrificing the look on desktops.
>
> I can remove some non-critical content in the ftl if I knew the screen
width

> was less than a certain value.  Can I get screen.width in a bash (groovy)
> script or in the ftl?
>
> Its obviously easy in javascript, but I need to get it in the ftl code.
>
>
> Thanks in advance
>
> Skip
>

Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Nick Rosser
Skip,

We have a pretty good way of doing this in our BigFish eCommerce
solution. Obviously the entire approach is not applicable for what you
are trying to do but you may want to read the guide that we have ... it
has some good general pointers that may be useful for you.

http://bigfish.salmonllc.com/help/howSetupMobile.htm

Best Regards,

Nick Rosser
[hidden email]
O: 516.742.7888 x221
C: 516.901.1720


On 1/15/2013 7:47 PM, Skip wrote:

> Nothing much in these about getting screen width for use in the ftl.  Was
> expecting that to be in the session of something.  Saw some jquery setting
> of form widths, but I wanted to do this in FTL before the screen html code
> is rendered.
>
> However, got it done with CSS media query like this:
>
> @media handheld, only screen and (max-width: 800px){
> .notRequired {display: none !important;}
> }
>
> by adding a notRequired class to all the elements I did not want to show on
> handheld devices.  Probably a better solution anyway.
>
> Skip
>
> -----Original Message-----
> From: Jacques Le Roux [mailto:[hidden email]]
> Sent: Tuesday, January 15, 2013 1:59 PM
> To: [hidden email]
> Subject: Re: getting screen.width in ftl
>
>
> Look at files ending with js.ftl and how they are used
>
> Jacques
>
> From: "Skip"<[hidden email]>
>> I am trying to make some ftl code look better on cell phones without
>> sacrificing the look on desktops.
>>
>> I can remove some non-critical content in the ftl if I knew the screen
> width
>> was less than a certain value.  Can I get screen.width in a bash (groovy)
>> script or in the ftl?
>>
>> Its obviously easy in javascript, but I need to get it in the ftl code.
>>
>>
>> Thanks in advance
>>
>> Skip
>>
Reply | Threaded
Open this post in threaded view
|

RE: getting screen.width in ftl

SkipDever
Nick

Thanks for the link.  This is essentially what I did except that I did not
have any small device specific content.  However, what I wanted to do was
just not render the content in the ftl to reduce the bandwidth requirements.
A considerable amount of the hidden content on small devices were images and
it would have been nice to not have it at all.

For example:

<#assign screenWidth = context.screenWidth?default(2000) />

<#if screenWidth > 499>
... Render some context that might be useful but not required
</#if>

I am exploring how to do this by having an ajax call that sets the device
width into the context and then subsiquent pages can be smarter in their
rendering.  However, what I have now works much like yours and is sufficient
for now.

Skip


-----Original Message-----
From: Nick Rosser [mailto:[hidden email]]
Sent: Wednesday, January 16, 2013 12:56 PM
To: [hidden email]
Subject: Re: getting screen.width in ftl


Skip,

We have a pretty good way of doing this in our BigFish eCommerce
solution. Obviously the entire approach is not applicable for what you
are trying to do but you may want to read the guide that we have ... it
has some good general pointers that may be useful for you.

http://bigfish.salmonllc.com/help/howSetupMobile.htm

Best Regards,

Nick Rosser
[hidden email]
O: 516.742.7888 x221
C: 516.901.1720


On 1/15/2013 7:47 PM, Skip wrote:

> Nothing much in these about getting screen width for use in the ftl.  Was
> expecting that to be in the session of something.  Saw some jquery setting
> of form widths, but I wanted to do this in FTL before the screen html code
> is rendered.
>
> However, got it done with CSS media query like this:
>
> @media handheld, only screen and (max-width: 800px){
> .notRequired {display: none !important;}
> }
>
> by adding a notRequired class to all the elements I did not want to show
on

> handheld devices.  Probably a better solution anyway.
>
> Skip
>
> -----Original Message-----
> From: Jacques Le Roux [mailto:[hidden email]]
> Sent: Tuesday, January 15, 2013 1:59 PM
> To: [hidden email]
> Subject: Re: getting screen.width in ftl
>
>
> Look at files ending with js.ftl and how they are used
>
> Jacques
>
> From: "Skip"<[hidden email]>
>> I am trying to make some ftl code look better on cell phones without
>> sacrificing the look on desktops.
>>
>> I can remove some non-critical content in the ftl if I knew the screen
> width
>> was less than a certain value.  Can I get screen.width in a bash (groovy)
>> script or in the ftl?
>>
>> Its obviously easy in javascript, but I need to get it in the ftl code.
>>
>>
>> Thanks in advance
>>
>> Skip
>>

Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Nick Rosser
good luck!

Best Regards,

Nick Rosser
[hidden email]
O: 516.742.7888 x221
C: 516.901.1720


On 1/16/2013 5:04 PM, Skip wrote:

> Nick
>
> Thanks for the link.  This is essentially what I did except that I did not
> have any small device specific content.  However, what I wanted to do was
> just not render the content in the ftl to reduce the bandwidth requirements.
> A considerable amount of the hidden content on small devices were images and
> it would have been nice to not have it at all.
>
> For example:
>
> <#assign screenWidth = context.screenWidth?default(2000) />
>
> <#if screenWidth>  499>
> ... Render some context that might be useful but not required
> </#if>
>
> I am exploring how to do this by having an ajax call that sets the device
> width into the context and then subsiquent pages can be smarter in their
> rendering.  However, what I have now works much like yours and is sufficient
> for now.
>
> Skip
>
>
> -----Original Message-----
> From: Nick Rosser [mailto:[hidden email]]
> Sent: Wednesday, January 16, 2013 12:56 PM
> To: [hidden email]
> Subject: Re: getting screen.width in ftl
>
>
> Skip,
>
> We have a pretty good way of doing this in our BigFish eCommerce
> solution. Obviously the entire approach is not applicable for what you
> are trying to do but you may want to read the guide that we have ... it
> has some good general pointers that may be useful for you.
>
> http://bigfish.salmonllc.com/help/howSetupMobile.htm
>
> Best Regards,
>
> Nick Rosser
> [hidden email]
> O: 516.742.7888 x221
> C: 516.901.1720
>
>
> On 1/15/2013 7:47 PM, Skip wrote:
>> Nothing much in these about getting screen width for use in the ftl.  Was
>> expecting that to be in the session of something.  Saw some jquery setting
>> of form widths, but I wanted to do this in FTL before the screen html code
>> is rendered.
>>
>> However, got it done with CSS media query like this:
>>
>> @media handheld, only screen and (max-width: 800px){
>> .notRequired {display: none !important;}
>> }
>>
>> by adding a notRequired class to all the elements I did not want to show
> on
>> handheld devices.  Probably a better solution anyway.
>>
>> Skip
>>
>> -----Original Message-----
>> From: Jacques Le Roux [mailto:[hidden email]]
>> Sent: Tuesday, January 15, 2013 1:59 PM
>> To: [hidden email]
>> Subject: Re: getting screen.width in ftl
>>
>>
>> Look at files ending with js.ftl and how they are used
>>
>> Jacques
>>
>> From: "Skip"<[hidden email]>
>>> I am trying to make some ftl code look better on cell phones without
>>> sacrificing the look on desktops.
>>>
>>> I can remove some non-critical content in the ftl if I knew the screen
>> width
>>> was less than a certain value.  Can I get screen.width in a bash (groovy)
>>> script or in the ftl?
>>>
>>> Its obviously easy in javascript, but I need to get it in the ftl code.
>>>
>>>
>>> Thanks in advance
>>>
>>> Skip
>>>
Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Robert Gan
what skip mentioned is also interesting...especially the java script files and pictures make about 1MB download size for the client. with mobile devices this is much.

so what I would do is:

create a landing page where you just request the kind of device from client (desktop, mobile etc.) or the browser size as nick mentioned.

within FTL it is not possible (without Java script), because this is server side. So you have to decide on client side what to do (reason for the landing page).

on client side just check with like java script if he uses a mobile device. Than redirect the client to i.ex a subdomain (i.ex. m.domain.tld instead of www.domain.tld).

this subdomains just uses other screens, or handle it maybe with properties in screens / session / groovy files.

I would create a completely new website for mobile, because most of the time it is completly different, so you need to use other css and js files to reduce the bandwith requirements.

you as addition can use the same ftl  and groovy files (to have better overview about all files), and just check the session if he is a mobile...than do these checks in groovy and ftl, so at the end of the day you just load parts of these ftl files.

for the javascript check build a door to your server session object with an ajax call, which lands on a i.ex. java file which writes attributes to session. with this procedure you can check on serverside the device state and other variables you want to set from client side.

kindly

robert

Mit freundlichen Grüßen

Dipl.-Ing. Robert Gan
Geschäftsführer

Mercon GbR
Lückstr. 72/73
D-10317 Berlin
(Berlin-Lichtenberg)

Email: [hidden email]

Tel: +49 (30) 54785060
Fax: +49 (30) 69207219

www.mercon24.de
Am 16.01.2013 23:43, schrieb Nick Rosser [via OFBiz]:
good luck!

Best Regards,

Nick Rosser
[hidden email]
O: 516.742.7888 x221
C: 516.901.1720


On 1/16/2013 5:04 PM, Skip wrote:

> Nick
>
> Thanks for the link.  This is essentially what I did except that I did not
> have any small device specific content.  However, what I wanted to do was
> just not render the content in the ftl to reduce the bandwidth requirements.
> A considerable amount of the hidden content on small devices were images and
> it would have been nice to not have it at all.
>
> For example:
>
> <#assign screenWidth = context.screenWidth?default(2000) />
>
> <#if screenWidth>  499>
> ... Render some context that might be useful but not required
> </#if>
>
> I am exploring how to do this by having an ajax call that sets the device
> width into the context and then subsiquent pages can be smarter in their
> rendering.  However, what I have now works much like yours and is sufficient
> for now.
>
> Skip
>
>
> -----Original Message-----
> From: Nick Rosser [mailto:[hidden email]]
> Sent: Wednesday, January 16, 2013 12:56 PM
> To: [hidden email]
> Subject: Re: getting screen.width in ftl
>
>
> Skip,
>
> We have a pretty good way of doing this in our BigFish eCommerce
> solution. Obviously the entire approach is not applicable for what you
> are trying to do but you may want to read the guide that we have ... it
> has some good general pointers that may be useful for you.
>
> http://bigfish.salmonllc.com/help/howSetupMobile.htm
>
> Best Regards,
>
> Nick Rosser
> [hidden email]
> O: 516.742.7888 x221
> C: 516.901.1720
>
>
> On 1/15/2013 7:47 PM, Skip wrote:
>> Nothing much in these about getting screen width for use in the ftl.  Was
>> expecting that to be in the session of something.  Saw some jquery setting
>> of form widths, but I wanted to do this in FTL before the screen html code
>> is rendered.
>>
>> However, got it done with CSS media query like this:
>>
>> @media handheld, only screen and (max-width: 800px){
>> .notRequired {display: none !important;}
>> }
>>
>> by adding a notRequired class to all the elements I did not want to show
> on
>> handheld devices.  Probably a better solution anyway.
>>
>> Skip
>>
>> -----Original Message-----
>> From: Jacques Le Roux [mailto:[hidden email]]
>> Sent: Tuesday, January 15, 2013 1:59 PM
>> To: [hidden email]
>> Subject: Re: getting screen.width in ftl
>>
>>
>> Look at files ending with js.ftl and how they are used
>>
>> Jacques
>>
>> From: "Skip"<[hidden email]>
>>> I am trying to make some ftl code look better on cell phones without
>>> sacrificing the look on desktops.
>>>
>>> I can remove some non-critical content in the ftl if I knew the screen
>> width
>>> was less than a certain value.  Can I get screen.width in a bash (groovy)
>>> script or in the ftl?
>>>
>>> Its obviously easy in javascript, but I need to get it in the ftl code.
>>>
>>>
>>> Thanks in advance
>>>
>>> Skip
>>>



If you reply to this email, your message will be added to the discussion below:
http://ofbiz.135035.n4.nabble.com/getting-screen-width-in-ftl-tp4638951p4638965.html
To start a new topic under OFBiz - User, email [hidden email]
To unsubscribe from OFBiz - User, click here.
NAML

Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Robert Gan
sorry for confusing maybe, its late :)

short summary (options which comes to my mind):
1. option:
- check with javascript if he is mobile
- redirect to another page
--> working


2. more elegant option (cause no redirect required)
- work with the session object
- create a js check if he is mobile
- create an ajax connection to your server to write this to the server side session (i.ex. with java on server side). write here the attribute session.setAttribute("isMobile","true") to server session
- request with groovy file if he is mobile, and than in ftl just check this with if / else and show different content.

thats it I think

the second variant is also very comfortable to use for other stuff like setting client configurations like category views etc. So the customer can make individual settings, which will not be lost on other pages / page reloads cause its server side known.

hope that helps.
Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Paul Piper
I would not recommend to do anything with Javascript in this case. Responsive design is the most obvious solution and should be the most preferrable.

There are alot of resources available that can show you how to do this properly for the different standard solutions. In adddition to your own solution, you should take care of more than just the max-width:800 sized versions and focus on the different standards that are available.

If you were to go the alternative route, using js would not be an option, since you do run js after the initial page load, so js based redirects would only increase the heap. Rather, you could try to get the client from request header and redirect based on that or, preferably, use your actual httpd-server to handle the redirect.

With Apache you could use the following:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC]
RewriteRule ^$ http://m.ilscipio.com [R,L]



Alternatively for java, you could use

android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino

to detect within the request.getHeader("User-Agent").

Regards,
Paul
Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Paul Piper
As a follow-up:

The solution described in the bigfish link is very limited, so I don't recommend to use or follow it. Basically, with the recommendation described there you are left with a version that won't work on any form of tablet, or mobile devices that are held sideways... I don't want to be too negative about it, since i like seeing resources like that show up, but for doing responsive design, I'd recommend to look into it properly. As said, there are great resources available on the internet for this :)
Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Nick Rosser
Paul,

My response was just to share our approach/technique. I wasn't expecting
Skip, or anyone, to adopt BigFish ... I'm sure he has built out a
complete system and to change tack was not the intent. Simply sharing an
experience.

Anyway, it is an interesting topic and others have made some good points
about targeting small devices. We spent some time thinking through this
stuff -- what I really like about our approach is that it did not
involve any back-end coding changes ... everything is managed in CSS and
content. Not perfect, but great for what we're trying to do. And given
the approach, it is easily extended to target different sized devices.
All the same concepts can be applied, without any back-end changes.
Given the base we have we'll be expanding the functionality to be more
elegant and flexible over the coming months. The first implementation
was to prove our approach/technique and to be able to demo something
that works pretty well.

When it comes to responsive vs targeted, Robert G made a valid point
about having a specific UI for small devices. This solves many problems
such as image size (can be controlled), and general page size
considerations, with specific functions for a small device user.
However, I think we all realize that this is also a lot more work.

Responsive has a lot of traction and if done right can target all sorts
of small devices. It has the drawback of having resources shown/hidden
which can be a burden when using cell service to download pages. Big
plus is that it's much easier to implement. I find it interesting trying
to define "small device" -- is an iPad really a small device? Or is the
regular interface workable?

I guess ultimately there is no one right way ... if small device does
not play a large role in terms of traffic, but it's important as a
strategy, then responsive is perfect. If small device is critical and
special features are required to execute the strategy then targeted may
be better. Pros and cons for both approaches with many nuances and
considerations.

Our feeling was the former ... low traffic but important ... so
responsive is perfect for us.

Best Regards,

Nick Rosser
[hidden email]
O: 516.742.7888 x221
C: 516.901.1720


On 1/17/2013 5:35 AM, Paul Piper wrote:

> As a follow-up:
>
> The solution described in the bigfish link is very limited, so I don't
> recommend to use or follow it. Basically, with the recommendation described
> there you are left with a version that won't work on any form of tablet, or
> mobile devices that are held sideways... I don't want to be too negative
> about it, since i like seeing resources like that show up, but for doing
> responsive design, I'd recommend to look into it properly. As said, there
> are great resources available on the internet for this :)
>
>
>
> --
> View this message in context: http://ofbiz.135035.n4.nabble.com/getting-screen-width-in-ftl-tp4638951p4638977.html
> Sent from the OFBiz - User mailing list archive at Nabble.com.
Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Paul Piper
You are missing the point of my reply, Nick: Responsive is good and the way I also recommend. Your link however, only shows a fraction of what should be done to do it properly and doesn't take care of a lot of the screen sizes, which is why recommend to look elsewhere for the information.
Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Ted Byers
In reply to this post by Paul Piper
Hi Paul,

On Thu, Jan 17, 2013 at 4:48 AM, Paul Piper <[hidden email]> wrote:
> I would not recommend to do anything with Javascript in this case. Responsive
> design is the most obvious solution and should be the most preferrable.
>

And my first instinct would have been to use js, perhaps because I
have recently been studying the relatively new features in HTML5 that
seem intriguing.

> There are alot of resources available that can show you how to do this
> properly for the different standard solutions. In adddition to your own
> solution, you should take care of more than just the max-width:800 sized
> versions and focus on the different standards that are available.
>
Would you care to share your favourite resources?  Maybe I picked the
wrong search parameters, but when I search the web for this info, the
signal to noise ratio is abysmal.  :-(

> If you were to go the alternative route, using js would not be an option,
> since you do run js after the initial page load, so js based redirects would
> only increase the heap. Rather, you could try to get the client from request
> header and redirect based on that or, preferably, use your actual
> httpd-server to handle the redirect.
>
OK, I can easily get the client from the request header, but, can you
shed light on the Apache rewrite rules you show below, in terms
suitable for a guy that can write code in a number of programming
laguages but for whom this kind of web server administration seems
like magic?  I have such trouble with the configuration file for
Apache's web server that I have yet to figure out how to force all
http requests (or all requests for a specific resource) to be resent
using https.  :-(

> With Apache you could use the following:
>
> RewriteEngine On
> RewriteBase /
>
> RewriteCond %{HTTP_USER_AGENT}
> android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\
> |maemo|midp|mmp|opera\ m(ob|in)i|palm(\
> os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\
> (ce|phone)|xda|xiino [NC,OR]
> RewriteCond %{HTTP_USER_AGENT}
> ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\
> wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\
> |s\
> )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\
> u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\
> i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\
> |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\
> |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\
> g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\
> |o|v)|zz)|mt(50|p1|v\
> )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\
> )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\
> )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-)
> [NC]
> RewriteRule ^$ http://m.ilscipio.com [R,L]
>
>
As little as I understand how the above works, or what it means, I
guess I have another question which is, would this mean a separate
suite of presentation layer files for each kind of client?  Or is
there a way to have a single suite of presentation layer files that
just adapts to what the client is?

Cheers

Ted
Reply | Threaded
Open this post in threaded view
|

Re: getting screen.width in ftl

Nick Rosser
In reply to this post by Paul Piper
I understood your comment. Wasn't that difficult. And agreed with your
point, and mentioned that we were simply sharing an approach/technique
with the original query.

The group is often used to build information collectively from many
different sources, sharing different experiences. If everything has to
be exhaustive and show all features then very few folks would
participate in this group.

Best Regards,

Nick Rosser
[hidden email]
O: 516.742.7888 x221
C: 516.901.1720


On 1/17/2013 11:14 AM, Paul Piper wrote:

> You are missing the point of my reply, Nick: Responsive is good and the way I
> also recommend. Your link however, only shows a fraction of what should be
> done to do it properly and doesn't take care of a lot of the screen sizes,
> which is why recommend to look elsewhere for the information.
>
>
>
> --
> View this message in context: http://ofbiz.135035.n4.nabble.com/getting-screen-width-in-ftl-tp4638951p4638984.html
> Sent from the OFBiz - User mailing list archive at Nabble.com.
Reply | Threaded
Open this post in threaded view
|

RE: getting screen.width in ftl

SkipDever
In reply to this post by Paul Piper
Thanks to everyone for this discussion.  Paul, I agree with Teds comment
"the signal to noise ratio is abysmal" when searching for responsive design.
I too would love to know your favorite resources.

Nick, thanks again for your input.  In my view, your approach for simple
content (CSS hidding of certain elements) is ideal.  Have a look at qz.com
to see it in action.

I have spent a month or so on the handheld aspect of this project and have
yet to find anything compelling for responsive design for data entry forms.
Lots of stuff for simple content, but structure form responsive design a
different matter.

What I do know from experience is this, responsive design is more than just
getting the screen to look right on a nearly unlimited number of devices.
Bandwidth, at least in the U.S. for handhelds is abysmal.  Nearly
instantaneous page loads on wired connections take upwards of 30 seconds on
a "fast" 3g connection.  So, loading a bunch of hidden content, especially
images is a bad thing.

Having said that, in my exprerience, @media queries are the absolutely best
choice when it works.

It doesnt work however for complex data entry forms that are used over and
over.  For example, lets say that you have a form with 16 input fields and
maybe a few dropdowns.  If you use jquery-mobile style css, this all comes
as a long list of entries, one per line on a small device.  If you need to
keep some of these fields grouped together, it is VERY difficult to achieve
like this.

Here, javascript was essential for me.  Using javascript, I can use ajax to
retrieve field labels that are abbreviated for small devices and more
informative for desktops.  The choice of those labels is made on the server
based on screen width.  Similiarly, I can use javascript to dynamically set
classes based on the screen size.

Thanks to all
Skip

-----Original Message-----
From: Paul Piper [mailto:[hidden email]]
Sent: Thursday, January 17, 2013 1:48 AM
To: [hidden email]
Subject: Re: getting screen.width in ftl


I would not recommend to do anything with Javascript in this case.
Responsive
design is the most obvious solution and should be the most preferrable.

There are alot of resources available that can show you how to do this
properly for the different standard solutions. In adddition to your own
solution, you should take care of more than just the max-width:800 sized
versions and focus on the different standards that are available.

If you were to go the alternative route, using js would not be an option,
since you do run js after the initial page load, so js based redirects would
only increase the heap. Rather, you could try to get the client from request
header and redirect based on that or, preferably, use your actual
httpd-server to handle the redirect.

With Apache you could use the following:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_USER_AGENT}
android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(ho
ne|od)|iris|kindle|lge\
|maemo|midp|mmp|opera\ m(ob|in)i|palm(\
os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vo
dafone|wap|windows\
(ce|phone)|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT}
^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\
wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go
)|as(te|us)|attw|au(di|\-m|r\
|s\
)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|c
cwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|d
ica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os
|wa|ze)|fetc|fly(\-|_)|g1\
u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(
pt|ta)|hp(\
i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\
|\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi
|keji|kgt(\
|\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\
g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|m
c(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\
|o|v)|zz)|mt(50|p1|v\
)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|o
n|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|p
g(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\
-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|s
a(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-
|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v
\
)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-m
o|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|t
e)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-
|\
)|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-)
[NC]
RewriteRule ^$ http://m.ilscipio.com [R,L]



Alternatively for java, you could use

android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(ho
ne|od)|iris|kindle|lge\
|maemo|midp|mmp|opera\ m(ob|in)i|palm(\
os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vo
dafone|wap|windows\
(ce|phone)|xda|xiino

to detect within the request.getHeader("User-Agent").

Regards,
Paul



--
View this message in context:
http://ofbiz.135035.n4.nabble.com/getting-screen-width-in-ftl-tp4638951p4638
975.html
Sent from the OFBiz - User mailing list archive at Nabble.com.