[
https://issues.apache.org/jira/browse/WICKET-3813?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David Phillips updated WICKET-3813:
-----------------------------------
Attachment: devicelayout.patch
We encountered a need for this change earlier this year and have implemented a
solution locally. This patch is a bit of a mix of Bruno's design with ours.
There are a few major changes from Bruno's original thoughts.
FIrst, we implemented the fallback inside of a Device object. This way the
structure of fallbacks is far more flexible to certain devices. This is
especially important if projects treat the devices differently (e.g. whether an
iPad falls back to a tablet or an iOS device).
Second, we allowed individual components to specify their device. This is
important for us as we have many reusable components which use device specific
markup in differing ways.
Third, we added a hook point in which this component specific device logic can
be externalized to a central location (Session). This is important if there's
an external rules engine which is determining which devices should be used for
which components).
Finally, we moved the logic for determining the correct extension to the
DefaultMarkupResourceStreamProvider. This aligns it with the logic for finding
Style, Variation, and Locale, as well as giving it access to the component (for
our above requirements) without requiring an API change.
> Support for device and fallback device specific layout
> ------------------------------------------------------
>
> Key: WICKET-3813
> URL: https://issues.apache.org/jira/browse/WICKET-3813
> Project: Wicket
> Issue Type: New Feature
> Components: wicket
> Reporter: Bruno Borges
> Attachments: devicelayout.patch, DeviceStreamLocator.java
>
>
> Wicket does a great job at locating resources based on variation, style and
> location. The current way of locating HTML resources is done by the following
> schema:
> Page[_variation][_style][_locale].extension
> where:
> * variation is per Component
> * style and locale are per Session
> The feature proposed here is to add another section, separated by a single
> dot, to be used specifically for HTML files:
> Page[_variation][_style][_locale][.device].extension
> The use case that requires this is one where an user's device is identified
> as an Android phone and so one could set Session.get().setDevice("android");
> Inside ResourceStreamLocator, the current algorithm can just add that as an
> array of extensions to iterate.
> Consider the HomePage:
> - HomePage.html
> - HomePage.m.html
> - HomePage.android.html
> For the Android user, HomePage will render HomePage.android.html file.
> A desktop user will render HomePage.html because
> Session.get().isStandardDevice(); will return true
> To support an iPhone user, one could set
> Session.get().setFallbackDevice("m"); and so, will render HomePage.m.html
> which could be a simplier version for other phones but Android.
> I've attached an example of DeviceStreamLocator
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira