mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-07 13:26:02 +02:00
feat: ability to nickname remote categories, closes #13677
This commit is contained in:
@@ -117,7 +117,7 @@ function modifyCategory(category, fields) {
|
||||
|
||||
db.parseIntFields(category, intFields, fields);
|
||||
|
||||
const escapeFields = ['name', 'description', 'federatedDescription', 'color', 'bgColor', 'backgroundImage', 'imageClass', 'class', 'link'];
|
||||
const escapeFields = ['name', 'nickname', 'description', 'federatedDescription', 'color', 'bgColor', 'backgroundImage', 'imageClass', 'class', 'link'];
|
||||
escapeFields.forEach((field) => {
|
||||
if (category.hasOwnProperty(field)) {
|
||||
category[field] = validator.escape(String(category[field] || ''));
|
||||
@@ -139,4 +139,8 @@ function modifyCategory(category, fields) {
|
||||
if (category.description) {
|
||||
category.descriptionParsed = category.descriptionParsed || category.description;
|
||||
}
|
||||
|
||||
if (category.nickname) {
|
||||
category.name = category.nickname;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,9 +65,9 @@ categoriesController.getAll = async function (req, res) {
|
||||
}
|
||||
|
||||
const fields = [
|
||||
'cid', 'name', 'icon', 'parentCid', 'disabled', 'link',
|
||||
'cid', 'name', 'nickname', 'icon', 'parentCid', 'disabled', 'link',
|
||||
'order', 'color', 'bgColor', 'backgroundImage', 'imageClass',
|
||||
'subCategoriesPerPage', 'description',
|
||||
'subCategoriesPerPage', 'description', 'descriptionParsed',
|
||||
];
|
||||
let categoriesData = await categories.getCategoriesFields(cids, fields);
|
||||
({ categories: categoriesData } = await plugins.hooks.fire('filter:admin.categories.get', { categories: categoriesData, fields: fields }));
|
||||
@@ -213,6 +213,17 @@ categoriesController.addRemote = async function (req, res) {
|
||||
res.sendStatus(200);
|
||||
};
|
||||
|
||||
categoriesController.renameRemote = async (req, res) => {
|
||||
if (utils.isNumber(req.params.cid)) {
|
||||
return helpers.formatApiResponse(400, res);
|
||||
}
|
||||
|
||||
const { name } = req.body;
|
||||
await categories.setCategoryField(req.params.cid, 'nickname', name);
|
||||
|
||||
res.sendStatus(200);
|
||||
};
|
||||
|
||||
categoriesController.removeRemote = async function (req, res) {
|
||||
if (utils.isNumber(req.params.cid)) {
|
||||
return helpers.formatApiResponse(400, res);
|
||||
|
||||
@@ -82,6 +82,7 @@ function apiRoutes(router, name, middleware, controllers) {
|
||||
router.get(`/api/${name}/analytics`, middleware.ensureLoggedIn, helpers.tryRoute(controllers.admin.dashboard.getAnalytics));
|
||||
router.get(`/api/${name}/advanced/cache/dump`, middleware.ensureLoggedIn, helpers.tryRoute(controllers.admin.cache.dump));
|
||||
router.post(`/api/${name}/manage/categories`, middleware.ensureLoggedIn, helpers.tryRoute(controllers.admin.categories.addRemote));
|
||||
router.post(`/api/${name}/manage/categories/:cid/name`, middleware.ensureLoggedIn, helpers.tryRoute(controllers.admin.categories.renameRemote));
|
||||
router.delete(`/api/${name}/manage/categories/:cid`, middleware.ensureLoggedIn, helpers.tryRoute(controllers.admin.categories.removeRemote));
|
||||
|
||||
const multer = require('multer');
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
<li><a class="dropdown-item rounded-1" href="./categories/{categories.cid}/analytics" role="menuitem">[[admin/manage/categories:analytics]]</a></li>
|
||||
<li><a class="dropdown-item rounded-1" href="{config.relative_path}/admin/manage/privileges/{categories.cid}" role="menuitem">[[admin/manage/categories:privileges]]</a></li>
|
||||
<li><a class="dropdown-item rounded-1" href="./categories/{categories.cid}/federation" role="menuitem">[[admin/manage/categories:federation]]</a></li>
|
||||
{{{ else }}}
|
||||
<li><a class="dropdown-item rounded-1" href="#" data-cid="{./cid}" data-action="rename" role="menuitem">[[admin/manage/categories:rename]]</a></li>
|
||||
{{{ end }}}
|
||||
<li><a href="#" class="set-order dropdown-item rounded-1" data-cid="{categories.cid}" data-order="{categories.order}" role="menuitem">[[admin/manage/categories:set-order]]</a></li>
|
||||
<li class="dropdown-divider"></li>
|
||||
|
||||
Reference in New Issue
Block a user