You are viewing a plain text version of this content. The canonical link for it is here.
Posted to portalapps-dev@portals.apache.org by wo...@apache.org on 2009/09/28 19:09:37 UTC
svn commit: r819646 -
/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/portlet/IFrameGenericPortlet.java
Author: woonsan
Date: Mon Sep 28 17:09:37 2009
New Revision: 819646
URL: http://svn.apache.org/viewvc?rev=819646&view=rev
Log:
APA-17: Makes it work under both Portlet 1.0 and Portlet 2.0 environments.
Modified:
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/portlet/IFrameGenericPortlet.java
Modified: portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/portlet/IFrameGenericPortlet.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/portlet/IFrameGenericPortlet.java?rev=819646&r1=819645&r2=819646&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/portlet/IFrameGenericPortlet.java (original)
+++ portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/portlet/IFrameGenericPortlet.java Mon Sep 28 17:09:37 2009
@@ -27,6 +27,7 @@
import javax.portlet.PortletConfig;
import javax.portlet.PortletException;
import javax.portlet.PortletPreferences;
+import javax.portlet.PortletURL;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
@@ -35,6 +36,7 @@
import javax.portlet.WindowState;
import org.apache.commons.lang.BooleanUtils;
+import org.apache.commons.lang.ClassUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.portals.bridges.velocity.GenericVelocityPortlet;
import org.apache.portals.messaging.PortletMessaging;
@@ -56,11 +58,14 @@
private Map<String, String> attributes = new HashMap<String, String>();
private Map<String, String> maxAttributes = new HashMap<String, String>();
+
+ private boolean isPortlet10Container;
@Override
public void init(PortletConfig config) throws PortletException
{
super.init(config);
+
attributes.put("SRC", "http://www.apache.org");
attributes.put("PROXYREMOTEURL", "");
attributes.put("PROXYLOCALPATH", "");
@@ -84,6 +89,15 @@
maxAttributes.put("WIDTH", "100%");
maxAttributes.put("SCROLLING", "AUTO");
maxAttributes.put("STYLE", "");
+
+ try
+ {
+ ClassUtils.getPublicMethod(PortletConfig.class, "getDefaultNamespace", new Class[0]);
+ }
+ catch (Throwable ignorable)
+ {
+ isPortlet10Container = true;
+ }
}
private String getAttributePreference(PortletPreferences prefs, String attribute)
@@ -221,12 +235,23 @@
{
appendAttribute(prefs, content, "VISITLASTPAGE");
- // append a resource url string as an attribute to enable the handler javascript to invoke.
- ResourceURL visitPageResourceURL = response.createResourceURL();
- visitPageResourceURL.setResourceID("visit");
- content.append(" ").append("visitresourceurl").append("=\"");
- visitPageResourceURL.write(content, true);
- content.append("\"");
+ if (!isPortlet10Container)
+ {
+ // append a resource url string as an attribute to enable the handler javascript to invoke.
+ ResourceURL visitPageResourceURL = response.createResourceURL();
+ visitPageResourceURL.setResourceID("visit");
+ content.append(" ").append("visitresourceurl").append("=\"");
+ visitPageResourceURL.write(content, true);
+ content.append("\"");
+ }
+ else
+ {
+ PortletURL visitPageActionURL = response.createActionURL();
+ visitPageActionURL.setParameter("action", "visit");
+ content.append(" ").append("visitresourceurl").append("=\"");
+ content.append(visitPageActionURL.toString());
+ content.append("\"");
+ }
}
if (request.getWindowState().equals(WindowState.MAXIMIZED))
@@ -251,7 +276,28 @@
// end fix JS2-349
content.append("</TD></TR></TBODY></TABLE>");
-
+
+ if (isPortlet10Container)
+ {
+ boolean autoResize = BooleanUtils.toBoolean(getAttributePreference(prefs, "AUTORESIZE"));
+ boolean visitLastPage = BooleanUtils.toBoolean(getAttributePreference(prefs, "VISITLASTPAGE"));
+
+ if (autoResize || visitLastPage)
+ {
+ String handlerScript = getAttributePreference(prefs, "HANDLERSCRIPT");
+
+ if (StringUtils.isBlank(handlerScript))
+ {
+ handlerScript = request.getContextPath() + "/javascript/iframe_handler.js";
+ }
+
+ content.append("\n<script id=\"").append(IFRAME_AUTORESIZE_SCRIPT_ID).append("\" ");
+ content.append("language=\"JavaScript\" type=\"text/javascript\" ");
+ content.append("src=\"").append(handlerScript).append("\">");
+ content.append("</script>\n");
+ }
+ }
+
// set required content type and write HTML IFRAME content
response.setContentType("text/html");
response.getWriter().print(content.toString());
@@ -299,7 +345,19 @@
public void processAction(ActionRequest request, ActionResponse actionResponse) throws PortletException,
IOException
{
- processPreferencesAction(request, actionResponse);
+ if ("visit".equals(request.getParameter("action")))
+ {
+ String url = request.getParameter("URL");
+
+ if (!StringUtils.isBlank(url))
+ {
+ PortletMessaging.publish(request, IFRAME_SRC_URL, url.trim());
+ }
+ }
+ else
+ {
+ processPreferencesAction(request, actionResponse);
+ }
}
}