mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-07 14:35:47 +01:00
category widget changes
This commit is contained in:
@@ -38,12 +38,12 @@ define(function() {
|
|||||||
socket.emit('categories.get', onCategoriesLoaded);
|
socket.emit('categories.get', onCategoriesLoaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onCategoriesLoaded(err, data) {
|
function onCategoriesLoaded(err, categories) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return app.alertError(err.message);
|
return app.alertError(err.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderCategories(data.categories);
|
renderCategories(categories);
|
||||||
|
|
||||||
modal.find('.category-list').on('click', 'li[data-cid]', function(e) {
|
modal.find('.category-list').on('click', 'li[data-cid]', function(e) {
|
||||||
selectCategory($(this));
|
selectCategory($(this));
|
||||||
|
|||||||
@@ -122,8 +122,8 @@ define(['forum/recent', 'topicSelect', 'forum/infinitescroll'], function(recent,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onCategoriesLoaded(err, data) {
|
function onCategoriesLoaded(err, categories) {
|
||||||
createCategoryLinks(data.categories);
|
createCategoryLinks(categories);
|
||||||
}
|
}
|
||||||
|
|
||||||
function createCategoryLinks(categories) {
|
function createCategoryLinks(categories) {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ var db = require('./database'),
|
|||||||
meta = require('./meta'),
|
meta = require('./meta'),
|
||||||
emitter = require('./emitter'),
|
emitter = require('./emitter'),
|
||||||
validator = require('validator'),
|
validator = require('validator'),
|
||||||
|
privileges = require('./privileges'),
|
||||||
|
|
||||||
async = require('async'),
|
async = require('async'),
|
||||||
winston = require('winston'),
|
winston = require('winston'),
|
||||||
@@ -175,7 +176,7 @@ var db = require('./database'),
|
|||||||
db.sortedSetCard('categories:recent_posts:cid:' + cid, callback);
|
db.sortedSetCard('categories:recent_posts:cid:' + cid, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Categories.getAllCategories = function(uid, callback) {
|
Categories.getAllCategories = function(callback) {
|
||||||
db.getSortedSetRange('categories:cid', 0, -1, function(err, cids) {
|
db.getSortedSetRange('categories:cid', 0, -1, function(err, cids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
@@ -185,7 +186,35 @@ var db = require('./database'),
|
|||||||
return callback(null, {categories : []});
|
return callback(null, {categories : []});
|
||||||
}
|
}
|
||||||
|
|
||||||
Categories.getCategories(cids, uid, callback);
|
Categories.getCategoriesData(cids, callback);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
Categories.getVisibleCategories = function(uid, callback) {
|
||||||
|
db.getSortedSetRange('categories:cid', 0, -1, function(err, cids) {
|
||||||
|
if (err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Array.isArray(cids) || !cids.length) {
|
||||||
|
return callback(null, {categories : []});
|
||||||
|
}
|
||||||
|
|
||||||
|
Categories.getCategories(cids, uid, function(err, categories) {
|
||||||
|
if (err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
async.filter(categories, function (category, next) {
|
||||||
|
if (category.disabled) {
|
||||||
|
return next(false);
|
||||||
|
}
|
||||||
|
privileges.categories.can('find', category.cid, uid, function(err, findable) {
|
||||||
|
next(!err && findable);
|
||||||
|
});
|
||||||
|
}, function(visibleCategories) {
|
||||||
|
callback(null, visibleCategories);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -312,7 +341,7 @@ var db = require('./database'),
|
|||||||
categories[i]['unread-class'] = (parseInt(categories[i].topic_count, 10) === 0 || (hasRead[i] && uid !== 0)) ? '' : 'unread';
|
categories[i]['unread-class'] = (parseInt(categories[i].topic_count, 10) === 0 || (hasRead[i] && uid !== 0)) ? '' : 'unread';
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(null, {categories: categories});
|
callback(null, categories);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -51,12 +51,12 @@ adminController.categories.disabled = function(req, res, next) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function filterAndRenderCategories(req, res, next, active) {
|
function filterAndRenderCategories(req, res, next, active) {
|
||||||
categories.getAllCategories(0, function (err, data) {
|
categories.getAllCategories(function (err, categoryData) {
|
||||||
data.categories = data.categories.filter(function (category) {
|
categoryData = categoryData.filter(function (category) {
|
||||||
return active ? !category.disabled : category.disabled;
|
return active ? !category.disabled : category.disabled;
|
||||||
});
|
});
|
||||||
|
|
||||||
res.render('admin/categories', data);
|
res.render('admin/categories', {categories: categoryData});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,15 +62,11 @@ Controllers.home = function(req, res, next) {
|
|||||||
},
|
},
|
||||||
categories: function (next) {
|
categories: function (next) {
|
||||||
var uid = req.user ? req.user.uid : 0;
|
var uid = req.user ? req.user.uid : 0;
|
||||||
categories.getAllCategories(uid, function (err, data) {
|
categories.getVisibleCategories(uid, function (err, categoryData) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
data.categories = data.categories.filter(function (category) {
|
|
||||||
return !category.disabled;
|
|
||||||
});
|
|
||||||
|
|
||||||
function getRecentReplies(category, callback) {
|
function getRecentReplies(category, callback) {
|
||||||
categories.getRecentReplies(category.cid, uid, parseInt(category.numRecentReplies, 10), function (err, posts) {
|
categories.getRecentReplies(category.cid, uid, parseInt(category.numRecentReplies, 10), function (err, posts) {
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -81,16 +77,8 @@ Controllers.home = function(req, res, next) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async.filter(data.categories, function (category, next) {
|
async.each(categoryData, getRecentReplies, function (err) {
|
||||||
privileges.categories.can('find', category.cid, uid, function(err, findable) {
|
next(err, categoryData);
|
||||||
next(!err && findable);
|
|
||||||
});
|
|
||||||
}, function(visibleCategories) {
|
|
||||||
data.categories = visibleCategories;
|
|
||||||
|
|
||||||
async.each(data.categories, getRecentReplies, function (err) {
|
|
||||||
next(err, data.categories);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -364,8 +364,8 @@ function createAdmin(callback) {
|
|||||||
function createCategories(next) {
|
function createCategories(next) {
|
||||||
var Categories = require('./categories');
|
var Categories = require('./categories');
|
||||||
|
|
||||||
Categories.getAllCategories(0, function (err, data) {
|
Categories.getAllCategories(function (err, categoryData) {
|
||||||
if (data.categories.length === 0) {
|
if (categoryData.length === 0) {
|
||||||
winston.warn('No categories found, populating instance with default categories');
|
winston.warn('No categories found, populating instance with default categories');
|
||||||
|
|
||||||
fs.readFile(path.join(__dirname, '../', 'install/data/categories.json'), function (err, default_categories) {
|
fs.readFile(path.join(__dirname, '../', 'install/data/categories.json'), function (err, default_categories) {
|
||||||
@@ -382,7 +382,7 @@ function createCategories(next) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
winston.info('Categories OK. Found ' + data.categories.length + ' categories.');
|
winston.info('Categories OK. Found ' + categoryData.length + ' categories.');
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,23 +29,21 @@ var path = require('path'),
|
|||||||
async.parallel([
|
async.parallel([
|
||||||
function(next) {
|
function(next) {
|
||||||
var categoryUrls = [];
|
var categoryUrls = [];
|
||||||
categories.getAllCategories(0, function(err, data) {
|
categories.getVisibleCategories(0, function(err, data) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
data.categories.forEach(function(category) {
|
data.categories.forEach(function(category) {
|
||||||
if (!category.disabled) {
|
categoryUrls.push({
|
||||||
categoryUrls.push({
|
url: path.join('/category', category.slug),
|
||||||
url: path.join('/category', category.slug),
|
changefreq: 'weekly',
|
||||||
changefreq: 'weekly',
|
priority: '0.4'
|
||||||
priority: '0.4'
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
next(null, categoryUrls);
|
next(null, categoryUrls);
|
||||||
}, 0);
|
});
|
||||||
},
|
},
|
||||||
function(next) {
|
function(next) {
|
||||||
var topicUrls = [];
|
var topicUrls = [];
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ SocketCategories.getRecentReplies = function(socket, cid, callback) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SocketCategories.get = function(socket, data, callback) {
|
SocketCategories.get = function(socket, data, callback) {
|
||||||
categories.getAllCategories(0, callback);
|
categories.getAllCategories(callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketCategories.loadMore = function(socket, data, callback) {
|
SocketCategories.loadMore = function(socket, data, callback) {
|
||||||
|
|||||||
Reference in New Issue
Block a user