Jetspeed's WAP support is currently realized in a very hacky fashion.
Please find below a proposal for an improved WAP support in jetspeed. We
have these changes already implemented and tested, and as soon as you say
"Hey cool, we want this!", I'll check it into CVS. ;-))
Seriously, I think this is definitely an improvement as brings us closer to
a multi-device capable Jetspeed. Please send your comments/opinions. I
won't be online over the weekend but I'm back on Monday.
Enjoy your weekend, :)
ingo.
-------------------------------------------------------------
Proposal: Improved WAP Support
1. What is the added value?
Jetspeed 1.2b provides no real WAP support, but only a hard coded sample
of how WAP aggregation could work. The list of portlets to be displayed
is hard-coded in the Home screen. A special WAPPortletController does the
whole processing. No personalization is possible.
Improved WAP support provides a facility of defining one WAP page per
user in addition to a HTML page. In the first step the WML home page displays
a set of portlet titles (for the portlet from the user specific wml psml
file).
In the next step the user can select one of the titles and will be linked to
the maximized view of the portlet selected (This is similar to maximize
in the html browser).
This solution is the first step in implementing more sophisticated multi-page,
multi-device concept. Further proposals will follow later.
2. What has changed?
a) We implemented additional multi-device capable aggregation
elements (controls/controllers) or extended the existing
ones to be
multi-device capable:
* RowColumnController �existing extended
For WML � renders portlets from the portlet vector
one
after another.
What is returned from each portlet
depends on
controls used.
* TitleControl �new
For HTML � returns only title bar with title, edit
and
maximize buttons, no content; can be used,
e.g., for minimized view.
For WML � returns portlet title as link.
* SinglePortletController-new
For HTML � assumes that no more than one portlet
is in the
portlet vector; returns this portlet;
can be used, e.g., for maximize.
For WML � the same behavior as for HTML.
* FullScreenControl-new
For HTML- returns a title bar with title, edit and
restore buttons + portlet content.
For WML � returns a title of a portlet and a portlet
content.
b) We implemented a WML specific WMLCardController, which adopts
a layout functionally for WML pages. This is necessary,
because
is not possible to use the Turbine Page structure together
with ECS
for WML in the current version of Jetspeed. This will
become obsolete
as soon as Jetspeed will move over to use templates
(WebMacro, JSPs or
Velocity) and remove the ECS stuff.
c) We provided a proper implementation of the supportsType method for
PortletSet, controls and portlets, we used. (Until now
this method
return true for html and false for everything else for all
classes).
d) We provided a defaultWML.psml
e) We provided a MultiDeviceUserProviler. This profiler will be later
replaced, when the Profiler proposal will be implemented.
The new directory structure for psml files is:
\psml\default.psml
\psml\defaultWML.psml
\psml\user1\homeHTML.psml
\psml\user1\homeWML.psml
In order to use the MultiDeviceUserProfiler set the profiler entry in
the
JetspeedResources.properties as follows:
profiler.default.classname=org.apache.jetspeed.profiler.MultiDeviceUserProfiler
e) We changed the Home screen so, that getPSMLContent method is called
not only for a HTML but also for a WML request (earlier
getContent
method with hard-coded WML sample was called). This method
reads a
corresponding psml file, constructs a PortletSet and
renders its
content.
f) We also suggest using our SinglePortletController and FullScreenControl
for the maximize modus in the Home screen. This will
permit using the
same mechanism for different devices. On the other hand the
TitlePortletControl used now for html shows maximize
button in the
maximize mode, with the FullScreenControl this bug will be
fixed.
Some minor changes were necessary to make the
TitlePortletControl mark
an URI for the FullScreenControl to return to.
3. What is important?
a) Multi-device capable aggregation elements and portlets must implement
a supportsType method correctly. The html only elements
can adopt a
default implementation; so nothing have to be done.
b) We recommend using RowColumnController and TitleControl for WML home
pages. Controllers and controls must be defined explicitly
in the psml
file, otherwise the application uses a default from the
properties file.
4. What are the impacts on the other Jetspeed components?
Other Jetspeed components are not impacted.
Old aggregation elements work in the same way as earlier.
Old profiler can be used (no multi-device support possible).
If the profiler is set to the UserProfiler the psml directory structure
remains as it is.
If the new Profiler is used html default can remain as it is. User specific
psmls must be
copied to user specific directories.
Home screen and maximize for HTML work in the same way as earlier, one bug
is fixed (s. 2.7).
5. What classes/files have been changed/added?
org.apache.jetspeed.portal.controllers.RowColumnController � changed
org.apache.jetspeed.portal.controllers.SinglePortletController � added
org.apache.jetspeed.portal.controllers.CardPortletController � added
org.apache.jetspeed.portal.controls.TitlePortletControl � changed
org.apache.jetspeed.portal.controls.TitleControl � added
org.apache.jetspeed.portal.controls.FullScreenControl � added
org.apache.jetspeed.portal.PortletSet � bug fixed
org.apache.jetspeed.modules.screens.Home �changed, bug fixed
org.apache.jetspeed.profiler.MultiDeviceUserProfiler a-added
\content\psml\defaultWML.psml �added,
\config\JetspeedResources.properties -changed.
--
--------------------------------------------------------------
Please read the FAQ! <http://java.apache.org/faq/>
To subscribe: [EMAIL PROTECTED]
To unsubscribe: [EMAIL PROTECTED]
Archives and Other: <http://marc.theaimsgroup.com/?l=jetspeed>
Problems?: [EMAIL PROTECTED]