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 2011/04/07 04:36:58 UTC

svn commit: r1089711 - in /portals/jetspeed-2/applications/j2-admin/trunk/src/main: java/org/apache/jetspeed/portlets/clone/ resources/org/apache/jetspeed/portlets/clone/ resources/org/apache/jetspeed/portlets/clone/resources/ webapp/WEB-INF/ webapp/WE...

Author: woonsan
Date: Thu Apr  7 02:36:57 2011
New Revision: 1089711

URL: http://svn.apache.org/viewvc?rev=1089711&view=rev
Log:
JS2-1247: Implementing portlet clone popup window UI

Added:
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/clone/
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/clone/resources/
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/clone/resources/PortletCloneManagerResources.properties
Modified:
    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/prm/portlet-clone-manager-view.jsp

Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java?rev=1089711&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java Thu Apr  7 02:36:57 2011
@@ -0,0 +1,93 @@
+/*
+ * 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.clone;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+public class ClonePortletInfo implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+    
+    private String portletName;
+    private String portletDisplayName;
+    private String portletTitle;
+    private String portletShortTitle;
+    private String portletKeywords;
+    private Map<String, List<String>> portletPreferences;
+    
+    public String getPortletName()
+    {
+        return portletName;
+    }
+    
+    public void setPortletName(String portletName)
+    {
+        this.portletName = portletName;
+    }
+    
+    public String getPortletDisplayName()
+    {
+        return portletDisplayName;
+    }
+    
+    public void setPortletDisplayName(String portletDisplayName)
+    {
+        this.portletDisplayName = portletDisplayName;
+    }
+    
+    public String getPortletTitle()
+    {
+        return portletTitle;
+    }
+    
+    public void setPortletTitle(String portletTitle)
+    {
+        this.portletTitle = portletTitle;
+    }
+    
+    public String getPortletShortTitle()
+    {
+        return portletShortTitle;
+    }
+    
+    public void setPortletShortTitle(String portletShortTitle)
+    {
+        this.portletShortTitle = portletShortTitle;
+    }
+    
+    public String getPortletKeywords()
+    {
+        return portletKeywords;
+    }
+    
+    public void setPortletKeywords(String portletKeywords)
+    {
+        this.portletKeywords = portletKeywords;
+    }
+    
+    public Map<String, List<String>> getPortletPreferences()
+    {
+        return portletPreferences;
+    }
+    
+    public void setPortletPreferences(Map<String, List<String>> portletPreferences)
+    {
+        this.portletPreferences = portletPreferences;
+    }
+}

Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java?rev=1089711&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java Thu Apr  7 02:36:57 2011
@@ -0,0 +1,153 @@
+/*
+ * 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.clone;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.components.portletregistry.PortletRegistry;
+import org.apache.jetspeed.om.portlet.PortletDefinition;
+import org.apache.jetspeed.om.portlet.Preference;
+import org.apache.jetspeed.request.RequestContext;
+import org.apache.portals.bridges.common.GenericServletPortlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Portlet Clone Manager Portlet
+ * 
+ * @version $Id$
+ */
+public class PortletCloneManagerPortlet extends GenericServletPortlet
+{
+    private static Logger log = LoggerFactory.getLogger(PortletCloneManagerPortlet.class);
+    
+    private PortletRegistry registry;
+    
+    @Override
+    public void init(PortletConfig config) throws PortletException
+    {
+        super.init(config);
+        registry = (PortletRegistry) config.getPortletContext().getAttribute(CommonPortletServices.CPS_REGISTRY_COMPONENT);
+    }
+    
+    @Override
+    public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException
+    {
+        RequestContext rc = (RequestContext) request.getAttribute(RequestContext.REQUEST_PORTALENV);
+        String portletUniqueId = rc.getRequestParameter("portlet");
+        PortletDefinition def = null;
+        
+        if (!StringUtils.isBlank(portletUniqueId))
+        {
+            def = registry.getPortletDefinitionByUniqueName(portletUniqueId);
+        }
+        
+        if (def == null)
+        {
+            log.error("Cannot find the portlet or clone: {}", portletUniqueId);
+        }
+        else
+        {
+            ClonePortletInfo clonePortletInfo = new ClonePortletInfo();
+            clonePortletInfo.setPortletName(def.getPortletName());
+            clonePortletInfo.setPortletDisplayName(def.getDisplayNameText(Locale.getDefault()));
+            clonePortletInfo.setPortletTitle(def.getPortletInfo().getTitle());
+            clonePortletInfo.setPortletShortTitle(def.getPortletInfo().getShortTitle());
+            clonePortletInfo.setPortletKeywords(def.getPortletInfo().getKeywords());
+            Map<String, List<String>> prefsMap = new HashMap<String, List<String>>();
+            
+            for (Preference pref : def.getPortletPreferences().getPortletPreferences())
+            {
+                String prefName = pref.getName();
+                List<String> prefValues = new ArrayList<String>(pref.getValues());
+                prefsMap.put(prefName, prefValues);
+            }
+            
+            clonePortletInfo.setPortletPreferences(prefsMap);
+            request.setAttribute("clonePortletInfo", clonePortletInfo);
+        }
+        
+        super.doView(request, response);
+    }
+    
+    @Override
+    public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException
+    {
+        String action = request.getParameter("action");
+        
+        if ("clone".equals(action))
+        {
+            ClonePortletInfo clonePortletInfo = readClonePortletInfoFromRequest(request);
+        }
+    }
+    
+    private ClonePortletInfo readClonePortletInfoFromRequest(ActionRequest request)
+    {
+        ClonePortletInfo clonePortletInfo = new ClonePortletInfo();
+        clonePortletInfo.setPortletName(request.getParameter("portlet_name"));
+        clonePortletInfo.setPortletDisplayName(request.getParameter("portlet_displayName"));
+        clonePortletInfo.setPortletTitle(request.getParameter("portlet_title"));
+        clonePortletInfo.setPortletShortTitle(request.getParameter("portlet_shortTitle"));
+        clonePortletInfo.setPortletKeywords(request.getParameter("portlet_keywords"));
+        
+        Map<String, List<String>> prefsMap = new HashMap<String, List<String>>();
+        
+        for (Enumeration<String> paramNames = request.getParameterNames(); paramNames.hasMoreElements(); )
+        {
+            String paramName = paramNames.nextElement();
+            
+            if (paramName.startsWith("prefs_"))
+            {
+                String prefName = paramName.substring("prefs_".length());
+                String [] prefValues = request.getParameterValues(paramName);
+                List<String> prefValueList = null;
+                if (prefValues == null)
+                {
+                    prefValueList = Collections.emptyList();
+                }
+                else
+                {
+                    prefValueList = Arrays.asList(prefValues);
+                }
+                prefsMap.put(prefName, prefValueList);
+            }
+        }
+        
+        clonePortletInfo.setPortletPreferences(prefsMap);
+        
+        return clonePortletInfo;
+    }
+    
+}
+

Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/clone/resources/PortletCloneManagerResources.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/clone/resources/PortletCloneManagerResources.properties?rev=1089711&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/clone/resources/PortletCloneManagerResources.properties (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/clone/resources/PortletCloneManagerResources.properties Thu Apr  7 02:36:57 2011
@@ -0,0 +1,27 @@
+# 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.
+#
+# $Id: PortletCloneManagerResources.properties 1089286 2011-04-06 00:38:56Z woonsan $
+#
+
+portlet.clone.label.portlet_info=Portlet Information
+portlet.clone.label.name=Name
+portlet.clone.label.display_name=Display Name
+portlet.clone.label.preferences=Preferences
+portlet.clone.label.title=Title
+portlet.clone.label.short_title=Short Title
+portlet.clone.label.keywords=Keywords
+portlet.clone.label.action.clone = Clone
+portlet.clone.label.action.cancel = Cancel

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=1089711&r1=1089710&r2=1089711&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 Thu Apr  7 02:36:57 2011
@@ -2705,7 +2705,7 @@
     <description>Create Portlet Clone</description>
     <portlet-name>PortletCloneManager</portlet-name>
     <display-name>Portlet Clone Manager</display-name>
-    <portlet-class>org.apache.portals.bridges.common.GenericServletPortlet</portlet-class>
+    <portlet-class>org.apache.jetspeed.portlets.clone.PortletCloneManagerPortlet</portlet-class>
     <init-param>
       <name>ViewPage</name>
       <value>/WEB-INF/view/prm/portlet-clone-manager-view.jsp</value>
@@ -2717,7 +2717,7 @@
     </supports>
     <supported-locale>en</supported-locale>
     <supported-locale>ja</supported-locale>
-    <resource-bundle>org.apache.jetspeed.portlets.prm.resources.PRMResources</resource-bundle>
+    <resource-bundle>org.apache.jetspeed.portlets.clone.resources.PortletCloneManagerResources</resource-bundle>
     <portlet-info>
       <title>Create Portlet Clone</title>
       <short-title>Portlet Clone Manager</short-title>

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp?rev=1089711&r1=1089710&r2=1089711&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp Thu Apr  7 02:36:57 2011
@@ -23,8 +23,93 @@ limitations under the License.
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
 <portlet:defineObjects/>
-<fmt:setBundle basename="org.apache.jetspeed.portlets.prm.resources.PRMResources" />
+<fmt:setBundle basename="org.apache.jetspeed.portlets.clone.resources.PortletCloneManagerResources" />
 
-<h2>Portlet Clone Manager</h2>
-<hr/>
-TODO
\ No newline at end of file
+<br/>
+
+<form method="POST" action="<portlet:actionURL/>">
+  <table cellpadding="0" cellspacing="1" border="0" width="100%">
+    <tbody>
+      <tr>
+        <td class="portlet-section-header" colspan="2">
+          <fmt:message key="portlet.clone.label.portlet_info"/>
+        </td>
+      </tr>
+      <tr>
+        <td class="portlet-section-alternate" width="20%" nowrap="true">
+          <fmt:message key="portlet.clone.label.name"/>
+        </td>
+        <td class="portlet-section-body">
+          <input type="text" name="portlet_name" size="40" value="<c:out value='${clonePortletInfo.portletName}'/>"/>
+        </td>
+      </tr>
+      <tr>
+        <td class="portlet-section-alternate" width="20%" nowrap="true">
+          <fmt:message key="portlet.clone.label.display_name"/>
+        </td>
+        <td class="portlet-section-body">
+          <input type="text" name="portlet_displayName" size="40" value="<c:out value='${clonePortletInfo.portletDisplayName}'/>"/>
+        </td>
+      </tr>
+      <tr>
+        <td class="portlet-section-alternate" width="20%" nowrap="true">
+          <fmt:message key="portlet.clone.label.title"/>
+        </td>
+        <td class="portlet-section-body">
+          <input type="text" name="portlet_title" size="40" value="<c:out value='${clonePortletInfo.portletTitle}'/>"/>
+        </td>
+      </tr>
+      <tr>
+        <td class="portlet-section-alternate" width="20%" nowrap="true">
+          <fmt:message key="portlet.clone.label.short_title"/>
+        </td>
+        <td class="portlet-section-body">
+          <input type="text" name="portlet_shortTitle" size="40" value="<c:out value='${clonePortletInfo.portletShortTitle}'/>"/>
+        </td>
+      </tr>
+      <tr>
+        <td class="portlet-section-alternate" width="20%" nowrap="true">
+          <fmt:message key="portlet.clone.label.keywords"/>
+        </td>
+        <td class="portlet-section-body">
+          <input type="text" name="portlet_keywords" size="40" value="<c:out value='${clonePortletInfo.portletKeywords}'/>"/>
+        </td>
+      </tr>
+    </tbody>
+  </table>
+  <c:if test="${not empty clonePortletInfo.portletPreferences}">
+    <table cellpadding="0" cellspacing="1" border="0" width="100%">
+      <tbody>
+        <tr>
+          <td class="portlet-section-header" colspan="2">
+            <fmt:message key="portlet.clone.label.preferences"/>
+          </td>
+        </tr>
+        <c:forEach var="item" items="${clonePortletInfo.portletPreferences}">
+          <tr>
+            <td class="portlet-section-alternate" width="20%" nowrap="true">
+              <c:out value='${item.key}'/>
+            </td>
+            <td class="portlet-section-body">
+              <c:forEach var="valItem" items="${item.value}">
+                <input type="text" name="prefs_<c:out value='${item.key}'/>" size="40" value="<c:out value='${valItem}'/>"/>
+              </c:forEach>
+            </td>
+          </tr>
+        </c:forEach>
+      </tbody>
+    </table>
+  </c:if>
+  <table cellpadding="0" cellspacing="1" border="0" width="100%">
+    <tbody>
+      <tr>
+        <th class="portlet-section-alternate" colspan="2">
+          <input type="submit" value="<fmt:message key='portlet.clone.label.action.clone'/>" />
+          <input type="hidden" name="action" value="clone" />
+        </th>
+      </tr>
+    </tbody>
+  </table>
+</form>
+
+<br/>



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