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 ta...@apache.org on 2010/02/23 06:27:57 UTC

svn commit: r915190 - in /portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp: WEB-INF/jetui/yui/jetui-portlet.jsp WEB-INF/jetui/yui/jetui.jsp javascript/jetspeed/jetui/jetui-portal.js jetui/css/portal.css jetui/engine/portal.js

Author: taylor
Date: Tue Feb 23 05:27:57 2010
New Revision: 915190

URL: http://svn.apache.org/viewvc?rev=915190&view=rev
Log:
refactoring resize
persist width and height
handle maximize and minimize window states 

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/javascript/jetspeed/jetui/jetui-portal.js
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.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=915190&r1=915189&r2=915190&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 Tue Feb 23 05:27:57 2010
@@ -29,7 +29,10 @@
 <%@ page import="org.apache.jetspeed.decoration.Decoration" %>
 <%@ page import="org.apache.jetspeed.decoration.DecoratorAction" %>
 <%@ page import="org.apache.jetspeed.PortalReservedParameters" %>
+<%@ page import="org.apache.jetspeed.container.PortletWindow" %>
+<%@ page import="javax.portlet.WindowState" %>
 <%
+	RequestContext rc = (RequestContext)request.getAttribute(RequestContext.REQUEST_PORTALENV);
     String content = (String)request.getAttribute("content");
     String decorator = (String)request.getAttribute("decorator");
     Boolean detached = (Boolean)request.getAttribute("detached");    
@@ -83,7 +86,32 @@
                 </div>
               </div>
                <div class="PContentBorder">
-                 <div class="PContent"><%=content%></div>
+<% if (request.getUserPrincipal() != null && detached != null) 
+{
+	PortletWindow win = rc.getPortletWindow(fragment.getId());
+	if (win.getWindowState().equals(WindowState.MINIMIZED))
+	{
+%>		
+        <div class="PContent"></div>                
+<%	
+	}
+	else
+	{
+		String x = fragment.getProperty(ContentFragment.X_PROPERTY_NAME);
+		String y = fragment.getProperty(ContentFragment.Y_PROPERTY_NAME);	
+		String h = fragment.getProperty(ContentFragment.HEIGHT_PROPERTY_NAME);
+		String w = fragment.getProperty(ContentFragment.WIDTH_PROPERTY_NAME);
+		if (x == null) x = "0"; if (y == null) y = "0";
+		if (h == null) h = "100"; if (w == null) w = "150";
+		int top = new Double(Double.parseDouble(h)).intValue() + 17; // FIXME: hardcoded 
+		double left = new Double(Double.parseDouble(w)).intValue();
+%>                 
+                 <div class="PContent" style='height: <%=h%>px; width: <%=w%>px;'><%=content%>                
+                    <div class="resizeHandle" style='position: absolute; top: <%=top%>px; left: <%=left%>px;'></div>
+<% } } else { %>
+                 <div class="PContent"><%=content%>                
+<% } %>                    
+                 </div>
                </div>
             </div>
           </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=915190&r1=915189&r2=915190&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 Tue Feb 23 05:27:57 2010
@@ -104,7 +104,7 @@
 	portalContextPath: "<%=portalContextPath%>",
 	portalServletPath: "<%=portalServletPath%>",
 	portalPagePath: "<%=portalPagePath%>",
-	margins: [7, 4, 0]	
+	margins: [7, 4, 0, 17]	
 };
 var JETUI_YUI = {
   base: "<%=request.getContextPath()%>/javascript/yui/build/",
@@ -298,6 +298,8 @@
 {
 	String x = fragment.getProperty(ContentFragment.X_PROPERTY_NAME);
 	String y = fragment.getProperty(ContentFragment.Y_PROPERTY_NAME);
+	String h = fragment.getProperty(ContentFragment.HEIGHT_PROPERTY_NAME);
+	String w = fragment.getProperty(ContentFragment.WIDTH_PROPERTY_NAME);
 	int row = fragment.getLayoutRow();
     int col = fragment.getLayoutColumn();	
     String content = jetui.getRenderedContent((ContentFragment)fragment, rc);
@@ -305,7 +307,7 @@
     if (option == Decoration.ActionsOption.HIDE) // TODO: HOVER, DROP DOWN not yet implemented
     {
 %>
-   <div id='<%=fragment.getId()%>' detached='true' locked='<%=fragment.isLocked()%>' name='<%=fragment.getName()%>' column='<%=col%>' row='<%=row%>' x='<%=x%>' y='<%=y%>' style='position: absolute; top: <%=x%>px; left: <%=y%>px;'>
+   <div id='<%=fragment.getId()%>' detached='true' locked='<%=fragment.isLocked()%>' name='<%=fragment.getName()%>' column='<%=col%>' row='<%=row%>' x='<%=x%>' y='<%=y%>' style='position: absolute; top: <%=x%>px; left: <%=y%>px; height: <%=h%>px; width: <%=w%>px;'>
 <%=content%>
    </div>			    
 <% } else {   

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetui/jetui-portal.js
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetui/jetui-portal.js?rev=915190&r1=915189&r2=915190&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetui/jetui-portal.js (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetui/jetui-portal.js Tue Feb 23 05:27:57 2010
@@ -148,7 +148,7 @@
         /**
          * Margins (resizeHandler, PContent left margin, PContent top margin
          */
-        margins: [7, 4, 0],
+        margins: [7, 4, 0, 17],
         
         /**
          * Construction logic executed during instantiation.
@@ -400,9 +400,11 @@
 			        	}
 		        	}
 	            }
-	            portal.addResizeHandle(window);
+	            portal.addResizeHandle(window, true);
 		        var uri = portal.portalContextPath + "/services/pagelayout/fragment/" + windowId + "/pos/?_type=json";
 		        uri += "&x=" + x + "&y=" + y + "&layout=detach";
+		        var region = window.get('region');		        
+		        uri += "&w=" + (region.right - region.left) + "&h=" + (region.bottom - region.top);
 		        var config = {
                       on: { complete: portal.onMoveComplete },
                       method: "PUT",
@@ -475,8 +477,9 @@
 	                i++;
 	            }
 	            layout.appendChild(window);
-	            portal.removeResizeHandle(window);
-	            portal.removeWidthHeight(window);
+	            var pcontent =  portal.findChildByClass(window, ['portlet', 'PContentBorder', 'PContent'], 0);
+	            portal.removeResizeHandle(pcontent);
+	            portal.removeWidthHeight(pcontent);
 	            var uri = portal.portalContextPath + "/services/pagelayout/fragment/" + windowId + "/pos/?_type=json";
 	            uri += "&row=" + row + "&col=" + col + "&layout=attach";
 	            var config = {
@@ -542,7 +545,24 @@
             }        	
             // TODO: handle toolbar moves
         },
-                
+
+        /**
+         * @method resizePortlet persist the resize operation to the persistent store over restful put request
+         */
+        resizePortlet : function(node, height, width) {
+            var portal = JETUI_YUI.getPortalInstance();
+            var windowId =  node.getAttribute('id');            
+            var uri = portal.portalContextPath + "/services/pagelayout/fragment/" + windowId + "/pos/?_type=json";
+            uri += "&w=" + width + "&h=" + height;
+            var config = {
+                    on: { complete: portal.onMoveComplete },
+                    method: "PUT",
+                    headers: { "X-Portal-Path" : portal.portalPagePath },
+                    arguments: { complete: [ windowId ] }
+                };
+            var request = Y.io(uri, config);
+        },
+        
         reallocateColumn : function(column) {
     	    var columns = Y.Node.all(JetuiConfiguration.layoutStyle); 
     	    columns.each(function(v, k) {
@@ -759,16 +779,24 @@
         /**
          * @method addResizeHandle
          */        
-        addResizeHandle : function(v) {
+        addResizeHandle : function(v, alwaysAdd) {
             var portal = JETUI_YUI.getPortalInstance();        	
-        	var region = v.get('region');        	
-	        var mt = portal.calculateResizeMargin(v);
-	        var rh = Y.Node.create("<div class='resizeHandle'/>");
-        	rh.setStyle('position', 'absolute');
-			rh.setStyle('top', (region.bottom - region.top - mt) + "px");
-			rh.setStyle('left', (region.right - region.left - mt) + "px");        				        
-	        v.appendChild(rh);		        
-	        rh.data = 'resize';
+        	var pcontent = portal.findChildByClass(v, ['portlet', 'PContentBorder', 'PContent'], 0);
+        	var region = pcontent.get('region');
+        	var rh = portal.findChildByClass(pcontent, ['resizeHandle'], 0);
+	    	if (Y.Lang.isNull(rh)) {
+	    		if (alwaysAdd == false) {
+	    			return;
+	    		}
+		        var rh = Y.Node.create("<div class='resizeHandle'/>");
+	        	rh.setStyle('position', 'absolute');
+	        	pcontent.setStyle('height', (region.bottom - region.top) + "px")
+				pcontent.setStyle('width', (region.right - region.left) + "px");        				        
+	        	rh.setStyle('top', (region.bottom - region.top + portal.margins[3]) + "px");
+				rh.setStyle('left', (region.right - region.left) + "px");        				        
+		        pcontent.appendChild(rh);	    		
+	    	}
+	        rh.data = { kind: 'resize', window: v, parent: pcontent };
 	        var rhDrag = new Y.DD.Drag({
 	            node: rh,
 	            groups: [],
@@ -793,25 +821,8 @@
         },
 
         removeWidthHeight : function(v) {
-	 		v.get('children').each(function(v2,k2) {
-	 			var cl = v2.getAttribute('class');
-			    if (cl.indexOf('portlet') == 0) {
-			 		v2.get('children').each(function(v3,k3) {
-			 			var cl = v3.getAttribute('class');
-					    if (cl.indexOf('PContentBorder') == 0) {
-					    	v3.setStyle('width', '');
-					    	v3.setStyle('height', '');
-					 		v3.get('children').each(function(v4,k4) {
-					 			var cl = v4.getAttribute('class');
-							    if (cl.indexOf('PContent') == 0) {
-							    	v4.setStyle('width', '');
-							    	v4.setStyle('height', '');
-							    }
-					 		});
-					    }
-			 		});
-			    }
-	 		});        	        	
+	    	v.setStyle('width', '');
+	    	v.setStyle('height', '');
         },
         
         /**
@@ -845,7 +856,7 @@
 			     if (cl.indexOf(styles[index]) == 0) {
 			    	 if (index + 1 < styles.length) {
 			    		 index = index + 1;
-			    		 var res = portal.findChildByClass(v, styles, 1);
+			    		 var res = portal.findChildByClass(v, styles, index);
           	             if (!Y.Lang.isNull(res)) {
           	            	 result =  res;
           	            	 return result;

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css?rev=915190&r1=915189&r2=915190&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css Tue Feb 23 05:27:57 2010
@@ -38,8 +38,8 @@
 }
 .resizeHandle {
     background:transparent url("layout_sprite.png") no-repeat -20px -60px;
-	height:14px;
-    width: 14px;
-    cursor: move;    
+	height:10px;
+    width: 9px;
+    cursor: move;
 }
 

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=915190&r1=915189&r2=915190&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 Tue Feb 23 05:27:57 2010
@@ -80,7 +80,7 @@
 		        dragGroups = ['detached'],	        
 		        dragMode = 'point';
 		        dropGroups = [];
-		        portal.addResizeHandle(v);
+		        portal.addResizeHandle(v, false);
 	        }
 	        if (portlet.get("tool") == false)
 	        {
@@ -167,18 +167,24 @@
     });
 	
     Y.DD.DDM.on('drag:end', function(e) {
-        var drag = e.target;
+    	var drag = e.target;
         if (drag.target) {
             drag.target.set('locked', false);
         }
+        var portal = JETUI_YUI.getPortalInstance();
         var srcNode = drag.get('node');
-        if (srcNode.data == 'resize') {
-	        var dragParent = srcNode.get('parentNode');
+        if (srcNode.data.kind == 'resize') {
+	        var dragParent = srcNode.data.parent; // DST: srcNode.get('parentNode');
 	        var region = dragParent.get('region');
-	        var mt = portal.calculateResizeMargin(dragParent);
-        	srcNode.setStyle('top', (region.bottom - region.top - mt) + "px");
-			srcNode.setStyle('left', (region.right - region.left - mt) + "px");        				        
-        	srcNode.setStyle('visibility', '');        	
+	    	var height = parseInt(dragParent.getStyle('height'));
+	    	var width = parseInt(dragParent.getStyle('width'));
+	        var top = height + portal.margins[3];
+	        var left = width;
+	        srcNode.setStyle('top', top + "px");
+	        srcNode.setStyle('left', left + "px");
+	        srcNode.set('innerHTML', '');
+        	srcNode.setStyle('visibility', '');   
+        	portal.resizePortlet(srcNode.data.window, height, width);
         	return;
         }
         if (drag.get('node').data.get("detached"))
@@ -201,11 +207,11 @@
     	var drag = e.target;
         var dragNode = drag.get('dragNode');
         var srcNode = drag.get('node');
-        if (srcNode.data == 'resize') {
-        	dragNode.set('innerHTML', srcNode.get('innerHTML'));
+        if (srcNode.data.kind == 'resize') {
+        	dragNode.set('innerHTML', '<b>...Move</b>'); //srcNode.get('innerHTML'));
         	srcNode.setStyle('visibility', 'hidden');
-            var dragParent = srcNode.get('parentNode');        	
-            portal.activateWindow(dragParent);                	                	
+            var dragWindow = srcNode.data.window; //srcNode.get('parentNode');        	
+            portal.activateWindow(dragWindow);                	                	
         	return;
     	}
         portal.activateWindow(srcNode);                	                	
@@ -230,23 +236,30 @@
     Y.DD.DDM.on('drag:drag', function(e) {
     	var drag = e.target;
         var srcNode = drag.get('node');    	
-        if (srcNode.data == 'resize') {
-	        var dragParent = drag.get('node').get('parentNode');
-	        var box = portal.findChildByClass(dragParent, ['portlet ', 'PContentBorder'], 0);
-	        var content = portal.findChildByClass(box, ['PContent'], 0);	        
-	    	var left = parseInt(dragParent.getStyle('left'));
-	    	var top =  parseInt(dragParent.getStyle('top'));
+        if (srcNode.data.kind == 'resize') {
+	        var dragWindow = srcNode.data.window; // DST: drag.get('node').get('parentNode');
+	        var box = srcNode.data.parent.get('parentNode');
+	        var content = srcNode.data.parent;
+//	        var box = portal.findChildByClass(dragParent, ['portlet ', 'PContentBorder'], 0);
+//	        var content = portal.findChildByClass(box, ['PContent'], 0);	        
+	    	var left = parseInt(dragWindow.getStyle('left'));
+	    	var top =  parseInt(dragWindow.getStyle('top'));
 	    	var width = (drag.mouseXY[0] - left) + "px";
 	    	var height = (drag.mouseXY[1] - top) + "px";
-	    	if (!Y.Lang.isNull(box)) {
-		    	box.setStyle('width', width);
-		    	box.setStyle('height', height);
-	    	}	    	
+//	    	dragWindow.setStyle('width', width);
+//	    	dragWindow.setStyle('height', height);
+	    	
+//	    	if (!Y.Lang.isNull(box)) {
+//		    	box.setStyle('width', width);
+//		    	box.setStyle('height', height);
+//	    	}	    	
 	    	if (!Y.Lang.isNull(content)) {
-		    	content.setStyle('width', (drag.mouseXY[0] - left - portal.margins[1]) + "px"); 
-		    	content.setStyle('height', (drag.mouseXY[1] - top - portal.margins[2]) + "px");
+//		    	content.setStyle('width', (drag.mouseXY[0] - left - portal.margins[1]) + "px"); 
+//		    	content.setStyle('height', (drag.mouseXY[1] - top - portal.margins[2]) + "px");
+		    	content.setStyle('width', width);
+		    	content.setStyle('height', height);
 	    	}	    	
-	    	var region = dragParent.get('region');
+//	    	var region = dragParent.get('region');
         }
     });
     



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