mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-03 11:01:20 +01:00
feat: add data-field values from tpl into search dict
closes #9709 remove quotes from strings so show help actually finds show "help" tab
This commit is contained in:
@@ -39,7 +39,7 @@ function sanitize(html) {
|
|||||||
return sanitizeHTML(html, {
|
return sanitizeHTML(html, {
|
||||||
allowedTags: [],
|
allowedTags: [],
|
||||||
allowedAttributes: [],
|
allowedAttributes: [],
|
||||||
});
|
}).replace(/"/g, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
function simplify(translations) {
|
function simplify(translations) {
|
||||||
@@ -89,15 +89,33 @@ async function initDict(language) {
|
|||||||
return await Promise.all(namespaces.map(ns => buildNamespace(language, ns)));
|
return await Promise.all(namespaces.map(ns => buildNamespace(language, ns)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getTemplateDataFields(namespace) {
|
||||||
|
if (!namespace.startsWith('admin/settings')) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const template = await fs.promises.readFile(
|
||||||
|
path.resolve(nconf.get('views_dir'), `${namespace}.tpl`), 'utf8'
|
||||||
|
);
|
||||||
|
const fields = [...template.matchAll(/data-field="([^"]+)"/g)].map(m => m[1]);
|
||||||
|
return fields.filter(f => !f.startsWith('{')); // dont include stuff like {./name}
|
||||||
|
} catch (err) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function buildNamespace(language, namespace) {
|
async function buildNamespace(language, namespace) {
|
||||||
const translator = Translator.create(language);
|
const translator = Translator.create(language);
|
||||||
try {
|
try {
|
||||||
const translations = await translator.getTranslation(namespace);
|
const [translations, dataFields] = await Promise.all([
|
||||||
|
translator.getTranslation(namespace),
|
||||||
|
getTemplateDataFields(namespace),
|
||||||
|
]);
|
||||||
if (!translations || !Object.keys(translations).length) {
|
if (!translations || !Object.keys(translations).length) {
|
||||||
return await fallback(namespace);
|
return await fallback(namespace);
|
||||||
}
|
}
|
||||||
// join all translations into one string separated by newlines
|
// join all translations into one string separated by newlines
|
||||||
let str = Object.keys(translations).map(key => translations[key]).join('\n');
|
let str = Object.values(translations).concat(dataFields).join('\n');
|
||||||
str = sanitize(str);
|
str = sanitize(str);
|
||||||
|
|
||||||
let title = namespace;
|
let title = namespace;
|
||||||
|
|||||||
Reference in New Issue
Block a user