mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-14 18:47:32 +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, {
|
||||
allowedTags: [],
|
||||
allowedAttributes: [],
|
||||
});
|
||||
}).replace(/"/g, '');
|
||||
}
|
||||
|
||||
function simplify(translations) {
|
||||
@@ -89,15 +89,33 @@ async function initDict(language) {
|
||||
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) {
|
||||
const translator = Translator.create(language);
|
||||
try {
|
||||
const translations = await translator.getTranslation(namespace);
|
||||
const [translations, dataFields] = await Promise.all([
|
||||
translator.getTranslation(namespace),
|
||||
getTemplateDataFields(namespace),
|
||||
]);
|
||||
if (!translations || !Object.keys(translations).length) {
|
||||
return await fallback(namespace);
|
||||
}
|
||||
// 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);
|
||||
|
||||
let title = namespace;
|
||||
|
||||
Reference in New Issue
Block a user