CDF Portlet integration
Dejan Gambin provided a howto for portlet integration in CDF.
Here are the steps I have done in order to support CDF in portal environment using IFramePorlet (IFrame Portlet allows for a user-defined IFrame URL).
1) I started with downloading IFramePortlet from here:
http://anonsvn.jboss.org/repos/portl...amePortlet.zip
2) After unpacking, I have done some modifications to IFramePortlet
a) iframe.jsp -
- added javascripts for dynamic adjustment of the frame height. The scripts and the HowTo is located here: http://www.codeproject.com/KB/script...me_Height.aspx
The part of code added is:
<script type="text/javascript"> function getElement(aID) { return (document.getElementById) ? document.getElementById(aID) : document.all[aID]; } function getIFrameDocument(aID){ var rv = null; var frame=getElement(aID); // if contentDocument exists, W3C compliant (e.g. Mozilla) if (frame.contentDocument) rv = frame.contentDocument; else // bad IE rv = document.frames[aID].document; return rv; } function adjustMyFrameHeight() { var frame = getElement("myFrame"); var frameDoc = getIFrameDocument("myFrame"); frame.height = frameDoc.body.offsetHeight; } </script>
- I have modified the "<iframe>" part by adding id and onloada function. Like this:
<iframe id="myFrame" src="<%= request.getAttribute("iframeurl") %>" width="<%= request.getAttribute("iframewidth") %>" onload="adjustMyFrameHeight()" frameborder="0"> Your browser does not support iframes </iframe>
- I have also removed the part that enables opening the iframe in a new window, I don't need it
b) iFramePortlet.java
- I have modified the defaultURL and set:
private static final String defaultURL = "http://localhost:8080/pentaho/Dashboards"; (you can replace localhost with another URL if needed)
- I have also done some modifications to enable setting height in percentage, but it is not needed for this solution to work
c) portlet.xml - I have modified this file to disable Porlet EDIT mode because I don't need it to be editable. I have just removed the line:
<portlet-mode>EDIT</portlet-mode>
I think that's all. I built IFramePorlet.war using "ant deploy24" and put it in jboss/server/default/deploy folder.
After starting the server, there is IFramePortletInstance, IFrame page and IFramePortletWindow added.
If I missed something, please feel free to ask