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]

Reply via email to