400 likes | 498 Views
Using Ajax to Improve uPortal User Experience. Jen Bourey Yale University Jennifer.bourey@yale.edu. Outline. Short demo Technical overview Code changes Customizing for your portal Implications for our portal User testing Dojo channels The future!. Old User Preferences.
E N D
Using Ajax to Improve uPortal User Experience Jen Bourey Yale University Jennifer.bourey@yale.edu
Outline • Short demo • Technical overview • Code changes • Customizing for your portal • Implications for our portal • User testing • Dojo channels • The future!
Goals • More intuitive interface • Simplify preference options • Use current conventions from other portals • Easier and faster to . . . • Find and add new content • Rearrange layout elements
Current Status • Most features copied from preferences channel. • Brower compatibility: IE6, IE7, Firefox, Safari. • Fails back if scripting is disabled.
Channel Editing • Move • Delete • Min/max
Adding Channels • Browse channels by category • Search channels • Use channel without adding to layout
Java Resources • Servlets • RetrieveChannelListServlet • UpdatePreferencesServlet • Theme Param Injectors • AjaxThemeParamInjector
Javascript Resources • Dojo! • Portal dojo classes • PortletDragObject.js • PortletDragSource.js • PortletDropTarget.js • ajax-preferences.js
Dojo • IO libraries • Provide data (ex. Channel registry) • Handle asynchronous requests • Return relevant information • Widgets • Popup-style menus • tabs
Theme Changes • Lots and lots of element IDs • Onclick() events • Hidden preference menu widgets • Generate drag objects based on layout information
Interaction Overview User action JavaScript UpdatePreferencesServlet Update UI Stored layout
Example: adding tabs User clicks JavaScript Insert new tab in layout Insert new tab in UI Store preferences
Add tab: Java code • Create new tab node • Save layout and get new tab’s nodeId • Create new column and add it to the tab • Save layout • Return new tab nodeId
Add tab: JavaScript code • AJAX request to preferences servlet • Create new tab and append it to the tab list • Assign tab the appropriate id
Example: adding channels User clicks Get channel registry XML Display channel adding menu JavaScript User chooses a channel Preferences servlet Reload page
Skin Resources • {$skin}_preferences.css • Override dojo defaults • Extra icons (left and right arrows)
Customizing • Other skins • Create and link new ${skin}_ajax.js • Other themes • Add element IDs • Create javascript • Other layout managers?
Refining our UI • Terminology choices • Positioning of menu items • Too many features? • Ex. Moving columns • Suddenly a lot of channels look clunky • Links channel • Search • Multi-RSS feed with pull-down menu
Using Dojo in Channels • io library • Get data from XML, JSON, etc. • Interactive, asynchronous requests • Widgets • Tabs in channels • tooltips
Google Maps CWebProxy + AJAX + XML
Yale Events Calendar CWebProxy + AJAX + custom xCal
CSyndFeed Dojo tooltip widget
Weather Portlet Custom RSS feed -> local JSON
Sports Scores ScriptSrcTransport + JSON
Missing Pieces • Resetting a layout • Setting the active tab • Moving columns • Moving channels to a new tab • DLM restrictions
Future Development • Improved tab editing UI • Drag channels to another tab • Reset layout and/or fragment • Increased user feedback • Accessibility
Resources • JA-SIG wiki • http://www.ja-sig.org/wiki/display/UPC/Yale+Dojo-driven+Drag+and+Drop • JA-SIG subversion repository • https://www.ja-sig.org/svn/up2 • Yale portal • https://portal.yale.edu/Login?userName=demo&password=demo • Contact info • jennifer.bourey@yale.edu