|
16 | 16 | use phpDocumentor\Guides\Compiler\CompilerContext;
|
17 | 17 | use phpDocumentor\Guides\Exception\DocumentEntryNotFound;
|
18 | 18 | use phpDocumentor\Guides\Nodes\DocumentTree\DocumentEntryNode;
|
| 19 | +use phpDocumentor\Guides\Nodes\DocumentTree\ExternalEntryNode; |
| 20 | +use phpDocumentor\Guides\Nodes\Menu\ExternalMenuEntryNode; |
19 | 21 | use phpDocumentor\Guides\Nodes\Menu\InternalMenuEntryNode;
|
20 | 22 | use phpDocumentor\Guides\Nodes\Menu\MenuEntryNode;
|
21 | 23 | use phpDocumentor\Guides\Nodes\Menu\MenuNode;
|
22 | 24 | use phpDocumentor\Guides\Nodes\Node;
|
| 25 | +use phpDocumentor\Guides\Nodes\TitleNode; |
23 | 26 |
|
24 | 27 | use function assert;
|
25 | 28 | use function sprintf;
|
@@ -74,24 +77,38 @@ private function addSubEntries(
|
74 | 77 | return;
|
75 | 78 | }
|
76 | 79 |
|
77 |
| - foreach ($documentEntry->getChildren() as $subDocumentEntryNode) { |
78 |
| - $subMenuEntry = new InternalMenuEntryNode( |
79 |
| - $subDocumentEntryNode->getFile(), |
80 |
| - $subDocumentEntryNode->getTitle(), |
81 |
| - [], |
82 |
| - false, |
83 |
| - $currentLevel, |
84 |
| - '', |
85 |
| - self::isInRootline($subDocumentEntryNode, $compilerContext->getDocumentNode()->getDocumentEntry()), |
86 |
| - self::isCurrent($subDocumentEntryNode, $compilerContext->getDocumentNode()->getFilePath()), |
87 |
| - ); |
| 80 | + foreach ($documentEntry->getMenuEntries() as $subEntryNode) { |
| 81 | + if ($subEntryNode instanceof DocumentEntryNode) { |
| 82 | + $subMenuEntry = new InternalMenuEntryNode( |
| 83 | + $subEntryNode->getFile(), |
| 84 | + $subEntryNode->getTitle(), |
| 85 | + [], |
| 86 | + false, |
| 87 | + $currentLevel, |
| 88 | + '', |
| 89 | + self::isInRootline($subEntryNode, $compilerContext->getDocumentNode()->getDocumentEntry()), |
| 90 | + self::isCurrent($subEntryNode, $compilerContext->getDocumentNode()->getFilePath()), |
| 91 | + ); |
| 92 | + |
| 93 | + if (!$currentMenu->hasOption('titlesonly') && $maxDepth - $currentLevel + 1 > 1) { |
| 94 | + $this->addSubSectionsToMenuEntries($subEntryNode, $subMenuEntry, $maxDepth - $currentLevel + 2); |
| 95 | + } |
| 96 | + |
| 97 | + $sectionMenuEntry->addMenuEntry($subMenuEntry); |
| 98 | + $this->addSubEntries($currentMenu, $compilerContext, $subMenuEntry, $subEntryNode, $currentLevel + 1, $maxDepth); |
| 99 | + continue; |
| 100 | + } |
88 | 101 |
|
89 |
| - if (!$currentMenu->hasOption('titlesonly') && $maxDepth - $currentLevel + 1 > 1) { |
90 |
| - $this->addSubSectionsToMenuEntries($subDocumentEntryNode, $subMenuEntry, $maxDepth - $currentLevel + 2); |
| 102 | + if (!($subEntryNode instanceof ExternalEntryNode)) { |
| 103 | + continue; |
91 | 104 | }
|
92 | 105 |
|
| 106 | + $subMenuEntry = new ExternalMenuEntryNode( |
| 107 | + $subEntryNode->getValue(), |
| 108 | + TitleNode::fromString($subEntryNode->getTitle()), |
| 109 | + $currentLevel, |
| 110 | + ); |
93 | 111 | $sectionMenuEntry->addMenuEntry($subMenuEntry);
|
94 |
| - $this->addSubEntries($currentMenu, $compilerContext, $subMenuEntry, $subDocumentEntryNode, $currentLevel + 1, $maxDepth); |
95 | 112 | }
|
96 | 113 | }
|
97 | 114 | }
|
0 commit comments