Author: taylor
Date: Fri Oct 30 04:12:00 2009
New Revision: 831196

URL: http://svn.apache.org/viewvc?rev=831196&view=rev
Log:
https://issues.apache.org/jira/browse/JS2-1057
Implemented 'dropping portlets into empty fragment containers' (note: not 
tested with nested layouts, still needs some work there)

Modified:
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp?rev=831196&r1=831195&r2=831196&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui-portlet.jsp
 Fri Oct 30 04:12:00 2009
@@ -35,7 +35,7 @@
        if (fragment.getPortletContent() != null)
            title = fragment.getPortletContent().getTitle();
 %>
-       <div class="portal-layout-cell portal-layout-cell-OneColumn-1-0" 
id="<%=fragment.getId()%>" name="<%=fragment.getName()%>">
+       <div class="portal-layout-cell" id="<%=fragment.getId()%>" 
name="<%=fragment.getName()%>">
                <div class="portlet <%=pageDec%>">
                    <div class="PTitle" >
                  <div class="PTitleContent"><%=title%></div>

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp?rev=831196&r1=831195&r2=831196&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
 Fri Oct 30 04:12:00 2009
@@ -122,7 +122,7 @@
                // class="portal-layout-column 
portal-layout-column-${layoutType}-${columnIndex}"               
 %>
 <div id="column_id_<%=index%>" 
-     class="portal-layout-column" 
+     class="portal-layout-column"
      style="float:<%=columnFloat%>; min-height: 100px; width:<%=columnWidth%>; 
background-color: #ffffff;">
 
 <%         

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/css/styles.css?rev=831196&r1=831195&r2=831196&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/css/styles.css
 Fri Oct 30 04:12:00 2009
@@ -448,6 +448,7 @@
 .layyout-jetspeed .layout-statusarea A:visited,
 .layout-jetspeed .layout-statusarea A {
 color: #fff;
+font-size:8pt;
 }
 
 .layout-jetspeed .layout-jetspeed-logout:hover{

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css?rev=831196&r1=831195&r2=831196&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css
 Fri Oct 30 04:12:00 2009
@@ -447,6 +447,7 @@
 .layyout-purpleplanet .layout-statusarea A:visited,
 .layout-purpleplanet .layout-statusarea A {
 color: #fff;
+font-size:8pt;
 }
 
 .layout-purpleplanet .layout-purpleplanet-logout:hover{

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/css/styles.css?rev=831196&r1=831195&r2=831196&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/css/styles.css
 Fri Oct 30 04:12:00 2009
@@ -447,6 +447,7 @@
 .layyout-turbo .layout-statusarea A:visited,
 .layout-turbo .layout-statusarea A {
 color: #fff;
+font-size:8pt;
 }
 
 

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js?rev=831196&r1=831195&r2=831196&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js
 Fri Oct 30 04:12:00 2009
@@ -39,6 +39,30 @@
                Y.log("toolbar  : " + this.get("toolbar"));             
                Y.log("---------");
     };
+
+    ////////////////////////////////////////////////////
+    // the Layout Class
+    function Layout(config) {
+        Layout.superclass.constructor.call(this, config);
+    };
+    Y.extend(Layout, Y.Base, {
+       initializer : function(cfg) { 
+               },
+        destructor : function(cfg) { 
+               }               
+    });    
+    Layout.NAME = "layout";
+    Layout.ATTRS = {
+       "name" : { value: "undefined" }, 
+        "id" : { value: "0" },
+        "nested" : { value : false }
+    };
+       Layout.prototype.info = function() {
+               Y.log("name: " + this.get("name"));
+               Y.log("id  : " + this.get("id"));               
+               Y.log("nested  : " + this.get("nested"));               
+               Y.log("---------");
+    };
     
     ////////////////////////////////////////////////////    
     // Create Navigator Portlet
@@ -60,10 +84,10 @@
     
     ////////////////////////////////////////////////////    
     // setup toolbar docking area and togglers    
-    var lhsToggler = Y.get('#jstbLeftToggle');
-    var rhsToggler = Y.get('#jstbRightToggle');    
+    var lhsToggler = Y.one('#jstbLeftToggle');
+    var rhsToggler = Y.one('#jstbRightToggle');    
     // add fx plugin to docking area
-    portal.jstbLeft = Y.get('#jstbLeft').plug(Y.Plugin.NodeFX, {
+    portal.jstbLeft = Y.one('#jstbLeft').plug(Y.Plugin.NodeFX, {
         from: { width: 1 },
         to: {
             width: function(node) { // dynamic in case of change
@@ -73,7 +97,7 @@
         easing: Y.Easing.easeOut,
         duration: 0.3
     });    
-    portal.jstbRight = Y.get('#jstbRight').plug(Y.Plugin.NodeFX, {
+    portal.jstbRight = Y.one('#jstbRight').plug(Y.Plugin.NodeFX, {
         from: { width: 1 },
         to: {
             width: function(node) { // dynamic in case of change
@@ -105,7 +129,7 @@
 
     ////////////////////////////////////////////////////       
     // drag and drop
-    var nav = Y.get('#jsNavigator');
+    var nav = Y.one('#jsNavigator');
     nav.data = navigator;
     var ddNav = new Y.DD.Drag({
         node: nav,
@@ -117,13 +141,13 @@
     ddNav.addHandle('.PTitle');
     nav.on('click', onClickToolbar);
 
-    var jetspeedZone = Y.get('#jetspeedZone');
+    var jetspeedZone = Y.one('#jetspeedZone');
     var jzDrop = new Y.DD.Drop({
         node: jetspeedZone,
         groups: ['toolbars']        
     });
     
-    var tb = Y.get('#jsToolbox');
+    var tb = Y.one('#jsToolbox');
     tb.data = toolbox;
     var ddToolbox = new Y.DD.Drag({
         node: tb,
@@ -136,22 +160,23 @@
     tb.on('click', onClickToolbar);
     
     var drop = new Y.DD.Drop({
-        node: Y.get('#jstbLeft'),
+        node: Y.one('#jstbLeft'),
         groups: ['toolbars']
     });
     var drop = new Y.DD.Drop({
-        node: Y.get('#jstbRight'),
+        node: Y.one('#jstbRight'),
         groups: ['toolbars']        
     });
     
     var draggablePortlets = Y.Node.all('.portal-layout-cell');    
     draggablePortlets.each(function(v, k) {
-        var p = new Portlet();
-        p.set("name", v.getAttribute("name"));
-        p.set("id", v.getAttribute("id"));
-        p.set("toolbar", false);
-        p.set("detached", false);
-        v.data = p;
+        var portlet = new Portlet();
+        portlet.set("name", v.getAttribute("name"));
+        portlet.set("id", v.getAttribute("id"));
+        portlet.set("toolbar", false);
+        portlet.set("detached", false);
+        v.data = portlet;
+        //portlet.info();        
         var ddNav = new Y.DD.Drag({
             node: v,
             groups: ['portlets'],
@@ -166,13 +191,22 @@
         });        
     });
     
-//    var dropLayoutColumns = Y.Node.all('.portal-layout-column');
-//    dropLayoutColumns.each(function(v, k) {
-//     var drop = new Y.DD.Drop({
-//            node: v,
-//            groups: ['portlets']            
-//        });                  
-//    });
+    var dropLayouts = Y.Node.all('.portal-layout-column');
+    dropLayouts.each(function(v, k) {
+        var layout = new Layout();
+        layout.set("name", v.getAttribute("name"));
+        layout.set("id", v.getAttribute("id"));
+        layout.set("nested", false);
+        v.data = layout;
+        //layout.info();
+        if (v.get('children').size() == 0)
+        {
+               var drop = new Y.DD.Drop({
+               node: v,
+               groups: ['portlets']            
+               });
+        }
+    });
     
     Portal.prototype.toggleToolbar = function(toolbar, toggler, compareStyle) {
         toggler.toggleClass('jstbToggle1');
@@ -197,7 +231,6 @@
             drag = e.drag.get('node');
         if (drag.data.get("toolbar"))
         {              
-               Y.log("drop hit of toolbar: " + drop.getAttribute('id'));
             if (drop == portal.jstbLeft || drop == portal.jstbRight)
             {
                        drag.setStyle('position', '');
@@ -225,6 +258,32 @@
         }
     });
        
+    Portal.prototype.moveToLayout = function(e)
+    {
+        var drop = e.drop.get('node'),
+               drag = e.drag.get('node');
+        var dragParent = drag.get('parentNode');       
+       drop.appendChild(drag);
+        if (dragParent.get('children').size() == 0)
+        {
+               //node.plug(Y.Plugin.Drag);
+               var drop = new Y.DD.Drop({
+               node: dragParent,
+               groups: ['portlets']            
+               });
+        }
+        // BOZO: im manipulating internal DD structures, should find a way to 
detach the handler
+        var i = 0;
+        while (i < Y.DD.DDM.targets.length) {
+               if (Y.DD.DDM.targets[i] == e.drop) {
+                       Y.DD.DDM.targets.splice(i, 1);
+                       break;
+               }
+               i++;
+        }
+        e.drop.unplug(Y.Plugin.Drop);
+    }
+
          Portal.prototype.movePortlet = function(e)
          {
         var drop = e.drop.get('node'),
@@ -241,7 +300,7 @@
         {
                if (goingUp)
                {
-                       Y.log("going UP");
+                       //Y.log("going UP");
                        // var next = drop.get('previousSibling');
                        var prev = drop.previous();
                 if (prev == null)
@@ -260,18 +319,25 @@
                        var next = drop.next();
                 if (next == null) 
                 {
-                               Y.log("going down APPEND");
+                               //Y.log("going down APPEND");
                                //drag.remove();
                                dropParent.appendChild(drag);
                 }
                 else
                 {
-                               Y.log("going down: " + next); 
//next.data.get('name'));
+                               //Y.log("going down: " + next); 
//next.data.get('name'));
                                //drag.remove();
                                dropParent.insertBefore(drag, next);
                 }
                }
         }
+        if (dragParent.get('children').size() == 0)
+        {
+               var drop = new Y.DD.Drop({
+               node: dragParent,
+               groups: ['portlets']            
+               });
+        }        
     };    
 
     Y.DD.DDM.on('drag:end', function(e) {
@@ -380,18 +446,28 @@
         else
         {
                var region = e.drop.get('node').get('region');
-               var srcRegion = e.drag.get('node').get('region');
-               if (y >= srcRegion.top && y <= srcRegion.bottom && x >= 
srcRegion.left && x <= srcRegion.right)
+               if (e.drop.get('node').data.name == "portlet")
                {
-//                     Y.log("dragging over src");
-               }               
-               else if (y >= region.top && y <= region.bottom && x >= 
region.left && x <= region.right)
+                       var srcRegion = e.drag.get('node').get('region');
+                       if (y >= srcRegion.top && y <= srcRegion.bottom && x >= 
srcRegion.left && x <= srcRegion.right)
+                       {
+       //                      Y.log("dragging over src");
+                       }               
+                       else if (y >= region.top && y <= region.bottom && x >= 
region.left && x <= region.right)
+                       {
+                               //Y.log("**** HIT");
+                               portal.isMoving = true;
+                               portal.movePortlet(e); 
+                               portal.isMoving = false;
+                       }
+               }
+               else if (e.drop.get('node').data.name == "layout")
                {
-                       Y.log("**** HIT");
                        portal.isMoving = true;
-                       portal.movePortlet(e); 
+                       portal.moveToLayout(e);
                        portal.isMoving = false;
                }
+               
         }
                //Y.log("x,y = " + x + "," + y);
        



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to