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 we...@apache.org on 2005/08/19 16:26:15 UTC

svn commit: r233489 - in /portals/jetspeed-2/trunk: layout-portlets/src/java/org/apache/jetspeed/portlets/layout/ layout-portlets/src/test/org/apache/jetspeed/portlets/layout/ src/webapp/WEB-INF/templates/layout/html/columns/

Author: weaver
Date: Fri Aug 19 07:26:07 2005
New Revision: 233489

URL: http://svn.apache.org/viewcvs?rev=233489&view=rev
Log:
See JS2-340: http://issues.apache.org/jira/browse/JS2-340

Modified:
    portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
    portals/jetspeed-2/trunk/layout-portlets/src/test/org/apache/jetspeed/portlets/layout/TestColumnLayout.java
    portals/jetspeed-2/trunk/src/webapp/WEB-INF/templates/layout/html/columns/layout.vm

Modified: portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java?rev=233489&r1=233488&r2=233489&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java Fri Aug 19 07:26:07 2005
@@ -22,6 +22,8 @@
 import java.util.StringTokenizer;
 import java.util.Vector;
 
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
 import javax.portlet.PortletConfig;
 import javax.portlet.PortletException;
 import javax.portlet.RenderRequest;
@@ -33,6 +35,8 @@
 import org.apache.jetspeed.om.page.Fragment;
 import org.apache.jetspeed.om.page.Page;
 import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.page.PageNotFoundException;
+import org.apache.jetspeed.page.document.NodeException;
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.pluto.om.window.PortletWindow;
 
@@ -90,52 +94,7 @@
             throw new PortletException("Failed to build ColumnLayout "+e1.getMessage(), e1);
         }
 
-        if (request.getParameter("move") != null && request.getParameter("fragmentId") != null)
-        {            
-            Fragment fragmentToMove = page.getFragmentById(request.getParameter("fragmentId"));
-           
-            int moveCode = Integer.parseInt(request.getParameter("move"));           
-
-            try
-            {                
-                switch (moveCode)
-                {
-                case LayoutEvent.MOVED_UP:
-                    layout.moveUp(fragmentToMove);
-                    break;
-                case LayoutEvent.MOVED_DOWN:
-                    layout.moveDown(fragmentToMove);
-                    break;
-                case LayoutEvent.MOVED_RIGHT:
-                    layout.moveRight(fragmentToMove);
-                    break;
-                case LayoutEvent.MOVED_LEFT:
-                    layout.moveLeft(fragmentToMove);
-                    break;
-                default:
-                    throw new PortletException("Invalid movement code " + moveCode);
-                }
-               
-            }
-            catch (SecurityException se)
-            {
-                // ignore page security constraint violations, only
-                // permitted users can edit managed pages; page
-                // update will remain transient
-                log.info("Unable to update page " + page.getId() + " layout due to security permission/constraint.", se);
-            }
-            catch (Exception e)
-            {
-                if (e instanceof PortletException)
-                {
-                    throw (PortletException)e;
-                }
-                else
-                {
-                    throw new PortletException("Unable to process layout for page " + page.getId() + " layout: " + e.toString(), e);
-                }
-            }
-        }
+       
 
         // if (targetState != null && targetState.isMaximized())
         if (window != null)
@@ -204,5 +163,82 @@
         }
 
         return list;
+    }
+
+    public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException
+    {
+        if (request.getParameter("move") != null 
+                && request.getParameter("fragmentToMove") != null
+                && request.getParameter("editingPage") != null)
+        {        
+            Page page;
+            try
+            {
+                page = pm.getPage(request.getParameter("editingPage"));
+            }
+            catch (Exception e)
+            {
+                throw new PortletException("Unable to access page for editing: "+e.getMessage());
+            }
+          
+            Fragment rootFragment = page.getRootFragment();
+            Fragment fragmentToMove = page.getFragmentById(request.getParameter("fragmentToMove"));           
+            int moveCode = Integer.parseInt(request.getParameter("move"));
+            
+            ColumnLayout layout;
+            try
+            {
+                layout = new ColumnLayout(numColumns, layoutType, rootFragment.getFragments(), this.colSizes.split("\\,") );
+                layout.addLayoutEventListener(new PageManagerLayoutEventListener(pm, page, layoutType));
+            }
+            catch (LayoutEventException e1)
+            {
+                throw new PortletException("Failed to build ColumnLayout "+e1.getMessage(), e1);
+            }
+
+            try
+            {                
+                switch (moveCode)
+                {
+                case LayoutEvent.MOVED_UP:
+                    layout.moveUp(fragmentToMove);
+                    break;
+                case LayoutEvent.MOVED_DOWN:
+                    layout.moveDown(fragmentToMove);
+                    break;
+                case LayoutEvent.MOVED_RIGHT:
+                    layout.moveRight(fragmentToMove);
+                    break;
+                case LayoutEvent.MOVED_LEFT:
+                    layout.moveLeft(fragmentToMove);
+                    break;
+                default:
+                    throw new PortletException("Invalid movement code " + moveCode);
+                }
+               
+            }
+            catch (SecurityException se)
+            {
+                // ignore page security constraint violations, only
+                // permitted users can edit managed pages; page
+                // update will remain transient
+                log.info("Unable to update page " + page.getId() + " layout due to security permission/constraint.", se);
+            }
+            catch (Exception e)
+            {
+                if (e instanceof PortletException)
+                {
+                    throw (PortletException)e;
+                }
+                else
+                {
+                    throw new PortletException("Unable to process layout for page " + page.getId() + " layout: " + e.toString(), e);
+                }
+            }
+        }
+        else
+        {        
+            super.processAction(request, response);
+        }
     }
 }

Modified: portals/jetspeed-2/trunk/layout-portlets/src/test/org/apache/jetspeed/portlets/layout/TestColumnLayout.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/test/org/apache/jetspeed/portlets/layout/TestColumnLayout.java?rev=233489&r1=233488&r2=233489&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/test/org/apache/jetspeed/portlets/layout/TestColumnLayout.java (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/test/org/apache/jetspeed/portlets/layout/TestColumnLayout.java Fri Aug 19 07:26:07 2005
@@ -39,13 +39,15 @@
     private FragmentImpl f5;
 
     private FragmentImpl f6;
+    
+    private FragmentImpl f8;
 
     public void testBasics() throws Exception
     {
         assertEquals(f1, layout.getFirstColumn().iterator().next());
         
         // The last column is currently empty
-        assertTrue(layout.getLastColumn().isEmpty());
+      //  assertTrue(layout.getLastColumn().isEmpty());
 
         assertEquals(3, layout.getNumberOfColumns());
         Iterator column0 = layout.getColumn(0).iterator();
@@ -441,6 +443,11 @@
         f6.setId("f6");
         f6.setPropertyValue("test", "row", "2");
         f6.setPropertyValue("test", "column", "1");
+        
+        f8 = new FragmentImpl();
+        f8.setId("f8");
+        f8.setPropertyValue("test", "row", "1");
+        f8.setPropertyValue("test", "column", "2");
 
         layout = new ColumnLayout(3, "test", widthes );
         layout.addFragment(f1);
@@ -449,6 +456,7 @@
         layout.addFragment(f4);
         layout.addFragment(f5);
         layout.addFragment(f6);
+        layout.addFragment(f8);
     }
 
     protected LayoutEvent createEvent(Fragment fragment, ColumnLayout layout, int eventType) throws Exception

Modified: portals/jetspeed-2/trunk/src/webapp/WEB-INF/templates/layout/html/columns/layout.vm
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/WEB-INF/templates/layout/html/columns/layout.vm?rev=233489&r1=233488&r2=233489&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/templates/layout/html/columns/layout.vm (original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/templates/layout/html/columns/layout.vm Fri Aug 19 07:26:07 2005
@@ -56,14 +56,15 @@
 	#foreach($column in $columnLayout.columns)
 	  #set($columnWidth = "auto")
 	  
-	  #if ($columnLayout.getSafeColumnWidth($sizeIndex, 1) > 0)
-	    #set($columnWidth = $columnLayout.getSafeColumnWidth($sizeIndex, 4))
+	  #if ($columnLayout.getColumnWidth($sizeIndex) > 0)
+	    #set($columnWidth = $columnLayout.getColumnWidth($sizeIndex))
 	  #end
 
 	  #set ($sizeIndex = $sizeIndex + 1)  
 	  <div class="portal-layout-column" style="width:${columnWidth}%;">
 		 
 	     #foreach($f in $column)
+  	     
            ## Set up coordinates for this fragment
            #set($coords = $columnLayout.getCoordinate($f))	  
            #set($col = $coords.x)
@@ -74,20 +75,23 @@
 		   <div class="portal-layout-cell" >
 		   ## editing block
 		   #if($editing)
+		   <div class="portlet-edit-bar">
 			 ## Move portlet left
 			 #if($lastColumn > 0 && $col > 0)            
-               #set($leftUrl = $renderResponse.createRenderURL())    
+               #set($leftUrl = $renderResponse.createActionURL())    
                $!leftUrl.setParameter("move","3")
-               $!leftUrl.setParameter("fragmentId","$f.id")    
+               $!leftUrl.setParameter("fragmentToMove","$f.id")
+			   $!leftUrl.setParameter("editingPage","$myPage.id")  
                #set ($imgsrc="$layoutImageBase/movePortletLeft.gif")
                <a href="$leftUrl" class="move-portlet-left"><img src="$jetspeed.getAbsoluteUrl($imgsrc)" border="0" title="Move Portlet Left"/></a>
 			 #end
 			 
 			 ## Move portlet up	
 			 #if($row > 0)			   
-               #set($upUrl = $renderResponse.createRenderURL())    
+               #set($upUrl = $renderResponse.createActionURL())    
                  $!upUrl.setParameter("move","1")
-                 $!upUrl.setParameter("fragmentId","$f.id")
+                 $!upUrl.setParameter("fragmentToMove","$f.id")
+				 $!upUrl.setParameter("editingPage","$myPage.id") 
                  #set ($imgsrc="$layoutImageBase/movePortletUp.gif")
                  <a href="$upUrl" class="move-portlet-up"><img src="$jetspeed.getAbsoluteUrl($imgsrc)" border="0" title="Move Portlet Up"/></a>
 			 #end
@@ -101,21 +105,24 @@
 			 
 			 ## Move portlet down
              #if($row < $lastRow)						
-               #set($downUrl = $renderResponse.createRenderURL())	
+               #set($downUrl = $renderResponse.createActionURL())	
                $!downUrl.setParameter("move","2")
-               $!downUrl.setParameter("fragmentId","$f.id")
+               $!downUrl.setParameter("fragmentToMove","$f.id")
+			   $!downUrl.setParameter("editingPage","$myPage.id") 
                #set ($imgsrc="$layoutImageBase/movePortletDown.gif")
                <a href="$downUrl" class="move-portlet-down"><img src="$jetspeed.getAbsoluteUrl($imgsrc)" border="0" title="Move Portlet Down"/></a>
 			 #end
 			 
 			 ## Move portlet right
              #if($lastColumn > 0 && $col < $lastColumn)
-               #set($rightUrl = $renderResponse.createRenderURL())    
+               #set($rightUrl = $renderResponse.createActionURL())    
                $!rightUrl.setParameter("move","4")
-               $!rightUrl.setParameter("fragmentId","$f.id")
+               $!rightUrl.setParameter("fragmentToMove","$f.id")
+			   $!rightUrl.setParameter("editingPage","$myPage.id") 
                #set ($imgsrc="$layoutImageBase/movePortletRight.gif")
                <a href="$rightUrl" class="move-portlet-right"><img src="$jetspeed.getAbsoluteUrl($imgsrc)" border="0" title="Move Portlet Right"/></a>
-             #end
+			 #end
+		   </div>
 		   #end
 		   
 		   #if($f.type == "portlet")



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