@@ -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