You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by jc...@apache.org on 2011/11/09 01:25:46 UTC
svn commit: r1199564 - in /incubator/rave/trunk: ./
rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/
rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/
rave-portal-dependencies/ rave-portal-resources/ r...
Author: jcian
Date: Wed Nov 9 00:25:45 2011
New Revision: 1199564
URL: http://svn.apache.org/viewvc?rev=1199564&view=rev
Log:
Adding initial tiles integration -- currently just for the "home" view but will expand to cover other views as well. Supports RAVE-343.
Added:
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/footer.jsp
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/header.jsp
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/includes/
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/includes/taglibs.jsp
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/templates/
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/templates/base_layout.jsp
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml
Modified:
incubator/rave/trunk/pom.xml
incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java
incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java
incubator/rave/trunk/rave-portal-dependencies/pom.xml
incubator/rave/trunk/rave-portal-resources/pom.xml
incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties
incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/dispatcher-servlet.xml
incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/home.jsp
Modified: incubator/rave/trunk/pom.xml
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/pom.xml?rev=1199564&r1=1199563&r2=1199564&view=diff
==============================================================================
--- incubator/rave/trunk/pom.xml (original)
+++ incubator/rave/trunk/pom.xml Wed Nov 9 00:25:45 2011
@@ -68,6 +68,7 @@
<guice.version>3.0</guice.version>
<cobertura.version>2.5.1</cobertura.version>
<org.hamcrest.version>1.1</org.hamcrest.version>
+ <tiles.version>2.2.2</tiles.version>
<!-- The location of Rave's H2 file DB. No trailing / -->
<portal.datasource.url>/tmp/rave_portal_data</portal.datasource.url>
@@ -338,6 +339,11 @@
<version>${project.version}</version>
<type>war</type>
</dependency>
+ <dependency>
+ <groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-jsp</artifactId>
+ <version>${tiles.version}</version>
+ </dependency>
<!-- Test -->
<dependency>
Modified: incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java?rev=1199564&r1=1199563&r2=1199564&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java Wed Nov 9 00:25:45 2011
@@ -24,7 +24,9 @@ package org.apache.rave.portal.web.util;
*/
public class ViewNames {
private ViewNames() {}
- public static final String HOME = "home";
+ private static final String USER_PREFIX = "templates.user.";
+
+ public static final String HOME = USER_PREFIX + "home";
public static final String STORE = "store";
public static final String WIDGET = "widget";
public static final String ADD_WIDGET_FORM = "addwidget";
Modified: incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java?rev=1199564&r1=1199563&r2=1199564&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/PageControllerTest.java Wed Nov 9 00:25:45 2011
@@ -25,6 +25,7 @@ import org.apache.rave.portal.model.User
import org.apache.rave.portal.service.PageService;
import org.apache.rave.portal.service.UserService;
import org.apache.rave.portal.web.util.ModelKeys;
+import org.apache.rave.portal.web.util.ViewNames;
import org.junit.Before;
import org.junit.Test;
import org.springframework.ui.ExtendedModelMap;
@@ -49,7 +50,6 @@ public class PageControllerTest {
private final Long DEFAULT_PAGE_ID = 99L;
private final Long OTHER_PAGE_ID = 22L;
private final Long USER_ID = 1L;
- private final String HOME_VIEW = "home";
private final String VALID_PAGE_LAYOUT_CODE = "layout98";
private User validUser;
private PageLayout validPageLayout;
@@ -85,7 +85,7 @@ public class PageControllerTest {
String results = pageController.view(OTHER_PAGE_ID, model);
- assertThat(results, equalTo(HOME_VIEW));
+ assertThat(results, equalTo(ViewNames.HOME));
assertThat((Page) model.asMap().get(ModelKeys.PAGE), sameInstance(otherPage));
assertThat((List<Page>) model.asMap().get(ModelKeys.PAGES), sameInstance(allPages));
@@ -105,7 +105,7 @@ public class PageControllerTest {
String results = pageController.view(OTHER_PAGE_ID, model);
- assertThat(results, equalTo(HOME_VIEW));
+ assertThat(results, equalTo(ViewNames.HOME));
assertThat((Page) model.asMap().get(ModelKeys.PAGE), sameInstance(defaultPage));
assertThat((List<Page>) model.asMap().get(ModelKeys.PAGES), sameInstance(pages));
@@ -121,7 +121,7 @@ public class PageControllerTest {
String results = pageController.viewDefault(model);
- assertThat(results, equalTo(HOME_VIEW));
+ assertThat(results, equalTo(ViewNames.HOME));
assertThat((Page) model.asMap().get(ModelKeys.PAGE), sameInstance(defaultPage));
assertThat((List<Page>) model.asMap().get(ModelKeys.PAGES), sameInstance(allPages));
@@ -141,7 +141,7 @@ public class PageControllerTest {
String results = pageController.viewDefault(model);
- assertThat(results, equalTo(HOME_VIEW));
+ assertThat(results, equalTo(ViewNames.HOME));
assertThat((Page) model.asMap().get(ModelKeys.PAGE), sameInstance(defaultPage));
assertThat((List<Page>) model.asMap().get(ModelKeys.PAGES), sameInstance(pages));
Modified: incubator/rave/trunk/rave-portal-dependencies/pom.xml
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-dependencies/pom.xml?rev=1199564&r1=1199563&r2=1199564&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-dependencies/pom.xml (original)
+++ incubator/rave/trunk/rave-portal-dependencies/pom.xml Wed Nov 9 00:25:45 2011
@@ -128,6 +128,12 @@
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
+
+ <!-- Tiles -->
+ <dependency>
+ <groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-jsp</artifactId>
+ </dependency>
</dependencies>
Modified: incubator/rave/trunk/rave-portal-resources/pom.xml
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/pom.xml?rev=1199564&r1=1199563&r2=1199564&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/pom.xml (original)
+++ incubator/rave/trunk/rave-portal-resources/pom.xml Wed Nov 9 00:25:45 2011
@@ -35,7 +35,7 @@
<packaging>war</packaging>
<!--
- The dependencies should have the scope provided.
+ The dependencies defined here should have the scope provided.
They are not needed for compilation, only to support JSTL code completion in IDE's.
-->
<dependencies>
@@ -59,6 +59,11 @@
<artifactId>rave-web</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-jsp</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
Modified: incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties?rev=1199564&r1=1199563&r2=1199564&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties Wed Nov 9 00:25:45 2011
@@ -54,6 +54,7 @@ page.general.movethispage.after=After {0
page.general.movethispage.tofirst=To First Tab (Set as Default)
page.general.password=Password:
page.general.screenshot=screenshot
+page.general.title=Rave
page.general.titlesuffix= - Rave
page.general.thumbnail=thumbnail
page.general.toadmininterface=Admin interface
@@ -69,6 +70,7 @@ page.general.addpage.layout.columns_4=Fo
page.general.addpage.layout.columns_3nwn_1_bottom=Four Columns (narrow/wide/narrow/bottom)
page.general.addpage.selectlayout=Select Page Layout:
+page.home.title=Home
page.home.welcome=Hello {0}, welcome to Rave!
page.menu.title=Page Actions Menu
Modified: incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties?rev=1199564&r1=1199563&r2=1199564&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties Wed Nov 9 00:25:45 2011
@@ -54,6 +54,7 @@ page.general.movethispage.after=Na {0}
page.general.movethispage.tofirst=Naar eerste Tab (Set as Default)
page.general.password=Wachtwoord:
page.general.screenshot=screenshot
+page.general.title=Rave
page.general.titlesuffix= - Rave
page.general.thumbnail=miniatuur
page.general.toadmininterface=Admin interface
@@ -69,6 +70,7 @@ page.general.addpage.layout.columns_4=Vi
page.general.addpage.layout.columns_3nwn_1_bottom=Vier kolommen (smal/breed/smal/beneden)
page.general.addpage.selectlayout=Selecteer de Pagina indeling:
+page.home.title=Home
page.home.welcome=Hallo {0}, welkom bij Rave!
page.menu.title=Pagina Acties Menu
Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/dispatcher-servlet.xml
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/dispatcher-servlet.xml?rev=1199564&r1=1199563&r2=1199564&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/dispatcher-servlet.xml (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/dispatcher-servlet.xml Wed Nov 9 00:25:45 2011
@@ -59,4 +59,16 @@
</property>
</bean>
+ <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
+ <property name="definitions">
+ <list>
+ <value>/WEB-INF/tiles-defs.xml</value>
+ </list>
+ </property>
+ </bean>
+
+ <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="0">
+ <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
+ </bean>
+
</beans>
\ No newline at end of file
Added: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/footer.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/footer.jsp?rev=1199564&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/footer.jsp (added)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/footer.jsp Wed Nov 9 00:25:45 2011
@@ -0,0 +1,19 @@
+<%--
+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.
+--%>
+<%-- Common footer will go here... --%>
\ No newline at end of file
Added: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/header.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/header.jsp?rev=1199564&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/header.jsp (added)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/common/header.jsp Wed Nov 9 00:25:45 2011
@@ -0,0 +1,19 @@
+<%--
+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.
+--%>
+<%-- Common header will go here... --%>
\ No newline at end of file
Added: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/includes/taglibs.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/includes/taglibs.jsp?rev=1199564&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/includes/taglibs.jsp (added)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/includes/taglibs.jsp Wed Nov 9 00:25:45 2011
@@ -0,0 +1,26 @@
+<%--
+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.
+--%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
+<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
+<%@ taglib prefix="portal" uri="http://www.apache.org/rave/tags" %>
+<%@ taglib prefix="rave" tagdir="/WEB-INF/tags"%>
\ No newline at end of file
Added: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/templates/base_layout.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/templates/base_layout.jsp?rev=1199564&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/templates/base_layout.jsp (added)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/templates/base_layout.jsp Wed Nov 9 00:25:45 2011
@@ -0,0 +1,45 @@
+<%--
+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 language="java" trimDirectiveWhitespaces="true" %>
+<%@ page errorPage="/WEB-INF/jsp/views/error.jsp" %>
+<%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
+<fmt:setBundle basename="messages"/>
+<%-- Expose any attributes defined in the tiles-defs.xml to the request scope for use in other tiles --%>
+<tiles:importAttribute scope="request"/>
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="ISO-8859-1"/>
+ <title><fmt:message key="${pageTitleKey}"/> <fmt:message key="${pageTitleSuffixKey}"/></title>
+ <link rel="stylesheet" href="//ajax.aspnetcdn.com/ajax/jquery.ui/1.8.13/themes/base/jquery-ui.css"/>
+ <link rel="stylesheet" href="<c:url value="/css/default.css" />"/>
+ <rave:custom_css/>
+ <!--[if lt IE 9]>
+ <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+</head>
+<body>
+<%-- Header Content --%>
+<tiles:insertAttribute name="header"/>
+<%-- Main Body Content --%>
+<tiles:insertAttribute name="body"/>
+<%-- Footer Content --%>
+<tiles:insertAttribute name="footer"/>
+</body>
+</html>
\ No newline at end of file
Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/home.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/home.jsp?rev=1199564&r1=1199563&r2=1199564&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/home.jsp (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/home.jsp Wed Nov 9 00:25:45 2011
@@ -17,218 +17,210 @@
under the License.
--%>
<%@ page language="java" trimDirectiveWhitespaces="true" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
-<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
-<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
-<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
-<%@ taglib prefix="portal" uri="http://www.apache.org/rave/tags" %>
-<%@ taglib tagdir="/WEB-INF/tags" prefix="rave"%>
+<%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
<jsp:useBean id="pages" type="java.util.List<org.apache.rave.portal.model.Page>" scope="request"/>
<fmt:setBundle basename="messages"/>
<%--@elvariable id="page" type="org.apache.rave.portal.model.Page"--%>
-<rave:rave_generic_page pageTitle="${page.name}">
- <header>
- <nav class="topnav">
- <ul class="horizontal-list">
+<header>
+ <nav class="topnav">
+ <ul class="horizontal-list">
+ <li>
+ <a href="<spring:url value="/app/store?referringPageId=${page.entityId}" />">
+ <fmt:message key="page.store.title"/>
+ </a>
+ </li>
+ <sec:authorize url="/app/admin/">
<li>
- <a href="<spring:url value="/app/store?referringPageId=${page.entityId}" />">
- <fmt:message key="page.store.title"/>
+ <a href="<spring:url value="/app/admin/"/>">
+ <fmt:message key="page.general.toadmininterface"/>
</a>
</li>
- <sec:authorize url="/app/admin/">
- <li>
- <a href="<spring:url value="/app/admin/"/>">
- <fmt:message key="page.general.toadmininterface"/>
- </a>
- </li>
- </sec:authorize>
- <li>
- <a href="<spring:url value="/j_spring_security_logout" htmlEscape="true" />">
- <fmt:message key="page.general.logout"/></a>
- </li>
- </ul>
- </nav>
- <h1>
- <fmt:message key="page.home.welcome"><fmt:param><c:out value="${page.owner.username}"/></fmt:param></fmt:message>
- </h1>
- </header>
- <input id="currentPageId" type="hidden" value="${page.entityId}" />
- <c:set var="hasOnlyOnePage">
- <c:choose>
- <c:when test="${fn:length(pages) == 1}">true</c:when>
- <c:otherwise>false</c:otherwise>
- </c:choose>
- </c:set>
- <div id="tabsHeader">
- <%-- render the page tabs --%>
- <div id="tabs" class="rave-ui-tabs">
- <c:forEach var="userPage" items="${pages}">
- <%-- determine if the current page in the list matches the page the user is viewing --%>
- <c:set var="isCurrentPage">
- <c:choose>
- <c:when test="${page.entityId == userPage.entityId}">true</c:when>
- <c:otherwise>false</c:otherwise>
- </c:choose>
- </c:set>
- <div id="tab-${userPage.entityId}" class="rave-ui-tab<c:if test="${isCurrentPage}"> rave-ui-tab-selected</c:if>">
- <div id="pageTitle-${userPage.entityId}" class="page-title" onclick="rave.viewPage(${userPage.entityId});"><c:out value="${userPage.name}"/></div>
- <c:if test="${isCurrentPage}">
- <div id="pageMenuWrapper">
- <span id="pageMenuButton" class="ui-icon ui-icon-circle-triangle-s" title="<fmt:message key="page.menu.title"/>"></span>
- <div id="pageMenu" class="page-menu">
- <div id="pageMenuEdit" class="page-menu-item"><fmt:message key="page.general.editpage"/></div>
- <div id="pageMenuDelete" class="page-menu-item<c:if test='${hasOnlyOnePage}'> page-menu-item-disabled</c:if>">
- <fmt:message key="page.general.deletepage"/></div>
- <div id="pageMenuMove" class="page-menu-item<c:if test='${hasOnlyOnePage}'> page-menu-item-disabled</c:if>">
- <fmt:message key="page.general.movepage"/></div>
- </div>
- </div>
- </c:if>
- </div>
- </c:forEach>
- <%-- display the add page button at the end of the tabs --%>
- <fmt:message key="page.general.addnewpage" var="addNewPageTitle"/>
- <button id="add_page" title="${addNewPageTitle}" style="display: none;"></button>
- </div>
- </div>
- <%--render the main page content (regions/widgets) --%>
- <div id="pageContent">
- <c:forEach var="region" items="${page.regions}">
- <div class="region" id="region-${region.entityId}-id">
- <c:forEach var="regionWidget" items="${region.regionWidgets}">
- <div class="widget-wrapper" id="widget-${regionWidget.entityId}-wrapper">
- <div class="widget-title-bar">
- <span id="widget-${regionWidget.entityId}-collapse" class="widget-toolbar-toggle-collapse" title="<fmt:message key="widget.chrome.toggle"/>"></span>
- <div id="widget-${regionWidget.entityId}-title" class="widget-title">
- <c:choose>
- <c:when test="${not empty regionWidget.widget.titleUrl}">
- <a href="${regionWidget.widget.titleUrl}" rel="external"><c:out value="${regionWidget.widget.title}"/></a>
- </c:when>
- <c:otherwise>
- <c:out value="${regionWidget.widget.title}"/>
- </c:otherwise>
- </c:choose>
- </div>
- <%-- These are toolbar buttons --%>
- <div id="widget-${regionWidget.entityId}-toolbar" style="float:right;">
- <div id="widget-${regionWidget.entityId}-widget-menu-wrapper" class="widget-menu-wrapper">
- <span id="widget-${regionWidget.entityId}-menu-button" class="widget-menu-button ui-icon ui-icon-gear" title="<fmt:message key="widget.menu.title"/>"></span>
- <div id="widget-${regionWidget.entityId}-menu" class="widget-menu">
- <%--
- By default the edit prefs item is disabled.
- Each provider's widget initialization will be responsible for enabling this item
- if the widget has preferences to be edited
- --%>
- <div id="widget-${regionWidget.entityId}-menu-editprefs-item" class="widget-menu-item widget-menu-item-disabled">
- <fmt:message key="widget.menu.editprefs"/>
- </div>
- <div id="widget-${regionWidget.entityId}-menu-maximize-item" class="widget-menu-item">
- <fmt:message key="widget.menu.maximize"/>
- </div>
- <div id="widget-${regionWidget.entityId}-menu-move-item" class="widget-menu-item<c:if test='${hasOnlyOnePage}'> widget-menu-item-disabled</c:if>">
- <fmt:message key="widget.menu.movetopage"/>
- </div>
- <div id="widget-${regionWidget.entityId}-menu-delete-item" class="widget-menu-item">
- <fmt:message key="widget.menu.delete"/>
- </div>
- </div>
- </div>
- <%-- the minimize widget button, which is hidden by default and only displays in maximized view --%>
- <button id="widget-${regionWidget.entityId}-min"
- class="widget-toolbar-btn widget-toolbar-btn-min"></button>
- </div>
- </div>
- <div class="widget-prefs" id="widget-${regionWidget.entityId}-prefs-content"></div>
- <div class="widget" id="widget-${regionWidget.entityId}-body">
- <portal:render-widget regionWidget="${regionWidget}" />
+ </sec:authorize>
+ <li>
+ <a href="<spring:url value="/j_spring_security_logout" htmlEscape="true" />">
+ <fmt:message key="page.general.logout"/></a>
+ </li>
+ </ul>
+ </nav>
+ <h1>
+ <fmt:message key="page.home.welcome"><fmt:param><c:out value="${page.owner.username}"/></fmt:param></fmt:message>
+ </h1>
+</header>
+<input id="currentPageId" type="hidden" value="${page.entityId}" />
+<c:set var="hasOnlyOnePage">
+ <c:choose>
+ <c:when test="${fn:length(pages) == 1}">true</c:when>
+ <c:otherwise>false</c:otherwise>
+ </c:choose>
+</c:set>
+<div id="tabsHeader">
+ <%-- render the page tabs --%>
+ <div id="tabs" class="rave-ui-tabs">
+ <c:forEach var="userPage" items="${pages}">
+ <%-- determine if the current page in the list matches the page the user is viewing --%>
+ <c:set var="isCurrentPage">
+ <c:choose>
+ <c:when test="${page.entityId == userPage.entityId}">true</c:when>
+ <c:otherwise>false</c:otherwise>
+ </c:choose>
+ </c:set>
+ <div id="tab-${userPage.entityId}" class="rave-ui-tab<c:if test="${isCurrentPage}"> rave-ui-tab-selected</c:if>">
+ <div id="pageTitle-${userPage.entityId}" class="page-title" onclick="rave.viewPage(${userPage.entityId});"><c:out value="${userPage.name}"/></div>
+ <c:if test="${isCurrentPage}">
+ <div id="pageMenuWrapper">
+ <span id="pageMenuButton" class="ui-icon ui-icon-circle-triangle-s" title="<fmt:message key="page.menu.title"/>"></span>
+ <div id="pageMenu" class="page-menu">
+ <div id="pageMenuEdit" class="page-menu-item"><fmt:message key="page.general.editpage"/></div>
+ <div id="pageMenuDelete" class="page-menu-item<c:if test='${hasOnlyOnePage}'> page-menu-item-disabled</c:if>">
+ <fmt:message key="page.general.deletepage"/></div>
+ <div id="pageMenuMove" class="page-menu-item<c:if test='${hasOnlyOnePage}'> page-menu-item-disabled</c:if>">
+ <fmt:message key="page.general.movepage"/></div>
</div>
</div>
- </c:forEach>
+ </c:if>
</div>
</c:forEach>
- <div class="clear-float"> </div>
- </div>
- <fmt:message key="page.general.addnewpage" var="addNewPageTitle"/>
- <div id="dialog" title="${addNewPageTitle}" class="dialog">
- <form id="pageForm">
- <div id="pageFormErrors" class="error"></div>
- <fieldset class="ui-helper-reset">
- <input type="hidden" name="tab_id" id="tab_id" value="" />
- <label for="tab_title"><fmt:message key="page.general.addpage.title"/></label>
- <input type="text" name="tab_title" id="tab_title" value="" class="required ui-widget-content ui-corner-all" />
- <label for="pageLayout"><fmt:message key="page.general.addpage.selectlayout"/></label>
- <select name="pageLayout" id="pageLayout">
- <option value="columns_1" id="columns_1_id"><fmt:message key="page.general.addpage.layout.columns_1"/></option>
- <option value="columns_2" id="columns_2_id" selected="selected"><fmt:message key="page.general.addpage.layout.columns_2"/></option>
- <option value="columns_2wn" id="columns_2wn_id"><fmt:message key="page.general.addpage.layout.columns_2wn"/></option>
- <option value="columns_3" id="columns_3_id"><fmt:message key="page.general.addpage.layout.columns_3"/></option>
- <option value="columns_3nwn" id="columns_3nwn_id"><fmt:message key="page.general.addpage.layout.columns_3nwn"/></option>
- <option value="columns_4" id="columns_4_id"><fmt:message key="page.general.addpage.layout.columns_4"/></option>
- <option value="columns_3nwn_1_bottom" id="columns_3nwn_1_bottom"><fmt:message key="page.general.addpage.layout.columns_3nwn_1_bottom"/></option>
- </select>
- </fieldset>
- </form>
+ <%-- display the add page button at the end of the tabs --%>
+ <fmt:message key="page.general.addnewpage" var="addNewPageTitle"/>
+ <button id="add_page" title="${addNewPageTitle}" style="display: none;"></button>
</div>
- <fmt:message key="page.general.movepage" var="movePageTitle"/>
- <div id="movePageDialog" title="${movePageTitle}" class="dialog">
- <div><fmt:message key="page.general.movethispage"/></div>
- <form id="movePageForm">
- <select id="moveAfterPageId">
- <c:if test="${page.renderSequence != 1}">
- <option value="-1"><fmt:message key="page.general.movethispage.tofirst"/></option>
- </c:if>
- <c:forEach var="userPage" items="${pages}">
- <c:if test="${userPage.entityId != page.entityId}">
- <option value="${userPage.entityId}">
- <fmt:message key="page.general.movethispage.after">
- <fmt:param><c:out value="${userPage.name}"/></fmt:param>
- </fmt:message>
- </option>
- </c:if>
- </c:forEach>
- </select>
- </form>
- </div>
- <fmt:message key="widget.menu.movetopage" var="moveWidgetToPageTitle"/>
- <div id="moveWidgetDialog" title="${moveWidgetToPageTitle}" class="dialog">
- <div><fmt:message key="widget.menu.movethiswidget"/></div>
- <form id="moveWidgetForm">
- <select id="moveToPageId">
- <c:forEach var="userPage" items="${pages}">
- <c:if test="${userPage.entityId != page.entityId}">
- <option value="${userPage.entityId}">
- <c:out value="${userPage.name}"/>
- </option>
- </c:if>
- </c:forEach>
+</div>
+<%--render the main page content (regions/widgets) --%>
+<div id="pageContent">
+ <c:forEach var="region" items="${page.regions}">
+ <div class="region" id="region-${region.entityId}-id">
+ <c:forEach var="regionWidget" items="${region.regionWidgets}">
+ <div class="widget-wrapper" id="widget-${regionWidget.entityId}-wrapper">
+ <div class="widget-title-bar">
+ <span id="widget-${regionWidget.entityId}-collapse" class="widget-toolbar-toggle-collapse" title="<fmt:message key="widget.chrome.toggle"/>"></span>
+ <div id="widget-${regionWidget.entityId}-title" class="widget-title">
+ <c:choose>
+ <c:when test="${not empty regionWidget.widget.titleUrl}">
+ <a href="${regionWidget.widget.titleUrl}" rel="external"><c:out value="${regionWidget.widget.title}"/></a>
+ </c:when>
+ <c:otherwise>
+ <c:out value="${regionWidget.widget.title}"/>
+ </c:otherwise>
+ </c:choose>
+ </div>
+ <%-- These are toolbar buttons --%>
+ <div id="widget-${regionWidget.entityId}-toolbar" style="float:right;">
+ <div id="widget-${regionWidget.entityId}-widget-menu-wrapper" class="widget-menu-wrapper">
+ <span id="widget-${regionWidget.entityId}-menu-button" class="widget-menu-button ui-icon ui-icon-gear" title="<fmt:message key="widget.menu.title"/>"></span>
+ <div id="widget-${regionWidget.entityId}-menu" class="widget-menu">
+ <%--
+ By default the edit prefs item is disabled.
+ Each provider's widget initialization will be responsible for enabling this item
+ if the widget has preferences to be edited
+ --%>
+ <div id="widget-${regionWidget.entityId}-menu-editprefs-item" class="widget-menu-item widget-menu-item-disabled">
+ <fmt:message key="widget.menu.editprefs"/>
+ </div>
+ <div id="widget-${regionWidget.entityId}-menu-maximize-item" class="widget-menu-item">
+ <fmt:message key="widget.menu.maximize"/>
+ </div>
+ <div id="widget-${regionWidget.entityId}-menu-move-item" class="widget-menu-item<c:if test='${hasOnlyOnePage}'> widget-menu-item-disabled</c:if>">
+ <fmt:message key="widget.menu.movetopage"/>
+ </div>
+ <div id="widget-${regionWidget.entityId}-menu-delete-item" class="widget-menu-item">
+ <fmt:message key="widget.menu.delete"/>
+ </div>
+ </div>
+ </div>
+ <%-- the minimize widget button, which is hidden by default and only displays in maximized view --%>
+ <button id="widget-${regionWidget.entityId}-min"
+ class="widget-toolbar-btn widget-toolbar-btn-min"></button>
+ </div>
+ </div>
+ <div class="widget-prefs" id="widget-${regionWidget.entityId}-prefs-content"></div>
+ <div class="widget" id="widget-${regionWidget.entityId}-body">
+ <portal:render-widget regionWidget="${regionWidget}" />
+ </div>
+ </div>
+ </c:forEach>
+ </div>
+ </c:forEach>
+ <div class="clear-float"> </div>
+</div>
+<fmt:message key="page.general.addnewpage" var="addNewPageTitle"/>
+<div id="dialog" title="${addNewPageTitle}" class="dialog">
+ <form id="pageForm">
+ <div id="pageFormErrors" class="error"></div>
+ <fieldset class="ui-helper-reset">
+ <input type="hidden" name="tab_id" id="tab_id" value="" />
+ <label for="tab_title"><fmt:message key="page.general.addpage.title"/></label>
+ <input type="text" name="tab_title" id="tab_title" value="" class="required ui-widget-content ui-corner-all" />
+ <label for="pageLayout"><fmt:message key="page.general.addpage.selectlayout"/></label>
+ <select name="pageLayout" id="pageLayout">
+ <option value="columns_1" id="columns_1_id"><fmt:message key="page.general.addpage.layout.columns_1"/></option>
+ <option value="columns_2" id="columns_2_id" selected="selected"><fmt:message key="page.general.addpage.layout.columns_2"/></option>
+ <option value="columns_2wn" id="columns_2wn_id"><fmt:message key="page.general.addpage.layout.columns_2wn"/></option>
+ <option value="columns_3" id="columns_3_id"><fmt:message key="page.general.addpage.layout.columns_3"/></option>
+ <option value="columns_3nwn" id="columns_3nwn_id"><fmt:message key="page.general.addpage.layout.columns_3nwn"/></option>
+ <option value="columns_4" id="columns_4_id"><fmt:message key="page.general.addpage.layout.columns_4"/></option>
+ <option value="columns_3nwn_1_bottom" id="columns_3nwn_1_bottom"><fmt:message key="page.general.addpage.layout.columns_3nwn_1_bottom"/></option>
</select>
- </form>
- </div>
- <script>
- //Define the global widgets map. This map will be populated by RegionWidgetRender providers.
- var widgetsByRegionIdMap = {};
- </script>
- <portal:render-script location="${'BEFORE_LIB'}" />
- <script src="//cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js"></script>
- <script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>
- <script src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.8.13/jquery-ui.min.js"></script>
- <script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.8.1/jquery.validate.min.js"></script>
- <portal:render-script location="${'AFTER_LIB'}" />
- <portal:render-script location="${'BEFORE_RAVE'}" />
- <script src="<spring:url value="/script/rave.js"/>"></script>
- <script src="<spring:url value="/script/rave_api.js"/>"></script>
- <script src="<spring:url value="/script/rave_opensocial.js"/>"></script>
- <script src="<spring:url value="/script/rave_wookie.js"/>"></script>
- <script src="<spring:url value="/script/rave_layout.js"/>"></script>
- <portal:render-script location="${'AFTER_RAVE'}" />
- <script>
- $(function() {
- rave.setContext("<spring:url value="/app/" />");
- rave.initProviders();
- rave.initWidgets(widgetsByRegionIdMap);
- rave.initUI();
- rave.layout.init();
- });
- </script>
-</rave:rave_generic_page>
+ </fieldset>
+ </form>
+</div>
+<fmt:message key="page.general.movepage" var="movePageTitle"/>
+<div id="movePageDialog" title="${movePageTitle}" class="dialog">
+ <div><fmt:message key="page.general.movethispage"/></div>
+ <form id="movePageForm">
+ <select id="moveAfterPageId">
+ <c:if test="${page.renderSequence != 1}">
+ <option value="-1"><fmt:message key="page.general.movethispage.tofirst"/></option>
+ </c:if>
+ <c:forEach var="userPage" items="${pages}">
+ <c:if test="${userPage.entityId != page.entityId}">
+ <option value="${userPage.entityId}">
+ <fmt:message key="page.general.movethispage.after">
+ <fmt:param><c:out value="${userPage.name}"/></fmt:param>
+ </fmt:message>
+ </option>
+ </c:if>
+ </c:forEach>
+ </select>
+ </form>
+</div>
+<fmt:message key="widget.menu.movetopage" var="moveWidgetToPageTitle"/>
+<div id="moveWidgetDialog" title="${moveWidgetToPageTitle}" class="dialog">
+ <div><fmt:message key="widget.menu.movethiswidget"/></div>
+ <form id="moveWidgetForm">
+ <select id="moveToPageId">
+ <c:forEach var="userPage" items="${pages}">
+ <c:if test="${userPage.entityId != page.entityId}">
+ <option value="${userPage.entityId}">
+ <c:out value="${userPage.name}"/>
+ </option>
+ </c:if>
+ </c:forEach>
+ </select>
+ </form>
+</div>
+<script>
+ //Define the global widgets map. This map will be populated by RegionWidgetRender providers.
+ var widgetsByRegionIdMap = {};
+</script>
+<portal:render-script location="${'BEFORE_LIB'}" />
+<script src="//cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js"></script>
+<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>
+<script src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.8.13/jquery-ui.min.js"></script>
+<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.8.1/jquery.validate.min.js"></script>
+<portal:render-script location="${'AFTER_LIB'}" />
+<portal:render-script location="${'BEFORE_RAVE'}" />
+<script src="<spring:url value="/script/rave.js"/>"></script>
+<script src="<spring:url value="/script/rave_api.js"/>"></script>
+<script src="<spring:url value="/script/rave_opensocial.js"/>"></script>
+<script src="<spring:url value="/script/rave_wookie.js"/>"></script>
+<script src="<spring:url value="/script/rave_layout.js"/>"></script>
+<portal:render-script location="${'AFTER_RAVE'}" />
+<script>
+ $(function() {
+ rave.setContext("<spring:url value="/app/" />");
+ rave.initProviders();
+ rave.initWidgets(widgetsByRegionIdMap);
+ rave.initUI();
+ rave.layout.init();
+ });
+</script>
\ No newline at end of file
Added: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml?rev=1199564&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml (added)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml Wed Nov 9 00:25:45 2011
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
+ "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
+
+<tiles-definitions>
+
+ <!-- BASE DEFINITIONS FOR THE ENTIRE APPLICATION -->
+ <definition name="templates.base" template="/WEB-INF/jsp/templates/base_layout.jsp">
+ <put-attribute name="pageTitleKey" value="page.general.title"/>
+ <put-attribute name="pageTitleSuffixKey" value="page.general.titlesuffix"/>
+ <put-attribute name="header" value="/WEB-INF/jsp/common/header.jsp"/>
+ <put-attribute name="footer" value="/WEB-INF/jsp/common/footer.jsp"/>
+ </definition>
+
+ <!-- USER FACING PAGES -->
+ <definition name="templates.user.*" extends="templates.base">
+ <put-attribute name="pageTitleKey" value="page.{1}.title"/>
+ <put-attribute name="body" value="/WEB-INF/jsp/views/{1}.jsp"/>
+ </definition>
+
+ <!-- ADMIN ONLY PAGES -->
+
+</tiles-definitions>
\ No newline at end of file