mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-17 19:21:04 +01:00
bubble replies from subcategories to the parents
This commit is contained in:
@@ -9,6 +9,7 @@ var _ = require('underscore');
|
||||
var db = require('../database');
|
||||
var posts = require('../posts');
|
||||
var topics = require('../topics');
|
||||
var categories = require('../categories');
|
||||
var privileges = require('../privileges');
|
||||
|
||||
module.exports = function(Categories) {
|
||||
@@ -113,12 +114,26 @@ module.exports = function(Categories) {
|
||||
topic.teaserPid = topic.teaserPid || topic.mainPid;
|
||||
}
|
||||
});
|
||||
topics.getTeasers(_topicData, next);
|
||||
var cids = _topicData.map(function(topic) {
|
||||
return topic && topic.cid;
|
||||
}).filter(function(cid, index, array) {
|
||||
return cid && array.indexOf(cid) === index;
|
||||
});
|
||||
|
||||
async.parallel({
|
||||
categoryData: async.apply(categories.getCategoriesFields, cids, ['cid', 'parentCid']),
|
||||
teasers: async.apply(topics.getTeasers, _topicData),
|
||||
}, next);
|
||||
},
|
||||
function (teasers, next) {
|
||||
teasers.forEach(function(teaser, index) {
|
||||
function (results, next) {
|
||||
var parentCids = {};
|
||||
results.categoryData.forEach(function(category) {
|
||||
parentCids[category.cid] = category.parentCid;
|
||||
});
|
||||
results.teasers.forEach(function(teaser, index) {
|
||||
if (teaser) {
|
||||
teaser.cid = topicData[index].cid;
|
||||
teaser.parentCid = parseInt(parentCids[teaser.cid]) || 0;
|
||||
teaser.tid = teaser.uid = teaser.user.uid = undefined;
|
||||
teaser.topic = {
|
||||
slug: topicData[index].slug,
|
||||
@@ -126,8 +141,8 @@ module.exports = function(Categories) {
|
||||
};
|
||||
}
|
||||
});
|
||||
teasers = teasers.filter(Boolean);
|
||||
next(null, teasers);
|
||||
results.teasers = results.teasers.filter(Boolean);
|
||||
next(null, results.teasers);
|
||||
}
|
||||
], callback);
|
||||
}
|
||||
@@ -135,7 +150,8 @@ module.exports = function(Categories) {
|
||||
function assignTopicsToCategories(categories, topics) {
|
||||
categories.forEach(function(category) {
|
||||
category.posts = topics.filter(function(topic) {
|
||||
return topic.cid && parseInt(topic.cid, 10) === parseInt(category.cid, 10);
|
||||
return topic.cid && (parseInt(topic.cid, 10) === parseInt(category.cid, 10) ||
|
||||
parseInt(topic.parentCid, 10) === parseInt(category.cid, 10));
|
||||
}).sort(function(a, b) {
|
||||
return b.pid - a.pid;
|
||||
}).slice(0, parseInt(category.numRecentReplies, 10));
|
||||
|
||||
Reference in New Issue
Block a user