parent
b2055b4490
commit
6654d30912
@ -0,0 +1,32 @@ |
||||
<?php |
||||
|
||||
/* |
||||
* To change this template, choose Tools | Templates |
||||
* and open the template in the editor. |
||||
*/ |
||||
require_once '../global.inc.php'; |
||||
|
||||
$action = $_GET['a']; |
||||
|
||||
switch($action) { |
||||
case 'load_online_user': |
||||
$page = intval($_REQUEST['online_page_nr']); |
||||
if (isset($_GET['cidReq']) && strlen($_GET['cidReq']) > 0) { |
||||
$user_list = who_is_online_in_this_course(api_get_user_id(), api_get_setting('time_limit_whosonline'), $_GET['cidReq']); |
||||
} else { |
||||
$user_list = who_is_online(api_get_setting('time_limit_whosonline')); |
||||
} |
||||
if ($page == 2) { |
||||
$_SESSION['online_user_items'] = array(); |
||||
} |
||||
$max_page = round(count($user_list)/10); |
||||
if (!in_array($page, $_SESSION['online_user_items']) && $page <= $max_page) { |
||||
$_SESSION['online_user_items'][] = $page; |
||||
echo SocialManager::display_user_list($user_list); |
||||
} else { |
||||
echo 'end'; |
||||
} |
||||
break; |
||||
default: |
||||
break; |
||||
} |
@ -0,0 +1,132 @@ |
||||
/** |
||||
* Endless Scroll plugin for jQuery |
||||
* |
||||
* v1.4.8 |
||||
* |
||||
* Copyright (c) 2008 Fred Wu |
||||
* |
||||
* Dual licensed under the MIT and GPL licenses: |
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/ |
||||
|
||||
/** |
||||
* Usage: |
||||
* |
||||
* // using default options
|
||||
* $(document).endlessScroll(); |
||||
* |
||||
* // using some custom options
|
||||
* $(document).endlessScroll({ |
||||
* fireOnce: false, |
||||
* fireDelay: false, |
||||
* loader: "<div class=\"loading\"><div>", |
||||
* callback: function(){ |
||||
* alert("test"); |
||||
* } |
||||
* }); |
||||
* |
||||
* Configuration options: |
||||
* |
||||
* bottomPixels integer the number of pixels from the bottom of the page that triggers the event |
||||
* fireOnce boolean only fire once until the execution of the current event is completed |
||||
* fireDelay integer delay the subsequent firing, in milliseconds, 0 or false to disable delay |
||||
* loader string the HTML to be displayed during loading |
||||
* data string|function plain HTML data, can be either a string or a function that returns a string, |
||||
* when passed as a function it accepts one argument: fire sequence (the number |
||||
* of times the event triggered during the current page session) |
||||
* insertAfter string jQuery selector syntax: where to put the loader as well as the plain HTML data |
||||
* callback function callback function, accepts one argument: fire sequence (the number of times |
||||
* the event triggered during the current page session) |
||||
* resetCounter function resets the fire sequence counter if the function returns true, this function |
||||
* could also perform hook actions since it is applied at the start of the event |
||||
* ceaseFire function stops the event (no more endless scrolling) if the function returns true |
||||
* |
||||
* Usage tips: |
||||
* |
||||
* The plugin is more useful when used with the callback function, which can then make AJAX calls to retrieve content. |
||||
* The fire sequence argument (for the callback function) is useful for 'pagination'-like features. |
||||
*/ |
||||
|
||||
(function($){ |
||||
|
||||
$.fn.endlessScroll = function(options) { |
||||
|
||||
var defaults = { |
||||
bottomPixels: 50, |
||||
fireOnce: true, |
||||
fireDelay: 150, |
||||
loader: "<br />Loading...<br />", |
||||
data: "", |
||||
insertAfter: "div:last", |
||||
resetCounter: function() { return false; }, |
||||
callback: function() { return true; }, |
||||
ceaseFire: function() { return false; } |
||||
}; |
||||
|
||||
var options = $.extend({}, defaults, options); |
||||
|
||||
var firing = true; |
||||
var fired = false; |
||||
var fireSequence = 0; |
||||
|
||||
if (options.ceaseFire.apply(this) === true) { |
||||
firing = false; |
||||
} |
||||
|
||||
if (firing === true) { |
||||
$(this).scroll(function() { |
||||
if (options.ceaseFire.apply(this) === true) { |
||||
firing = false; |
||||
return; // Scroll will still get called, but nothing will happen
|
||||
} |
||||
|
||||
if (this == document || this == window) { |
||||
var is_scrollable = $(document).height() - $(window).height() <= $(window).scrollTop() + options.bottomPixels; |
||||
} else { |
||||
// calculates the actual height of the scrolling container
|
||||
var inner_wrap = $(".endless_scroll_inner_wrap", this); |
||||
if (inner_wrap.length == 0) { |
||||
inner_wrap = $(this).wrapInner("<div class=\"endless_scroll_inner_wrap\" />").find(".endless_scroll_inner_wrap"); |
||||
} |
||||
var is_scrollable = inner_wrap.length > 0 && |
||||
(inner_wrap.height() - $(this).height() <= $(this).scrollTop() + options.bottomPixels); |
||||
} |
||||
|
||||
if (is_scrollable && (options.fireOnce == false || (options.fireOnce == true && fired != true))) { |
||||
if (options.resetCounter.apply(this) === true) fireSequence = 0; |
||||
|
||||
fired = true; |
||||
fireSequence++; |
||||
|
||||
$(options.insertAfter).after("<div id=\"endless_scroll_loader\">" + options.loader + "</div>"); |
||||
|
||||
data = typeof options.data == 'function' ? options.data.apply(this, [fireSequence]) : options.data; |
||||
|
||||
if (data !== false) { |
||||
$(options.insertAfter).after("<div id=\"endless_scroll_data\">" + data + "</div>"); |
||||
$("div#endless_scroll_data").hide().fadeIn(); |
||||
$("div#endless_scroll_data").removeAttr("id"); |
||||
|
||||
options.callback.apply(this, [fireSequence]); |
||||
|
||||
if (options.fireDelay !== false || options.fireDelay !== 0) { |
||||
$("body").after("<div id=\"endless_scroll_marker\"></div>"); |
||||
// slight delay for preventing event firing twice
|
||||
$("div#endless_scroll_marker").fadeTo(options.fireDelay, 1, function() { |
||||
$(this).remove(); |
||||
fired = false; |
||||
}); |
||||
} |
||||
else { |
||||
fired = false; |
||||
} |
||||
} |
||||
|
||||
$("div#endless_scroll_loader").remove(); |
||||
} |
||||
}); |
||||
} |
||||
}; |
||||
|
||||
})(jQuery); |
Loading…
Reference in new issue