diff --git a/public/openapi/components/schemas/GroupObject.yaml b/public/openapi/components/schemas/GroupObject.yaml index dbef43abc3..c2a34509f6 100644 --- a/public/openapi/components/schemas/GroupObject.yaml +++ b/public/openapi/components/schemas/GroupObject.yaml @@ -14,6 +14,9 @@ GroupFullObject: userTitle: type: number description: Label text for the user badge + userTitleEscaped: + type: number + description: Same as userTitle but with translation tokens escaped, used to display raw userTitle in group management userTitleEnabled: type: number description: @@ -122,6 +125,9 @@ GroupDataObject: userTitle: type: number description: Label text for the user badge + userTitleEscaped: + type: number + description: Same as userTitle but with translation tokens escaped, used to display raw userTitle in group management userTitleEnabled: type: number description: diff --git a/public/openapi/read/admin/manage/groups.yaml b/public/openapi/read/admin/manage/groups.yaml index 7b7ae1db46..cc93b19469 100644 --- a/public/openapi/read/admin/manage/groups.yaml +++ b/public/openapi/read/admin/manage/groups.yaml @@ -30,6 +30,8 @@ get: type: number userTitle: type: string + userTitleEscaped: + type: string icon: type: string labelColor: diff --git a/public/openapi/read/groups.yaml b/public/openapi/read/groups.yaml index a73b29864f..bc5847fbb7 100644 --- a/public/openapi/read/groups.yaml +++ b/public/openapi/read/groups.yaml @@ -26,6 +26,8 @@ get: type: number userTitle: type: string + userTitleEscaped: + type: string icon: type: string labelColor: diff --git a/src/controllers/admin/groups.js b/src/controllers/admin/groups.js index 5a555eace3..a4c2e6a228 100644 --- a/src/controllers/admin/groups.js +++ b/src/controllers/admin/groups.js @@ -10,7 +10,6 @@ const groups = require('../../groups'); const meta = require('../../meta'); const pagination = require('../../pagination'); const events = require('../../events'); -const translator = require('../../translator'); const groupsController = module.exports; @@ -46,7 +45,7 @@ groupsController.get = async function (req, res, next) { return next(); } group.isOwner = true; - group.userTitleEscaped = translator.escape(group.userTitle); + const groupNameData = groupNames.map(function (name) { return { encodedName: encodeURIComponent(name), diff --git a/src/controllers/groups.js b/src/controllers/groups.js index 22aed44811..14076783ca 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -9,7 +9,6 @@ const user = require('../user'); const helpers = require('./helpers'); const pagination = require('../pagination'); const privileges = require('../privileges'); -const translator = require('../translator'); const groupsController = module.exports; @@ -73,7 +72,7 @@ groupsController.details = async function (req, res, next) { return next(); } groupData.isOwner = groupData.isOwner || isAdmin || (isGlobalMod && !groupData.system); - groupData.userTitleEscaped = translator.escape(groupData.userTitle); + res.render('groups/details', { title: '[[pages:group, ' + groupData.displayName + ']]', group: groupData, diff --git a/src/groups/data.js b/src/groups/data.js index 6747fc0078..1f7761340f 100644 --- a/src/groups/data.js +++ b/src/groups/data.js @@ -6,6 +6,7 @@ const nconf = require('nconf'); const db = require('../database'); const plugins = require('../plugins'); const utils = require('../utils'); +const translator = require('../translator'); const intFields = [ 'createtime', 'memberCount', 'hidden', 'system', 'private', @@ -101,5 +102,6 @@ function escapeGroupData(group) { group.displayName = validator.escape(String(group.name)); group.description = validator.escape(String(group.description || '')); group.userTitle = validator.escape(String(group.userTitle || '')); + group.userTitleEscaped = translator.escape(group.userTitle); } }