script.js
2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
$(function(){
function processElements($elem){
$elem.find('.avatar').each(function(){
var $this = $(this);
$this.avatar($this.data('user'), 32);
});
$elem.find('.tooltip').tipsy({gravity:'s', fade:true});
}
var $container = $('#container');
processElements($container);
$container.imagesLoaded(function(){
$container.find('.boxcontainer').masonry({
itemSelector: '.box',
isAnimated: true
});
});
$container.infinitescroll({
navSelector : '#page-nav', // selector for the paged navigation
nextSelector : '#page-nav a', // selector for the NEXT link (to page 2)
itemSelector : '.group', // selector for all items you'll retrieve
pixelsFromNavToBottom: 150,
extraScrollPx: 50,
prefill: true,
path : function(page){
return OC.filePath('activity', 'ajax', 'fetch.php') + '?page=' + page;
},
loading: {
finishedMsg: t('activity', 'No more activities to load.'),
msgText: t('activity', 'Loading older activities'),
img: 'http://i.imgur.com/6RMhx.gif'
}
},
// trigger Masonry as a callback
function( newGroups ) {
// hide new items while they are loading
var $newGroups = $( newGroups );
var $newBoxes;
// check whether first new group has the same date
// as the last group we had before
// If that's the case, we'll merge its boxes into the last group's
// container.
var $firstNewGroup = $newGroups.first();
var $lastGroup = $firstNewGroup.prevAll('.group:first');
var $appendedBoxes;
if ( $lastGroup.data('date') === $firstNewGroup.data('date') ){
// append the boxes
$appendedBoxes = $firstNewGroup.find('.box').addClass('loading');
var $lastBoxContainer = $lastGroup.find('.boxcontainer');
$lastBoxContainer.append($appendedBoxes);
processElements($appendedBoxes);
$lastBoxContainer.masonry('appended', $appendedBoxes, true);
$appendedBoxes.imagesLoaded(function(){
// append the boxes into the last group
$appendedBoxes.toggleClass('loading loaded');
});
// remove from list to process
$newGroups.slice(1);
// discard the ajax-returned header
$firstNewGroup.remove();
}
$newBoxes = $newGroups.find('.box').addClass('loading');
processElements($newBoxes);
$newGroups.find('.boxcontainer').masonry();
// ensure that images load before adding to masonry layout
$newBoxes.imagesLoaded(function(){
// show elems now they're ready
$newBoxes.toggleClass('loading loaded');
});
}
);
});