diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index 417c0f9a01..6181af8357 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -140,7 +140,7 @@ ajaxify = window.ajaxify || {}; if (data) { let status = parseInt(data.status, 10); - if (status === 403 || status === 404 || status === 500 || status === 502 || status === 503) { + if ([400, 403, 404, 500, 502, 504].includes(status)) { if (status === 502 && retry) { retry = false; ajaxifyTimer = undefined; diff --git a/public/src/utils.js b/public/src/utils.js index 6628a8f008..a505398545 100644 --- a/public/src/utils.js +++ b/public/src/utils.js @@ -334,7 +334,7 @@ tag = tag.trim().toLowerCase(); // see https://github.com/NodeBB/NodeBB/issues/4378 tag = tag.replace(/\u202E/gi, ''); - tag = tag.replace(/[,/#!$%^*;:{}=_`<>'"~()?|]/g, ''); + tag = tag.replace(/[,/#!$^*;:{}=_`<>'"~()?|]/g, ''); tag = tag.substr(0, maxLength || 15).trim(); const matches = tag.match(/^[.-]*(.+?)[.-]*$/); if (matches && matches.length > 1) { diff --git a/src/topics/data.js b/src/topics/data.js index 7c1b306674..1260c092e1 100644 --- a/src/topics/data.js +++ b/src/topics/data.js @@ -134,6 +134,7 @@ function modifyTopic(topic, fields) { return { value: tag, valueEscaped: escaped, + valueEncoded: encodeURIComponent(escaped), class: escaped.replace(/\s/g, '-'), }; }); diff --git a/src/topics/tags.js b/src/topics/tags.js index 4153f68785..7d585771d3 100644 --- a/src/topics/tags.js +++ b/src/topics/tags.js @@ -285,6 +285,7 @@ module.exports = function (Topics) { } tags.forEach((tag) => { tag.valueEscaped = validator.escape(String(tag.value)); + tag.valueEncoded = encodeURIComponent(tag.valueEscaped); tag.class = tag.valueEscaped.replace(/\s/g, '-'); }); return tags;