You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2009/10/28 00:51:28 UTC
svn commit: r830406 - in /portals/jetspeed-2/portal/trunk:
applications/jetspeed/src/main/webapp/WEB-INF/
applications/jetspeed/src/main/webapp/WEB-INF/jetui/
applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/
applications/jetspeed/src/main/webap...
Author: taylor
Date: Tue Oct 27 23:51:27 2009
New Revision: 830406
URL: http://svn.apache.org/viewvc?rev=830406&view=rev
Log:
https://issues.apache.org/jira/browse/JS2-1057
new ui interface pipeline (/jetspeed/ui) -- will check in required javascript libraries later
to get login to work in ui pipeline modify the index.jsp from /portal to /ui
Added:
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp (with props)
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp (with props)
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/layout_sprite.png (with props)
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css (with props)
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/sprite.png (with props)
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js (with props)
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/Jetui.java (with props)
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiAggregatorImpl.java (with props)
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiPage.java (with props)
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiValve.java (with props)
Modified:
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/web.xml
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/portal.css
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/portal.css
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/portal.css
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/portal.css
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/HeaderAggregatorImpl.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PageAggregator.java
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml
Added: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp?rev=830406&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp (added)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp Tue Oct 27 23:51:27 2009
@@ -0,0 +1,56 @@
+<%--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+--%>
+<%@ page contentType="text/html" %>
+<%@ page import="java.util.Collection" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Map" %>
+<%@ page import="org.apache.jetspeed.ui.Jetui" %>
+<%@ page import="org.apache.jetspeed.request.RequestContext" %>
+<%@ page import="org.apache.jetspeed.om.page.Page" %>
+<%@ page import="org.apache.jetspeed.om.page.ContentFragment" %>
+<%@ page import="org.apache.jetspeed.portlets.layout.ColumnLayout" %>
+<%@ page import="org.apache.jetspeed.om.page.ContentFragment" %>
+<%@ page import="org.apache.jetspeed.decoration.DecoratorAction" %>
+<%@ page import="org.apache.jetspeed.PortalReservedParameters" %>
+<%
+ String content = (String)request.getAttribute("content");
+ String pageDec = (String)request.getAttribute("pageDec");
+ ContentFragment fragment = (ContentFragment)request.getAttribute("fragment");
+%>
+ <div class="portal-layout-cell portal-layout-cell-OneColumn-1-0" id="<%=fragment.getId()%>" name="<%=fragment.getName()%>">
+ <div class="portlet <%=pageDec%>">
+ <div class="PTitle" >
+ <div class="PTitleContent"><%=fragment.getPortletContent().getTitle()%></div>
+ <div class="PActionBar">
+<%
+ for(DecoratorAction action : (List<DecoratorAction>)fragment.getDecoration().getActions())
+ {
+ String target = "target='"+ action.getTarget() + "'";
+ if (action.getTarget() == null)
+ target = "";
+ %>
+ <a href="<%=action.getAction()%>" title="<%=action.getName()%>" class="action portlet-action" <%=target%>><img src="<%=request.getContextPath()%>/<%=action.getLink()%>" alt="<%=action.getAlt()%>" border="0" /></a>
+<% } %>
+ </div>
+ </div>
+ <div class="PContentBorder">
+ <div class="PContent"><span style="line-height:0.005px;"> </span><%=content%></div>
+ </div>
+ </div>
+ </div>
+
\ No newline at end of file
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp
------------------------------------------------------------------------------
svn:keywords = Id
Added: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp?rev=830406&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp (added)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp Tue Oct 27 23:51:27 2009
@@ -0,0 +1,176 @@
+<%--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+--%>
+<%@ page contentType="text/html" %>
+<%@ page import="java.util.Collection" %>
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.Map" %>
+<%@ page import="org.apache.jetspeed.ui.Jetui" %>
+<%@ page import="org.apache.jetspeed.request.RequestContext" %>
+<%@ page import="org.apache.jetspeed.om.page.Page" %>
+<%@ page import="org.apache.jetspeed.om.page.ContentFragment" %>
+<%@ page import="org.apache.jetspeed.portlets.layout.ColumnLayout" %>
+<%@ page import="org.apache.jetspeed.om.page.ContentFragment" %>
+<%@ page import="org.apache.jetspeed.decoration.DecoratorAction" %>
+<%@ page import="org.apache.jetspeed.PortalReservedParameters" %>
+
+<%
+ Jetui jetui = (Jetui)request.getAttribute("jetui");
+ RequestContext rc = (RequestContext)request.getAttribute(RequestContext.REQUEST_PORTALENV);
+ Page portalPage = rc.getPage();
+ ColumnLayout columnLayout = (ColumnLayout)request.getAttribute("columnLayout");
+ String navContent = jetui.renderPortletWindow("_JetspeedNavigator", "j2-admin::JetspeedNavigator", rc);
+ String tbContent = jetui.renderPortletWindow("_JetspeedToolbox", "j2-admin::JetspeedToolbox", rc);
+ String encoding = "text/html";
+ if (response.getCharacterEncoding() != null)
+ {
+ encoding += "; charset=" + response.getCharacterEncoding();
+ }
+ String baseUrl = jetui.getBaseURL(rc);
+ String pageDec = jetui.getTheme(rc).getPageLayoutDecoration().getName();
+%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="<%=encoding%>"/>
+<title><%=jetui.getTitle(rc)%></title>
+<link rel="shortcut icon" href="<%=baseUrl%>images/jetspeed.jpg" type="image/x-icon" />
+<script type="text/javascript" src="/jetspeed/javascript/yui/build/yui/yui-min.js"></script>
+<link rel="stylesheet" type="text/css" href="/jetspeed/jetui/css/portal.css"/>
+
+<%=jetui.includeHeaderResources(rc)%>
+
+<%
+// define layout objects (preferedLocale, rootFragment, site, theme, layoutDecorator)
+// decorator macros
+// defineNavigationConstants()
+
+for (String style : jetui.getStyleSheets(rc))
+{%>
+<link rel="stylesheet" type="text/css" media="screen, projection" href="<%=request.getContextPath()%>/<%=style%>"/>
+<%}
+%>
+
+<body>
+<div id='jetspeedZone'>
+<div id="layout-<%=pageDec%>" class="layout-<%=pageDec%>" >
+<div class="header">
+<h1 class="logo">Jetspeed 2</h1>
+<div class="menu">
+ <span style='position: absolute; left: 0px' id='jstbLeftToggle' class='jstbToggle1'></span><span id='jstbRightToggle' class='jstbToggle2' style='position: absolute; right: 0px'></span>
+</div>
+</div> <!-- end header -->
+
+<!-- main area -->
+<table cellpadding="0" cellspacing="0" border="0" width="100%" id="main">
+<tr>
+<td>
+<div id='jstbLeft' class='jsLeftToolbar'>
+<div id="jsNavigator" class="portlet <%=pageDec%>">
+ <div class="PTitle" >
+ <div class="PTitleContent">Navigator</div>
+ </div>
+ <div class="PContentBorder">
+ <div class="PContent"><span style="line-height:0.005px;"> </span><%=navContent %></div>
+ </div>
+</div>
+</div>
+</td>
+<td id='jsMainarea' class='jsMainarea'>
+<div id="jsFragments" class="portal-nested-layout portal-nested-layout-TwoColumns">
+<%
+ ContentFragment maximized = (ContentFragment)request.getAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE);
+ if (maximized != null)
+ {
+ String content = jetui.getRenderedContent(maximized, rc);
+ request.setAttribute("content", content);
+ request.setAttribute("pageDec", pageDec);
+ request.setAttribute("fragment", maximized);
+%>
+<div id="column_id_0>"
+ class="portal-layout-column"
+ style="float:left; width:100%; background-color: #ffffff;">
+<jsp:include page="jetui-portlet.jsp"/>
+</div>
+<%
+ }
+ else
+ {
+ int index = 0;
+ for (Object collections : columnLayout.getColumns())
+ {
+ String columnFloat = columnLayout.getColumnFloat(index);
+ String columnWidth = columnLayout.getColumnWidth(index);
+ // class="portal-layout-column portal-layout-column-${layoutType}-${columnIndex}"
+%>
+<div id="column_id_<%=index%>"
+ class="portal-layout-column"
+ style="float:<%=columnFloat%>; min-height: 100px; width:<%=columnWidth%>; background-color: #ffffff;">
+
+<%
+ int subindex = 0;
+ Collection<ContentFragment> columns = (Collection<ContentFragment>)collections;
+ for (ContentFragment fragment : columns)
+ {
+ if (!(fragment.getName().equals("j2-admin::JetspeedToolbox") || fragment.getName().equals("j2-admin::JetspeedNavigator")))
+ {
+ //String content = jetui.renderPortletWindow(fragment.getId(), fragment.getName(), rc);
+ String content = jetui.getRenderedContent(fragment, rc);
+ request.setAttribute("content", content);
+ request.setAttribute("pageDec", pageDec);
+ request.setAttribute("fragment", fragment);
+%>
+<jsp:include page="jetui-portlet.jsp"/>
+<%
+ subindex++;
+ }
+ }
+ index++;
+%>
+</div>
+<%
+ }
+ }
+%>
+</div>
+</td>
+<td>
+<div id='jstbRight' class='jsRightToolbar'>
+<div id="jsToolbox" class="portlet <%=pageDec%>">
+ <div class="PTitle" >
+ <div class="PTitleContent">Toolbox</div>
+ </div>
+ <div class="PContentBorder">
+ <div class="PContent"><span style="line-height:0.005px;"> </span><%=tbContent %></div>
+ </div>
+</div>
+</div>
+</td>
+</tr>
+</table>
+
+</div> <!-- end layout -->
+</div>
+</body>
+<script language="javascript">
+var assetsDir = "assets/";
+var buildDir = "/jetspeed/javascript/yui/build/" ;
+var yuiConfig = {base:"/jetspeed/javascript/yui/build/", timeout: 10000, debug: true, useBrowserConsole: true}; // ({classNamePrefix: 'jet'})
+</script>
+<script src="/jetspeed/jetui/engine/portal.js"></script>
+
+</html>
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
------------------------------------------------------------------------------
svn:keywords = Id
Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/web.xml?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/web.xml (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/web.xml Tue Oct 27 23:51:27 2009
@@ -202,6 +202,10 @@
<servlet-name>jetspeed</servlet-name>
<url-pattern>/healthcheck/*</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>jetspeed</servlet-name>
+ <url-pattern>/ui/*</url-pattern>
+ </servlet-mapping>
<!-- Map *.vm files to Velocity -->
<servlet-mapping>
Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/portal.css
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/portal.css?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/portal.css (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/portal.css Tue Oct 27 23:51:27 2009
@@ -30,6 +30,7 @@
padding-right:2px;
white-space:normal;
font-size:1em;
+ background-color: white;
}
.greenearth .PTitleContent
Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/portal.css
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/portal.css?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/portal.css (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/portal.css Tue Oct 27 23:51:27 2009
@@ -30,6 +30,7 @@
padding-right:2px;
white-space:normal;
font-size:1em;
+ background-color: white;
}
.jetspeed .PTitleContent
Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/portal.css
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/portal.css?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/portal.css (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/portal.css Tue Oct 27 23:51:27 2009
@@ -30,6 +30,7 @@
padding-right:2px;
white-space:normal;
font-size:1em;
+ background-color: white;
}
.purpleplanet .PTitleContent
Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/portal.css
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/portal.css?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/portal.css (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/portal.css Tue Oct 27 23:51:27 2009
@@ -30,6 +30,7 @@
padding-right:2px;
white-space:normal;
font-size:1em;
+ background-color: white;
}
.turbo .PTitleContent
Added: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/layout_sprite.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/layout_sprite.png?rev=830406&view=auto
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/layout_sprite.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css?rev=830406&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css (added)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css Tue Oct 27 23:51:27 2009
@@ -0,0 +1,44 @@
+.jsLeftToolbar {
+ width: 200px;
+ height: 600px;
+}
+.jsMainarea {
+ background:#ffffff;
+ width: 100%;
+}
+.jsRightToolbar {
+ width: 200px;
+ height: 600px;
+ float: right;
+}
+.moving {
+ background-color: #ffffff;
+ border: 1px dotted black;
+}
+
+.jstbMoveMode {
+ background: url("/jetspeed/images/portlets/small/x-office-document.png");
+}
+
+.jstbToggle1 {
+ background:transparent url("/jetspeed/jetui/css/layout_sprite.png") no-repeat -20px -120px;
+ height: 14px;
+ width: 18px;
+}
+.jstbToggle2 {
+ background:transparent url("/jetspeed/jetui/css/layout_sprite.png") no-repeat -20px -140px;
+ height: 14px;
+ width: 18px;
+}
+#jsNavigator {
+ z-index: 100;
+ width: 192px;
+}
+#jsToolbox {
+ z-index: 100;
+ width: 192px;
+}
+.PTitle
+{
+ cursor: move;
+}
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css
------------------------------------------------------------------------------
svn:keywords = Id
Added: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/sprite.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/sprite.png?rev=830406&view=auto
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/sprite.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js?rev=830406&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js (added)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js Tue Oct 27 23:51:27 2009
@@ -0,0 +1,440 @@
+//Use loader to grab the modules needed
+YUI(yuiConfig).use('console', 'dd', 'anim', 'io', 'cookie', 'json', 'widget', function(Y) {
+ //new Y.Console().render();
+ //Make this an Event Target so we can bubble to it
+ var Portal = function() {
+ Portal.superclass.constructor.apply(this, arguments);
+ };
+ Portal.NAME = 'portal';
+ Portal.prototype.desktopMode = false;
+ Portal.prototype.jstbLeft;
+ Portal.prototype.jstbRight;
+ Portal.prototype.isMoving;
+ Y.extend(Portal, Y.Base);
+ var portal = new Portal();
+ portal.isMoving = false;
+ var goingUp = false, goingRight = false, lastY = 0, lastX = 0;
+
+ ////////////////////////////////////////////////////
+ // the Portlet Class
+ function Portlet(config) {
+ Portlet.superclass.constructor.call(this, config);
+ };
+ Y.extend(Portlet, Y.Base, {
+ initializer : function(cfg) {
+ },
+ destructor : function(cfg) {
+ }
+ });
+ Portlet.NAME = "portlet";
+ Portlet.ATTRS = {
+ "name" : { value: "undefined" },
+ "id" : { value: "0" },
+ "toolbar" : { value : false },
+ "detached" : { value : false }
+ };
+ Portlet.prototype.info = function() {
+ Y.log("name: " + this.get("name"));
+ Y.log("id : " + this.get("id"));
+ Y.log("toolbar : " + this.get("toolbar"));
+ Y.log("---------");
+ };
+
+ ////////////////////////////////////////////////////
+ // Create Navigator Portlet
+ var navigator = new Portlet();
+ navigator.set("name", "j2-admin::JetspeedNavigator");
+ navigator.set("id", "_JetspeedNavigator");
+ navigator.set("toolbar", true);
+ navigator.set("detached", false);
+ var toolbox = new Portlet();
+ toolbox.set("name", "j2-admin::JetspeedToolbox");
+ toolbox.set("id", "_JetspeedToolbox");
+ toolbox.set("toolbar", true);
+ toolbox.set("detached", false);
+
+// var toggleMoveMode = function(e) {
+// window.location = window.location + "?toggle=move";
+// }
+// Y.on("click", toggleMoveMode, "#jstbMoveMode");
+
+ ////////////////////////////////////////////////////
+ // setup toolbar docking area and togglers
+ var lhsToggler = Y.get('#jstbLeftToggle');
+ var rhsToggler = Y.get('#jstbRightToggle');
+ // add fx plugin to docking area
+ portal.jstbLeft = Y.get('#jstbLeft').plug(Y.Plugin.NodeFX, {
+ from: { width: 1 },
+ to: {
+ width: function(node) { // dynamic in case of change
+ return 200; //node.get('scrollWidth'); // get expanded height (offsetHeight may be zero)
+ }
+ },
+ easing: Y.Easing.easeOut,
+ duration: 0.3
+ });
+ portal.jstbRight = Y.get('#jstbRight').plug(Y.Plugin.NodeFX, {
+ from: { width: 1 },
+ to: {
+ width: function(node) { // dynamic in case of change
+ return 200; //node.get('scrollWidth'); // get expanded height (offsetHeight may be zero)
+ }
+ },
+ easing: Y.Easing.easeOut,
+ duration: 0.3
+ });
+ var onClickToolbar = function(e) {
+// nav.setStyle('z-index', '500');
+ }
+
+ var onClickToggler = function(e) {
+ var id = e.target.getAttribute('id');
+ var toggler = lhsToggler;
+ var toolbar = portal.jstbLeft;
+ var compareStyle = 'jstbToggle1';
+ if (id.indexOf('Left') == -1)
+ {
+ toggler = rhsToggler;
+ toolbar = portal.jstbRight;
+ var compareStyle = 'jstbToggle2';
+ }
+ portal.toggleToolbar(toolbar, toggler, compareStyle);
+ };
+ lhsToggler.on('click', onClickToggler);
+ rhsToggler.on('click', onClickToggler);
+
+ ////////////////////////////////////////////////////
+ // drag and drop
+ var nav = Y.get('#jsNavigator');
+ nav.data = navigator;
+ var ddNav = new Y.DD.Drag({
+ node: nav,
+ groups: ['toolbars'],
+ dragMode: 'point'
+ }).plug(Y.Plugin.DDProxy, {
+ moveOnEnd: false
+ });
+ ddNav.addHandle('.PTitle');
+ nav.on('click', onClickToolbar);
+
+ var jetspeedZone = Y.get('#jetspeedZone');
+ var jzDrop = new Y.DD.Drop({
+ node: jetspeedZone,
+ groups: ['toolbars']
+ });
+
+ var tb = Y.get('#jsToolbox');
+ tb.data = toolbox;
+ var ddToolbox = new Y.DD.Drag({
+ node: tb,
+ groups: ['toolbars'],
+ dragMode: 'point'
+ }).plug(Y.Plugin.DDProxy, {
+ moveOnEnd: false
+ });
+ ddToolbox.addHandle('.PTitle');
+ tb.on('click', onClickToolbar);
+
+ var drop = new Y.DD.Drop({
+ node: Y.get('#jstbLeft'),
+ groups: ['toolbars']
+ });
+ var drop = new Y.DD.Drop({
+ node: Y.get('#jstbRight'),
+ groups: ['toolbars']
+ });
+
+ var draggablePortlets = Y.Node.all('.portal-layout-cell');
+ draggablePortlets.each(function(v, k) {
+ var p = new Portlet();
+ p.set("name", v.getAttribute("name"));
+ p.set("id", v.getAttribute("id"));
+ p.set("toolbar", false);
+ p.set("detached", false);
+ v.data = p;
+ var ddNav = new Y.DD.Drag({
+ node: v,
+ groups: ['portlets'],
+ dragMode: 'intersect'
+ }).plug(Y.Plugin.DDProxy, {
+ moveOnEnd: false
+ });
+ ddNav.addHandle('.PTitle');
+ var drop = new Y.DD.Drop({
+ node: v,
+ groups: ['portlets', 'toolbars']
+ });
+ });
+
+ var dropLayoutColumns = Y.Node.all('.portal-layout-column');
+ dropLayoutColumns.each(function(v, k) {
+ var drop = new Y.DD.Drop({
+ node: v,
+ groups: ['portlets']
+ });
+ });
+
+ Portal.prototype.toggleToolbar = function(toolbar, toggler, compareStyle) {
+ toggler.toggleClass('jstbToggle1');
+ toggler.toggleClass('jstbToggle2');
+ var currentStyle = toggler.getAttribute('class');
+ var nodelist = toolbar.get('children');
+ if (currentStyle == compareStyle)
+ {
+ nodelist.setStyle('display', 'block');
+ }
+ else
+ {
+ nodelist.setStyle('display', 'none');
+ }
+ toolbar.fx.set('reverse', !toolbar.fx.get('reverse')); // toggle reverse
+ toolbar.fx.run();
+ };
+
+
+ Y.DD.DDM.on('drag:drophit', function(e) {
+ var drop = e.drop.get('node'),
+ drag = e.drag.get('node');
+ if (drag.data.get("toolbar"))
+ {
+ Y.log("drop hit of toolbar: " + drop.getAttribute('id'));
+ if (drop == portal.jstbLeft || drop == portal.jstbRight)
+ {
+ drag.setStyle('position', '');
+ drag.setStyle('top', '');
+ drag.setStyle('left', '');
+ drop.appendChild(drag);
+ }
+ else
+ {
+ var dragParent = drag.get('parentNode');
+ drag.setStyle('position', 'absolute');
+ drag.setStyle('top', e.drag.region.top + "px");
+ drag.setStyle('left', e.drag.region.left + "px");
+ jetspeedZone.appendChild(drag);
+ if (dragParent.get("children").size() == 0)
+ {
+ if (dragParent == portal.jstbLeft) {
+ portal.toggleToolbar(dragParent, lhsToggler, "jstbToggle1");
+ }
+ else if (dragParent == portal.jstbRight) {
+ portal.toggleToolbar(dragParent, rhsToggler, "jstbToggle2");
+ }
+ }
+ }
+ }
+ });
+
+ Portal.prototype.movePortlet = function(e)
+ {
+ var drop = e.drop.get('node'),
+ drag = e.drag.get('node');
+ var dragParent = drag.get('parentNode');
+ var dropParent = drop.get('parentNode');
+
+ Y.log("HIT: " + drop.data.get('id'));
+
+ if (dropParent == portal.jstbLeft || dropParent == portal.jstbRight)
+ {
+ if (!dropParent.contains(drag)) {
+ dropParent.appendChild(drag);
+ }
+ }
+ else
+ {
+ if (goingUp)
+ {
+ Y.log("going UP");
+ // var next = drop.get('previousSibling');
+ var prev = drop.previous();
+ if (prev == null)
+ {
+ //drag.remove();
+ dropParent.prepend(drag);
+ }
+ else
+ {
+ //drag.remove();
+ dropParent.insertBefore(drag, drop);
+ }
+ }
+ else
+ {
+ var next = drop.next();
+ if (next == null)
+ {
+ Y.log("going down APPEND");
+ //drag.remove();
+ dropParent.appendChild(drag);
+ }
+ else
+ {
+ Y.log("going down: " + next); //next.data.get('name'));
+ //drag.remove();
+ dropParent.insertBefore(drag, next);
+ }
+ }
+ }
+ };
+
+ Y.DD.DDM.on('drag:end', function(e) {
+ var drag = e.target;
+ if (drag.target) {
+ drag.target.set('locked', false);
+ }
+ if (drag.get('node').data.get("toolbar"))
+ {
+ drag.get('node').setStyle('visibility', '');
+ }
+ else
+ {
+ var x = drag.get('node').all('div');
+ if (x != null)
+ {
+ x.setStyle('visibility', '');
+ }
+ }
+ //drag.get('node').setStyle('border', '');
+ drag.get('node').removeClass('moving');
+ drag.get('dragNode').set('innerHTML', '');
+ });
+
+ Y.DD.DDM.on('drag:start', function(e) {
+ var drag = e.target;
+// if (drag.target) {
+// drag.target.set('locked', true);
+// }
+ var dragNode = drag.get('dragNode');
+ dragNode.set('innerHTML', drag.get('node').get('innerHTML'));
+ dragNode.setStyle('opacity','.5');
+ dragNode.setAttribute('class', 'portlet purpleplanet');
+
+ if (drag.get('node').data.get("toolbar"))
+ {
+ drag.get('node').setStyle('visibility', 'hidden');
+ }
+ else
+ {
+ var x = drag.get('node').all('div');
+ if (x != null)
+ {
+ x.setStyle('visibility', 'hidden');
+ }
+ }
+ drag.get('node').setStyle('border', '1px dotted #black');
+ drag.get('node').addClass('moving');
+
+ lastX = drag.mouseXY[0];
+ lastY = drag.mouseXY[1];
+ //Y.log("starting drag " + lastX + " , " + lastY);
+ });
+
+ Y.DD.DDM.on('drag:over', function(e) {
+ if (portal.isMoving)
+ return;
+
+ var x = e.drag.mouseXY[0],
+ y = e.drag.mouseXY[1];
+
+ if (y == lastY)
+ {
+ }
+ else if (y < lastY) {
+ goingUp = true;
+
+ } else {
+ goingUp = false;
+ }
+ lastY = y;
+ if (x < lastX) {
+ goingRight = false;
+ } else {
+ goingRight = true;
+ }
+ lastX = x;
+
+ if (e.drag.get('node').data.get("toolbar"))
+ {
+ var drop = e.drop.get('node'),
+ drag = e.drag.get('node');
+ var dragParent = drag.get('parentNode');
+ var dropParent = drop.get('parentNode');
+ if (drop == portal.jstbLeft || drop == portal.jstbRight)
+ {
+ if (!drop.contains(drag)) {
+ drop.appendChild(drag);
+ }
+ // close up the toolbar leaving from
+ if (dragParent.get("children").size() == 0)
+ {
+ if (dragParent == portal.jstbLeft) {
+ portal.toggleToolbar(dragParent, lhsToggler, "jstbToggle1");
+ }
+ else if (dragParent == portal.jstbRight) {
+ portal.toggleToolbar(dragParent, rhsToggler, "jstbToggle2");
+ }
+ }
+ }
+ else // jetspeed drop zone
+ {
+ //Y.log("hovering over the zone");
+ }
+ }
+ else
+ {
+ var region = e.drop.get('node').get('region');
+ var srcRegion = e.drag.get('node').get('region');
+ if (y >= srcRegion.top && y <= srcRegion.bottom && x >= srcRegion.left && x <= srcRegion.right)
+ {
+// Y.log("dragging over src");
+ }
+ else if (y >= region.top && y <= region.bottom && x >= region.left && x <= region.right)
+ {
+ Y.log("**** HIT");
+ portal.isMoving = true;
+ portal.movePortlet(e);
+ portal.isMoving = false;
+ }
+ }
+ //Y.log("x,y = " + x + "," + y);
+
+ });
+
+// Y.DD.DDM.on('drag:drag', function(e) {
+// var x = e.target.mouseXY[0];
+// var y = e.target.mouseXY[1];
+// if (y < lastY) {
+// goingUp = true;
+// } else {
+// goingUp = false;
+// }
+// if (x < lastX) {
+// goingRight = false;
+// } else {
+// goingRight = true;
+// }
+// lastX = x;
+// Y.log("DRAG: x = " + x + " y " + y );
+// });
+
+// Y.DD.DDM.on('drop:enter', function(e) {
+//
+// //var region = e.drop.region;
+// var region = e.drop.get('node').get('region');
+// Y.log("region = " + region.top + "," + region.bottom + " : " + region.left + "," +region.right);
+
+// if (!e.drag || !e.drop || (e.drop !== e.target)) {
+// return false;
+// }
+ //var id = e.drop.get('node').data.get('id');
+ //Y.log("entering: " + p);
+
+// if (e.drop.get('node').get('tagName').toLowerCase() === 'li') {
+// if (e.drop.get('node').hasClass('item')) {
+// _moveMod(e.drag, e.drop);
+// }
+// }
+// });
+
+
+});
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js
------------------------------------------------------------------------------
svn:keywords = Id
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java Tue Oct 27 23:51:27 2009
@@ -85,8 +85,7 @@
aggregateAndRender(root, context, page, true, null, null, null);
}
- // write all rendered content
- context.getResponse().getWriter().write(root.getRenderedContent());
+ renderContent(context, root);
if (null != window)
{
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/BaseAggregatorImpl.java Tue Oct 27 23:51:27 2009
@@ -16,6 +16,7 @@
*/
package org.apache.jetspeed.aggregator.impl;
+import java.io.IOException;
import java.util.List;
import org.slf4j.Logger;
@@ -24,6 +25,7 @@
import org.apache.jetspeed.aggregator.PortletContent;
import org.apache.jetspeed.aggregator.PortletRenderer;
import org.apache.jetspeed.container.PortletWindow;
+import org.apache.jetspeed.exception.JetspeedException;
import org.apache.jetspeed.om.page.ContentFragment;
import org.apache.jetspeed.om.page.ContentPage;
import org.apache.jetspeed.request.RequestContext;
@@ -110,5 +112,10 @@
window.getFragment().overrideRenderedContent("Sorry, but we were unable access the requested portlet. Send the following message to your portal admin: "+ e.getMessage());
}
}
+
+ public void renderContent(RequestContext context, ContentFragment root) throws JetspeedException, IOException
+ {
+ context.getResponse().getWriter().write(root.getRenderedContent());
+ }
}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/HeaderAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/HeaderAggregatorImpl.java?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/HeaderAggregatorImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/HeaderAggregatorImpl.java Tue Oct 27 23:51:27 2009
@@ -1075,4 +1075,7 @@
{
return this.baseUrlAccess;
}
+ public void renderContent(RequestContext context, ContentFragment root) throws JetspeedException, IOException
+ {
+ }
}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java Tue Oct 27 23:51:27 2009
@@ -78,7 +78,7 @@
}
// write all rendered content
- context.getResponse().getWriter().write(root.getRenderedContent());
+ renderContent(context, root);
if (null != window)
{
@@ -88,7 +88,7 @@
releaseBuffers(root, context);
}
-
+
@SuppressWarnings("unchecked")
protected void aggregateAndRender( ContentFragment f, RequestContext context, ContentPage page )
{
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/Jetui.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/Jetui.java?rev=830406&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/Jetui.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/Jetui.java Tue Oct 27 23:51:27 2009
@@ -0,0 +1,200 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jetspeed.ui;
+
+import java.util.List;
+import java.util.Set;
+
+import javax.servlet.RequestDispatcher;
+
+import org.apache.jetspeed.aggregator.PortletRenderer;
+import org.apache.jetspeed.container.PortletWindow;
+import org.apache.jetspeed.decoration.Theme;
+import org.apache.jetspeed.headerresource.HeaderResource;
+import org.apache.jetspeed.headerresource.HeaderResourceFactory;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.pipeline.PipelineException;
+import org.apache.jetspeed.portlets.layout.ColumnLayout;
+import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.util.DOMUtils;
+import org.apache.jetspeed.util.KeyValue;
+import org.w3c.dom.Element;
+
+/**
+ *
+ * @author <a href="mailto:david@bluesunrise.com">David Sean Taylor</a>
+ * @version $Id$
+ */
+public class Jetui
+{
+ private PortletRenderer renderer;
+ private HeaderResourceFactory headerFactory;
+ private String layoutTemplate;
+
+ public Jetui(PortletRenderer renderer, HeaderResourceFactory headerFactory, String layoutTemplate)
+ {
+ this.renderer = renderer;
+ this.headerFactory = headerFactory;
+ this.layoutTemplate = layoutTemplate;
+ }
+
+ public void process( RequestContext request, ContentFragment maximized)
+ throws PipelineException
+ {
+ try
+ {
+ RequestDispatcher dispatcher = request.getRequest().getRequestDispatcher(layoutTemplate);
+ request.setAttribute("jetui", this);
+ if (maximized == null)
+ {
+ Fragment rootFragment = request.getPage().getRootFragment();
+ String jetspeedLayout = rootFragment.getName();
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // BOGUS: I would prefer to put all layout information directly in PSML, not in portlet.xml, right now its mixed
+ // need to have a better algorithm to determine number of columns and fragment column sizes
+ int numberOfColumns = 1;
+ String layoutType = "OneColumn";
+ String fragmentColumnSizes = "100%";
+ if (jetspeedLayout.indexOf("Two") > -1)
+ {
+ numberOfColumns = 2;
+ layoutType = "TwoColumn";
+ fragmentColumnSizes = "50%,50%";
+ }
+ else if (jetspeedLayout.indexOf("Three") > -1)
+ {
+ numberOfColumns = 3;
+ layoutType = "ThreeColumn";
+ fragmentColumnSizes = "33%,34%,33%";
+ }
+ else if (jetspeedLayout.indexOf("Four") > -1)
+ {
+ numberOfColumns = 4;
+ layoutType = "FourColumn";
+ fragmentColumnSizes = "25%,25%,25%,25%";
+ }
+ String [] fragmentColumnSizesArray = fragmentColumnSizes.split("\\,");
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ ColumnLayout columnLayout = new ColumnLayout(numberOfColumns, layoutType, rootFragment.getFragments(), fragmentColumnSizesArray);
+ request.setAttribute("columnLayout", columnLayout);
+ }
+ dispatcher.include(request.getRequest(), request.getResponse());
+ }
+ catch (Exception e)
+ {
+ throw new PipelineException(e.toString(), e);
+ }
+ }
+
+ public String renderPortlet(ContentFragment fragment, RequestContext context)
+ {
+ return fragment.getRenderedContent();
+ }
+
+ public String getTitle(RequestContext context)
+ {
+ return context.getPage().getTitle(context.getLocale());
+ }
+
+ public String getBaseURL(RequestContext context)
+ {
+ StringBuffer url = new StringBuffer();
+ url.append(context.getRequest().getScheme());
+ url.append("://");
+ url.append(context.getRequest().getServerName());
+ url.append(":");
+ url.append(context.getRequest().getServerPort());
+ url.append(context.getRequest().getContextPath());
+ url.append("/");
+ return url.toString();
+ }
+
+ public Theme getTheme(RequestContext context)
+ {
+ return (Theme)context.getRequest().getAttribute("org.apache.jetspeed.theme");
+ }
+
+ public Set<String> getStyleSheets(RequestContext context)
+ {
+ return getTheme(context).getStyleSheets();
+ }
+
+ public String includeHeaderResources(RequestContext context)
+ {
+ HeaderResource hr = headerFactory.getHeaderResouce(context);
+ ContentFragment root = context.getPage().getRootContentFragment();
+ StringBuffer result = new StringBuffer(hr.getContent());
+ List<KeyValue<String, Element>> headers = context.getPortletWindow(root).getHeadElements();
+ for (KeyValue<String, Element> pair : headers)
+ {
+ if (!pair.getKey().equals("header.dojo.library.include"))
+ {
+ String element = DOMUtils.stringifyElementToHtml(pair.getValue());
+ result.append(element);
+ }
+ }
+ return result.toString();
+ }
+
+ public String getRenderedContent(ContentFragment fragment, RequestContext context)
+ {
+ return fragment.getRenderedContent();
+ }
+
+ public String renderPortletWindow(String windowId, String portletUniqueName, RequestContext context)
+ {
+ try
+ {
+ if (windowId == null || portletUniqueName == null)
+ {
+ throw new IllegalArgumentException("Parameter windowId and portletUniqueName are both required");
+ }
+ PortletWindow window = context.getPortletWindow(windowId);
+ if (window == null)
+ {
+ window = context.getInstantlyCreatedPortletWindow(windowId, portletUniqueName);
+ }
+ if (window.isValid())
+ {
+ PortletWindow currentPortletWindow = context.getCurrentPortletWindow();
+ try
+ {
+ context.setCurrentPortletWindow(window);
+ renderer.renderNow(window.getFragment(), context);
+ return window.getFragment().getRenderedContent();
+ }
+ finally
+ {
+ context.setCurrentPortletWindow(currentPortletWindow);
+ }
+ }
+ else
+ {
+ return "";
+ }
+ }
+ catch (Exception e)
+ {
+ //handleError(e, e.toString(), getCurrentFragment());
+ e.printStackTrace();
+ return "";
+ }
+ }
+
+}
\ No newline at end of file
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/Jetui.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/Jetui.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiAggregatorImpl.java?rev=830406&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiAggregatorImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiAggregatorImpl.java Tue Oct 27 23:51:27 2009
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.ui;
+
+import java.io.IOException;
+
+import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.aggregator.PageAggregator;
+import org.apache.jetspeed.aggregator.PortletRenderer;
+import org.apache.jetspeed.aggregator.impl.AsyncPageAggregatorImpl;
+import org.apache.jetspeed.container.PortletWindow;
+import org.apache.jetspeed.exception.JetspeedException;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.ContentPage;
+import org.apache.jetspeed.request.RequestContext;
+
+/**
+ * Jetui builds the content required to render a page of portlets.
+ *
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
+ * @version $Id$
+ */
+public class JetuiAggregatorImpl extends AsyncPageAggregatorImpl implements PageAggregator
+{
+
+ private Jetui ui;
+
+ public JetuiAggregatorImpl(PortletRenderer renderer, Jetui ui)
+ {
+ super(renderer);
+ this.ui = ui;
+ }
+
+ public void renderContent(RequestContext context, ContentFragment root) throws JetspeedException, IOException
+ {
+ ContentFragment maximized = (ContentFragment)context.getAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE);
+ ui.process(context, maximized);
+ }
+
+ protected void renderMaximizedWindow(RequestContext context, ContentPage page, ContentFragment layoutContentFragment, PortletWindow window)
+ {
+// boolean maxedLayout = false;
+// PortletWindow layoutWindow;
+// if (window.getFragment().getId().equals(layoutContentFragment.getId()))
+// {
+// layoutWindow = window;
+// maxedLayout = true;
+// }
+// else
+// {
+// layoutWindow = context.getPortletWindow(layoutContentFragment);
+// }
+
+ context.setAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE, window.getFragment());
+// layoutWindow.setAttribute(PortalReservedParameters.MAXIMIZED_LAYOUT_ATTRIBUTE, page.getRootContentFragment());
+
+ try
+ {
+ renderer.renderNow(window.getFragment(), context);
+// if (!maxedLayout)
+// {
+// renderer.renderNow(layoutContentFragment, context);
+// }
+ }
+ catch (Exception e)
+ {
+ log.error(e.getMessage(), e);
+ window.getFragment().overrideRenderedContent(
+ "Sorry, but we were unable access the requested portlet. Send the following message to your portal admin: " + e.getMessage());
+ }
+ }
+
+}
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiAggregatorImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiAggregatorImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiPage.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiPage.java?rev=830406&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiPage.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiPage.java Tue Oct 27 23:51:27 2009
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jetspeed.ui;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Vector;
+
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.page.Page;
+
+/**
+ * Represents a page in a row/column oriented layout
+ *
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @version $Id$
+ */
+public class JetuiPage implements Serializable
+{
+ private static final long serialVersionUID = 1L;
+ private Vector<Fragment> columns = null;
+ private int numberOfColumns = 1;
+
+ public JetuiPage(Page page)
+ {
+ String jetspeedLayout = page.getRootFragment().getName();
+ if (jetspeedLayout.indexOf("Two") > -1)
+ {
+ numberOfColumns = 2;
+ }
+ else if (jetspeedLayout.indexOf("Three") > -1)
+ {
+ numberOfColumns = 3;
+ }
+ columns = new Vector<Fragment>(numberOfColumns);
+ buildColumns(page.getRootFragment());
+ }
+
+ private boolean buildColumns(Fragment f)
+ {
+ List<Fragment> fragments = f.getFragments();
+ if (fragments != null && !fragments.isEmpty())
+ {
+ for (Fragment child : fragments)
+ {
+ boolean found = buildColumns(child);
+ if (found)
+ return true;
+ }
+ }
+ return false;
+ }
+
+ protected final int getColumn(Fragment fragment)
+ {
+ String propertyValue = fragment.getProperty(Fragment.COLUMN_PROPERTY_NAME);
+ if (propertyValue != null)
+ {
+ int columnNumber = Integer.parseInt(propertyValue);
+
+ // Exceeded columns get put into the last column
+ if (columnNumber >= numberOfColumns)
+ {
+ columnNumber = (numberOfColumns - 1);
+ }
+ // Columns less than 1 go in the first column
+ else if (columnNumber < 0)
+ {
+ columnNumber = 0;
+ }
+
+ return columnNumber;
+ }
+ else
+ {
+ return (numberOfColumns - 1);
+ }
+ }
+
+}
+
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiPage.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiValve.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiValve.java?rev=830406&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiValve.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiValve.java Tue Oct 27 23:51:27 2009
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jetspeed.ui;
+
+import org.apache.jetspeed.aggregator.PageAggregator;
+import org.apache.jetspeed.pipeline.PipelineException;
+import org.apache.jetspeed.pipeline.valve.AbstractValve;
+import org.apache.jetspeed.pipeline.valve.ValveContext;
+import org.apache.jetspeed.request.RequestContext;
+
+/**
+ * Invokes the aggregator service in the request pipeline
+ *
+ * @author <a href="mailto:david@bluesunrise.com">David Sean Taylor</a>
+ * @version $Id$
+ */
+public class JetuiValve
+ extends AbstractValve
+{
+ private Jetui ui;
+ private PageAggregator aggregator;
+
+ public JetuiValve(Jetui ui, PageAggregator aggregator)
+ {
+ this.ui = ui;
+ this.aggregator = aggregator;
+ }
+
+ public void invoke( RequestContext request, ValveContext context )
+ throws PipelineException
+ {
+ try
+ {
+ aggregator.build(request);
+ }
+ catch (Exception e)
+ {
+ throw new PipelineException(e.toString(), e);
+ }
+ context.invokeNext( request );
+ }
+
+ public String toString()
+ {
+ return "JetuiValve";
+ }
+}
\ No newline at end of file
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiValve.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/ui/JetuiValve.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PageAggregator.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PageAggregator.java?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PageAggregator.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PageAggregator.java Tue Oct 27 23:51:27 2009
@@ -16,6 +16,12 @@
*/
package org.apache.jetspeed.aggregator;
+import java.io.IOException;
+
+import org.apache.jetspeed.exception.JetspeedException;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.request.RequestContext;
+
/**
* Page aggregation handles pipeline requests for pages of portlets.
*
@@ -24,4 +30,5 @@
*/
public interface PageAggregator extends Aggregator
{
+ void renderContent(RequestContext rc, ContentFragment root) throws JetspeedException, IOException;
}
Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/aggregation.xml Tue Oct 27 23:51:27 2009
@@ -204,4 +204,5 @@
<!-- Uncomment this to HARD CODE your portal URL -->
<!-- <constructor-arg><ref bean="BasePortalURL"/></constructor-arg> -->
</bean>
+
</beans>
Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml?rev=830406&r1=830405&r2=830406&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml Tue Oct 27 23:51:27 2009
@@ -819,6 +819,9 @@
<entry key='/healthcheck'>
<value>healthcheck-pipeline</value>
</entry>
+ <entry key='/ui'>
+ <value>jetui-pipeline</value>
+ </entry>
</map>
</constructor-arg>
</bean>
@@ -827,4 +830,63 @@
<meta key="j2:cat" value="default" />
</bean>
+ <bean id="jetui-pipeline" class="org.apache.jetspeed.pipeline.JetspeedPipeline" init-method="initialize">
+ <meta key="j2:cat" value="default" />
+ <constructor-arg>
+ <value>JetuiPipeline</value>
+ </constructor-arg>
+ <constructor-arg>
+ <list>
+ <ref bean="capabilityValve" />
+ <ref bean="portalURLValve" />
+ <ref bean="securityValve" />
+ <ref bean="localizationValve" />
+ <ref bean="passwordCredentialValve" />
+ <ref bean="loginValidationValve" />
+ <ref bean="profilerValve" />
+ <ref bean="refreshUserHomepageValve" />
+ <!--
+ JS2-806
+ -->
+ <ref bean="pageHistoryValve" />
+ <ref bean="containerValve" />
+ <ref bean="actionValve" />
+ <ref bean="resourceValve" />
+ <!--
+ JS2-834
+ <ref bean="cleanupPortalURLValve"/>
+ -->
+
+ <ref bean="DecorationValve" />
+ <ref bean="headerAggregatorValvePortal" />
+ <ref bean="jetuiValve" />
+ <ref bean="cleanUpValve" />
+ </list>
+ </constructor-arg>
+ </bean>
+
+ <bean id="jetuiValve" class="org.apache.jetspeed.ui.JetuiValve" init-method="initialize">
+ <meta key="j2:cat" value="default" />
+ <constructor-arg><ref bean="jetui" /></constructor-arg>
+ <constructor-arg><ref bean="jetuiAggregator" /></constructor-arg>
+ </bean>
+
+ <bean id="jetui" class="org.apache.jetspeed.ui.Jetui">
+ <meta key="j2:cat" value="default" />
+ <constructor-arg><ref bean="org.apache.jetspeed.aggregator.PortletRenderer"/></constructor-arg>
+ <constructor-arg><ref bean="org.apache.jetspeed.headerresource.HeaderResourceFactory"/></constructor-arg>
+ <constructor-arg><value>/WEB-INF/jetui/yui/jetui.jsp</value></constructor-arg>
+ </bean>
+
+ <bean id="jetuiAggregator" class="org.apache.jetspeed.ui.JetuiAggregatorImpl">
+ <meta key="j2:cat" value="default" />
+ <constructor-arg index="0">
+ <ref bean="org.apache.jetspeed.aggregator.PortletRenderer" />
+ </constructor-arg>
+ <constructor-arg>
+ <ref bean="jetui" />
+ </constructor-arg>
+ </bean>
+
+
</beans>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org