UW-Madison Contributions

This page will serve as a space to compile documentation and details regarding the code contributions The University of Wisconsin - Madison will be making to the uPortal project and the general JA-SIG community.

UW-Madison, in collaboration with Unicon, Inc., has been working to transition to uPortal. In this effort customizations to the uPortal framework, utility libraries and portlets have been developed. UW-Madison intends to contribute this work back to the JA-SIG community. The contributions are briefly described below. Links to the detailed requirement specifications (RS) and design documents (DD) are included.

Portlet Contributions

These would be contributed back as individual projects under the portlets module in CVS.

WebProxy Portlet

The WebProxy Portlet is a full web proxy implementation. It provides out of the box ability to proxy http/https web pages, provide transparent authentication and session management to the remote site, proxying both rendering and binary content, caching and other features. This portlet depends on the API Abstraction Layer and CONFIG PortletMode.

This portlet is fledged as a freestanding project.

Notepad Portlet

A portlet that allows a user to store notes.

XSLT Portlet

Through definition level portlet preference configuration this portlet can take XML and XSLT URL arguments to render the results to the user. Useful for aggregating XML based content.

Dynamic Menu Portlet

A portlet that consists of a list of bookmark-style links. The links displayed are dynamic in the sense that they vary depending on which groups the user is a member of.

Extension Libraries

These would be contributed back as individual modules, the location in CVS still needs to be determined.

Common Storage

Common Storage provides a file system like API for persisting data. Client code uses has access to an API that has the concept of folders and documents. Documents can store nearly any type of data including a byte[] fall back for general use. The store also has a scoping concept. Allowing the same file system path to be used for scoping data to an application, an application instance, a user or other levels. The scoping keys are provided by an interface in the API Abstraction Layer. The current backing store implementation uses a database.

API Abstraction Layer - Interfaces

uPortal provides services such as groups and person directory to channels. Accessing these services from a JSR-168 portlet can be difficult. This library provides interfaces which mimic the services uPortal provides. A portlet can be compiled against these API interfaces to use the services as long as the portal being used provides an implementation. The implementation for uPortal will be included and is discussed below.

Framework Contributions

These would be contributed back into the main uPortal source tree.

Swapper Portlets

The ID Swapper portlet is a development tool that allows a developer to view the portal from the point of view of different test account. The target account can be looked up via a configurable variety of attributes. After selecting an account from the returned search results, a new portal session is created using that account information. The Attribute Swapper portlet allows a developer to temporarily modify their user attributes stored in session. This is particularly useful when trying to test particular use cases without having to create relevant test accounts. The developer can also look up existing accounts and copy select attributes into their session.

CONFIG PortletMode

The CONFIG PortletMode was created as an additional supported PortletMode for the uPortal framework. During publishing using ChannelManager any portlet that declared support for the CONFIG PortletMode in its deployment descriptor (portlet.xml) would have an additional step in the publishing process. This step would call the portlet, in the CONFIG PortletMode, to allow it to rendering its own configuration user interface. The user can interact with the portlet and any PortletPreferences stored during this process will be available to all subscribed instances of that published portlet instance.
This PortletMode is used by some of the portlets that UW wishes to contribute back to the community.
RS DD

Extended Statistics Recorder

The IStatsRecorder interface was extended to record additional information mainly regarding to interaction with portlets. Also the events dealing with layout changes were modified to pass more information to the recorder. There is also a general database persistence implementation for the extended stats recorder which uses a fully normalized table structure for recording statistic events.

API Abstraction Layer - Implementation

The API Abstraction Layer Implementation provides the backing for the Interfaces mentioned above. The implementation maps the APIs to the uPortal services and configures the implementation reference into the API interfaces at run time.

DLM User Personalization and Customization UI

This is a hybrid UI for user personalization and customization that was inspired my many of the major, popular portals. While this design does not have all the features of the UIs that come with uPortal, it is our belief that it will be easier and more intuitive for the end users.