[jboss-svn-commits] JBoss Portal SVN: r5369 - in trunk: core/src/main/org/jboss/portal/core/controller/ajax core/src/main/org/jboss/portal/core/controller/command core/src/resources/portal-core-sar/META-INF theme/src/bin/portal-ajax-war/js/portal theme/src/main/org/jboss/portal/test/theme/servlet theme/src/main/org/jboss/portal/theme theme/src/main/org/jboss/portal/theme/impl/render/dynamic
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Oct 9 05:14:23 EDT 2006
Author: julien at jboss.com
Date: 2006-10-09 05:14:15 -0400 (Mon, 09 Oct 2006)
New Revision: 5369
Added:
trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxInterceptor.java
Modified:
trunk/core/src/main/org/jboss/portal/core/controller/command/RenderPageCommand.java
trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml
trunk/theme/src/bin/portal-ajax-war/js/portal/event.js
trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestThemeServlet.java
trunk/theme/src/main/org/jboss/portal/theme/ThemeConstants.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java
Log:
make ajax controller handle callbacks / make ajax callback url and script base configurable through page properties
Added: trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxInterceptor.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxInterceptor.java 2006-10-09 08:20:10 UTC (rev 5368)
+++ trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxInterceptor.java 2006-10-09 09:14:15 UTC (rev 5369)
@@ -0,0 +1,74 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.portal.core.controller.ajax;
+
+import org.jboss.portal.core.controller.ControllerInterceptor;
+import org.jboss.portal.core.controller.ControllerCommand;
+import org.jboss.portal.core.controller.command.RenderPageCommand;
+import org.jboss.portal.common.invocation.InvocationException;
+import org.jboss.portal.theme.PageRendition;
+import org.jboss.portal.theme.ThemeConstants;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:julien at jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class AjaxInterceptor extends ControllerInterceptor
+{
+
+ public void invoke(ControllerCommand cmd) throws Exception, InvocationException
+ {
+ cmd.invokeNext();
+
+ //
+ if (cmd instanceof RenderPageCommand)
+ {
+ RenderPageCommand rpc = (RenderPageCommand)cmd;
+ PageRendition rendition = rpc.getResult();
+
+ // Configure ajax
+ if (rendition != null)
+ {
+ Map pageProps = rendition.getPageResult().getPageProperties();
+
+ //
+ pageProps.put(ThemeConstants.PORTAL_AJAX_JAVASCRIPT_BASE, "/portal-ajax");
+
+ // Compute the url for the ajax servlet
+ HttpServletRequest req = cmd.getControllerContext().getServerInvocation().getServerContext().getClientRequest();
+ StringBuffer url = new StringBuffer();
+ url.append(req.getScheme()).append("://");
+ url.append(req.getServerName());
+ if (("http".equals(req.getScheme()) && req.getServerPort() != 80) || ("https".equals(req.getScheme()) && req.getServerPort() != 443))
+ {
+ url.append(':').append(req.getServerPort());
+ }
+ url.append(req.getContextPath()).append("/ajax");
+
+ pageProps.put(ThemeConstants.PORTAL_AJAX_REMOTE_URL, url.toString());
+ }
+ }
+ }
+}
Modified: trunk/core/src/main/org/jboss/portal/core/controller/command/RenderPageCommand.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/command/RenderPageCommand.java 2006-10-09 08:20:10 UTC (rev 5368)
+++ trunk/core/src/main/org/jboss/portal/core/controller/command/RenderPageCommand.java 2006-10-09 09:14:15 UTC (rev 5369)
@@ -286,7 +286,7 @@
private ModifiablePageResult renderFragments(ServerConfig cfg, AttributeResolver navCtx) throws ControllerException
{
PageNavigationalState pageNavState = (PageNavigationalState)navCtx.getAttribute(getPage().getId());
- ModifiablePageResult pageResult = new ModifiablePageResult(getPage().getName(), getPage().getDeclaredProperties(), getPage().getPortal().getDeclaredProperties());
+ ModifiablePageResult pageResult = new ModifiablePageResult(getPage().getName(), new HashMap(getPage().getDeclaredProperties()), new HashMap(getPage().getPortal().getDeclaredProperties()));
// Render
for (Iterator i = windows.iterator(); i.hasNext();)
Modified: trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml 2006-10-09 08:20:10 UTC (rev 5368)
+++ trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml 2006-10-09 09:14:15 UTC (rev 5369)
@@ -99,15 +99,15 @@
<!-- Command stack -->
<mbean
- code="org.jboss.portal.core.aspects.controller.PageNavigationInterceptor"
- name="portal:service=Interceptor,type=Command,name=PageNavigation"
+ code="org.jboss.portal.core.aspects.controller.node.PortalNodeInterceptor"
+ name="portal:service=Interceptor,type=Command,name=PortalNode"
xmbean-dd=""
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
</mbean>
<mbean
- code="org.jboss.portal.core.aspects.controller.PageCustomizerInterceptor"
- name="portal:service=Interceptor,type=Command,name=PageCustomizer"
+ code="org.jboss.portal.core.aspects.controller.PolicyEnforcementInterceptor"
+ name="portal:service=Interceptor,type=Command,name=PolicyEnforcement"
xmbean-dd=""
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
@@ -116,15 +116,15 @@
proxy-type="attribute">portal:service=PortalAuthorizationManagerFactory</depends>
</mbean>
<mbean
- code="org.jboss.portal.core.aspects.controller.node.PortalNodeInterceptor"
- name="portal:service=Interceptor,type=Command,name=PortalNode"
+ code="org.jboss.portal.core.aspects.controller.PageNavigationInterceptor"
+ name="portal:service=Interceptor,type=Command,name=PageNavigation"
xmbean-dd=""
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
</mbean>
<mbean
- code="org.jboss.portal.core.aspects.controller.PolicyEnforcementInterceptor"
- name="portal:service=Interceptor,type=Command,name=PolicyEnforcement"
+ code="org.jboss.portal.core.aspects.controller.PageCustomizerInterceptor"
+ name="portal:service=Interceptor,type=Command,name=PageCustomizer"
xmbean-dd=""
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
@@ -133,6 +133,13 @@
proxy-type="attribute">portal:service=PortalAuthorizationManagerFactory</depends>
</mbean>
<mbean
+ code="org.jboss.portal.core.controller.ajax.AjaxInterceptor"
+ name="portal:service=Interceptor,type=Command,name=Ajax"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ </mbean>
+ <mbean
code="org.jboss.portal.core.aspects.controller.node.EventBroadcasterInterceptor"
name="portal:service=Interceptor,type=Command,name=EventBroadcaster"
xmbean-dd=""
@@ -160,6 +167,7 @@
<depends-list-element>portal:service=Interceptor,type=Command,name=PolicyEnforcement</depends-list-element>
<depends-list-element>portal:service=Interceptor,type=Command,name=PageNavigation</depends-list-element>
<depends-list-element>portal:service=Interceptor,type=Command,name=PageCustomizer</depends-list-element>
+ <depends-list-element>portal:service=Interceptor,type=Command,name=Ajax</depends-list-element>
<depends-list-element>portal:service=Interceptor,type=Command,name=EventBroadcaster</depends-list-element>
<depends-list-element>portal:service=Interceptor,type=Command,name=WindowCache</depends-list-element>
</depends-list>
Modified: trunk/theme/src/bin/portal-ajax-war/js/portal/event.js
===================================================================
--- trunk/theme/src/bin/portal-ajax-war/js/portal/event.js 2006-10-09 08:20:10 UTC (rev 5368)
+++ trunk/theme/src/bin/portal-ajax-war/js/portal/event.js 2006-10-09 09:14:15 UTC (rev 5369)
@@ -60,8 +60,7 @@
}
}
- var url = "http://localhost:8080/portal-ajax/ajax";
- new Ajax.Request(url, options);
+ new Ajax.Request(remote_server_url, options);
/*
a = document.createElement("div");
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestThemeServlet.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestThemeServlet.java 2006-10-09 08:20:10 UTC (rev 5368)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestThemeServlet.java 2006-10-09 09:14:15 UTC (rev 5369)
@@ -73,8 +73,6 @@
private PortalRenderSet renderSet;
private PortalLayout layout;
private PortalTheme theme;
- private Map portalProps = new HashMap();
- private Map pageProps = new HashMap();
private static final String TEST_PAGE_NAME = "TestPage";
@@ -149,8 +147,17 @@
*/
public void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException
{
+ //
+ Map pageProps = new HashMap();
+ pageProps.put(ThemeConstants.PORTAL_AJAX_JAVASCRIPT_BASE, "/portal-ajax");
+ pageProps.put(ThemeConstants.PORTAL_AJAX_REMOTE_URL, "http://localhost:8080/portal-ajax/ajax");
+
+ //
+ Map portalProps = new HashMap();
+ portalProps.put(ThemeConstants.PORTAL_PROP_RENDERSET, renderSet.getName());
+
+ //
HTTPStreamInfo streamInfo = new HTTPStreamInfo(MediaType.HTML, "utf-8");
- portalProps.put(ThemeConstants.PORTAL_PROP_RENDERSET, renderSet.getName());
ServerRequest serverRequest = new ServerRequest();
// pageresult obj
@@ -163,13 +170,13 @@
{
WindowContext wCtx = new WindowContext("WindowA_" + i, "WindowA_"+i, "left", i);
pageResult.addWindowContext(wCtx);
- pageResult.addWindowResult(wCtx.getId(), createWindowMarkup("WindowA_" + i + " Title", "<p>WindowA_" + i + " Content</p>", wCtx));
+ pageResult.addWindowResult(wCtx.getId(), createWindowMarkup("WindowA_" + i + " Title", "<p>WindowA_" + i + " Content</p>", wCtx, portalProps, pageProps));
}
for (int i = 0; i < CENTER_WINDOWS; i++)
{
WindowContext wCtx = new WindowContext("WindowB_" + i, "WindowB_"+i, "center", i);
pageResult.addWindowContext(wCtx);
- pageResult.addWindowResult(wCtx.getId(), createWindowMarkup("WindowB_" + i + " Title", "<p>WindowB_" + i + " Content</p>", wCtx));
+ pageResult.addWindowResult(wCtx.getId(), createWindowMarkup("WindowB_" + i + " Title", "<p>WindowB_" + i + " Content</p>", wCtx, portalProps, pageProps));
}
// set the renderctx and req/res attr
@@ -203,7 +210,7 @@
* @param wCtx
* @return window markup result
*/
- private ModifiableWindowResult createWindowMarkup(String sTitle, String sContent, WindowContext wCtx)
+ private ModifiableWindowResult createWindowMarkup(String sTitle, String sContent, WindowContext wCtx, Map portalProps, Map pageProps)
{
ModifiableWindowResult markupResult = new ModifiableWindowResult(sTitle, sContent, Collections.EMPTY_MAP, new HashMap(), null, null, null, null);
markupResult.addWindowContext(wCtx);
Modified: trunk/theme/src/main/org/jboss/portal/theme/ThemeConstants.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/ThemeConstants.java 2006-10-09 08:20:10 UTC (rev 5368)
+++ trunk/theme/src/main/org/jboss/portal/theme/ThemeConstants.java 2006-10-09 09:14:15 UTC (rev 5369)
@@ -96,4 +96,13 @@
*/
public static final String PORTAL_PROP_REGION = "theme.region";
+ /**
+ *
+ */
+ public static final String PORTAL_AJAX_JAVASCRIPT_BASE = "theme.ajax.js_base";
+
+ /**
+ *
+ */
+ public static final String PORTAL_AJAX_REMOTE_URL = "theme.ajax.remove_url";
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java 2006-10-09 08:20:10 UTC (rev 5368)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java 2006-10-09 09:14:15 UTC (rev 5369)
@@ -27,6 +27,7 @@
import org.jboss.portal.theme.render.RegionRenderer;
import org.jboss.portal.theme.render.RenderContext;
import org.jboss.portal.theme.render.RenderException;
+import org.jboss.portal.theme.ThemeConstants;
import java.util.HashMap;
import java.util.Map;
@@ -61,22 +62,30 @@
public void render(RenderContext renderContext, Region region,
Map portletContexts, Map windowResults) throws RenderException
{
+ Map pageProps = renderContext.getPageProperties();
+
+
+ StringBuffer markup = renderContext.getMarkupFragment();
+ String jsBase = (String)pageProps.get(ThemeConstants.PORTAL_AJAX_JAVASCRIPT_BASE);
+ String remoteURL = (String)pageProps.get(ThemeConstants.PORTAL_AJAX_REMOTE_URL);
+
// Handle special ajax region here
if ("AJAXFooter".equals(region.getId()))
{
- StringBuffer markup = renderContext.getMarkupFragment();
- String ctx = "/portal-ajax";
- markup.append("\n\n<script type='text/javascript' src='").append(ctx).append("/js/portal/event.js'></script>\n\n");
+ markup.append("\n\n<script type='text/javascript' src='").append(jsBase).append("/js/portal/event.js'></script>\n\n");
}
else if ("AJAXScripts".equals(region.getId()))
{
- StringBuffer markup = renderContext.getMarkupFragment();
- String ctx = "/portal-ajax";
markup.append("\n\n\n");
- markup.append("<script type='text/javascript' src='").append(ctx).append("/js/portal/prototype.js'></script>\n");
- markup.append("<script type='text/javascript' src='").append(ctx).append("/js/portal/scriptaculous.js'></script>\n");
- markup.append("<script type='text/javascript' src='").append(ctx).append("/js/portal/effects.js'></script>\n");
- markup.append("<script type='text/javascript' src='").append(ctx).append("/js/portal/dragdrop.js'></script>\n");
+ markup.append("<script type='text/javascript'>\n");
+ markup.append("remote_server_url=\"");
+ markup.append(remoteURL);
+ markup.append(";\"\n");
+ markup.append("</script>\n");
+ markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/prototype.js'></script>\n");
+ markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/scriptaculous.js'></script>\n");
+ markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/effects.js'></script>\n");
+ markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/dragdrop.js'></script>\n");
markup.append("\n\n\n");
}
More information about the jboss-svn-commits
mailing list