From 16a78f47f3d548a822244a5b54df0f121f59ddb5 Mon Sep 17 00:00:00 2001 From: Jed Date: Wed, 12 Nov 2025 18:17:17 +0100 Subject: [PATCH] wip --- lib/methods/export.js | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/lib/methods/export.js b/lib/methods/export.js index 6b3d363..7a73c9a 100644 --- a/lib/methods/export.js +++ b/lib/methods/export.js @@ -624,6 +624,7 @@ module.exports = self => { if (recursions >= MAX_RECURSION) { return; } + for (const field of schema) { if ( field.type === 'relationship' && @@ -635,21 +636,31 @@ module.exports = self => { self.findSchemaRelatedTypes(req, field.schema, related, recursions); } else if (field.type === 'area') { const widgets = self.apos.area.getWidgets(field.options); - for (const [ widget, options ] of Object.entries(widgets)) { - const schema = self.apos.area.getWidgetManager(widget).schema || []; + for (const [ widget, widgetOptions ] of Object.entries(widgets)) { + const manager = self.apos.area.getWidgetManager(widget); + if (!manager) { + continue; + } + const widgetSchema = manager.schema || []; if (widget === '@apostrophecms/rich-text') { - self.getRelatedTypesFromRichTextWidget(req, options, related, recursions); + self.getRelatedTypesFromRichTextWidget( + req, + widgetOptions, + related, + recursions + ); } - self.findSchemaRelatedTypes(req, schema, related, recursions); + self.findSchemaRelatedTypes(req, widgetSchema, related, recursions); } } } }, pushRelatedType(req, related, type, recursions) { + console.log('type', type); if ((type === '@apostrophecms/page') || (type === '@apostrophecms/any-page-type')) { - const pageTypes = Object.entries(self.apos.doc.managers).filter( - ([ name, module ]) => self.apos.instanceOf(module, '@apostrophecms/page-type')) - .map(([ name, module ]) => name); + const pageTypes = Object.entries(self.apos.doc.managers) + .filter(([ name, module ]) => self.apos.instanceOf(module, '@apostrophecms/page-type')) + .map(([ name, _ ]) => name); for (const type of pageTypes) { if ([ '@apostrophecms/archive-page', '@apostrophecms/search' ].includes(type)) { // It is never appropriate to export the root page of the trash, and @@ -657,7 +668,9 @@ module.exports = self => { // would have interesting content to export, just confusing to have it here continue; } + /* if (!related.includes(type)) { */ self.pushRelatedType(req, related, type, recursions); + /* } */ } return; } @@ -666,6 +679,7 @@ module.exports = self => { const relatedManager = self.apos.doc.getManager(type); self.findSchemaRelatedTypes(req, relatedManager.schema, related, recursions); } + }, // Does not currently utilize req, but it could be relevant in overrides and is // always the first argument by convention, so it is included in the signature @@ -683,6 +697,9 @@ module.exports = self => { } if (rteOptions.toolbar?.includes('link')) { const choices = manager.linkFields.linkTo.choices.map(choice => choice.value); + /* console.log('choices', choices); */ + /* console.log('recursions', recursions); */ + /* console.log('related', related); */ for (const name of choices) { if (self.apos.doc.getManager(name) && !related.includes(name)) { self.pushRelatedType(req, related, name, recursions);