From ef71ffca08b91f514208adfdd67249dd52fc1aa3 Mon Sep 17 00:00:00 2001 From: Sem Date: Tue, 3 Jan 2012 16:13:57 +0100 Subject: Refs #4142. Added ETag header support for user avatars. --- mod/profile/icondirect.php | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'mod/profile') diff --git a/mod/profile/icondirect.php b/mod/profile/icondirect.php index f7188455e..1680d8fce 100644 --- a/mod/profile/icondirect.php +++ b/mod/profile/icondirect.php @@ -12,8 +12,16 @@ require_once(dirname(dirname(dirname(__FILE__))). '/engine/settings.php'); global $CONFIG; $join_date = (int)$_GET['joindate']; +$last_cache = (int)$_GET['lastcache']; // icontime $guid = (int)$_GET['guid']; +// If is the same eTag, content didn't changed. +$eTag = $last_cache . $guid; +if (trim($_SERVER['HTTP_IF_NONE_MATCH']) == $eTag) { + header("HTTP/1.1 304 Not Modified"); + exit; +} + $size = strtolower($_GET['size']); if (!in_array($size, array('large', 'medium', 'small', 'tiny', 'master', 'topbar'))) { $size = "medium"; @@ -48,6 +56,7 @@ if ($mysql_dblink) { header("Pragma: public"); header("Cache-Control: public"); header("Content-Length: " . strlen($contents)); + header("ETag: $eTag"); // this chunking is done for supposedly better performance $split_string = str_split($contents, 1024); foreach ($split_string as $chunk) { -- cgit v1.2.3 From 6b8301f6433ec22b065d734e9fc26d09f723b07d Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sat, 7 Jan 2012 12:32:46 -0500 Subject: added check for existance of IF-NONE-MATCH header in request --- mod/groups/icon.php | 10 +++++----- mod/profile/icondirect.php | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'mod/profile') diff --git a/mod/groups/icon.php b/mod/groups/icon.php index 607f38939..104da4b41 100644 --- a/mod/groups/icon.php +++ b/mod/groups/icon.php @@ -10,15 +10,15 @@ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); $group_guid = get_input('group_guid'); $group = get_entity($group_guid); -// If is the same eTag, content didn't changed. -$eTag = $group->icontime . $group_guid; -if (trim($_SERVER['HTTP_IF_NONE_MATCH']) == $eTag) { +// If is the same ETag, content didn't changed. +$etag = $group->icontime . $group_guid; +if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) { header("HTTP/1.1 304 Not Modified"); exit; } $size = strtolower(get_input('size')); -if (!in_array($size,array('large','medium','small','tiny','master','topbar'))) +if (!in_array($size, array('large', 'medium', 'small', 'tiny', 'master', 'topbar'))) $size = "medium"; $success = false; @@ -44,5 +44,5 @@ header('Expires: ' . date('r',time() + 864000)); header("Pragma: public"); header("Cache-Control: public"); header("Content-Length: " . strlen($contents)); -header("ETag: $eTag"); +header("ETag: $etag"); echo $contents; diff --git a/mod/profile/icondirect.php b/mod/profile/icondirect.php index 1680d8fce..6c3148f2b 100644 --- a/mod/profile/icondirect.php +++ b/mod/profile/icondirect.php @@ -15,9 +15,9 @@ $join_date = (int)$_GET['joindate']; $last_cache = (int)$_GET['lastcache']; // icontime $guid = (int)$_GET['guid']; -// If is the same eTag, content didn't changed. -$eTag = $last_cache . $guid; -if (trim($_SERVER['HTTP_IF_NONE_MATCH']) == $eTag) { +// If is the same ETag, content didn't changed. +$etag = $last_cache . $guid; +if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) { header("HTTP/1.1 304 Not Modified"); exit; } @@ -56,7 +56,7 @@ if ($mysql_dblink) { header("Pragma: public"); header("Cache-Control: public"); header("Content-Length: " . strlen($contents)); - header("ETag: $eTag"); + header("ETag: $etag"); // this chunking is done for supposedly better performance $split_string = str_split($contents, 1024); foreach ($split_string as $chunk) { -- cgit v1.2.3 From 855de1b33e1ba1753ac1a5088e640e5fcff09f79 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sun, 8 Jan 2012 14:07:58 -0500 Subject: Fixes #4192 making the bottom of widget columns equal rather than height --- js/lib/ui.widgets.js | 23 +++++++++++++++-------- mod/profile/views/default/profile/js.php | 5 ++++- 2 files changed, 19 insertions(+), 9 deletions(-) (limited to 'mod/profile') diff --git a/js/lib/ui.widgets.js b/js/lib/ui.widgets.js index 6114aeacd..d897564b4 100644 --- a/js/lib/ui.widgets.js +++ b/js/lib/ui.widgets.js @@ -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); diff --git a/mod/profile/views/default/profile/js.php b/mod/profile/views/default/profile/js.php index 16dec59df..5a08a90bd 100644 --- a/mod/profile/views/default/profile/js.php +++ b/mod/profile/views/default/profile/js.php @@ -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); -- cgit v1.2.3