{"id":326,"date":"2007-07-03T08:55:21","date_gmt":"2007-07-03T12:55:21","guid":{"rendered":"http:\/\/www.dr-chuck.com\/wordpress\/?p=326"},"modified":"2011-12-17T12:23:19","modified_gmt":"2011-12-17T16:23:19","slug":"sakai-dashboard-portlet-jsr-168","status":"publish","type":"post","link":"https:\/\/www.dr-chuck.com\/csev-blog\/2007\/07\/sakai-dashboard-portlet-jsr-168\/","title":{"rendered":"Sakai Dashboard Portlet (JSR-168)"},"content":{"rendered":"<p>I just finished writing a simple Sakai Dashboard JSR-168 portlet.  The portlet logs into a Sakai server on behalf of a user and retrieves and RSS feed of the sites and their announcements for the user.  Then the feed is displayed in the portlet &#8211; all of the links are target=_new so there are ZERO iframes in the portlet and portal.<br \/>\nI need to write documentation for it (of course) &#8211; but the code is here:<br \/>\nhttps:\/\/source.sakaiproject.org\/contrib\/portlets\/trunk\/<br \/>\nThis directory now can be checked out and compiles *outside* of a Sakai source tree &#8211; it only needs the Sakai maven plugin.<br \/>\nmaven plugin:download -DgroupId=sakaiproject -DartifactId=sakai -Dversion=2.2<br \/>\nThis portlet configures and operates much like the Launch Portlet that we have had for a while now.   It uses SakaiPortalLogin.jws like the other portlets. The Dashboard portlet can be configured via Admin-specified preferences in addition to the portlet.xml -this should make it easier to install and configure.<br \/>\nI use Rome to retrieve and parse the feed &#8211; all the markup is in Velocity.   I have code in place to retrieve the raw feed in case someone wants to apply some XSLT to it to make it prettier.<br \/>\nYes, I know the portlet is ugly &#8211; that is why all the markup is in Velocity so folks can fix it for me &#8211; or just switch to XSLT.  I am going to run through some deployment scenarios in uPortal and Pluto and write some basic documentation about how to set things up.<br \/>\nI took the opportunity to go through the portlets and do some general cleanup and improve some patterns as I have gained more experience in writing portlets and portlet support code.<br \/>\nThanks to Alves Phillipe from Pierre-Marie Curie Institute who worked with me at JA-Sig on the idea to get me started.<br \/>\nComments, patches, etc needed and welcomed.  I use a new mechanism to retrieve remote user, etc &#8211; so I need a parch to my lookupPortalType method in PortletHelper.java for Gridsphere and Oracle.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I just finished writing a simple Sakai Dashboard JSR-168 portlet. The portlet logs into a Sakai server on behalf of a user and retrieves and RSS feed of the sites and their announcements for the user. Then the feed is displayed in the portlet &#8211; all of the links are target=_new so there are ZERO [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-326","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/comments?post=326"}],"version-history":[{"count":1,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/326\/revisions"}],"predecessor-version":[{"id":2431,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/326\/revisions\/2431"}],"wp:attachment":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/media?parent=326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/categories?post=326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/tags?post=326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}