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 wo...@apache.org on 2010/02/05 13:34:27 UTC

svn commit: r906919 - in /portals/jetspeed-2/applications/j2-admin/trunk/src/main: java/org/apache/jetspeed/portlets/spaces/ resources/org/apache/jetspeed/portlets/spaces/resources/ webapp/WEB-INF/ webapp/WEB-INF/view/spaces/

Author: woonsan
Date: Fri Feb  5 12:34:25 2010
New Revision: 906919

URL: http://svn.apache.org/viewvc?rev=906919&view=rev
Log:
JS2-1057: Adding template selection when adding a page.

Added:
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/NodeBean.java   (with props)
Modified:
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/spaces/resources/SpacesResources.properties
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp

Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/NodeBean.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/NodeBean.java?rev=906919&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/NodeBean.java (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/NodeBean.java Fri Feb  5 12:34:25 2010
@@ -0,0 +1,72 @@
+/*
+ * 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.portlets.spaces;
+
+import java.io.Serializable;
+
+import org.apache.jetspeed.page.document.Node;
+
+public class NodeBean implements Serializable 
+{
+	private static final long serialVersionUID = 1L;
+
+	private String name;
+	private String path;
+	private String title;
+	
+	public NodeBean()
+	{
+	}
+
+	public NodeBean(Node node)
+	{
+		setName(node.getName());
+    	setPath(node.getPath());
+    	setTitle(node.getTitle());
+	}
+	
+	public String getName() 
+	{
+		return name;
+	}
+	
+	public void setName(String name) 
+	{
+		this.name = name;
+	}
+	
+	public String getPath() 
+	{
+		return path;
+	}
+	
+	public void setPath(String path) 
+	{
+		this.path = path;
+	}
+	
+	public String getTitle() 
+	{
+		return title;
+	}
+	
+	public void setTitle(String title) 
+	{
+		this.title = title;
+	}
+	
+}

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/NodeBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/NodeBean.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/NodeBean.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java?rev=906919&r1=906918&r2=906919&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java Fri Feb  5 12:34:25 2010
@@ -66,7 +66,7 @@
     public static final String DEFAULT_LINKS_MENU = "links";
     public static final String DEFAULT_SPACE_NAVS_MENU = "space-navigations";
     public static final String DEFAULT_SPACE_LINKS_MENU = "space-links";
-    public static final String DEFAULT_NEW_TEMPLATE_PAGE_PATH = "/_template/new-user/min.psml";
+    public static final String DEFAULT_TEMPLATE_PAGE = "/_template/new-user/min.psml";
     
     private static Logger log = LoggerFactory.getLogger(PageNavigator.class);
     
@@ -76,7 +76,6 @@
     private BasePortalURL baseUrlAccess = null;
     private String defaultMenu = DEFAULT_SPACE_NAVS_MENU;
     private String defaultLinksMenu = DEFAULT_SPACE_LINKS_MENU;
-    private String newTemplatePagePath = DEFAULT_NEW_TEMPLATE_PAGE_PATH;
     
     protected String yuiScriptPath = "/javascript/yui/build/yui/yui-min.js";
 
@@ -108,19 +107,15 @@
         
         String param = config.getInitParameter("yuiScriptPath");
         
-        if (param != null) {
+        if (param != null) 
+        {
             yuiScriptPath = param;
         }
-        
-        param = config.getInitParameter("newTemplatePagePath");
-        
-        if (param != null) {
-            newTemplatePagePath = param;
-        }
     }
     
     @Override
-    protected void doHeaders(RenderRequest request, RenderResponse response) {
+    protected void doHeaders(RenderRequest request, RenderResponse response) 
+    {
         super.doHeaders(request, response);
         RequestContext rc = (RequestContext) request.getAttribute(RequestContext.REQUEST_PORTALENV);
         Element headElem = response.createElement("script");
@@ -149,14 +144,25 @@
         request.setAttribute(SpaceNavigator.ATTRIBUTE_SPACES, scc.getSpaces());        
         request.setAttribute(SpacesManager.MSG_TOPIC_PAGE_NAV, this);        
         request.setAttribute("spaceMenuElements", getSpaceMenuElements(scc.getSpace(), request));
-        request.setAttribute("spaceLinkElements", getSpaceLinkMenuElements(scc.getSpace(), request));        
+        request.setAttribute("spaceLinkElements", getSpaceLinkMenuElements(scc.getSpace(), request));
+        request.setAttribute("templatePages", getTemplatePageNodes(request));
         super.doView(request, response);
     }
     
-    public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException,
-    IOException
+    public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException, IOException
     {
         String addPage = actionRequest.getParameter("addPage");
+        String templatePage = StringUtils.defaultString(actionRequest.getParameter("templatePage"), null);
+        
+        if (StringUtils.isBlank(templatePage))
+        {
+            templatePage = actionRequest.getPreferences().getValue("defaultTemplatePage", null);
+            
+            if (StringUtils.isBlank(templatePage))
+            {
+                throw new PortletException("Invalid template page: " + templatePage);
+            }
+        }
         
         if (addPage != null)
         {
@@ -167,16 +173,16 @@
                 String spacePath = space.getPath();
                 try
                 {
-                    String pageName = addPage.replace(' ', '_');                
-                    String path = spacePath + "/" + pageName + ".psml";                    
-                    Page source = pageManager.getPage(newTemplatePagePath);                
+                    String pageName = addPage.replace(' ', '_');
+                    String path = spacePath + "/" + pageName + ".psml";
+                    Page source = pageManager.getPage(templatePage);
                     Page newPage = pageManager.copyPage(source, path);
                     newPage.setTitle(addPage);
-                    pageManager.updatePage(newPage);                    
+                    pageManager.updatePage(newPage);
                     actionRequest.getPortletSession().removeAttribute("pages");
                     actionRequest.getPortletSession().removeAttribute("links");
                     String redirect = admin.getPortalURL(actionRequest, actionResponse, path);
-                    actionResponse.sendRedirect(redirect);                                        
+                    actionResponse.sendRedirect(redirect);
                 }
                 catch (Exception e)
                 {
@@ -354,4 +360,35 @@
         
         return spaceLinkMenuElements;
     }
+    
+    private List<NodeBean> getTemplatePageNodes(PortletRequest request)
+    {
+        List<NodeBean> pageNodes = new ArrayList<NodeBean>();
+        
+        String templatePages = request.getPreferences().getValue("templatePages", null);
+        
+        if (!StringUtils.isBlank(templatePages))
+        {
+            String [] templatePagePaths = StringUtils.split(templatePages, ", \t\r\n");
+            
+            for (String templatePagePath : templatePagePaths)
+            {
+                try
+                {
+                    Page templatePage = pageManager.getPage(templatePagePath);
+                    pageNodes.add(new NodeBean(templatePage));
+                }
+                catch (SecurityException e)
+                {
+                    // ignore security exception when retrieving template pages.
+                }
+                catch (Exception e)
+                {
+                    log.warn("Invalid template page path: " + templatePagePath + ". {}", e.toString());
+                }
+            }
+        }
+        
+        return pageNodes;
+    }
 }
\ No newline at end of file

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java?rev=906919&r1=906918&r2=906919&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java Fri Feb  5 12:34:25 2010
@@ -16,32 +16,34 @@
  */
 package org.apache.jetspeed.portlets.spaces;
 
-import java.io.Serializable;
-
 import org.apache.jetspeed.spaces.Space;
 
-public class SpaceBean implements Serializable 
+public class SpaceBean extends NodeBean
 {
+    
 	private static final long serialVersionUID = 1L;
 
-	private String name;
-	private String path;
 	private String owner;
-	private String title;
 	private String description;
 	private String theme;
 	private String constraint;
 	private boolean persisted = false;
 	
+    public SpaceBean()
+    {
+        super();
+    }
+    
 	public SpaceBean(String name, String owner)
 	{
-		this.name = name;
+	    super();
+	    setName(name);
 		this.owner = owner;
-		this.path = "";
 	}
-
+	
 	public SpaceBean(Space s)
 	{
+        super();
 		setName(s.getName());
     	setPath(s.getPath());
     	setOwner(s.getOwner());
@@ -57,46 +59,44 @@
 		return persisted;
 	}
 	
-	public String getName() {
-		return name;
-	}
-	public void setName(String name) {
-		this.name = name;
-	}
-	public String getPath() {
-		return path;
-	}
-	public void setPath(String path) {
-		this.path = path;
-	}
-	public String getOwner() {
+	public String getOwner() 
+	{
 		return owner;
 	}
-	public void setOwner(String owner) {
+	
+	public void setOwner(String owner) 
+	{
 		this.owner = owner;
 	}
-	public String getTitle() {
-		return title;
-	}
-	public void setTitle(String title) {
-		this.title = title;
-	}
-	public String getDescription() {
+	
+	public String getDescription() 
+	{
 		return description;
 	}
-	public void setDescription(String description) {
+	
+	public void setDescription(String description) 
+	{
 		this.description = description;
 	}
-	public String getTheme() {
+	
+	public String getTheme() 
+	{
 		return theme;
 	}
-	public void setTheme(String theme) {
+	
+	public void setTheme(String theme) 
+	{
 		this.theme = theme;
 	}
-	public String getSecurityConstraint() {
+	
+	public String getSecurityConstraint() 
+	{
 		return constraint;
 	}
-	public void setSecurityConstraint(String constraint) {
+	
+	public void setSecurityConstraint(String constraint) 
+	{
 		this.constraint = constraint;
-	}	
+	}
+	
 }

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/spaces/resources/SpacesResources.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/spaces/resources/SpacesResources.properties?rev=906919&r1=906918&r2=906919&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/spaces/resources/SpacesResources.properties (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/spaces/resources/SpacesResources.properties Fri Feb  5 12:34:25 2010
@@ -31,3 +31,5 @@
 spaces.label.update = Update Space
 
 spaces.pages.label.add = Add Page
+spaces.pages.label.space.title = {0} Space
+spaces.pages.label.template = Template

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml?rev=906919&r1=906918&r2=906919&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml Fri Feb  5 12:34:25 2010
@@ -2279,6 +2279,21 @@
       <short-title>PageNavigator</short-title>
       <keywords>admin,spaces,space,navigator,pages,nav</keywords>                        
     </portlet-info>
+    <portlet-preferences>
+      <preference>
+        <name>defaultTemplatePage</name>
+        <value>
+          /_template/new-user/min.psml
+        </value>
+      </preference>
+      <preference>
+        <name>templatePages</name>
+        <value>
+          /_template/new-user/min.psml
+          /_template/new-user/default-page.psml
+        </value>
+      </preference>
+    </portlet-preferences>
   </portlet>
 
    <portlet id="SpacesList">

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp?rev=906919&r1=906918&r2=906919&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp Fri Feb  5 12:34:25 2010
@@ -115,9 +115,10 @@
 List<MenuElement> linkElements = (List<MenuElement>) renderRequest.getAttribute("spaceLinkElements");
 %>
 
+<form id='jsPages' method="POST" action='<portlet:actionURL/>'>
 <table>
     <tr>
-        <td class="portlet-section-body"><b><%=space.getTitle() %> Space</b></td>
+        <td class="portlet-section-body"><b><fmt:message key="spaces.pages.label.space.title"><fmt:param value="${space.title}"/></fmt:message></b></td>
     </tr>
     <tr>
         <td class="portlet-section-body">
@@ -163,15 +164,24 @@
 %>
     <tr>
       <td class="portlet-section-subheader">
-        <form id='jsPages' method="POST" action='<portlet:actionURL/>'>
           <input type="text" name="addPage" size="15" value="" ><input type="submit" value="<fmt:message key='spaces.pages.label.add'/>" />
-        </form>
+      </td>
+    </tr>
+    <tr>
+      <td class="portlet-section-subheader">
+          <fmt:message key="spaces.pages.label.template"/>:
+          <select name="templatePage">
+            <c:forEach items="${templatePages}" var="templatePage">
+              <option value="${templatePage.path}">${templatePage.title}</option>
+            </c:forEach>
+          </select>
       </td>
     </tr>
 <%
 }
 %>
 </table>
+</form>
 
 <script language="javascript">
 YUI().use('jetui-portal', 'io', 'json', 'node', 'cookie', 'overlay', 'anim', 'plugin', function(Y) {



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org