mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 09:06:15 +01:00
fix: #10052, dont use spaces in tag class name
This commit is contained in:
@@ -129,9 +129,13 @@ function modifyTopic(topic, fields) {
|
|||||||
|
|
||||||
if (fields.includes('tags') || !fields.length) {
|
if (fields.includes('tags') || !fields.length) {
|
||||||
const tags = String(topic.tags || '');
|
const tags = String(topic.tags || '');
|
||||||
topic.tags = tags.split(',').filter(Boolean).map(tag => ({
|
topic.tags = tags.split(',').filter(Boolean).map((tag) => {
|
||||||
|
const escaped = validator.escape(String(tag));
|
||||||
|
return {
|
||||||
value: tag,
|
value: tag,
|
||||||
valueEscaped: validator.escape(String(tag)),
|
valueEscaped: escaped,
|
||||||
}));
|
class: escaped.replace(/\s/g, '-'),
|
||||||
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -285,6 +285,7 @@ module.exports = function (Topics) {
|
|||||||
}
|
}
|
||||||
tags.forEach((tag) => {
|
tags.forEach((tag) => {
|
||||||
tag.valueEscaped = validator.escape(String(tag.value));
|
tag.valueEscaped = validator.escape(String(tag.value));
|
||||||
|
tag.class = tag.valueEscaped.replace(/\s/g, '-');
|
||||||
});
|
});
|
||||||
return tags;
|
return tags;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1715,7 +1715,7 @@ describe('Topic\'s', () => {
|
|||||||
before((done) => {
|
before((done) => {
|
||||||
async.series([
|
async.series([
|
||||||
function (next) {
|
function (next) {
|
||||||
topics.post({ uid: adminUid, tags: ['php', 'nosql', 'psql', 'nodebb'], title: 'topic title 1', content: 'topic 1 content', cid: topic.categoryId }, next);
|
topics.post({ uid: adminUid, tags: ['php', 'nosql', 'psql', 'nodebb', 'node icon'], title: 'topic title 1', content: 'topic 1 content', cid: topic.categoryId }, next);
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
topics.post({ uid: adminUid, tags: ['javascript', 'mysql', 'python', 'nodejs'], title: 'topic title 2', content: 'topic 2 content', cid: topic.categoryId }, next);
|
topics.post({ uid: adminUid, tags: ['javascript', 'mysql', 'python', 'nodejs'], title: 'topic title 2', content: 'topic 2 content', cid: topic.categoryId }, next);
|
||||||
@@ -1775,12 +1775,13 @@ describe('Topic\'s', () => {
|
|||||||
it('should search and load tags', (done) => {
|
it('should search and load tags', (done) => {
|
||||||
socketTopics.searchAndLoadTags({ uid: adminUid }, { query: 'no' }, (err, data) => {
|
socketTopics.searchAndLoadTags({ uid: adminUid }, { query: 'no' }, (err, data) => {
|
||||||
assert.ifError(err);
|
assert.ifError(err);
|
||||||
assert.equal(data.matchCount, 3);
|
assert.equal(data.matchCount, 4);
|
||||||
assert.equal(data.pageCount, 1);
|
assert.equal(data.pageCount, 1);
|
||||||
const tagData = [
|
const tagData = [
|
||||||
{ value: 'nodebb', valueEscaped: 'nodebb', score: 3 },
|
{ value: 'nodebb', valueEscaped: 'nodebb', score: 3, class: 'nodebb' },
|
||||||
{ value: 'nodejs', valueEscaped: 'nodejs', score: 1 },
|
{ value: 'node icon', valueEscaped: 'node icon', score: 1, class: 'node-icon' },
|
||||||
{ value: 'nosql', valueEscaped: 'nosql', score: 1 },
|
{ value: 'nodejs', valueEscaped: 'nodejs', score: 1, class: 'nodejs' },
|
||||||
|
{ value: 'nosql', valueEscaped: 'nosql', score: 1, class: 'nosql' },
|
||||||
];
|
];
|
||||||
assert.deepEqual(data.tags, tagData);
|
assert.deepEqual(data.tags, tagData);
|
||||||
|
|
||||||
@@ -2020,17 +2021,17 @@ describe('Topic\'s', () => {
|
|||||||
await topics.post({ uid: adminUid, tags: ['cattag1'], title: title, content: 'topic 1 content', cid: cid });
|
await topics.post({ uid: adminUid, tags: ['cattag1'], title: title, content: 'topic 1 content', cid: cid });
|
||||||
let result = await topics.getCategoryTagsData(cid, 0, -1);
|
let result = await topics.getCategoryTagsData(cid, 0, -1);
|
||||||
assert.deepStrictEqual(result, [
|
assert.deepStrictEqual(result, [
|
||||||
{ value: 'cattag1', score: 3, valueEscaped: 'cattag1' },
|
{ value: 'cattag1', score: 3, valueEscaped: 'cattag1', class: 'cattag1' },
|
||||||
{ value: 'cattag2', score: 2, valueEscaped: 'cattag2' },
|
{ value: 'cattag2', score: 2, valueEscaped: 'cattag2', class: 'cattag2' },
|
||||||
{ value: 'cattag3', score: 1, valueEscaped: 'cattag3' },
|
{ value: 'cattag3', score: 1, valueEscaped: 'cattag3', class: 'cattag3' },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// after purging values should update properly
|
// after purging values should update properly
|
||||||
await topics.purge(postResult.topicData.tid, adminUid);
|
await topics.purge(postResult.topicData.tid, adminUid);
|
||||||
result = await topics.getCategoryTagsData(cid, 0, -1);
|
result = await topics.getCategoryTagsData(cid, 0, -1);
|
||||||
assert.deepStrictEqual(result, [
|
assert.deepStrictEqual(result, [
|
||||||
{ value: 'cattag1', score: 2, valueEscaped: 'cattag1' },
|
{ value: 'cattag1', score: 2, valueEscaped: 'cattag1', class: 'cattag1' },
|
||||||
{ value: 'cattag2', score: 1, valueEscaped: 'cattag2' },
|
{ value: 'cattag2', score: 1, valueEscaped: 'cattag2', class: 'cattag2' },
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2049,11 +2050,11 @@ describe('Topic\'s', () => {
|
|||||||
let result1 = await topics.getCategoryTagsData(cid1, 0, -1);
|
let result1 = await topics.getCategoryTagsData(cid1, 0, -1);
|
||||||
let result2 = await topics.getCategoryTagsData(cid2, 0, -1);
|
let result2 = await topics.getCategoryTagsData(cid2, 0, -1);
|
||||||
assert.deepStrictEqual(result1, [
|
assert.deepStrictEqual(result1, [
|
||||||
{ value: 'movedtag1', score: 2, valueEscaped: 'movedtag1' },
|
{ value: 'movedtag1', score: 2, valueEscaped: 'movedtag1', class: 'movedtag1' },
|
||||||
{ value: 'movedtag2', score: 1, valueEscaped: 'movedtag2' },
|
{ value: 'movedtag2', score: 1, valueEscaped: 'movedtag2', class: 'movedtag2' },
|
||||||
]);
|
]);
|
||||||
assert.deepStrictEqual(result2, [
|
assert.deepStrictEqual(result2, [
|
||||||
{ value: 'movedtag2', score: 1, valueEscaped: 'movedtag2' },
|
{ value: 'movedtag2', score: 1, valueEscaped: 'movedtag2', class: 'movedtag2' },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// after moving values should update properly
|
// after moving values should update properly
|
||||||
@@ -2062,11 +2063,11 @@ describe('Topic\'s', () => {
|
|||||||
result1 = await topics.getCategoryTagsData(cid1, 0, -1);
|
result1 = await topics.getCategoryTagsData(cid1, 0, -1);
|
||||||
result2 = await topics.getCategoryTagsData(cid2, 0, -1);
|
result2 = await topics.getCategoryTagsData(cid2, 0, -1);
|
||||||
assert.deepStrictEqual(result1, [
|
assert.deepStrictEqual(result1, [
|
||||||
{ value: 'movedtag1', score: 1, valueEscaped: 'movedtag1' },
|
{ value: 'movedtag1', score: 1, valueEscaped: 'movedtag1', class: 'movedtag1' },
|
||||||
]);
|
]);
|
||||||
assert.deepStrictEqual(result2, [
|
assert.deepStrictEqual(result2, [
|
||||||
{ value: 'movedtag2', score: 2, valueEscaped: 'movedtag2' },
|
{ value: 'movedtag2', score: 2, valueEscaped: 'movedtag2', class: 'movedtag2' },
|
||||||
{ value: 'movedtag1', score: 1, valueEscaped: 'movedtag1' },
|
{ value: 'movedtag1', score: 1, valueEscaped: 'movedtag1', class: 'movedtag1' },
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user