diff --git a/public/src/admin/manage/categories.js b/public/src/admin/manage/categories.js index 8ecf019cd8..3e59b9cdde 100644 --- a/public/src/admin/manage/categories.js +++ b/public/src/admin/manage/categories.js @@ -99,7 +99,7 @@ define('admin/manage/categories', [ } Categories.throwCreateModal = function () { - socket.emit('categories.getSelectCategories', {}, function (err, categories) { + socket.emit('categories.getSelectCategories', { query: utils.params() }, function (err, categories) { if (err) { return app.alertError(err.message); } diff --git a/public/src/admin/manage/category.js b/public/src/admin/manage/category.js index 7263463745..df7a5a5340 100644 --- a/public/src/admin/manage/category.js +++ b/public/src/admin/manage/category.js @@ -114,7 +114,7 @@ define('admin/manage/category', [ }); $('.copy-settings').on('click', function () { - socket.emit('categories.getSelectCategories', {}, function (err, allCategories) { + socket.emit('categories.getSelectCategories', { query: utils.params() }, function (err, allCategories) { if (err) { return app.alertError(err.message); } @@ -261,7 +261,7 @@ define('admin/manage/category', [ } Category.launchParentSelector = function () { - socket.emit('categories.getSelectCategories', {}, function (err, allCategories) { + socket.emit('categories.getSelectCategories', { query: utils.params() }, function (err, allCategories) { if (err) { return app.alertError(err.message); } diff --git a/public/src/client/topic/move.js b/public/src/client/topic/move.js index 03c40b56d3..66634f45f2 100644 --- a/public/src/client/topic/move.js +++ b/public/src/client/topic/move.js @@ -12,7 +12,7 @@ define('forum/topic/move', ['categorySelector', 'alerts'], function (categorySel Move.onComplete = onComplete; Move.moveAll = !tids; - socket.emit('categories.getMoveCategories', onCategoriesLoaded); + socket.emit('categories.getMoveCategories', { query: utils.params() }, onCategoriesLoaded); }; function onCategoriesLoaded(err, categories) { diff --git a/src/socket.io/categories.js b/src/socket.io/categories.js index b7aabb8174..905565cb00 100644 --- a/src/socket.io/categories.js +++ b/src/socket.io/categories.js @@ -6,6 +6,7 @@ const user = require('../user'); const topics = require('../topics'); const api = require('../api'); const sockets = require('.'); +const plugins = require('../plugins'); const SocketCategories = module.exports; @@ -94,12 +95,17 @@ SocketCategories.getMoveCategories = async function (socket, data) { return await SocketCategories.getSelectCategories(socket, data); }; -SocketCategories.getSelectCategories = async function (socket) { +SocketCategories.getSelectCategories = async function (socket, data) { const [isAdmin, categoriesData] = await Promise.all([ user.isAdministrator(socket.uid), categories.buildForSelect(socket.uid, 'find', ['disabled', 'link']), ]); - return categoriesData.filter(category => category && (!category.disabled || isAdmin) && !category.link); + const result = await plugins.hooks.fire('filter:categories.getSelectCategories', { + categories: categoriesData, + isAdmin: isAdmin, + query: data.query || {}, + }); + return result.categories.filter(category => category && (!category.disabled || isAdmin) && !category.link); }; SocketCategories.setWatchState = async function (socket, data) {