aboutsummaryrefslogtreecommitdiff
path: root/mod/infinite_scroll/views/default/js/infinite_scroll/new_items.php
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2014-03-15 15:07:03 -0300
committerSilvio Rhatto <rhatto@riseup.net>2014-03-15 15:07:03 -0300
commit6800aad47fb4208289171b1125eba69ccf93c08c (patch)
treeb4edbb7d60a0ab81be446980294f65c183044326 /mod/infinite_scroll/views/default/js/infinite_scroll/new_items.php
parent82ca8e9f8839b98a5770a90027adcecbe603d06f (diff)
parentfe7bc5b2fa63f4b8562a961cf3910db1f3b8f7a1 (diff)
downloadelgg-6800aad47fb4208289171b1125eba69ccf93c08c.tar.gz
elgg-6800aad47fb4208289171b1125eba69ccf93c08c.tar.bz2
Merge commit 'fe7bc5b2fa63f4b8562a961cf3910db1f3b8f7a1' as 'mod/infinite_scroll'
Diffstat (limited to 'mod/infinite_scroll/views/default/js/infinite_scroll/new_items.php')
-rw-r--r--mod/infinite_scroll/views/default/js/infinite_scroll/new_items.php62
1 files changed, 62 insertions, 0 deletions
diff --git a/mod/infinite_scroll/views/default/js/infinite_scroll/new_items.php b/mod/infinite_scroll/views/default/js/infinite_scroll/new_items.php
new file mode 100644
index 000000000..f686b8c3f
--- /dev/null
+++ b/mod/infinite_scroll/views/default/js/infinite_scroll/new_items.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Load new items of a list through ajax when a button clicked
+ *
+ * @package ElggInfiniteScroll
+ */
+?>
+
+elgg.provide('elgg.infinite_scroll.new_items');
+
+elgg.infinite_scroll.new_items.prepend = function(data) {
+ var $list = $('.elgg-pagination').siblings('.elgg-list, .elgg-gallery').filter(':not(.elgg-module *)');
+ if (data) {
+ var n = $list.children(":hidden").length + $(data).children().length;
+ $list.prepend($(data).children().hide());
+ $('.elgg-infinite-scroll-top').find('.elgg-button').text(
+ elgg.echo('infinite_scroll:new_items', [n])
+ ).end().show();
+ }
+ $list.trigger('prepend', data);
+};
+
+elgg.infinite_scroll.new_items.check = function() {
+ // Select all paginated .elgg-list or .elgg-gallery witch aren't into widgets
+ var $list = $('.elgg-pagination').siblings('.elgg-list, .elgg-gallery').filter(':not(.elgg-module *)');
+
+ elgg.infinite_scroll.load($list, 0, function(data){
+ elgg.infinite_scroll.new_items.prepend(data);
+ setTimeout(elgg.infinite_scroll.new_items.check, 30000);
+ });
+};
+
+elgg.infinite_scroll.new_items.init = function() {
+
+ // Select all paginated .elgg-list or .elgg-gallery witch aren't into widgets
+ $list = $('.elgg-pagination').siblings('.elgg-list, .elgg-gallery').filter(':not(.elgg-module *)')
+
+ // Add new items button at the begining of the list
+ .before(
+ $('<div class="elgg-infinite-scroll-top"></div>')
+ .append(
+ $('<?php
+ echo elgg_view('output/url', array(
+ 'text' => '',
+ 'href' => '',
+ 'class' => 'elgg-button',
+ ));
+ ?>').click(function(){
+ $list.children().slideDown({
+ duration: 700,
+ easing: 'easeInCubic',
+ });
+ $(this).parent().hide();
+ return false;
+ })
+ ).hide()
+ );
+ // Check for new items each 30s.
+ setTimeout(elgg.infinite_scroll.new_items.check, 0);
+};
+
+elgg.register_hook_handler('init', 'system', elgg.infinite_scroll.new_items.init);