mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-14 08:30:59 +01:00
lots of cleanup, moved pagination to requirejs module
This commit is contained in:
@@ -52,7 +52,8 @@ var db = require('./database.js'),
|
||||
}
|
||||
|
||||
function getTopicIds(next) {
|
||||
Categories.getTopicIds(category_id, 0, 19, next);
|
||||
var topicsPerPage = meta.config.topicsPerPage || 20;
|
||||
Categories.getTopicIds(category_id, 0, topicsPerPage - 1, next);
|
||||
}
|
||||
|
||||
function getActiveUsers(next) {
|
||||
@@ -65,10 +66,15 @@ var db = require('./database.js'),
|
||||
});
|
||||
}
|
||||
|
||||
async.parallel([getTopicIds, getActiveUsers, getSidebars], function(err, results) {
|
||||
function getPages(next) {
|
||||
Categories.getPages(category_id, next);
|
||||
}
|
||||
|
||||
async.parallel([getTopicIds, getActiveUsers, getSidebars, getPages], function(err, results) {
|
||||
var tids = results[0],
|
||||
active_users = results[1],
|
||||
sidebars = results[2];
|
||||
sidebars = results[2],
|
||||
pages = results[3];
|
||||
|
||||
var category = {
|
||||
'category_name': categoryData.name,
|
||||
@@ -82,6 +88,8 @@ var db = require('./database.js'),
|
||||
'category_id': category_id,
|
||||
'active_users': [],
|
||||
'topics': [],
|
||||
'pages': pages,
|
||||
'pageCount': pages.length,
|
||||
'disableSocialButtons': meta.config.disableSocialButtons !== undefined ? parseInt(meta.config.disableSocialButtons, 10) !== 0 : false,
|
||||
'sidebars': sidebars
|
||||
};
|
||||
@@ -137,6 +145,31 @@ var db = require('./database.js'),
|
||||
db.getSortedSetRevRange('categories:' + cid + ':tid', start, stop, callback);
|
||||
};
|
||||
|
||||
Categories.getPages = function(cid, callback) {
|
||||
Categories.getPageCount(cid, function(err, pageCount) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
var pages = [];
|
||||
for(var i=1; i<=pageCount; ++i) {
|
||||
pages.push({pageNumber: i});
|
||||
}
|
||||
callback(null, pages);
|
||||
});
|
||||
};
|
||||
|
||||
Categories.getPageCount = function(cid, callback) {
|
||||
db.sortedSetCard('categories:' + cid + ':tid', function(err, topicCount) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
var topicsPerPage = parseInt(meta.config.topicsPerPage, 10);
|
||||
topicsPerPage = topicsPerPage ? topicsPerPage : 20;
|
||||
|
||||
callback(null, Math.ceil(parseInt(topicCount, 10) / topicsPerPage));
|
||||
});
|
||||
};
|
||||
|
||||
Categories.getAllCategories = function(current_user, callback) {
|
||||
db.getListRange('categories:cid', 0, -1, function(err, cids) {
|
||||
|
||||
@@ -200,7 +200,7 @@ var path = require('path'),
|
||||
return next(err);
|
||||
}
|
||||
|
||||
// Add privilege data to template data
|
||||
data.currentPage = 1;
|
||||
data.privileges = privileges;
|
||||
|
||||
if (data && parseInt(data.disabled, 10) === 0) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
var categories = require('../categories'),
|
||||
meta = require('./../meta'),
|
||||
|
||||
SocketCategories = {};
|
||||
|
||||
@@ -15,8 +16,10 @@ SocketCategories.loadMore = function(socket, data, callback) {
|
||||
return callback(new Error('invalid data'));
|
||||
}
|
||||
|
||||
var topicsPerPage = parseInt(meta.config.topicsPerPage, 10) || 20;
|
||||
|
||||
var start = data.after,
|
||||
end = start + 9;
|
||||
end = start + topicsPerPage - 1;
|
||||
|
||||
categories.getCategoryTopics(data.cid, start, end, socket.uid, function(err, topics) {
|
||||
callback(err, {
|
||||
@@ -25,4 +28,24 @@ SocketCategories.loadMore = function(socket, data, callback) {
|
||||
});
|
||||
};
|
||||
|
||||
SocketCategories.loadPage = function(socket, data, callback) {
|
||||
if(!data) {
|
||||
return callback(new Error('invalid data'));
|
||||
}
|
||||
|
||||
var topicsPerPage = parseInt(meta.config.topicsPerPage, 10) || 20;
|
||||
|
||||
var start = (data.page - 1) * topicsPerPage,
|
||||
end = start + topicsPerPage - 1;
|
||||
|
||||
console.log('start to end' ,start, end);
|
||||
|
||||
categories.getCategoryTopics(data.cid, start, end, socket.uid, function(err, topics) {
|
||||
console.log('getting topics', topics.length);
|
||||
callback(err, {
|
||||
topics: topics
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = SocketCategories;
|
||||
@@ -392,6 +392,19 @@ var async = require('async'),
|
||||
});
|
||||
}
|
||||
|
||||
Topics.getPages = function(tid, callback) {
|
||||
Topics.getPageCount(tid, function(err, pageCount) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
var pages = [];
|
||||
for(var i=1; i<=pageCount; ++i) {
|
||||
pages.push({pageNumber: i});
|
||||
}
|
||||
callback(null, pages);
|
||||
});
|
||||
}
|
||||
|
||||
Topics.getPageCount = function(tid, callback) {
|
||||
db.sortedSetCard('tid:' + tid + ':posts', function(err, postCount) {
|
||||
if(err) {
|
||||
@@ -782,16 +795,7 @@ var async = require('async'),
|
||||
}
|
||||
|
||||
function getPages(next) {
|
||||
Topics.getPageCount(tid, function(err, pageCount) {
|
||||
if(err) {
|
||||
return next(err);
|
||||
}
|
||||
var pages = [];
|
||||
for(var i=1; i<=pageCount; ++i) {
|
||||
pages.push({pageNumber: i});
|
||||
}
|
||||
next(null, pages);
|
||||
});
|
||||
Topics.getPages(tid, next);
|
||||
}
|
||||
|
||||
async.parallel([getTopicData, getTopicPosts, getPrivileges, getCategoryData, getPages], function(err, results) {
|
||||
|
||||
Reference in New Issue
Block a user