]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #4192 making the bottom of widget columns equal rather than height
authorCash Costello <cash.costello@gmail.com>
Sun, 8 Jan 2012 19:07:58 +0000 (14:07 -0500)
committerCash Costello <cash.costello@gmail.com>
Sun, 8 Jan 2012 19:07:58 +0000 (14:07 -0500)
js/lib/ui.widgets.js
mod/profile/views/default/profile/js.php

index 6114aeacd0adb4ac84c37da7dcdd2b8464b52871..d897564b41d7483f6340f5d42aaca65995379d70 100644 (file)
@@ -29,7 +29,7 @@ elgg.ui.widgets.init = function() {
        $('.elgg-widget-edit > form ').live('submit', elgg.ui.widgets.saveSettings);
        $('a.elgg-widget-collapse-button').live('click', elgg.ui.widgets.collapseToggle);
 
-       elgg.ui.widgets.equalHeight(".elgg-widgets");
+       elgg.ui.widgets.setMinHeight(".elgg-widgets");
 };
 
 /**
@@ -175,22 +175,29 @@ elgg.ui.widgets.saveSettings = function(event) {
 };
 
 /**
- * Make all elements have the same min-height
+ * Set the min-height so that all widget column bottoms are the same
  *
  * This addresses the issue of trying to drag a widget into a column that does
- * not have any widgets.
+ * not have any widgets or many fewer widgets than other columns.
  *
  * @param {String} selector
  * @return void
  */
-elgg.ui.widgets.equalHeight = function(selector) {
-       var maxHeight = 0;
+elgg.ui.widgets.setMinHeight = function(selector) {
+       var maxBottom = 0;
        $(selector).each(function() {
-               if ($(this).height() > maxHeight) {
-                       maxHeight = $(this).height();
+               var bottom = parseInt($(this).offset().top + $(this).height());
+               if (bottom > maxBottom) {
+                       maxBottom = bottom;
+               }
+       })
+       $(selector).each(function() {
+               var bottom = parseInt($(this).offset().top + $(this).height());
+               if (bottom < maxBottom) {
+                       var newMinHeight = parseInt($(this).height() + (maxBottom - bottom));
+                       $(this).css('min-height', newMinHeight + 'px');
                }
        })
-       $(selector).css('min-height', maxHeight + 'px');
 };
 
 elgg.register_hook_handler('init', 'system', elgg.ui.widgets.init);
index 16dec59dfba5fdcad09f7f90f3be9b727112b683..5a08a90bd13a11750cc4fcbbebf13bed0538fde2 100644 (file)
@@ -1,6 +1,9 @@
+
+// force the first column to at least be as large as the profile box in cols 2 and 3
+// we also want to run before the widget init happens so priority is < 500
 elgg.register_hook_handler('init', 'system', function() {
        // only do this on the profile page's widget canvas.
        if ($('.profile').length) {
                $('#elgg-widget-col-1').css('min-height', $('.profile').outerHeight(true) + 1);
        }
-});
\ No newline at end of file
+}, 400);