mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: add more properties from /category to /world
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
const nconf = require('nconf');
|
||||||
|
|
||||||
const db = require('../../database');
|
const db = require('../../database');
|
||||||
const user = require('../../user');
|
const user = require('../../user');
|
||||||
const topics = require('../../topics');
|
const topics = require('../../topics');
|
||||||
@@ -7,6 +9,11 @@ const topics = require('../../topics');
|
|||||||
const pagination = require('../../pagination');
|
const pagination = require('../../pagination');
|
||||||
const helpers = require('../helpers');
|
const helpers = require('../helpers');
|
||||||
|
|
||||||
|
const categories = require('../../categories');
|
||||||
|
const privileges = require('../../privileges');
|
||||||
|
const translator = require('../../translator');
|
||||||
|
const meta = require('../../meta');
|
||||||
|
|
||||||
const controller = module.exports;
|
const controller = module.exports;
|
||||||
|
|
||||||
controller.list = async function (req, res) {
|
controller.list = async function (req, res) {
|
||||||
@@ -29,12 +36,29 @@ controller.list = async function (req, res) {
|
|||||||
weights: sets.map((s, index) => (index ? 0 : 1)),
|
weights: sets.map((s, index) => (index ? 0 : 1)),
|
||||||
});
|
});
|
||||||
|
|
||||||
const data = {};
|
const [categoryFields, userPrivileges, rssToken] = await Promise.all([
|
||||||
|
categories.getCategoryFields(-1, ['name', 'description', 'icon', 'imageClass', 'color', 'bgColor']),
|
||||||
|
privileges.categories.get(-1, req.uid),
|
||||||
|
user.auth.getFeedToken(req.uid),
|
||||||
|
]);
|
||||||
|
const data = categoryFields;
|
||||||
|
data.cid = -1;
|
||||||
data.topicCount = await db.sortedSetIntersectCard(sets);
|
data.topicCount = await db.sortedSetIntersectCard(sets);
|
||||||
data.topics = await topics.getTopicsByTids(tids, { uid: req.uid });
|
data.topics = await topics.getTopicsByTids(tids, { uid: req.uid });
|
||||||
topics.calculateTopicIndices(data.topics, start);
|
topics.calculateTopicIndices(data.topics, start);
|
||||||
|
|
||||||
|
data.title = translator.escape(categoryFields.name);
|
||||||
|
data.privileges = userPrivileges;
|
||||||
|
|
||||||
data.breadcrumbs = helpers.buildBreadcrumbs([{ text: `[[pages:world]]` }]);
|
data.breadcrumbs = helpers.buildBreadcrumbs([{ text: `[[pages:world]]` }]);
|
||||||
|
data['feeds:disableRSS'] = meta.config['feeds:disableRSS'] || 0;
|
||||||
|
data['reputation:disabled'] = meta.config['reputation:disabled'];
|
||||||
|
if (!meta.config['feeds:disableRSS']) {
|
||||||
|
data.rssFeedUrl = `${nconf.get('url')}/category/${data.cid}.rss`;
|
||||||
|
if (req.loggedIn) {
|
||||||
|
data.rssFeedUrl += `?uid=${req.uid}&token=${rssToken}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const pageCount = Math.max(1, Math.ceil(data.topicCount / topicsPerPage));
|
const pageCount = Math.max(1, Math.ceil(data.topicCount / topicsPerPage));
|
||||||
data.pagination = pagination.create(page, pageCount, req.query);
|
data.pagination = pagination.create(page, pageCount, req.query);
|
||||||
|
|||||||
Reference in New Issue
Block a user