Portal Active Zones
New Concept
This is an idea for discussion, please feel free to edit, comment, etc.
Information
This describes an idea to allow more flexible use of the portal by tool writers and services in Sakai. This is meant to replace the things that are effectively hardcoded into the portal with more flexible zones which can have content placed into them. This will allow for more flexible control over the portal and the ability to added more interesting data and UI pieces within the portal itself.
Summary
Current issues that this addresses
Portal layout is relatively inflexible and in some cases hardcoded, tools are stuck in frame-bound silos
Goals
More flexible presentation options for tools and services
Allow developers to easily extend the portal to add widgets, controls, etc. to various hotspots in the portal called active zones
Allows for control of the location of the active zones using CSS
Uses a very simple provider style methodology to add extra data to an active zone (tool developer does not have to make changes to the portal code)
Allows for appending of multiple html fragments from multiple sources in a single zone (or replacing/clearing zone content)
Benefits
Impact on UX and teaching and learning benefit: promotes better UI and more options for innovation, so both positive
More flexible portal and more dynamic tools, more customization for local institutions without branching code
Easy solution to the issue: Fairly simple patch to the existing portal code to allow this to work (quick solution)
Reduce dependencies of portal on other projects
Portal Active Zones
Mockup showing the zones (just to give a general idea of their locations)
Zones can be resized and tweaked via CSS
Initially the Special Zones will be populated with default data
Open Zones can have as many html fragments added to them as is desired
Sample HTML for a zone
<div class="activezone"> <ul class="activezonelist"> <li class="activezonelistitem"> An HTML fragment with a <a href="http://mail.university.edu/">link to university email</a> </li> <li class="activezonelistitem"> <form target="something.html"> <input type="submit" value="Revert user to aaronz" /> </form> </li> </ul> </div>NOTE Unused zones would simply not be rendered (i.e. they would not take up room on the screen)
How would it work?
Developers would implement an interface which returns a String or a Stream or something which is an html fragement (this may also support portlets)
The interface would include mentioning the zone key (e.g. HeaderTop) which the html fragment is inserted into
The portal will ask for all the zone contributors to provide it with content when it renders
The content would be inserted into an html list in the zone which will be a div or whatever the UX team deems appropriate
This would allow as many html fragments to be inserted as are desired for a single zone without overwriting current data
Example: In Zone HeaderTop, Tool A puts in an html fragment with a form and submit button, Tool B puts in a fragment with some html and javascript, the portal would put each fragment into the html list in HeaderTop such that both fragments are rendered in the list
Some sample uses of active zones
Presence could be handled via an active zone instead of requiring hard coding in the portal
Become User could place a button in one of the header zones which allows the user to switch back to their original account
Search could be optionally placed into the header
Tools could suppress the menu bar or other parts of the portal if desired
Active Zones Implementation Ideas - some possible ways to implement this idea in the portal