Dynamic Channel Titles

Use case: Channels can dynamically change their titles as they appear at the top of the channel in the rendered portal.

For example, an email or voicemail channel might change its title to include the number of new messages. An RSS reader channel might change its title to that of the RSS feed it is configured to render.

Note that this is a JSR-168 feature: portlets can call setTitle() on their RenderResponse when rendering, and a portal is expected to honor that title setting.

In uP2, we need the feature more generally for Channels so that CPortletAdapter can take advantage of it to honor the JSR-168 spec. (And so other channels could use it if desired.)

Implementation thoughts

One approach is to use the IChannel API getRuntimeProperties(). A new interface, ITitled. If the returned RuntimeProperties implements ITitled, grab the title.

Currently the getRuntimeProperties() IChannel method is never called. The proposal is to introduce calling it AFTER renderXML(), so that a channel can consider the results of its rendering in deciding upon its title.

This breaks using RuntimeProperties to determine whether a channel wants to render. This may not be a serious issue since RuntimeProperties has never actually been used in this way, since the framework never actually polls channels for their RuntimeProperties.

This implementation approach has the advantage of being fully backwards compatible (channels that don't produce RuntimeProperties implementing the new interface won't have dynamic titles).

Render-side, the idea is to allow theme XSLTs to include placeholder elements for the channel title, with those elements conveying a default (from the title attribute of the channel element as it currently exists) and the channelSubscribeID.

Relation to other use cases

Dynamic channel titles would make collapsed channels more useful.

History

Incidentally, this feature existed in uPortal 1.5.