Skip to content

Commit 16a78f4

Browse files
committed
wip
1 parent 2932027 commit 16a78f4

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

lib/methods/export.js

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,7 @@ module.exports = self => {
624624
if (recursions >= MAX_RECURSION) {
625625
return;
626626
}
627+
627628
for (const field of schema) {
628629
if (
629630
field.type === 'relationship' &&
@@ -635,29 +636,41 @@ module.exports = self => {
635636
self.findSchemaRelatedTypes(req, field.schema, related, recursions);
636637
} else if (field.type === 'area') {
637638
const widgets = self.apos.area.getWidgets(field.options);
638-
for (const [ widget, options ] of Object.entries(widgets)) {
639-
const schema = self.apos.area.getWidgetManager(widget).schema || [];
639+
for (const [ widget, widgetOptions ] of Object.entries(widgets)) {
640+
const manager = self.apos.area.getWidgetManager(widget);
641+
if (!manager) {
642+
continue;
643+
}
644+
const widgetSchema = manager.schema || [];
640645
if (widget === '@apostrophecms/rich-text') {
641-
self.getRelatedTypesFromRichTextWidget(req, options, related, recursions);
646+
self.getRelatedTypesFromRichTextWidget(
647+
req,
648+
widgetOptions,
649+
related,
650+
recursions
651+
);
642652
}
643-
self.findSchemaRelatedTypes(req, schema, related, recursions);
653+
self.findSchemaRelatedTypes(req, widgetSchema, related, recursions);
644654
}
645655
}
646656
}
647657
},
648658
pushRelatedType(req, related, type, recursions) {
659+
console.log('type', type);
649660
if ((type === '@apostrophecms/page') || (type === '@apostrophecms/any-page-type')) {
650-
const pageTypes = Object.entries(self.apos.doc.managers).filter(
651-
([ name, module ]) => self.apos.instanceOf(module, '@apostrophecms/page-type'))
652-
.map(([ name, module ]) => name);
661+
const pageTypes = Object.entries(self.apos.doc.managers)
662+
.filter(([ name, module ]) => self.apos.instanceOf(module, '@apostrophecms/page-type'))
663+
.map(([ name, _ ]) => name);
653664
for (const type of pageTypes) {
654665
if ([ '@apostrophecms/archive-page', '@apostrophecms/search' ].includes(type)) {
655666
// It is never appropriate to export the root page of the trash, and
656667
// while you *could* link to the search page it is extremely unlikely it
657668
// would have interesting content to export, just confusing to have it here
658669
continue;
659670
}
671+
/* if (!related.includes(type)) { */
660672
self.pushRelatedType(req, related, type, recursions);
673+
/* } */
661674
}
662675
return;
663676
}
@@ -666,6 +679,7 @@ module.exports = self => {
666679
const relatedManager = self.apos.doc.getManager(type);
667680
self.findSchemaRelatedTypes(req, relatedManager.schema, related, recursions);
668681
}
682+
669683
},
670684
// Does not currently utilize req, but it could be relevant in overrides and is
671685
// always the first argument by convention, so it is included in the signature
@@ -683,6 +697,9 @@ module.exports = self => {
683697
}
684698
if (rteOptions.toolbar?.includes('link')) {
685699
const choices = manager.linkFields.linkTo.choices.map(choice => choice.value);
700+
/* console.log('choices', choices); */
701+
/* console.log('recursions', recursions); */
702+
/* console.log('related', related); */
686703
for (const name of choices) {
687704
if (self.apos.doc.getManager(name) && !related.includes(name)) {
688705
self.pushRelatedType(req, related, name, recursions);

0 commit comments

Comments
 (0)