diff --git a/server/models/pages.js b/server/models/pages.js index 286e6195..209800fe 100644 --- a/server/models/pages.js +++ b/server/models/pages.js @@ -410,27 +410,19 @@ module.exports = class Page extends Model { // Получаем все дочерние узлы (включая текстовые) const contents = $el.contents() - // Ищем текстовый узел (type: "text") - contents.each((_, node) => { - if (node.type === 'text') { - node.data = opts.title - changed = true - } else if (node.children.length) { - const child1 = node.children[0] - - if (child1.type === 'text') { - child1.data = opts.title + // Рекурсивная функция для поиска и замены текста + const replaceText = (nodes) => { + nodes.each((_, node) => { + if (node.type === 'text') { + node.data = opts.title changed = true - } else if (child1.children.length) { - const child2 = child1.children[0] - - if (child2.type === 'text') { - child2.data = opts.title - changed = true - } + } else if (node.children) { + replaceText($(node).contents()) } - } - }) + }) + } + + replaceText(contents) }) if (changed) { @@ -440,7 +432,7 @@ module.exports = class Page extends Model { content: page.content }).where('id', page.id) - WIKI.logger.info(`Упоминание "${ogPage.title}" заменено на "${opts.title}" на странице "${page.title}" (${page.path})`) + WIKI.logger.info(`Упоминание "${ogPage.title}" заменено на "${opts.title}" на странице "${page.title}" (/${page.path})`) await WIKI.models.pages.renderPage(page) WIKI.events.outbound.emit('deletePageFromCache', page.hash)