[jboss-svn-commits] JBoss Portal SVN: r5373 - in trunk: core/src/main/org/jboss/portal/core/controller/ajax core/src/main/org/jboss/portal/core/controller/command theme/src/main/org/jboss/portal/theme/impl/render/dynamic

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 9 13:20:02 EDT 2006


Author: julien at jboss.com
Date: 2006-10-09 13:19:55 -0400 (Mon, 09 Oct 2006)
New Revision: 5373

Modified:
   trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxController.java
   trunk/core/src/main/org/jboss/portal/core/controller/command/MoveWindowCommand.java
   trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java
Log:
break the limits of 2 regions and provide the region id in the callback to the server

Modified: trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxController.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxController.java	2006-10-09 15:17:40 UTC (rev 5372)
+++ trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxController.java	2006-10-09 17:19:55 UTC (rev 5373)
@@ -51,12 +51,12 @@
       {
          String windowId = req.getParameter("windowId");
          String fromPos = req.getParameter("fromPos");
-         String fromRegion = req.getParameter("fromRegion");
+         String fromRegionId = req.getParameter("fromRegionId");
          String toPos = req.getParameter("toPos");
-         String toRegion = req.getParameter("toRegion");
+         String toRegionId = req.getParameter("toRegionId");
          int fromPosInt = Integer.parseInt(fromPos);
          int toPosInt = Integer.parseInt(toPos);
-         ControllerCommand cmd = new MoveWindowCommand(windowId, fromPosInt, fromRegion, toPosInt, toRegion);
+         ControllerCommand cmd = new MoveWindowCommand(windowId, fromPosInt, fromRegionId, toPosInt, toRegionId);
          ControllerContext controllerContext = new ControllerContext(invocation, this);
          try
          {

Modified: trunk/core/src/main/org/jboss/portal/core/controller/command/MoveWindowCommand.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/command/MoveWindowCommand.java	2006-10-09 15:17:40 UTC (rev 5372)
+++ trunk/core/src/main/org/jboss/portal/core/controller/command/MoveWindowCommand.java	2006-10-09 17:19:55 UTC (rev 5373)
@@ -24,13 +24,7 @@
 import org.jboss.portal.core.controller.command.info.CommandInfo;
 import org.jboss.portal.core.controller.command.info.ActionCommandInfo;
 import org.jboss.portal.core.controller.ControllerException;
-import org.jboss.portal.core.controller.ControllerCommand;
-import org.jboss.portal.theme.navigation.PageNavigationalState;
-import org.jboss.portal.theme.page.WindowContext;
-import org.jboss.portal.common.invocation.AttributeResolver;
 
-import java.util.Iterator;
-
 /**
  * @author <a href="mailto:julien at jboss.org">Julien Viet</a>
  * @version $Revision: 1.1 $
@@ -45,22 +39,22 @@
    private int fromPos;
 
    /** . */
-   private String fromRegion;
+   private String fromRegionId;
 
    /** . */
    private int toPos;
 
    /** . */
-   private String toRegion;
+   private String toRegionId;
 
    public MoveWindowCommand(String windowRef, int fromPos, String fromRegion, int toPos, String toRegion)
       throws IllegalArgumentException
    {
       super(windowRef);
       this.fromPos = fromPos;
-      this.fromRegion = fromRegion;
+      this.fromRegionId = fromRegion;
       this.toPos = toPos;
-      this.toRegion = toRegion;
+      this.toRegionId = toRegion;
    }
 
    public CommandInfo getInfo()
@@ -72,9 +66,9 @@
    {
 
       System.out.println("windowRef = " + windowRef);
-      System.out.println("fromRegion = " + fromRegion);
+      System.out.println("fromRegion = " + fromRegionId);
       System.out.println("fromPos = " + fromPos);
-      System.out.println("toRegion = " + toRegion);
+      System.out.println("toRegion = " + toRegionId);
       System.out.println("toPos = " + toPos);
 
 //      // For now just update the navigational state of the page

Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java	2006-10-09 15:17:40 UTC (rev 5372)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java	2006-10-09 17:19:55 UTC (rev 5373)
@@ -72,27 +72,128 @@
       // Handle special ajax region here
       if ("AJAXFooter".equals(region.getId()))
       {
-         markup.append("\n\n<script type='text/javascript' src='").append(jsBase).append("/js/portal/event.js'></script>\n\n");
+         markup.append("<script>\n");
+         markup.append(
+         "\n" + 
+         "var toto = new Array();\n" +
+         "for(region in regions_on_page) {\n" +
+         "   toto.push(region);\n" +
+         "}\n" +
+         "for(region in regions_on_page) {\n" +
+         "Sortable.create(region, {dropOnEmpty:true,handle:'handle',tag:'div',containment:toto,constraint:false, ghosting: false,\n" +
+         "   onChange: function(el)\n" +
+         "   {\n" +
+         "   },\n" +
+         "   onUpdate: function (el)\n" +
+         "   {\n" +
+         "   }\n" +
+         "});\n" +
+         "}\n");
+
+         //
+         markup.append("Draggables.addObserver(new WindowMoveObserver());\n");
+
+         //
+         markup.append("snapshot();\n");
+
+         markup.append("</script>\n");
       }
       else if ("AJAXScripts".equals(region.getId()))
       {
          markup.append("\n\n\n");
-         markup.append("<script type='text/javascript'>\n");
-         markup.append("remote_server_url=\"");
-         markup.append(remoteURL);
-         markup.append(";\"\n");
-         markup.append("</script>\n");
          markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/prototype.js'></script>\n");
          markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/scriptaculous.js'></script>\n");
          markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/effects.js'></script>\n");
          markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/dragdrop.js'></script>\n");
+         markup.append("<script type='text/javascript'>\n");
+         markup.append("remote_server_url=\"").append(remoteURL).append(";\"\n");
+
+         markup.append("regions_on_page = new Object();\n");
+
+         String sendData =
+         "function sendData(action, windowId, fromPos, fromRegionId, toPos, toRegionId)\n" +
+            "{\n" +
+            "   var options = {\n" +
+            "      method: 'post',\n" +
+            "      postBody: 'action=' + action + '&windowId=' + windowId + '&fromPos=' + fromPos + '&fromRegionId=' + fromRegionId + '&toPos=' + toPos + '&toRegionId=' + toRegionId,\n" +
+            "      onSuccess: function(t)\n" +
+            "      {\n" +
+            "      },\n" +
+            "      onSuccess: function(t)\n" +
+            "      {\n" +
+            "      },\n" +
+            "      on404: function(t)\n" +
+            "      {\n" +
+            "         alert('Error 404: location \"' + t.statusText + '\" was not found.');\n" +
+            "      },\n" +
+            "      onFailure: function(t)\n" +
+            "      {\n" +
+            "         alert('Error ' + t.status + ' -- ' + t.statusText);\n" +
+            "      },\n" +
+            "      onLoading: function(t)\n" +
+            "      {\n" +
+            "      }\n" +
+            "   }\n" +
+            "   new Ajax.Request(remote_server_url, options);\n" +
+            "}";
+         markup.append(sendData);
+
+         //
+         String t =
+         "function snapshot() {\n" +
+            "for(region in regions_on_page) {\n" +
+               "var regionId = regions_on_page[region];\n" +
+               "var regionDiv = $(region);\n" +
+               "for (var i = 0;i < regionDiv.childNodes.length;i++) {\n" +
+                  "var child = regionDiv.childNodes[i];\n" +
+                  "child['regionId'] = regionId;\n" +
+                  "child['pos'] = i;\n" +
+               "}\n" +
+            "}\n" +
+         "\n}";
+
+         markup.append(t);
+
+         String s =
+         "   var WindowMoveObserver = Class.create();\n" +
+         "   WindowMoveObserver.prototype =\n" +
+         "   {\n" +
+         "      initialize: function(element)\n" +
+         "      {\n" +
+         "         this.element = $(element);\n" +
+         "      },\n" +
+         "      onStart: function()\n" +
+         "      {\n" +
+         "      },\n" +
+         "      onEnd: function()\n" +
+         "      {\n" +
+         "         var elt = Draggables.activeDraggable.element;\n" +
+         "         var fromRegionId = elt['regionId'];\n" +
+         "         var fromPos = elt['pos'];\n" +
+         "         snapshot();\n" +
+         "         var toRegionId = elt['regionId'];\n" +
+         "         var toPos = elt['pos'];\n" +
+         "         sendData('windowmove', elt.id, fromPos, fromRegionId, toPos, toRegionId);\n" +
+         "      }\n" +
+         "   };\n";
+         markup.append(s);
+
+         markup.append("</script>\n");
          markup.append("\n\n\n");
       }
-      
+      else
+      {
+         markup.append(
+         "<script>" +
+         "regions_on_page[\"" + renderContext.getRegionID() + "\"]=\"" + region.getId() + "\";" +
+         "</script>");
+      }
+
+      //
       delegate.render(renderContext, region, portletContexts, windowResults);
 
-      if(portletPos.get(renderContext.getRegionID()) != null
-         && ((Integer) portletPos.get(renderContext.getRegionID())).intValue() > 0)
+      //
+      if(portletPos.get(renderContext.getRegionID()) != null && ((Integer) portletPos.get(renderContext.getRegionID())).intValue() > 0)
       {
          portletPos.put(renderContext.getRegionID(), new Integer(0));
       }




More information about the jboss-svn-commits mailing list