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/08 04:21:14 UTC

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

Author: woonsan
Date: Fri Apr  8 02:21:14 2011
New Revision: 1090090

URL: http://svn.apache.org/viewvc?rev=1090090&view=rev
Log:
JS2-1247: Implementing close button. Upgraded wicket dependency to 1.4.17 to enable external pages to get modal-closing-script code.

Modified:
    portals/jetspeed-2/applications/j2-admin/trunk/pom.xml
    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/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp

Modified: portals/jetspeed-2/applications/j2-admin/trunk/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/pom.xml?rev=1090090&r1=1090089&r2=1090090&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/pom.xml (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/pom.xml Fri Apr  8 02:21:14 2011
@@ -57,7 +57,7 @@
     <velocity-tools.version>1.3</velocity-tools.version>
     <velocity.version>1.6.3</velocity.version>
     <xerces.version>2.8.1</xerces.version>
-    <wicket.version>1.4.5</wicket.version>
+    <wicket.version>1.4.17</wicket.version>
   </properties>
 
   <!-- Dependencies -->

Modified: 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=1090090&r1=1090089&r2=1090090&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java Fri Apr  8 02:21:14 2011
@@ -35,7 +35,6 @@ import javax.portlet.RenderResponse;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.jetspeed.CommonPortletServices;
-import org.apache.jetspeed.components.portletregistry.FailedToStorePortletDefinitionException;
 import org.apache.jetspeed.components.portletregistry.PortletRegistry;
 import org.apache.jetspeed.om.portlet.PortletDefinition;
 import org.apache.jetspeed.om.portlet.Preference;
@@ -67,10 +66,17 @@ public class PortletCloneManagerPortlet 
     {
         RequestContext rc = (RequestContext) request.getAttribute(RequestContext.REQUEST_PORTALENV);
         String portletUniqueName = rc.getRequestParameter("portlet");
+        
+        if (portletUniqueName == null)
+        {
+            portletUniqueName = (String) request.getPortletSession(true).getAttribute("originalPortletUniqueName");
+        }
+        
         PortletDefinition def = null;
         
         if (!StringUtils.isBlank(portletUniqueName))
         {
+            request.getPortletSession(true).setAttribute("originalPortletUniqueName", portletUniqueName);
             def = registry.getPortletDefinitionByUniqueName(portletUniqueName);
         }
         
@@ -106,37 +112,37 @@ public class PortletCloneManagerPortlet 
     @Override
     public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException
     {
-        String action = request.getParameter("action");
+        String status = "fail";
+        ClonePortletInfo clonePortletInfo = readClonePortletInfoFromRequest(request);
+        PortletDefinition def = registry.getPortletDefinitionByUniqueName(clonePortletInfo.getOriginalPortletUniqueName());
         
-        if ("clone".equals(action))
+        try
         {
-            ClonePortletInfo clonePortletInfo = readClonePortletInfoFromRequest(request);
-            PortletDefinition def = registry.getPortletDefinitionByUniqueName(clonePortletInfo.getOriginalPortletUniqueName());
-            
             if (def == null)
             {
-                log.error("Cannot find the portlet or clone: {}", clonePortletInfo.getOriginalPortletUniqueName());
+                throw new IllegalArgumentException("Cannot find the portlet or clone: " + clonePortletInfo.getOriginalPortletUniqueName());
             }
-            else
+            
+            if (StringUtils.isBlank(clonePortletInfo.getPortletName()))
             {
-                if (!StringUtils.isBlank(clonePortletInfo.getPortletName()))
-                {
-                    try
-                    {
-                        PortletDefinition clone = registry.clonePortletDefinition(def, StringUtils.trim(clonePortletInfo.getPortletName()));
-                        clone.getPortletInfo().setTitle(StringUtils.defaultString(clonePortletInfo.getPortletTitle()));
-                        clone.getPortletInfo().setShortTitle(StringUtils.defaultString(clonePortletInfo.getPortletShortTitle()));
-                        clone.getPortletInfo().setKeywords(StringUtils.defaultString(clonePortletInfo.getPortletKeywords()));
-                        // TODO displayName, preferences..
-                        registry.savePortletDefinition(clone);
-                    }
-                    catch (FailedToStorePortletDefinitionException e)
-                    {
-                        log.error("Failed to clone portlet from " + clonePortletInfo.getOriginalPortletUniqueName() + " to " + clonePortletInfo.getPortletName(), e);
-                    }
-                }
+                throw new IllegalArgumentException("Invalid clone name: " + clonePortletInfo.getPortletName());
             }
+
+            PortletDefinition clone = registry.clonePortletDefinition(def, StringUtils.trim(clonePortletInfo.getPortletName()));
+            clone.getPortletInfo().setTitle(StringUtils.defaultString(clonePortletInfo.getPortletTitle()));
+            clone.getPortletInfo().setShortTitle(StringUtils.defaultString(clonePortletInfo.getPortletShortTitle()));
+            clone.getPortletInfo().setKeywords(StringUtils.defaultString(clonePortletInfo.getPortletKeywords()));
+            // TODO displayName, preferences..
+            registry.savePortletDefinition(clone);
+            status = "success";
         }
+        catch (Exception e) 
+        {
+            request.getPortletSession(true).setAttribute("errorMessage", e.toString());
+            log.error("Failed to clone portlet from " + clonePortletInfo.getOriginalPortletUniqueName() + " to " + clonePortletInfo.getPortletName(), e);
+        }
+        
+        request.getPortletSession(true).setAttribute("status", status);
     }
     
     private ClonePortletInfo readClonePortletInfoFromRequest(ActionRequest request)

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java?rev=1090090&r1=1090089&r2=1090090&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/prm/ApplicationsListHome.java Fri Apr  8 02:21:14 2011
@@ -75,6 +75,9 @@ public class ApplicationsListHome extend
     static final Logger logger = LoggerFactory.getLogger(ApplicationsListHome.class);
 
     public static final String PORTLET_REGISTRY_MANAGER = "Portlet Registry Manager";
+    
+    private String clonePopupPagePath = "/system/prm/cloneportlet.psml";
+    private String currentModalWindowCloseScript;
 
     public ApplicationsListHome()
     {
@@ -280,8 +283,37 @@ public class ApplicationsListHome extend
         add(portletListView);
         add(new PagingNavigator("plNavigator", portletListView));
         
-        ModalWindow modalWindow = new ModalWindow("modalwindow");
+        CloneModalWindow modalWindow = new CloneModalWindow("modalwindow");
         add(modalWindow);
+        
+        Label modalWindowCloseScript = new Label("modalWindowCloseScript", new PropertyModel<String>(this, "currentModalWindowCloseScript"));
+        modalWindowCloseScript.setOutputMarkupId(true);
+        add(modalWindowCloseScript);
+    }
+    
+    public String getCurrentModalWindowCloseScript()
+    {
+        return currentModalWindowCloseScript;
+    }
+
+    public void setCurrentModalWindowCloseScript(String currentModalWindowCloseScript)
+    {
+        this.currentModalWindowCloseScript = currentModalWindowCloseScript;
+    }
+
+    class CloneModalWindow extends ModalWindow
+    {
+        private static final long serialVersionUID = 1L;
+        
+        public CloneModalWindow(String id)
+        {
+            super(id);
+        }
+        
+        public String getCloseJavacript()
+        {
+            return super.getCloseJavacript();
+        }
     }
 
     class RunningPanel extends Panel
@@ -617,9 +649,9 @@ public class ApplicationsListHome extend
                         PortletRegistry registry = locator.getPortletRegistry();
                         PortletDefinition def = registry.getPortletDefinitionByUniqueName(pdb.getUniqueName());
 
-                        ModalWindow modalWindow = (ModalWindow) getPage().get("modalwindow");
+                        CloneModalWindow modalWindow = (CloneModalWindow) getPage().get("modalwindow");
                         RequestContext rc = ((AbstractAdminWebApplication) getApplication()).getPortalRequestContext();
-                        final String pagePath = rc.getPortalURL().getBasePath() + "/system/prm/cloneportlet.psml?portlet=" + def.getUniqueName();
+                        final String pagePath = rc.getPortalURL().getBasePath() + clonePopupPagePath + "?portlet=" + def.getUniqueName();
                         modalWindow.setPageCreator(new ModalWindow.PageCreator() 
                         {
                             private static final long serialVersionUID = 1L;
@@ -629,6 +661,8 @@ public class ApplicationsListHome extend
                                 return new RedirectPage(pagePath);
                             }
                         });
+                        ((ApplicationsListHome) getPage()).setCurrentModalWindowCloseScript(modalWindow.getCloseJavacript());
+                        target.addComponent(getPage().get("modalWindowCloseScript"));
                         modalWindow.show(target);
                     }
                     catch (Exception e) 

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html?rev=1090090&r1=1090089&r2=1090090&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/resources/org/apache/jetspeed/portlets/prm/ApplicationsListHome.html Fri Apr  8 02:21:14 2011
@@ -95,6 +95,7 @@
 </table>
 
 <div wicket:id="modalwindow"></div>
+<div wicket:id="modalWindowCloseScript" class="modal-window-close-script" style="DISPLAY: none"></div>
 
 </body>
 </html>
\ No newline at end of file

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=1090090&r1=1090089&r2=1090090&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 Fri Apr  8 02:21:14 2011
@@ -23,10 +23,30 @@ 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.clone.resources.PortletCloneManagerResources" />
 
 <br/>
 
+<%
+String status = (String) renderRequest.getPortletSession(true).getAttribute("status");
+if (status != null) 
+{
+    renderRequest.getPortletSession(true).removeAttribute("status");
+}
+%>
+
+<% if (status != null) { %>
+    <% if ("fail".equals(status)) { %>
+        <div>Error: <%=renderRequest.getPortletSession(true).getAttribute("errorMessage")%></div>
+    <% } else { %>
+        <script type="text/javascript" language="javascript">
+            var el = parent.document.getElementsByClassName('modal-window-close-script')[0];
+            eval(el.textContent ? el.textContent : el.innerText);
+        </script>
+    <% } %>
+<% } %>
+
 <form method="POST" action="<portlet:actionURL/>">
   <table cellpadding="0" cellspacing="1" border="0" width="100%">
     <tbody>
@@ -105,7 +125,8 @@ limitations under the License.
       <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" />
+          <input type="button" value="<fmt:message key='portlet.clone.label.action.cancel'/>"
+                 onclick="var el = parent.document.getElementsByClassName('modal-window-close-script')[0]; eval(el.textContent ? el.textContent : el.innerText); return false;" />
           <input type="hidden" name="originalPortletUniqueName" value="<c:out value='${clonePortletInfo.originalPortletUniqueName}'/>" />
         </th>
       </tr>



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