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