From 9741d1d56cc26aff06c52ce800ba3df6c9c16988 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Tue, 22 Nov 2022 03:01:59 +0200 Subject: [PATCH] Got in-dialog help working with new docs --- app/imports/api/docs/Docs.js | 32 ++++++++++++++++++- .../client/ui/dialogStack/HelpDialog.vue | 4 +-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/app/imports/api/docs/Docs.js b/app/imports/api/docs/Docs.js index acce3445..b9fa1e4f 100644 --- a/app/imports/api/docs/Docs.js +++ b/app/imports/api/docs/Docs.js @@ -112,6 +112,31 @@ function getDocLink(doc, urlName) { return address.join('/'); } +function rebuildDocAncestors(docId) { + const newDoc = Docs.findOne(docId); + Docs.find({ 'ancestors.id': docId }).forEach(doc => { + doc.ancestors.forEach((a, i) => { + if (a.id === docId) { + Docs.update(doc._id, { + $set: { + [`ancestors.${i}`]: { + id: newDoc._id, + collection: 'docs', + urlName: newDoc.urlName, + name: newDoc.name, + } + } + }); + } + }); + doc = Docs.findOne(doc._id); + const newLink = getDocLink(doc); + if (doc.href !== newLink) { + Docs.update(doc._id, { $set: { href: newLink } }) + } + }); +} + // Add a means of seeding new servers with documentation if (Meteor.isClient) { Docs.getJsonDocs = function () { @@ -200,12 +225,17 @@ const updateDoc = new ValidatedMethod({ } modifier.$set = modifier.$set || {}; modifier.$set.href = newLink; + rebuildDocAncestors(_id); + } + const updates = Docs.update(_id, modifier); + if (pathString === 'name' || pathString === 'urlName') { + rebuildDocAncestors(_id); } reorderDocs({ collection: Docs, ancestorId: 'root', }); - return Docs.update(_id, modifier); + return updates; }, }); diff --git a/app/imports/client/ui/dialogStack/HelpDialog.vue b/app/imports/client/ui/dialogStack/HelpDialog.vue index b4a97ead..4c7fc5a6 100644 --- a/app/imports/client/ui/dialogStack/HelpDialog.vue +++ b/app/imports/client/ui/dialogStack/HelpDialog.vue @@ -78,8 +78,8 @@ export default { }, }, doc() { - const doc = Docs.findOne(this.path); - return doc && doc.text; + const doc = Docs.findOne({href: '/docs/' + this.path}); + return doc && doc.description; }, }, methods: {